<?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>142891</bug_id>
          
          <creation_ts>2015-03-19 18:40:54 -0700</creation_ts>
          <short_desc>Web Inspector: Adopt ES6 Class Syntax for all View Objects.</short_desc>
          <delta_ts>2015-08-05 11:31:30 -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>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>143106</dependson>
    
    <dependson>143107</dependson>
    
    <dependson>143108</dependson>
    
    <dependson>143111</dependson>
    
    <dependson>143127</dependson>
    
    <dependson>143128</dependson>
    
    <dependson>147439</dependson>
    
    <dependson>147534</dependson>
    
    <dependson>147658</dependson>
          <blocked>147409</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bburg</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</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>1078710</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-03-19 18:40:54 -0700</bug_when>
    <thetext>* SUMMARY
Adopt ES6 Class Syntax for all View Objects. Some view constructors (I&apos;m looking at you, ContentView) follow an implicit factory pattern whereby the base class constructor returns a concrete type based on the represented object. We should make the factory pattern explicit using a static class method:

class ContentView {
    static create(representedObject) {
        if (typeof representedObject === &quot;string&quot; || representedObject instanceof String)
            return new WebInspector.TextContentView(representedObject);

        // And so on...

        console.assert(!WebInspector.ContentView.isViewable(representedObject));
        throw &quot;Can&apos;t make a ContentView for an unknown representedObject.&quot;;
    }
}

* NOTES
The const keyword isn&apos;t allowed in strict mode, and ES6 class method scope uses strict mode implicitly. Instances of const will need to be replaced with var.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078711</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-19 18:41:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/20233935&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080115</commentid>
    <comment_count>2</comment_count>
      <attachid>249448</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-25 17:10:56 -0700</bug_when>
    <thetext>Created attachment 249448
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080116</commentid>
    <comment_count>3</comment_count>
      <attachid>249449</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-25 17:13:17 -0700</bug_when>
    <thetext>Created attachment 249449
WIP (Ignore Space)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080566</commentid>
    <comment_count>4</comment_count>
      <attachid>249557</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-27 00:46:04 -0700</bug_when>
    <thetext>Created attachment 249557
WIP

Latest WIP after landing some of the working classes.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249448</attachid>
            <date>2015-03-25 17:10:56 -0700</date>
            <delta_ts>2015-03-27 00:46:04 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>142891.patch</filename>
            <type>text/plain</type>
            <size>1478043</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZl
bnRMaXN0ZW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
RXZlbnRMaXN0ZW5lci5qcwppbmRleCAxMGYxNzU0Li4xMmIzNWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVy
LmpzCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMTYgKzI0LDE5IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyID0gZnVuY3Rpb24odGhpc09iamVjdCwg
ZmlyZU9uY2UpCitXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lciA9IGNsYXNzIEV2ZW50TGlzdGVu
ZXIKIHsKLSAgICB0aGlzLl90aGlzT2JqZWN0ID0gdGhpc09iamVjdDsKLSAgICB0aGlzLl9lbWl0
dGVyID0gbnVsbDsKLSAgICB0aGlzLl9jYWxsYmFjayA9IG51bGw7Ci0gICAgdGhpcy5fZmlyZU9u
Y2UgPSBmaXJlT25jZTsKLX07CisgICAgY29uc3RydWN0b3IodGhpc09iamVjdCwgZmlyZU9uY2Up
CisgICAgeworICAgICAgICB0aGlzLl90aGlzT2JqZWN0ID0gdGhpc09iamVjdDsKKyAgICAgICAg
dGhpcy5fZW1pdHRlciA9IG51bGw7CisgICAgICAgIHRoaXMuX2NhbGxiYWNrID0gbnVsbDsKKyAg
ICAgICAgdGhpcy5fZmlyZU9uY2UgPSBmaXJlT25jZTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5F
dmVudExpc3RlbmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25uZWN0OiBmdW5jdGlvbihlbWl0dGVy
LCB0eXBlLCBjYWxsYmFjaywgdXNlc0NhcHR1cmUpCisgICAgLy8gUHVibGljCisKKyAgICBjb25u
ZWN0KGVtaXR0ZXIsIHR5cGUsIGNhbGxiYWNrLCB1c2VzQ2FwdHVyZSkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9lbWl0dGVyICYmICF0aGlzLl9jYWxsYmFjaywgIkV2ZW50
TGlzdGVuZXIgYWxyZWFkeSBib3VuZCB0byBhIGNhbGxiYWNrLiIsIHRoaXMpOwogICAgICAgICBj
b25zb2xlLmFzc2VydChjYWxsYmFjaywgIk1pc3NpbmcgY2FsbGJhY2sgZm9yIGV2ZW50OiAiICsg
dHlwZSk7CkBAIC02NCw5ICs2Nyw5IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlz
Ll90eXBlLCB0aGlzLl9jYWxsYmFjaywgdGhpcy5fdXNlc0NhcHR1cmUpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICB0aGlzLl9lbWl0dGVyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fdHlwZSwg
dGhpcy5fY2FsbGJhY2ssIHRoaXMuX3RoaXNPYmplY3QpOwotICAgIH0sCisgICAgfQogCi0gICAg
ZGlzY29ubmVjdDogZnVuY3Rpb24oKQorICAgIGRpc2Nvbm5lY3QoKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQodGhpcy5fZW1pdHRlciAmJiB0aGlzLl9jYWxsYmFjaywgIkV2ZW50TGlz
dGVuZXIgaXMgbm90IGJvdW5kIHRvIGEgY2FsbGJhY2suIiwgdGhpcyk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lclNl
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0
ZW5lclNldC5qcwppbmRleCA0MGQyY2RkLi5kMTRiZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXJTZXQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyU2V0
LmpzCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTcgKzI4LDIxIEBACiAvLyBBZGQgRE9NIG9yIElu
c3BlY3RvciBldmVudCBsaXN0ZW5lcnMgdG8gdGhlIHNldCB1c2luZyBgcmVnaXN0ZXIoKWAuCiAv
LyBVc2UgYGluc3RhbGwoKWAgYW5kIGB1bmluc3RhbGwoKWAgdG8gZW5hYmxlIG9yIGRpc2FibGUg
YWxsIGxpc3RlbmVycwogLy8gaW4gdGhlIHNldCBhdCBvbmNlLgotV2ViSW5zcGVjdG9yLkV2ZW50
TGlzdGVuZXJTZXQgPSBmdW5jdGlvbihkZWZhdWx0VGhpc09iamVjdCwgbmFtZSkKKworV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQgPSBjbGFzcyBFdmVudExpc3RlbmVyU2V0CiB7Ci0gICAg
dGhpcy5uYW1lID0gbmFtZTsKLSAgICB0aGlzLl9kZWZhdWx0VGhpc09iamVjdCA9IGRlZmF1bHRU
aGlzT2JqZWN0OworICAgIGNvbnN0cnVjdG9yKGRlZmF1bHRUaGlzT2JqZWN0LCBuYW1lKQorICAg
IHsKKyAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy5fZGVmYXVsdFRoaXNP
YmplY3QgPSBkZWZhdWx0VGhpc09iamVjdDsKKworICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSBb
XTsKKyAgICAgICAgdGhpcy5faW5zdGFsbGVkID0gZmFsc2U7CisgICAgfQogCi0gICAgdGhpcy5f
bGlzdGVuZXJzID0gW107Ci0gICAgdGhpcy5faW5zdGFsbGVkID0gZmFsc2U7Ci19CisgICAgLy8g
UHVibGljCiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2V0LnByb3RvdHlwZSA9IHsKLSAg
ICByZWdpc3RlcjogZnVuY3Rpb24oZW1pdHRlciwgdHlwZSwgY2FsbGJhY2ssIHRoaXNPYmplY3Qs
IHVzZXNDYXB0dXJlKQorICAgIHJlZ2lzdGVyKGVtaXR0ZXIsIHR5cGUsIGNhbGxiYWNrLCB0aGlz
T2JqZWN0LCB1c2VzQ2FwdHVyZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbGxi
YWNrLCAiTWlzc2luZyBjYWxsYmFjayBmb3IgZXZlbnQ6ICIgKyB0eXBlKTsKICAgICAgICAgY29u
c29sZS5hc3NlcnQodHlwZSwgIlRyaWVkIHRvIHJlZ2lzdGVyIGxpc3RlbmVyIGZvciB1bmtub3du
IGV2ZW50OiAiICsgdHlwZSk7CkBAIC00OSwxNiArNTMsMTYgQEAgV2ViSW5zcGVjdG9yLkV2ZW50
TGlzdGVuZXJTZXQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHRoaXMuX2xpc3RlbmVycy5wdXNoKHtsaXN0ZW5lcjogbmV3IFdlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyKHRoaXNPYmplY3QgfHwgdGhpcy5fZGVmYXVsdFRoaXNPYmplY3QpLCBlbWl0dGVyLCB0
eXBlLCBjYWxsYmFjaywgdXNlc0NhcHR1cmV9KTsKLSAgICB9LAorICAgIH0KIAotICAgIHVucmVn
aXN0ZXI6IGZ1bmN0aW9uKCkKKyAgICB1bnJlZ2lzdGVyKCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9pbnN0YWxsZWQpCiAgICAgICAgICAgICB0aGlzLnVuaW5zdGFsbCgpOwogICAgICAgICB0
aGlzLl9saXN0ZW5lcnMgPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIGluc3RhbGw6IGZ1bmN0
aW9uKCkKKyAgICBpbnN0YWxsKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlz
Ll9pbnN0YWxsZWQsICJBbHJlYWR5IGluc3RhbGxlZCBsaXN0ZW5lciBncm91cDogIiArIHRoaXMu
bmFtZSk7CiAgICAgICAgIGlmICh0aGlzLl9pbnN0YWxsZWQpCkBAIC02OCw5ICs3Miw5IEBAIFdl
Ykluc3BlY3Rvci5FdmVudExpc3RlbmVyU2V0LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmb3Ig
KHZhciBkYXRhIG9mIHRoaXMuX2xpc3RlbmVycykKICAgICAgICAgICAgIGRhdGEubGlzdGVuZXIu
Y29ubmVjdChkYXRhLmVtaXR0ZXIsIGRhdGEudHlwZSwgZGF0YS5jYWxsYmFjaywgZGF0YS51c2Vz
Q2FwdHVyZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1bmluc3RhbGw6IGZ1bmN0aW9uKHVucmVn
aXN0ZXJMaXN0ZW5lcnMpCisgICAgdW5pbnN0YWxsKHVucmVnaXN0ZXJMaXN0ZW5lcnMpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9pbnN0YWxsZWQsICJUcnlpbmcgdG8gdW5p
bnN0YWxsIGxpc3RlbmVyIGdyb3VwICIgKyB0aGlzLm5hbWUgKyAiLCBidXQgaXQgaXNuJ3QgaW5z
dGFsbGVkLiIpOwogICAgICAgICBpZiAoIXRoaXMuX2luc3RhbGxlZCkKQEAgLTgzLDUgKzg3LDUg
QEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQucHJvdG90eXBlID0gewogCiAgICAgICAg
IGlmICh1bnJlZ2lzdGVyTGlzdGVuZXJzKQogICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzID0g
W107Ci0gICAgfSwKLX0KKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0tleWJvYXJkU2hvcnRjdXQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvS2V5Ym9hcmRTaG9ydGN1dC5qcwppbmRl
eCBlN2EwMzhlLi5kODVhMzA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvS2V5Ym9hcmRTaG9ydGN1dC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvS2V5Ym9hcmRTaG9ydGN1dC5qcwpAQCAtNzgs
NiArNzgsOSBAQCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dCA9IGNsYXNzIEtleWJvYXJk
U2hvcnRjdXQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZQogICAgICAgICAgICAgICAgIGlmICgh
a2V5Ym9hcmRTaG9ydGN1dC5tYXRjaGVzRXZlbnQoZXZlbnQpKQogICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAorICAgICAgICAgICAgICAgIGlmICgha2V5Ym9hcmRTaG9ydGN1dC5jYWxs
YmFjaykKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgICAgICBr
ZXlib2FyZFNob3J0Y3V0LmNhbGxiYWNrKGV2ZW50LCBrZXlib2FyZFNob3J0Y3V0KTsKIAogICAg
ICAgICAgICAgICAgIGlmIChrZXlib2FyZFNob3J0Y3V0LmltcGxpY2l0bHlQcmV2ZW50c0RlZmF1
bHQpCkBAIC0xMjMsNiArMTI2LDEzIEBAIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0ID0g
Y2xhc3MgS2V5Ym9hcmRTaG9ydGN1dCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplCiAgICAgICAg
IHJldHVybiB0aGlzLl9jYWxsYmFjazsKICAgICB9CiAKKyAgICBzZXQgY2FsbGJhY2soY2FsbGJh
Y2spCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCghY2FsbGJhY2sgfHwgdHlwZW9mIGNh
bGxiYWNrID09PSAiZnVuY3Rpb24iKTsKKworICAgICAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxi
YWNrIHx8IG51bGw7CisgICAgfQorCiAgICAgZ2V0IGRpc2FibGVkKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9kaXNhYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BY3RpdmF0ZUJ1dHRvbk5h
dmlnYXRpb25JdGVtLmpzCmluZGV4IDdmNzhjMzcuLjQ3ZDE4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FjdGl2YXRlQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzcgKzIzLDMzIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkFjdGl2
YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyLCBkZWZhdWx0VG9v
bFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBz
dXBwcmVzc0VtYm9zcywgcm9sZSkKK1dlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRp
b25JdGVtID0gY2xhc3MgQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbQogewotICAgIFdlYkluc3BlY3Rvci5CdXR0b25O
YXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBpbWFn
ZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzLCByb2xlKTsKLQotICAg
IHRoaXMuX2RlZmF1bHRUb29sVGlwID0gZGVmYXVsdFRvb2xUaXA7Ci0gICAgdGhpcy5fYWN0aXZh
dGVkVG9vbFRpcCA9IGFjdGl2YXRlZFRvb2xUaXAgfHwgZGVmYXVsdFRvb2xUaXA7Ci0gICAgdGhp
cy5fcm9sZSA9IHJvbGU7Ci19OwotCi1XZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0
aW9uSXRlbS5TdHlsZUNsYXNzTmFtZSA9ICJhY3RpdmF0ZSI7Ci1XZWJJbnNwZWN0b3IuQWN0aXZh
dGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5BY3RpdmF0ZWRTdHlsZUNsYXNzTmFtZSA9ICJhY3RpdmF0
ZWQiOworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0
ZWRUb29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3Nz
LCByb2xlKQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAs
IGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpOwog
Ci1XZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25J
dGVtLAorICAgICAgICB0aGlzLl9kZWZhdWx0VG9vbFRpcCA9IGRlZmF1bHRUb29sVGlwOworICAg
ICAgICB0aGlzLl9hY3RpdmF0ZWRUb29sVGlwID0gYWN0aXZhdGVkVG9vbFRpcCB8fCBkZWZhdWx0
VG9vbFRpcDsKKyAgICAgICAgdGhpcy5fcm9sZSA9IHJvbGU7CisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgZGVmYXVsdFRvb2xUaXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2RlZmF1bHRUb29sVGlwOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFjdGl2YXRlZFRv
b2xUaXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGl2YXRlZFRvb2xUaXA7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgYWN0aXZhdGVkKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1
dHRvbk5hdmlnYXRpb25JdGVtLkFjdGl2YXRlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCBhY3RpdmF0ZWQoZmxhZykKICAgICB7CkBAIC02OCw5ICs2NCw5IEBAIFdl
Ykluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIGlmICh0aGlzLl9yb2xlID09PSAidGFiIikKICAgICAgICAgICAgICAgICB0aGlz
LmVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIik7CiAgICAgICAgIH0KLSAg
ICB9LAorICAgIH0KIAotICAgIGdlbmVyYXRlU3R5bGVUZXh0OiBmdW5jdGlvbihwYXJlbnRTZWxl
Y3RvcikKKyAgICBnZW5lcmF0ZVN0eWxlVGV4dChwYXJlbnRTZWxlY3RvcikKICAgICB7CiAgICAg
ICAgIHZhciBjbGFzc05hbWVzID0gdGhpcy5fY2xhc3NOYW1lcy5qb2luKCIuIik7CiAKQEAgLTkz
LDExICs4OSwxNCBAQCBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc3R5bGVUZXh0OwotICAg
IH0sCisgICAgfQogCi0gICAgLy8gUHJpdmF0ZQorICAgIC8vIFByb3RlY3RlZAogCi0gICAgX2Fk
ZGl0aW9uYWxDbGFzc05hbWVzOiBbV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5T
dHlsZUNsYXNzTmFtZV0KKyAgICBnZXQgYWRkaXRpb25hbENsYXNzTmFtZXMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHN1cGVyLmFkZGl0aW9uYWxDbGFzc05hbWVzLnVuc2hpZnQoImFjdGl2YXRl
Iik7CisgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0
ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5B
Y3RpdmF0ZWRTdHlsZUNsYXNzTmFtZSA9ICJhY3RpdmF0ZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQWN0aXZhdGVCdXR0b25Ub29sYmFy
SXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FjdGl2
YXRlQnV0dG9uVG9vbGJhckl0ZW0uanMKaW5kZXggYWZhNDMyNy4uMzVlZDRmMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQWN0aXZhdGVCdXR0
b25Ub29sYmFySXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyOCArMjMsMjcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQWN0
aXZhdGVCdXR0b25Ub29sYmFySXRlbSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRlZmF1bHRUb29s
VGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBsYWJlbCwgaW1hZ2UsIHN1cHByZXNzRW1ib3NzLCByb2xl
KQorV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0gPSBjbGFzcyBBY3RpdmF0
ZUJ1dHRvblRvb2xiYXJJdGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2
aWdhdGlvbkl0ZW0KIHsKLSAgICBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9u
SXRlbS5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29s
VGlwLCBpbWFnZSwgMzIsIDMyLCBzdXBwcmVzc0VtYm9zcywgcm9sZSk7Ci0KLSAgICBjb25zb2xl
LmFzc2VydChsYWJlbCk7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgZGVmYXVsdFRvb2xU
aXAsIGFjdGl2YXRlZFRvb2xUaXAsIGxhYmVsLCBpbWFnZSwgc3VwcHJlc3NFbWJvc3MsIHJvbGUp
CisgICAgeworICAgICAgICBzdXBlcihpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZh
dGVkVG9vbFRpcCwgaW1hZ2UsIDMyLCAzMiwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpOwogCi0gICAg
dGhpcy5fbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
dGhpcy5fbGFiZWxFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5CdXR0b25Ub29sYmFy
SXRlbS5MYWJlbFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fbGFiZWxFbGVtZW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobGFiZWwpOwogCi0g
ICAgdGhpcy5sYWJlbCA9IGxhYmVsOwotfTsKKyAgICAgICAgdGhpcy5fbGFiZWxFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2xhYmVsRWxlbWVu
dC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQnV0dG9uVG9vbGJhckl0ZW0uTGFiZWxTdHlsZUNs
YXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sYWJlbEVs
ZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvblRvb2xi
YXJJdGVtLAorICAgICAgICB0aGlzLmxhYmVsID0gbGFiZWw7CisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgbGFiZWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVs
RWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBsYWJlbChuZXdM
YWJlbCkKICAgICB7CkBAIC01NSw1ICs1NCwzIEBAIFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRv
blRvb2xiYXJJdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbGFiZWxFbGVtZW50LnRl
eHRDb250ZW50ID0gbmV3TGFiZWw7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkFjdGl2YXRl
QnV0dG9uVG9vbGJhckl0ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5BY3Rp
dmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVEZXRhaWxz
U2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggOTM0ZDI2NC4u
ZmNhYWNmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZURldGFp
bHNTaWRlYmFyUGFuZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDU0ICsyMyw0MCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRGV0YWls
c1NpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hl
RGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJh
clBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5jYWxsKHRoaXMsICJhcHBsaWNhdGlvbi1j
YWNoZS1kZXRhaWxzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9yYWdlIiksIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU3RvcmFnZSIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtU3RvcmFnZS5z
dmciKTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSk7CisgICAgY29u
c3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoImFwcGxpY2F0aW9uLWNhY2hlLWRldGFp
bHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3JhZ2UiKSwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdG9yYWdlIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1TdG9yYWdlLnN2ZyIpOwogCi0g
ICAgdGhpcy5fYXBwbGljYXRpb25DYWNoZUZyYW1lID0gbnVsbDsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lk
ZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lKTsKIAotICAgIHRoaXMuX2xvY2F0aW9uTWFuaWZlc3RV
UkxSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTWFuaWZlc3QgVVJMIikpOwotICAgIHRoaXMuX2xvY2F0aW9uRnJhbWVV
UkxSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRnJhbWUgVVJMIikpOworICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNh
Y2hlRnJhbWUgPSBudWxsOwogCi0gICAgdGhpcy5fbG9jYXRpb25Hcm91cCA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fbG9jYXRpb25NYW5pZmVzdFVSTFJvdywg
dGhpcy5fbG9jYXRpb25GcmFtZVVSTFJvd10pOworICAgICAgICB0aGlzLl9sb2NhdGlvbk1hbmlm
ZXN0VVJMUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk1hbmlmZXN0IFVSTCIpKTsKKyAgICAgICAgdGhpcy5fbG9jYXRp
b25GcmFtZVVSTFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3co
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGcmFtZSBVUkwiKSk7CiAKLSAgICB0aGlzLl9sb2NhdGlv
blNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJhcHBsaWNhdGlvbi1j
YWNoZS1sb2NhdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYXRpb24iKSwgW3RoaXMu
X2xvY2F0aW9uR3JvdXBdKTsKKyAgICAgICAgdGhpcy5fbG9jYXRpb25Hcm91cCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fbG9jYXRpb25NYW5pZmVzdFVSTFJv
dywgdGhpcy5fbG9jYXRpb25GcmFtZVVSTFJvd10pOwogCi0gICAgdGhpcy5fb25saW5lUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIk9ubGluZSIpKTsKLSAgICB0aGlzLl9zdGF0dXNSb3cgPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhdHVzIikp
OworICAgICAgICB0aGlzLl9sb2NhdGlvblNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uKCJhcHBsaWNhdGlvbi1jYWNoZS1sb2NhdGlvbiIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiTG9jYXRpb24iKSwgW3RoaXMuX2xvY2F0aW9uR3JvdXBdKTsKIAotICAgIHRoaXMuX3N0
YXR1c0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9v
bmxpbmVSb3csIHRoaXMuX3N0YXR1c1Jvd10pOworICAgICAgICB0aGlzLl9vbmxpbmVSb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiT25saW5lIikpOworICAgICAgICB0aGlzLl9zdGF0dXNSb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhdHVz
IikpOwogCi0gICAgdGhpcy5fc3RhdHVzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb24oImFwcGxpY2F0aW9uLWNhY2hlLXN0YXR1cyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU3RhdHVzIiksIFt0aGlzLl9zdGF0dXNHcm91cF0pOworICAgICAgICB0aGlzLl9zdGF0dXNH
cm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fb25saW5l
Um93LCB0aGlzLl9zdGF0dXNSb3ddKTsKIAotICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fbG9jYXRpb25TZWN0aW9uLmVsZW1lbnQpOwotICAgIHRoaXMuY29udGVudEVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc3RhdHVzU2VjdGlvbi5lbGVtZW50KTsKKyAgICAgICAg
dGhpcy5fc3RhdHVzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImFw
cGxpY2F0aW9uLWNhY2hlLXN0YXR1cyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhdHVzIiks
IFt0aGlzLl9zdGF0dXNHcm91cF0pOwogCi0gICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2Fj
aGVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLkV2ZW50Lk5ldHdvcmtTdGF0ZVVwZGF0ZWQsIHRoaXMuX25ldHdvcmtTdGF0ZVVwZGF0
ZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5G
cmFtZU1hbmlmZXN0U3RhdHVzQ2hhbmdlZCwgdGhpcy5fZnJhbWVNYW5pZmVzdFN0YXR1c0NoYW5n
ZWQsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lk
ZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lID0gImFwcGxpY2F0aW9uLWNhY2hlIjsKLQotLy8gVGhp
cyBuZWVkcyB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBBcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5q
cy4KLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5TdGF0
dXMgPSB7Ci0gICAgMDogIlVuY2FjaGVkIiwKLSAgICAxOiAiSWRsZSIsCi0gICAgMjogIkNoZWNr
aW5nIiwKLSAgICAzOiAiRG93bmxvYWRpbmciLAotICAgIDQ6ICJVcGRhdGVSZWFkeSIsCi0gICAg
NTogIk9ic29sZXRlIgotfTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9sb2NhdGlvblNlY3Rpb24uZWxlbWVudCk7CisgICAgICAgIHRoaXMuY29udGVudEVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc3RhdHVzU2VjdGlvbi5lbGVtZW50KTsKIAotV2ViSW5z
cGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lk
ZWJhclBhbmVsLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFu
ZWwucHJvdG90eXBlLAorICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIu
RXZlbnQuTmV0d29ya1N0YXRlVXBkYXRlZCwgdGhpcy5fbmV0d29ya1N0YXRlVXBkYXRlZCwgdGhp
cyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFt
ZU1hbmlmZXN0U3RhdHVzQ2hhbmdlZCwgdGhpcy5fZnJhbWVNYW5pZmVzdFN0YXR1c0NoYW5nZWQs
IHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgaW5zcGVjdDogZnVuY3Rpb24o
b2JqZWN0cykKKyAgICBpbnNwZWN0KG9iamVjdHMpCiAgICAgewogICAgICAgICAvLyBDb252ZXJ0
IHRvIGEgc2luZ2xlIGl0ZW0gYXJyYXkgaWYgbmVlZGVkLgogICAgICAgICBpZiAoIShvYmplY3Rz
IGluc3RhbmNlb2YgQXJyYXkpKQpAQCAtODksMTIgKzc1LDEyIEBAIFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuYXBwbGljYXRpb25DYWNoZUZyYW1lID0gYXBwbGljYXRpb25DYWNoZUZyYW1lVG9JbnNwZWN0
OwogCiAgICAgICAgIHJldHVybiAhIXRoaXMuYXBwbGljYXRpb25DYWNoZUZyYW1lOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGFwcGxpY2F0aW9uQ2FjaGVGcmFtZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fYXBwbGljYXRpb25DYWNoZUZyYW1lOwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IGFwcGxpY2F0aW9uQ2FjaGVGcmFtZShhcHBsaWNhdGlvbkNhY2hlRnJhbWUpCiAgICAg
ewpAQCAtMTA0LDkgKzkwLDkgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYXBwbGljYXRpb25DYWNo
ZUZyYW1lID0gYXBwbGljYXRpb25DYWNoZUZyYW1lOwogCiAgICAgICAgIHRoaXMubmVlZHNSZWZy
ZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVm
cmVzaCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuYXBwbGljYXRpb25DYWNoZUZyYW1lKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE2LDE5ICsxMDIsMTkgQEAgV2ViSW5zcGVjdG9yLkFw
cGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB0aGlzLl9yZWZyZXNoT25saW5lUm93KCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hTdGF0dXNS
b3coKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9uZXR3b3JrU3Rh
dGVVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbmV0d29ya1N0YXRlVXBkYXRlZChldmVu
dCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5hcHBsaWNhdGlvbkNhY2hlRnJhbWUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmVmcmVzaE9ubGluZVJvdygpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2ZyYW1lTWFuaWZlc3RTdGF0dXNDaGFuZ2VkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfZnJhbWVNYW5pZmVzdFN0YXR1c0NoYW5nZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuYXBwbGljYXRpb25DYWNoZUZyYW1lKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTM4LDE1ICsxMjQsMjcgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRh
aWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICB0aGlzLl9yZWZyZXNoU3RhdHVzUm93KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVm
cmVzaE9ubGluZVJvdzogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoT25saW5lUm93KCkKICAgICB7
CiAgICAgICAgIHRoaXMuX29ubGluZVJvdy52YWx1ZSA9IFdlYkluc3BlY3Rvci5hcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5vbmxpbmUgPyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlllcyIpIDogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJObyIpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hT
dGF0dXNSb3c6IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaFN0YXR1c1JvdygpCiAgICAgewogICAg
ICAgICB0aGlzLl9zdGF0dXNSb3cudmFsdWUgPSBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNo
ZURldGFpbHNTaWRlYmFyUGFuZWwuU3RhdHVzW3RoaXMuYXBwbGljYXRpb25DYWNoZUZyYW1lLnN0
YXR1c107CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxz
U2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lID0gImFwcGxpY2F0aW9uLWNhY2hlIjsKKworLy8g
VGhpcyBuZWVkcyB0byBiZSBrZXB0IGluIHN5bmMgd2l0aCBBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5qcy4KK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5T
dGF0dXMgPSB7CisgICAgMDogIlVuY2FjaGVkIiwKKyAgICAxOiAiSWRsZSIsCisgICAgMjogIkNo
ZWNraW5nIiwKKyAgICAzOiAiRG93bmxvYWRpbmciLAorICAgIDQ6ICJVcGRhdGVSZWFkeSIsCisg
ICAgNTogIk9ic29sZXRlIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNo
ZUZyYW1lQ29udGVudFZpZXcuanMKaW5kZXggNzhhODljMy4uMTQzMTBmMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNo
ZUZyYW1lQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMy0yMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsODYgKzIzLDg1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3
ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25D
YWNoZUZyYW1lQ29udGVudFZpZXcgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50
VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50VmlldwogewotICAgIGNvbnNvbGUuYXNz
ZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9u
Q2FjaGVGcmFtZSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0aGlzLCBy
ZXByZXNlbnRlZE9iamVjdCk7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpOwogCi0gICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRW
aWV3LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QpOwog
Ci0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0b3JhZ2UtdmlldyIpOwotICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0YWJsZSIpOworICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZp
ZXcuU3R5bGVDbGFzc05hbWUpOwogCi0gICAgdGhpcy5fZnJhbWUgPSByZXByZXNlbnRlZE9iamVj
dC5mcmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0b3JhZ2Utdmll
dyIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFibGUiKTsKIAotICAg
IHRoaXMuX2VtcHR5VmlldyA9IFdlYkluc3BlY3Rvci5jcmVhdGVNZXNzYWdlVGV4dFZpZXcoV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJObyBBcHBsaWNhdGlvbiBDYWNoZSBpbmZvcm1hdGlvbiBhdmFp
bGFibGUiKSwgZmFsc2UpOwotICAgIHRoaXMuX2VtcHR5Vmlldy5jbGFzc0xpc3QuYWRkKCJoaWRk
ZW4iKTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZW1wdHlWaWV3KTsKKyAg
ICAgICAgdGhpcy5fZnJhbWUgPSByZXByZXNlbnRlZE9iamVjdC5mcmFtZTsKIAotICAgIHRoaXMu
X21hcmtEaXJ0eSgpOworICAgICAgICB0aGlzLl9lbXB0eVZpZXcgPSBXZWJJbnNwZWN0b3IuY3Jl
YXRlTWVzc2FnZVRleHRWaWV3KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gQXBwbGljYXRpb24g
Q2FjaGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlIiksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fZW1w
dHlWaWV3LmNsYXNzTGlzdC5hZGQoImhpZGRlbiIpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fZW1wdHlWaWV3KTsKIAotICAgIHZhciBzdGF0dXMgPSByZXByZXNlbnRl
ZE9iamVjdC5zdGF0dXM7Ci0gICAgdGhpcy51cGRhdGVTdGF0dXMoc3RhdHVzKTsKKyAgICAgICAg
dGhpcy5fbWFya0RpcnR5KCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuRXZlbnQuRnJhbWVNYW5pZmVzdFN0YXR1c0NoYW5nZWQsIHRoaXMuX3VwZGF0ZVN0YXR1cywg
dGhpcyk7Ci19CisgICAgICAgIHZhciBzdGF0dXMgPSByZXByZXNlbnRlZE9iamVjdC5zdGF0dXM7
CisgICAgICAgIHRoaXMudXBkYXRlU3RhdHVzKHN0YXR1cyk7CiAKLVdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJhcHBsaWNhdGlv
bi1jYWNoZS1mcmFtZSI7CisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdl
ci5FdmVudC5GcmFtZU1hbmlmZXN0U3RhdHVzQ2hhbmdlZCwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0
aGlzKTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlRnJhbWVDb250ZW50VmlldywKKyAgICAvLyBQdWJsaWMKIAogICAgIGdldCBhbGxv
d2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFtXZWJJ
bnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuaWRlbnRpZmllcl07Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX21heWJlVXBkYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9u
KCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLkV2ZW50LkZyYW1lTWFuaWZlc3RTdGF0dXNDaGFuZ2VkLCB0aGlzLl91cGRh
dGVTdGF0dXMsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5j
dGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmRhdGFH
cmlkKQogICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nv
b2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5D
b250ZW50Vmlld0Nvb2tpZVR5cGUuQXBwbGljYXRpb25DYWNoZTsKICAgICAgICAgY29va2llLmZy
YW1lID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5mcmFtZS51cmw7CiAgICAgICAgIGNvb2tpZS5t
YW5pZmVzdCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QubWFuaWZlc3QubWFuaWZlc3RVUkw7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fZGF0YUdyaWQpCiAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAg
IHJldHVybiBbdGhpcy5fZGF0YUdyaWQuc2Nyb2xsQ29udGFpbmVyXTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9tYXliZVVwZGF0ZTogZnVuY3Rpb24oKQorICAgIF9tYXliZVVwZGF0ZSgpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSB8fCAhdGhpcy5fdmlld0RpcnR5KQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZSgpOwogICAgICAgICB0aGlzLl92
aWV3RGlydHkgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tYXJrRGlydHk6IGZ1bmN0
aW9uKCkKKyAgICBfbWFya0RpcnR5KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ZpZXdEaXJ0eSA9
IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3RhdHVzOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfdXBkYXRlU3RhdHVzKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGZyYW1lTWFu
aWZlc3QgPSBldmVudC5kYXRhLmZyYW1lTWFuaWZlc3Q7CiAgICAgICAgIGlmIChmcmFtZU1hbmlm
ZXN0ICE9PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0KQpAQCAtMTExLDkgKzExMCw5IEBAIFdlYklu
c3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZyYW1lTWFuaWZlc3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cyhm
cmFtZU1hbmlmZXN0LnN0YXR1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVTdGF0dXM6
IGZ1bmN0aW9uKHN0YXR1cykKKyAgICB1cGRhdGVTdGF0dXMoc3RhdHVzKQogICAgIHsKICAgICAg
ICAgdmFyIG9sZFN0YXR1cyA9IHRoaXMuX3N0YXR1czsKICAgICAgICAgdGhpcy5fc3RhdHVzID0g
c3RhdHVzOwpAQCAtMTIyLDE0ICsxMjEsMTQgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2Fj
aGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX21hcmtE
aXJ0eSgpOwogCiAgICAgICAgIHRoaXMuX21heWJlVXBkYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfdXBkYXRlOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZSgpCiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIucmVxdWVzdEFwcGxpY2F0aW9uQ2Fj
aGUodGhpcy5fZnJhbWUsIHRoaXMuX3VwZGF0ZUNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0s
CisgICAgfQogCi0gICAgX3VwZGF0ZUNhbGxiYWNrOiBmdW5jdGlvbihhcHBsaWNhdGlvbkNhY2hl
KQorICAgIF91cGRhdGVDYWxsYmFjayhhcHBsaWNhdGlvbkNhY2hlKQogICAgIHsKICAgICAgICAg
aWYgKCFhcHBsaWNhdGlvbkNhY2hlIHx8ICFhcHBsaWNhdGlvbkNhY2hlLm1hbmlmZXN0VVJMKSB7
CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbWFuaWZlc3Q7CkBAIC0xNjAsOSArMTU5LDkgQEAg
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRk
ZW4iKTsKIAogICAgICAgICB0aGlzLl9lbXB0eVZpZXcuY2xhc3NMaXN0LmFkZCgiaGlkZGVuIik7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY3JlYXRlRGF0YUdyaWQ6IGZ1bmN0aW9uKCkKKyAgICBf
Y3JlYXRlRGF0YUdyaWQoKQogICAgIHsKICAgICAgICAgdmFyIGNvbHVtbnMgPSB7dXJsOiB7fSwg
dHlwZToge30sIHNpemU6IHt9fTsKIApAQCAtMTg0LDE0ICsxODMsMTUgQEAgV2ViSW5zcGVjdG9y
LkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3NvcnREYXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9zb3J0RGF0YUdyaWQoKQogICAgIHsKICAg
ICAgICAgZnVuY3Rpb24gbnVtYmVyQ29tcGFyZShjb2x1bW5JZGVudGlmaWVyLCBub2RlQSwgbm9k
ZUIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBub2RlQS5kYXRhW2NvbHVtbklkZW50
aWZpZXJdIC0gbm9kZUIuZGF0YVtjb2x1bW5JZGVudGlmaWVyXTsKICAgICAgICAgfQorCiAgICAg
ICAgIGZ1bmN0aW9uIGxvY2FsZUNvbXBhcmUoY29sdW1uSWRlbnRpZmllciwgbm9kZUEsIG5vZGVC
KQogICAgICAgICB7CiAgICAgICAgICAgICAgcmV0dXJuIChub2RlQS5kYXRhW2NvbHVtbklkZW50
aWZpZXJdICsgIiIpLmxvY2FsZUNvbXBhcmUobm9kZUIuZGF0YVtjb2x1bW5JZGVudGlmaWVyXSAr
ICIiKTsKQEAgLTIwNiw5ICsyMDYsOSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZy
YW1lQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5f
ZGF0YUdyaWQuc29ydE5vZGVzKGNvbXBhcmF0b3IpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Bv
cHVsYXRlRGF0YUdyaWQ6IGZ1bmN0aW9uKCkKKyAgICBfcG9wdWxhdGVEYXRhR3JpZCgpCiAgICAg
ewogICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0yMjIsMTgg
KzIyMiwxOCBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKICAgICAg
ICAgICAgIHRoaXMuX2RhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGUpOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfZGVsZXRlQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2RlbGV0ZUJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X2RhdGFHcmlkIHx8ICF0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IERlbGV0ZSBCdXR0b24gc2VtYW50aWNzIGFyZSBu
b3QgeWV0IGRlZmluZWQuIChEZWxldGUgYSBzaW5nbGUsIG9yIGFsbD8pCiAgICAgICAgIHRoaXMu
X2RlbGV0ZUNhbGxiYWNrKHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfZGVsZXRlQ2FsbGJhY2s6IGZ1bmN0aW9uKG5vZGUpCisgICAgX2RlbGV0ZUNh
bGxiYWNrKG5vZGUpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGRlbGV0ZSBh
IHNpbmdsZSAoc2VsZWN0ZWQpIHJlc291cmNlIG9yIGFsbCByZXNvdXJjZXM/CiAgICAgICAgIC8v
IEluc3BlY3RvckJhY2tlbmQuZGVsZXRlQ2FjaGVkUmVzb3VyY2UoLi4uKQpAQCAtMjQxLDQgKzI0
MSw0IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1l
Q29udGVudFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dy5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZp
ZXcuU3R5bGVDbGFzc05hbWUgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJhbWUiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25D
YWNoZUZyYW1lVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5qcwppbmRleCA3YWJj
NTRmLi43OTM2OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlRnJh
bWVUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMjMgKzIzLDIwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlRnJh
bWVUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKIHsK
LSAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpOwotCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxU
cmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVU
cmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSwgIiIsICIiLCByZXByZXNlbnRlZE9iamVjdCwgZmFs
c2UpOworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
QXBwbGljYXRpb25DYWNoZUZyYW1lKTsKIAotICAgIHRoaXMuc21hbGwgPSB0cnVlOworICAgICAg
ICBzdXBlcihXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQuU3R5
bGVDbGFzc05hbWUsICIiLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKIAotICAgIHRo
aXMudXBkYXRlVGl0bGVzKCk7Ci19OworICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKIAotV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1l
ID0gImFwcGxpY2F0aW9uLWNhY2hlLWZyYW1lIjsKLQotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9u
Q2FjaGVGcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LAorICAgICAgICB0aGlz
LnVwZGF0ZVRpdGxlcygpOworICAgIH0KIAotICAgIHVwZGF0ZVRpdGxlczogZnVuY3Rpb24oKQor
ICAgIHVwZGF0ZVRpdGxlcygpCiAgICAgewogICAgICAgICB2YXIgdXJsID0gdGhpcy5yZXByZXNl
bnRlZE9iamVjdC5mcmFtZS51cmw7CiAgICAgICAgIHZhciBwYXJzZWRVUkwgPSBwYXJzZVVSTCh1
cmwpOwpAQCAtNTgsNCArNTUsNCBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1l
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQXBwbGlj
YXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAiYXBwbGljYXRpb24t
Y2FjaGUtZnJhbWUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlTWFu
aWZlc3RUcmVlRWxlbWVudC5qcwppbmRleCA5Zjg5M2RlLi42Nzk3ZTM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hl
TWFuaWZlc3RUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
MTcgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50ID0gZnVuY3Rp
b24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0VHJlZUVsZW1lbnQgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVu
dCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQKIHsKLSAgICBjb25zb2xl
LmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3QpOwotCi0gICAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVu
dC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxl
bWVudC5TdHlsZUNsYXNzTmFtZSwgIiIsIHJlcHJlc2VudGVkT2JqZWN0KTsKLX07Ci0KLVdlYklu
c3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFt
ZSA9ICJhcHBsaWNhdGlvbi1jYWNoZS1tYW5pZmVzdCI7CisgICAgY29uc3RydWN0b3IocmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QpOwog
Ci1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1h
bmlmZXN0VHJlZUVsZW1lbnQsCisgICAgICAgIHN1cGVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlv
bkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSwgIiIsIHJlcHJlc2VudGVk
T2JqZWN0KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNDMsNyArNDAsNyBAQCBXZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fZ2VuZXJhdGVUaXRsZXMoKTsKIAogICAgICAgICByZXR1cm4g
dGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWNvbmRhcnlOYW1lKCkKICAg
ICB7CkBAIC01MSwxNCArNDgsMTQgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5p
ZmVzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2dlbmVyYXRl
VGl0bGVzKCk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlY29uZGFyeU5hbWU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgY2F0ZWdvcnlOYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFwcGxpY2F0aW9uIENhY2hlIik7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfZ2VuZXJhdGVUaXRsZXM6IGZ1bmN0aW9uKCkKKyAgICBfZ2VuZXJhdGVUaXRsZXMo
KQogICAgIHsKICAgICAgICAgdmFyIHBhcnNlZFVSTCA9IHBhcnNlVVJMKHRoaXMucmVwcmVzZW50
ZWRPYmplY3QubWFuaWZlc3RVUkwpOwogCkBAIC03MSw0ICs2OCw0IEBAIFdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgfQog
fTsKIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LnByb3Rv
dHlwZTsKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5T
dHlsZUNsYXNzTmFtZSA9ICJhcHBsaWNhdGlvbi1jYWNoZS1tYW5pZmVzdCI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Cb3hNb2RlbERldGFp
bHNTZWN0aW9uUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5qcwppbmRleCA1YzQ3OGJjLi5mYTQzYmFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Cb3hN
b2RlbERldGFpbHNTZWN0aW9uUm93LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0JveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDM4ICsyMywz
NCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93ID0gZnVuY3Rpb24oKSB7Ci0gICAgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJObyBCb3ggTW9kZWwgSW5mb3JtYXRpb24iKSk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5TdHlsZUNsYXNz
TmFtZSk7Ci0KLSAgICB0aGlzLl9ub2RlU3R5bGVzID0gbnVsbDsKLX07CitXZWJJbnNwZWN0b3Iu
Qm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdyA9IGNsYXNzIEJveE1vZGVsRGV0YWlsc1NlY3Rpb25S
b3cgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cKK3sKKyAgICBjb25zdHJ1
Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIEJv
eCBNb2RlbCBJbmZvcm1hdGlvbiIpKTsKIAotV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1Nl
Y3Rpb25Sb3cuU3R5bGVDbGFzc05hbWUgPSAiYm94LW1vZGVsIjsKLVdlYkluc3BlY3Rvci5Cb3hN
b2RlbERldGFpbHNTZWN0aW9uUm93LlN0eWxlVmFsdWVEZWxpbWl0ZXJzID0gIiBceEEwXHRcblwi
Jzo7LC8oKSI7Ci1XZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5DU1NOdW1i
ZXJSZWdleCA9IC9eKC0/KD86XGQrKD86XC5cZCspP3xcLlxkKykpJC87CisgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9u
Um93LlN0eWxlQ2xhc3NOYW1lKTsKIAotV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rp
b25Sb3cucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQm94TW9k
ZWxEZXRhaWxzU2VjdGlvblJvdywKKyAgICAgICAgdGhpcy5fbm9kZVN0eWxlcyA9IG51bGw7Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbm9kZVN0eWxlcygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fbm9kZVN0eWxlczsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBu
b2RlU3R5bGVzKG5vZGVTdHlsZXMpCiAgICAgewogICAgICAgICB0aGlzLl9ub2RlU3R5bGVzID0g
bm9kZVN0eWxlczsKIAogICAgICAgICB0aGlzLl9yZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKLSAgICBfcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNo
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVOZXh0UmVmcmVzaCkgewogICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX2lnbm9yZU5leHRSZWZyZXNoOwpAQCAtNjIsMTQgKzU4LDE0IEBA
IFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIHRoaXMuX3VwZGF0ZU1ldHJpY3MoKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9nZXRQcm9wZXJ0eVZhbHVlQXNQeDogZnVuY3Rpb24oc3R5bGUsIHByb3BlcnR5TmFt
ZSkKKyAgICBfZ2V0UHJvcGVydHlWYWx1ZUFzUHgoc3R5bGUsIHByb3BlcnR5TmFtZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBOdW1iZXIoc3R5bGUucHJvcGVydHlGb3JOYW1lKHByb3BlcnR5TmFt
ZSkudmFsdWUucmVwbGFjZSgvcHgkLywgIiIpIHx8IDApOwotICAgIH0sCisgICAgfQogCi0gICAg
X2dldEJveDogZnVuY3Rpb24oY29tcHV0ZWRTdHlsZSwgY29tcG9uZW50TmFtZSkKKyAgICBfZ2V0
Qm94KGNvbXB1dGVkU3R5bGUsIGNvbXBvbmVudE5hbWUpCiAgICAgewogICAgICAgICB2YXIgc3Vm
Zml4ID0gY29tcG9uZW50TmFtZSA9PT0gImJvcmRlciIgPyAiLXdpZHRoIiA6ICIiOwogICAgICAg
ICB2YXIgbGVmdCA9IHRoaXMuX2dldFByb3BlcnR5VmFsdWVBc1B4KGNvbXB1dGVkU3R5bGUsIGNv
bXBvbmVudE5hbWUgKyAiLWxlZnQiICsgc3VmZml4KTsKQEAgLTc3LDkgKzczLDkgQEAgV2ViSW5z
cGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlID0gewogICAgICAgICB2
YXIgcmlnaHQgPSB0aGlzLl9nZXRQcm9wZXJ0eVZhbHVlQXNQeChjb21wdXRlZFN0eWxlLCBjb21w
b25lbnROYW1lICsgIi1yaWdodCIgKyBzdWZmaXgpOwogICAgICAgICB2YXIgYm90dG9tID0gdGhp
cy5fZ2V0UHJvcGVydHlWYWx1ZUFzUHgoY29tcHV0ZWRTdHlsZSwgY29tcG9uZW50TmFtZSArICIt
Ym90dG9tIiArIHN1ZmZpeCk7CiAgICAgICAgIHJldHVybiB7bGVmdCwgdG9wLCByaWdodCwgYm90
dG9tfTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oaWdobGlnaHRET01Ob2RlOiBmdW5jdGlvbihz
aG93SGlnaGxpZ2h0LCBtb2RlLCBldmVudCkKKyAgICBfaGlnaGxpZ2h0RE9NTm9kZShzaG93SGln
aGxpZ2h0LCBtb2RlLCBldmVudCkKICAgICB7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOwogCkBAIC0xMDEsOSArOTcsOSBAQCBXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2Vj
dGlvblJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJhY3RpdmUiKTsKICAgICAgICAgfQotICAgIH0sCisg
ICAgfQogCi0gICAgX3VwZGF0ZU1ldHJpY3M6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlTWV0cmlj
cygpCiAgICAgewogICAgICAgICAvLyBVcGRhdGluZyB3aXRoIGNvbXB1dGVkIHN0eWxlLgogICAg
ICAgICB2YXIgbWV0cmljc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
QEAgLTI1Miw5ICsyNDgsOSBAQCBXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJv
dy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5oaWRlRW1wdHlNZXNzYWdlKCk7CiAgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChtZXRyaWNzRWxlbWVudCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc3RhcnRFZGl0aW5nOiBmdW5jdGlvbih0YXJnZXRFbGVtZW50LCBib3gsIHN0
eWxlUHJvcGVydHksIGNvbXB1dGVkU3R5bGUpCisgICAgX3N0YXJ0RWRpdGluZyh0YXJnZXRFbGVt
ZW50LCBib3gsIHN0eWxlUHJvcGVydHksIGNvbXB1dGVkU3R5bGUpCiAgICAgewogICAgICAgICBp
ZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdFZGl0ZWQodGFyZ2V0RWxlbWVudCkpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yNzUsOSArMjcxLDkgQEAgV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWls
c1NlY3Rpb25Sb3cucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0
aW5nKHRhcmdldEVsZW1lbnQsIGNvbmZpZyk7CiAKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlv
bigpLnNldEJhc2VBbmRFeHRlbnQodGFyZ2V0RWxlbWVudCwgMCwgdGFyZ2V0RWxlbWVudCwgMSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWx0ZXJlZEZsb2F0TnVtYmVyOiBmdW5jdGlvbihudW1i
ZXIsIGV2ZW50KQorICAgIF9hbHRlcmVkRmxvYXROdW1iZXIobnVtYmVyLCBldmVudCkKICAgICB7
CiAgICAgICAgIHZhciBhcnJvd0tleVByZXNzZWQgPSAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0g
IlVwIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIpOwogCkBAIC0zMDEsOSArMjk3
LDkgQEAgV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVLZXlEb3duOiBmdW5jdGlvbihjb250ZXh0LCBzdHls
ZVByb3BlcnR5LCBldmVudCkKKyAgICBfaGFuZGxlS2V5RG93bihjb250ZXh0LCBzdHlsZVByb3Bl
cnR5LCBldmVudCkKICAgICB7CiAgICAgICAgIGlmICghL14oPzpQYWdlKT8oPzpVcHxEb3duKSQv
LnRlc3QoZXZlbnQua2V5SWRlbnRpZmllcikpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNjAs
MjMgKzM1NiwyMyBAQCBXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2lnbm9yZU5leHRSZWZyZXNoID0gdHJ1ZTsKIAogICAg
ICAgICB0aGlzLl9hcHBseVVzZXJJbnB1dChlbGVtZW50LCByZXBsYWNlbWVudFN0cmluZywgb3Jp
Z2luYWxWYWx1ZSwgY29udGV4dCwgZmFsc2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX2VkaXRp
bmdFbmRlZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4dCkKKyAgICBfZWRpdGluZ0VuZGVkKGVs
ZW1lbnQsIGNvbnRleHQpCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5vcmlnaW5hbFByb3Bl
cnR5RGF0YTsKICAgICAgICAgZGVsZXRlIHRoaXMucHJldmlvdXNQcm9wZXJ0eURhdGFDYW5kaWRh
dGU7CiAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGNvbnRl
eHQua2V5RG93bkhhbmRsZXIsIGZhbHNlKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2lzRWRpdGlu
Z01ldHJpY3M7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rp
b24oZWxlbWVudCwgY29udGV4dCkKKyAgICBfZWRpdGluZ0NhbmNlbGxlZChlbGVtZW50LCBjb250
ZXh0KQogICAgIHsKICAgICAgICAgdGhpcy5fZWRpdGluZ0VuZGVkKGVsZW1lbnQsIGNvbnRleHQp
OwogICAgICAgICB0aGlzLl9yZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYXBwbHlV
c2VySW5wdXQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHVzZXJJbnB1dCwgcHJldmlvdXNDb250ZW50LCBj
b250ZXh0LCBjb21taXRFZGl0b3IpCisgICAgX2FwcGx5VXNlcklucHV0KGVsZW1lbnQsIHVzZXJJ
bnB1dCwgcHJldmlvdXNDb250ZW50LCBjb250ZXh0LCBjb21taXRFZGl0b3IpCiAgICAgewogICAg
ICAgICBpZiAoY29tbWl0RWRpdG9yICYmIHVzZXJJbnB1dCA9PT0gcHJldmlvdXNDb250ZW50KSB7
CiAgICAgICAgICAgICAvLyBOb3RoaW5nIGNoYW5nZWQsIHNvIGNhbmNlbC4KQEAgLTQxOSwxMyAr
NDE1LDE1IEBAIFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIHByb3BlcnR5ID0gdGhpcy5fbm9kZVN0eWxlcy5pbmxpbmVTdHls
ZS5wcm9wZXJ0eUZvck5hbWUoY29udGV4dC5zdHlsZVByb3BlcnR5KTsKICAgICAgICAgcHJvcGVy
dHkudmFsdWUgPSB1c2VySW5wdXQ7CiAgICAgICAgIHByb3BlcnR5LmFkZCgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2VkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHVzZXJJbnB1
dCwgcHJldmlvdXNDb250ZW50LCBjb250ZXh0KQorICAgIF9lZGl0aW5nQ29tbWl0dGVkKGVsZW1l
bnQsIHVzZXJJbnB1dCwgcHJldmlvdXNDb250ZW50LCBjb250ZXh0KQogICAgIHsKICAgICAgICAg
dGhpcy5fZWRpdGluZ0VuZGVkKGVsZW1lbnQsIGNvbnRleHQpOwogICAgICAgICB0aGlzLl9hcHBs
eVVzZXJJbnB1dChlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4dCwg
dHJ1ZSk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25S
b3cucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5w
cm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5TdHlsZUNs
YXNzTmFtZSA9ICJib3gtbW9kZWwiOworV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rp
b25Sb3cuU3R5bGVWYWx1ZURlbGltaXRlcnMgPSAiIFx4QTBcdFxuXCInOjssLygpIjsKK1dlYklu
c3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LkNTU051bWJlclJlZ2V4ID0gL14oLT8o
PzpcZCsoPzpcLlxkKyk/fFwuXGQrKSkkLzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcu
anMKaW5kZXggNGMxZGIzMC4uZTk5Mjk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZp
ZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDEwNyArMjMsMTA3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3ID0gZnVuY3Rpb24o
YWN0aW9uLCBkZWxlZ2F0ZSwgb21pdEZvY3VzKQorV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rp
b25WaWV3ID0gY2xhc3MgQnJlYWtwb2ludEFjdGlvblZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5P
YmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGFjdGlvbiwgZGVsZWdhdGUsIG9taXRG
b2N1cykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICBjb25zb2xlLmFzc2VydChhY3Rp
b24pOwotICAgIGNvbnNvbGUuYXNzZXJ0KGRlbGVnYXRlKTsKLSAgICBjb25zb2xlLmFzc2VydChE
ZWJ1Z2dlckFnZW50LkJyZWFrcG9pbnRBY3Rpb25UeXBlKTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoYWN0aW9uKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGVsZWdhdGUpOworICAgICAgICBj
b25zb2xlLmFzc2VydChEZWJ1Z2dlckFnZW50LkJyZWFrcG9pbnRBY3Rpb25UeXBlKTsKIAotICAg
IHRoaXMuX2FjdGlvbiA9IGFjdGlvbjsKLSAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlOwor
ICAgICAgICB0aGlzLl9hY3Rpb24gPSBhY3Rpb247CisgICAgICAgIHRoaXMuX2RlbGVnYXRlID0g
ZGVsZWdhdGU7CiAKLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1hY3Rpb24t
YmxvY2siOworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtYWN0
aW9uLWJsb2NrIjsKIAotICAgIHZhciBoZWFkZXIgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKLSAgICBoZWFkZXIuY2xhc3NOYW1lID0g
ImJyZWFrcG9pbnQtYWN0aW9uLWJsb2NrLWhlYWRlciI7CisgICAgICAgIHZhciBoZWFkZXIgPSB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsK
KyAgICAgICAgaGVhZGVyLmNsYXNzTmFtZSA9ICJicmVha3BvaW50LWFjdGlvbi1ibG9jay1oZWFk
ZXIiOwogCi0gICAgdmFyIHBpY2tlciA9IGhlYWRlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzZWxlY3QiKSk7Ci0gICAgcGlja2VyLmFkZEV2ZW50TGlzdGVuZXIoImNoYW5n
ZSIsIHRoaXMuX3BpY2tlckNoYW5nZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHZhciBwaWNrZXIg
PSBoZWFkZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0IikpOwor
ICAgICAgICBwaWNrZXIuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fcGlja2VyQ2hh
bmdlZC5iaW5kKHRoaXMpKTsKIAotICAgIGZvciAodmFyIGtleSBpbiBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludEFjdGlvbi5UeXBlKSB7Ci0gICAgICAgIHZhciB0eXBlID0gV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRBY3Rpb24uVHlwZVtrZXldOwotICAgICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgib3B0aW9uIik7Ci0gICAgICAgIG9wdGlvbi50ZXh0Q29udGVudCA9IFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldy5kaXNwbGF5U3RyaW5nRm9yVHlwZSh0eXBl
KTsKLSAgICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdGhpcy5fYWN0aW9uLnR5cGUgPT09IHR5cGU7
Ci0gICAgICAgIG9wdGlvbi52YWx1ZSA9IHR5cGU7Ci0gICAgICAgIHBpY2tlci5hZGQob3B0aW9u
KTsKLSAgICB9CisgICAgICAgIGZvciAodmFyIGtleSBpbiBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dEFjdGlvbi5UeXBlKSB7CisgICAgICAgICAgICB2YXIgdHlwZSA9IFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50QWN0aW9uLlR5cGVba2V5XTsKKyAgICAgICAgICAgIHZhciBvcHRpb24gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgICAgIG9wdGlvbi50ZXh0Q29udGVu
dCA9IFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldy5kaXNwbGF5U3RyaW5nRm9yVHlw
ZSh0eXBlKTsKKyAgICAgICAgICAgIG9wdGlvbi5zZWxlY3RlZCA9IHRoaXMuX2FjdGlvbi50eXBl
ID09PSB0eXBlOworICAgICAgICAgICAgb3B0aW9uLnZhbHVlID0gdHlwZTsKKyAgICAgICAgICAg
IHBpY2tlci5hZGQob3B0aW9uKTsKKyAgICAgICAgfQogCi0gICAgdmFyIGFwcGVuZEFjdGlvbkJ1
dHRvbiA9IGhlYWRlci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24i
KSk7Ci0gICAgYXBwZW5kQWN0aW9uQnV0dG9uLmNsYXNzTmFtZSA9ICJicmVha3BvaW50LWFjdGlv
bi1hcHBlbmQtYnV0dG9uIjsKLSAgICBhcHBlbmRBY3Rpb25CdXR0b24uYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9hcHBlbmRBY3Rpb25CdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwot
ICAgIGFwcGVuZEFjdGlvbkJ1dHRvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWRk
IG5ldyBicmVha3BvaW50IGFjdGlvbiBhZnRlciB0aGlzIGFjdGlvbiIpOworICAgICAgICB2YXIg
YXBwZW5kQWN0aW9uQnV0dG9uID0gaGVhZGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImJ1dHRvbiIpKTsKKyAgICAgICAgYXBwZW5kQWN0aW9uQnV0dG9uLmNsYXNzTmFtZSA9
ICJicmVha3BvaW50LWFjdGlvbi1hcHBlbmQtYnV0dG9uIjsKKyAgICAgICAgYXBwZW5kQWN0aW9u
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYXBwZW5kQWN0aW9uQnV0dG9u
Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgYXBwZW5kQWN0aW9uQnV0dG9uLnRpdGxlID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBZGQgbmV3IGJyZWFrcG9pbnQgYWN0aW9uIGFmdGVyIHRo
aXMgYWN0aW9uIik7CiAKLSAgICB2YXIgcmVtb3ZlQWN0aW9uQnV0dG9uID0gaGVhZGVyLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIpKTsKLSAgICByZW1vdmVBY3Rp
b25CdXR0b24uY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtYWN0aW9uLXJlbW92ZS1idXR0b24iOwot
ICAgIHJlbW92ZUFjdGlvbkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX3Jl
bW92ZUFjdGlvbi5iaW5kKHRoaXMpKTsKLSAgICByZW1vdmVBY3Rpb25CdXR0b24udGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlbW92ZSB0aGlzIGJyZWFrcG9pbnQgYWN0aW9uIik7Cisg
ICAgICAgIHZhciByZW1vdmVBY3Rpb25CdXR0b24gPSBoZWFkZXIuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIikpOworICAgICAgICByZW1vdmVBY3Rpb25CdXR0b24u
Y2xhc3NOYW1lID0gImJyZWFrcG9pbnQtYWN0aW9uLXJlbW92ZS1idXR0b24iOworICAgICAgICBy
ZW1vdmVBY3Rpb25CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9yZW1vdmVB
Y3Rpb24uYmluZCh0aGlzKSk7CisgICAgICAgIHJlbW92ZUFjdGlvbkJ1dHRvbi50aXRsZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUmVtb3ZlIHRoaXMgYnJlYWtwb2ludCBhY3Rpb24iKTsKIAot
ICAgIHRoaXMuX2JvZHlFbGVtZW50ID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgdGhpcy5fYm9keUVsZW1lbnQuY2xhc3NOYW1l
ID0gImJyZWFrcG9pbnQtYWN0aW9uLWJsb2NrLWJvZHkiOworICAgICAgICB0aGlzLl9ib2R5RWxl
bWVudCA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikpOworICAgICAgICB0aGlzLl9ib2R5RWxlbWVudC5jbGFzc05hbWUgPSAiYnJlYWtwb2lu
dC1hY3Rpb24tYmxvY2stYm9keSI7CiAKLSAgICB0aGlzLl91cGRhdGVCb2R5KG9taXRGb2N1cyk7
Ci19OwotCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcuZGlzcGxheVN0cmluZ0Zv
clR5cGUgPSBmdW5jdGlvbih0eXBlKQotewotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2c6Ci0gICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvZyBNZXNzYWdlIik7Ci0gICAgY2FzZSBXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlOgotICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJFdmFsdWF0ZSBKYXZhU2NyaXB0Iik7Ci0gICAgY2FzZSBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlNvdW5kOgotICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJQbGF5IFNvdW5kIik7Ci0gICAgY2FzZSBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludEFjdGlvbi5UeXBlLlByb2JlOgotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJQcm9iZSBFeHByZXNzaW9uIik7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQoZmFsc2UpOwotICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIHRoaXMuX3VwZGF0
ZUJvZHkob21pdEZvY3VzKTsKICAgICB9Ci19OwogCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFj
dGlvblZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludEFjdGlvblZpZXcsCisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgZGlzcGxheVN0
cmluZ0ZvclR5cGUodHlwZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAg
ICBjYXNlIFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9nOgorICAgICAgICAg
ICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9nIE1lc3NhZ2UiKTsKKyAgICAgICAg
Y2FzZSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlOgorICAgICAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZhbHVhdGUgSmF2YVNjcmlwdCIp
OworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uLlR5cGUuU291bmQ6
CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQbGF5IFNvdW5kIik7
CisgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Qcm9iZToK
KyAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByb2JlIEV4cHJlc3Np
b24iKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNl
KTsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGFjdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWN0
aW9uOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAK
LSAgICBfcGlja2VyQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BpY2tlckNoYW5nZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgbmV3VHlwZSA9IGV2ZW50LnRhcmdldC52YWx1ZTsK
ICAgICAgICAgdGhpcy5fYWN0aW9uID0gdGhpcy5fYWN0aW9uLmJyZWFrcG9pbnQucmVjcmVhdGVB
Y3Rpb24obmV3VHlwZSwgdGhpcy5fYWN0aW9uKTsKICAgICAgICAgdGhpcy5fdXBkYXRlQm9keSgp
OwogICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5icmVha3BvaW50QWN0aW9uVmlld1Jlc2l6ZWQodGhp
cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYXBwZW5kQWN0aW9uQnV0dG9uQ2xpY2tlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX2FwcGVuZEFjdGlvbkJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICB2YXIgbmV3QWN0aW9uID0gdGhpcy5fYWN0aW9uLmJyZWFrcG9pbnQuY3JlYXRl
QWN0aW9uKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkRlZmF1bHRCcmVha3BvaW50QWN0aW9uVHlw
ZSwgdGhpcy5fYWN0aW9uKTsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUuYnJlYWtwb2ludEFjdGlv
blZpZXdBcHBlbmRBY3Rpb25WaWV3KHRoaXMsIG5ld0FjdGlvbik7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfcmVtb3ZlQWN0aW9uOiBmdW5jdGlvbigpCisgICAgX3JlbW92ZUFjdGlvbigpCiAgICAg
ewogICAgICAgICB0aGlzLl9hY3Rpb24uYnJlYWtwb2ludC5yZW1vdmVBY3Rpb24odGhpcy5fYWN0
aW9uKTsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUuYnJlYWtwb2ludEFjdGlvblZpZXdSZW1vdmVB
Y3Rpb25WaWV3KHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUJvZHk6IGZ1bmN0
aW9uKG9taXRGb2N1cykKKyAgICBfdXBkYXRlQm9keShvbWl0Rm9jdXMpCiAgICAgewogICAgICAg
ICB0aGlzLl9ib2R5RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0xODIsMTQgKzE4Miwx
NCBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludEFjdGlvblZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5fYm9keUVsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbG9nSW5wdXRDaGFuZ2VkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfbG9nSW5wdXRDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdGhpcy5fYWN0aW9uLmRhdGEgPSBldmVudC50YXJnZXQudmFsdWU7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfY29kZU1pcnJvckJsdXJyZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb2RlTWly
cm9yQmx1cnJlZChldmVudCkKICAgICB7CiAgICAgICAgIC8vIFRocm93IGF3YXkgdGhlIGV4cHJl
c3Npb24gaWYgaXQncyBqdXN0IHdoaXRlc3BhY2UuCiAgICAgICAgIHZhciBkYXRhID0gKHRoaXMu
X2NvZGVNaXJyb3IuZ2V0VmFsdWUoKSB8fCAiIikudHJpbSgpOwpAQCAtMTk4LDEyICsxOTgsMTAg
QEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuX3JlbW92ZUFjdGlvbigpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0
aGlzLl9hY3Rpb24uZGF0YSA9IGRhdGE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29kZU1pcnJv
clZpZXdwb3J0Q2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvZGVNaXJyb3JWaWV3cG9y
dENoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5icmVha3BvaW50
QWN0aW9uVmlld1Jlc2l6ZWQodGhpcyk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRBY3Rpb25WaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwppbmRleCBhMDlh
YzA4Li4wODY2ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDEwMCArMjMsODcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gZnVuY3Rpb24oYnJlYWtw
b2ludCwgY2xhc3NOYW1lLCB0aXRsZSkKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1l
bnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5CcmVha3BvaW50KTsKLQotICAgIGlmICghY2xhc3NOYW1lKQotICAg
ICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LkdlbmVy
aWNMaW5lSWNvblN0eWxlQ2xhc3NOYW1lOwotCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVl
RWxlbWVudC5jYWxsKHRoaXMsIFtXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0
eWxlQ2xhc3NOYW1lLCBjbGFzc05hbWVdLCB0aXRsZSwgbnVsbCwgYnJlYWtwb2ludCwgZmFsc2Up
OwotCi0gICAgdGhpcy5fYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CisgICAgY29uc3RydWN0b3Io
YnJlYWtwb2ludCwgY2xhc3NOYW1lLCB0aXRsZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCk7CiAKLSAg
ICB0aGlzLl9saXN0ZW5lcnMgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQodGhp
cywgIkJyZWFrcG9pbnRUcmVlRWxlbWVudCBsaXN0ZW5lcnMiKTsKLSAgICBpZiAoIXRpdGxlKQot
ICAgICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoYnJlYWtwb2ludCwgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRMb2Nh
dGlvbkRpZENoYW5nZSk7Ci0gICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKGJyZWFrcG9pbnQs
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRo
aXMuX3VwZGF0ZVN0YXR1cyk7Ci0gICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKGJyZWFrcG9p
bnQsIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwg
dGhpcy5fdXBkYXRlU3RhdHVzKTsKLSAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoYnJlYWtw
b2ludCwgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5n
ZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsKLSAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7Cisg
ICAgICAgIGlmICghY2xhc3NOYW1lKQorICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVj
dG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5lcmljTGluZUljb25TdHlsZUNsYXNzTmFtZTsK
IAotICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2Vy
LCBXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0QWRkZWQsIHRoaXMuX3By
b2JlU2V0QWRkZWQpOwotICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihXZWJJbnNwZWN0b3Iu
cHJvYmVNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuUHJvYmVNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVt
b3ZlZCwgdGhpcy5fcHJvYmVTZXRSZW1vdmVkKTsKKyAgICAgICAgc3VwZXIoWyJicmVha3BvaW50
IiwgY2xhc3NOYW1lXSwgdGl0bGUsIG51bGwsIGJyZWFrcG9pbnQsIGZhbHNlKTsKIAotICAgIHRo
aXMuX3N0YXR1c0ltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwot
ICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAg
IHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcih0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnQsICJtb3Vz
ZWRvd24iLCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOwotICAgIHRoaXMuX2xp
c3RlbmVycy5yZWdpc3Rlcih0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnQsICJjbGljayIsIHRoaXMu
X3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOworICAgICAgICB0aGlzLl9icmVha3BvaW50ID0g
YnJlYWtwb2ludDsKIAotICAgIGlmICghdGl0bGUpCi0gICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxl
cygpOwotICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOworICAgICAgICB0aGlzLl9saXN0ZW5lcnMg
PSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQodGhpcywgIkJyZWFrcG9pbnRUcmVl
RWxlbWVudCBsaXN0ZW5lcnMiKTsKKyAgICAgICAgaWYgKCF0aXRsZSkKKyAgICAgICAgICAgIHRo
aXMuX2xpc3RlbmVycy5yZWdpc3RlcihicmVha3BvaW50LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5FdmVudC5Mb2NhdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludExvY2F0aW9uRGlkQ2hh
bmdlKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdlYklu
c3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3Vw
ZGF0ZVN0YXR1cyk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihicmVha3BvaW50
LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRo
aXMuX3VwZGF0ZVN0YXR1cyk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihicmVh
a3BvaW50LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hh
bmdlLCB0aGlzLl91cGRhdGVTdGF0dXMpOworICAgICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0
ZXIoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlciwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1
cyk7CiAKLSAgICB0aGlzLnN0YXR1cyA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudDsKLSAgICB0
aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKFdlYklu
c3BlY3Rvci5wcm9iZU1hbmFnZXIsIFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJv
YmVTZXRBZGRlZCwgdGhpcy5fcHJvYmVTZXRBZGRlZCk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVy
cy5yZWdpc3RlcihXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLCBXZWJJbnNwZWN0b3IuUHJvYmVN
YW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwgdGhpcy5fcHJvYmVTZXRSZW1vdmVkKTsKIAot
ICAgIHRoaXMuX2ljb25BbmltYXRpb25MYXllckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7Ci0gICAgdGhpcy5pY29uRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pY29u
QW5pbWF0aW9uTGF5ZXJFbGVtZW50KTsKLX07Ci0KLVdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJl
ZUVsZW1lbnQuR2VuZXJpY0xpbmVJY29uU3R5bGVDbGFzc05hbWUgPSAiYnJlYWtwb2ludC1nZW5l
cmljLWxpbmUtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0eWxl
Q2xhc3NOYW1lID0gImJyZWFrcG9pbnQiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxl
bWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzdGF0dXMtaW1hZ2UiOwot
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5
bGVDbGFzc05hbWUgPSAicmVzb2x2ZWQiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxl
bWVudC5TdGF0dXNJbWFnZUF1dG9Db250aW51ZVN0eWxlQ2xhc3NOYW1lID0gImF1dG8tY29udGlu
dWUiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2Fi
bGVkU3R5bGVDbGFzc05hbWUgPSAiZGlzYWJsZWQiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRU
cmVlRWxlbWVudC5Gb3JtYXR0ZWRMb2NhdGlvblN0eWxlQ2xhc3NOYW1lID0gImZvcm1hdHRlZC1s
b2NhdGlvbiI7Ci1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVw
ZGF0ZWRTdHlsZUNsYXNzTmFtZSA9ICJkYXRhLXVwZGF0ZWQiOworICAgICAgICB0aGlzLl9zdGF0
dXNJbWFnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAg
dGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAg
IHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcih0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnQsICJtb3Vz
ZWRvd24iLCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOworICAgICAgICB0aGlz
Ll9saXN0ZW5lcnMucmVnaXN0ZXIodGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50LCAiY2xpY2siLCB0
aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9p
bnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkQW5pbWF0aW9uRHVyYXRpb24gPSA0MDA7IC8v
IG1pbGxpc2Vjb25kcworICAgICAgICBpZiAoIXRpdGxlKQorICAgICAgICAgICAgdGhpcy5fdXBk
YXRlVGl0bGVzKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOwogCisgICAgICAgIHRo
aXMuc3RhdHVzID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50OworICAgICAgICB0aGlzLnNtYWxs
ID0gdHJ1ZTsKIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQs
CisgICAgICAgIHRoaXMuX2ljb25BbmltYXRpb25MYXllckVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRoaXMuaWNvbkVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5faWNvbkFuaW1hdGlvbkxheWVyRWxlbWVudCk7CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgYnJlYWtwb2ludCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYnJl
YWtwb2ludDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmaWx0ZXJhYmxlRGF0YSgpCiAgICAg
ewogICAgICAgICByZXR1cm4ge3RleHQ6IHRoaXMuYnJlYWtwb2ludC51cmx9OwotICAgIH0sCisg
ICAgfQogCi0gICAgb25kZWxldGU6IGZ1bmN0aW9uKCkKKyAgICBvbmRlbGV0ZSgpCiAgICAgewog
ICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50UmVt
b3ZhYmxlKHRoaXMuX2JyZWFrcG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludCh0aGlz
Ll9icmVha3BvaW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBvbmVudGVyOiBmdW5jdGlvbigpCisgICAgb25lbnRlcigpCiAgICAgewogICAgICAgICB0aGlz
Ll9icmVha3BvaW50LmN5Y2xlVG9OZXh0TW9kZSgpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIG9uc3BhY2U6IGZ1bmN0aW9uKCkKKyAgICBvbnNwYWNlKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQuY3ljbGVUb05leHRNb2RlKCk7CiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgb25jb250ZXh0bWVudTogZnVuY3Rp
b24oZXZlbnQpCisgICAgb25jb250ZXh0bWVudShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBj
b250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQpOwogICAgICAg
ICB0aGlzLl9icmVha3BvaW50LmFwcGVuZENvbnRleHRNZW51SXRlbXMoY29udGV4dE1lbnUsIHRo
aXMuX3N0YXR1c0ltYWdlRWxlbWVudCk7CiAgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgb25hdHRhY2goKQog
ICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUu
b25hdHRhY2guY2FsbCh0aGlzKTsKIApAQCAtMTI1LDkgKzExMiw5IEBAIFdlYkluc3BlY3Rvci5C
cmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBmb3IgKHZhciBwcm9i
ZVNldCBvZiBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLnByb2JlU2V0cykKICAgICAgICAgICAg
IGlmIChwcm9iZVNldC5icmVha3BvaW50ID09PSB0aGlzLl9icmVha3BvaW50KQogICAgICAgICAg
ICAgICAgIHRoaXMuX2FkZFByb2JlU2V0KHByb2JlU2V0KTsKLSAgICB9LAorICAgIH0KIAotICAg
IG9uZGV0YWNoOiBmdW5jdGlvbigpCisgICAgb25kZXRhY2goKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUub25kZXRhY2guY2FsbCh0aGlz
KTsKIApAQCAtMTM1LDE3ICsxMjIsMTcgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuX3Byb2JlU2V0KQogICAgICAg
ICAgICAgdGhpcy5fcmVtb3ZlUHJvYmVTZXQodGhpcy5fcHJvYmVTZXQpOwotICAgIH0sCisgICAg
fQogCi0gICAgcmVtb3ZlU3RhdHVzSW1hZ2U6IGZ1bmN0aW9uKCkKKyAgICByZW1vdmVTdGF0dXNJ
bWFnZSgpCiAgICAgewogICAgICAgICB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnQucmVtb3ZlKCk7
CiAgICAgICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudCA9IG51bGw7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRlVGl0bGVzOiBmdW5jdGlvbigpCisgICAg
X3VwZGF0ZVRpdGxlcygpCiAgICAgewogICAgICAgICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0g
dGhpcy5fYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CiAKQEAgLTE2Niw5ICsxNTMsOSBA
QCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5tYWluVGl0bGUgKyAiIFx1MjAxNCAiICsgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJvcmlnaW5hbGx5ICVzIikuZm9ybWF0KHNvdXJjZUNvZGVMb2Nh
dGlvbi5vcmlnaW5hbExvY2F0aW9uU3RyaW5nKCkpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfdXBkYXRlU3RhdHVzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVN0YXR1cygpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudCkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTE4Nyw5ICsxNzQsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVu
dC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVz
SW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
dGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFzc05hbWUpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2FkZFByb2JlU2V0OiBmdW5jdGlvbihwcm9iZVNldCkKKyAg
ICBfYWRkUHJvYmVTZXQocHJvYmVTZXQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChw
cm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCk7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHByb2JlU2V0LmJyZWFrcG9pbnQgPT09IHRoaXMuX2JyZWFrcG9pbnQpOwpAQCAt
MTk4LDkgKzE4NSw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9wcm9iZVNldCA9IHByb2JlU2V0OwogICAgICAgICBwcm9i
ZVNldC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZVNldC5FdmVudC5TYW1wbGVz
Q2xlYXJlZCwgdGhpcy5fc2FtcGxlc0NsZWFyZWQsIHRoaXMpOwogICAgICAgICBwcm9iZVNldC5k
YXRhVGFibGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUu
RXZlbnQuRnJhbWVJbnNlcnRlZCwgdGhpcy5fZGF0YVVwZGF0ZWQsIHRoaXMpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3JlbW92ZVByb2JlU2V0OiBmdW5jdGlvbihwcm9iZVNldCkKKyAgICBfcmVt
b3ZlUHJvYmVTZXQocHJvYmVTZXQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9i
ZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCk7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHByb2JlU2V0ID09PSB0aGlzLl9wcm9iZVNldCk7CkBAIC0yMDgsMzIgKzE5NSwzMiBA
QCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcHJvYmVTZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmVTZXQuRXZl
bnQuU2FtcGxlc0NsZWFyZWQsIHRoaXMuX3NhbXBsZXNDbGVhcmVkLCB0aGlzKTsKICAgICAgICAg
cHJvYmVTZXQuZGF0YVRhYmxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2Jl
U2V0RGF0YVRhYmxlLkV2ZW50LkZyYW1lSW5zZXJ0ZWQsIHRoaXMuX2RhdGFVcGRhdGVkLCB0aGlz
KTsKICAgICAgICAgZGVsZXRlIHRoaXMuX3Byb2JlU2V0OwotICAgIH0sCisgICAgfQogCi0gICAg
X3Byb2JlU2V0QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wcm9iZVNldEFkZGVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlU2V0ID0gZXZlbnQuZGF0YS5wcm9iZVNldDsKICAg
ICAgICAgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQgPT09IHRoaXMuX2JyZWFrcG9pbnQpCiAgICAg
ICAgICAgICB0aGlzLl9hZGRQcm9iZVNldChwcm9iZVNldCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcHJvYmVTZXRSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcHJvYmVTZXRSZW1vdmVk
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlU2V0ID0gZXZlbnQuZGF0YS5wcm9iZVNl
dDsKICAgICAgICAgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQgPT09IHRoaXMuX2JyZWFrcG9pbnQp
CiAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9iZVNldChwcm9iZVNldCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc2FtcGxlc0NsZWFyZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zYW1wbGVz
Q2xlYXJlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb2Jl
U2V0KTsKIAogICAgICAgICB2YXIgb2xkVGFibGUgPSBldmVudC5kYXRhLm9sZFRhYmxlOwogICAg
ICAgICBvbGRUYWJsZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZVNldERh
dGFUYWJsZS5FdmVudC5GcmFtZUluc2VydGVkLCB0aGlzLl9kYXRhVXBkYXRlZCwgdGhpcyk7CiAg
ICAgICAgIHRoaXMuX3Byb2JlU2V0LmRhdGFUYWJsZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5GcmFtZUluc2VydGVkLCB0aGlzLl9kYXRhVXBk
YXRlZCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YVVwZGF0ZWQ6IGZ1bmN0aW9u
KCkKKyAgICBfZGF0YVVwZGF0ZWQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9i
ZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUpKSB7CiAgICAgICAgICAgICBjbGVhclRpbWVvdXQo
dGhpcy5fcmVtb3ZlSWNvbkFuaW1hdGlvblRpbWVvdXRJZGVudGlmaWVyKTsKQEAgLTI0OCwxMCAr
MjM1LDEwIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9yZW1vdmVJY29uQW5pbWF0aW9uVGltZW91dElkZW50aWZpZXIgPSBz
ZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRh
dGVkU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9LmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5C
cmVha3BvaW50VHJlZUVsZW1lbnQuUHJvYmVEYXRhVXBkYXRlZEFuaW1hdGlvbkR1cmF0aW9uKTsK
LSAgICB9LAorICAgIH0KIAogCi0gICAgX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZTogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZShldmVudCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fYnJlYWtw
b2ludCk7CiAKQEAgLTI2MCwxOCArMjQ3LDI2IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRo
aXMuX3VwZGF0ZVRpdGxlcygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0YXR1c0ltYWdlRWxl
bWVudE1vdXNlRG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX3N0YXR1c0ltYWdlRWxlbWVudE1v
dXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIC8vIFRvIHByZXZlbnQgdGhlIHRyZWUgZWxl
bWVudCBmcm9tIHNlbGVjdGluZy4KICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9icmVha3BvaW50LmN5Y2xlVG9OZXh0TW9kZSgpOwogICAgIH0KIH07CiAKLVdl
Ykluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5lcmljTGluZUljb25TdHlsZUNsYXNzTmFtZSA9ICJicmVh
a3BvaW50LWdlbmVyaWMtbGluZS1pY29uIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVs
ZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAic3RhdHVzLWltYWdlIjsK
K1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0
eWxlQ2xhc3NOYW1lID0gInJlc29sdmVkIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVs
ZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGludWVTdHlsZUNsYXNzTmFtZSA9ICJhdXRvLWNvbnRp
bnVlIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VEaXNh
YmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2FibGVkIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50
VHJlZUVsZW1lbnQuRm9ybWF0dGVkTG9jYXRpb25TdHlsZUNsYXNzTmFtZSA9ICJmb3JtYXR0ZWQt
bG9jYXRpb24iOworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFV
cGRhdGVkU3R5bGVDbGFzc05hbWUgPSAiZGF0YS11cGRhdGVkIjsKKworV2ViSW5zcGVjdG9yLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkQW5pbWF0aW9uRHVyYXRpb24gPSA0
MDA7IC8vIG1pbGxpc2Vjb25kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwppbmRl
eCA0OWZiMTI2Li4yNWRkZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsNTkgKzIzLDQzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24oaWRlbnRpZmll
ciwgdG9vbFRpcE9yTGFiZWwsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJl
c3NFbWJvc3MsIHJvbGUsIGxhYmVsKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVt
LmNhbGwodGhpcywgaWRlbnRpZmllcik7Ci0KLSAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVy
KTsKLSAgICBjb25zb2xlLmFzc2VydCh0b29sVGlwT3JMYWJlbCk7Ci0KLSAgICB0aGlzLnRvb2xU
aXAgPSB0b29sVGlwT3JMYWJlbDsKLQotICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9tb3VzZUNsaWNrZWQuYmluZCh0aGlzKSk7CitXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBCdXR0b25OYXZpZ2F0aW9uSXRlbSBleHRlbmRz
IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbQoreworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZp
ZXIsIHRvb2xUaXBPckxhYmVsLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHBy
ZXNzRW1ib3NzLCByb2xlLCBsYWJlbCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlk
ZW50aWZpZXIpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0b29sVGlwT3JMYWJlbCk7CiAKLSAg
ICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUgfHwgImJ1dHRvbiIpOwor
ICAgICAgICBzdXBlcihpZGVudGlmaWVyKTsKIAotICAgIGlmIChsYWJlbCkKLSAgICAgICAgdGhp
cy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBsYWJlbCk7CisgICAgICAgIHRo
aXMudG9vbFRpcCA9IHRvb2xUaXBPckxhYmVsOwogCi0gICAgdGhpcy5faW1hZ2VXaWR0aCA9IGlt
YWdlV2lkdGggfHwgMTY7Ci0gICAgdGhpcy5faW1hZ2VIZWlnaHQgPSBpbWFnZUhlaWdodCB8fCAx
NjsKLSAgICB0aGlzLl9zdXBwcmVzc0VtYm9zcyA9IHN1cHByZXNzRW1ib3NzIHx8IGZhbHNlOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbW91
c2VDbGlja2VkLmJpbmQodGhpcykpOwogCi0gICAgaWYgKHN1cHByZXNzRW1ib3NzKQotICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLlN1cHByZXNzRW1ib3NzU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9lbGVt
ZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUgfHwgImJ1dHRvbiIpOwogCi0gICAgaWYgKGlt
YWdlKQotICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7Ci0gICAgZWxzZQotICAgICAgICB0aGlz
LmxhYmVsID0gdG9vbFRpcE9yTGFiZWw7Ci19OworICAgICAgICBpZiAobGFiZWwpCisgICAgICAg
ICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxhYmVsKTsKIAot
V2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lID0gImJ1dHRv
biI7Ci1XZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRGlzYWJsZWRTdHlsZUNsYXNz
TmFtZSA9ICJkaXNhYmxlZCI7Ci1XZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3Vw
cHJlc3NCZXplbFN0eWxlQ2xhc3NOYW1lID0gInN1cHByZXNzLWJlemVsIjsKLVdlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdXBwcmVzc0VtYm9zc1N0eWxlQ2xhc3NOYW1lID0gInN1
cHByZXNzLWVtYm9zcyI7Ci1XZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uVGV4dE9u
bHlDbGFzc05hbWUgPSAidGV4dC1vbmx5IjsKLQotV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLlN0YXRlcyA9IHt9OwotV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0
YXRlcy5Ob3JtYWwgPSAibm9ybWFsIjsKLVdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5TdGF0ZXMuQWN0aXZlID0gImFjdGl2ZSI7Ci1XZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uU3RhdGVzLkZvY3VzID0gImZvY3VzIjsKLVdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5TdGF0ZXMuQWN0aXZlRm9jdXMgPSAiYWN0aXZlLWZvY3VzIjsKKyAgICAgICAgdGhp
cy5faW1hZ2VXaWR0aCA9IGltYWdlV2lkdGggfHwgMTY7CisgICAgICAgIHRoaXMuX2ltYWdlSGVp
Z2h0ID0gaW1hZ2VIZWlnaHQgfHwgMTY7CisgICAgICAgIHRoaXMuX3N1cHByZXNzRW1ib3NzID0g
c3VwcHJlc3NFbWJvc3MgfHwgZmFsc2U7CiAKLVdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbS5FdmVudCA9IHsKLSAgICBDbGlja2VkOiAiYnV0dG9uLW5hdmlnYXRpb24taXRlbS1jbGlj
a2VkIgotfTsKKyAgICAgICAgaWYgKHN1cHByZXNzRW1ib3NzKQorICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5T
dXBwcmVzc0VtYm9zc1N0eWxlQ2xhc3NOYW1lKTsKIAotV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmln
YXRpb25JdGVtLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLAorICAgICAgICBpZiAoaW1hZ2UpCisgICAgICAgICAgICB0aGlz
LmltYWdlID0gaW1hZ2U7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMubGFiZWwgPSB0
b29sVGlwT3JMYWJlbDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0b29sVGlw
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LnRpdGxlOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IHRvb2xUaXAobmV3VG9vbFRpcCkKICAgICB7CkBAIC04NCwxMiArNjgs
MTIgQEAgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9lbGVtZW50LnRpdGxlID0gbmV3VG9v
bFRpcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsYWJlbCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9LAorICAgIH0KIAogICAgIHNl
dCBsYWJlbChuZXdMYWJlbCkKICAgICB7CkBAIC05NywxMiArODEsMTIgQEAgV2ViSW5zcGVjdG9y
LkJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWxlbWVu
dC50ZXh0Q29udGVudCA9IG5ld0xhYmVsIHx8ICIiOwogICAgICAgICBpZiAodGhpcy5wYXJlbnRO
YXZpZ2F0aW9uQmFyKQogICAgICAgICAgICAgdGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyLnVwZGF0
ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGltYWdlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9pbWFnZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBpbWFnZShu
ZXdJbWFnZSkKICAgICB7CkBAIC0xMjEsMTIgKzEwNSwxMiBAQCBXZWJJbnNwZWN0b3IuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX2dseXBoRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlSW1hZ2Uo
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmFibGVkKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiAhdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLkRpc2FibGVkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQog
CiAgICAgc2V0IGVuYWJsZWQoZmxhZykKICAgICB7CkBAIC0xMzQsMTIgKzExOCwxMiBAQCBXZWJJ
bnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzdXBwcmVzc0JlemVsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3VwcHJl
c3NCZXplbFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdXBwcmVz
c0JlemVsKGZsYWcpCiAgICAgewpAQCAtMTQ3LDkgKzEzMSw5IEBAIFdlYkluc3BlY3Rvci5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN1cHByZXNz
QmV6ZWxTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
U3VwcHJlc3NCZXplbFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdlbmVy
YXRlU3R5bGVUZXh0OiBmdW5jdGlvbihwYXJlbnRTZWxlY3RvcikKKyAgICBnZW5lcmF0ZVN0eWxl
VGV4dChwYXJlbnRTZWxlY3RvcikKICAgICB7CiAgICAgICAgIHZhciBjbGFzc05hbWVzID0gdGhp
cy5fY2xhc3NOYW1lcy5qb2luKCIuIik7CiAKQEAgLTE2Nyw0MiArMTUxLDY4IEBAIFdlYkluc3Bl
Y3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICByZXR1cm4gc3R5bGVUZXh0OwotICAgIH0sCisgICAgfQogCi0gICAgLy8gUHJpdmF0ZQor
ICAgIC8vIFByb3RlY3RlZAorCisgICAgZ2V0IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBbImJ1dHRvbiJdOworICAgIH0KIAotICAgIF9hZGRpdGlvbmFsQ2xh
c3NOYW1lczogW1dlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFt
ZV0sCi0gICAgX2VtYm9zc2VkSW1hZ2VTdGF0ZXM6IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5TdGF0ZXMsCi0gICAgX2ltYWdlQ2FjaGVhYmxlOiB0cnVlLAorICAgIGdldCBlbWJv
c3NlZEltYWdlU3RhdGVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uU3RhdGVzOworICAgIH0KIAotICAgIF9tb3VzZUNsaWNrZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIGdldCBpbWFnZUNhY2hlYWJsZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfbW91c2VDbGlja2Vk
KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9jYW52YXNJZGVudGlmaWVyOiBmdW5jdGlvbihzdGF0ZSkKKyAgICBfY2FudmFzSWRlbnRp
ZmllcihzdGF0ZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9zdXBwcmVz
c0VtYm9zcyk7CiAgICAgICAgIHJldHVybiAibmF2aWdhdGlvbi1pdGVtLSIgKyB0aGlzLl9pZGVu
dGlmaWVyICsgIi0iICsgKHN0YXRlIHx8IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5TdGF0ZXMuTm9ybWFsKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVJbWFnZTogZnVu
Y3Rpb24oKQorICAgIF91cGRhdGVJbWFnZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc3Vw
cHJlc3NFbWJvc3MpCiAgICAgICAgICAgICB0aGlzLl9nbHlwaEVsZW1lbnQuc3R5bGUud2Via2l0
TWFzayA9ICJ1cmwoIiArIHRoaXMuX2ltYWdlICsgIikiOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB0aGlzLl9nZW5lcmF0ZUltYWdlcygpOwotICAgIH0sCisgICAgfQogCi0gICAgX2dlbmVy
YXRlSW1hZ2VzOiBmdW5jdGlvbigpCisgICAgX2dlbmVyYXRlSW1hZ2VzKCkKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9zdXBwcmVzc0VtYm9zcyk7CiAgICAgICAgIGlmICh0
aGlzLl9zdXBwcmVzc0VtYm9zcykKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZ2VuZXJh
dGVFbWJvc3NlZEltYWdlcyh0aGlzLmltYWdlLCB0aGlzLl9pbWFnZVdpZHRoLCB0aGlzLl9pbWFn
ZUhlaWdodCwgdGhpcy5fZW1ib3NzZWRJbWFnZVN0YXRlcywgdGhpcy5fY2FudmFzSWRlbnRpZmll
ci5iaW5kKHRoaXMpLCAhdGhpcy5faW1hZ2VDYWNoZWFibGUpOworICAgICAgICBnZW5lcmF0ZUVt
Ym9zc2VkSW1hZ2VzKHRoaXMuaW1hZ2UsIHRoaXMuX2ltYWdlV2lkdGgsIHRoaXMuX2ltYWdlSGVp
Z2h0LCB0aGlzLmVtYm9zc2VkSW1hZ2VTdGF0ZXMsIHRoaXMuX2NhbnZhc0lkZW50aWZpZXIuYmlu
ZCh0aGlzKSwgIXRoaXMuaW1hZ2VDYWNoZWFibGUpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbS5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2FibGVkIjsKK1dlYkluc3BlY3Rvci5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5TdXBwcmVzc0JlemVsU3R5bGVDbGFzc05hbWUgPSAic3VwcHJl
c3MtYmV6ZWwiOworV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN1cHByZXNzRW1i
b3NzU3R5bGVDbGFzc05hbWUgPSAic3VwcHJlc3MtZW1ib3NzIjsKK1dlYkluc3BlY3Rvci5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5UZXh0T25seUNsYXNzTmFtZSA9ICJ0ZXh0LW9ubHkiOworCitXZWJJ
bnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3RhdGVzID0ge307CitXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3RhdGVzLk5vcm1hbCA9ICJub3JtYWwiOworV2ViSW5zcGVj
dG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0YXRlcy5BY3RpdmUgPSAiYWN0aXZlIjsKK1dlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdGF0ZXMuRm9jdXMgPSAiZm9jdXMiOworV2Vi
SW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0YXRlcy5BY3RpdmVGb2N1cyA9ICJhY3Rp
dmUtZm9jdXMiOworCitXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQgPSB7
CisgICAgQ2xpY2tlZDogImJ1dHRvbi1uYXZpZ2F0aW9uLWl0ZW0tY2xpY2tlZCIKK307CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25U
b29sYmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0J1dHRvblRvb2xiYXJJdGVtLmpzCmluZGV4IDYxYzQwOWUuLjM2Y2YyZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xiYXJJ
dGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1
dHRvblRvb2xiYXJJdGVtLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMywzMCArMjMsMjcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQnV0dG9uVG9vbGJhckl0ZW0gPSBm
dW5jdGlvbihpZGVudGlmaWVyLCB0b29sVGlwLCBsYWJlbCwgaW1hZ2UsIHN1cHByZXNzRW1ib3Nz
LCByb2xlKQorV2ViSW5zcGVjdG9yLkJ1dHRvblRvb2xiYXJJdGVtID0gY2xhc3MgQnV0dG9uVG9v
bGJhckl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0KIHsKLSAg
ICBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVy
LCB0b29sVGlwLCBpbWFnZSwgMzIsIDMyLCBzdXBwcmVzc0VtYm9zcywgcm9sZSk7Ci0KLSAgICBj
b25zb2xlLmFzc2VydChsYWJlbCk7Ci0KLSAgICB0aGlzLl9sYWJlbEVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9sYWJlbEVsZW1lbnQuY2xhc3NOYW1l
ID0gV2ViSW5zcGVjdG9yLkJ1dHRvblRvb2xiYXJJdGVtLkxhYmVsU3R5bGVDbGFzc05hbWU7Ci0g
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sYWJlbEVsZW1lbnQpOworICAgIGNv
bnN0cnVjdG9yKGlkZW50aWZpZXIsIHRvb2xUaXAsIGxhYmVsLCBpbWFnZSwgc3VwcHJlc3NFbWJv
c3MsIHJvbGUpCisgICAgeworICAgICAgICBzdXBlcihpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFn
ZSwgMzIsIDMyLCBzdXBwcmVzc0VtYm9zcywgcm9sZSk7CiAKLSAgICB0aGlzLmxhYmVsID0gbGFi
ZWw7Ci19OworICAgICAgICBjb25zb2xlLmFzc2VydChsYWJlbCk7CiAKLVdlYkluc3BlY3Rvci5C
dXR0b25Ub29sYmFySXRlbS5MYWJlbFN0eWxlQ2xhc3NOYW1lID0gImxhYmVsIjsKKyAgICAgICAg
dGhpcy5fbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
ICAgIHRoaXMuX2xhYmVsRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQnV0dG9uVG9v
bGJhckl0ZW0uTGFiZWxTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9sYWJlbEVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuQnV0dG9uVG9vbGJh
ckl0ZW0ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQnV0dG9u
VG9vbGJhckl0ZW0sCisgICAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDsKKyAgICB9CiAKICAgICAv
LyBQdWJsaWMKIAogICAgIGdldCBsYWJlbCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
bGFiZWxFbGVtZW50LnRleHRDb250ZW50OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGxhYmVs
KG5ld0xhYmVsKQogICAgIHsKQEAgLTU4LDQgKzU1LDQgQEAgV2ViSW5zcGVjdG9yLkJ1dHRvblRv
b2xiYXJJdGVtLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQnV0dG9u
VG9vbGJhckl0ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5CdXR0b25OYXZp
Z2F0aW9uSXRlbS5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQnV0dG9uVG9vbGJhckl0ZW0uTGFi
ZWxTdHlsZUNsYXNzTmFtZSA9ICJsYWJlbCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFy
YXRpb25TZWN0aW9uLmpzCmluZGV4IDg0ZmZjZGYuLjdkNGUxYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25T
ZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMjYgKzIzLDEwNiBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uU2VjdGlvbiA9IGZ1bmN0aW9uKHN0eWxlKQorV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb25TZWN0aW9uID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24g
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhp
cyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0g
ICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3Nl
cnQoc3R5bGUpOwotICAgIHRoaXMuX3N0eWxlID0gc3R5bGUgfHwgbnVsbDsKLQotICAgIHRoaXMu
X2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5T
dHlsZUNsYXNzTmFtZTsKLQotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5IZWFkZXJFbGVtZW50U3R5bGVD
bGFzc05hbWU7Ci0KLSAgICB0aGlzLl9pY29uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImltZyIpOwotICAgIHRoaXMuX2ljb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5JY29uRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwot
ICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faWNvbkVsZW1lbnQpOwot
Ci0gICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOwotICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uU2VsZWN0b3JFbGVtZW50U3R5bGVDbGFzc05hbWU7
Ci0gICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LnNldEF0dHJpYnV0ZSgic3BlbGxjaGVjayIsICJm
YWxzZSIpOwotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2VsZWN0
b3JFbGVtZW50KTsKLQotICAgIHRoaXMuX29yaWdpbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIik7Ci0gICAgdGhpcy5fb3JpZ2luRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uT3JpZ2luRWxlbWVudFN0eWxlQ2xh
c3NOYW1lOwotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fb3JpZ2lu
RWxlbWVudCk7Ci0KLSAgICB0aGlzLl9wcm9wZXJ0aWVzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3Byb3BlcnRpZXNFbGVtZW50LmNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Qcm9wZXJ0aWVzRWxlbWVu
dFN0eWxlQ2xhc3NOYW1lOwotCi0gICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IgPSBuZXcg
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yKHRoaXMsIHN0eWxlKTsK
LSAgICB0aGlzLl9wcm9wZXJ0aWVzRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9wcm9wZXJ0aWVz
VGV4dEVkaXRvci5lbGVtZW50KTsKLQotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5faGVhZGVyRWxlbWVudCk7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9w
cm9wZXJ0aWVzRWxlbWVudCk7Ci0KLSAgICB2YXIgaWNvbkNsYXNzTmFtZTsKLSAgICBzd2l0Y2gg
KHN0eWxlLnR5cGUpIHsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
LlR5cGUuUnVsZToKLSAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5bGUub3duZXJSdWxlKTsKLQot
ICAgICAgICBpZiAoc3R5bGUuaW5oZXJpdGVkKQotICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Jbmhlcml0ZWRTdHlsZVJ1
bGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIGVsc2UgaWYgKHN0eWxlLm93bmVyUnVsZS50
eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlLkF1dGhvcikKLSAgICAgICAgICAgIGlj
b25DbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uQXV0
aG9yU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICBlbHNlIGlmIChzdHlsZS5v
d25lclJ1bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZS5Vc2VyKQotICAgICAg
ICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2Vj
dGlvbi5Vc2VyU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICBlbHNlIGlmIChz
dHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZS5Vc2VyQWdl
bnQpCi0gICAgICAgICAgICBpY29uQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVj
bGFyYXRpb25TZWN0aW9uLlVzZXJBZ2VudFN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZTsKLSAg
ICAgICAgZWxzZSBpZiAoc3R5bGUub3duZXJSdWxlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5DU1NS
dWxlLlR5cGUuSW5zcGVjdG9yKQotICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5JbnNwZWN0b3JTdHlsZVJ1bGVJY29uU3R5
bGVDbGFzc05hbWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZWNsYXJhdGlvbi5UeXBlLklubGluZToKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uLlR5cGUuQXR0cmlidXRlOgotICAgICAgICBpZiAoc3R5bGUuaW5oZXJp
dGVkKQotICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbi5Jbmhlcml0ZWRFbGVtZW50U3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NO
YW1lOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpY29uQ2xhc3NOYW1lID0gV2ViSW5zcGVj
dG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01FbGVtZW50SWNvblN0eWxlQ2xhc3NO
YW1lOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgY29uc3RydWN0b3Ioc3R5bGUpCisgICAg
eworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3NlcnQoaWNvbkNsYXNzTmFtZSk7
Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGljb25DbGFzc05hbWUpOworICAgICAg
ICBjb25zb2xlLmFzc2VydChzdHlsZSk7CisgICAgICAgIHRoaXMuX3N0eWxlID0gc3R5bGUgfHwg
bnVsbDsKIAotICAgIGlmICghc3R5bGUuZWRpdGFibGUpCi0gICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uTG9j
a2VkU3R5bGVDbGFzc05hbWUpOwotICAgIGVsc2UgaWYgKHN0eWxlLm93bmVyUnVsZSkgewotICAg
ICAgICB0aGlzLl9jb21taXRTZWxlY3RvcktleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQu
S2V5LkVudGVyLCB0aGlzLl9jb21taXRTZWxlY3Rvci5iaW5kKHRoaXMpLCB0aGlzLl9zZWxlY3Rv
ckVsZW1lbnQpOwotICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiYmx1ciIsIHRoaXMuX2NvbW1pdFNlbGVjdG9yLmJpbmQodGhpcykpOwotICAgIH0gZWxzZQot
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb25TZWN0aW9uLlNlbGVjdG9yTG9ja2VkU3R5bGVDbGFzc05hbWUpOworICAgICAg
ICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b25TZWN0aW9uLlN0eWxlQ2xhc3NOYW1lOwogCi0gICAgaWYgKCFXZWJJbnNwZWN0b3IuQ1NTU3R5
bGVEZWNsYXJhdGlvblNlY3Rpb24uX2dlbmVyYXRlZExvY2tJbWFnZXMpIHsKLSAgICAgICAgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLl9nZW5lcmF0ZWRMb2NrSW1hZ2Vz
ID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5IZWFkZXJFbGVtZW50U3R5bGVD
bGFzc05hbWU7CiAKLSAgICAgICAgdmFyIHNwZWNpZmljYXRpb25zID0geyJzdHlsZS1sb2NrLW5v
cm1hbCI6IHtmaWxsQ29sb3I6IFswLCAwLCAwLCAwLjVdfX07Ci0gICAgICAgIGdlbmVyYXRlQ29s
b3JlZEltYWdlc0ZvckNTUygiSW1hZ2VzL0xvY2tlZC5zdmciLCBzcGVjaWZpY2F0aW9ucywgOCwg
MTApOwotICAgIH0KKyAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJpbWciKTsKKyAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkljb25FbGVtZW50U3R5bGVDbGFz
c05hbWU7CisgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faWNv
bkVsZW1lbnQpOwogCi0gICAgdGhpcy5yZWZyZXNoKCk7Ci19OworICAgICAgICB0aGlzLl9zZWxl
Y3RvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRo
aXMuX3NlbGVjdG9yRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24uU2VsZWN0b3JFbGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRo
aXMuX3NlbGVjdG9yRWxlbWVudC5zZXRBdHRyaWJ1dGUoInNwZWxsY2hlY2siLCAiZmFsc2UiKTsK
KyAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zZWxlY3RvckVs
ZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uU3R5bGVD
bGFzc05hbWUgPSAic3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiI7Ci1XZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uTG9ja2VkU3R5bGVDbGFzc05hbWUgPSAibG9ja2VkIjsK
LVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5TZWxlY3RvckxvY2tlZFN0
eWxlQ2xhc3NOYW1lID0gInNlbGVjdG9yLWxvY2tlZCI7Ci1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblNlY3Rpb24uTGFzdEluR3JvdXBTdHlsZUNsYXNzTmFtZSA9ICJsYXN0LWluLWdy
b3VwIjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5IZWFkZXJFbGVt
ZW50U3R5bGVDbGFzc05hbWUgPSAiaGVhZGVyIjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbi5JY29uRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImljb24iOwotV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlNlbGVjdG9yRWxlbWVudFN0eWxlQ2xh
c3NOYW1lID0gInNlbGVjdG9yIjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2Vj
dGlvbi5PcmlnaW5FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAib3JpZ2luIjsKLVdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Qcm9wZXJ0aWVzRWxlbWVudFN0eWxlQ2xhc3NO
YW1lID0gInByb3BlcnRpZXMiOwotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0
aW9uLk1hdGNoZWRTZWxlY3RvckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJtYXRjaGVkIjsKKyAg
ICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKKyAgICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uT3JpZ2luRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwor
ICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX29yaWdpbkVsZW1l
bnQpOwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uQXV0aG9yU3R5
bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lID0gImF1dGhvci1zdHlsZS1ydWxlLWljb24iOwotV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlVzZXJTdHlsZVJ1bGVJY29uU3R5
bGVDbGFzc05hbWUgPSAidXNlci1zdHlsZS1ydWxlLWljb24iOwotV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb25TZWN0aW9uLlVzZXJBZ2VudFN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFt
ZSA9ICJ1c2VyLWFnZW50LXN0eWxlLXJ1bGUtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblNlY3Rpb24uSW5zcGVjdG9yU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lID0g
Imluc3BlY3Rvci1zdHlsZS1ydWxlLWljb24iOwotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFy
YXRpb25TZWN0aW9uLkluaGVyaXRlZFN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZSA9ICJpbmhl
cml0ZWQtc3R5bGUtcnVsZS1pY29uIjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
U2VjdGlvbi5Jbmhlcml0ZWRFbGVtZW50U3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lID0gImlu
aGVyaXRlZC1lbGVtZW50LXN0eWxlLXJ1bGUtaWNvbiI7CisgICAgICAgIHRoaXMuX3Byb3BlcnRp
ZXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMu
X3Byb3BlcnRpZXNFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbi5Qcm9wZXJ0aWVzRWxlbWVudFN0eWxlQ2xhc3NOYW1lOworCisgICAgICAg
IHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uVGV4dEVkaXRvcih0aGlzLCBzdHlsZSk7CisgICAgICAgIHRoaXMuX3Byb3BlcnRp
ZXNFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLmVsZW1lbnQp
OworCisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVu
dCk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcHJvcGVydGllc0Vs
ZW1lbnQpOworCisgICAgICAgIHZhciBpY29uQ2xhc3NOYW1lOworICAgICAgICBzd2l0Y2ggKHN0
eWxlLnR5cGUpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
bi5UeXBlLlJ1bGU6CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZS5vd25lclJ1bGUp
OworCisgICAgICAgICAgICBpZiAoc3R5bGUuaW5oZXJpdGVkKQorICAgICAgICAgICAgICAgIGlj
b25DbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSW5o
ZXJpdGVkU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgZWxzZSBpZiAo
c3R5bGUub3duZXJSdWxlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5DU1NSdWxlLlR5cGUuQXV0aG9y
KQorICAgICAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZWNsYXJhdGlvblNlY3Rpb24uQXV0aG9yU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lOworICAg
ICAgICAgICAgZWxzZSBpZiAoc3R5bGUub3duZXJSdWxlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5D
U1NSdWxlLlR5cGUuVXNlcikKKyAgICAgICAgICAgICAgICBpY29uQ2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlVzZXJTdHlsZVJ1bGVJY29uU3R5bGVD
bGFzc05hbWU7CisgICAgICAgICAgICBlbHNlIGlmIChzdHlsZS5vd25lclJ1bGUudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZS5Vc2VyQWdlbnQpCisgICAgICAgICAgICAgICAgaWNv
bkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Vc2Vy
QWdlbnRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBlbHNlIGlmIChz
dHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZS5JbnNwZWN0
b3IpCisgICAgICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uU2VjdGlvbi5JbnNwZWN0b3JTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uLlR5cGUuSW5saW5lOgorICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uLlR5cGUuQXR0cmlidXRlOgorICAgICAgICAgICAgaWYgKHN0eWxlLmlu
aGVyaXRlZCkKKyAgICAgICAgICAgICAgICBpY29uQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkluaGVyaXRlZEVsZW1lbnRTdHlsZVJ1bGVJY29uU3R5
bGVDbGFzc05hbWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWNvbkNsYXNz
TmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRWxlbWVu
dEljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLVdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbiwKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoaWNvbkNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmFkZChpY29uQ2xhc3NOYW1lKTsKKworICAgICAgICBpZiAoIXN0eWxlLmVk
aXRhYmxlKQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Mb2NrZWRTdHlsZUNsYXNzTmFtZSk7Cisg
ICAgICAgIGVsc2UgaWYgKHN0eWxlLm93bmVyUnVsZSkgeworICAgICAgICAgICAgdGhpcy5fY29t
bWl0U2VsZWN0b3JLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5FbnRlciwgdGhp
cy5fY29tbWl0U2VsZWN0b3IuYmluZCh0aGlzKSwgdGhpcy5fc2VsZWN0b3JFbGVtZW50KTsKKyAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwg
dGhpcy5fY29tbWl0U2VsZWN0b3IuYmluZCh0aGlzKSk7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbi5TZWxlY3RvckxvY2tlZFN0eWxlQ2xhc3NOYW1lKTsKKworICAgICAg
ICBpZiAoIVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5fZ2VuZXJhdGVk
TG9ja0ltYWdlcykgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b25TZWN0aW9uLl9nZW5lcmF0ZWRMb2NrSW1hZ2VzID0gdHJ1ZTsKKworICAgICAgICAgICAgdmFy
IHNwZWNpZmljYXRpb25zID0geyJzdHlsZS1sb2NrLW5vcm1hbCI6IHtmaWxsQ29sb3I6IFswLCAw
LCAwLCAwLjVdfX07CisgICAgICAgICAgICBnZW5lcmF0ZUNvbG9yZWRJbWFnZXNGb3JDU1MoIklt
YWdlcy9Mb2NrZWQuc3ZnIiwgc3BlY2lmaWNhdGlvbnMsIDgsIDEwKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMucmVmcmVzaCgpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0
IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc3R5bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0
eWxlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxhc3RJbkdyb3VwKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uTGFzdEluR3JvdXBTdHlsZUNsYXNzTmFtZSk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgbGFzdEluR3JvdXAobGFzdCkKICAgICB7CkBAIC0xNTAs
MTkgKzEzMCwxOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5MYXN0SW5Hcm91cFN0eWxlQ2xhc3NO
YW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5MYXN0SW5Hcm91
cFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmb2N1c2VkKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5mb2N1c2VkOwot
ICAgIH0sCisgICAgfQogCi0gICAgZm9jdXM6IGZ1bmN0aW9uKCkKKyAgICBmb2N1cygpCiAgICAg
ewogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5mb2N1cygpOwotICAgIH0sCisg
ICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAg
ICAgICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRo
aXMuX29yaWdpbkVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKQEAgLTI2NCwxNiArMjQ0LDE2IEBA
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl9vcmlnaW5FbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiSFRNTCBBdHRyaWJ1dGVzIikpKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVM
YXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgdGhp
cy5fcHJvcGVydGllc1RleHRFZGl0b3IudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKLSAgICBfY29tbWl0U2VsZWN0b3I6IGZ1bmN0aW9uKG11dGF0aW9u
cykKKyAgICBfY29tbWl0U2VsZWN0b3IobXV0YXRpb25zKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fc3R5bGUub3duZXJSdWxlKTsKICAgICAgICAgaWYgKCF0aGlzLl9zdHls
ZS5vd25lclJ1bGUpCkBAIC0yOTAsNCArMjcwLDIwIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb25TZWN0aW9uLlN0eWxlQ2xhc3NOYW1lID0gInN0eWxlLWRlY2xhcmF0aW9uLXNl
Y3Rpb24iOworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkxvY2tlZFN0
eWxlQ2xhc3NOYW1lID0gImxvY2tlZCI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blNlY3Rpb24uU2VsZWN0b3JMb2NrZWRTdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3Rvci1sb2NrZWQi
OworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkxhc3RJbkdyb3VwU3R5
bGVDbGFzc05hbWUgPSAibGFzdC1pbi1ncm91cCI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24uSGVhZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImhlYWRlciI7CitX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSWNvbkVsZW1lbnRTdHlsZUNs
YXNzTmFtZSA9ICJpY29uIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlv
bi5TZWxlY3RvckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3RvciI7CitXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uT3JpZ2luRWxlbWVudFN0eWxlQ2xhc3NOYW1l
ID0gIm9yaWdpbiI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uUHJv
cGVydGllc0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJwcm9wZXJ0aWVzIjsKK1dlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5NYXRjaGVkU2VsZWN0b3JFbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAibWF0Y2hlZCI7CisKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
U2VjdGlvbi5BdXRob3JTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWUgPSAiYXV0aG9yLXN0eWxl
LXJ1bGUtaWNvbiI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uVXNl
clN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZSA9ICJ1c2VyLXN0eWxlLXJ1bGUtaWNvbiI7CitX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uVXNlckFnZW50U3R5bGVSdWxl
SWNvblN0eWxlQ2xhc3NOYW1lID0gInVzZXItYWdlbnQtc3R5bGUtcnVsZS1pY29uIjsKK1dlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5JbnNwZWN0b3JTdHlsZVJ1bGVJY29u
U3R5bGVDbGFzc05hbWUgPSAiaW5zcGVjdG9yLXN0eWxlLXJ1bGUtaWNvbiI7CitXZWJJbnNwZWN0
b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSW5oZXJpdGVkU3R5bGVSdWxlSWNvblN0eWxl
Q2xhc3NOYW1lID0gImluaGVyaXRlZC1zdHlsZS1ydWxlLWljb24iOworV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkluaGVyaXRlZEVsZW1lbnRTdHlsZVJ1bGVJY29uU3R5
bGVDbGFzc05hbWUgPSAiaW5oZXJpdGVkLWVsZW1lbnQtc3R5bGUtcnVsZS1pY29uIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
RGVjbGFyYXRpb25UZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKaW5kZXggYTRiMjNk
Zi4uMDNlNDc1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRF
ZGl0b3IuanMKQEAgLTI5Niw3ICsyOTYsNiBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvblRleHRFZGl0b3IgPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcgogICAg
ICAgICAvLyBVc2UgYSBzaG9ydCBkZWxheSBmb3IgdXNlciBpbnB1dCB0byBjb2FsZXNjZSBtb3Jl
IGNoYW5nZXMgYmVmb3JlIGNvbW1pdHRpbmcuIE90aGVyIGFjdGlvbnMgbGlrZQogICAgICAgICAv
LyB1bmRvLCByZWRvIGFuZCBwYXN0ZSBhcmUgYXRvbWljIGFuZCB3b3JrIGJldHRlciB3aXRoIGEg
emVybyBkZWxheS4gQ29kZU1pcnJvciBpZGVudGlmaWVzIGNoYW5nZXMgdGhhdAogICAgICAgICAv
LyBnZXQgY29hbGVzY2VkIGluIHRoZSB1bmRvIHN0YWNrIHdpdGggYSAiKyIgcHJlZml4IG9uIHRo
ZSBvcmlnaW4uIFVzZSB0aGF0IHRvIHNldCB0aGUgZGVsYXkgZm9yIG91ciBjb2FsZXNjaW5nLgot
ICAgICAgICAvLyBGSVhNRTogdXNlIGNvbnN0IG9yIGxldAogICAgICAgICB2YXIgZGVsYXkgPSBj
aGFuZ2Uub3JpZ2luICYmIGNoYW5nZS5vcmlnaW4uY2hhckF0KDApID09PSAiKyIgPyBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuQ29tbWl0Q29hbGVzY2VEZWxheSA6
IDA7CiAKICAgICAgICAgLy8gUmVzZXQgdGhlIHRpbWVvdXQgc28gcmFwaWQgY2hhbmdlcyBjb2Fs
ZXNjZSBhZnRlciBhIHNob3J0IGRlbGF5LgpAQCAtMzM3LDcgKzMzNiw2IEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFyYXRp
b25UZXh0RWRpdG9yCiAKICAgICAgICAgICAgIGlmICghdGhpcy5fY29kZU1pcnJvci5nZXRPcHRp
b24oInJlYWRPbmx5IikpIHsKICAgICAgICAgICAgICAgICAvLyBNYXRjaGVzIGEgY29tbWVudCBs
aWtlOiAvKiAtd2Via2l0LWZvbzogYmFyOyAqLwotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB1
c2UgY29uc3Qgb3IgbGV0CiAgICAgICAgICAgICAgICAgdmFyIGNvbW1lbnRlZFByb3BlcnR5UmVn
ZXggPSAvXC9cKlxzKlstXHddK1xzKjpccypbXjtdKzs/XHMqXCpcLy9nOwogCiAgICAgICAgICAg
ICAgICAgLy8gTG9vayBmb3IgY29tbWVudHMgdGhhdCBsb29rIGxpa2UgcHJvcGVydGllcyBhbmQg
YWRkIGNoZWNrYm94ZXMgaW4gZnJvbnQgb2YgdGhlbS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5l
bC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxl
RGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCAwZWE4ZjljLi4xMjg4MDI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4MyArMjMsNzcgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENTU1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJhclBhbmVsCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCAiY3NzLXN0eWxl
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZXMiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdHlsZSIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQnJ1c2hBbmRSdWxlci5zdmciLCAiNCIp
OwotCi0gICAgdGhpcy5fc2VsZWN0ZWRQYW5lbCA9IG51bGw7Ci0KLSAgICB0aGlzLl9uYXZpZ2F0
aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyKG51bGwsIG51bGwsICJ0YWJs
aXN0Iik7Ci0gICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uQmFyLkV2ZW50Lk5hdmlnYXRpb25JdGVtU2VsZWN0ZWQsIHRoaXMuX25h
dmlnYXRpb25JdGVtU2VsZWN0ZWQsIHRoaXMpOwotICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZv
cmUodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50LCB0aGlzLmNvbnRlbnRFbGVtZW50KTsKKyAg
ICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigiY3NzLXN0eWxlIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTdHlsZXMiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIp
LCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQnJ1c2hBbmRSdWxlci5zdmciLCAiNCIpOwogCi0gICAg
dGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NDaGVja2JveGVzID0ge307CisgICAgICAgIHRoaXMuX3Nl
bGVjdGVkUGFuZWwgPSBudWxsOwogCi0gICAgaWYgKFdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFn
ZXIuY2FuRm9yY2VQc2V1ZG9DbGFzc2VzKCkpIHsKLSAgICAgICAgdGhpcy5fZm9yY2VkUHNldWRv
Q2xhc3NDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAg
dGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NDb250YWluZXIuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Qc2V1ZG9DbGFzc2VzRWxlbWVudFN0eWxlQ2xh
c3NOYW1lOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyKG51bGwsIG51bGwsICJ0YWJsaXN0Iik7CisgICAgICAgIHRoaXMuX25hdmln
YXRpb25CYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5FdmVu
dC5OYXZpZ2F0aW9uSXRlbVNlbGVjdGVkLCB0aGlzLl9uYXZpZ2F0aW9uSXRlbVNlbGVjdGVkLCB0
aGlzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl9uYXZpZ2F0aW9u
QmFyLmVsZW1lbnQsIHRoaXMuY29udGVudEVsZW1lbnQpOwogCi0gICAgICAgIHZhciBncm91cEVs
ZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NoZWNrYm94ZXMg
PSB7fTsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNYW5hZ2VyLkZvcmNlYWJsZVBz
ZXVkb0NsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihwc2V1ZG9DbGFzcykgewotICAgICAgICAgICAg
Ly8gV2UgZG9uJ3QgbG9jYWxpemUgdGhlIGxhYmVsIHNpbmNlIGl0IGlzIGEgQ1NTIHBzZXVkby1j
bGFzcyBmcm9tIHRoZSBDU1Mgc3RhbmRhcmQuCi0gICAgICAgICAgICB2YXIgbGFiZWwgPSBwc2V1
ZG9DbGFzcy5jYXBpdGFsaXplKCk7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuY3NzU3R5bGVN
YW5hZ2VyLmNhbkZvcmNlUHNldWRvQ2xhc3NlcygpKSB7CisgICAgICAgICAgICB0aGlzLl9mb3Jj
ZWRQc2V1ZG9DbGFzc0NvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgICAgICAgICAgdGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NDb250YWluZXIuY2xhc3NOYW1lID0g
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Qc2V1ZG9DbGFzc2VzRWxl
bWVudFN0eWxlQ2xhc3NOYW1lOwogCi0gICAgICAgICAgICB2YXIgbGFiZWxFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKKyAgICAgICAgICAgIHZhciBncm91cEVsZW1l
bnQgPSBudWxsOwogCi0gICAgICAgICAgICB2YXIgY2hlY2tib3hFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICAgICAgICAgIGNoZWNrYm94RWxlbWVudC5hZGRF
dmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NoZWNrYm94Q2hh
bmdlZC5iaW5kKHRoaXMsIHBzZXVkb0NsYXNzKSk7Ci0gICAgICAgICAgICBjaGVja2JveEVsZW1l
bnQudHlwZSA9ICJjaGVja2JveCI7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVN
YW5hZ2VyLkZvcmNlYWJsZVBzZXVkb0NsYXNzZXMuZm9yRWFjaChmdW5jdGlvbihwc2V1ZG9DbGFz
cykgeworICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGxvY2FsaXplIHRoZSBsYWJlbCBzaW5j
ZSBpdCBpcyBhIENTUyBwc2V1ZG8tY2xhc3MgZnJvbSB0aGUgQ1NTIHN0YW5kYXJkLgorICAgICAg
ICAgICAgICAgIHZhciBsYWJlbCA9IHBzZXVkb0NsYXNzLmNhcGl0YWxpemUoKTsKIAotICAgICAg
ICAgICAgdGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NDaGVja2JveGVzW3BzZXVkb0NsYXNzXSA9IGNo
ZWNrYm94RWxlbWVudDsKKyAgICAgICAgICAgICAgICB2YXIgbGFiZWxFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKIAotICAgICAgICAgICAgbGFiZWxFbGVtZW50LmFw
cGVuZENoaWxkKGNoZWNrYm94RWxlbWVudCk7Ci0gICAgICAgICAgICBsYWJlbEVsZW1lbnQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobGFiZWwpKTsKKyAgICAgICAgICAgICAg
ICB2YXIgY2hlY2tib3hFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsK
KyAgICAgICAgICAgICAgICBjaGVja2JveEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdl
IiwgdGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NDaGVja2JveENoYW5nZWQuYmluZCh0aGlzLCBwc2V1
ZG9DbGFzcykpOworICAgICAgICAgICAgICAgIGNoZWNrYm94RWxlbWVudC50eXBlID0gImNoZWNr
Ym94IjsKIAotICAgICAgICAgICAgaWYgKCFncm91cEVsZW1lbnQgfHwgZ3JvdXBFbGVtZW50LmNo
aWxkcmVuLmxlbmd0aCA9PT0gMikgewotICAgICAgICAgICAgICAgIGdyb3VwRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgICAgIGdyb3VwRWxlbWVu
dC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLlBz
ZXVkb0NsYXNzZXNHcm91cEVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgICAgICAgICB0
aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NvbnRhaW5lci5hcHBlbmRDaGlsZChncm91cEVsZW1lbnQp
OwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNz
Q2hlY2tib3hlc1twc2V1ZG9DbGFzc10gPSBjaGVja2JveEVsZW1lbnQ7CiAKLSAgICAgICAgICAg
IGdyb3VwRWxlbWVudC5hcHBlbmRDaGlsZChsYWJlbEVsZW1lbnQpOwotICAgICAgICB9LCB0aGlz
KTsKKyAgICAgICAgICAgICAgICBsYWJlbEVsZW1lbnQuYXBwZW5kQ2hpbGQoY2hlY2tib3hFbGVt
ZW50KTsKKyAgICAgICAgICAgICAgICBsYWJlbEVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUobGFiZWwpKTsKIAotICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzQ29udGFpbmVyKTsKLSAgICB9CisgICAg
ICAgICAgICAgICAgaWYgKCFncm91cEVsZW1lbnQgfHwgZ3JvdXBFbGVtZW50LmNoaWxkcmVuLmxl
bmd0aCA9PT0gMikgeworICAgICAgICAgICAgICAgICAgICBncm91cEVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgICAgICAgICAgZ3JvdXBFbGVtZW50
LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuUHNl
dWRvQ2xhc3Nlc0dyb3VwRWxlbWVudFN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgICAgICAg
ICB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NvbnRhaW5lci5hcHBlbmRDaGlsZChncm91cEVsZW1l
bnQpOworICAgICAgICAgICAgICAgIH0KIAotICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxz
UGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWw7Ci0gICAg
dGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuUnVsZXNTdHls
ZURldGFpbHNQYW5lbDsKLSAgICB0aGlzLl9tZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBuZXcg
V2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbDsKKyAgICAgICAgICAgICAgICBn
cm91cEVsZW1lbnQuYXBwZW5kQ2hpbGQobGFiZWxFbGVtZW50KTsKKyAgICAgICAgICAgIH0sIHRo
aXMpOwogCi0gICAgdGhpcy5fcGFuZWxzID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFu
ZWwsIHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX21ldHJpY3NTdHlsZURldGFp
bHNQYW5lbF07CisgICAgICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2ZvcmNlZFBzZXVkb0NsYXNzQ29udGFpbmVyKTsKKyAgICAgICAgfQogCi0gICAgdGhpcy5f
bmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9jb21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsLm5hdmlnYXRpb25JdGVtKTsKLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmln
YXRpb25JdGVtKHRoaXMuX3J1bGVzU3R5bGVEZXRhaWxzUGFuZWwubmF2aWdhdGlvbkl0ZW0pOwot
ICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fbWV0cmljc1N0
eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JdGVtKTsKKyAgICAgICAgdGhpcy5fY29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQ
YW5lbDsKKyAgICAgICAgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IG5ldyBXZWJJbnNw
ZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbDsKKyAgICAgICAgdGhpcy5fbWV0cmljc1N0eWxl
RGV0YWlsc1BhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWw7
CiAKLSAgICB0aGlzLl9sYXN0U2VsZWN0ZWRTZWN0aW9uU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0
b3IuU2V0dGluZygibGFzdC1zZWxlY3RlZC1zdHlsZS1kZXRhaWxzLXBhbmVsIiwgdGhpcy5fcnVs
ZXNTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSXRlbS5pZGVudGlmaWVyKTsKKyAgICAgICAg
dGhpcy5fcGFuZWxzID0gW3RoaXMuX2NvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX3J1
bGVzU3R5bGVEZXRhaWxzUGFuZWwsIHRoaXMuX21ldHJpY3NTdHlsZURldGFpbHNQYW5lbF07CiAK
LSAgICAvLyBUaGlzIHdpbGwgY2F1c2UgdGhlIHNlbGVjdGVkIHBhbmVsIHRvIGJlIHNldCBpbiBf
bmF2aWdhdGlvbkl0ZW1TZWxlY3RlZC4KLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnNlbGVjdGVk
TmF2aWdhdGlvbkl0ZW0gPSB0aGlzLl9sYXN0U2VsZWN0ZWRTZWN0aW9uU2V0dGluZy52YWx1ZTsK
LX07CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5f
Y29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSXRlbSk7CisgICAgICAgIHRoaXMu
X25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fcnVsZXNTdHlsZURldGFpbHNQ
YW5lbC5uYXZpZ2F0aW9uSXRlbSk7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2
aWdhdGlvbkl0ZW0odGhpcy5fbWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLm5hdmlnYXRpb25JdGVt
KTsKIAotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Qc2V1ZG9DbGFz
c2VzRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInBzZXVkby1jbGFzc2VzIjsKLVdlYkluc3BlY3Rv
ci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuUHNldWRvQ2xhc3Nlc0dyb3VwRWxlbWVudFN0
eWxlQ2xhc3NOYW1lID0gImdyb3VwIjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRl
YmFyUGFuZWwuTm9Gb3JjZWRQc2V1ZG9DbGFzc2VzU2Nyb2xsT2Zmc2V0ID0gMzg7IC8vIERlZmF1
bHQgaGVpZ2h0IG9mIHRoZSBmb3JjZWQgcHNldWRvIGNsYXNzZXMgY29udGFpbmVyLiBVcGRhdGVk
IGluIHdpZHRoRGlkQ2hhbmdlLgorICAgICAgICB0aGlzLl9sYXN0U2VsZWN0ZWRTZWN0aW9uU2V0
dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygibGFzdC1zZWxlY3RlZC1zdHlsZS1kZXRh
aWxzLXBhbmVsIiwgdGhpcy5fcnVsZXNTdHlsZURldGFpbHNQYW5lbC5uYXZpZ2F0aW9uSXRlbS5p
ZGVudGlmaWVyKTsKIAotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1Np
ZGViYXJQYW5lbC5wcm90b3R5cGUsCisgICAgICAgIC8vIFRoaXMgd2lsbCBjYXVzZSB0aGUgc2Vs
ZWN0ZWQgcGFuZWwgdG8gYmUgc2V0IGluIF9uYXZpZ2F0aW9uSXRlbVNlbGVjdGVkLgorICAgICAg
ICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0gPSB0aGlzLl9sYXN0
U2VsZWN0ZWRTZWN0aW9uU2V0dGluZy52YWx1ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAot
ICAgIHN1cHBvcnRzRE9NTm9kZTogZnVuY3Rpb24obm9kZVRvSW5zcGVjdCkKKyAgICBzdXBwb3J0
c0RPTU5vZGUobm9kZVRvSW5zcGVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBub2RlVG9JbnNw
ZWN0Lm5vZGVUeXBlKCkgPT09IE5vZGUuRUxFTUVOVF9OT0RFOwotICAgIH0sCisgICAgfQogCi0g
ICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAgICAgdmFy
IGRvbU5vZGUgPSB0aGlzLmRvbU5vZGU7CiAgICAgICAgIGlmICghZG9tTm9kZSkKQEAgLTExMyw5
ICsxMDcsOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3VwZGF0ZVBzZXVkb0NsYXNzQ2hl
Y2tib3hlcygpOwotICAgIH0sCisgICAgfQogCi0gICAgdmlzaWJpbGl0eURpZENoYW5nZTogZnVu
Y3Rpb24oKQorICAgIHZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLlNpZGViYXJQYW5lbC5wcm90b3R5cGUudmlzaWJpbGl0eURpZENoYW5nZS5jYWxsKHRo
aXMpOwogCkBAIC0xMzMsMjcgKzEyNywyNyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9zZWxlY3RlZFBhbmVs
LnNob3duKCk7CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwubWFya0FzTmVlZHNSZWZyZXNo
KHRoaXMuZG9tTm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB3aWR0aERpZENoYW5nZTogZnVu
Y3Rpb24oKQorICAgIHdpZHRoRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZU5vRm9yY2VkUHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldCgpOwogCiAgICAgICAgIGlmICh0aGlz
Ll9zZWxlY3RlZFBhbmVsKQogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRQYW5lbC53aWR0aERp
ZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBhZGRF
dmVudExpc3RlbmVyczogZnVuY3Rpb24oKQorICAgIGFkZEV2ZW50TGlzdGVuZXJzKCkKICAgICB7
CiAgICAgICAgIHRoaXMuZG9tTm9kZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01O
b2RlLkV2ZW50LkVuYWJsZWRQc2V1ZG9DbGFzc2VzQ2hhbmdlZCwgdGhpcy5fdXBkYXRlUHNldWRv
Q2xhc3NDaGVja2JveGVzLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUV2ZW50
TGlzdGVuZXJzOiBmdW5jdGlvbigpCisgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKQogICAgIHsK
ICAgICAgICAgdGhpcy5kb21Ob2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhp
cyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKQEAgLTE2MiwxNSArMTU2LDE1
IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5jc3NTdHlsZU1hbmFnZXIuY2FuRm9yY2VQc2V1
ZG9DbGFzc2VzKCkpCiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIHRoaXMu
ZG9tTm9kZSAmJiB0aGlzLmRvbU5vZGUuZW5hYmxlZFBzZXVkb0NsYXNzZXMubGVuZ3RoID8gMCA6
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuTm9Gb3JjZWRQc2V1ZG9D
bGFzc2VzU2Nyb2xsT2Zmc2V0OwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU5vRm9yY2Vk
UHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldDogZnVuY3Rpb24oKQorICAgIF91cGRhdGVOb0ZvcmNl
ZFBzZXVkb0NsYXNzZXNTY3JvbGxPZmZzZXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2Zv
cmNlZFBzZXVkb0NsYXNzQ29udGFpbmVyKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZvcmNlZFBzZXVkb0NsYXNzZXNTY3JvbGxPZmZzZXQg
PSB0aGlzLl9mb3JjZWRQc2V1ZG9DbGFzc0NvbnRhaW5lci5vZmZzZXRIZWlnaHQ7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX25hdmlnYXRpb25JdGVtU2VsZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChldmVudC50YXJnZXQuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSk7CiAgICAgICAgIGlm
ICghZXZlbnQudGFyZ2V0LnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0pCkBAIC0yMDgsMTcgKzIwMiwx
NyBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZFNlY3Rpb25TZXR0aW5n
LnZhbHVlID0gc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbS5pZGVudGlmaWVyOwotICAgIH0sCisgICAg
fQogCi0gICAgX2ZvcmNlZFBzZXVkb0NsYXNzQ2hlY2tib3hDaGFuZ2VkOiBmdW5jdGlvbihwc2V1
ZG9DbGFzcywgZXZlbnQpCisgICAgX2ZvcmNlZFBzZXVkb0NsYXNzQ2hlY2tib3hDaGFuZ2VkKHBz
ZXVkb0NsYXNzLCBldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5kb21Ob2RlKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuZG9tTm9kZS5zZXRQc2V1ZG9DbGFzc0Vu
YWJsZWQocHNldWRvQ2xhc3MsIGV2ZW50LnRhcmdldC5jaGVja2VkKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF91cGRhdGVQc2V1ZG9DbGFzc0NoZWNrYm94ZXM6IGZ1bmN0aW9uKCkKKyAgICBfdXBk
YXRlUHNldWRvQ2xhc3NDaGVja2JveGVzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5kb21O
b2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjMxLDMgKzIyNSw3IEBAIFdlYkluc3BlY3Rv
ci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAg
ICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Qc2V1
ZG9DbGFzc2VzRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInBzZXVkby1jbGFzc2VzIjsKK1dlYklu
c3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuUHNldWRvQ2xhc3Nlc0dyb3VwRWxl
bWVudFN0eWxlQ2xhc3NOYW1lID0gImdyb3VwIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURldGFp
bHNTaWRlYmFyUGFuZWwuTm9Gb3JjZWRQc2V1ZG9DbGFzc2VzU2Nyb2xsT2Zmc2V0ID0gMzg7IC8v
IERlZmF1bHQgaGVpZ2h0IG9mIHRoZSBmb3JjZWQgcHNldWRvIGNsYXNzZXMgY29udGFpbmVyLiBV
cGRhdGVkIGluIHdpZHRoRGlkQ2hhbmdlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5q
cwppbmRleCAxZmIwMzI5Li5jNDlhMjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVu
dC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsNTUgKzIzLDUwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oY2Fs
bEZyYW1lKQorV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50ID0gY2xhc3MgQ2FsbEZy
YW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7
Ci0gICAgY29uc29sZS5hc3NlcnQoY2FsbEZyYW1lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNh
bGxGcmFtZSk7CisgICAgY29uc3RydWN0b3IoY2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoY2FsbEZyYW1lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNhbGxGcmFtZSk7
CiAKLSAgICB2YXIgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50
LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lOwotICAgIGlmIChjYWxsRnJhbWUubmF0aXZlQ29k
ZSkKLSAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50
Lk5hdGl2ZUljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdmFyIGNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5GdW5jdGlvbkljb25TdHlsZUNsYXNzTmFtZTsK
KyAgICAgICAgaWYgKGNhbGxGcmFtZS5uYXRpdmVDb2RlKQorICAgICAgICAgICAgY2xhc3NOYW1l
ID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50Lk5hdGl2ZUljb25TdHlsZUNsYXNz
TmFtZTsKIAotICAgIC8vIFRoaXMgaXMgbW9yZSB0aGFuIGxpa2VseSBhbiBldmVudCBsaXN0ZW5l
ciBmdW5jdGlvbiB3aXRoIGFuICJvbiIgcHJlZml4IGFuZCBpdCBpcwotICAgIC8vIGFzIGxvbmcg
b3IgbG9uZ2VyIHRoYW4gdGhlIHNob3J0ZXN0IGV2ZW50IGxpc3RlbmVyIG5hbWUgLS0gIm9uY3V0
Ii4KLSAgICBpZiAoY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSAmJiBjYWxsRnJhbWUuZnVuY3Rpb25O
YW1lLnN0YXJ0c1dpdGgoIm9uIikgJiYgY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZS5sZW5ndGggPj0g
NSkKLSAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50
LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIC8vIFRoaXMgaXMgbW9y
ZSB0aGFuIGxpa2VseSBhbiBldmVudCBsaXN0ZW5lciBmdW5jdGlvbiB3aXRoIGFuICJvbiIgcHJl
Zml4IGFuZCBpdCBpcworICAgICAgICAvLyBhcyBsb25nIG9yIGxvbmdlciB0aGFuIHRoZSBzaG9y
dGVzdCBldmVudCBsaXN0ZW5lciBuYW1lIC0tICJvbmN1dCIuCisgICAgICAgIGlmIChjYWxsRnJh
bWUuZnVuY3Rpb25OYW1lICYmIGNhbGxGcmFtZS5mdW5jdGlvbk5hbWUuc3RhcnRzV2l0aCgib24i
KSAmJiBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lLmxlbmd0aCA+PSA1KQorICAgICAgICAgICAgY2xh
c3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkV2ZW50TGlzdGVuZXJJ
Y29uU3R5bGVDbGFzc05hbWU7CiAKLSAgICB2YXIgdGl0bGUgPSBjYWxsRnJhbWUuZnVuY3Rpb25O
YW1lIHx8IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKKyAg
ICAgICAgdmFyIHRpdGxlID0gY2FsbEZyYW1lLmZ1bmN0aW9uTmFtZSB8fCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIik7CiAKLSAgICBXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgY2xhc3NOYW1lLCB0aXRsZSwgbnVsbCwgY2FsbEZy
YW1lLCBmYWxzZSk7CisgICAgICAgIHN1cGVyKGNsYXNzTmFtZSwgdGl0bGUsIG51bGwsIGNhbGxG
cmFtZSwgZmFsc2UpOwogCi0gICAgaWYgKCFjYWxsRnJhbWUubmF0aXZlQ29kZSAmJiBjYWxsRnJh
bWUuc291cmNlQ29kZUxvY2F0aW9uKSB7Ci0gICAgICAgIHZhciBkaXNwbGF5U2NyaXB0VVJMID0g
Y2FsbEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZS51cmw7Ci0gICAg
ICAgIGlmIChkaXNwbGF5U2NyaXB0VVJMKSB7Ci0gICAgICAgICAgICB0aGlzLnN1YnRpdGxlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICAgICAgY2FsbEZyYW1lLnNv
dXJjZUNvZGVMb2NhdGlvbi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25TdHJpbmcodGhpcy5z
dWJ0aXRsZSwgInRleHRDb250ZW50Iik7Ci0gICAgICAgICAgICAvLyBTZXQgdGhlIHRvb2x0aXAg
b24gdGhlIGVudGlyZSB0cmVlIGVsZW1lbnQgaW4gb25hdHRhY2gsIG9uY2UgdGhlIGVsZW1lbnQg
aXMgY3JlYXRlZC4KLSAgICAgICAgICAgIHRoaXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0g
dHJ1ZTsKKyAgICAgICAgaWYgKCFjYWxsRnJhbWUubmF0aXZlQ29kZSAmJiBjYWxsRnJhbWUuc291
cmNlQ29kZUxvY2F0aW9uKSB7CisgICAgICAgICAgICB2YXIgZGlzcGxheVNjcmlwdFVSTCA9IGNh
bGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNvdXJjZUNvZGUudXJsOworICAgICAg
ICAgICAgaWYgKGRpc3BsYXlTY3JpcHRVUkwpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnN1YnRp
dGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICAgICAgICAgIGNh
bGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRpb24ucG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uU3Ry
aW5nKHRoaXMuc3VidGl0bGUsICJ0ZXh0Q29udGVudCIpOworICAgICAgICAgICAgICAgIC8vIFNl
dCB0aGUgdG9vbHRpcCBvbiB0aGUgZW50aXJlIHRyZWUgZWxlbWVudCBpbiBvbmF0dGFjaCwgb25j
ZSB0aGUgZWxlbWVudCBpcyBjcmVhdGVkLgorICAgICAgICAgICAgICAgIHRoaXMudG9vbHRpcEhh
bmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0K
IAotICAgIHRoaXMuX2NhbGxGcmFtZSA9IGNhbGxGcmFtZTsKLQotICAgIHRoaXMuc21hbGwgPSB0
cnVlOwotfTsKKyAgICAgICAgdGhpcy5fY2FsbEZyYW1lID0gY2FsbEZyYW1lOwogCi1XZWJJbnNw
ZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWUgPSAi
ZnVuY3Rpb24taWNvbiI7Ci1XZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRXZlbnRM
aXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZSA9ICJldmVudC1saXN0ZW5lci1pY29uIjsKLVdlYklu
c3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5OYXRpdmVJY29uU3R5bGVDbGFzc05hbWUgPSAi
bmF0aXZlLWljb24iOwotCi1XZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1l
bnQsCisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IGNhbGxGcmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY2FsbEZy
YW1lOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBvbmF0dGFjaDog
ZnVuY3Rpb24oKQorICAgIG9uYXR0YWNoKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoLmNhbGwodGhpcyk7CiAKQEAgLTg0
LDQgKzc5LDYgQEAgV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBl
OworV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkZ1bmN0aW9uSWNvblN0eWxlQ2xh
c3NOYW1lID0gImZ1bmN0aW9uLWljb24iOworV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVt
ZW50LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05hbWUgPSAiZXZlbnQtbGlzdGVuZXItaWNv
biI7CitXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuTmF0aXZlSWNvblN0eWxlQ2xh
c3NOYW1lID0gIm5hdGl2ZS1pY29uIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NsdXN0ZXJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NsdXN0ZXJDb250ZW50Vmlldy5qcwppbmRl
eCBhYzk4MzZhLi5jMDRjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9DbHVzdGVyQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2x1c3RlckNvbnRlbnRWaWV3LmpzCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywy
NSArMjMsMjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmpl
Y3QpCitXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3ID0gY2xhc3MgQ2x1c3RlckNvbnRl
bnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOwotCi0gICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5T
dHlsZUNsYXNzTmFtZSk7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAg
eworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCk7CiAKLSAgICB0aGlzLl9jb250ZW50
Vmlld0NvbnRhaW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIoKTsK
LSAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFu
Z2UsIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmVsZW1lbnQpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ2x1c3RlckNv
bnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKIAotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rp
b25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdTZWxlY3Rpb25QYXRo
Q29tcG9uZW50RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVu
dGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1N1cHBsZW1l
bnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2
ZW50Lk51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdOdW1i
ZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLkNs
dXN0ZXJDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJjbHVzdGVyIjsKKyAgICAgICAgdGhp
cy5fY29udGVudFZpZXdDb250YWluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29u
dGFpbmVyKCk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250
ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlz
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRWaWV3Q29u
dGFpbmVyLmVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmll
dywKKyAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hh
bmdlLCB0aGlzLl9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRDaGFuZ2UsIHRo
aXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmpl
Y3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2Jq
ZWN0c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5OdW1iZXJPZlNl
YXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3TnVtYmVyT2ZTZWFyY2hSZXN1
bHRzRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNDksMTAz
ICs0NiwxMDMgQEAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZp
ZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICByZXR1cm4gY3VycmVudENv
bnRlbnRWaWV3ID8gY3VycmVudENvbnRlbnRWaWV3Lm5hdmlnYXRpb25JdGVtcyA6IFtdOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGNvbnRlbnRWaWV3Q29udGFpbmVyKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lcjsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBzdXBwb3J0c1NwbGl0Q29udGVudEJyb3dzZXIoKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldykKICAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcu
c3VwcG9ydHNTcGxpdENvbnRlbnRCcm93c2VyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91
dCgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVu
dFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoY3VycmVudENv
bnRlbnRWaWV3KQogICAgICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LnVwZGF0ZUxheW91dCgp
OwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAg
ICAgewogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5zaG93bigpOwotICAgIH0s
CisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmhpZGRlbigpOwotICAgIH0sCisgICAg
fQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzKCk7CiAKICAg
ICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdl
LCB0aGlzLl9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRDaGFuZ2UsIHRoaXMp
OwogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmpl
Y3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2Jq
ZWN0c0RpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5y
ZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5OdW1iZXJP
ZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3TnVtYmVyT2ZTZWFyY2hS
ZXN1bHRzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbkdvQmFjazog
ZnVuY3Rpb24oKQorICAgIGNhbkdvQmFjaygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
Y29udGVudFZpZXdDb250YWluZXIuY2FuR29CYWNrKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBj
YW5Hb0ZvcndhcmQ6IGZ1bmN0aW9uKCkKKyAgICBjYW5Hb0ZvcndhcmQoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmNhbkdvRm9yd2FyZCgpOwotICAg
IH0sCisgICAgfQogCi0gICAgZ29CYWNrOiBmdW5jdGlvbigpCisgICAgZ29CYWNrKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmdvQmFjaygpOwotICAgIH0sCisg
ICAgfQogCi0gICAgZ29Gb3J3YXJkOiBmdW5jdGlvbigpCisgICAgZ29Gb3J3YXJkKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmdvRm9yd2FyZCgpOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3KQog
ICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdD
b250YWluZXIuY3VycmVudENvbnRlbnRWaWV3LnNlbGVjdGlvblBhdGhDb21wb25lbnRzOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0cygpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250
ZW50VmlldykKICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Nv
bnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50Vmlldy5zdXBwbGVtZW50YWxSZXByZXNl
bnRlZE9iamVjdHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFuZGxlQ29weUV2ZW50KCkK
ICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmll
d0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIHJldHVybiBjdXJyZW50Q29u
dGVudFZpZXcgJiYgdHlwZW9mIGN1cnJlbnRDb250ZW50Vmlldy5oYW5kbGVDb3B5RXZlbnQgPT09
ICJmdW5jdGlvbiIgPyBjdXJyZW50Q29udGVudFZpZXcuaGFuZGxlQ29weUV2ZW50LmJpbmQoY3Vy
cmVudENvbnRlbnRWaWV3KSA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9y
dHNTYXZlKCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9j
b250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIHJldHVybiBj
dXJyZW50Q29udGVudFZpZXcgJiYgY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2F2ZTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBzYXZlRGF0YSgpCiAgICAgewogICAgICAgICB2YXIgY3Vy
cmVudENvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRl
bnRWaWV3OwogICAgICAgICByZXR1cm4gY3VycmVudENvbnRlbnRWaWV3ICYmIGN1cnJlbnRDb250
ZW50Vmlldy5zYXZlRGF0YSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBv
cnRzU2VhcmNoKCkKICAgICB7CiAgICAgICAgIC8vIEFsd2F5cyByZXR1cm4gdHJ1ZSBzbyB3ZSBj
YW4gaW50ZXJjZXB0IHRoZSBzZWFyY2ggcXVlcnkgdG8gcmVzZW5kIGl0IHdoZW4gc3dpdGNoaW5n
IGNvbnRlbnQgdmlld3MuCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IG51bWJlck9mU2VhcmNoUmVzdWx0cygpCiAgICAgewpAQCAtMTUzLDcgKzE1MCw3IEBA
IFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2Vh
cmNoKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiBjdXJyZW50Q29u
dGVudFZpZXcubnVtYmVyT2ZTZWFyY2hSZXN1bHRzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGhhc1BlcmZvcm1lZFNlYXJjaCgpCiAgICAgewpAQCAtMTYxLDcgKzE1OCw3IEBAIFdlYkluc3Bl
Y3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWN1cnJl
bnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNoKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gY3VycmVudENvbnRlbnRWaWV3
Lmhhc1BlcmZvcm1lZFNlYXJjaDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhdXRvbWF0aWNh
bGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQocmV2ZWFsKQogICAgIHsKQEAgLTE2OSw5ICsxNjYs
OSBAQCBXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0
c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3
LmF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdCA9IHJldmVhbDsKLSAgICB9LAor
ICAgIH0KIAotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5KQorICAgIHBlcmZvcm1T
ZWFyY2gocXVlcnkpCiAgICAgewogICAgICAgICB0aGlzLl9zZWFyY2hRdWVyeSA9IHF1ZXJ5Owog
CkBAIC0xNzksOSArMTc2LDkgQEAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29u
dGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGN1
cnJlbnRDb250ZW50Vmlldy5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNlYXJjaENsZWFyZWQ6IGZ1bmN0aW9uKCkKKyAgICBzZWFyY2hDbGVhcmVkKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gbnVsbDsKIApAQCAtMTg5LDM1ICsxODYsMzUg
QEAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNT
ZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5z
ZWFyY2hDbGVhcmVkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWFyY2hRdWVyeVdpdGhTZWxl
Y3Rpb246IGZ1bmN0aW9uKCkKKyAgICBzZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb24oKQogICAgIHsK
ICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFp
bmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcg
fHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVy
biBudWxsOwogICAgICAgICByZXR1cm4gY3VycmVudENvbnRlbnRWaWV3LnNlYXJjaFF1ZXJ5V2l0
aFNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsUHJldmlvdXNTZWFyY2hS
ZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQorICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVz
dWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9
IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAg
aWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1Nl
YXJjaCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LnJl
dmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHJldmVhbE5leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQorICAgIHJl
dmVhbE5leHRTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpCiAgICAgewogICAgICAgICB2YXIgY3Vy
cmVudENvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRl
bnRWaWV3OwogICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRl
bnRWaWV3LnN1cHBvcnRzU2VhcmNoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjdXJy
ZW50Q29udGVudFZpZXcucmV2ZWFsTmV4dFNlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cyk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfY3VycmVudENvbnRlbnRWaWV3RGlk
Q2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdl
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2Nv
bnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKGN1cnJl
bnRDb250ZW50VmlldyAmJiBjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpIHsKQEAg
LTIzMCwyMyArMjI3LDIzIEBAIFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UpOwog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlKTsKICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50
Lk5hdmlnYXRpb25JdGVtc0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVu
dFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfY29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlKGV2ZW50KQogICAg
IHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5fY29udGVudFZpZXdDb250YWlu
ZXIuY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQu
U2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlOiBmdW5j
dGlvbihldmVudCkKKyAgICBfY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVj
dHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0
aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRD
aGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRWaWV3TnVtYmVyT2ZTZWFyY2hS
ZXN1bHRzRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudFZpZXdOdW1iZXJP
ZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQu
dGFyZ2V0ICE9PSB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNTQsNCArMjUxLDQgQEAgV2ViSW5zcGVjdG9yLkNs
dXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9y
LkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcuU3R5
bGVDbGFzc05hbWUgPSAiY2x1c3RlciI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yQWRkaXRpb25zLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcwpp
bmRleCAxOTA0NWI2Li5iMmJiMTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yQWRkaXRpb25zLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JBZGRpdGlvbnMuanMK
QEAgLTE4Miw3ICsxODIsNyBAQAogCiAgICAgZnVuY3Rpb24gZXh0ZW5kZWRDU1NUb2tlbihzdHJl
YW0sIHN0YXRlKQogICAgIHsKLSAgICAgICAgY29uc3QgaGV4Q29sb3JSZWdleCA9IC8jKD86WzAt
OWEtZkEtRl17Nn18WzAtOWEtZkEtRl17M30pXGIvZzsKKyAgICAgICAgdmFyIGhleENvbG9yUmVn
ZXggPSAvIyg/OlswLTlhLWZBLUZdezZ9fFswLTlhLWZBLUZdezN9KVxiL2c7CiAKICAgICAgICAg
aWYgKHN0YXRlLl91cmxUb2tlbml6ZSkgewogICAgICAgICAgICAgLy8gQ2FsbCB0aGUgbGluayB0
b2tlbml6ZXIgaW5zdGVhZC4KQEAgLTUwMyw3ICs1MDMsNyBAQAogICAgICAgICB2YXIgZW5kID0g
cmFuZ2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlID8gcmFuZ2UuZW5kTGluZSAr
IDEgOiB0aGlzLmxpbmVDb3VudCgpOwogCiAgICAgICAgIC8vIE1hdGNoZXMgcmdiYSgwLCAwLCAw
LCAwLjUpLCByZ2IoMCwgMCwgMCksIGhzbCgpLCBoc2xhKCksICNmZmYsICNmZmZmZmYsIHdoaXRl
Ci0gICAgICAgIGNvbnN0IGNvbG9yUmVnZXggPSAvKCg/OnJnYnxoc2wpYT9cKFteKV0rXCl8I1sw
LTlhLWZBLUZdezZ9fCNbMC05YS1mQS1GXXszfXxcYlx3K1xiKD8hWy0uXSkpL2c7CisgICAgICAg
IHZhciBjb2xvclJlZ2V4ID0gLygoPzpyZ2J8aHNsKWE/XChbXildK1wpfCNbMC05YS1mQS1GXXs2
fXwjWzAtOWEtZkEtRl17M318XGJcdytcYig/IVstLl0pKS9nOwogCiAgICAgICAgIGZvciAodmFy
IGxpbmVOdW1iZXIgPSBzdGFydDsgbGluZU51bWJlciA8IGVuZDsgKytsaW5lTnVtYmVyKSB7CiAg
ICAgICAgICAgICB2YXIgbGluZUNvbnRlbnQgPSB0aGlzLmdldExpbmUobGluZU51bWJlcik7CkBA
IC01NjgsNyArNTY4LDcgQEAKICAgICAgICAgdmFyIHN0YXJ0ID0gcmFuZ2UgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuVGV4dFJhbmdlID8gcmFuZ2Uuc3RhcnRMaW5lIDogMDsKICAgICAgICAgdmFy
IGVuZCA9IHJhbmdlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSA/IHJhbmdlLmVu
ZExpbmUgKyAxIDogdGhpcy5saW5lQ291bnQoKTsKIAotICAgICAgICBjb25zdCBncmFkaWVudFJl
Z2V4ID0gLyhyZXBlYXRpbmctKT8obGluZWFyfHJhZGlhbCktZ3JhZGllbnRccypcKFxzKi9nOwor
ICAgICAgICB2YXIgZ3JhZGllbnRSZWdleCA9IC8ocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWwp
LWdyYWRpZW50XHMqXChccyovZzsKIAogICAgICAgICBmb3IgKHZhciBsaW5lTnVtYmVyID0gc3Rh
cnQ7IGxpbmVOdW1iZXIgPCBlbmQ7ICsrbGluZU51bWJlcikgewogICAgICAgICAgICAgdmFyIGxp
bmVDb250ZW50ID0gdGhpcy5nZXRMaW5lKGxpbmVOdW1iZXIpOwpAQCAtNjUzLDIzICs2NTMsMjMg
QEAKIAogICAgIC8vIFJlZ2lzdGVyIHNvbWUgZXh0cmEgTUlNRS10eXBlcyBmb3IgQ29kZU1pcnJv
ci4gVGhlc2UgYXJlIGluIGFkZGl0aW9uIHRvIHRoZQogICAgIC8vIG9uZXMgQ29kZU1pcnJvciBh
bHJlYWR5IHJlZ2lzdGVycywgbGlrZSB0ZXh0L2h0bWwsIHRleHQvamF2YXNjcmlwdCwgZXRjLgot
ICAgIGNvbnN0IGV4dHJhWE1MVHlwZXMgPSBbInRleHQveG1sIiwgInRleHQveHNsIl07CisgICAg
dmFyIGV4dHJhWE1MVHlwZXMgPSBbInRleHQveG1sIiwgInRleHQveHNsIl07CiAgICAgZXh0cmFY
TUxUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgICAgQ29kZU1pcnJvci5kZWZp
bmVNSU1FKHR5cGUsICJ4bWwiKTsKICAgICB9KTsKIAotICAgIGNvbnN0IGV4dHJhSFRNTFR5cGVz
ID0gWyJhcHBsaWNhdGlvbi94aHRtbCt4bWwiLCAiaW1hZ2Uvc3ZnK3htbCJdOworICAgIHZhciBl
eHRyYUhUTUxUeXBlcyA9IFsiYXBwbGljYXRpb24veGh0bWwreG1sIiwgImltYWdlL3N2Zyt4bWwi
XTsKICAgICBleHRyYUhUTUxUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uKHR5cGUpIHsKICAgICAgICAg
Q29kZU1pcnJvci5kZWZpbmVNSU1FKHR5cGUsICJodG1sbWl4ZWQiKTsKICAgICB9KTsKIAotICAg
IGNvbnN0IGV4dHJhSmF2YVNjcmlwdFR5cGVzID0gWyJ0ZXh0L2VjbWFzY3JpcHQiLCAiYXBwbGlj
YXRpb24vamF2YXNjcmlwdCIsICJhcHBsaWNhdGlvbi9lY21hc2NyaXB0IiwgImFwcGxpY2F0aW9u
L3gtamF2YXNjcmlwdCIsCisgICAgdmFyIGV4dHJhSmF2YVNjcmlwdFR5cGVzID0gWyJ0ZXh0L2Vj
bWFzY3JpcHQiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIsICJhcHBsaWNhdGlvbi9lY21hc2Ny
aXB0IiwgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIsCiAgICAgICAgICJ0ZXh0L3gtamF2YXNj
cmlwdCIsICJ0ZXh0L2phdmFzY3JpcHQxLjEiLCAidGV4dC9qYXZhc2NyaXB0MS4yIiwgInRleHQv
amF2YXNjcmlwdDEuMyIsICJ0ZXh0L2pzY3JpcHQiLCAidGV4dC9saXZlc2NyaXB0Il07CiAgICAg
ZXh0cmFKYXZhU2NyaXB0VHlwZXMuZm9yRWFjaChmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgIENv
ZGVNaXJyb3IuZGVmaW5lTUlNRSh0eXBlLCAiamF2YXNjcmlwdCIpOwogICAgIH0pOwogCi0gICAg
Y29uc3QgZXh0cmFKU09OVHlwZXMgPSBbImFwcGxpY2F0aW9uL3gtanNvbiIsICJ0ZXh0L3gtanNv
biJdOworICAgIHZhciBleHRyYUpTT05UeXBlcyA9IFsiYXBwbGljYXRpb24veC1qc29uIiwgInRl
eHQveC1qc29uIl07CiAgICAgZXh0cmFKU09OVHlwZXMuZm9yRWFjaChmdW5jdGlvbih0eXBlKSB7
CiAgICAgICAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSh0eXBlLCB7bmFtZTogImphdmFzY3JpcHQi
LCBqc29uOiB0cnVlfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xvclBpY2tlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yUGlja2VyLmpzCmluZGV4IDNkMTA3OTAuLmY5
MTY1M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbG9yUGlja2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbG9yUGlja2VyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw1MCArMjMsNDMgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIgPSBm
dW5jdGlvbigpCitXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIgPSBjbGFzcyBDb2xvclBpY2tlciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlz
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAg
ICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9jb2xvcldo
ZWVsID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcldoZWVsKCk7Ci0gICAgdGhpcy5fY29sb3JXaGVl
bC5kZWxlZ2F0ZSA9IHRoaXM7Ci0gICAgdGhpcy5fY29sb3JXaGVlbC5kaW1lbnNpb24gPSAyMDA7
CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMu
X2JyaWdodG5lc3NTbGlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNsaWRlcigpOwotICAgIHRoaXMu
X2JyaWdodG5lc3NTbGlkZXIuZGVsZWdhdGUgPSB0aGlzOwotICAgIHRoaXMuX2JyaWdodG5lc3NT
bGlkZXIuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJicmlnaHRuZXNzIik7CisgICAgICAgIHRoaXMu
X2NvbG9yV2hlZWwgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwoKTsKKyAgICAgICAgdGhp
cy5fY29sb3JXaGVlbC5kZWxlZ2F0ZSA9IHRoaXM7CisgICAgICAgIHRoaXMuX2NvbG9yV2hlZWwu
ZGltZW5zaW9uID0gMjAwOwogCi0gICAgdGhpcy5fb3BhY2l0eVNsaWRlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2xpZGVyKCk7Ci0gICAgdGhpcy5fb3BhY2l0eVNsaWRlci5kZWxlZ2F0ZSA9IHRoaXM7
Ci0gICAgdGhpcy5fb3BhY2l0eVNsaWRlci5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm9wYWNpdHki
KTsKKyAgICAgICAgdGhpcy5fYnJpZ2h0bmVzc1NsaWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2xp
ZGVyKCk7CisgICAgICAgIHRoaXMuX2JyaWdodG5lc3NTbGlkZXIuZGVsZWdhdGUgPSB0aGlzOwor
ICAgICAgICB0aGlzLl9icmlnaHRuZXNzU2xpZGVyLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYnJp
Z2h0bmVzcyIpOwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImNvbG9yLXBpY2tlciI7Cisg
ICAgICAgIHRoaXMuX29wYWNpdHlTbGlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNsaWRlcigpOwor
ICAgICAgICB0aGlzLl9vcGFjaXR5U2xpZGVyLmRlbGVnYXRlID0gdGhpczsKKyAgICAgICAgdGhp
cy5fb3BhY2l0eVNsaWRlci5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm9wYWNpdHkiKTsKIAotICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29sb3JXaGVlbC5lbGVtZW50KTsKLSAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JyaWdodG5lc3NTbGlkZXIuZWxlbWVu
dCk7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vcGFjaXR5U2xpZGVyLmVs
ZW1lbnQpOworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImNvbG9yLXBpY2tlciI7
CiAKLSAgICB0aGlzLl9vcGFjaXR5ID0gMDsKLSAgICB0aGlzLl9vcGFjaXR5UGF0dGVybiA9ICJ1
cmwoSW1hZ2VzL0NoZWNrZXJzLnN2ZykiOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX2NvbG9yV2hlZWwuZWxlbWVudCk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fYnJpZ2h0bmVzc1NsaWRlci5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vcGFjaXR5U2xpZGVyLmVsZW1lbnQpOwogCi0gICAg
dGhpcy5fY29sb3IgPSAid2hpdGUiOwotfTsKKyAgICAgICAgdGhpcy5fb3BhY2l0eSA9IDA7Cisg
ICAgICAgIHRoaXMuX29wYWNpdHlQYXR0ZXJuID0gInVybChJbWFnZXMvQ2hlY2tlcnMuc3ZnKSI7
CiAKLVdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5FdmVudCA9IHsKLSAgICBDb2xvckNoYW5nZWQ6
ICJjc3MtY29sb3ItcGlja2VyLWNvbG9yLWNoYW5nZWQiCi19OwotCi1XZWJJbnNwZWN0b3IuQ29s
b3JQaWNrZXIucHJvdG90eXBlID0gewotICAgIGNvbnRydWN0b3I6IFdlYkluc3BlY3Rvci5Db2xv
clBpY2tlciwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAor
ICAgICAgICB0aGlzLl9jb2xvciA9ICJ3aGl0ZSI7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAK
ICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCBicmlnaHRuZXNzKGJyaWdodG5lc3MpCiAgICAgewpA
QCAtNzcsNyArNzAsNyBAQCBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIucHJvdG90eXBlID0gewog
CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbG9yKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRl
cnModGhpcy5fY29sb3JXaGVlbC5yYXdDb2xvciwgdGhpcy5fY29sb3JXaGVlbC50aW50ZWRDb2xv
cik7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgb3BhY2l0eShvcGFjaXR5KQogICAgIHsKQEAg
LTg2LDE3ICs3OSwxNyBAQCBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIucHJvdG90eXBlID0gewog
CiAgICAgICAgIHRoaXMuX29wYWNpdHkgPSBvcGFjaXR5OwogICAgICAgICB0aGlzLl91cGRhdGVD
b2xvcigpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbG9yV2hlZWwoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yV2hlZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
Y29sb3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGNvbG9yKGNvbG9yKQogICAgIHsKQEAgLTExMSwyNSArMTA0LDI1IEBAIFdl
Ykluc3BlY3Rvci5Db2xvclBpY2tlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZVNsaWRlcnModGhpcy5fY29sb3JXaGVlbC5yYXdDb2xvciwgY29sb3IpOwogCiAgICAgICAgIGRl
bGV0ZSB0aGlzLl9kb250VXBkYXRlQ29sb3I7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb2xvcldo
ZWVsQ29sb3JEaWRDaGFuZ2U6IGZ1bmN0aW9uKGNvbG9yV2hlZWwpCisgICAgY29sb3JXaGVlbENv
bG9yRGlkQ2hhbmdlKGNvbG9yV2hlZWwpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVDb2xv
cigpOwogICAgICAgICB0aGlzLl91cGRhdGVTbGlkZXJzKHRoaXMuX2NvbG9yV2hlZWwucmF3Q29s
b3IsIHRoaXMuX2NvbG9yV2hlZWwudGludGVkQ29sb3IpOwotICAgIH0sCisgICAgfQogCi0gICAg
c2xpZGVyVmFsdWVEaWRDaGFuZ2U6IGZ1bmN0aW9uKHNsaWRlciwgdmFsdWUpCisgICAgc2xpZGVy
VmFsdWVEaWRDaGFuZ2Uoc2xpZGVyLCB2YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChzbGlkZXIg
PT09IHRoaXMuX29wYWNpdHlTbGlkZXIpCiAgICAgICAgICAgICB0aGlzLm9wYWNpdHkgPSB2YWx1
ZTsKICAgICAgICAgZWxzZSBpZiAoc2xpZGVyID09PSB0aGlzLl9icmlnaHRuZXNzU2xpZGVyKQog
ICAgICAgICAgICAgdGhpcy5icmlnaHRuZXNzID0gdmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRlQ29sb3I6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRl
Q29sb3IoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RvbnRVcGRhdGVDb2xvcikKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTE0NCw5ICsxMzcsOSBAQCBXZWJJbnNwZWN0b3IuQ29sb3JQaWNr
ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2NvbG9yID0gbmV3IFdlYkluc3BlY3Rv
ci5Db2xvcih0aGlzLl9jb2xvckZvcm1hdCwgY29tcG9uZW50cyk7CiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5FdmVudC5Db2xv
ckNoYW5nZWQsIHtjb2xvcjogdGhpcy5fY29sb3J9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91
cGRhdGVTbGlkZXJzOiBmdW5jdGlvbihyYXdDb2xvciwgdGludGVkQ29sb3IpCisgICAgX3VwZGF0
ZVNsaWRlcnMocmF3Q29sb3IsIHRpbnRlZENvbG9yKQogICAgIHsKICAgICAgICAgdmFyIHJnYiA9
IHRoaXMuX2NvbG9yV2hlZWwudGludGVkQ29sb3IucmdiOwogICAgICAgICB2YXIgb3BhcXVlID0g
bmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQkEsIHJn
Yi5jb25jYXQoMSkpLnRvU3RyaW5nKCk7CkBAIC0xNTYsMyArMTQ5LDcgQEAgV2ViSW5zcGVjdG9y
LkNvbG9yUGlja2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fYnJpZ2h0bmVzc1NsaWRl
ci5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICJsaW5lYXItZ3JhZGllbnQoOTBkZWcs
IGJsYWNrLCAiICsgcmF3Q29sb3IgKyAiKSI7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNv
bG9yUGlja2VyLkV2ZW50ID0geworICAgIENvbG9yQ2hhbmdlZDogImNzcy1jb2xvci1waWNrZXIt
Y29sb3ItY2hhbmdlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db2xvcldoZWVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JXaGVlbC5qcwppbmRleCAwYTU3YTI5Li45MGY5MDcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xv
cldoZWVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbG9yV2hlZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDMwICsyMywyNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db2xvcldoZWVsID0gZnVuY3Rpb24oKQor
V2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwgPSBjbGFzcyBDb2xvcldoZWVsIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX3Jhd0NhbnZhcyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIHRoaXMuX3RpbnRlZENhbnZhcyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwotICAgIHRoaXMuX2ZpbmFsQ2FudmFzID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX2Nyb3NzaGFpciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2Nyb3NzaGFpci5jbGFzc05hbWUgPSAiY3Jvc3No
YWlyIjsKKyAgICAgICAgdGhpcy5fcmF3Q2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
Y2FudmFzIik7CisgICAgICAgIHRoaXMuX3RpbnRlZENhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImNhbnZhcyIpOworICAgICAgICB0aGlzLl9maW5hbENhbnZhcyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImNvbG9y
LXdoZWVsIjsKKyAgICAgICAgdGhpcy5fY3Jvc3NoYWlyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2Nyb3NzaGFpci5jbGFzc05hbWUgPSAiY3Jvc3NoYWly
IjsKIAotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmluYWxDYW52YXMpOwot
ICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY3Jvc3NoYWlyKTsKKyAgICAgICAg
dGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJjb2xvci13aGVlbCI7CiAKLSAgICB0aGlzLl9maW5h
bENhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzKTsKLX07CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmluYWxDYW52YXMpOworICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Nyb3NzaGFpcik7CiAKLVdlYkluc3BlY3Rv
ci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsKLSAgICBjb250cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
Q29sb3JXaGVlbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBl
LAorICAgICAgICB0aGlzLl9maW5hbENhbnZhcy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24i
LCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNjUsMjMgKzYyLDIzIEBAIFdl
Ykluc3BlY3Rvci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9kcmF3
UmF3Q2FudmFzKCk7CiAgICAgICAgIHRoaXMuX2RyYXcoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGJyaWdodG5lc3MoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2JyaWdodG5lc3M7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgYnJpZ2h0bmVzcyhi
cmlnaHRuZXNzKQogICAgIHsKICAgICAgICAgdGhpcy5fYnJpZ2h0bmVzcyA9IGJyaWdodG5lc3M7
CiAgICAgICAgIHRoaXMuX2RyYXcoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0aW50ZWRD
b2xvcigpCiAgICAgewpAQCAtODksMTQgKzg2LDE0IEBAIFdlYkluc3BlY3Rvci5Db2xvcldoZWVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb2xvckF0UG9pbnRXaXRo
QnJpZ2h0bmVzcyh0aGlzLl9jcm9zc2hhaXJQb3NpdGlvbi54ICogd2luZG93LmRldmljZVBpeGVs
UmF0aW8sIHRoaXMuX2Nyb3NzaGFpclBvc2l0aW9uLnkgKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRp
bywgdGhpcy5fYnJpZ2h0bmVzcyk7CiAKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
Q29sb3IoV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0JBLCBbMCwgMCwgMCwgMF0pOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IHRpbnRlZENvbG9yKHRpbnRlZENvbG9yKQogICAgIHsKICAg
ICAgICAgdmFyIGRhdGEgPSB0aGlzLl90aW50ZWRDb2xvclRvUG9pbnRBbmRCcmlnaHRuZXNzKHRp
bnRlZENvbG9yKTsKICAgICAgICAgdGhpcy5fc2V0Q3Jvc3NoYWlyUG9zaXRpb24oZGF0YS5wb2lu
dCk7CiAgICAgICAgIHRoaXMuYnJpZ2h0bmVzcyA9IGRhdGEuYnJpZ2h0bmVzczsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCByYXdDb2xvcigpCiAgICAgewpAQCAtMTA0LDExICsxMDEsMTEgQEAg
V2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbG9yQXRQb2ludFdpdGhCcmlnaHRuZXNzKHRoaXMuX2Nyb3NzaGFpclBvc2l0aW9u
LnggKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbywgdGhpcy5fY3Jvc3NoYWlyUG9zaXRpb24ueSAq
IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLCAxKTsKIAogICAgICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQkEsIFswLCAwLCAwLCAw
XSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGhhbmRsZUV2ZW50
OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVFdmVudChldmVudCkKICAgICB7CiAgICAgICAg
IHN3aXRjaCAoZXZlbnQudHlwZSkgewogICAgICAgICBjYXNlICJtb3VzZWRvd24iOgpAQCAtMTIx
LDMwICsxMTgsMzAgQEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5faGFuZGxlTW91c2V1cChldmVudCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2hhbmRs
ZU1vdXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlZG93bihldmVudCkK
ICAgICB7CiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlz
LCB0cnVlKTsKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlz
LCB0cnVlKTsKIAogICAgICAgICB0aGlzLl91cGRhdGVDb2xvckZvck1vdXNlRXZlbnQoZXZlbnQp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZU1vdXNlbW92ZTogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2hhbmRsZU1vdXNlbW92ZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZUNvbG9yRm9yTW91c2VFdmVudChldmVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxl
TW91c2V1cDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNldXAoZXZlbnQpCiAgICAg
ewogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcywg
dHJ1ZSk7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhp
cywgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9pbnRJbkNpcmNsZUZvckV2ZW50OiBm
dW5jdGlvbihldmVudCkKKyAgICBfcG9pbnRJbkNpcmNsZUZvckV2ZW50KGV2ZW50KQogICAgIHsK
ICAgICAgICAgZnVuY3Rpb24gZGlzdGFuY2UoYSwgYikKICAgICAgICAgewpAQCAtMTY5LDkgKzE2
Niw5IEBAIFdlYkluc3BlY3Rvci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHBvaW50ID0gcG9pbnRPbkNpcmN1bWZlcmVuY2UoY2VudGVyLCB0aGlzLl9yYWRpdXMsIGFuZ2xl
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcG9pbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfdXBkYXRlQ29sb3JGb3JNb3VzZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfdXBkYXRl
Q29sb3JGb3JNb3VzZUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHBvaW50ID0gdGhp
cy5fcG9pbnRJbkNpcmNsZUZvckV2ZW50KGV2ZW50KTsKIApAQCAtMTc5LDE1ICsxNzYsMTUgQEAg
V2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlz
LmRlbGVnYXRlICYmIHR5cGVvZiB0aGlzLmRlbGVnYXRlLmNvbG9yV2hlZWxDb2xvckRpZENoYW5n
ZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUuY29sb3JXaGVlbENv
bG9yRGlkQ2hhbmdlKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NldENyb3NzaGFpclBv
c2l0aW9uOiBmdW5jdGlvbihwb2ludCkKKyAgICBfc2V0Q3Jvc3NoYWlyUG9zaXRpb24ocG9pbnQp
CiAgICAgewogICAgICAgICB0aGlzLl9jcm9zc2hhaXJQb3NpdGlvbiA9IHBvaW50OwogICAgICAg
ICB0aGlzLl9jcm9zc2hhaXIuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gInRyYW5zbGF0ZSgiICsg
TWF0aC5yb3VuZChwb2ludC54KSArICJweCwgIiArIE1hdGgucm91bmQocG9pbnQueSkgKyAicHgp
IjsKLSAgICB9LAorICAgIH0KIAotICAgIF90aW50ZWRDb2xvclRvUG9pbnRBbmRCcmlnaHRuZXNz
OiBmdW5jdGlvbihjb2xvcikKKyAgICBfdGludGVkQ29sb3JUb1BvaW50QW5kQnJpZ2h0bmVzcyhj
b2xvcikKICAgICB7CiAgICAgICAgIHZhciByZ2IgPSBjb2xvci5yZ2I7CiAgICAgICAgIHZhciBo
c3YgPSBXZWJJbnNwZWN0b3IuQ29sb3IucmdiMmhzdihyZ2JbMF0sIHJnYlsxXSwgcmdiWzJdKTsK
QEAgLTIwMCw5ICsxOTcsOSBAQCBXZWJJbnNwZWN0b3IuQ29sb3JXaGVlbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBwb2ludDogbmV3IFdlYkluc3BlY3Rvci5Qb2ludCh4LCB5KSwKICAgICAg
ICAgICAgIGJyaWdodG5lc3M6IGhzdlsyXQogICAgICAgICB9OwotICAgIH0sCisgICAgfQogCi0g
ICAgX2RyYXdSYXdDYW52YXM6IGZ1bmN0aW9uKCkgeworICAgIF9kcmF3UmF3Q2FudmFzKCkgewog
ICAgICAgICB2YXIgY3R4ID0gdGhpcy5fcmF3Q2FudmFzLmdldENvbnRleHQoIjJkIik7CiAKICAg
ICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuX2RpbWVuc2lvbiAqIHdpbmRvdy5kZXZpY2VQaXhl
bFJhdGlvOwpAQCAtMjI1LDkgKzIyMiw5IEBAIFdlYkluc3BlY3Rvci5Db2xvcldoZWVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBjdHgucHV0SW1hZ2VE
YXRhKGltYWdlRGF0YSwgMCwgMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29sb3JBdFBvaW50
V2l0aEJyaWdodG5lc3M6IGZ1bmN0aW9uKHgsIHksIGJyaWdodG5lc3MpCisgICAgX2NvbG9yQXRQ
b2ludFdpdGhCcmlnaHRuZXNzKHgsIHksIGJyaWdodG5lc3MpCiAgICAgewogICAgICAgICB2YXIg
Y2VudGVyID0gdGhpcy5fZGltZW5zaW9uIC8gMiAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvOwog
ICAgICAgICB2YXIgeERpcyA9IHggLSBjZW50ZXI7CkBAIC0yNDksOSArMjQ2LDkgQEAgV2ViSW5z
cGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgTWF0aC5yb3VuZChy
Z2JbMl0gKiAyNTUpLAogICAgICAgICAgICAgMQogICAgICAgICBdKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9kcmF3VGludGVkQ2FudmFzOiBmdW5jdGlvbigpCisgICAgX2RyYXdUaW50ZWRDYW52
YXMoKQogICAgIHsKICAgICAgICAgdmFyIGN0eCA9IHRoaXMuX3RpbnRlZENhbnZhcy5nZXRDb250
ZXh0KCIyZCIpOwogICAgICAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5fZGltZW5zaW9uICogd2lu
ZG93LmRldmljZVBpeGVsUmF0aW87CkBAIC0yNjQsOSArMjYxLDkgQEAgV2ViSW5zcGVjdG9yLkNv
bG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIGRp
bWVuc2lvbiwgZGltZW5zaW9uKTsKICAgICAgICAgfQogICAgICAgICBjdHgucmVzdG9yZSgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2RyYXc6IGZ1bmN0aW9uKCkKKyAgICBfZHJhdygpCiAgICAg
ewogICAgICAgICB0aGlzLl9kcmF3VGludGVkQ2FudmFzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9u
c1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21w
bGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCmluZGV4IGU1YmUzNWQuLjJkNzBiZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRpb25T
dWdnZXN0aW9uc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNTAgKzIzLDQzIEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNv
bXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBmdW5jdGlvbihkZWxlZ2F0ZSkKK1dlYkluc3BlY3Rv
ci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29tcGxldGlvblN1Z2dlc3Rpb25z
VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVy
dCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIo
KS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9k
ZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7Ci0KLSAgICB0aGlzLl9zZWxlY3RlZEluZGV4ID0g
TmFOOworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
IAotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2Vz
dGlvbnNWaWV3LlN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVn
YXRlIHx8IG51bGw7CiAKLSAgICB0aGlzLl9jb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5Db250YWluZXJFbGVtZW50
U3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd24uYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5f
Y29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcy5fbW91c2VV
cC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5faXRlbUNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50KTsKLX07CisgICAgICAgIHRo
aXMuX3NlbGVjdGVkSW5kZXggPSBOYU47CiAKLVdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2Vz
dGlvbnNWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImNvbXBsZXRpb24tc3VnZ2VzdGlvbnMiOwotV2Vi
SW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuQ29udGFpbmVyRWxlbWVudFN0eWxl
Q2xhc3NOYW1lID0gImNvbXBsZXRpb24tc3VnZ2VzdGlvbnMtY29udGFpbmVyIjsKLVdlYkluc3Bl
Y3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3Lkl0ZW1FbGVtZW50U3R5bGVDbGFzc05hbWUg
PSAiaXRlbSI7Ci1XZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5TZWxlY3Rl
ZEl0ZW1TdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3RlZCI7CisgICAgICAgIHRoaXMuX2VsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5TdHlsZUNs
YXNzTmFtZTsKIAotV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rp
b25zVmlldywKKyAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsYXNzTmFt
ZSA9IFdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LkNvbnRhaW5lckVsZW1l
bnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAg
ICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRo
aXMuX21vdXNlVXAuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9pdGVtQ2xpY2tlZC5iaW5kKHRoaXMpKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50
KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBkZWxlZ2F0ZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
dmlzaWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9lbGVtZW50LnBhcmVudE5v
ZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0ZWRJbmRleCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleDsKLSAgICB9LAorICAgIH0KIAogICAgIHNl
dCBzZWxlY3RlZEluZGV4KGluZGV4KQogICAgIHsKQEAgLTgyLDkgKzc1LDkgQEAgV2ViSW5zcGVj
dG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHNl
bGVjdGVkSXRlbUVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1
Z2dlc3Rpb25zVmlldy5TZWxlY3RlZEl0ZW1TdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIHNlbGVj
dGVkSXRlbUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBzZWxlY3ROZXh0OiBmdW5jdGlvbigpCisgICAgc2VsZWN0TmV4dCgpCiAgICAg
ewogICAgICAgICB2YXIgY291bnQgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNoaWxkcmVuLmxl
bmd0aDsKIApAQCAtOTYsOSArODksOSBAQCBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rp
b25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBzZWxlY3RlZEl0ZW1FbGVtZW50ID0g
dGhpcy5fc2VsZWN0ZWRJdGVtRWxlbWVudDsKICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUVsZW1l
bnQgJiYgdGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25T
dWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbiA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAg
IHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbih0
aGlzLCBzZWxlY3RlZEl0ZW1FbGVtZW50LnRleHRDb250ZW50KTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNlbGVjdFByZXZpb3VzOiBmdW5jdGlvbigpCisgICAgc2VsZWN0UHJldmlvdXMoKQogICAg
IHsKICAgICAgICAgaWYgKGlzTmFOKHRoaXMuX3NlbGVjdGVkSW5kZXgpIHx8IHRoaXMuX3NlbGVj
dGVkSW5kZXggPT09IDApCiAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLl9j
b250YWluZXJFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDE7CkBAIC0xMDgsMTQgKzEwMSwxNCBA
QCBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHZhciBzZWxlY3RlZEl0ZW1FbGVtZW50ID0gdGhpcy5fc2VsZWN0ZWRJdGVtRWxlbWVu
dDsKICAgICAgICAgaWYgKHNlbGVjdGVkSXRlbUVsZW1lbnQgJiYgdGhpcy5fZGVsZWdhdGUgJiYg
dHlwZW9mIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRpb25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxl
dGlvbiA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmNvbXBsZXRp
b25TdWdnZXN0aW9uc1NlbGVjdGVkQ29tcGxldGlvbih0aGlzLCBzZWxlY3RlZEl0ZW1FbGVtZW50
LnRleHRDb250ZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGlzSGFuZGxpbmdDbGlja0V2ZW50
OiBmdW5jdGlvbigpCisgICAgaXNIYW5kbGluZ0NsaWNrRXZlbnQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX21vdXNlSXNEb3duOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvdzogZnVu
Y3Rpb24oYW5jaG9yQm91bmRzKQorICAgIHNob3coYW5jaG9yQm91bmRzKQogICAgIHsKICAgICAg
ICAgLy8gTWVhc3VyZSB0aGUgY29udGFpbmVyIHNvIHdlIGNhbiBrbm93IHRoZSBpbnRyaW5zaWMg
c2l6ZSBvZiB0aGUgaXRlbXMuCiAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuc3R5bGUu
cG9zaXRpb24gPSAiYWJzb2x1dGUiOwpAQCAtMTI4LDkgKzEyMSw5IEBAIFdlYkluc3BlY3Rvci5D
b21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50KTsKIAogICAgICAgICAvLyBM
YXkgb3V0IHRoZSBzdWdnZXN0LWJveCByZWxhdGl2ZSB0byB0aGUgYW5jaG9yQm91bmRzLgotICAg
ICAgICBjb25zdCBtYXJnaW4gPSAxMDsKLSAgICAgICAgY29uc3QgaG9yaXpvbnRhbFBhZGRpbmcg
PSAyMjsKLSAgICAgICAgY29uc3QgYWJzb2x1dGVNYXhpbXVtSGVpZ2h0ID0gMTYwOworICAgICAg
ICB2YXIgbWFyZ2luID0gMTA7CisgICAgICAgIHZhciBob3Jpem9udGFsUGFkZGluZyA9IDIyOwor
ICAgICAgICB2YXIgYWJzb2x1dGVNYXhpbXVtSGVpZ2h0ID0gMTYwOwogCiAgICAgICAgIHZhciB4
ID0gYW5jaG9yQm91bmRzLm9yaWdpbi54OwogICAgICAgICB2YXIgeSA9IGFuY2hvckJvdW5kcy5v
cmlnaW4ueSArIGFuY2hvckJvdW5kcy5zaXplLmhlaWdodDsKQEAgLTE2MSwxNCArMTU0LDE0IEBA
IFdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAicHgiOwogCiAgICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBoaWRlOiBmdW5jdGlvbigpCisgICAgaGlkZSgpCiAgICAgewogICAgICAgICB0
aGlzLl9lbGVtZW50LnJlbW92ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlOiBmdW5j
dGlvbihjb21wbGV0aW9ucywgc2VsZWN0ZWRJbmRleCkKKyAgICB1cGRhdGUoY29tcGxldGlvbnMs
IHNlbGVjdGVkSW5kZXgpCiAgICAgewogICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LnJl
bW92ZUNoaWxkcmVuKCk7CiAKQEAgLTE4Myw3ICsxNzYsNyBAQCBXZWJJbnNwZWN0b3IuQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgaXRlbUVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmll
dy5TZWxlY3RlZEl0ZW1TdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgICAgICB0aGlzLl9jb250YWlu
ZXJFbGVtZW50LmFwcGVuZENoaWxkKGl0ZW1FbGVtZW50KTsKICAgICAgICAgfQotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC0xOTUsMjMgKzE4OCwyMyBAQCBXZWJJbnNwZWN0
b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBl
bGVtZW50ID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5jaGlsZHJlblt0aGlzLl9zZWxlY3RlZElu
ZGV4XSB8fCBudWxsOwogICAgICAgICBjb25zb2xlLmFzc2VydChlbGVtZW50KTsKICAgICAgICAg
cmV0dXJuIGVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2VEb3duOiBmdW5jdGlv
bihldmVudCkKKyAgICBfbW91c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50
LmJ1dHRvbiAhPT0gMCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fbW91c2VJ
c0Rvd24gPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlVXA6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9tb3VzZVVwKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRv
biAhPT0gMCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fbW91c2VJc0Rvd24g
PSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pdGVtQ2xpY2tlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2l0ZW1DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmJ1
dHRvbiAhPT0gMCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIyNiw0ICsyMTksNyBAQCBXZWJJ
bnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgfQog
fTsKIAotV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNv
bXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuU3R5bGVDbGFzc05hbWUgPSAiY29tcGxldGlvbi1zdWdn
ZXN0aW9ucyI7CitXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5Db250YWlu
ZXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiY29tcGxldGlvbi1zdWdnZXN0aW9ucy1jb250YWlu
ZXIiOworV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuSXRlbUVsZW1lbnRT
dHlsZUNsYXNzTmFtZSA9ICJpdGVtIjsKK1dlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlv
bnNWaWV3LlNlbGVjdGVkSXRlbVN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdGVkIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5
bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpzCmluZGV4IDlhNTYyNmYuLmUxMDYxODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsODIgKzIz
LDc5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0
b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIENvbXB1dGVkU3R5bGVEZXRhaWxz
UGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQ29tcHV0
ZWRTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDb21wdXRlZCIpKTsKLQotICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93
QWxsU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiY29tcHV0ZWQtc3R5bGUtc2hv
dy1hbGwiLCBmYWxzZSk7Ci0KLSAgICB2YXIgY29tcHV0ZWRTdHlsZVNob3dBbGxMYWJlbCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7Ci0gICAgY29tcHV0ZWRTdHlsZVNob3dBbGxM
YWJlbC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBBbGwiKTsKKyAg
ICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3IuQ29tcHV0
ZWRTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJDb21wdXRlZCIpKTsKIAotICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93
QWxsQ2hlY2tib3ggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOwotICAgIHRoaXMu
X2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2tib3gudHlwZSA9ICJjaGVja2JveCI7Ci0gICAgdGhp
cy5fY29tcHV0ZWRTdHlsZVNob3dBbGxDaGVja2JveC5jaGVja2VkID0gdGhpcy5fY29tcHV0ZWRT
dHlsZVNob3dBbGxTZXR0aW5nLnZhbHVlOwotICAgIHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxs
Q2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fY29tcHV0ZWRTdHlsZVNo
b3dBbGxDaGVja2JveFZhbHVlQ2hhbmdlZC5iaW5kKHRoaXMpKTsKLSAgICBjb21wdXRlZFN0eWxl
U2hvd0FsbExhYmVsLmFwcGVuZENoaWxkKHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2ti
b3gpOworICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlU2hvd0FsbFNldHRpbmcgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNldHRpbmcoImNvbXB1dGVkLXN0eWxlLXNob3ctYWxsIiwgZmFsc2UpOwogCi0g
ICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb25UZXh0RWRpdG9yKHRoaXMpOwotICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRp
dG9yLnNob3dzSW1wbGljaXRQcm9wZXJ0aWVzID0gdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxT
ZXR0aW5nLnZhbHVlOwotICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLmFsd2F5c1Nob3dQ
cm9wZXJ0eU5hbWVzID0gWyJkaXNwbGF5IiwgIndpZHRoIiwgImhlaWdodCJdOwotICAgIHRoaXMu
X3Byb3BlcnRpZXNUZXh0RWRpdG9yLnNvcnRQcm9wZXJ0aWVzID0gdHJ1ZTsKKyAgICAgICAgdmFy
IGNvbXB1dGVkU3R5bGVTaG93QWxsTGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJl
bCIpOworICAgICAgICBjb21wdXRlZFN0eWxlU2hvd0FsbExhYmVsLnRleHRDb250ZW50ID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IEFsbCIpOwogCi0gICAgdmFyIHByb3BlcnRpZXNSb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OwotICAgIHZhciBwcm9wZXJ0aWVz
R3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3Byb3BlcnRpZXNS
b3ddKTsKLSAgICB2YXIgcHJvcGVydGllc1NlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uKCJjb21wdXRlZC1zdHlsZS1wcm9wZXJ0aWVzIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJQcm9wZXJ0aWVzIiksIFtwcm9wZXJ0aWVzR3JvdXBdLCBjb21wdXRlZFN0eWxlU2hvd0Fs
bExhYmVsKTsKKyAgICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxDaGVja2JveCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CisgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5
bGVTaG93QWxsQ2hlY2tib3gudHlwZSA9ICJjaGVja2JveCI7CisgICAgICAgIHRoaXMuX2NvbXB1
dGVkU3R5bGVTaG93QWxsQ2hlY2tib3guY2hlY2tlZCA9IHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93
QWxsU2V0dGluZy52YWx1ZTsKKyAgICAgICAgdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxDaGVj
a2JveC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9jb21wdXRlZFN0eWxlU2hvd0Fs
bENoZWNrYm94VmFsdWVDaGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICBjb21wdXRlZFN0eWxl
U2hvd0FsbExhYmVsLmFwcGVuZENoaWxkKHRoaXMuX2NvbXB1dGVkU3R5bGVTaG93QWxsQ2hlY2ti
b3gpOwogCi0gICAgcHJvcGVydGllc1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Byb3Bl
cnRpZXNUZXh0RWRpdG9yLmVsZW1lbnQpOworICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVk
aXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IodGhp
cyk7CisgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnNob3dzSW1wbGljaXRQcm9w
ZXJ0aWVzID0gdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxTZXR0aW5nLnZhbHVlOworICAgICAg
ICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5hbHdheXNTaG93UHJvcGVydHlOYW1lcyA9IFsi
ZGlzcGxheSIsICJ3aWR0aCIsICJoZWlnaHQiXTsKKyAgICAgICAgdGhpcy5fcHJvcGVydGllc1Rl
eHRFZGl0b3Iuc29ydFByb3BlcnRpZXMgPSB0cnVlOwogCi0gICAgLy8gUmVnaW9uIGZsb3cgbmFt
ZSBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlICJmbG93LWZyb20iIHByb3BlcnR5IG9mIHRoZSBSZWdp
b24gQ29udGFpbmVycy4KLSAgICB0aGlzLl9yZWdpb25GbG93RnJhZ21lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgdGhpcy5fcmVnaW9uRmxvd0ZyYWdtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKS5jbGFzc05hbWUgPSAiaWNvbiI7
Ci0gICAgdGhpcy5fcmVnaW9uRmxvd05hbWVMYWJlbFZhbHVlID0gdGhpcy5fcmVnaW9uRmxvd0Zy
YWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CisgICAg
ICAgIHZhciBwcm9wZXJ0aWVzUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJv
dzsKKyAgICAgICAgdmFyIHByb3BlcnRpZXNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Hcm91cChbcHJvcGVydGllc1Jvd10pOworICAgICAgICB2YXIgcHJvcGVydGllc1Nl
Y3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJjb21wdXRlZC1zdHlsZS1w
cm9wZXJ0aWVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9wZXJ0aWVzIiksIFtwcm9wZXJ0
aWVzR3JvdXBdLCBjb21wdXRlZFN0eWxlU2hvd0FsbExhYmVsKTsKIAotICAgIHZhciBnb1RvUmVn
aW9uRmxvd0J1dHRvbiA9IHRoaXMuX3JlZ2lvbkZsb3dGcmFnbWVudC5hcHBlbmRDaGlsZChXZWJJ
bnNwZWN0b3IuY3JlYXRlR29Ub0Fycm93QnV0dG9uKCkpOwotICAgIGdvVG9SZWdpb25GbG93QnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZ29Ub1JlZ2lvbkZsb3dBcnJvd1dh
c0NsaWNrZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHByb3BlcnRpZXNSb3cuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5lbGVtZW50KTsKIAotICAgIHRoaXMu
X3JlZ2lvbkZsb3dOYW1lUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBs
ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZ2lvbiBGbG93IikpOwotICAgIHRoaXMuX3Jl
Z2lvbkZsb3dOYW1lUm93LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC1mbG93LWxpbmsi
KTsKKyAgICAgICAgLy8gUmVnaW9uIGZsb3cgbmFtZSBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlICJm
bG93LWZyb20iIHByb3BlcnR5IG9mIHRoZSBSZWdpb24gQ29udGFpbmVycy4KKyAgICAgICAgdGhp
cy5fcmVnaW9uRmxvd0ZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwor
ICAgICAgICB0aGlzLl9yZWdpb25GbG93RnJhZ21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiaW1nIikpLmNsYXNzTmFtZSA9ICJpY29uIjsKKyAgICAgICAgdGhpcy5fcmVn
aW9uRmxvd05hbWVMYWJlbFZhbHVlID0gdGhpcy5fcmVnaW9uRmxvd0ZyYWdtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CiAKLSAgICAvLyBDb250ZW50IGZs
b3cgbmFtZSBpcyB1c2VkIHRvIGRpc3BsYXkgdGhlICJmbG93LWludG8iIHByb3BlcnR5IG9mIHRo
ZSBDb250ZW50IG5vZGVzLgotICAgIHRoaXMuX2NvbnRlbnRGbG93RnJhZ21lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgdGhpcy5fY29udGVudEZsb3dGcmFnbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSkuY2xhc3NOYW1lID0gImlj
b24iOwotICAgIHRoaXMuX2NvbnRlbnRGbG93TmFtZUxhYmVsVmFsdWUgPSB0aGlzLl9jb250ZW50
Rmxvd0ZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7
CisgICAgICAgIHZhciBnb1RvUmVnaW9uRmxvd0J1dHRvbiA9IHRoaXMuX3JlZ2lvbkZsb3dGcmFn
bWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuY3JlYXRlR29Ub0Fycm93QnV0dG9uKCkpOwor
ICAgICAgICBnb1RvUmVnaW9uRmxvd0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX2dvVG9SZWdpb25GbG93QXJyb3dXYXNDbGlja2VkLmJpbmQodGhpcykpOwogCi0gICAgdmFy
IGdvVG9Db250ZW50Rmxvd0J1dHRvbiA9IHRoaXMuX2NvbnRlbnRGbG93RnJhZ21lbnQuYXBwZW5k
Q2hpbGQoV2ViSW5zcGVjdG9yLmNyZWF0ZUdvVG9BcnJvd0J1dHRvbigpKTsKLSAgICBnb1RvQ29u
dGVudEZsb3dCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9nb1RvQ29udGVu
dEZsb3dBcnJvd1dhc0NsaWNrZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3JlZ2lvbkZs
b3dOYW1lUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJlZ2lvbiBGbG93IikpOworICAgICAgICB0aGlzLl9yZWdpb25G
bG93TmFtZVJvdy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnRlbnQtZmxvdy1saW5rIik7CiAK
LSAgICB0aGlzLl9jb250ZW50Rmxvd05hbWVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29udGVudCBGbG93IikpOwot
ICAgIHRoaXMuX2NvbnRlbnRGbG93TmFtZVJvdy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbnRl
bnQtZmxvdy1saW5rIik7CisgICAgICAgIC8vIENvbnRlbnQgZmxvdyBuYW1lIGlzIHVzZWQgdG8g
ZGlzcGxheSB0aGUgImZsb3ctaW50byIgcHJvcGVydHkgb2YgdGhlIENvbnRlbnQgbm9kZXMuCisg
ICAgICAgIHRoaXMuX2NvbnRlbnRGbG93RnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7CisgICAgICAgIHRoaXMuX2NvbnRlbnRGbG93RnJhZ21lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpLmNsYXNzTmFtZSA9ICJpY29uIjsKKyAgICAg
ICAgdGhpcy5fY29udGVudEZsb3dOYW1lTGFiZWxWYWx1ZSA9IHRoaXMuX2NvbnRlbnRGbG93RnJh
Z21lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpKTsKIAotICAg
IHZhciBmbG93TmFtZXNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91
cChbdGhpcy5fcmVnaW9uRmxvd05hbWVSb3csIHRoaXMuX2NvbnRlbnRGbG93TmFtZVJvd10pOwot
ICAgIHRoaXMuX2Zsb3dOYW1lc1NlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uKCJjb250ZW50LWZsb3ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb3dzIiksIFtmbG93
TmFtZXNHcm91cF0pOworICAgICAgICB2YXIgZ29Ub0NvbnRlbnRGbG93QnV0dG9uID0gdGhpcy5f
Y29udGVudEZsb3dGcmFnbWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuY3JlYXRlR29Ub0Fy
cm93QnV0dG9uKCkpOworICAgICAgICBnb1RvQ29udGVudEZsb3dCdXR0b24uYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCB0aGlzLl9nb1RvQ29udGVudEZsb3dBcnJvd1dhc0NsaWNrZWQuYmluZCh0
aGlzKSk7CiAKLSAgICB0aGlzLl9jb250YWluZXJSZWdpb25zRGF0YUdyaWQgPSBuZXcgV2ViSW5z
cGVjdG9yLkRPTVRyZWVEYXRhR3JpZDsKLSAgICB0aGlzLl9jb250YWluZXJSZWdpb25zRGF0YUdy
aWQuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuby1oZWFkZXIiKTsKKyAgICAgICAgdGhpcy5fY29u
dGVudEZsb3dOYW1lUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnRlbnQgRmxvdyIpKTsKKyAgICAgICAgdGhpcy5f
Y29udGVudEZsb3dOYW1lUm93LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29udGVudC1mbG93LWxp
bmsiKTsKIAotICAgIHZhciBjb250YWluZXJSZWdpb25zUm93ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93KHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNEYXRhR3JpZCk7
Ci0gICAgdmFyIGNvbnRhaW5lclJlZ2lvbnNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Hcm91cChbY29udGFpbmVyUmVnaW9uc1Jvd10pOwotICAgIHRoaXMuX2NvbnRhaW5l
clJlZ2lvbnNGbG93U2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImNv
bnRhaW5lci1yZWdpb25zIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb250YWluZXIgUmVnaW9u
cyIpLCBbY29udGFpbmVyUmVnaW9uc0dyb3VwXSk7CisgICAgICAgIHZhciBmbG93TmFtZXNHcm91
cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fcmVnaW9uRmxv
d05hbWVSb3csIHRoaXMuX2NvbnRlbnRGbG93TmFtZVJvd10pOworICAgICAgICB0aGlzLl9mbG93
TmFtZXNTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiY29udGVudC1m
bG93IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbG93cyIpLCBbZmxvd05hbWVzR3JvdXBdKTsK
IAotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChwcm9wZXJ0aWVzU2VjdGlvbi5lbGVtZW50
KTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmxvd05hbWVzU2VjdGlvbi5l
bGVtZW50KTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVyUmVn
aW9uc0Zsb3dTZWN0aW9uLmVsZW1lbnQpOworICAgICAgICB0aGlzLl9jb250YWluZXJSZWdpb25z
RGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWVEYXRhR3JpZDsKKyAgICAgICAgdGhp
cy5fY29udGFpbmVyUmVnaW9uc0RhdGFHcmlkLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibm8taGVh
ZGVyIik7CiAKLSAgICB0aGlzLl9yZXNldEZsb3dEZXRhaWxzKCk7Ci19OworICAgICAgICB2YXIg
Y29udGFpbmVyUmVnaW9uc1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25EYXRh
R3JpZFJvdyh0aGlzLl9jb250YWluZXJSZWdpb25zRGF0YUdyaWQpOworICAgICAgICB2YXIgY29u
dGFpbmVyUmVnaW9uc0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3Vw
KFtjb250YWluZXJSZWdpb25zUm93XSk7CisgICAgICAgIHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNG
bG93U2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImNvbnRhaW5lci1y
ZWdpb25zIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb250YWluZXIgUmVnaW9ucyIpLCBbY29u
dGFpbmVyUmVnaW9uc0dyb3VwXSk7CiAKLVdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWls
c1BhbmVsLlN0eWxlQ2xhc3NOYW1lID0gImNvbXB1dGVkIjsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHByb3BlcnRpZXNTZWN0aW9uLmVsZW1lbnQpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmxvd05hbWVzU2VjdGlvbi5lbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRhaW5lclJlZ2lvbnNGbG93U2Vj
dGlvbi5lbGVtZW50KTsKIAotV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHls
ZURldGFpbHNQYW5lbCwKKyAgICAgICAgdGhpcy5fcmVzZXRGbG93RGV0YWlscygpOworICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJlZ2lvbkZsb3coKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3JlZ2lvbkZsb3c7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcmVnaW9u
RmxvdyhyZWdpb25GbG93KQogICAgIHsKQEAgLTEwNiwxMiArMTAzLDEyIEBAIFdlYkluc3BlY3Rv
ci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
cmVnaW9uRmxvd05hbWVMYWJlbFZhbHVlLnRleHRDb250ZW50ID0gcmVnaW9uRmxvdyA/IHJlZ2lv
bkZsb3cubmFtZSA6ICIiOwogICAgICAgICB0aGlzLl9yZWdpb25GbG93TmFtZVJvdy52YWx1ZSA9
IHJlZ2lvbkZsb3cgPyB0aGlzLl9yZWdpb25GbG93RnJhZ21lbnQgOiBudWxsOwogICAgICAgICB0
aGlzLl91cGRhdGVGbG93TmFtZXNTZWN0aW9uVmlzaWJpbGl0eSgpOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGNvbnRlbnRGbG93KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250
ZW50RmxvdzsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBjb250ZW50Rmxvdyhjb250ZW50Rmxv
dykKICAgICB7CkBAIC0xMTksMTIgKzExNiwxMiBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHls
ZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRGbG93TmFt
ZUxhYmVsVmFsdWUudGV4dENvbnRlbnQgPSBjb250ZW50RmxvdyA/IGNvbnRlbnRGbG93Lm5hbWUg
OiAiIjsKICAgICAgICAgdGhpcy5fY29udGVudEZsb3dOYW1lUm93LnZhbHVlID0gY29udGVudEZs
b3cgPyB0aGlzLl9jb250ZW50Rmxvd0ZyYWdtZW50IDogbnVsbDsKICAgICAgICAgdGhpcy5fdXBk
YXRlRmxvd05hbWVzU2VjdGlvblZpc2liaWxpdHkoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBjb250YWluZXJSZWdpb25zKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250YWlu
ZXJSZWdpb25zOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNvbnRhaW5lclJlZ2lvbnMocmVn
aW9ucykKICAgICB7CkBAIC0xNDAsNTAgKzEzNyw1MCBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9jb250YWlu
ZXJSZWdpb25zRGF0YUdyaWQuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5ET01UcmVlRGF0
YUdyaWROb2RlKHJlZ2lvbk5vZGUpKTsKIAogICAgICAgICB0aGlzLl9jb250YWluZXJSZWdpb25z
Rmxvd1NlY3Rpb24uZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnN0eWxlID0gdGhpcy5ub2RlU3R5bGVz
LmNvbXB1dGVkU3R5bGU7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hGbG93RGV0YWlscyh0aGlzLm5v
ZGVTdHlsZXMubm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAg
IHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLlN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCiAgICAg
ICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgd2lkdGhEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB3aWR0aERpZENoYW5n
ZSgpCiAgICAgewogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci51cGRhdGVMYXlv
dXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jb21wdXRlZFN0
eWxlU2hvd0FsbENoZWNrYm94VmFsdWVDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29t
cHV0ZWRTdHlsZVNob3dBbGxDaGVja2JveFZhbHVlQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAg
ICAgIHZhciBjaGVja2VkID0gdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxDaGVja2JveC5jaGVj
a2VkOwogICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlU2hvd0FsbFNldHRpbmcudmFsdWUgPSBj
aGVja2VkOwogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5zaG93c0ltcGxpY2l0
UHJvcGVydGllcyA9IGNoZWNrZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlRmxvd05h
bWVzU2VjdGlvblZpc2liaWxpdHk6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRmxvd05hbWVzU2Vj
dGlvblZpc2liaWxpdHkoKQogICAgIHsKICAgICAgICAgdGhpcy5fZmxvd05hbWVzU2VjdGlvbi5l
bGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImhpZGRlbiIsICF0aGlzLl9jb250ZW50RmxvdyAmJiAh
dGhpcy5fcmVnaW9uRmxvdyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVzZXRGbG93RGV0YWls
cyA6IGZ1bmN0aW9uKCkKKyAgICBfcmVzZXRGbG93RGV0YWlscyAoKQogICAgIHsKICAgICAgICAg
dGhpcy5yZWdpb25GbG93ID0gbnVsbDsKICAgICAgICAgdGhpcy5jb250ZW50RmxvdyA9IG51bGw7
CiAgICAgICAgIHRoaXMuY29udGFpbmVyUmVnaW9ucyA9IG51bGw7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfcmVmcmVzaEZsb3dEZXRhaWxzOiBmdW5jdGlvbihkb21Ob2RlKQorICAgIF9yZWZyZXNo
Rmxvd0RldGFpbHMoZG9tTm9kZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc2V0Rmxvd0RldGFp
bHMoKTsKICAgICAgICAgaWYgKCFkb21Ob2RlKQpAQCAtMjAzLDE3ICsyMDAsMTcgQEAgV2ViSW5z
cGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmdldE5vZGVDb250ZW50Rmxv
d0luZm8oZG9tTm9kZSwgY29udGVudEZsb3dJbmZvUmVhZHkuYmluZCh0aGlzKSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZ29Ub1JlZ2lvbkZsb3dBcnJvd1dhc0NsaWNrZWQ6IGZ1bmN0aW9uKCkK
KyAgICBfZ29Ub1JlZ2lvbkZsb3dBcnJvd1dhc0NsaWNrZWQoKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVsLnNob3dDb250ZW50Rmxvd0RPTVRyZWUodGhp
cy5fcmVnaW9uRmxvdyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ29Ub0NvbnRlbnRGbG93QXJy
b3dXYXNDbGlja2VkOiBmdW5jdGlvbigpCisgICAgX2dvVG9Db250ZW50Rmxvd0Fycm93V2FzQ2xp
Y2tlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwu
c2hvd0NvbnRlbnRGbG93RE9NVHJlZSh0aGlzLl9jb250ZW50RmxvdywgdGhpcy5ub2RlU3R5bGVz
Lm5vZGUsIHRydWUpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0
YWlsc1BhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxz
UGFuZWwucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwu
U3R5bGVDbGFzc05hbWUgPSAiY29tcHV0ZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUNvbW1hbmQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFuZC5qcwppbmRleCBh
OWM1M2Y4Li42OTVkODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFuZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFuZC5qcwpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywgMjAxNSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEpv
c2VwaCBQZWNvcmFybwogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMjAgKzI3LDE4IEBACiAgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZCA9IGZ1bmN0aW9uKGNv
bW1hbmQpCitXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmQgPSBjbGFzcyBDb25zb2xlQ29tbWFu
ZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0
aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4K
LSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmNvbW1h
bmQgPSBjb21tYW5kOwotfTsKKyAgICBjb25zdHJ1Y3Rvcihjb21tYW5kKQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kLAorICAgICAgICB0
aGlzLmNvbW1hbmQgPSBjb21tYW5kOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgZGVj
b3JhdGVNZXNzYWdlRWxlbWVudDogZnVuY3Rpb24oZWxlbWVudCkgeworICAgIGRlY29yYXRlTWVz
c2FnZUVsZW1lbnQoZWxlbWVudCkgewogICAgICAgICBpZiAodGhpcy5fZWxlbWVudCkKICAgICAg
ICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwogCkBAIC01MywzMCArNTEsMjggQEAgV2ViSW5z
cGVjdG9yLkNvbnNvbGVDb21tYW5kLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9mb3JtYXR0ZWRDb21tYW5kKTsKIAogICAgICAgICByZXR1cm4g
dGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIHRvTWVzc2FnZUVsZW1lbnQ6IGZ1
bmN0aW9uKCkKKyAgICB0b01lc3NhZ2VFbGVtZW50KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9lbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CiAKICAgICAgICAg
dmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgcmV0
dXJuIHRoaXMuZGVjb3JhdGVNZXNzYWdlRWxlbWVudChlbGVtZW50KTsKLSAgICB9LAorICAgIH0K
KworICAgIHRvQ2xpcGJvYXJkU3RyaW5nKGlzUHJlZml4T3B0aW9uYWwpCisgICAgeworICAgICAg
ICByZXR1cm4gKGlzUHJlZml4T3B0aW9uYWwgPyAiIiA6ICI+ICIpICsgdGhpcy5jb21tYW5kOwor
ICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9mb3JtYXRDb21tYW5kOiBmdW5jdGlvbigp
CisgICAgX2Zvcm1hdENvbW1hbmQoKQogICAgIHsKICAgICAgICAgdGhpcy5fZm9ybWF0dGVkQ29t
bWFuZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgdGhpcy5fZm9y
bWF0dGVkQ29tbWFuZC5jbGFzc05hbWUgPSAiY29uc29sZS1tZXNzYWdlLXRleHQgc291cmNlLWNv
ZGUiOwogICAgICAgICB0aGlzLl9mb3JtYXR0ZWRDb21tYW5kLnRleHRDb250ZW50ID0gdGhpcy5j
b21tYW5kOwotICAgIH0sCi0KLSAgICB0b0NsaXBib2FyZFN0cmluZzogZnVuY3Rpb24oaXNQcmVm
aXhPcHRpb25hbCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAoaXNQcmVmaXhPcHRpb25hbCA/ICIi
IDogIj4gIikgKyB0aGlzLmNvbW1hbmQ7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkNvbnNv
bGVDb21tYW5kLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnNvbGVDb21tYW5kUmVzdWx0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29uc29sZUNvbW1hbmRSZXN1bHQuanMKaW5kZXggZTdjMGY1OS4uYWNl
MTA1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29uc29sZUNvbW1hbmRSZXN1bHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUNvbW1hbmRSZXN1bHQuanMKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBK
b3NlcGggUGVjb3Jhcm8KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDQwICsyNyw0MiBAQAogICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQgPSBmdW5j
dGlvbihyZXN1bHQsIHdhc1Rocm93biwgb3JpZ2luYXRpbmdDb21tYW5kLCBzYXZlZFJlc3VsdElu
ZGV4KQorV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0ID0gY2xhc3MgQ29uc29sZUNv
bW1hbmRSZXN1bHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBs
CiB7Ci0gICAgdmFyIGxldmVsID0gKHdhc1Rocm93biA/IFdlYkluc3BlY3Rvci5MZWdhY3lDb25z
b2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IgOiBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29s
ZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZyk7Ci0gICAgdGhpcy5vcmlnaW5hdGluZ0NvbW1hbmQg
PSBvcmlnaW5hdGluZ0NvbW1hbmQ7Ci0gICAgdGhpcy5zYXZlZFJlc3VsdEluZGV4ID0gc2F2ZWRS
ZXN1bHRJbmRleDsKLQotICAgIGlmICh0aGlzLnNhdmVkUmVzdWx0SW5kZXggJiYgdGhpcy5zYXZl
ZFJlc3VsdEluZGV4ID4gV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0Lm1heGltdW1T
YXZlZFJlc3VsdEluZGV4KQotICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1
bHQubWF4aW11bVNhdmVkUmVzdWx0SW5kZXggPSB0aGlzLnNhdmVkUmVzdWx0SW5kZXg7CisgICAg
Y29uc3RydWN0b3IocmVzdWx0LCB3YXNUaHJvd24sIG9yaWdpbmF0aW5nQ29tbWFuZCwgc2F2ZWRS
ZXN1bHRJbmRleCkKKyAgICB7CisgICAgICAgIHZhciBsZXZlbCA9ICh3YXNUaHJvd24gPyBXZWJJ
bnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yIDogV2ViSW5z
cGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5Mb2cpOworICAgICAgICB0
aGlzLm9yaWdpbmF0aW5nQ29tbWFuZCA9IG9yaWdpbmF0aW5nQ29tbWFuZDsKKyAgICAgICAgdGhp
cy5zYXZlZFJlc3VsdEluZGV4ID0gc2F2ZWRSZXN1bHRJbmRleDsKIAotICAgIFdlYkluc3BlY3Rv
ci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuTGVnYWN5
Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5KUywgbGV2ZWwsICIiLCBudWxsLCBXZWJJbnNw
ZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuUmVzdWx0LCB1bmRlZmluZWQs
IHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFtyZXN1bHRdKTsKLX07CisgICAgICAg
IGlmICh0aGlzLnNhdmVkUmVzdWx0SW5kZXggJiYgdGhpcy5zYXZlZFJlc3VsdEluZGV4ID4gV2Vi
SW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0Ll9tYXhpbXVtU2F2ZWRSZXN1bHRJbmRleCkK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5fbWF4aW11bVNh
dmVkUmVzdWx0SW5kZXggPSB0aGlzLnNhdmVkUmVzdWx0SW5kZXg7CiAKLVdlYkluc3BlY3Rvci5D
b25zb2xlQ29tbWFuZFJlc3VsdC5tYXhpbXVtU2F2ZWRSZXN1bHRJbmRleCA9IDA7CisgICAgICAg
IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwuY2FsbCh0aGlzLCBXZWJJbnNw
ZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5KUywgbGV2ZWwsICIiLCBu
dWxsLCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuUmVzdWx0
LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFtyZXN1bHRdKTsK
KyAgICB9CiAKLVdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5jbGVhck1heGltdW1T
YXZlZFJlc3VsdEluZGV4ID0gZnVuY3Rpb24oKQotewotICAgIFdlYkluc3BlY3Rvci5Db25zb2xl
Q29tbWFuZFJlc3VsdC5tYXhpbXVtU2F2ZWRSZXN1bHRJbmRleCA9IDA7Ci19CisgICAgLy8gU3Rh
dGljCiAKLVdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdCwKKyAgICBz
dGF0aWMgY2xlYXJNYXhpbXVtU2F2ZWRSZXN1bHRJbmRleCgpCisgICAgeworICAgICAgICBXZWJJ
bnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQuX21heGltdW1TYXZlZFJlc3VsdEluZGV4ID0g
MDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGVuZm9yY2VzQ2xpcGJvYXJkUHJlZml4
U3RyaW5nOiBmYWxzZSwKKyAgICBnZXQgZW5mb3JjZXNDbGlwYm9hcmRQcmVmaXhTdHJpbmcoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KIAotICAgIHRvTWVzc2FnZUVsZW1l
bnQ6IGZ1bmN0aW9uKCkKKyAgICB0b01lc3NhZ2VFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHZh
ciBlbGVtZW50ID0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5
cGUudG9NZXNzYWdlRWxlbWVudC5jYWxsKHRoaXMpOwogICAgICAgICBlbGVtZW50LmNsYXNzTGlz
dC5hZGQoImNvbnNvbGUtdXNlci1jb21tYW5kLXJlc3VsdCIpOwogICAgICAgICBpZiAoIWVsZW1l
bnQuZ2V0QXR0cmlidXRlKCJkYXRhLWxhYmVscHJlZml4IikpCiAgICAgICAgICAgICBlbGVtZW50
LnNldEF0dHJpYnV0ZSgiZGF0YS1sYWJlbHByZWZpeCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
T3V0cHV0OiAiKSk7CiAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGNsaXBib2FyZFByZWZpeFN0cmluZygpCiAgICAgewpAQCAtNjgsNCArNzAsNCBAQCBX
ZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQucHJvdG90eXBlID0gewogICAgIH0KIH07
CiAKLVdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGU7CitXZWJJ
bnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQuX21heGltdW1TYXZlZFJlc3VsdEluZGV4ID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnNvbGVHcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnNvbGVHcm91cC5qcwppbmRleCA5MDU2ZjVmLi40YTQwOGVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlR3JvdXAuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUdy
b3VwLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwg
MjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA3LCAyMDA4LCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBA
IC0yNywyMCArMjcsMTggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnNv
bGVHcm91cCA9IGZ1bmN0aW9uKHBhcmVudEdyb3VwKQorV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91
cCA9IGNsYXNzIENvbnNvbGVHcm91cCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAg
ICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7Ci0KLSAgICB0aGlzLnBhcmVudEdyb3VwID0gcGFyZW50R3JvdXA7Ci19OworICAgIGNvbnN0
cnVjdG9yKHBhcmVudEdyb3VwKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotV2ViSW5zcGVj
dG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5Db25zb2xlR3JvdXAsCisgICAgICAgIHRoaXMucGFyZW50R3JvdXAgPSBwYXJlbnRHcm91
cDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHJlbmRlcjogZnVuY3Rpb24obWVzc2Fn
ZSkKKyAgICByZW5kZXIobWVzc2FnZSkKICAgICB7CiAgICAgICAgIHZhciBncm91cEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgZ3JvdXBFbGVtZW50LmNs
YXNzTmFtZSA9ICJjb25zb2xlLWdyb3VwIjsKQEAgLTYyLDI4ICs2MCwyOCBAQCBXZWJJbnNwZWN0
b3IuQ29uc29sZUdyb3VwLnByb3RvdHlwZSA9IHsKICAgICAgICAgZ3JvdXBFbGVtZW50LmFwcGVu
ZENoaWxkKG1lc3NhZ2VzRWxlbWVudCk7CiAKICAgICAgICAgcmV0dXJuIGdyb3VwRWxlbWVudDsK
LSAgICB9LAorICAgIH0KIAotICAgIGFkZE1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAg
YWRkTWVzc2FnZShtZXNzYWdlKQogICAgIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBtZXNzYWdl
LnRvTWVzc2FnZUVsZW1lbnQoKTsKICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5Mb2dDb250ZW50Vmlldy5JdGVtV3JhcHBlclN0eWxlQ2xhc3NOYW1lKTsKICAgICAg
ICAgdGhpcy5hcHBlbmQoZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhcHBlbmQ6IGZ1
bmN0aW9uKG1lc3NhZ2VFbGVtZW50KQorICAgIGFwcGVuZChtZXNzYWdlRWxlbWVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzRWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdlRWxlbWVu
dCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdGl0bGVNb3VzZURv
d246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90aXRsZU1vdXNlRG93bihldmVudCkKICAgICB7CiAg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGl0
bGVDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGl0bGVDbGlja2VkKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIGdyb3VwVGl0bGVFbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2lu
Z05vZGVPclNlbGZXaXRoQ2xhc3MoImNvbnNvbGUtZ3JvdXAtdGl0bGUiKTsKICAgICAgICAgaWYg
KGdyb3VwVGl0bGVFbGVtZW50KSB7CkBAIC05Nyw1ICs5NSwzIEBAIFdlYkluc3BlY3Rvci5Db25z
b2xlR3JvdXAucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfQogfTsKLQotV2ViSW5zcGVj
dG9yLkNvbnNvbGVHcm91cC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21wdC5qcwppbmRleCBkNDk3YjFjLi5mYWI0ZjQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25z
b2xlUHJvbXB0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnNvbGVQcm9tcHQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE0OSArMjMsMTQ0IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQgPSBm
dW5jdGlvbihkZWxlZ2F0ZSwgbWltZVR5cGUsIGVsZW1lbnQpCitXZWJJbnNwZWN0b3IuQ29uc29s
ZVByb21wdCA9IGNsYXNzIENvbnNvbGVQcm9tcHQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qg
c3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOwotCi0gICAgbWltZVR5cGUgPSBwYXJzZU1JTUVUeXBlKG1pbWVUeXBlKS50eXBl
OwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5D
b25zb2xlUHJvbXB0LlN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLlN5bnRheEhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUpOwotCi0g
ICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwotCi0gICAgdGhpcy5fY29kZU1p
cnJvciA9IENvZGVNaXJyb3IodGhpcy5lbGVtZW50LCB7Ci0gICAgICAgIGxpbmVXcmFwcGluZzog
dHJ1ZSwKLSAgICAgICAgbW9kZTogbWltZVR5cGUsCi0gICAgICAgIGluZGVudFdpdGhUYWJzOiB0
cnVlLAotICAgICAgICBpbmRlbnRVbml0OiA0LAotICAgICAgICBtYXRjaEJyYWNrZXRzOiB0cnVl
Ci0gICAgfSk7Ci0KLSAgICB2YXIga2V5TWFwID0gewotICAgICAgICAiVXAiOiB0aGlzLl9oYW5k
bGVQcmV2aW91c0tleS5iaW5kKHRoaXMpLAotICAgICAgICAiRG93biI6IHRoaXMuX2hhbmRsZU5l
eHRLZXkuYmluZCh0aGlzKSwKLSAgICAgICAgIkN0cmwtUCI6IHRoaXMuX2hhbmRsZVByZXZpb3Vz
S2V5LmJpbmQodGhpcyksCi0gICAgICAgICJDdHJsLU4iOiB0aGlzLl9oYW5kbGVOZXh0S2V5LmJp
bmQodGhpcyksCi0gICAgICAgICJFbnRlciI6IHRoaXMuX2hhbmRsZUVudGVyS2V5LmJpbmQodGhp
cyksCi0gICAgICAgICJDbWQtRW50ZXIiOiB0aGlzLl9oYW5kbGVDb21tYW5kRW50ZXJLZXkuYmlu
ZCh0aGlzKSwKLSAgICAgICAgIkVzYyI6IHRoaXMuX2hhbmRsZUVzY2FwZUtleS5iaW5kKHRoaXMp
Ci0gICAgfTsKLQotICAgIHRoaXMuX2NvZGVNaXJyb3IuYWRkS2V5TWFwKGtleU1hcCk7Ci0KLSAg
ICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29kZU1pcnJv
ckNvbXBsZXRpb25Db250cm9sbGVyKHRoaXMuX2NvZGVNaXJyb3IsIHRoaXMpOwotICAgIHRoaXMu
X2NvbXBsZXRpb25Db250cm9sbGVyLmFkZEV4dGVuZGVkQ29tcGxldGlvblByb3ZpZGVyKCJqYXZh
c2NyaXB0IiwgV2ViSW5zcGVjdG9yLmphdmFTY3JpcHRSdW50aW1lQ29tcGxldGlvblByb3ZpZGVy
KTsKLQotICAgIHRoaXMuX2hpc3RvcnkgPSBbe31dOwotICAgIHRoaXMuX2hpc3RvcnlJbmRleCA9
IDA7Ci19OworICAgIGNvbnN0cnVjdG9yKGRlbGVnYXRlLCBtaW1lVHlwZSwgZWxlbWVudCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0LlN0eWxl
Q2xhc3NOYW1lID0gImNvbnNvbGUtcHJvbXB0IjsKLVdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0
Lk1heGltdW1IaXN0b3J5U2l6ZSA9IDMwOworICAgICAgICBtaW1lVHlwZSA9IHBhcnNlTUlNRVR5
cGUobWltZVR5cGUpLnR5cGU7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwg
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5TdHlsZUNsYXNzTmFtZSk7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuU3ludGF4SGln
aGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSk7CiAKLVdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQs
CisgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKKworICAgICAgICB0
aGlzLl9jb2RlTWlycm9yID0gQ29kZU1pcnJvcih0aGlzLmVsZW1lbnQsIHsKKyAgICAgICAgICAg
IGxpbmVXcmFwcGluZzogdHJ1ZSwKKyAgICAgICAgICAgIG1vZGU6IG1pbWVUeXBlLAorICAgICAg
ICAgICAgaW5kZW50V2l0aFRhYnM6IHRydWUsCisgICAgICAgICAgICBpbmRlbnRVbml0OiA0LAor
ICAgICAgICAgICAgbWF0Y2hCcmFja2V0czogdHJ1ZQorICAgICAgICB9KTsKKworICAgICAgICB2
YXIga2V5TWFwID0geworICAgICAgICAgICAgIlVwIjogdGhpcy5faGFuZGxlUHJldmlvdXNLZXku
YmluZCh0aGlzKSwKKyAgICAgICAgICAgICJEb3duIjogdGhpcy5faGFuZGxlTmV4dEtleS5iaW5k
KHRoaXMpLAorICAgICAgICAgICAgIkN0cmwtUCI6IHRoaXMuX2hhbmRsZVByZXZpb3VzS2V5LmJp
bmQodGhpcyksCisgICAgICAgICAgICAiQ3RybC1OIjogdGhpcy5faGFuZGxlTmV4dEtleS5iaW5k
KHRoaXMpLAorICAgICAgICAgICAgIkVudGVyIjogdGhpcy5faGFuZGxlRW50ZXJLZXkuYmluZCh0
aGlzKSwKKyAgICAgICAgICAgICJDbWQtRW50ZXIiOiB0aGlzLl9oYW5kbGVDb21tYW5kRW50ZXJL
ZXkuYmluZCh0aGlzKSwKKyAgICAgICAgICAgICJFc2MiOiB0aGlzLl9oYW5kbGVFc2NhcGVLZXku
YmluZCh0aGlzKQorICAgICAgICB9OworCisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IuYWRkS2V5
TWFwKGtleU1hcCk7CisKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlcih0aGlzLl9jb2RlTWly
cm9yLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIuYWRkRXh0ZW5k
ZWRDb21wbGV0aW9uUHJvdmlkZXIoImphdmFzY3JpcHQiLCBXZWJJbnNwZWN0b3IuamF2YVNjcmlw
dFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIpOworCisgICAgICAgIHRoaXMuX2hpc3RvcnkgPSBb
e31dOworICAgICAgICB0aGlzLl9oaXN0b3J5SW5kZXggPSAwOworICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Vs
ZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGVsZWdhdGUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRlbGVn
YXRlKGRlbGVnYXRlKQogICAgIHsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8
fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVzY2FwZUtleUhhbmRsZXJXaGVuRW1w
dHkoaGFuZGxlcikKICAgICB7CiAgICAgICAgIHRoaXMuX2VzY2FwZUtleUhhbmRsZXJXaGVuRW1w
dHkgPSBoYW5kbGVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRleHQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0VmFsdWUoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCB0ZXh0KHRleHQpCiAgICAgewogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNl
dFZhbHVlKHRleHQgfHwgIiIpOwogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLmNsZWFySGlzdG9y
eSgpOwogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm1hcmtDbGVhbigpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGhpc3RvcnkoKQogICAgIHsKICAgICAgICAgdGhpcy5faGlzdG9yeVt0aGlz
Ll9oaXN0b3J5SW5kZXhdID0gdGhpcy5faGlzdG9yeUVudHJ5Rm9yQ3VycmVudFRleHQoKTsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2hpc3Rvcnk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgaGlz
dG9yeShoaXN0b3J5KQogICAgIHsKICAgICAgICAgdGhpcy5faGlzdG9yeSA9IGhpc3RvcnkgaW5z
dGFuY2VvZiBBcnJheSA/IGhpc3Rvcnkuc2xpY2UoMCwgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9t
cHQuTWF4aW11bUhpc3RvcnlTaXplKSA6IFt7fV07CiAgICAgICAgIHRoaXMuX2hpc3RvcnlJbmRl
eCA9IDA7CiAgICAgICAgIHRoaXMuX3Jlc3RvcmVIaXN0b3J5RW50cnkoMCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZm9jdXNlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29k
ZU1pcnJvci5nZXRXcmFwcGVyRWxlbWVudCgpLmNsYXNzTGlzdC5jb250YWlucygiQ29kZU1pcnJv
ci1mb2N1c2VkIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb2N1czogZnVuY3Rpb24oKQorICAg
IGZvY3VzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IuZm9jdXMoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAg
ICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1
cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAg
ICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRh
dGVDb21wbGV0aW9uczogZnVuY3Rpb24oY29tcGxldGlvbnMsIGltcGxpY2l0U3VmZml4KQorICAg
IHVwZGF0ZUNvbXBsZXRpb25zKGNvbXBsZXRpb25zLCBpbXBsaWNpdFN1ZmZpeCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250cm9sbGVyLnVwZGF0ZUNvbXBsZXRpb25zKGNvbXBs
ZXRpb25zLCBpbXBsaWNpdFN1ZmZpeCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwdXNoSGlzdG9y
eUl0ZW06IGZ1bmN0aW9uKHRleHQpCisgICAgcHVzaEhpc3RvcnlJdGVtKHRleHQpCiAgICAgewog
ICAgICAgICB0aGlzLl9jb21taXRIaXN0b3J5RW50cnkoe3RleHR9KTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgY29tcGxldGlvbkNvbnRyb2xsZXJDb21wbGV0aW9u
c05lZWRlZDogZnVuY3Rpb24oY29tcGxldGlvbkNvbnRyb2xsZXIsIHByZWZpeCwgZGVmYXVsdENv
bXBsZXRpb25zLCBiYXNlLCBzdWZmaXgsIGZvcmNlZCkKKyAgICBjb21wbGV0aW9uQ29udHJvbGxl
ckNvbXBsZXRpb25zTmVlZGVkKGNvbXBsZXRpb25Db250cm9sbGVyLCBwcmVmaXgsIGRlZmF1bHRD
b21wbGV0aW9ucywgYmFzZSwgc3VmZml4LCBmb3JjZWQpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5jb25zb2xlUHJvbXB0Q29tcGxldGlv
bnNOZWVkZWQgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmNvbnNv
bGVQcm9tcHRDb21wbGV0aW9uc05lZWRlZCh0aGlzLCBkZWZhdWx0Q29tcGxldGlvbnMsIGJhc2Us
IHByZWZpeCwgc3VmZml4LCBmb3JjZWQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlz
Ll9jb21wbGV0aW9uQ29udHJvbGxlci51cGRhdGVDb21wbGV0aW9ucyhkZWZhdWx0Q29tcGxldGlv
bnMpOwotICAgIH0sCisgICAgfQogCi0gICAgY29tcGxldGlvbkNvbnRyb2xsZXJTaG91bGRBbGxv
d0VzY2FwZUNvbXBsZXRpb246IGZ1bmN0aW9uKGNvbXBsZXRpb25Db250cm9sbGVyKQorICAgIGNv
bXBsZXRpb25Db250cm9sbGVyU2hvdWxkQWxsb3dFc2NhcGVDb21wbGV0aW9uKGNvbXBsZXRpb25D
b250cm9sbGVyKQogICAgIHsKICAgICAgICAgLy8gT25seSBhbGxvdyBlc2NhcGUgdG8gY29tcGxl
dGUgaWYgdGhlcmUgaXMgdGV4dCBpbiB0aGUgcHJvbXB0LiBPdGhlcndpc2UgYWxsb3cgaXQgdG8g
cGFzcyB0aHJvdWdoCiAgICAgICAgIC8vIHNvIGVzY2FwZSB0byB0b2dnbGUgdGhlIHF1aWNrIGNv
bnNvbGUgc3RpbGwgd29ya3MuCiAgICAgICAgIHJldHVybiAhIXRoaXMudGV4dDsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9oYW5kbGVFc2NhcGVLZXk6IGZ1bmN0aW9u
KGNvZGVNaXJyb3IpCisgICAgX2hhbmRsZUVzY2FwZUtleShjb2RlTWlycm9yKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMudGV4dCkKICAgICAgICAgICAgIHJldHVybiBDb2RlTWlycm9yLlBhc3M7
CkBAIC0xNzQsOSArMTY5LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IuUGFzczsKIAogICAgICAgICB0aGlz
Ll9lc2NhcGVLZXlIYW5kbGVyV2hlbkVtcHR5KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFu
ZGxlUHJldmlvdXNLZXk6IGZ1bmN0aW9uKGNvZGVNaXJyb3IpCisgICAgX2hhbmRsZVByZXZpb3Vz
S2V5KGNvZGVNaXJyb3IpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY29kZU1pcnJvci5zb21l
dGhpbmdTZWxlY3RlZCgpKQogICAgICAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IuUGFzczsKQEAg
LTE5NCw5ICsxODksOSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICsrdGhpcy5faGlzdG9yeUluZGV4OwogCiAgICAgICAgIHRoaXMuX3Jlc3RvcmVI
aXN0b3J5RW50cnkodGhpcy5faGlzdG9yeUluZGV4KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9o
YW5kbGVOZXh0S2V5OiBmdW5jdGlvbihjb2RlTWlycm9yKQorICAgIF9oYW5kbGVOZXh0S2V5KGNv
ZGVNaXJyb3IpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY29kZU1pcnJvci5zb21ldGhpbmdT
ZWxlY3RlZCgpKQogICAgICAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IuUGFzczsKQEAgLTIxNCw5
ICsyMDksOSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIC0tdGhpcy5faGlzdG9yeUluZGV4OwogCiAgICAgICAgIHRoaXMuX3Jlc3RvcmVIaXN0b3J5
RW50cnkodGhpcy5faGlzdG9yeUluZGV4KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVF
bnRlcktleTogZnVuY3Rpb24oY29kZU1pcnJvciwgZm9yY2VDb21taXQpCisgICAgX2hhbmRsZUVu
dGVyS2V5KGNvZGVNaXJyb3IsIGZvcmNlQ29tbWl0KQogICAgIHsKICAgICAgICAgdmFyIGN1cnJl
bnRUZXh0ID0gdGhpcy50ZXh0OwogCkBAIC0yNjMsOSArMjU4LDkgQEAgV2ViSW5zcGVjdG9yLkNv
bnNvbGVQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgY29tbWl0VGV4
dE9ySW5zZXJ0TmV3TGluZS5jYWxsKHRoaXMsIHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2NvbW1pdEhpc3RvcnlFbnRyeTogZnVuY3Rpb24oaGlzdG9yeUVudHJ5KQorICAgIF9jb21taXRI
aXN0b3J5RW50cnkoaGlzdG9yeUVudHJ5KQogICAgIHsKICAgICAgICAgLy8gUmVwbGFjZSB0aGUg
cHJldmlvdXMgZW50cnkgaWYgaXQgZG9lcyBub3QgaGF2ZSB0ZXh0IG9yIGlmIHRoZSB0ZXh0IGlz
IHRoZSBzYW1lLgogICAgICAgICBpZiAodGhpcy5faGlzdG9yeVsxXSAmJiAoIXRoaXMuX2hpc3Rv
cnlbMV0udGV4dCB8fCB0aGlzLl9oaXN0b3J5WzFdLnRleHQgPT09IGhpc3RvcnlFbnRyeS50ZXh0
KSkgewpAQCAtMjgyLDE0ICsyNzcsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQucHJv
dG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5faGlzdG9yeUluZGV4ID0gMDsK
LSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVDb21tYW5kRW50ZXJLZXk6IGZ1bmN0aW9uKGNv
ZGVNaXJyb3IpCisgICAgX2hhbmRsZUNvbW1hbmRFbnRlcktleShjb2RlTWlycm9yKQogICAgIHsK
ICAgICAgICAgdGhpcy5faGFuZGxlRW50ZXJLZXkoY29kZU1pcnJvciwgdHJ1ZSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfcmVzdG9yZUhpc3RvcnlFbnRyeTogZnVuY3Rpb24oaW5kZXgpCisgICAg
X3Jlc3RvcmVIaXN0b3J5RW50cnkoaW5kZXgpCiAgICAgewogICAgICAgICB2YXIgaGlzdG9yeUVu
dHJ5ID0gdGhpcy5faGlzdG9yeVtpbmRleF07CiAKQEAgLTMwMSwxNCArMjk2LDE0IEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2Nv
ZGVNaXJyb3IuY2xlYXJIaXN0b3J5KCk7CiAKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRD
dXJzb3IoaGlzdG9yeUVudHJ5LmN1cnNvciB8fCB7bGluZTogMH0pOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2hpc3RvcnlFbnRyeUZvckN1cnJlbnRUZXh0OiBmdW5jdGlvbigpCisgICAgX2hpc3Rv
cnlFbnRyeUZvckN1cnJlbnRUZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB7dGV4dDogdGhp
cy50ZXh0LCB1bmRvSGlzdG9yeTogdGhpcy5fY29kZU1pcnJvci5nZXRIaXN0b3J5KCksIGN1cnNv
cjogdGhpcy5fY29kZU1pcnJvci5nZXRDdXJzb3IoKX07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
cmVtZW1iZXJDdXJyZW50VGV4dEluSGlzdG9yeTogZnVuY3Rpb24oKQorICAgIF9yZW1lbWJlckN1
cnJlbnRUZXh0SW5IaXN0b3J5KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2hpc3RvcnlbdGhpcy5f
aGlzdG9yeUluZGV4XSA9IHRoaXMuX2hpc3RvcnlFbnRyeUZvckN1cnJlbnRUZXh0KCk7CiAKQEAg
LTMxNyw0ICszMTIsNSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUgPSB7
CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNvbnNv
bGVQcm9tcHQuU3R5bGVDbGFzc05hbWUgPSAiY29uc29sZS1wcm9tcHQiOworV2ViSW5zcGVjdG9y
LkNvbnNvbGVQcm9tcHQuTWF4aW11bUhpc3RvcnlTaXplID0gMzA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlU2Vzc2lvbi5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVTZXNzaW9u
LmpzCmluZGV4IGM2MTU5ZTEuLjVlNTFlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVTZXNzaW9uLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVTZXNzaW9uLmpzCkBAIC0y
NiwzNiArMjYsMzIgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVT
ZXNzaW9uID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkNvbnNvbGVTZXNzaW9uID0gY2xhc3Mg
Q29uc29sZVNlc3Npb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklY
TUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBj
YWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0g
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICBlbGVt
ZW50LmNsYXNzTmFtZSA9ICJjb25zb2xlLXNlc3Npb24iOwotICAgIHRoaXMuZWxlbWVudCA9IGVs
ZW1lbnQ7Ci0gICAgdGhpcy5fbWVzc2FnZXNFbGVtZW50ID0gZWxlbWVudDsKLX07CisgICAgY29u
c3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotV2ViSW5zcGVjdG9yLkNvbnNv
bGVTZXNzaW9uLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNv
bnNvbGVTZXNzaW9uLAorICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICJjb25zb2xlLXNlc3Npb24i
OworICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OworICAgICAgICB0aGlzLl9tZXNzYWdl
c0VsZW1lbnQgPSBlbGVtZW50OworICAgIH0KIAotICAgIGFkZE1lc3NhZ2U6IGZ1bmN0aW9uKG1l
c3NhZ2UpCisgICAgYWRkTWVzc2FnZShtZXNzYWdlKQogICAgIHsKICAgICAgICAgdmFyIG1lc3Nh
Z2VFbGVtZW50ID0gbWVzc2FnZS50b01lc3NhZ2VFbGVtZW50KCk7CiAgICAgICAgIG1lc3NhZ2VF
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3Lkl0ZW1XcmFw
cGVyU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB0aGlzLl9tZXNzYWdlc0VsZW1lbnQuYXBwZW5k
Q2hpbGQobWVzc2FnZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgYXBwZW5kOiBmdW5j
dGlvbihtZXNzYWdlRWxlbWVudCkKKyAgICBhcHBlbmQobWVzc2FnZUVsZW1lbnQpCiAgICAgewog
ICAgICAgICB0aGlzLl9tZXNzYWdlc0VsZW1lbnQuYXBwZW5kQ2hpbGQobWVzc2FnZUVsZW1lbnQp
OwotICAgIH0sCisgICAgfQogCi0gICAgaGFzTWVzc2FnZXM6IGZ1bmN0aW9uKCkKKyAgICBoYXNN
ZXNzYWdlcygpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9tZXNzYWdlc0VsZW1lbnQu
Y2hpbGROb2Rlcy5sZW5ndGg7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkNvbnNvbGVTZXNz
aW9uLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnRlbnRCcm93c2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29udGVudEJyb3dzZXIuanMKaW5kZXggZWE2MDQ0Zi4uN2I2YzczNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVu
dEJyb3dzZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDExNyArMjMsMTA1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyID0gZnVuY3Rpb24o
ZWxlbWVudCwgZGVsZWdhdGUsIGRpc2FibGVCYWNrRm9yd2FyZCkKK1dlYkluc3BlY3Rvci5Db250
ZW50QnJvd3NlciA9IGNsYXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIuU3R5bGVDbGFzc05hbWUpOwotCi0gICAgdGhpcy5f
bmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKLSAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7Ci0KLSAg
ICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXdDb250YWluZXI7Ci0gICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRl
bnRWaWV3RGlkQ2hhbmdlLCB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMp
OwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudFZpZXdDb250YWlu
ZXIuZWxlbWVudCk7Ci0KLSAgICB0aGlzLl9maW5kQmFubmVyID0gbmV3IFdlYkluc3BlY3Rvci5G
aW5kQmFubmVyKHRoaXMpOwotICAgIHRoaXMuX2ZpbmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICJGIiwgdGhpcy5fc2hvd0ZpbmRCYW5uZXIuYmlu
ZCh0aGlzKSk7Ci0gICAgdGhpcy5fZmluZEJhbm5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5GaW5kQmFubmVyLkV2ZW50LkRpZFNob3csIHRoaXMuX2ZpbmRCYW5uZXJEaWRTaG93LCB0
aGlzKTsKLSAgICB0aGlzLl9maW5kQmFubmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkZpbmRCYW5uZXIuRXZlbnQuRGlkSGlkZSwgdGhpcy5fZmluZEJhbm5lckRpZEhpZGUsIHRoaXMp
OwotCi0gICAgdGhpcy5fc2F2ZUtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29t
bWFuZE9yQ29udHJvbCwgIlMiLCB0aGlzLl9zYXZlLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3Nh
dmVBc0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQo
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQgfCBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCAiUyIsIHRoaXMu
X3NhdmVBcy5iaW5kKHRoaXMpKTsKLQotICAgIGlmICghZGlzYWJsZUJhY2tGb3J3YXJkKSB7Ci0g
ICAgICAgIHRoaXMuX2JhY2tLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1h
bmRPckNvbnRyb2wgfCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250
cm9sLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuTGVmdCwgdGhpcy5fYmFja0J1
dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgICAgIHRoaXMuX2ZvcndhcmRLZXlib2FyZFNo
b3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dC5LZXkuUmlnaHQsIHRoaXMuX2ZvcndhcmRCdXR0b25DbGlja2VkLmJpbmQodGhpcykp
OwotCi0gICAgICAgIHZhciBmb3J3YXJkQXJyb3csIGJhY2tBcnJvdzsKLSAgICAgICAgaWYgKFdl
Ykluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TKSB7Ci0gICAgICAgICAgICBmb3J3YXJk
QXJyb3cgPSB7c3JjOiAiSW1hZ2VzL0xlZ2FjeS9Gb3J3YXJkQXJyb3cuc3ZnIiwgd2lkdGg6IDks
IGhlaWdodDogOX07Ci0gICAgICAgICAgICBiYWNrQXJyb3cgPSB7c3JjOiAiSW1hZ2VzL0xlZ2Fj
eS9CYWNrQXJyb3cuc3ZnIiwgd2lkdGg6IDksIGhlaWdodDogOX07Ci0gICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBmb3J3YXJkQXJyb3cgPSB7c3JjOiAiSW1hZ2VzL0ZvcndhcmRBcnJvdy5z
dmciLCB3aWR0aDogOCwgaGVpZ2h0OiAxM307Ci0gICAgICAgICAgICBiYWNrQXJyb3cgPSB7c3Jj
OiAiSW1hZ2VzL0JhY2tBcnJvdy5zdmciLCB3aWR0aDogOCwgaGVpZ2h0OiAxM307Ci0gICAgICAg
IH0KKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBkZWxlZ2F0ZSwgZGlzYWJsZUJhY2tGb3J3YXJk
KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICB0aGlzLl9iYWNrQnV0dG9uTmF2
aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJiYWNr
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCYWNrICglcykiKS5mb3JtYXQodGhpcy5fYmFja0tl
eWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpLCBiYWNrQXJyb3cuc3JjLCBiYWNrQXJyb3cud2lk
dGgsIGJhY2tBcnJvdy5oZWlnaHQpOwotICAgICAgICB0aGlzLl9iYWNrQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
RXZlbnQuQ2xpY2tlZCwgdGhpcy5fYmFja0J1dHRvbkNsaWNrZWQsIHRoaXMpOwotICAgICAgICB0
aGlzLl9iYWNrQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwotICAgICAgICB0
aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2JhY2tCdXR0b25OYXZp
Z2F0aW9uSXRlbSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLlN0eWxlQ2xhc3NOYW1lKTsKIAotICAgICAg
ICB0aGlzLl9mb3J3YXJkQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtKCJmb3J3YXJkIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb3J3
YXJkICglcykiKS5mb3JtYXQodGhpcy5fZm9yd2FyZEtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5h
bWUpLCBmb3J3YXJkQXJyb3cuc3JjLCBmb3J3YXJkQXJyb3cud2lkdGgsIGZvcndhcmRBcnJvdy5o
ZWlnaHQpOwotICAgICAgICB0aGlzLl9mb3J3YXJkQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tl
ZCwgdGhpcy5fZm9yd2FyZEJ1dHRvbkNsaWNrZWQsIHRoaXMpOwotICAgICAgICB0aGlzLl9mb3J3
YXJkQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwotICAgICAgICB0aGlzLl9u
YXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2ZvcndhcmRCdXR0b25OYXZpZ2F0
aW9uSXRlbSk7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXI7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
bmF2aWdhdGlvbkJhci5lbGVtZW50KTsKIAotICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFk
ZE5hdmlnYXRpb25JdGVtKG5ldyBXZWJJbnNwZWN0b3IuRGl2aWRlck5hdmlnYXRpb25JdGVtKTsK
LSAgICB9CisgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlld0NvbnRhaW5lcjsKKyAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250
YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIu
RXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlzLl9jdXJyZW50Q29udGVudFZp
ZXdEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmVsZW1lbnQpOwogCi0gICAgdGhpcy5faGllcmFyY2hp
Y2FsUGF0aE5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRo
TmF2aWdhdGlvbkl0ZW07Ci0gICAgdGhpcy5faGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVt
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9u
SXRlbS5FdmVudC5QYXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQsIHRoaXMuX2hpZXJhcmNoaWNhbFBh
dGhDb21wb25lbnRXYXNTZWxlY3RlZCwgdGhpcyk7Ci0gICAgdGhpcy5fbmF2aWdhdGlvbkJhci5h
ZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9oaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0pOwor
ICAgICAgICB0aGlzLl9maW5kQmFubmVyID0gbmV3IFdlYkluc3BlY3Rvci5GaW5kQmFubmVyKHRo
aXMpOworICAgICAgICB0aGlzLl9maW5kS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmll
ci5Db21tYW5kT3JDb250cm9sLCAiRiIsIHRoaXMuX3Nob3dGaW5kQmFubmVyLmJpbmQodGhpcykp
OworICAgICAgICB0aGlzLl9maW5kQmFubmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkZpbmRCYW5uZXIuRXZlbnQuRGlkU2hvdywgdGhpcy5fZmluZEJhbm5lckRpZFNob3csIHRoaXMp
OworICAgICAgICB0aGlzLl9maW5kQmFubmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkZpbmRCYW5uZXIuRXZlbnQuRGlkSGlkZSwgdGhpcy5fZmluZEJhbm5lckRpZEhpZGUsIHRoaXMp
OwogCi0gICAgdGhpcy5fY29udGVudFZpZXdTZWxlY3Rpb25QYXRoTmF2aWdhdGlvbkl0ZW0gPSBu
ZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbTsKKyAgICAgICAg
dGhpcy5fc2F2ZUtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29u
dHJvbCwgIlMiLCB0aGlzLl9zYXZlLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9zYXZlQXNL
ZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0IHwgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIlMiLCB0aGlzLl9zYXZl
QXMuYmluZCh0aGlzKSk7CiAKLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25J
dGVtKG5ldyBXZWJJbnNwZWN0b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtKTsKKyAgICAg
ICAgaWYgKCFkaXNhYmxlQmFja0ZvcndhcmQpIHsKKyAgICAgICAgICAgIHRoaXMuX2JhY2tLZXli
b2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wgfCBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXkuTGVmdCwgdGhpcy5fYmFja0J1dHRvbkNsaWNrZWQuYmluZCh0aGlz
KSk7CisgICAgICAgICAgICB0aGlzLl9mb3J3YXJkS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJ
bnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5N
b2RpZmllci5Db21tYW5kT3JDb250cm9sIHwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQu
TW9kaWZpZXIuQ29udHJvbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LlJpZ2h0
LCB0aGlzLl9mb3J3YXJkQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKIAotICAgIFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZp
ZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcu
RXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250
ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcyk7Ci0g
ICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LkV2ZW50Lk51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcy5f
Y29udGVudFZpZXdOdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMpOwotICAgIFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250
ZW50Vmlldy5FdmVudC5OYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3
TmF2aWdhdGlvbkl0ZW1zRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgICAgIHZhciBmb3J3YXJk
QXJyb3csIGJhY2tBcnJvdzsKKyAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZvcm0u
aXNMZWdhY3lNYWNPUykgeworICAgICAgICAgICAgICAgIGZvcndhcmRBcnJvdyA9IHtzcmM6ICJJ
bWFnZXMvTGVnYWN5L0ZvcndhcmRBcnJvdy5zdmciLCB3aWR0aDogOSwgaGVpZ2h0OiA5fTsKKyAg
ICAgICAgICAgICAgICBiYWNrQXJyb3cgPSB7c3JjOiAiSW1hZ2VzL0xlZ2FjeS9CYWNrQXJyb3cu
c3ZnIiwgd2lkdGg6IDksIGhlaWdodDogOX07CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIGZvcndhcmRBcnJvdyA9IHtzcmM6ICJJbWFnZXMvRm9yd2FyZEFycm93LnN2ZyIs
IHdpZHRoOiA4LCBoZWlnaHQ6IDEzfTsKKyAgICAgICAgICAgICAgICBiYWNrQXJyb3cgPSB7c3Jj
OiAiSW1hZ2VzL0JhY2tBcnJvdy5zdmciLCB3aWR0aDogOCwgaGVpZ2h0OiAxM307CisgICAgICAg
ICAgICB9CiAKLSAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CisgICAgICAg
ICAgICB0aGlzLl9iYWNrQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtKCJiYWNrIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCYWNrICgl
cykiKS5mb3JtYXQodGhpcy5fYmFja0tleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpLCBiYWNr
QXJyb3cuc3JjLCBiYWNrQXJyb3cud2lkdGgsIGJhY2tBcnJvdy5oZWlnaHQpOworICAgICAgICAg
ICAgdGhpcy5fYmFja0J1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX2JhY2tCdXR0
b25DbGlja2VkLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9u
SXRlbS5lbmFibGVkID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFk
ZE5hdmlnYXRpb25JdGVtKHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRlbSk7CiAKLSAgICB0
aGlzLl9jdXJyZW50Q29udGVudFZpZXdOYXZpZ2F0aW9uSXRlbXMgPSBbXTsKLX07CisgICAgICAg
ICAgICB0aGlzLl9mb3J3YXJkQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
LkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJmb3J3YXJkIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJG
b3J3YXJkICglcykiKS5mb3JtYXQodGhpcy5fZm9yd2FyZEtleWJvYXJkU2hvcnRjdXQuZGlzcGxh
eU5hbWUpLCBmb3J3YXJkQXJyb3cuc3JjLCBmb3J3YXJkQXJyb3cud2lkdGgsIGZvcndhcmRBcnJv
dy5oZWlnaHQpOworICAgICAgICAgICAgdGhpcy5fZm9yd2FyZEJ1dHRvbk5hdmlnYXRpb25JdGVt
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIHRoaXMuX2ZvcndhcmRCdXR0b25DbGlja2VkLCB0aGlzKTsKKyAgICAgICAgICAg
IHRoaXMuX2ZvcndhcmRCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7CisgICAg
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2Zvcndh
cmRCdXR0b25OYXZpZ2F0aW9uSXRlbSk7CiAKLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9y
Lk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkNv
bnRlbnRCcm93c2VyKTsKKyAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdh
dGlvbkl0ZW0obmV3IFdlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW0pOworICAgICAg
ICB9CiAKLVdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5TdHlsZUNsYXNzTmFtZSA9ICJjb250
ZW50LWJyb3dzZXIiOworICAgICAgICB0aGlzLl9oaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0
ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbTsKKyAg
ICAgICAgdGhpcy5faGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5FdmVudC5QYXRo
Q29tcG9uZW50V2FzU2VsZWN0ZWQsIHRoaXMuX2hpZXJhcmNoaWNhbFBhdGhDb21wb25lbnRXYXNT
ZWxlY3RlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlv
bkl0ZW0odGhpcy5faGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtKTsKIAotV2ViSW5zcGVj
dG9yLkNvbnRlbnRCcm93c2VyLkV2ZW50ID0gewotICAgIEN1cnJlbnRSZXByZXNlbnRlZE9iamVj
dHNEaWRDaGFuZ2U6ICJjb250ZW50LWJyb3dzZXItY3VycmVudC1yZXByZXNlbnRlZC1vYmplY3Rz
LWRpZC1jaGFuZ2UiLAotICAgIEN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZTogImNvbnRlbnQt
YnJvd3Nlci1jdXJyZW50LWNvbnRlbnQtdmlldy1kaWQtY2hhbmdlIgotfTsKKyAgICAgICAgdGhp
cy5fY29udGVudFZpZXdTZWxlY3Rpb25QYXRoTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVj
dG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbTsKKworICAgICAgICB0aGlzLl9uYXZp
Z2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKG5ldyBXZWJJbnNwZWN0b3IuRmxleGlibGVTcGFj
ZU5hdmlnYXRpb25JdGVtKTsKIAotV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLAorICAg
ICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UsIHRo
aXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENoYW5nZSwgdGhpcyk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRD
aGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlk
Q2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50Lk51bWJlck9mU2VhcmNoUmVz
dWx0c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdOdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRD
aGFuZ2UsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuTmF2aWdhdGlvbkl0ZW1zRGlk
Q2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld05hdmlnYXRpb25JdGVtc0RpZENoYW5nZSwgdGhpcyk7
CisKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOworCisgICAgICAg
IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld05hdmlnYXRpb25JdGVtcyA9IFtdOworICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF2aWdhdGlvbkJhcigp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkJhcjsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBjb250ZW50Vmlld0NvbnRhaW5lcigpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
ZGVsZWdhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlOwotICAgIH0s
CisgICAgfQogCiAgICAgc2V0IGRlbGVnYXRlKG5ld0RlbGVnYXRlKQogICAgIHsKICAgICAgICAg
dGhpcy5fZGVsZWdhdGUgPSBuZXdEZWxlZ2F0ZSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGN1cnJlbnRDb250ZW50VmlldygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
Y29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHMoKQogICAgIHsKQEAgLTE1NSw0NyAr
MTQzLDQ3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3RzOwotICAgIH0sCisgICAg
fQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIudXBkYXRlTGF5b3V0KCk7CiAgICAgICAg
IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAg
fQogCi0gICAgc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJl
cHJlc2VudGVkT2JqZWN0LCBjb29raWUpCisgICAgc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50
ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QsIGNvb2tpZSkKICAgICB7CiAgICAgICAgIHZhciBj
b250ZW50VmlldyA9IHRoaXMuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNl
bnRlZE9iamVjdCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5z
aG93Q29udGVudFZpZXcoY29udGVudFZpZXcsIGNvb2tpZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBzaG93Q29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3LCBjb29raWUpCisgICAgc2hv
d0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3LCBjb29raWUpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3LCBj
b29raWUpOwotICAgIH0sCisgICAgfQogCi0gICAgY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9i
amVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIG9ubHlFeGlzdGluZykKKyAgICBjb250
ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5RXhpc3Rp
bmcpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY29u
dGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgb25seUV4aXN0
aW5nKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbkdvQmFjazogZnVuY3Rpb24oKQorICAgIGNh
bkdvQmFjaygpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5j
dXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcgJiYgY3Vy
cmVudENvbnRlbnRWaWV3LmNhbkdvQmFjaygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jYW5Hb0JhY2soKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGNhbkdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGNhbkdvRm9y
d2FyZCgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJy
ZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcgJiYgY3VycmVu
dENvbnRlbnRWaWV3LmNhbkdvRm9yd2FyZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jYW5Hb0ZvcndhcmQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGdvQmFjazogZnVuY3Rpb24oKQorICAgIGdvQmFjaygpCiAg
ICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVu
dFZpZXc7CiAgICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcgJiYgY3VycmVudENvbnRlbnRW
aWV3LmNhbkdvQmFjaygpKSB7CkBAIC0yMDgsOSArMTk2LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRl
bnRCcm93c2VyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBUaGUgX3VwZGF0ZUJhY2tGb3J3
YXJkQnV0dG9ucyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgX2N1cnJlbnRDb250ZW50Vmlld0RpZENo
YW5nZSwKICAgICAgICAgLy8gc28gaXQgZG9lcyBub3QgbmVlZCB0byBiZSBjYWxsZWQgaGVyZS4K
LSAgICB9LAorICAgIH0KIAotICAgIGdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGdvRm9yd2Fy
ZCgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50
Q29udGVudFZpZXc7CiAgICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcgJiYgY3VycmVudENv
bnRlbnRWaWV3LmNhbkdvRm9yd2FyZCgpKSB7CkBAIC0yMjMsNjYgKzIxMSw2NiBAQCBXZWJJbnNw
ZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFRoZSBfdXBk
YXRlQmFja0ZvcndhcmRCdXR0b25zIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSBfY3VycmVudENvbnRl
bnRWaWV3RGlkQ2hhbmdlLAogICAgICAgICAvLyBzbyBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNh
bGxlZCBoZXJlLgotICAgIH0sCisgICAgfQogCi0gICAgZmluZEJhbm5lclBlcmZvcm1TZWFyY2g6
IGZ1bmN0aW9uKGZpbmRCYW5uZXIsIHF1ZXJ5KQorICAgIGZpbmRCYW5uZXJQZXJmb3JtU2VhcmNo
KGZpbmRCYW5uZXIsIHF1ZXJ5KQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50Vmll
dyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50
VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNoKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5wZXJmb3JtU2VhcmNoKHF1ZXJ5
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGZpbmRCYW5uZXJTZWFyY2hDbGVhcmVkOiBmdW5jdGlv
bihmaW5kQmFubmVyKQorICAgIGZpbmRCYW5uZXJTZWFyY2hDbGVhcmVkKGZpbmRCYW5uZXIpCiAg
ICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVu
dFZpZXc7CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVu
dFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY3Vy
cmVudENvbnRlbnRWaWV3LnNlYXJjaENsZWFyZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZp
bmRCYW5uZXJTZWFyY2hRdWVyeUZvclNlbGVjdGlvbjogZnVuY3Rpb24oZmluZEJhbm5lcikKKyAg
ICBmaW5kQmFubmVyU2VhcmNoUXVlcnlGb3JTZWxlY3Rpb24oZmluZEJhbm5lcikKICAgICB7CiAg
ICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsK
ICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5z
dXBwb3J0c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVy
biBjdXJyZW50Q29udGVudFZpZXcuc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBmaW5kQmFubmVyUmV2ZWFsUHJldmlvdXNSZXN1bHQ6IGZ1bmN0aW9uKGZp
bmRCYW5uZXIpCisgICAgZmluZEJhbm5lclJldmVhbFByZXZpb3VzUmVzdWx0KGZpbmRCYW5uZXIp
CiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29u
dGVudFZpZXc7CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29u
dGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
Y3VycmVudENvbnRlbnRWaWV3LnJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0KCFmaW5kQmFubmVy
LnNob3dpbmcpOwotICAgIH0sCisgICAgfQogCi0gICAgZmluZEJhbm5lclJldmVhbE5leHRSZXN1
bHQ6IGZ1bmN0aW9uKGZpbmRCYW5uZXIpCisgICAgZmluZEJhbm5lclJldmVhbE5leHRSZXN1bHQo
ZmluZEJhbm5lcikKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlz
LmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwg
IWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBjdXJyZW50Q29udGVudFZpZXcucmV2ZWFsTmV4dFNlYXJjaFJlc3VsdCghZmlu
ZEJhbm5lci5zaG93aW5nKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF9iYWNrQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JhY2tCdXR0b25DbGlj
a2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5nb0JhY2soKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9mb3J3YXJkQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2Zvcndh
cmRCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5nb0ZvcndhcmQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9zYXZlRGF0YVRvRmlsZTogZnVuY3Rpb24oc2F2ZURhdGEs
IGZvcmNlU2F2ZUFzKQorICAgIF9zYXZlRGF0YVRvRmlsZShzYXZlRGF0YSwgZm9yY2VTYXZlQXMp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChzYXZlRGF0YSk7CiAgICAgICAgIGlmICgh
c2F2ZURhdGEpCkBAIC0yOTksNjIgKzI4Nyw2MiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dz
ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIEluc3BlY3Rv
ckZyb250ZW5kSG9zdC5zYXZlKHNhdmVEYXRhLnVybCwgc2F2ZURhdGEuY29udGVudCwgZmFsc2Us
IGZvcmNlU2F2ZUFzIHx8IHNhdmVEYXRhLmZvcmNlU2F2ZUFzKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9zYXZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2F2ZShldmVudCkKICAgICB7CiAgICAg
ICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAg
ICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBw
b3J0c1NhdmUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2F2ZURhdGFU
b0ZpbGUoY3VycmVudENvbnRlbnRWaWV3LnNhdmVEYXRhKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9zYXZlQXM6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zYXZlQXMoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAg
ICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3Vw
cG9ydHNTYXZlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3NhdmVEYXRh
VG9GaWxlKGN1cnJlbnRDb250ZW50Vmlldy5zYXZlRGF0YSwgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfc2hvd0ZpbmRCYW5uZXI6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zaG93RmluZEJh
bm5lcihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlz
LmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwg
IWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICB0aGlzLl9maW5kQmFubmVyLnNob3coKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9maW5kQmFubmVyRGlkU2hvdzogZnVuY3Rpb24oZXZlbnQpCisgICAgX2ZpbmRCYW5uZXJEaWRT
aG93KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMu
Y3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAh
Y3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNoKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5hdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFy
Y2hSZXN1bHQgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZpbmRCYW5uZXJEaWRIaWRl
OiBmdW5jdGlvbihldmVudCkKKyAgICBfZmluZEJhbm5lckRpZEhpZGUoZXZlbnQpCiAgICAgewog
ICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7
CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcu
c3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY3VycmVudENv
bnRlbnRWaWV3LmF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdCA9IGZhbHNlOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRWaWV3TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlk
Q2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudFZpZXdOdW1iZXJPZlNlYXJjaFJl
c3VsdHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9
PSB0aGlzLmN1cnJlbnRDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICB0aGlzLl9maW5kQmFubmVyLm51bWJlck9mUmVzdWx0cyA9IHRoaXMuY3VycmVudENvbnRlbnRW
aWV3Lm51bWJlck9mU2VhcmNoUmVzdWx0czsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVI
aWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW06IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0
KQorICAgIF91cGRhdGVIaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0ocmVwcmVzZW50ZWRP
YmplY3QpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuZGVsZWdhdGUgfHwgdHlwZW9mIHRoaXMu
ZGVsZWdhdGUuY29udGVudEJyb3dzZXJUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0ICE9
PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzY5LDkgKzM1Nyw5IEBAIFdl
Ykluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICB0aGlzLl9oaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uY29tcG9uZW50cyA9IHBh
dGhDb21wb25lbnRzOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUNvbnRlbnRWaWV3U2Vs
ZWN0aW9uUGF0aE5hdmlnYXRpb25JdGVtOiBmdW5jdGlvbihjb250ZW50VmlldykKKyAgICBfdXBk
YXRlQ29udGVudFZpZXdTZWxlY3Rpb25QYXRoTmF2aWdhdGlvbkl0ZW0oY29udGVudFZpZXcpCiAg
ICAgewogICAgICAgICB2YXIgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMgPSBjb250ZW50VmlldyA/
IGNvbnRlbnRWaWV3LnNlbGVjdGlvblBhdGhDb21wb25lbnRzIHx8IFtdIDogW107CiAgICAgICAg
IHRoaXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aE5hdmlnYXRpb25JdGVtLmNvbXBvbmVudHMg
PSBzZWxlY3Rpb25QYXRoQ29tcG9uZW50czsKQEAgLTM4OSwxOCArMzc3LDE4IEBAIFdlYkluc3Bl
Y3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9uYXZp
Z2F0aW9uQmFyLmluc2VydE5hdmlnYXRpb25JdGVtKHRoaXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9u
UGF0aE5hdmlnYXRpb25JdGVtLCBoaWVyYXJjaGljYWxQYXRoSXRlbUluZGV4ICsgMSk7CiAgICAg
ICAgICAgICB0aGlzLl9oaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uYWx3YXlzU2hvd0xh
c3RQYXRoQ29tcG9uZW50U2VwYXJhdG9yID0gdHJ1ZTsKICAgICAgICAgfQotICAgIH0sCisgICAg
fQogCi0gICAgX3VwZGF0ZUJhY2tGb3J3YXJkQnV0dG9uczogZnVuY3Rpb24oKQorICAgIF91cGRh
dGVCYWNrRm9yd2FyZEJ1dHRvbnMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9iYWNrQnV0
dG9uTmF2aWdhdGlvbkl0ZW0gfHwgIXRoaXMuX2ZvcndhcmRCdXR0b25OYXZpZ2F0aW9uSXRlbSkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9iYWNrQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uZW5hYmxlZCA9IHRoaXMuY2FuR29CYWNrKCk7CiAgICAgICAgIHRoaXMuX2ZvcndhcmRC
dXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5jYW5Hb0ZvcndhcmQoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF91cGRhdGVDb250ZW50Vmlld05hdmlnYXRpb25JdGVtczogZnVuY3Rp
b24oKQorICAgIF91cGRhdGVDb250ZW50Vmlld05hdmlnYXRpb25JdGVtcygpCiAgICAgewogICAg
ICAgICB2YXIgbmF2aWdhdGlvbkJhciA9IHRoaXMubmF2aWdhdGlvbkJhcjsKIApAQCAtNDM2LDkg
KzQyNCw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIC8vIFJlbWVtYmVyIHRoZSBuYXZpZ2F0aW9uIGl0ZW1zIHdlIGluc2VydGVkIHNvIHdlIGNh
biByZW1vdmUgdGhlbQogICAgICAgICAvLyBmb3IgdGhlIG5leHQgY29udGVudCB2aWV3LgogICAg
ICAgICB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdOYXZpZ2F0aW9uSXRlbXMgPSBuZXdOYXZpZ2F0
aW9uSXRlbXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlRmluZEJhbm5lcjogZnVuY3Rp
b24oY3VycmVudENvbnRlbnRWaWV3KQorICAgIF91cGRhdGVGaW5kQmFubmVyKGN1cnJlbnRDb250
ZW50VmlldykKICAgICB7CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3KSB7CiAgICAg
ICAgICAgICB0aGlzLl9maW5kQmFubmVyLnRhcmdldEVsZW1lbnQgPSBudWxsOwpAQCAtNDUzLDE2
ICs0NDEsMTYgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5hdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFy
Y2hSZXN1bHQgPSB0aGlzLl9maW5kQmFubmVyLnNob3dpbmc7CiAgICAgICAgICAgICBjdXJyZW50
Q29udGVudFZpZXcucGVyZm9ybVNlYXJjaCh0aGlzLl9maW5kQmFubmVyLnNlYXJjaFF1ZXJ5KTsK
ICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2Vu
dGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50U29vbjogZnVuY3Rpb24oKQorICAgIF9kaXNwYXRjaEN1
cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudFNvb24oKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2N1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VUaW1lb3V0KQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9jdXJyZW50UmVwcmVzZW50ZWRPYmpl
Y3RzRGlkQ2hhbmdlVGltZW91dCA9IHNldFRpbWVvdXQodGhpcy5fZGlzcGF0Y2hDdXJyZW50UmVw
cmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZlbnQuYmluZCh0aGlzKSwgMCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZl
bnQ6IGZ1bmN0aW9uKCkKKyAgICBfZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlk
Q2hhbmdlRXZlbnQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRSZXByZXNlbnRl
ZE9iamVjdHNEaWRDaGFuZ2VUaW1lb3V0KSB7CiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhp
cy5fY3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZVRpbWVvdXQpOwpAQCAtNDcwLDkg
KzQ1OCw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ29udGVudEJyb3dzZXIuRXZlbnQuQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5n
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9u
ZW50RGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudFZpZXdTZWxlY3Rpb25Q
YXRoQ29tcG9uZW50RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRh
cmdldCAhPT0gdGhpcy5jdXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC00ODUsMTcgKzQ3MywxNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dCgpOwogCiAgICAg
ICAgIHRoaXMuX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50
U29vbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVw
cmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudFZp
ZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmN1cnJlbnRDb250ZW50VmlldykKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNl
bnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudFNvb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9j
dXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jdXJyZW50
Q29udGVudFZpZXdEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENv
bnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAKQEAgLTUxMSwxOCArNDk5LDE4
IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5F
dmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogCiAgICAgICAgIHRoaXMuX2Rpc3Bh
dGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50KCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfY29udGVudFZpZXdOYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2U6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9jb250ZW50Vmlld05hdmlnYXRpb25JdGVtc0RpZENoYW5nZShldmVudCkK
ICAgICB7CiAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuY3VycmVudENvbnRlbnRW
aWV3KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRW
aWV3TmF2aWdhdGlvbkl0ZW1zKCk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIudXBkYXRl
TGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGllcmFyY2hpY2FsUGF0aENvbXBvbmVu
dFdhc1NlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGllcmFyY2hpY2FsUGF0aENvbXBv
bmVudFdhc1NlbGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZl
bnQuZGF0YS5wYXRoQ29tcG9uZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVl
RWxlbWVudFBhdGhDb21wb25lbnQpOwogCkBAIC01NDAsNCArNTI4LDkgQEAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3Iu
Q29udGVudEJyb3dzZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLlN0eWxlQ2xhc3NOYW1lID0g
ImNvbnRlbnQtYnJvd3NlciI7CisKK1dlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5FdmVudCA9
IHsKKyAgICBDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlOiAiY29udGVudC1icm93
c2VyLWN1cnJlbnQtcmVwcmVzZW50ZWQtb2JqZWN0cy1kaWQtY2hhbmdlIiwKKyAgICBDdXJyZW50
Q29udGVudFZpZXdEaWRDaGFuZ2U6ICJjb250ZW50LWJyb3dzZXItY3VycmVudC1jb250ZW50LXZp
ZXctZGlkLWNoYW5nZSIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxvd0RPTVRyZWVDb250ZW50Vmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93RE9NVHJlZUNv
bnRlbnRWaWV3LmpzCmluZGV4IDNkYzBhNmYuLmYzMjQ2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93RE9NVHJlZUNvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNyw0MSArMjgsMzkgQEAKICAqIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50Rmxvd0RPTVRyZWVDb250ZW50Vmll
dyA9IGZ1bmN0aW9uKGNvbnRlbnRGbG93KQorV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93RE9NVHJl
ZUNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc29sZS5hc3NlcnQo
Y29udGVudEZsb3cpOwotCi0gICAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5jYWxs
KHRoaXMsIGNvbnRlbnRGbG93KTsKKyAgICBjb25zdHJ1Y3Rvcihjb250ZW50RmxvdykKKyAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRGbG93KTsKIAotICAgIGNvbnRlbnRGbG93
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50LkNvbnRlbnRO
b2RlV2FzQWRkZWQsIHRoaXMuX2NvbnRlbnROb2RlV2FzQWRkZWQsIHRoaXMpOwotICAgIGNvbnRl
bnRGbG93LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50LkNv
bnRlbnROb2RlV2FzUmVtb3ZlZCwgdGhpcy5fY29udGVudE5vZGVXYXNSZW1vdmVkLCB0aGlzKTsK
KyAgICAgICAgc3VwZXIoY29udGVudEZsb3cpOwogCi0gICAgdGhpcy5fY3JlYXRlQ29udGVudFRy
ZWVzKCk7Ci19OworICAgICAgICBjb250ZW50Rmxvdy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Db250ZW50Rmxvdy5FdmVudC5Db250ZW50Tm9kZVdhc0FkZGVkLCB0aGlzLl9jb250ZW50
Tm9kZVdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgY29udGVudEZsb3cuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNSZW1vdmVkLCB0
aGlzLl9jb250ZW50Tm9kZVdhc1JlbW92ZWQsIHRoaXMpOwogCi1XZWJJbnNwZWN0b3IuQ29udGVu
dEZsb3dET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAgICAgICAgdGhp
cy5fY3JlYXRlQ29udGVudFRyZWVzKCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBj
bG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Rmxv
dy5FdmVudC5Db250ZW50Tm9kZVdhc0FkZGVkLCB0aGlzLl9jb250ZW50Tm9kZVdhc0FkZGVkLCB0
aGlzKTsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Db250ZW50Rmxvdy5FdmVudC5Db250ZW50Tm9kZVdhc1JlbW92ZWQsIHRo
aXMuX2NvbnRlbnROb2RlV2FzUmVtb3ZlZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5E
T01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZC5jYWxsKHRoaXMpOwotICAgIH0sCisg
ICAgfQogCi0gICAgZ2V0U2VhcmNoQ29udGV4dE5vZGVzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAg
ICBnZXRTZWFyY2hDb250ZXh0Tm9kZXMoY2FsbGJhY2spCiAgICAgewogICAgICAgICBjYWxsYmFj
ayh0aGlzLmRvbVRyZWVPdXRsaW5lLmNoaWxkcmVuLm1hcChmdW5jdGlvbih0cmVlT3V0bGluZSkg
ewogICAgICAgICAgICAgcmV0dXJuIHRyZWVPdXRsaW5lLnJlcHJlc2VudGVkT2JqZWN0LmlkOwog
ICAgICAgICB9KSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfY3Jl
YXRlQ29udGVudFRyZWVzOiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZUNvbnRlbnRUcmVlcygpCiAg
ICAgewogICAgICAgICB2YXIgY29udGVudE5vZGVzID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5j
b250ZW50Tm9kZXM7CiAgICAgICAgIGZvciAodmFyIGNvbnRlbnROb2RlIG9mIGNvbnRlbnROb2Rl
cykKQEAgLTY5LDkgKzY4LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93RE9NVHJlZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgZG9jdW1lbnRVUkwgPSBjb250ZW50
Tm9kZXMubGVuZ3RoID8gY29udGVudE5vZGVzWzBdLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRVUkwg
OiBudWxsOwogICAgICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0ZWROb2RlQWZ0ZXJVcGRhdGUoZG9j
dW1lbnRVUkwsIGNvbnRlbnROb2Rlc1swXSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVu
dE5vZGVXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnROb2RlV2FzQWRkZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9y
LkRPTVRyZWVFbGVtZW50KGV2ZW50LmRhdGEubm9kZSk7CiAgICAgICAgIGlmICghZXZlbnQuZGF0
YS5iZWZvcmUpIHsKQEAgLTg2LDkgKzg1LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93RE9N
VHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaW5k
ZXggIT09IC0xKTsKIAogICAgICAgICB0aGlzLmRvbVRyZWVPdXRsaW5lLmluc2VydENoaWxkKHRy
ZWVFbGVtZW50LCBpbmRleCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudE5vZGVXYXNS
ZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudE5vZGVXYXNSZW1vdmVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5kb21UcmVlT3V0bGluZS5m
aW5kVHJlZUVsZW1lbnQoZXZlbnQuZGF0YS5ub2RlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
dHJlZUVsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanMKaW5kZXgg
MjQ2OWRiYy4uN2UyOGE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxvd1RyZWVFbGVtZW50Lmpz
CkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJ
bmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0y
NywxOCArMjgsMTYgQEAKICAqIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db250
ZW50Rmxvd1RyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNw
ZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudCA9IGNsYXNzIENvbnRlbnRGbG93VHJlZUVsZW1l
bnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29s
ZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVu
dEZsb3cpOwotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBb
V2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUsIFdlYklu
c3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LkNvbnRlbnRGbG93SWNvblN0eWxlQ2xhc3NO
YW1lXSwgcmVwcmVzZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIGZh
bHNlKTsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkNvbnRlbnRGbG93KTsKIAotICAgIHRoaXMuc21hbGwgPSB0cnVlOwotfTsKLQotV2ViSW5zcGVj
dG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuQ29udGVudEZsb3dJY29uU3R5bGVDbGFzc05hbWUg
PSAiY29udGVudC1mbG93LWljb24iOworICAgICAgICBzdXBlcihbV2ViSW5zcGVjdG9yLkNvbnRl
bnRGbG93VHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5Db250ZW50Rmxv
d1RyZWVFbGVtZW50LkNvbnRlbnRGbG93SWNvblN0eWxlQ2xhc3NOYW1lXSwgcmVwcmVzZW50ZWRP
YmplY3QubmFtZSwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKIAotV2ViSW5zcGVj
dG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudAorICAgICAgICB0aGlzLnNtYWxs
ID0gdHJ1ZTsKKyAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5w
cm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudC5Db250ZW50Rmxv
d0ljb25TdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50LWZsb3ctaWNvbiI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Lmpz
CmluZGV4IDgyYmI4OWYuLjE3MGU2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMSArMjMsMjYg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rv
ci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogewotICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yID09PSBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcpIHsKLSAgICAgICAgLy8gV2hlbiBpbnN0YW50aWF0ZWQgZGlyZWN0bHkgcmV0dXJuIGFu
IGluc3RhbmNlIG9mIGEgdHlwZS1iYXNlZCBjb25jcmV0ZSBzdWJjbGFzcy4KKyAgICBjb25zdHJ1
Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdhYmxlKHJlcHJlc2VudGVkT2JqZWN0KSk7CisK
KyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9IHJl
cHJlc2VudGVkT2JqZWN0OworCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7CisKKyAgICAgICAgdGhpcy5f
cGFyZW50Q29udGFpbmVyID0gbnVsbDsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMKIAorICAgIHN0
YXRpYyBjcmVhdGUocmVwcmVzZW50ZWRPYmplY3QpCisgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChyZXByZXNlbnRlZE9iamVjdCk7CiAKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKQpAQCAtOTIsMjQzICsxMDcsMjIwIEBAIFdl
Ykluc3BlY3Rvci5Db250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAg
ICAgICB0aHJvdyAiQ2FuJ3QgbWFrZSBhIENvbnRlbnRWaWV3IGZvciBhbiB1bmtub3duIHJlcHJl
c2VudGVkT2JqZWN0LiI7CiAgICAgfQogCi0gICAgLy8gQ29uY3JldGUgb2JqZWN0IGluc3RhbnRp
YXRpb24uCi0gICAgY29uc29sZS5hc3NlcnQodGhpcy5jb25zdHJ1Y3RvciAhPT0gV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3ICYmIHRoaXMgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcpOwotICAgIGNvbnNvbGUuYXNzZXJ0KFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdh
YmxlKHJlcHJlc2VudGVkT2JqZWN0KSk7Ci0KLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAv
LyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9yZXByZXNlbnRl
ZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0OwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOwotCi0gICAgdGhpcy5f
cGFyZW50Q29udGFpbmVyID0gbnVsbDsKLX07Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5z
cGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVj
dG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3KTsKLQotV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmlzVmlld2FibGUgPSBm
dW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKLXsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5n
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlm
IChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2Jq
ZWN0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdCkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkRhdGFiYXNlVGFibGVPYmplY3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdCkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlKQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxpY2F0
aW9uQ2FjaGVGcmFtZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVRyZWUpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5M
b2dPYmplY3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50RmxvdykKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgaWYgKHR5cGVvZiByZXByZXNlbnRlZE9iamVjdCA9PT0gInN0cmluZyIgfHwgcmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBTdHJpbmcpCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIHJldHVybiBmYWxzZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5TdHlsZUNs
YXNzTmFtZSA9ICJjb250ZW50LXZpZXciOwotCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZl
bnQgPSB7Ci0gICAgU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2U6ICJjb250ZW50LXZp
ZXctc2VsZWN0aW9uLXBhdGgtY29tcG9uZW50cy1kaWQtY2hhbmdlIiwKLSAgICBTdXBwbGVtZW50
YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2U6ICJjb250ZW50LXZpZXctc3VwcGxlbWVudGFs
LXJlcHJlc2VudGVkLW9iamVjdHMtZGlkLWNoYW5nZSIsCi0gICAgTnVtYmVyT2ZTZWFyY2hSZXN1
bHRzRGlkQ2hhbmdlOiAiY29udGVudC12aWV3LW51bWJlci1vZi1zZWFyY2gtcmVzdWx0cy1kaWQt
Y2hhbmdlIiwKLSAgICBOYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2U6ICJjb250ZW50LXZpZXctbmF2
aWdhdGlvbi1pdGVtcy1kaWQtY2hhbmdlIgotfTsKLQotV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LAorICAgIHN0YXRpYyBpc1ZpZXdhYmxlKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U2NyaXB0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChyZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZykKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3Qp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QpCisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRl
eGVkRGF0YWJhc2VPYmplY3RTdG9yZSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmVJbmRleCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZUZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01UcmVlKQorICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5Mb2dPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRG
bG93KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICh0eXBlb2YgcmVwcmVz
ZW50ZWRPYmplY3QgPT09ICJzdHJpbmciIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
U3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCByZXByZXNlbnRlZE9iamVjdCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgbmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7CiAgICAgICAgIC8vIE5hdmln
YXRpb24gaXRlbXMgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBieSB0aGUgQ29udGVudEJyb3dzZXIg
aW5zdGFuY2UsCiAgICAgICAgIC8vIG1lYW50IHRvIGJlIHN1YmNsYXNzZWQuIEltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBbXTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBhbGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsKICAgICAgICAgLy8g
QWxsb3cgYW55IG5hdmlnYXRpb24gc2lkZWJhciBwYW5lbC4KICAgICAgICAgcmV0dXJuIFtdOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50Q29udGFpbmVy
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRDb250YWluZXI7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgdmlzaWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
dmlzaWJsZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB2aXNpYmxlKGZsYWcpCiAgICAgewog
ICAgICAgICB0aGlzLl92aXNpYmxlID0gZmxhZzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBz
Y3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3Vi
Y2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIFtdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNo
b3VsZEtlZXBFbGVtZW50c1Njcm9sbGVkVG9Cb3R0b20oKQogICAgIHsKICAgICAgICAgLy8gSW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CiAgICAgICAg
IC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBbXTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBzdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHMoKQogICAg
IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJu
IFtdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU3BsaXRDb250ZW50QnJvd3Nl
cigpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rp
b24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBi
eSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAg
ICBzaG93bigpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgot
ICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAg
ICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9
CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAg
Ly8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVU
b0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nvb2tpZShjb29raWUpCiAgICAg
ewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQog
Ci0gICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICByZXN0b3JlRnJv
bUNvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFz
c2VzLgotICAgIH0sCisgICAgfQogCi0gICAgY2FuR29CYWNrOiBmdW5jdGlvbigpCisgICAgY2Fu
R29CYWNrKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbkdvRm9yd2FyZDog
ZnVuY3Rpb24oKQorICAgIGNhbkdvRm9yd2FyZCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBnb0JhY2s6IGZ1bmN0aW9uKCkKKyAgICBnb0JhY2soKQogICAgIHsKICAgICAgICAg
Ly8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIGdvRm9y
d2FyZDogZnVuY3Rpb24oKQorICAgIGdvRm9yd2FyZCgpCiAgICAgewogICAgICAgICAvLyBJbXBs
ZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRz
U2VhcmNoKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBudW1iZXJPZlNl
YXJjaFJlc3VsdHMoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nl
cy4KICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFzUGVy
Zm9ybWVkU2VhcmNoKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhdXRv
bWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQocmV2ZWFsKQogICAgIHsKICAgICAgICAg
Ly8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIHBlcmZv
cm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5KQorICAgIHBlcmZvcm1TZWFyY2gocXVlcnkpCiAgICAg
ewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQog
Ci0gICAgc2VhcmNoQ2xlYXJlZDogZnVuY3Rpb24oKQorICAgIHNlYXJjaENsZWFyZWQoKQogICAg
IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0K
IAotICAgIHNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbjogZnVuY3Rpb24oKQorICAgIHNlYXJjaFF1
ZXJ5V2l0aFNlbGVjdGlvbigpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJj
bGFzc2VzLgogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVh
bFByZXZpb3VzU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICByZXZlYWxQ
cmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cykKICAgICB7CiAgICAgICAgIC8vIEltcGxl
bWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxOZXh0U2Vh
cmNoUmVzdWx0OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICByZXZlYWxOZXh0U2VhcmNoUmVz
dWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQtdmlldyI7CisKK1dlYkluc3BlY3Rv
ci5Db250ZW50Vmlldy5FdmVudCA9IHsKKyAgICBTZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENo
YW5nZTogImNvbnRlbnQtdmlldy1zZWxlY3Rpb24tcGF0aC1jb21wb25lbnRzLWRpZC1jaGFuZ2Ui
LAorICAgIFN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZTogImNvbnRlbnQt
dmlldy1zdXBwbGVtZW50YWwtcmVwcmVzZW50ZWQtb2JqZWN0cy1kaWQtY2hhbmdlIiwKKyAgICBO
dW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2U6ICJjb250ZW50LXZpZXctbnVtYmVyLW9mLXNl
YXJjaC1yZXN1bHRzLWRpZC1jaGFuZ2UiLAorICAgIE5hdmlnYXRpb25JdGVtc0RpZENoYW5nZTog
ImNvbnRlbnQtdmlldy1uYXZpZ2F0aW9uLWl0ZW1zLWRpZC1jaGFuZ2UiCit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXdD
b250YWluZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZW50Vmlld0NvbnRhaW5lci5qcwppbmRleCBjMWVjMTEwLi4xMjM4ODU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0Nv
bnRhaW5lci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNjYgKzIzLDU4IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29u
dGFpbmVyID0gZnVuY3Rpb24oZWxlbWVudCkKK1dlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRh
aW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIuU3R5bGVDbGFzc05hbWUpOwotCi0gICAg
dGhpcy5fYmFja0ZvcndhcmRMaXN0ID0gW107Ci0gICAgdGhpcy5fY3VycmVudEluZGV4ID0gLTE7
Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIuU3R5bGVDbGFzc05hbWUg
PSAiY29udGVudC12aWV3LWNvbnRhaW5lciI7CisgICAgY29uc3RydWN0b3IoZWxlbWVudCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5l
ci5FdmVudCA9IHsKLSAgICBDdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2U6ICJjb250ZW50LXZp
ZXctY29udGFpbmVyLWN1cnJlbnQtY29udGVudC12aWV3LWRpZC1jaGFuZ2UiCi19OworICAgICAg
ICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Db250
ZW50Vmlld0NvbnRhaW5lci5TdHlsZUNsYXNzTmFtZSk7CiAKLVdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0NvbnRhaW5lciwKKyAgICAgICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0ID0g
W107CisgICAgICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IC0xOworICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Vs
ZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY3VycmVudEluZGV4KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50SW5kZXg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgYmFja0ZvcndhcmRMaXN0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9iYWNrRm9y
d2FyZExpc3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY3VycmVudENvbnRlbnRWaWV3KCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPCAwIHx8IHRoaXMuX2N1cnJl
bnRJbmRleCA+IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxKQogICAgICAgICAgICAg
cmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiB0aGlzLl9iYWNrRm9yd2FyZExpc3RbdGhpcy5f
Y3VycmVudEluZGV4XS5jb250ZW50VmlldzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjdXJy
ZW50QmFja0ZvcndhcmRFbnRyeSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY3VycmVudElu
ZGV4IDwgMCB8fCB0aGlzLl9jdXJyZW50SW5kZXggPiB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVu
Z3RoIC0gMSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICByZXR1cm4gdGhpcy5f
YmFja0ZvcndhcmRMaXN0W3RoaXMuX2N1cnJlbnRJbmRleF07Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAg
ICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3Owog
ICAgICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAgY3VycmVudENvbnRl
bnRWaWV3LnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgY29udGVudFZpZXdG
b3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIG9ubHlFeGlz
dGluZykKKyAgICBjb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2Jq
ZWN0LCBvbmx5RXhpc3RpbmcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNl
bnRlZE9iamVjdCk7CiAgICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCkBAIC0xMDksOSAr
MTAxLDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICB0cnkgewogICAgICAgICAgICAgLy8gTm8gZXhpc3RpbmcgY29udGVudCB2aWV3
IGZvdW5kLCBtYWtlIGEgbmV3IG9uZS4KLSAgICAgICAgICAgIGNvbnRlbnRWaWV3ID0gbmV3IFdl
Ykluc3BlY3Rvci5Db250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAgICAgICBj
b250ZW50VmlldyA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jcmVhdGUocmVwcmVzZW50ZWRP
YmplY3QpOwogICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9y
KGUpOworICAgICAgICAgICAgY29uc29sZS5lcnJvcihlLCBlLnN0YWNrKTsKICAgICAgICAgICAg
IHJldHVybiBudWxsOwogICAgICAgICB9CiAKQEAgLTEyMSw5ICsxMTMsOSBAQCBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICByZXByZXNlbnRl
ZE9iamVjdC5fX2NvbnRlbnRWaWV3cy5wdXNoKGNvbnRlbnRWaWV3KTsKIAogICAgICAgICByZXR1
cm4gY29udGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93Q29udGVudFZpZXdGb3JS
ZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgc2hvd0Nv
bnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewog
ICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0aGlzLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRP
YmplY3QocmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICBpZiAoIWNvbnRlbnRWaWV3KQpAQCAt
MTMyLDkgKzEyNCw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KTsKIAogICAg
ICAgICByZXR1cm4gY29udGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93Q29udGVu
dFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3LCBjb29raWUpCisgICAgc2hvd0NvbnRlbnRWaWV3
KGNvbnRlbnRWaWV3LCBjb29raWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb250
ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyk7CiAgICAgICAgIGlm
ICghKGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3KSkKQEAg
LTE1MCw3ICsxNDIsNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90
eXBlID0gewogICAgICAgICB2YXIgcHJvdmlzaW9uYWxFbnRyeSA9IG5ldyBXZWJJbnNwZWN0b3Iu
QmFja0ZvcndhcmRFbnRyeShjb250ZW50VmlldywgY29va2llKTsKICAgICAgICAgLy8gRG9uJ3Qg
ZG8gYW55dGhpbmcgaWYgd2Ugd291bGQgaGF2ZSBhZGRlZCBhbiBpZGVudGljYWwgYmFjay9mb3J3
YXJkIGxpc3QgZW50cnkuCiAgICAgICAgIGlmIChjdXJyZW50RW50cnkgJiYgY3VycmVudEVudHJ5
LmNvbnRlbnRWaWV3ID09PSBjb250ZW50VmlldyAmJiBPYmplY3Quc2hhbGxvd0VxdWFsKHByb3Zp
c2lvbmFsRW50cnkuY29va2llLCBjdXJyZW50RW50cnkuY29va2llKSkgewotICAgICAgICAgICAg
Y29uc3Qgc2hvdWxkQ2FsbFNob3duID0gZmFsc2U7CisgICAgICAgICAgICB2YXIgc2hvdWxkQ2Fs
bFNob3duID0gZmFsc2U7CiAgICAgICAgICAgICBjdXJyZW50RW50cnkucHJlcGFyZVRvU2hvdyhz
aG91bGRDYWxsU2hvd24pOwogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRFbnRyeS5jb250ZW50
VmlldzsKICAgICAgICAgfQpAQCAtMTgzLDkgKzE3NSw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2hvd0JhY2tGb3J3YXJk
RW50cnlGb3JJbmRleChuZXdJbmRleCk7CiAKICAgICAgICAgcmV0dXJuIGNvbnRlbnRWaWV3Owot
ICAgIH0sCisgICAgfQogCi0gICAgc2hvd0JhY2tGb3J3YXJkRW50cnlGb3JJbmRleDogZnVuY3Rp
b24oaW5kZXgpCisgICAgc2hvd0JhY2tGb3J3YXJkRW50cnlGb3JJbmRleChpbmRleCkKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPD0gdGhpcy5fYmFj
a0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpOwogICAgICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4
ID4gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpCkBAIC0yMDksOSArMjAxLDkgQEAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX3Nob3dFbnRyeShjdXJyZW50RW50cnksIGZhbHNlKTsKIAogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWlu
ZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHJlcGxhY2VDb250ZW50VmlldzogZnVuY3Rpb24ob2xkQ29udGVudFZpZXcsIG5ld0NvbnRl
bnRWaWV3KQorICAgIHJlcGxhY2VDb250ZW50VmlldyhvbGRDb250ZW50VmlldywgbmV3Q29udGVu
dFZpZXcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChvbGRDb250ZW50VmlldyBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyk7CiAgICAgICAgIGlmICghKG9sZENvbnRl
bnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3KSkKQEAgLTI1MCw5ICsy
NDIsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5fc2hvd0VudHJ5KHRoaXMuY3VycmVudEJhY2tGb3J3YXJkRW50cnks
IHRydWUpOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENo
YW5nZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlQWxsQ29udGVudFZp
ZXdzT2ZQcm90b3R5cGU6IGZ1bmN0aW9uKGNvbnN0cnVjdG9yKQorICAgIGNsb3NlQWxsQ29udGVu
dFZpZXdzT2ZQcm90b3R5cGUoY29uc3RydWN0b3IpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X2JhY2tGb3J3YXJkTGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRo
aXMuX2N1cnJlbnRJbmRleCA9PT0gLTEpOwpAQCAtMzA2LDkgKzI5OCw5IEBAIFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9z
aG93RW50cnkoY3VycmVudEVudHJ5LCB0cnVlKTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5D
dXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBjbG9zZUFsbENvbnRlbnRWaWV3czogZnVuY3Rpb24oKQorICAgIGNsb3NlQWxsQ29udGVu
dFZpZXdzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0
aCkgewogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY3VycmVudEluZGV4ID09PSAt
MSk7CkBAIC0zMjcsNjUgKzMxOSw2NSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWlu
ZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jdXJyZW50SW5kZXggPSAtMTsKIAogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGNhbkdvQmFjazogZnVuY3Rpb24oKQorICAgIGNhbkdvQmFjaygpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudEluZGV4ID4gMDsKLSAgICB9LAorICAgIH0K
IAotICAgIGNhbkdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGNhbkdvRm9yd2FyZCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudEluZGV4IDwgdGhpcy5fYmFja0ZvcndhcmRM
aXN0Lmxlbmd0aCAtIDE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnb0JhY2s6IGZ1bmN0aW9uKCkK
KyAgICBnb0JhY2soKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmNhbkdvQmFjaygpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLnNob3dCYWNrRm9yd2FyZEVudHJ5Rm9ySW5k
ZXgodGhpcy5fY3VycmVudEluZGV4IC0gMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnb0Zvcndh
cmQ6IGZ1bmN0aW9uKCkKKyAgICBnb0ZvcndhcmQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
LmNhbkdvRm9yd2FyZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLnNob3dC
YWNrRm9yd2FyZEVudHJ5Rm9ySW5kZXgodGhpcy5fY3VycmVudEluZGV4ICsgMSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAg
ICAgIHZhciBjdXJyZW50RW50cnkgPSB0aGlzLmN1cnJlbnRCYWNrRm9yd2FyZEVudHJ5OwogICAg
ICAgICBpZiAoIWN1cnJlbnRFbnRyeSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0
aGlzLl9zaG93RW50cnkoY3VycmVudEVudHJ5LCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICB2YXIgY3Vy
cmVudEVudHJ5ID0gdGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeTsKICAgICAgICAgaWYgKCFj
dXJyZW50RW50cnkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5faGlkZUVu
dHJ5KGN1cnJlbnRFbnRyeSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAg
ICBfYWRkQ29udGVudFZpZXdFbGVtZW50OiBmdW5jdGlvbihjb250ZW50VmlldykKKyAgICBfYWRk
Q29udGVudFZpZXdFbGVtZW50KGNvbnRlbnRWaWV3KQogICAgIHsKICAgICAgICAgaWYgKGNvbnRl
bnRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZSAhPT0gdGhpcy5fZWxlbWVudCkKICAgICAgICAgICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudFZpZXcuZWxlbWVudCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfcmVtb3ZlQ29udGVudFZpZXdFbGVtZW50OiBmdW5jdGlvbihjb250ZW50
VmlldykKKyAgICBfcmVtb3ZlQ29udGVudFZpZXdFbGVtZW50KGNvbnRlbnRWaWV3KQogICAgIHsK
ICAgICAgICAgaWYgKGNvbnRlbnRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgICAgICAg
IGNvbnRlbnRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb250ZW50Vmlldy5l
bGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kaXNhc3NvY2lhdGVGcm9tQ29udGVudFZp
ZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAgIF9kaXNhc3NvY2lhdGVGcm9tQ29udGVudFZp
ZXcoY29udGVudFZpZXcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghY29udGVudFZp
ZXcudmlzaWJsZSk7CiAKQEAgLTM5OCwxNyArMzkwLDE3IEBAIFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0Ll9f
Y29udGVudFZpZXdzLnJlbW92ZShjb250ZW50Vmlldyk7CiAKICAgICAgICAgY29udGVudFZpZXcu
Y2xvc2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd0VudHJ5OiBmdW5jdGlvbihlbnRy
eSwgc2hvdWxkQ2FsbFNob3duKQorICAgIF9zaG93RW50cnkoZW50cnksIHNob3VsZENhbGxTaG93
bikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGVudHJ5IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkJhY2tGb3J3YXJkRW50cnkpOwogCiAgICAgICAgIHRoaXMuX2FkZENvbnRlbnRWaWV3
RWxlbWVudChlbnRyeS5jb250ZW50Vmlldyk7CiAgICAgICAgIGVudHJ5LnByZXBhcmVUb1Nob3co
c2hvdWxkQ2FsbFNob3duKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oaWRlRW50cnk6IGZ1bmN0
aW9uKGVudHJ5KQorICAgIF9oaWRlRW50cnkoZW50cnkpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChlbnRyeSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5KTsK
IApAQCAtNDE3LDQgKzQwOSw4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5w
cm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFp
bmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsK
K1dlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5TdHlsZUNsYXNzTmFtZSA9ICJjb250
ZW50LXZpZXctY29udGFpbmVyIjsKKworV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVy
LkV2ZW50ID0geworICAgIEN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZTogImNvbnRlbnQtdmll
dy1jb250YWluZXItY3VycmVudC1jb250ZW50LXZpZXctZGlkLWNoYW5nZSIKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVu
dS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRN
ZW51LmpzCmluZGV4IGZmYzllNjUuLjBiZmFkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51LmpzCkBAIC0xLDYg
KzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOSwz
OSArMjksNDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51SXRlbSA9IGZ1bmN0aW9uKHRvcExldmVsTWVudSwgdHlwZSwgbGFiZWwsIGRpc2FibGVkLCBj
aGVja2VkKQorV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSA9IGNsYXNzIENvbnRleHRNZW51
SXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0aGlzLl90eXBlID0gdHlw
ZTsKLSAgICB0aGlzLl9sYWJlbCA9IGxhYmVsOwotICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJs
ZWQ7Ci0gICAgdGhpcy5fY2hlY2tlZCA9IGNoZWNrZWQ7Ci0gICAgdGhpcy5fY29udGV4dE1lbnUg
PSB0b3BMZXZlbE1lbnU7Ci0gICAgaWYgKHR5cGUgPT09ICJpdGVtIiB8fCB0eXBlID09PSAiY2hl
Y2tib3giKQotICAgICAgICB0aGlzLl9pZCA9IHRvcExldmVsTWVudS5uZXh0SWQoKTsKLX07Cisg
ICAgY29uc3RydWN0b3IodG9wTGV2ZWxNZW51LCB0eXBlLCBsYWJlbCwgZGlzYWJsZWQsIGNoZWNr
ZWQpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBl
OworICAgICAgICB0aGlzLl9sYWJlbCA9IGxhYmVsOworICAgICAgICB0aGlzLl9kaXNhYmxlZCA9
IGRpc2FibGVkOworICAgICAgICB0aGlzLl9jaGVja2VkID0gY2hlY2tlZDsKKyAgICAgICAgdGhp
cy5fY29udGV4dE1lbnUgPSB0b3BMZXZlbE1lbnU7CisKKyAgICAgICAgaWYgKHR5cGUgPT09ICJp
dGVtIiB8fCB0eXBlID09PSAiY2hlY2tib3giKQorICAgICAgICAgICAgdGhpcy5faWQgPSB0b3BM
ZXZlbE1lbnUubmV4dElkKCk7CisgICAgfQorCisgICAgLy8gUHVibGljCiAKLVdlYkluc3BlY3Rv
ci5Db250ZXh0TWVudUl0ZW0ucHJvdG90eXBlID0gewotICAgIGlkOiBmdW5jdGlvbigpCisgICAg
aWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwotICAgIH0sCisgICAgfQogCi0g
ICAgdHlwZTogZnVuY3Rpb24oKQorICAgIHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3R5cGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc0VuYWJsZWQ6IGZ1bmN0aW9uKCkKKyAg
ICBpc0VuYWJsZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuICF0aGlzLl9kaXNhYmxlZDsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNldEVuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCisgICAgc2V0
RW5hYmxlZChlbmFibGVkKQogICAgIHsKICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSAhZW5hYmxl
ZDsKLSAgICB9LAorICAgIH0KKworICAgIC8vIFByaXZhdGUKIAotICAgIF9idWlsZERlc2NyaXB0
b3I6IGZ1bmN0aW9uKCkKKyAgICBfYnVpbGREZXNjcmlwdG9yKCkKICAgICB7CiAgICAgICAgIHN3
aXRjaCAodGhpcy5fdHlwZSkgewogICAgICAgICBjYXNlICJpdGVtIjoKQEAgLTc0LDkxICs4Miwx
MDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbS5wcm90b3R5cGUgPSB7CiAgICAgfQog
fTsKIAotV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbSA9IGZ1bmN0aW9uKHRvcExldmVs
TWVudSwgbGFiZWwsIGRpc2FibGVkKQorV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbSA9
IGNsYXNzIENvbnRleHRTdWJNZW51SXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dUl0ZW0KIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtLmNhbGwodGhpcywgdG9w
TGV2ZWxNZW51LCAic3ViTWVudSIsIGxhYmVsLCBkaXNhYmxlZCk7Ci0gICAgdGhpcy5faXRlbXMg
PSBbXTsKLX07CisgICAgY29uc3RydWN0b3IodG9wTGV2ZWxNZW51LCBsYWJlbCwgZGlzYWJsZWQp
CisgICAgeworICAgICAgICBzdXBlcih0b3BMZXZlbE1lbnUsICJzdWJNZW51IiwgbGFiZWwsIGRp
c2FibGVkKTsKKworICAgICAgICB0aGlzLl9pdGVtcyA9IFtdOworICAgIH0KKworICAgIC8vIFB1
YmxpYwogCi1XZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtLnByb3RvdHlwZSA9IHsKLSAg
ICBhcHBlbmRJdGVtOiBmdW5jdGlvbihsYWJlbCwgaGFuZGxlciwgZGlzYWJsZWQpCisgICAgYXBw
ZW5kSXRlbShsYWJlbCwgaGFuZGxlciwgZGlzYWJsZWQpCiAgICAgewogICAgICAgICB2YXIgaXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtKHRoaXMuX2NvbnRleHRNZW51LCAi
aXRlbSIsIGxhYmVsLCBkaXNhYmxlZCk7CiAgICAgICAgIHRoaXMuX3B1c2hJdGVtKGl0ZW0pOwog
ICAgICAgICB0aGlzLl9jb250ZXh0TWVudS5fc2V0SGFuZGxlcihpdGVtLmlkKCksIGhhbmRsZXIp
OwogICAgICAgICByZXR1cm4gaXRlbTsKLSAgICB9LAorICAgIH0KIAotICAgIGFwcGVuZFN1Yk1l
bnVJdGVtOiBmdW5jdGlvbihsYWJlbCwgZGlzYWJsZWQpCisgICAgYXBwZW5kU3ViTWVudUl0ZW0o
bGFiZWwsIGRpc2FibGVkKQogICAgIHsKICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbnRleHRTdWJNZW51SXRlbSh0aGlzLl9jb250ZXh0TWVudSwgbGFiZWwsIGRpc2FibGVk
KTsKICAgICAgICAgdGhpcy5fcHVzaEl0ZW0oaXRlbSk7CiAgICAgICAgIHJldHVybiBpdGVtOwot
ICAgIH0sCisgICAgfQogCi0gICAgYXBwZW5kQ2hlY2tib3hJdGVtOiBmdW5jdGlvbihsYWJlbCwg
aGFuZGxlciwgY2hlY2tlZCwgZGlzYWJsZWQpCisgICAgYXBwZW5kQ2hlY2tib3hJdGVtKGxhYmVs
LCBoYW5kbGVyLCBjaGVja2VkLCBkaXNhYmxlZCkKICAgICB7CiAgICAgICAgIHZhciBpdGVtID0g
bmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0odGhpcy5fY29udGV4dE1lbnUsICJjaGVj
a2JveCIsIGxhYmVsLCBkaXNhYmxlZCwgY2hlY2tlZCk7CiAgICAgICAgIHRoaXMuX3B1c2hJdGVt
KGl0ZW0pOwogICAgICAgICB0aGlzLl9jb250ZXh0TWVudS5fc2V0SGFuZGxlcihpdGVtLmlkKCks
IGhhbmRsZXIpOwogICAgICAgICByZXR1cm4gaXRlbTsKLSAgICB9LAorICAgIH0KIAotICAgIGFw
cGVuZFNlcGFyYXRvcjogZnVuY3Rpb24oKQorICAgIGFwcGVuZFNlcGFyYXRvcigpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5faXRlbXMubGVuZ3RoKQogICAgICAgICAgICAgdGhpcy5fcGVuZGlu
Z1NlcGFyYXRvciA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcHVzaEl0ZW06IGZ1bmN0
aW9uKGl0ZW0pCisgICAgX3B1c2hJdGVtKGl0ZW0pCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
cGVuZGluZ1NlcGFyYXRvcikgewogICAgICAgICAgICAgdGhpcy5faXRlbXMucHVzaChuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSh0aGlzLl9jb250ZXh0TWVudSwgInNlcGFyYXRvciIp
KTsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nU2VwYXJhdG9yOwogICAgICAgICB9
CiAgICAgICAgIHRoaXMuX2l0ZW1zLnB1c2goaXRlbSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBp
c0VtcHR5OiBmdW5jdGlvbigpCisgICAgaXNFbXB0eSgpCiAgICAgewogICAgICAgICByZXR1cm4g
IXRoaXMuX2l0ZW1zLmxlbmd0aDsKLSAgICB9LAorICAgIH0KIAotICAgIF9idWlsZERlc2NyaXB0
b3I6IGZ1bmN0aW9uKCkKKyAgICBfYnVpbGREZXNjcmlwdG9yKCkKICAgICB7CiAgICAgICAgIHZh
ciByZXN1bHQgPSB7IHR5cGU6ICJzdWJNZW51IiwgbGFiZWw6IHRoaXMuX2xhYmVsLCBlbmFibGVk
OiAhdGhpcy5fZGlzYWJsZWQsIHN1Ykl0ZW1zOiBbXSB9OwogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuX2l0ZW1zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgcmVzdWx0LnN1Ykl0
ZW1zLnB1c2godGhpcy5faXRlbXNbaV0uX2J1aWxkRGVzY3JpcHRvcigpKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGV4
dE1lbnVJdGVtLnByb3RvdHlwZQorICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRl
bS5jYWxsKHRoaXMsIHRoaXMsICIiKTsKLSAgICB0aGlzLl9ldmVudCA9IGV2ZW50OwotICAgIHRo
aXMuX2hhbmRsZXJzID0ge307Ci0gICAgdGhpcy5faWQgPSAwOwotfTsKK1dlYkluc3BlY3Rvci5D
b250ZXh0TWVudSA9IGNsYXNzIENvbnRleHRNZW51IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRl
eHRTdWJNZW51SXRlbQoreworICAgIGNvbnN0cnVjdG9yKGV2ZW50KSB7CisgICAgICAgIHN1cGVy
KHRoaXMsICIiKTsKIAotV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZSA9IHsKKyAg
ICAgICAgdGhpcy5fZXZlbnQgPSBldmVudDsKKyAgICAgICAgdGhpcy5faGFuZGxlcnMgPSB7fTsK
KyAgICAgICAgdGhpcy5faWQgPSAwOworICAgIH0KKworICAgIC8vIFN0YXRpYworICAgIAorICAg
IHN0YXRpYyBjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChpZCkKKyAgICB7CisgICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuX2xhc3RDb250ZXh0TWVudSkKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5Db250ZXh0TWVudS5fbGFzdENvbnRleHRNZW51Ll9pdGVtU2VsZWN0ZWQoaWQp
OworICAgIH0KKworICAgIHN0YXRpYyBjb250ZXh0TWVudUNsZWFyZWQoKQorICAgIHsKKyAgICAg
ICAgLy8gRklYTUU6IFVuZm9ydHVuYXRlbHksIGNvbnRleHRNZW51Q2xlYXJlZCBpcyBpbnZva2Vk
IGJldHdlZW4gc2hvdyBhbmQgaXRlbSBzZWxlY3RlZAorICAgICAgICAvLyBzbyB3ZSBjYW4ndCBk
ZWxldGUgbGFzdCBtZW51IG9iamVjdCBmcm9tIFdlYkluc3BlY3Rvci4gRml4IHRoZSBjb250cmFj
dC4KKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIG5leHRJZDogZnVuY3Rpb24oKQorICAg
IG5leHRJZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWQrKzsKLSAgICB9LAorICAg
IH0KIAotICAgIHNob3c6IGZ1bmN0aW9uKCkKKyAgICBzaG93KCkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX2V2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCk7CiAKICAgICAg
ICAgdmFyIG1lbnVPYmplY3QgPSB0aGlzLl9idWlsZERlc2NyaXB0b3IoKTsKIAogICAgICAgICBp
ZiAobWVudU9iamVjdC5sZW5ndGgpIHsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5fY29udGV4
dE1lbnUgPSB0aGlzOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51Ll9sYXN0
Q29udGV4dE1lbnUgPSB0aGlzOworCiAgICAgICAgICAgICBpZiAodGhpcy5fZXZlbnQudHlwZSAh
PT0gImNvbnRleHRtZW51IiAmJiB0eXBlb2YgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmRpc3BhdGNo
RXZlbnRBc0NvbnRleHRNZW51RXZlbnQgPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgICAgICAg
ICB0aGlzLl9tZW51T2JqZWN0ID0gbWVudU9iamVjdDsKICAgICAgICAgICAgICAgICB0aGlzLl9l
dmVudC50YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLCB0cnVlKTsK
QEAgLTE2Niw3OSArMTkyLDQxIEBAIFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JGcm9udGVu
ZEhvc3Quc2hvd0NvbnRleHRNZW51KHRoaXMuX2V2ZW50LCBtZW51T2JqZWN0KTsKICAgICAgICAg
fQorCiAgICAgICAgIGlmICh0aGlzLl9ldmVudCkKICAgICAgICAgICAgIHRoaXMuX2V2ZW50LnN0
b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVj
dGVkCiAKLSAgICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlRXZlbnQo
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9ldmVudC50YXJnZXQucmVtb3ZlRXZlbnRMaXN0
ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLCB0cnVlKTsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LnNob3dDb250ZXh0TWVudShldmVudCwgdGhpcy5fbWVudU9iamVjdCk7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9tZW51T2JqZWN0OwogCiAgICAgICAgIGV2ZW50LnN0b3BJbW1lZGlhdGVQ
cm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Nl
dEhhbmRsZXI6IGZ1bmN0aW9uKGlkLCBoYW5kbGVyKQorICAgIF9zZXRIYW5kbGVyKGlkLCBoYW5k
bGVyKQogICAgIHsKICAgICAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgICAgICB0aGlzLl9oYW5k
bGVyc1tpZF0gPSBoYW5kbGVyOwotICAgIH0sCisgICAgfQogCi0gICAgX2J1aWxkRGVzY3JpcHRv
cjogZnVuY3Rpb24oKQorICAgIF9idWlsZERlc2NyaXB0b3IoKQogICAgIHsKICAgICAgICAgdmFy
IHJlc3VsdCA9IFtdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2l0ZW1zLmxl
bmd0aDsgKytpKQogICAgICAgICAgICAgcmVzdWx0LnB1c2godGhpcy5faXRlbXNbaV0uX2J1aWxk
RGVzY3JpcHRvcigpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9pdGVtU2VsZWN0ZWQ6IGZ1bmN0aW9uKGlkKQorICAgIF9pdGVtU2VsZWN0ZWQoaWQpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5faGFuZGxlcnNbaWRdKQogICAgICAgICAgICAgdGhpcy5f
aGFuZGxlcnNbaWRdLmNhbGwodGhpcyk7Ci0gICAgfSwKLQotICAgIGFwcGVuZEFwcGxpY2FibGVJ
dGVtczogZnVuY3Rpb24odGFyZ2V0KQotICAgIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuX3Byb3ZpZGVycy5sZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgdmFyIHByb3ZpZGVyID0gV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51Ll9wcm92aWRl
cnNbaV07Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAg
cHJvdmlkZXIuYXBwZW5kQXBwbGljYWJsZUl0ZW1zKHRoaXMuX2V2ZW50LCB0aGlzLCB0YXJnZXQp
OwotICAgICAgICAgICAgdGhpcy5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAgfQotICAgIH0s
Ci0KLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0ucHJvdG90
eXBlCi19OwotCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuUHJvdmlkZXIgPSBmdW5jdGlvbigp
Ci17Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuUHJvdmlkZXIucHJvdG90eXBlID0g
ewotICAgIGFwcGVuZEFwcGxpY2FibGVJdGVtczogZnVuY3Rpb24oZXZlbnQsIGNvbnRleHRNZW51
LCB0YXJnZXQpIHsgfQotfTsKLQotV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnJlZ2lzdGVyUHJv
dmlkZXIgPSBmdW5jdGlvbihwcm92aWRlcikKLXsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGV4dE1l
bnUuX3Byb3ZpZGVycy5wdXNoKHByb3ZpZGVyKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db250ZXh0
TWVudS5fcHJvdmlkZXJzID0gW107Ci0KLVdlYkluc3BlY3Rvci5jb250ZXh0TWVudUl0ZW1TZWxl
Y3RlZCA9IGZ1bmN0aW9uKGlkKQotewotICAgIGlmIChXZWJJbnNwZWN0b3IuX2NvbnRleHRNZW51
KQotICAgICAgICBXZWJJbnNwZWN0b3IuX2NvbnRleHRNZW51Ll9pdGVtU2VsZWN0ZWQoaWQpOwot
fTsKLQotV2ViSW5zcGVjdG9yLmNvbnRleHRNZW51Q2xlYXJlZCA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICAvLyBGSVhNRTogVW5mb3J0dW5hdGVseSwgY29udGV4dE1lbnVDbGVhcmVkIGlzIGludm9rZWQg
YmV0d2VlbiBzaG93IGFuZCBpdGVtIHNlbGVjdGVkCi0gICAgLy8gc28gd2UgY2FuJ3QgZGVsZXRl
IGxhc3QgbWVudSBvYmplY3QgZnJvbSBXZWJJbnNwZWN0b3IuIEZpeCB0aGUgY29udHJhY3QuCisg
ICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRyb2xUb29sYmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnRyb2xUb29sYmFySXRlbS5qcwppbmRleCAxNDk3YzJiLi41NjVk
OWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250cm9sVG9vbGJhckl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVtLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxOSArMjMsMTcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29u
dHJvbFRvb2xiYXJJdGVtID0gZnVuY3Rpb24oaWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2UsIGlt
YWdlV2lkdGgsIGltYWdlSGVpZ2h0KQorV2ViSW5zcGVjdG9yLkNvbnRyb2xUb29sYmFySXRlbSA9
IGNsYXNzIENvbnRyb2xUb29sYmFySXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5CdXR0b25OYXZp
Z2F0aW9uSXRlbQogewotICAgIFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5jYWxs
KHRoaXMsIGlkZW50aWZpZXIsIHRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdo
dCwgZmFsc2UpOwotfTsKLQotV2ViSW5zcGVjdG9yLkNvbnRyb2xUb29sYmFySXRlbS5TdHlsZUNs
YXNzTmFtZSA9ICJjb250cm9sIjsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCB0b29sVGlw
LCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpCisgICAgeworICAgICAgICBzdXBlcihp
ZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIGZhbHNl
KTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5Db250cm9sVG9vbGJhckl0ZW0ucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29udHJvbFRvb2xiYXJJdGVtLAorICAg
IC8vIFByb3RlY3RlZAogCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2FkZGl0aW9uYWxDbGFzc05h
bWVzOiBbV2ViSW5zcGVjdG9yLkNvbnRyb2xUb29sYmFySXRlbS5TdHlsZUNsYXNzTmFtZV0sCisg
ICAgZ2V0IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBbImNv
bnRyb2wiXTsKKyAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuQ29udHJvbFRvb2xiYXJJdGVtLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzCmluZGV4IDNh
MTBkNWYuLmNhYTM3OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywyOCArMjMsMjUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24o
cmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3
ID0gY2xhc3MgQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVw
cmVzZW50ZWRPYmplY3QpOwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7CisgICAgY29u
c3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCk7CiAKLSAgICB0aGlzLnVw
ZGF0ZSgpOwotfTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7CiAKLVdlYkluc3Bl
Y3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiY29va2llLXN0
b3JhZ2UiOwotCi1XZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50
VmlldywKKyAgICAgICAgdGhpcy51cGRhdGUoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAog
ICAgIGdldCBhbGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIFtXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuaWRlbnRpZmllcl07Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGUoKQogICAg
IHsKICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIGNvb2tpZXMpCiAgICAgICAgIHsK
QEAgLTU1LDMxICs1MiwzMyBAQCBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3JlYnVpbGRUYWJsZSgpOwogICAgICAg
ICB9CiAKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBoZXJlIGFuZCBpdCBz
aG91bGQgYmUgaW4gYSBtYW5hZ2VyLgorICAgICAgICAvLyBUaGlzIGZpbGUgbGVha3MgdGhlIHBy
b3RvY29sIGJhZGx5LgogICAgICAgICBQYWdlQWdlbnQuZ2V0Q29va2llcyhjYWxsYmFjay5iaW5k
KHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQor
ICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZGF0YUdyaWQpCiAg
ICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nvb2tpZShj
b29raWUpCiAgICAgewogICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0Nvb2tpZVR5cGUuQ29va2llU3RvcmFnZTsKICAgICAgICAgY29va2llLmhvc3QgPSB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2Nyb2xs
YWJsZUVsZW1lbnRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZGF0YUdyaWQpCiAgICAg
ICAgICAgICByZXR1cm4gW107CiAgICAgICAgIHJldHVybiBbdGhpcy5fZGF0YUdyaWQuc2Nyb2xs
Q29udGFpbmVyXTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9yZWJ1
aWxkVGFibGU6IGZ1bmN0aW9uKCkKKyAgICBfcmVidWlsZFRhYmxlKCkKICAgICB7CiAgICAgICAg
IC8vIEZJWE1FOiBJZiB0aGVyZSBhcmUgbm8gY29va2llcywgZG8gd2Ugd2FudCB0byBzaG93IGFu
IGVtcHR5IGRhdGFncmlkLCBvciBkbyBzb21ldGhpbmcgbGlrZSB0aGUgb2xkCiAgICAgICAgIC8v
IGluc3BlY3RvciBhbmQgc2hvdyBzb21lIHRleHQgc2F5aW5nIHRoZXJlIGFyZSBubyBjb29raWVz
PwpAQCAtMTMxLDggKzEzMCw4IEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9kYXRhR3JpZCk7
CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7CiAKKyAgICAgICAgdmFy
IGNoZWNrbWFyayA9ICJcdTI3MTMiOwogICAgICAgICBmb3IgKHZhciBjb29raWUgb2YgdGhpcy5f
Y29va2llcykgewotICAgICAgICAgICAgY29uc3QgY2hlY2ttYXJrID0gIlx1MjcxMyI7CiAgICAg
ICAgICAgICB2YXIgZGF0YSA9IHsKICAgICAgICAgICAgICAgICAibmFtZSI6IGNvb2tpZS5uYW1l
LAogICAgICAgICAgICAgICAgICJ2YWx1ZSI6IGNvb2tpZS52YWx1ZSwKQEAgLTE0NCw3ICsxNDMs
NyBAQCBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICAic2VjdXJlIjogY29va2llLnNlY3VyZSA/IGNoZWNrbWFyayA6ICIi
LAogICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgaWYgKGNvb2tpZS50eXBlICE9PSBXZWJJ
bnNwZWN0b3IuQ29va2llVHlwZS5SZXF1ZXN0KQorICAgICAgICAgICAgaWYgKGNvb2tpZS50eXBl
ICE9PSBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LkNvb2tpZVR5cGUuUmVx
dWVzdCkKICAgICAgICAgICAgICAgICBkYXRhWyJleHBpcmVzIl0gPSBjb29raWUuc2Vzc2lvbiA/
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2Vzc2lvbiIpIDogbmV3IERhdGUoY29va2llLmV4cGly
ZXMpLnRvTG9jYWxlU3RyaW5nKCk7CiAKICAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSk7CkBAIC0xNTUsOSArMTU0LDkgQEAgV2ViSW5zcGVj
dG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJuYW1lIjsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9maWx0ZXJDb29raWVzOiBmdW5jdGlvbihjb29raWVzKQorICAg
IF9maWx0ZXJDb29raWVzKGNvb2tpZXMpCiAgICAgewogICAgICAgICB2YXIgZmlsdGVyZWRDb29r
aWVzID0gW107CiAgICAgICAgIHZhciByZXNvdXJjZXNGb3JEb21haW4gPSBbXTsKQEAgLTE3OCw5
ICsxNzcsMjcgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRm9yRG9tYWluLnB1c2goZnJhbWVzW2ld
Lm1haW5SZXNvdXJjZS51cmwpOwogICAgICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gY29va2ll
RG9tYWluTWF0Y2hlc1Jlc291cmNlRG9tYWluKGNvb2tpZURvbWFpbiwgcmVzb3VyY2VEb21haW4p
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjb29raWVEb21haW4uY2hhckF0KDApICE9PSAi
LiIpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc291cmNlRG9tYWluID09PSBjb29raWVEb21h
aW47CisgICAgICAgICAgICByZXR1cm4gISFyZXNvdXJjZURvbWFpbi5tYXRjaChuZXcgUmVnRXhw
KCJeKFteXFwuXStcXC4pPyIgKyBjb29raWVEb21haW4uc3Vic3RyaW5nKDEpLmVzY2FwZUZvclJl
Z0V4cCgpICsgIiQiKSwgImkiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNvb2tp
ZU1hdGNoZXNSZXNvdXJjZVVSTChjb29raWUsIHJlc291cmNlVVJMKQorICAgICAgICB7CisgICAg
ICAgICAgICB2YXIgcGFyc2VkVVJMID0gcGFyc2VVUkwocmVzb3VyY2VVUkwpOworICAgICAgICAg
ICAgaWYgKCFwYXJzZWRVUkwgfHwgIVdlYkluc3BlY3Rvci5jb29raWVEb21haW5NYXRjaGVzUmVz
b3VyY2VEb21haW4oY29va2llLmRvbWFpbiwgcGFyc2VkVVJMLmhvc3QpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgcmV0dXJuIChwYXJzZWRVUkwucGF0aC5z
dGFydHNXaXRoKGNvb2tpZS5wYXRoKQorICAgICAgICAgICAgICAgICYmICghY29va2llLnBvcnQg
fHwgcGFyc2VkVVJMLnBvcnQgPT09IGNvb2tpZS5wb3J0KQorICAgICAgICAgICAgICAgICYmICgh
Y29va2llLnNlY3VyZSB8fCBwYXJzZWRVUkwuc2NoZW1lID09PSAiaHR0cHMiKSk7CisgICAgICAg
IH0KKwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvb2tpZXMubGVuZ3RoOyArK2kpIHsK
ICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcmVzb3VyY2VzRm9yRG9tYWluLmxlbmd0
aDsgKytqKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5jb29raWVNYXRjaGVz
UmVzb3VyY2VVUkwoY29va2llc1tpXSwgcmVzb3VyY2VzRm9yRG9tYWluW2pdKSkgeworICAgICAg
ICAgICAgICAgIGlmIChjb29raWVNYXRjaGVzUmVzb3VyY2VVUkwoY29va2llc1tpXSwgcmVzb3Vy
Y2VzRm9yRG9tYWluW2pdKSkgewogICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZENvb2tpZXMu
cHVzaChjb29raWVzW2ldKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQpAQCAtMTg4LDkgKzIwNSw5IEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGZpbHRl
cmVkQ29va2llczsKLSAgICB9LAorICAgIH0KIAotICAgIF9zb3J0RGF0YUdyaWQ6IGZ1bmN0aW9u
KCkKKyAgICBfc29ydERhdGFHcmlkKCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGxvY2FsZUNv
bXBhcmUoZmllbGQsIG5vZGVBLCBub2RlQikKICAgICAgICAgewpAQCAtMjI4LDkgKzI0NSw5IEBA
IFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbXBhcmF0b3IpOwogICAgICAgICB0aGlzLl9kYXRhR3Jp
ZC5zb3J0Tm9kZXMoY29tcGFyYXRvcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVsZXRlQ2Fs
bGJhY2s6IGZ1bmN0aW9uKG5vZGUpCisgICAgX2RlbGV0ZUNhbGxiYWNrKG5vZGUpCiAgICAgewog
ICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUuY29va2llKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMjQ1LDI3ICsyNjIsMTAgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VD
b250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LnByb3RvdHlwZTsKLQotV2ViSW5zcGVjdG9yLmNvb2tpZU1hdGNoZXNSZXNvdXJjZVVSTCA9IGZ1
bmN0aW9uKGNvb2tpZSwgcmVzb3VyY2VVUkwpCi17Ci0gICAgdmFyIHBhcnNlZFVSTCA9IHBhcnNl
VVJMKHJlc291cmNlVVJMKTsKLSAgICBpZiAoIXBhcnNlZFVSTCB8fCAhV2ViSW5zcGVjdG9yLmNv
b2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbihjb29raWUuZG9tYWluLCBwYXJzZWRVUkwu
aG9zdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiAocGFyc2VkVVJMLnBh
dGguc3RhcnRzV2l0aChjb29raWUucGF0aCkKLSAgICAgICAgJiYgKCFjb29raWUucG9ydCB8fCBw
YXJzZWRVUkwucG9ydCA9PT0gY29va2llLnBvcnQpCi0gICAgICAgICYmICghY29va2llLnNlY3Vy
ZSB8fCBwYXJzZWRVUkwuc2NoZW1lID09PSAiaHR0cHMiKSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5j
b29raWVEb21haW5NYXRjaGVzUmVzb3VyY2VEb21haW4gPSBmdW5jdGlvbihjb29raWVEb21haW4s
IHJlc291cmNlRG9tYWluKQotewotICAgIGlmIChjb29raWVEb21haW4uY2hhckF0KDApICE9PSAi
LiIpCi0gICAgICAgIHJldHVybiByZXNvdXJjZURvbWFpbiA9PT0gY29va2llRG9tYWluOwotICAg
IHJldHVybiAhIXJlc291cmNlRG9tYWluLm1hdGNoKG5ldyBSZWdFeHAoIl4oW15cXC5dK1xcLik/
IiArIGNvb2tpZURvbWFpbi5zdWJzdHJpbmcoMSkuZXNjYXBlRm9yUmVnRXhwKCkgKyAiJCIpLCAi
aSIpOwotfQorV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5TdHlsZUNsYXNz
TmFtZSA9ICJjb29raWUtc3RvcmFnZSI7CiAKLVdlYkluc3BlY3Rvci5Db29raWVUeXBlID0gewor
Ly8gRklYTUU6IFVzZSBhbiBlbnVtIGZyb20gYSBtYW5hZ2VyIGFuZCBub3QgcmF3IHByb3RvY29s
IHZhbHVlcy4KK1dlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcuQ29va2llVHlw
ZSA9IHsKICAgICBSZXF1ZXN0OiAwLAogICAgIFJlc3BvbnNlOiAxCiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZVRy
ZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29va2llU3RvcmFnZVRyZWVFbGVtZW50LmpzCmluZGV4IDI0OWIyOGMuLmUxZjE2N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0
b3JhZ2VUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI0ICsyMywyMSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5D
b29raWVTdG9yYWdlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dl
Ykluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQgPSBjbGFzcyBDb29raWVTdG9yYWdl
VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50CiB7Ci0g
ICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQ29va2llU3RvcmFnZU9iamVjdCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVF
bGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5D
b29raWVJY29uU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvckhvc3Qo
cmVwcmVzZW50ZWRPYmplY3QuaG9zdCksIHJlcHJlc2VudGVkT2JqZWN0KTsKLX07Ci0KLVdlYklu
c3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQuQ29va2llSWNvblN0eWxlQ2xhc3NOYW1l
ID0gImNvb2tpZS1pY29uIjsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QpOwogCi1XZWJJbnNwZWN0b3IuQ29va2ll
U3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudCwKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVj
dG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5Db29raWVJY29uU3R5bGVDbGFzc05hbWUsIFdl
Ykluc3BlY3Rvci5kaXNwbGF5TmFtZUZvckhvc3QocmVwcmVzZW50ZWRPYmplY3QuaG9zdCksIHJl
cHJlc2VudGVkT2JqZWN0KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYW1l
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2F0ZWdvcnlOYW1lKCkKICAgICB7CkBAIC00OCw0ICs0
NSw0IEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90
eXBlOworV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5Db29raWVJY29uU3R5
bGVDbGFzc05hbWUgPSAiY29va2llLWljb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTURldGFpbHNTaWRlYmFy
UGFuZWwuanMKaW5kZXggYTAxODQ2Ni4uZGFhN2VmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01EZXRhaWxz
U2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywyMiArMjMsMjAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbCA9
IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaW5ndWxhckRpc3BsYXlOYW1lLCBp
bWFnZSwga2V5Ym9hcmRTaG9ydGN1dEtleSwgZWxlbWVudCkKK1dlYkluc3BlY3Rvci5ET01EZXRh
aWxzU2lkZWJhclBhbmVsID0gY2xhc3MgRE9NRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRldGFp
bHNTaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCBpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgc2luZ3Vs
YXJEaXNwbGF5TmFtZSwgaW1hZ2UsIGtleWJvYXJkU2hvcnRjdXRLZXksIGVsZW1lbnQpOwotCi0g
ICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbW91c2VXYXND
bGlja2VkLmJpbmQodGhpcyksIHRydWUpOworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIGRp
c3BsYXlOYW1lLCBzaW5ndWxhckRpc3BsYXlOYW1lLCBpbWFnZSwga2V5Ym9hcmRTaG9ydGN1dEtl
eSwgZWxlbWVudCkKKyAgICB7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1l
LCBzaW5ndWxhckRpc3BsYXlOYW1lLCBpbWFnZSwga2V5Ym9hcmRTaG9ydGN1dEtleSwgZWxlbWVu
dCk7CiAKLSAgICB0aGlzLl9kb21Ob2RlID0gbnVsbDsKLX07CisgICAgICAgIHRoaXMuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX21vdXNlV2FzQ2xpY2tlZC5iaW5kKHRo
aXMpLCB0cnVlKTsKIAotV2ViSW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQ
YW5lbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSwKKyAgICAgICAgdGhpcy5fZG9tTm9kZSA9IG51bGw7CisgICAgfQogCiAgICAgLy8g
UHVibGljCiAKLSAgICBpbnNwZWN0OiBmdW5jdGlvbihvYmplY3RzKQorICAgIGluc3BlY3Qob2Jq
ZWN0cykKICAgICB7CiAgICAgICAgIC8vIENvbnZlcnQgdG8gYSBzaW5nbGUgaXRlbSBhcnJheSBp
ZiBuZWVkZWQuCiAgICAgICAgIGlmICghKG9iamVjdHMgaW5zdGFuY2VvZiBBcnJheSkpCkBAIC02
MCwxMiArNTgsMTIgQEAgV2ViSW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLmRvbU5vZGUgPSBub2RlVG9JbnNwZWN0OwogCiAgICAgICAg
IHJldHVybiAhIXRoaXMuX2RvbU5vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZG9tTm9k
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZG9tTm9kZTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBkb21Ob2RlKGRvbU5vZGUpCiAgICAgewpAQCAtODEsMjcgKzc5LDI3IEBAIFdl
Ykluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKTsKIAogICAgICAgICB0aGlzLm5lZWRzUmVmcmVz
aCgpOwotICAgIH0sCisgICAgfQogCi0gICAgc3VwcG9ydHNET01Ob2RlOiBmdW5jdGlvbihub2Rl
VG9JbnNwZWN0KQorICAgIHN1cHBvcnRzRE9NTm9kZShub2RlVG9JbnNwZWN0KQogICAgIHsKICAg
ICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRFdmVudExpc3RlbmVyczogZnVuY3Rpb24oKQorICAg
IGFkZEV2ZW50TGlzdGVuZXJzKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1
YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVFdmVudExpc3RlbmVyczogZnVu
Y3Rpb24oKQorICAgIHJlbW92ZUV2ZW50TGlzdGVuZXJzKCkKICAgICB7CiAgICAgICAgIC8vIElt
cGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRl
CiAKLSAgICBfbW91c2VXYXNDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VXYXND
bGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RvbU5vZGUgJiYgdGhpcy5f
ZG9tTm9kZS5vd25lckRvY3VtZW50KSB7CiAgICAgICAgICAgICB2YXIgbWFpblJlc291cmNlID0g
V2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlRm9yVVJMKHRoaXMuX2Rv
bU5vZGUub3duZXJEb2N1bWVudC5kb2N1bWVudFVSTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5l
bC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVE
ZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDhjMTFlODkuLmU1ZDU5MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTU5vZGVEZXRhaWxz
U2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDgzICsyMyw3OCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5E
T01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERPTU5vZGVEZXRhaWxzU2lkZWJhclBh
bmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5jYWxsKHRoaXMsICJkb20tbm9kZS1k
ZXRhaWxzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOb2RlIiksIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiTm9kZSIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQW5nbGVCcmFja2V0cy5zdmciLCAi
MiIpOwotCi0gICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZU1vZGlmaWVkLCB0aGlz
Ll9hdHRyaWJ1dGVzQ2hhbmdlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0
dHJpYnV0ZVJlbW92ZWQsIHRoaXMuX2F0dHJpYnV0ZXNDaGFuZ2VkLCB0aGlzKTsKLSAgICBXZWJJ
bnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9N
VHJlZU1hbmFnZXIuRXZlbnQuQ2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzLl9jaGFyYWN0ZXJE
YXRhTW9kaWZpZWQsIHRoaXMpOwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lKTsKLQot
ICAgIHRoaXMuX2lkZW50aXR5Tm9kZVR5cGVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHlwZSIpKTsKLSAgICB0aGlz
Ll9pZGVudGl0eU5vZGVOYW1lUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNp
bXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5hbWUiKSk7Ci0gICAgdGhpcy5faWRlbnRp
dHlOb2RlVmFsdWVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmFsdWUiKSk7Ci0KLSAgICB2YXIgaWRlbnRpdHlHcm91
cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5faWRlbnRpdHlO
b2RlVHlwZVJvdywgdGhpcy5faWRlbnRpdHlOb2RlTmFtZVJvdywgdGhpcy5faWRlbnRpdHlOb2Rl
VmFsdWVSb3ddKTsKLSAgICB2YXIgaWRlbnRpdHlTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbigiZG9tLW5vZGUtaWRlbnRpdHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IklkZW50aXR5IiksIFtpZGVudGl0eUdyb3VwXSk7Ci0KLSAgICB0aGlzLl9hdHRyaWJ1dGVzRGF0
YUdyaWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cobnVs
bCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBBdHRyaWJ1dGVzIikpOwotCi0gICAgdmFyIGF0
dHJpYnV0ZXNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhp
cy5fYXR0cmlidXRlc0RhdGFHcmlkUm93XSk7Ci0gICAgdmFyIGF0dHJpYnV0ZXNTZWN0aW9uID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiZG9tLW5vZGUtYXR0cmlidXRlcyIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQXR0cmlidXRlcyIpLCBbYXR0cmlidXRlc0dyb3VwXSk7Ci0K
LSAgICB0aGlzLl9wcm9wZXJ0aWVzUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blJvdzsKLQotICAgIHZhciBwcm9wZXJ0aWVzR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uR3JvdXAoW3RoaXMuX3Byb3BlcnRpZXNSb3ddKTsKLSAgICB2YXIgcHJvcGVydGll
c1NlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJkb20tbm9kZS1wcm9w
ZXJ0aWVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9wZXJ0aWVzIiksIFtwcm9wZXJ0aWVz
R3JvdXBdKTsKLQotICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzU2VjdGlvbkdyb3VwID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwOwotICAgIHZhciBldmVudExpc3RlbmVyc1Nl
Y3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJkb20tbm9kZS1ldmVudC1s
aXN0ZW5lcnMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV2ZW50IExpc3RlbmVycyIpLCBbdGhp
cy5fZXZlbnRMaXN0ZW5lcnNTZWN0aW9uR3JvdXBdKTsgICAgCi0KLSAgICB0aGlzLmNvbnRlbnRF
bGVtZW50LmFwcGVuZENoaWxkKGlkZW50aXR5U2VjdGlvbi5lbGVtZW50KTsKLSAgICB0aGlzLmNv
bnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGF0dHJpYnV0ZXNTZWN0aW9uLmVsZW1lbnQpOwotICAg
IHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQocHJvcGVydGllc1NlY3Rpb24uZWxlbWVu
dCk7Ci0gICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChldmVudExpc3RlbmVyc1Nl
Y3Rpb24uZWxlbWVudCk7Ci0KLSAgICBpZiAodGhpcy5fYWNjZXNzaWJpbGl0eVN1cHBvcnRlZCgp
KSB7Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlFbXB0eVJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25Sb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBBY2Nlc3NpYmls
aXR5IEluZm9ybWF0aW9uIikpOwotICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZUFjdGl2
ZURlc2NlbmRhbnRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hhcmVkIEZvY3VzIikpOwotICAgICAgICB0aGlzLl9h
Y2Nlc3NpYmlsaXR5Tm9kZUJ1c3lSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
U2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQnVzeSIpKTsKLSAgICAgICAgdGhpcy5f
YWNjZXNzaWJpbGl0eU5vZGVDaGVja2VkUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNoZWNrZWQiKSk7Ci0gICAgICAg
IHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlQ2hpbGRyZW5Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2hpbGRyZW4iKSk7
Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlQ29udHJvbHNSb3cgPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29u
dHJvbHMiKSk7Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlRGlzYWJsZWRSb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRGlzYWJsZWQiKSk7Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlRXhwYW5k
ZWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiRXhwYW5kZWQiKSk7Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlO
b2RlRmxvd3NSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRmxvd3MiKSk7Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxp
dHlOb2RlRm9jdXNlZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVS
b3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGb2N1c2VkIikpOwotICAgICAgICB0aGlzLl9hY2Nl
c3NpYmlsaXR5Tm9kZUlnbm9yZWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
U2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiSWdub3JlZCIpKTsKLSAgICAgICAgdGhp
cy5fYWNjZXNzaWJpbGl0eU5vZGVJbnZhbGlkUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkludmFsaWQiKSk7Ci0gICAg
ICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlTGl2ZVJlZ2lvblN0YXR1c1JvdyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJM
aXZlIikpOwotICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZU1vdXNlRXZlbnRSb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KCIiKTsKLSAgICAgICAgdGhp
cy5fYWNjZXNzaWJpbGl0eU5vZGVMYWJlbFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYWJlbCIpKTsKLSAgICAgICAg
dGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVPd25zUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk93bnMiKSk7Ci0gICAgICAg
IHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlUGFyZW50Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhcmVudCIpKTsKLSAg
ICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVQcmVzc2VkUm93ID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByZXNzZWQi
KSk7Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlUmVhZG9ubHlSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UmVhZG9ubHkiKSk7Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlUmVxdWlyZWRSb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVxdWlyZWQiKSk7Ci0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlUm9s
ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSb2xlIikpOwotICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZVNl
bGVjdGVkUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlNlbGVjdGVkIikpOwotICAgICAgICB0aGlzLl9hY2Nlc3NpYmls
aXR5Tm9kZVNlbGVjdGVkQ2hpbGRyZW5Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0ZWQgSXRlbXMiKSk7Ci0g
ICAgCi0gICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fYWNjZXNzaWJpbGl0eUVtcHR5Um93XSk7Ci0gICAg
ICAgIHZhciBhY2Nlc3NpYmlsaXR5U2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb24oImRvbS1ub2RlLWFjY2Vzc2liaWxpdHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFj
Y2Vzc2liaWxpdHkiKSwgW3RoaXMuX2FjY2Vzc2liaWxpdHlHcm91cF0pOyAgICAKLQotICAgICAg
ICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGFjY2Vzc2liaWxpdHlTZWN0aW9uLmVs
ZW1lbnQpOwotICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQ
YW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJkb20tbm9kZSI7Ci1XZWJJbnNwZWN0b3IuRE9NTm9kZURl
dGFpbHNTaWRlYmFyUGFuZWwuUHJvcGVydGllc09iamVjdEdyb3VwTmFtZSA9ICJkb20tbm9kZS1k
ZXRhaWxzLXNpZGViYXItcHJvcGVydGllcy1vYmplY3QtZ3JvdXAiOwotCi1XZWJJbnNwZWN0b3Iu
RE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUsCisgICAgY29u
c3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoImRvbS1ub2RlLWRldGFpbHMiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk5vZGUiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOb2RlIiks
ICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1BbmdsZUJyYWNrZXRzLnN2ZyIsICIyIik7CisKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZU1vZGlmaWVkLCB0aGlzLl9hdHRyaWJ1
dGVzQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5BdHRyaWJ1
dGVSZW1vdmVkLCB0aGlzLl9hdHRyaWJ1dGVzQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdlYklu
c3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01U
cmVlTWFuYWdlci5FdmVudC5DaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMuX2NoYXJhY3RlckRh
dGFNb2RpZmllZCwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImRvbS1ub2RlIik7CisKKyAgICAgICAgdGhpcy5faWRlbnRpdHlOb2RlVHlwZVJvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJUeXBlIikpOworICAgICAgICB0aGlzLl9pZGVudGl0eU5vZGVOYW1lUm93ID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5h
bWUiKSk7CisgICAgICAgIHRoaXMuX2lkZW50aXR5Tm9kZVZhbHVlUm93ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZhbHVl
IikpOworCisgICAgICAgIHZhciBpZGVudGl0eUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9pZGVudGl0eU5vZGVUeXBlUm93LCB0aGlzLl9pZGVudGl0
eU5vZGVOYW1lUm93LCB0aGlzLl9pZGVudGl0eU5vZGVWYWx1ZVJvd10pOworICAgICAgICB2YXIg
aWRlbnRpdHlTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiZG9tLW5v
ZGUtaWRlbnRpdHkiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIklkZW50aXR5IiksIFtpZGVudGl0
eUdyb3VwXSk7CisKKyAgICAgICAgdGhpcy5fYXR0cmlidXRlc0RhdGFHcmlkUm93ID0gbmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93KG51bGwsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTm8gQXR0cmlidXRlcyIpKTsKKworICAgICAgICB2YXIgYXR0cmlidXRlc0dyb3Vw
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9hdHRyaWJ1dGVz
RGF0YUdyaWRSb3ddKTsKKyAgICAgICAgdmFyIGF0dHJpYnV0ZXNTZWN0aW9uID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvbigiZG9tLW5vZGUtYXR0cmlidXRlcyIsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQXR0cmlidXRlcyIpLCBbYXR0cmlidXRlc0dyb3VwXSk7CisKKyAgICAgICAg
dGhpcy5fcHJvcGVydGllc1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7
CisKKyAgICAgICAgdmFyIHByb3BlcnRpZXNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Hcm91cChbdGhpcy5fcHJvcGVydGllc1Jvd10pOworICAgICAgICB2YXIgcHJvcGVy
dGllc1NlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJkb20tbm9kZS1w
cm9wZXJ0aWVzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9wZXJ0aWVzIiksIFtwcm9wZXJ0
aWVzR3JvdXBdKTsKKworICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyc1NlY3Rpb25Hcm91cCA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cDsKKyAgICAgICAgdmFyIGV2ZW50
TGlzdGVuZXJzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oImRvbS1u
b2RlLWV2ZW50LWxpc3RlbmVycyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXZlbnQgTGlzdGVu
ZXJzIiksIFt0aGlzLl9ldmVudExpc3RlbmVyc1NlY3Rpb25Hcm91cF0pOyAgICAKKworICAgICAg
ICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGlkZW50aXR5U2VjdGlvbi5lbGVtZW50
KTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChhdHRyaWJ1dGVzU2Vj
dGlvbi5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChw
cm9wZXJ0aWVzU2VjdGlvbi5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5h
cHBlbmRDaGlsZChldmVudExpc3RlbmVyc1NlY3Rpb24uZWxlbWVudCk7CisKKyAgICAgICAgaWYg
KHRoaXMuX2FjY2Vzc2liaWxpdHlTdXBwb3J0ZWQoKSkgeworICAgICAgICAgICAgdGhpcy5fYWNj
ZXNzaWJpbGl0eUVtcHR5Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdyhX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIEFjY2Vzc2liaWxpdHkgSW5mb3JtYXRpb24iKSk7Cisg
ICAgICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZUFjdGl2ZURlc2NlbmRhbnRSb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2hhcmVkIEZvY3VzIikpOworICAgICAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5v
ZGVCdXN5Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkJ1c3kiKSk7CisgICAgICAgICAgICB0aGlzLl9hY2Nlc3NpYmls
aXR5Tm9kZUNoZWNrZWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxl
Um93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2hlY2tlZCIpKTsKKyAgICAgICAgICAgIHRoaXMu
X2FjY2Vzc2liaWxpdHlOb2RlQ2hpbGRyZW5Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2hpbGRyZW4iKSk7CisgICAg
ICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZUNvbnRyb2xzUm93ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnRy
b2xzIikpOworICAgICAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVEaXNhYmxlZFJvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJEaXNhYmxlZCIpKTsKKyAgICAgICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2Rl
RXhwYW5kZWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRXhwYW5kZWQiKSk7CisgICAgICAgICAgICB0aGlzLl9hY2Nl
c3NpYmlsaXR5Tm9kZUZsb3dzUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNp
bXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZsb3dzIikpOworICAgICAgICAgICAgdGhp
cy5fYWNjZXNzaWJpbGl0eU5vZGVGb2N1c2VkUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvY3VzZWQiKSk7CisgICAg
ICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZUlnbm9yZWRSb3cgPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiSWdub3Jl
ZCIpKTsKKyAgICAgICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlSW52YWxpZFJvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJJbnZhbGlkIikpOworICAgICAgICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVMaXZl
UmVnaW9uU3RhdHVzUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxpdmUiKSk7CisgICAgICAgICAgICB0aGlzLl9hY2Nl
c3NpYmlsaXR5Tm9kZU1vdXNlRXZlbnRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uU2ltcGxlUm93KCIiKTsKKyAgICAgICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlTGFi
ZWxSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTGFiZWwiKSk7CisgICAgICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5
Tm9kZU93bnNSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiT3ducyIpKTsKKyAgICAgICAgICAgIHRoaXMuX2FjY2Vzc2li
aWxpdHlOb2RlUGFyZW50Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBs
ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhcmVudCIpKTsKKyAgICAgICAgICAgIHRoaXMu
X2FjY2Vzc2liaWxpdHlOb2RlUHJlc3NlZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcmVzc2VkIikpOworICAgICAg
ICAgICAgdGhpcy5fYWNjZXNzaWJpbGl0eU5vZGVSZWFkb25seVJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWFkb25s
eSIpKTsKKyAgICAgICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlOb2RlUmVxdWlyZWRSb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiUmVxdWlyZWQiKSk7CisgICAgICAgICAgICB0aGlzLl9hY2Nlc3NpYmlsaXR5Tm9kZVJv
bGVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUm9sZSIpKTsKKyAgICAgICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlO
b2RlU2VsZWN0ZWRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0ZWQiKSk7CisgICAgICAgICAgICB0aGlzLl9h
Y2Nlc3NpYmlsaXR5Tm9kZVNlbGVjdGVkQ2hpbGRyZW5Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZWN0ZWQgSXRl
bXMiKSk7CisKKyAgICAgICAgICAgIHRoaXMuX2FjY2Vzc2liaWxpdHlHcm91cCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fYWNjZXNzaWJpbGl0eUVtcHR5Um93
XSk7CisgICAgICAgICAgICB2YXIgYWNjZXNzaWJpbGl0eVNlY3Rpb24gPSBuZXcgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uKCJkb20tbm9kZS1hY2Nlc3NpYmlsaXR5IiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJBY2Nlc3NpYmlsaXR5IiksIFt0aGlzLl9hY2Nlc3NpYmlsaXR5R3JvdXBdKTsg
ICAgCisKKyAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoYWNjZXNz
aWJpbGl0eVNlY3Rpb24uZWxlbWVudCk7CisgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgLy8g
UHVibGljCiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaCgpCiAgICAgewog
ICAgICAgICB2YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKICAgICAgICAgaWYgKCFkb21Ob2Rl
KQpAQCAtMTEzLDIxICsxMDgsMjEgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJh
clBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVmcmVzaFByb3BlcnRpZXMoKTsK
ICAgICAgICAgdGhpcy5fcmVmcmVzaEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgICAgIHRoaXMuX3Jl
ZnJlc2hBY2Nlc3NpYmlsaXR5KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAK
LSAgICBfYWNjZXNzaWJpbGl0eVN1cHBvcnRlZDogZnVuY3Rpb24oKQorICAgIF9hY2Nlc3NpYmls
aXR5U3VwcG9ydGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB3aW5kb3cuRE9NQWdlbnQgJiYg
RE9NQWdlbnQuZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JOb2RlOwotICAgIH0sCisgICAg
fQogCi0gICAgX3JlZnJlc2hBdHRyaWJ1dGVzOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hBdHRy
aWJ1dGVzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNEYXRhR3JpZFJvdy5kYXRh
R3JpZCA9IHRoaXMuX2NyZWF0ZUF0dHJpYnV0ZXNEYXRhR3JpZCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3JlZnJlc2hQcm9wZXJ0aWVzOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hQcm9wZXJ0
aWVzKCkKICAgICB7CiAgICAgICAgIHZhciBkb21Ob2RlID0gdGhpcy5kb21Ob2RlOwogICAgICAg
ICBpZiAoIWRvbU5vZGUpCkBAIC0yMTQsOSArMjA5LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVE
ZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBlbGVtZW50
LmFwcGVuZENoaWxkKGRldGFpbHNTZWN0aW9uLmVsZW1lbnQpOwogICAgICAgICAgICAgfQogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaEV2ZW50TGlzdGVuZXJzOiBmdW5j
dGlvbigpCisgICAgX3JlZnJlc2hFdmVudExpc3RlbmVycygpCiAgICAgewogICAgICAgICB2YXIg
ZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKICAgICAgICAgaWYgKCFkb21Ob2RlKQpAQCAtMjY0LDEx
ICsyNTksMTggQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICByb3dzLnB1c2goZXZlbnRMaXN0ZW5lclNlY3Rpb25z
W2V2ZW50TGlzdGVuZXJUeXBlc1tpXV0pOwogICAgICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5l
cnNTZWN0aW9uR3JvdXAucm93cyA9IHJvd3M7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KKwor
ICAgIF9yZWZyZXNoQWNjZXNzaWJpbGl0eSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2Fj
Y2Vzc2liaWxpdHlTdXBwb3J0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2
YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKKyAgICAgICAgaWYgKCFkb21Ob2RlKQorICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgX3JlZnJlc2hBY2Nlc3NpYmlsaXR5OiAoZnVuY3Rpb24oKSB7
CiAgICAgICAgIHZhciBwcm9wZXJ0aWVzID0ge307Ci0gICAgICAgIHZhciBkb21Ob2RlOwogCiAg
ICAgICAgIGZ1bmN0aW9uIGJvb2xlYW5WYWx1ZVRvTG9jYWxpemVkU3RyaW5nSWZUcnVlKHByb3Bl
cnR5KSB7CiAgICAgICAgICAgICBpZiAocHJvcGVydGllc1twcm9wZXJ0eV0pCkBAIC01MjUsMzcg
KzUyNywyNSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24gcmVm
cmVzaEFYKCkgewotICAgICAgICAgICAgaWYgKCF0aGlzLl9hY2Nlc3NpYmlsaXR5U3VwcG9ydGVk
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUg
dGhlIGRvbU5vZGUgaXMgYXZhaWxhYmxlIGluIHRoZSBjbG9zdXJlIHNjb3BlLgotICAgICAgICAg
ICAgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKLSAgICAgICAgICAgIGlmICghZG9tTm9kZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIGRvbU5vZGUuYWNjZXNzaWJpbGl0
eVByb3BlcnRpZXMoYWNjZXNzaWJpbGl0eVByb3BlcnRpZXNDYWxsYmFjay5iaW5kKHRoaXMpKTsK
LSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZWZyZXNoQVg7Ci0gICAgfSgpKSwKKyAgICAg
ICAgZG9tTm9kZS5hY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhhY2Nlc3NpYmlsaXR5UHJvcGVydGll
c0NhbGxiYWNrLmJpbmQodGhpcykpOworICAgIH0KIAotICAgIF9hdHRyaWJ1dGVzQ2hhbmdlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX2F0dHJpYnV0ZXNDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgaWYgKGV2ZW50LmRhdGEubm9kZSAhPT0gdGhpcy5kb21Ob2RlKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB0aGlzLl9yZWZyZXNoQXR0cmlidXRlcygpOwogICAgICAgICB0aGlz
Ll9yZWZyZXNoQWNjZXNzaWJpbGl0eSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NoYXJhY3Rl
ckRhdGFNb2RpZmllZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NoYXJhY3RlckRhdGFNb2RpZmll
ZChldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5kYXRhLm5vZGUgIT09IHRoaXMuZG9t
Tm9kZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5faWRlbnRpdHlOb2RlVmFs
dWVSb3cudmFsdWUgPSB0aGlzLmRvbU5vZGUubm9kZVZhbHVlKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfbm9kZVR5cGVEaXNwbGF5TmFtZTogZnVuY3Rpb24oKQorICAgIF9ub2RlVHlwZURpc3Bs
YXlOYW1lKCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodGhpcy5kb21Ob2RlLm5vZGVUeXBlKCkp
IHsKICAgICAgICAgY2FzZSBOb2RlLkVMRU1FTlRfTk9ERToKQEAgLTU3OCw5ICs1NjgsOSBAQCBX
ZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBET00gbm9kZSB0eXBlOiAiLCB0aGlzLmRv
bU5vZGUubm9kZVR5cGUoKSk7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb21Ob2RlLm5vZGVU
eXBlKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9jcmVhdGVBdHRyaWJ1dGVz
RGF0YUdyaWQ6IGZ1bmN0aW9uKCkKKyAgICBfY3JlYXRlQXR0cmlidXRlc0RhdGFHcmlkKCkKICAg
ICB7CiAgICAgICAgIHZhciBkb21Ob2RlID0gdGhpcy5kb21Ob2RlOwogICAgICAgICBpZiAoIWRv
bU5vZGUgfHwgIWRvbU5vZGUuaGFzQXR0cmlidXRlcygpKQpAQCAtNjAyLDMgKzU5Miw1IEBAIFdl
Ykluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiBkYXRhR3JpZDsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuRE9NTm9kZURl
dGFpbHNTaWRlYmFyUGFuZWwuUHJvcGVydGllc09iamVjdEdyb3VwTmFtZSA9ICJkb20tbm9kZS1k
ZXRhaWxzLXNpZGViYXItcHJvcGVydGllcy1vYmplY3QtZ3JvdXAiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NU3RvcmFnZUNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NU3Rv
cmFnZUNvbnRlbnRWaWV3LmpzCmluZGV4IDQwNmEzNWYuLjFlNTBkYzUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVN0b3JhZ2VDb250ZW50
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
T01TdG9yYWdlQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjQsMzggKzI0LDMwIEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50
VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2VDb250ZW50VmlldyA9IGNsYXNzIERPTVN0b3JhZ2VDb250ZW50VmlldyBleHRlbmRzIFdlYklu
c3BlY3Rvci5Db250ZW50VmlldwogewotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jYWxs
KHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOwot
Ci0gICAgcmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZU9iamVjdC5FdmVudC5JdGVtc0NsZWFyZWQsIHRoaXMuaXRlbXNDbGVhcmVkLCB0aGlz
KTsKLSAgICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
T01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1BZGRlZCwgdGhpcy5pdGVtQWRkZWQsIHRoaXMpOwot
ICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VPYmplY3QuRXZlbnQuSXRlbVJlbW92ZWQsIHRoaXMuaXRlbVJlbW92ZWQsIHRoaXMpOwot
ICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VPYmplY3QuRXZlbnQuSXRlbVVwZGF0ZWQsIHRoaXMuaXRlbVVwZGF0ZWQsIHRoaXMpOwot
Ci0gICAgdGhpcy5yZXNldCgpOwotfTsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVj
dCkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0KTsKIAotV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJkb20tc3RvcmFnZSI7
Ci1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LkR1cGxpY2F0ZUtleVN0eWxlQ2xh
c3NOYW1lID0gImR1cGxpY2F0ZS1rZXkiOwotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50
Vmlldy5NaXNzaW5nS2V5U3R5bGVDbGFzc05hbWUgPSAibWlzc2luZy1rZXkiOwotV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5NaXNzaW5nVmFsdWVTdHlsZUNsYXNzTmFtZSA9ICJt
aXNzaW5nLXZhbHVlIjsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRvbS1z
dG9yYWdlIik7CiAKKyAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtc0NsZWFyZWQsIHRoaXMuaXRl
bXNDbGVhcmVkLCB0aGlzKTsKKyAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtQWRkZWQsIHRoaXMu
aXRlbUFkZGVkLCB0aGlzKTsKKyAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtUmVtb3ZlZCwgdGhp
cy5pdGVtUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbVVwZGF0ZWQs
IHRoaXMuaXRlbVVwZGF0ZWQsIHRoaXMpOwogCi1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMucmVzZXQoKTsKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBhbGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIFtXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuaWRlbnRpZmll
cl07Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHJlc2V0KCkK
ICAgICB7CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZ2V0RW50cmllcyhmdW5jdGlv
bihlcnJvciwgZW50cmllcykgewogICAgICAgICAgICAgaWYgKGVycm9yKQpAQCAtODgsMzAgKzgw
LDMwIEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkUGxhY2Vob2xkZXJOb2RlKCk7CiAgICAgICAg
ICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgfS5iaW5kKHRoaXMp
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQor
ICAgIHNhdmVUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWUudHlwZSA9IFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuRE9NU3RvcmFnZTsKICAgICAgICAgY29v
a2llLmlzTG9jYWxTdG9yYWdlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pc0xvY2FsU3RvcmFn
ZSgpOwogICAgICAgICBjb29raWUuaG9zdCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaG9zdDsK
LSAgICB9LAorICAgIH0KIAotICAgIGl0ZW1zQ2xlYXJlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
aXRlbXNDbGVhcmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVtb3Zl
Q2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkUGxhY2Vob2xkZXJOb2RlKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpdGVtUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
aXRlbVJlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBmb3IgKHZhciBub2RlIG9mIHRoaXMu
X2RhdGFHcmlkLmNoaWxkcmVuKSB7CiAgICAgICAgICAgICBpZiAobm9kZS5kYXRhLmtleSA9PT0g
ZXZlbnQuZGF0YS5rZXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFHcmlkLnJl
bW92ZUNoaWxkKG5vZGUpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpdGVtQWRk
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGl0ZW1BZGRlZChldmVudCkKICAgICB7CiAgICAgICAg
IHZhciBrZXkgPSBldmVudC5kYXRhLmtleTsKICAgICAgICAgdmFyIHZhbHVlID0gZXZlbnQuZGF0
YS52YWx1ZTsKQEAgLTEyNSw5ICsxMTcsOSBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGRhdGEgPSB7a2V5LCB2YWx1ZX07CiAg
ICAgICAgIHRoaXMuX2RhdGFHcmlkLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdy
aWROb2RlKGRhdGEsIGZhbHNlKSk7CiAgICAgICAgIHRoaXMuX3NvcnREYXRhR3JpZCgpOwotICAg
IH0sCisgICAgfQogCi0gICAgaXRlbVVwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGl0ZW1V
cGRhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGtleSA9IGV2ZW50LmRhdGEua2V5Owog
ICAgICAgICB2YXIgdmFsdWUgPSBldmVudC5kYXRhLnZhbHVlOwpAQCAtMTQ3LDI0ICsxMzksMjQg
QEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5fc29ydERhdGFHcmlkKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlv
dXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RhdGFHcmlkKQogICAgICAgICAgICAgdGhp
cy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2Ny
b2xsYWJsZUVsZW1lbnRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZGF0YUdyaWQpCiAg
ICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgIHJldHVybiBbdGhpcy5fZGF0YUdyaWQuc2Ny
b2xsQ29udGFpbmVyXTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9z
b3J0RGF0YUdyaWQ6IGZ1bmN0aW9uKCkKKyAgICBfc29ydERhdGFHcmlkKCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fZGF0YUdyaWQuc29ydE9yZGVyKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTc3LDE4ICsxNjksMTggQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Tm9k
ZXMoY29tcGFyYXRvciwgdGhpcy5fZGF0YUdyaWQuc29ydE9yZGVyKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9kZWxldGVDYWxsYmFjazogZnVuY3Rpb24obm9kZSkKKyAgICBfZGVsZXRlQ2FsbGJh
Y2sobm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZSB8fCBub2RlLmlzUGxhY2Vob2xkZXJO
b2RlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92
ZUNoaWxkKG5vZGUpOwogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUl0ZW0o
bm9kZS5kYXRhWyJrZXkiXSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZWRpdGluZ0NhbGxiYWNr
OiBmdW5jdGlvbihlZGl0aW5nTm9kZSwgY29sdW1uSWRlbnRpZmllciwgb2xkVGV4dCwgbmV3VGV4
dCwgbW92ZURpcmVjdGlvbikKKyAgICBfZWRpdGluZ0NhbGxiYWNrKGVkaXRpbmdOb2RlLCBjb2x1
bW5JZGVudGlmaWVyLCBvbGRUZXh0LCBuZXdUZXh0LCBtb3ZlRGlyZWN0aW9uKQogICAgIHsKICAg
ICAgICAgdmFyIGtleSA9IGVkaXRpbmdOb2RlLmRhdGFbImtleSJdLnRyaW0oKS5yZW1vdmVXb3Jk
QnJlYWtDaGFyYWN0ZXJzKCk7CiAgICAgICAgIHZhciB2YWx1ZSA9IGVkaXRpbmdOb2RlLmRhdGFb
InZhbHVlIl0udHJpbSgpLnJlbW92ZVdvcmRCcmVha0NoYXJhY3RlcnMoKTsKQEAgLTI4MiwzICsy
NzQsNyBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgZG9tU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpOwogICAgIH0KIH07CisKK1dl
Ykluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcuRHVwbGljYXRlS2V5U3R5bGVDbGFzc05h
bWUgPSAiZHVwbGljYXRlLWtleSI7CitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3
Lk1pc3NpbmdLZXlTdHlsZUNsYXNzTmFtZSA9ICJtaXNzaW5nLWtleSI7CitXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZUNvbnRlbnRWaWV3Lk1pc3NpbmdWYWx1ZVN0eWxlQ2xhc3NOYW1lID0gIm1pc3Np
bmctdmFsdWUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRE9NU3RvcmFnZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NU3RvcmFnZVRyZWVFbGVtZW50LmpzCmluZGV4IDNiM2U2
MGMuLmJiMmZlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVN0b3JhZ2VUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9yYWdlVHJlZUVsZW1lbnQuanMKQEAgLTIz
LDMwICsyMywyNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCkKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQgPSBjbGFzcyBET01T
dG9yYWdlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50
CiB7Ci0gICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCk7Ci0KLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3Qu
aXNMb2NhbFN0b3JhZ2UoKSkKLSAgICAgICAgdmFyIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5E
T01TdG9yYWdlVHJlZUVsZW1lbnQuTG9jYWxTdG9yYWdlSWNvblN0eWxlQ2xhc3NOYW1lOwotICAg
IGVsc2UKLSAgICAgICAgdmFyIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJl
ZUVsZW1lbnQuU2Vzc2lvblN0b3JhZ2VJY29uU3R5bGVDbGFzc05hbWU7Ci0KLSAgICBXZWJJbnNw
ZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgY2xhc3NOYW1lLCBXZWJJbnNwZWN0
b3IuZGlzcGxheU5hbWVGb3JIb3N0KHJlcHJlc2VudGVkT2JqZWN0Lmhvc3QpLCByZXByZXNlbnRl
ZE9iamVjdCk7Ci19OworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdCk7CiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJl
ZUVsZW1lbnQuTG9jYWxTdG9yYWdlSWNvblN0eWxlQ2xhc3NOYW1lID0gImxvY2FsLXN0b3JhZ2Ut
aWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LlNlc3Npb25TdG9yYWdl
SWNvblN0eWxlQ2xhc3NOYW1lID0gInNlc3Npb24tc3RvcmFnZS1pY29uIjsKKyAgICAgICAgaWYg
KHJlcHJlc2VudGVkT2JqZWN0LmlzTG9jYWxTdG9yYWdlKCkpCisgICAgICAgICAgICB2YXIgY2xh
c3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVlRWxlbWVudC5Mb2NhbFN0b3JhZ2VJ
Y29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHZhciBjbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LlNlc3Npb25TdG9yYWdlSWNv
blN0eWxlQ2xhc3NOYW1lOwogCi1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVl
RWxlbWVudCwKKyAgICAgICAgc3VwZXIoY2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuZGlzcGxheU5h
bWVGb3JIb3N0KHJlcHJlc2VudGVkT2JqZWN0Lmhvc3QpLCByZXByZXNlbnRlZE9iamVjdCk7Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmFtZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9ySG9zdCh0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0Lmhvc3QpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNhdGVnb3J5TmFtZSgpCiAgICAg
ewpAQCAtNTYsNCArNTIsNSBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVt
ZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50
LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQuTG9jYWxTdG9y
YWdlSWNvblN0eWxlQ2xhc3NOYW1lID0gImxvY2FsLXN0b3JhZ2UtaWNvbiI7CitXZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LlNlc3Npb25TdG9yYWdlSWNvblN0eWxlQ2xhc3NOYW1l
ID0gInNlc3Npb24tc3RvcmFnZS1pY29uIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwpp
bmRleCA1MWM2Njc2Li4wNDgzZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MywxMDQgKzIzLDEwMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCkKK1dlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVl
Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIHsKLSAgICBjb25z
b2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICB2YXIgbGF5ZXJCb3Jk
ZXJzSW1hZ2UsIHNoYWRvd0RPTUltYWdlOwotICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZvcm0u
aXNMZWdhY3lNYWNPUykgewotICAgICAgICBsYXllckJvcmRlcnNJbWFnZSA9IHtzcmM6ICJJbWFn
ZXMvTGVnYWN5L0xheWVyQm9yZGVycy5zdmciLCB3aWR0aDogMTYsIGhlaWdodDogMTZ9OwotICAg
ICAgICBzaGFkb3dET01JbWFnZSA9IHtzcmM6ICJJbWFnZXMvTGVnYWN5L1NoYWRvd0RPTS5zdmci
LCB3aWR0aDogMTYsIGhlaWdodDogMTZ9OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGxheWVyQm9y
ZGVyc0ltYWdlID0ge3NyYzogIkltYWdlcy9MYXllckJvcmRlcnMuc3ZnIiwgd2lkdGg6IDEzLCBo
ZWlnaHQ6IDEzfTsKLSAgICAgICAgc2hhZG93RE9NSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL1NoYWRv
d0RPTS5zdmciLCB3aWR0aDogMTMsIGhlaWdodDogMTN9OwotICAgIH0KKyAgICBjb25zdHJ1Y3Rv
cihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJl
c2VudGVkT2JqZWN0KTsKIAotICAgIHRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmln
YXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVt
KCJsYXllci1ib3JkZXJzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IGNvbXBvc2l0aW5n
IGJvcmRlcnMiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIGNvbXBvc2l0aW5nIGJvcmRl
cnMiKSwgbGF5ZXJCb3JkZXJzSW1hZ2Uuc3JjLCBsYXllckJvcmRlcnNJbWFnZS53aWR0aCwgbGF5
ZXJCb3JkZXJzSW1hZ2UuaGVpZ2h0KTsKLSAgICB0aGlzLl9jb21wb3NpdGluZ0JvcmRlcnNCdXR0
b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZp
Z2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVDb21wb3NpdGluZ0JvcmRlcnMs
IHRoaXMpOwotICAgIHRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVt
LmVuYWJsZWQgPSAhIVBhZ2VBZ2VudC5nZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlOworICAg
ICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1Bh
aW50UmVjdHNTZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZl
bnQuQ2hhbmdlZCwgdGhpcy5fc2hvd1BhaW50UmVjdHNTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7Ci0g
ICAgdGhpcy5fcGFpbnRGbGFzaGluZ0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3Bl
Y3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJwYWludC1mbGFzaGluZyIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRW5hYmxlIHBhaW50IGZsYXNoaW5nIiksIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRGlzYWJsZSBwYWludCBmbGFzaGluZyIpLCAiSW1hZ2VzL1BhaW50Rmxhc2hpbmcu
c3ZnIiwgMTYsIDE2KTsKLSAgICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZl
bnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlUGFpbnRGbGFzaGluZywgdGhpcyk7Ci0gICAgdGhpcy5f
cGFpbnRGbGFzaGluZ0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSAhIVBhZ2VBZ2VudC5z
ZXRTaG93UGFpbnRSZWN0czsKLSAgICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uYWN0aXZhdGVkID0gUGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzICYmIFdlYkluc3Bl
Y3Rvci5zaG93UGFpbnRSZWN0c1NldHRpbmcudmFsdWU7CisgICAgICAgIHZhciBsYXllckJvcmRl
cnNJbWFnZSwgc2hhZG93RE9NSW1hZ2U7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZv
cm0uaXNMZWdhY3lNYWNPUykgeworICAgICAgICAgICAgbGF5ZXJCb3JkZXJzSW1hZ2UgPSB7c3Jj
OiAiSW1hZ2VzL0xlZ2FjeS9MYXllckJvcmRlcnMuc3ZnIiwgd2lkdGg6IDE2LCBoZWlnaHQ6IDE2
fTsKKyAgICAgICAgICAgIHNoYWRvd0RPTUltYWdlID0ge3NyYzogIkltYWdlcy9MZWdhY3kvU2hh
ZG93RE9NLnN2ZyIsIHdpZHRoOiAxNiwgaGVpZ2h0OiAxNn07CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBsYXllckJvcmRlcnNJbWFnZSA9IHtzcmM6ICJJbWFnZXMvTGF5ZXJCb3JkZXJz
LnN2ZyIsIHdpZHRoOiAxMywgaGVpZ2h0OiAxM307CisgICAgICAgICAgICBzaGFkb3dET01JbWFn
ZSA9IHtzcmM6ICJJbWFnZXMvU2hhZG93RE9NLnN2ZyIsIHdpZHRoOiAxMywgaGVpZ2h0OiAxM307
CisgICAgICAgIH0KIAotICAgIFdlYkluc3BlY3Rvci5zaG93U2hhZG93RE9NU2V0dGluZy5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3No
b3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7Ci0gICAgdGhpcy5fc2hvd3NTaGFkb3dE
T01CdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25O
YXZpZ2F0aW9uSXRlbSgic2hvd3Mtc2hhZG93LURPTSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2hvdyBzaGFkb3cgRE9NIG5vZGVzIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSBzaGFk
b3cgRE9NIG5vZGVzIiksIHNoYWRvd0RPTUltYWdlLnNyYywgc2hhZG93RE9NSW1hZ2Uud2lkdGgs
IHNoYWRvd0RPTUltYWdlLmhlaWdodCk7Ci0gICAgdGhpcy5fc2hvd3NTaGFkb3dET01CdXR0b25O
YXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVTaG93c1NoYWRvd0RPTVNldHRpbmcs
IHRoaXMpOwotICAgIHRoaXMuX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZCgpOworICAgICAg
ICB0aGlzLl9jb21wb3NpdGluZ0JvcmRlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJ
bnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgibGF5ZXItYm9yZGVycyIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBjb21wb3NpdGluZyBib3JkZXJzIiksIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiSGlkZSBjb21wb3NpdGluZyBib3JkZXJzIiksIGxheWVyQm9yZGVyc0lt
YWdlLnNyYywgbGF5ZXJCb3JkZXJzSW1hZ2Uud2lkdGgsIGxheWVyQm9yZGVyc0ltYWdlLmhlaWdo
dCk7CisgICAgICAgIHRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVt
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZUNvbXBvc2l0aW5nQm9yZGVycywgdGhpcyk7CisgICAgICAg
IHRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSAh
IVBhZ2VBZ2VudC5nZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlOwogCi0gICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5TdHlsZUNs
YXNzTmFtZSk7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5fbW91c2VXYXNDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnNob3dQYWludFJlY3RzU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5T
ZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dQYWludFJlY3RzU2V0dGluZ0NoYW5nZWQs
IHRoaXMpOworICAgICAgICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW0g
PSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInBhaW50LWZs
YXNoaW5nIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGUgcGFpbnQgZmxhc2hpbmciKSwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEaXNhYmxlIHBhaW50IGZsYXNoaW5nIiksICJJbWFnZXMv
UGFpbnRGbGFzaGluZy5zdmciLCAxNiwgMTYpOworICAgICAgICB0aGlzLl9wYWludEZsYXNoaW5n
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlUGFpbnRGbGFzaGluZywg
dGhpcyk7CisgICAgICAgIHRoaXMuX3BhaW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbS5l
bmFibGVkID0gISFQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHM7CisgICAgICAgIHRoaXMuX3Bh
aW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBQYWdlQWdlbnQuc2V0
U2hvd1BhaW50UmVjdHMgJiYgV2ViSW5zcGVjdG9yLnNob3dQYWludFJlY3RzU2V0dGluZy52YWx1
ZTsKIAotICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lID0gbmV3IFdlYkluc3BlY3Rvci5ET01UcmVl
T3V0bGluZSh0cnVlLCB0cnVlLCBmYWxzZSk7Ci0gICAgdGhpcy5fZG9tVHJlZU91dGxpbmUuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0ZWRO
b2RlQ2hhbmdlZCwgdGhpcy5fc2VsZWN0ZWROb2RlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlz
Ll9kb21UcmVlT3V0bGluZS53aXJlVG9Eb21BZ2VudCgpOwotICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9kb21UcmVlT3V0bGluZS5lbGVtZW50KTsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnNob3dTaGFkb3dET01TZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNl
dHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvd1NoYWRvd0RPTVNldHRpbmdDaGFuZ2VkLCB0
aGlzKTsKKyAgICAgICAgdGhpcy5fc2hvd3NTaGFkb3dET01CdXR0b25OYXZpZ2F0aW9uSXRlbSA9
IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hvd3Mtc2hh
ZG93LURPTSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBzaGFkb3cgRE9NIG5vZGVzIiks
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSBzaGFkb3cgRE9NIG5vZGVzIiksIHNoYWRvd0RP
TUltYWdlLnNyYywgc2hhZG93RE9NSW1hZ2Uud2lkdGgsIHNoYWRvd0RPTUltYWdlLmhlaWdodCk7
CisgICAgICAgIHRoaXMuX3Nob3dzU2hhZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tl
ZCwgdGhpcy5fdG9nZ2xlU2hvd3NTaGFkb3dET01TZXR0aW5nLCB0aGlzKTsKKyAgICAgICAgdGhp
cy5fc2hvd1NoYWRvd0RPTVNldHRpbmdDaGFuZ2VkKCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKLSAg
ICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fZG9tTm9kZUNo
YW5nZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5DaGFyYWN0ZXJEYXRhTW9k
aWZpZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoImRvbS10cmVlIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX21vdXNlV2FzQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxz
ZSk7CiAKLSAgICB0aGlzLl9sYXN0U2VsZWN0ZWROb2RlUGF0aFNldHRpbmcgPSBuZXcgV2ViSW5z
cGVjdG9yLlNldHRpbmcoImxhc3Qtc2VsZWN0ZWQtbm9kZS1wYXRoIiwgbnVsbCk7CisgICAgICAg
IHRoaXMuX2RvbVRyZWVPdXRsaW5lID0gbmV3IFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZSh0
cnVlLCB0cnVlLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLkV2ZW50LlNlbGVjdGVkTm9kZUNo
YW5nZWQsIHRoaXMuX3NlbGVjdGVkTm9kZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMu
X2RvbVRyZWVPdXRsaW5lLndpcmVUb0RvbUFnZW50KCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9kb21UcmVlT3V0bGluZS5lbGVtZW50KTsKIAotICAgIHRoaXMuX251
bWJlck9mU2VhcmNoUmVzdWx0cyA9IG51bGw7Ci19OworICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZVJlbW92ZWQsIHRoaXMuX2RvbU5v
ZGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNoYXJhY3Rl
ckRhdGFNb2RpZmllZCwgdGhpcy5fZG9tTm9kZUNoYW5nZWQsIHRoaXMpOwogCi1XZWJJbnNwZWN0
b3IuRE9NVHJlZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImRvbS10cmVlIjsKKyAgICAg
ICAgdGhpcy5fbGFzdFNlbGVjdGVkTm9kZVBhdGhTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5T
ZXR0aW5nKCJsYXN0LXNlbGVjdGVkLW5vZGUtcGF0aCIsIG51bGwpOwogCi1XZWJJbnNwZWN0b3Iu
RE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkRPTVRyZWVDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0
cyA9IG51bGw7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgYWxsb3dlZE5hdmln
YXRpb25TaWRlYmFyUGFuZWxzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbV2ViSW5zcGVjdG9y
LnJlc291cmNlU2lkZWJhclBhbmVsLmlkZW50aWZpZXJdOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3Nob3dz
U2hhZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1
dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0
ZW1dOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRvbVRyZWVPdXRsaW5lKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9kb21UcmVlT3V0bGluZTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLmVs
ZW1lbnRdOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisg
ICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLnVw
ZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkK
KyAgICBzaG93bigpCiAgICAgewogICAgICAgICB0aGlzLl9kb21UcmVlT3V0bGluZS5zZXRWaXNp
YmxlKHRydWUsIFdlYkluc3BlY3Rvci5pc0NvbnNvbGVGb2N1c2VkKCkpOwogICAgICAgICB0aGlz
Ll91cGRhdGVDb21wb3NpdGluZ0JvcmRlcnNCdXR0b25Ub01hdGNoUGFnZVNldHRpbmdzKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxp
Z2h0KCk7CiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNldFZpc2libGUoZmFsc2UpOwot
ICAgIH0sCisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKG51bGwsIG51bGwsIHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLmNs
b3NlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMo
KQogICAgIHsKQEAgLTE0MiwxNCArMTM4LDE0IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHBhdGhDb21w
b25lbnRzOwotICAgIH0sCisgICAgfQogCi0gICAgc2VsZWN0QW5kUmV2ZWFsRE9NTm9kZTogZnVu
Y3Rpb24oZG9tTm9kZSwgcHJldmVudEZvY3VzQ2hhbmdlKQorICAgIHNlbGVjdEFuZFJldmVhbERP
TU5vZGUoZG9tTm9kZSwgcHJldmVudEZvY3VzQ2hhbmdlKQogICAgIHsKICAgICAgICAgdGhpcy5f
ZG9tVHJlZU91dGxpbmUuc2VsZWN0RE9NTm9kZShkb21Ob2RlLCAhcHJldmVudEZvY3VzQ2hhbmdl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUNvcHlFdmVudDogZnVuY3Rpb24oZXZlbnQp
CisgICAgaGFuZGxlQ29weUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGVk
RE9NTm9kZSA9IHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNlbGVjdGVkRE9NTm9kZSgpOwogICAgICAg
ICBpZiAoIXNlbGVjdGVkRE9NTm9kZSkKQEAgLTE1OSwxMiArMTU1LDEyIEBAIFdlYkluc3BlY3Rv
ci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOwogCiAgICAgICAgIHNlbGVjdGVkRE9NTm9kZS5jb3B5Tm9kZSgpOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU2F2ZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLmNhbkFyY2hpdmVNYWluRnJhbWUoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBzYXZlRGF0YSgpCiAgICAgewpAQCAtMTc0LDIyICsxNzAsMjIgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBy
ZXR1cm4geyBjdXN0b21TYXZlSGFuZGxlcjogc2F2ZUhhbmRsZXIgfTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBzdXBwb3J0c1NlYXJjaCgpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBudW1iZXJPZlNlYXJjaFJlc3VsdHMoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0czsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBoYXNQZXJmb3JtZWRTZWFyY2goKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0cyAhPT0gbnVsbDsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCBhdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQocmV2ZWFsKQogICAg
IHsKQEAgLTIwMCw5ICsxOTYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5k
ZXggPT09IC0xKQogICAgICAgICAgICAgICAgIHRoaXMucmV2ZWFsTmV4dFNlYXJjaFJlc3VsdCgp
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlv
bihxdWVyeSkKKyAgICBwZXJmb3JtU2VhcmNoKHF1ZXJ5KQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX3NlYXJjaFF1ZXJ5ID09PSBxdWVyeSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIzOSwx
NiArMjM1LDE2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5nZXRTZWFyY2hDb250ZXh0Tm9kZXMoY29udGV4
dE5vZGVzUmVhZHkuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRTZWFyY2hD
b250ZXh0Tm9kZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldFNlYXJjaENvbnRleHROb2Rl
cyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGlzIHRvIGxpbWl0IHRo
ZSBzZWFyY2ggdG8ganVzdCBhIHN1YnRyZWUuCiAgICAgICAgIC8vIFBhc3NpbmcgdW5kZWZpbmVk
IHdpbGwgbWFrZSBET01BZ2VudC5wZXJmb3JtU2VhcmNoIHNlYXJjaCB0aHJvdWdoIGFsbCB0aGUg
ZG9jdW1lbnRzLgogICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgc2VhcmNoQ2xlYXJlZDogZnVuY3Rpb24oKQorICAgIHNlYXJjaENsZWFyZWQoKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX3NlYXJjaElkZW50aWZpZXIpIHsKICAgICAgICAgICAgIERP
TUFnZW50LmRpc2NhcmRTZWFyY2hSZXN1bHRzKHRoaXMuX3NlYXJjaElkZW50aWZpZXIpOwpAQCAt
MjU5LDkgKzI1NSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9zZWFyY2hJZGVudGlmaWVyID0gbnVsbDsKICAgICAgICAgdGhp
cy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzID0gbnVsbDsKICAgICAgICAgdGhpcy5fY3VycmVudFNl
YXJjaFJlc3VsdEluZGV4ID0gLTE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxQcmV2aW91
c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24oY2hhbmdlRm9jdXMpCisgICAgcmV2ZWFsUHJldmlvdXNT
ZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX251bWJl
ck9mU2VhcmNoUmVzdWx0cykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI3Miw5ICsyNjgsOSBA
QCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IHRoaXMuX251bWJlck9mU2VhcmNo
UmVzdWx0cyAtIDE7CiAKICAgICAgICAgdGhpcy5fcmV2ZWFsU2VhcmNoUmVzdWx0KHRoaXMuX2N1
cnJlbnRTZWFyY2hSZXN1bHRJbmRleCwgY2hhbmdlRm9jdXMpOwotICAgIH0sCisgICAgfQogCi0g
ICAgcmV2ZWFsTmV4dFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oY2hhbmdlRm9jdXMpCisgICAgcmV2
ZWFsTmV4dFNlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cykKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjg1LDEx
ICsyODEsMTEgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOwogCiAgICAg
ICAgIHRoaXMuX3JldmVhbFNlYXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5k
ZXgsIGNoYW5nZUZvY3VzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF9yZXZlYWxTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGluZGV4LCBjaGFuZ2VGb2N1cykKKyAgICBf
cmV2ZWFsU2VhcmNoUmVzdWx0KGluZGV4LCBjaGFuZ2VGb2N1cykKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX3NlYXJjaElkZW50aWZpZXIpOwogCkBAIC0zMTksOSArMzE1LDkg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICBET01BZ2VudC5nZXRTZWFyY2hSZXN1bHRzKHRoaXMuX3NlYXJjaElkZW50
aWZpZXIsIGluZGV4LCBpbmRleCArIDEsIHJldmVhbFJlc3VsdC5iaW5kKHRoaXMpKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9yZXN0b3JlU2VsZWN0ZWROb2RlQWZ0ZXJVcGRhdGU6IGZ1bmN0aW9u
KGRvY3VtZW50VVJMLCBkZWZhdWx0Tm9kZSkKKyAgICBfcmVzdG9yZVNlbGVjdGVkTm9kZUFmdGVy
VXBkYXRlKGRvY3VtZW50VVJMLCBkZWZhdWx0Tm9kZSkKICAgICB7CiAgICAgICAgIGlmICghV2Vi
SW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnJlc3RvcmVTZWxlY3RlZE5vZGVJc0FsbG93ZWQpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zNTUsOSArMzUxLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIucHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKHRoaXMuX2xhc3RTZWxlY3RlZE5v
ZGVQYXRoU2V0dGluZy52YWx1ZS5wYXRoLCBzZWxlY3RMYXN0U2VsZWN0ZWROb2RlLmJpbmQodGhp
cykpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzZWxlY3ROb2RlLmNhbGwodGhpcyk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfc2VsZWN0ZWROb2RlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfc2VsZWN0ZWROb2RlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IHNlbGVjdGVkRE9NTm9kZSA9IHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNlbGVjdGVkRE9NTm9kZSgp
OwogICAgICAgICBpZiAoc2VsZWN0ZWRET01Ob2RlICYmICF0aGlzLl9kb250U2V0TGFzdFNlbGVj
dGVkTm9kZVBhdGgpCkBAIC0zNjcsMjYgKzM2MywyNiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNv
bnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIENvbnNvbGVBZ2VudC5hZGRJbnNw
ZWN0ZWROb2RlKHNlbGVjdGVkRE9NTm9kZS5pZCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBh
dGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXRoQ29tcG9u
ZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0ZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5kYXRhLnBhdGhDb21w
b25lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50
KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LmRvbVRy
ZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50KTsKIAogICAg
ICAgICB0aGlzLl9kb21UcmVlT3V0bGluZS5zZWxlY3RET01Ob2RlKGV2ZW50LmRhdGEucGF0aENv
bXBvbmVudC5kb21UcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCwgdHJ1ZSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZG9tTm9kZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kb21O
b2RlQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzZWxlY3RlZERPTU5vZGUgPSB0
aGlzLl9kb21UcmVlT3V0bGluZS5zZWxlY3RlZERPTU5vZGUoKTsKICAgICAgICAgaWYgKHNlbGVj
dGVkRE9NTm9kZSAhPT0gZXZlbnQuZGF0YS5ub2RlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50
Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfbW91c2VXYXNDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VX
YXNDbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGFuY2hvckVsZW1lbnQgPSBldmVu
dC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgiYSIpOwogICAgICAgICBp
ZiAoIWFuY2hvckVsZW1lbnQgfHwgIWFuY2hvckVsZW1lbnQuaHJlZikKQEAgLTQyNCwyMyArNDIw
LDIzIEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAvLyB0aGVuIGEgZG91YmxlLWNsaWNrIGhhcHBlbmVkIG9yIGFub3RoZXIgbGluayB3YXMg
Y2xpY2tlZC4KICAgICAgICAgLy8gRklYTUU6IFRoZSBkdXJhdGlvbiBtaWdodCBiZSBsb25nZXIg
b3Igc2hvcnRlciB0aGFuIHRoZSB1c2VyJ3MgY29uZmlndXJlZCBkb3VibGUgY2xpY2sgc3BlZWQu
CiAgICAgICAgIHRoaXMuX2ZvbGxvd0xpbmtUaW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQo
Zm9sbG93TGluay5iaW5kKHRoaXMpLCAzMzMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2ds
ZUNvbXBvc2l0aW5nQm9yZGVyczogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RvZ2dsZUNvbXBvc2l0
aW5nQm9yZGVycyhldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFBhZ2VBZ2Vu
dC5zZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKTsKIAogICAgICAgICB2YXIgYWN0aXZhdGVk
ID0gIXRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRl
ZDsKICAgICAgICAgdGhpcy5fY29tcG9zaXRpbmdCb3JkZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
YWN0aXZhdGVkID0gYWN0aXZhdGVkOwogICAgICAgICBQYWdlQWdlbnQuc2V0Q29tcG9zaXRpbmdC
b3JkZXJzVmlzaWJsZShhY3RpdmF0ZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2dsZVBh
aW50Rmxhc2hpbmc6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90b2dnbGVQYWludEZsYXNoaW5nKGV2
ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYWludFJlY3RzU2V0dGluZy52
YWx1ZSA9ICFXZWJJbnNwZWN0b3Iuc2hvd1BhaW50UmVjdHNTZXR0aW5nLnZhbHVlOwotICAgIH0s
CisgICAgfQogCi0gICAgX3VwZGF0ZUNvbXBvc2l0aW5nQm9yZGVyc0J1dHRvblRvTWF0Y2hQYWdl
U2V0dGluZ3M6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlQ29tcG9zaXRpbmdCb3JkZXJzQnV0dG9u
VG9NYXRjaFBhZ2VTZXR0aW5ncygpCiAgICAgewogICAgICAgICBpZiAoIVBhZ2VBZ2VudC5nZXRD
b21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDUzLDI4
ICs0NDksMjggQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBidXR0b24uYWN0aXZhdGVkID0gZXJyb3IgPyBmYWxzZSA6IGNvbXBvc2l0
aW5nQm9yZGVyc1Zpc2libGU7CiAgICAgICAgICAgICBidXR0b24uZW5hYmxlZCA9IGVycm9yICE9
PSAidW5zdXBwb3J0ZWQiOwogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93
UGFpbnRSZWN0c1NldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2hvd1BhaW50
UmVjdHNTZXR0aW5nQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KFBhZ2VBZ2VudC5zZXRTaG93UGFpbnRSZWN0cyk7CiAKICAgICAgICAgdGhpcy5fcGFpbnRGbGFz
aGluZ0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93UGFp
bnRSZWN0c1NldHRpbmcudmFsdWU7CiAKICAgICAgICAgUGFnZUFnZW50LnNldFNob3dQYWludFJl
Y3RzKHRoaXMuX3BhaW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZChldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3Nob3dzU2hhZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZh
dGVkID0gV2ViSW5zcGVjdG9yLnNob3dTaGFkb3dET01TZXR0aW5nLnZhbHVlOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3RvZ2dsZVNob3dzU2hhZG93RE9NU2V0dGluZzogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3RvZ2dsZVNob3dzU2hhZG93RE9NU2V0dGluZyhldmVudCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5zaG93U2hhZG93RE9NU2V0dGluZy52YWx1ZSA9ICFXZWJJbnNwZWN0b3Iu
c2hvd1NoYWRvd0RPTVNldHRpbmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd1Nl
YXJjaEhpZ2hsaWdodHM6IGZ1bmN0aW9uKCkKKyAgICBfc2hvd1NlYXJjaEhpZ2hsaWdodHMoKQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VhcmNoSWRlbnRpZmllcik7CiAK
QEAgLTUwNSw5ICs1MDEsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQuaGlnaGxpZ2h0U2VhcmNo
UmVzdWx0cyh0aGlzLl9zZWFyY2hRdWVyeSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0uYmlu
ZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGlkZVNlYXJjaEhpZ2hsaWdodHM6IGZ1
bmN0aW9uKCkKKyAgICBfaGlkZVNlYXJjaEhpZ2hsaWdodHMoKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl9zZWFyY2hSZXN1bHROb2RlcykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVEYXRh
R3JpZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVEYXRhR3JpZC5qcwppbmRleCBjOTAzMWQyLi5lMjNiMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRGF0YUdyaWQuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZURhdGFH
cmlkLmpzCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lz
dGVtcyBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yMywz
NCArMjQsMzMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuRE9NVHJlZURhdGFHcmlkID0gZnVuY3Rpb24oKSB7Ci0gICAgV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLmNhbGwodGhpcywgewotICAgICAgICBuYW1lOiB7IHRpdGxlOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5vZGUiKSwgc29ydGFibGU6IGZhbHNlIH0KLSAgICB9KTsKK1dlYklu
c3BlY3Rvci5ET01UcmVlRGF0YUdyaWQgPSBjbGFzcyBET01UcmVlRGF0YUdyaWQgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAg
ICBzdXBlcih7bmFtZToge3RpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vZGUiKSwgc29y
dGFibGU6IGZhbHNlfX0pOwogCi0gICAgdGhpcy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVudCA9IG51
bGw7CisgICAgICAgIHRoaXMuX3ByZXZpb3VzSG92ZXJlZEVsZW1lbnQgPSBudWxsOwogCi0gICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRvbS10cmVlLWRhdGEtZ3JpZCIpOwotICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbmxpbmUiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoImRvbS10cmVlLWRhdGEtZ3JpZCIpOworICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiaW5saW5lIik7CiAKLSAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fb25tb3VzZW1vdmUuYmluZCh0aGlzKSwgZmFsc2Up
OwotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX29u
bW91c2VvdXQuYmluZCh0aGlzKSwgZmFsc2UpOwotfTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91c2Vtb3ZlLmJpbmQodGhpcyks
IGZhbHNlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0
IiwgdGhpcy5fb25tb3VzZW91dC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgfQogCi1XZWJJbnNw
ZWN0b3IuRE9NVHJlZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLkRPTVRyZWVEYXRhR3JpZCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5wcm90b3R5cGUsCisgICAgLy8gUHJpdmF0ZQogCi0gICAgX29ubW91c2Vtb3ZlOiBm
dW5jdGlvbihldmVudCkKKyAgICBfb25tb3VzZW1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICB2
YXIgZ3JpZE5vZGUgPSB0aGlzLmRhdGFHcmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7CiAg
ICAgICAgIGlmICghZ3JpZE5vZGUgfHwgdGhpcy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVudCA9PT0g
Z3JpZE5vZGUuZG9tTm9kZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fcHJl
dmlvdXNIb3ZlcmVkRWxlbWVudCA9IGdyaWROb2RlLmRvbU5vZGU7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKGdyaWROb2RlLmRvbU5vZGUuaWQp
OwotICAgIH0sCisgICAgfQogCi0gICAgX29ubW91c2VvdXQ6IGZ1bmN0aW9uKGV2ZW50KSB7Cisg
ICAgX29ubW91c2VvdXQoZXZlbnQpIHsKICAgICAgICAgaWYgKCF0aGlzLl9wcmV2aW91c0hvdmVy
ZWRFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVEYXRhR3JpZE5vZGUuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRGF0YUdy
aWROb2RlLmpzCmluZGV4IDY4M2E0YWUuLjI1MWIzODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVEYXRhR3JpZE5vZGUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZURhdGFH
cmlkTm9kZS5qcwpAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2Jl
IFN5c3RlbXMgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
MjMsMjcgKzI0LDI3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkRPTVRyZWVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkb21Ob2RlKQor
V2ViSW5zcGVjdG9yLkRPTVRyZWVEYXRhR3JpZE5vZGUgPSBjbGFzcyBET01UcmVlRGF0YUdyaWRO
b2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZQogewotICAgIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGUuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX25hbWVMYWJlbCA9IG51bGw7
Ci0gICAgdGhpcy5fZG9tTm9kZSA9IGRvbU5vZGU7Ci0gICAgdGhpcy5fdXBkYXRlTm9kZU5hbWUo
KTsKLX07CisgICAgY29uc3RydWN0b3IoZG9tTm9kZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CiAKLVdlYkluc3BlY3Rvci5ET01UcmVlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTVRyZWVEYXRhR3JpZE5vZGUsCi0gICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5f
bmFtZUxhYmVsID0gbnVsbDsKKyAgICAgICAgdGhpcy5fZG9tTm9kZSA9IGRvbU5vZGU7CisgICAg
ICAgIHRoaXMuX3VwZGF0ZU5vZGVOYW1lKCk7CisgICAgfQogCisgICAgLy8gUHVibGljCisgICAg
CiAgICAgZ2V0IGRvbU5vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbU5vZGU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBEYXRhR3JpZE5vZGUgT3ZlcnJpZGVzLgogCi0gICAg
Y3JlYXRlQ2VsbENvbnRlbnQ6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCisgICAg
Y3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCkKICAgICB7CiAgICAgICAg
IGlmIChjb2x1bW5JZGVudGlmaWVyICE9PSAibmFtZSIpCiAgICAgICAgICAgICByZXR1cm4gV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbENvbnRlbnQuY2FsbCh0
aGlzLCBjb2x1bW5JZGVudGlmaWVyLCBjZWxsKTsKQEAgLTUxLDE2ICs1MiwxNiBAQCBXZWJJbnNw
ZWN0b3IuRE9NVHJlZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjZWxs
ID0gdGhpcy5fbWFrZU5hbWVDZWxsKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZU5hbWVDZWxsRGF0
YSgpOwogICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZh
dGUKIAotICAgIF91cGRhdGVOb2RlTmFtZTogZnVuY3Rpb24oKQorICAgIF91cGRhdGVOb2RlTmFt
ZSgpCiAgICAgewogICAgICAgICB0aGlzLmRhdGEgPSB7bmFtZTogV2ViSW5zcGVjdG9yLmRpc3Bs
YXlOYW1lRm9yTm9kZSh0aGlzLl9kb21Ob2RlKX07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWFr
ZU5hbWVDZWxsOiBmdW5jdGlvbigpCisgICAgX21ha2VOYW1lQ2VsbCgpCiAgICAgewogICAgICAg
ICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKQEAg
LTc0LDE0ICs3NSwxNCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZURhdGFHcmlkTm9kZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGdvVG9CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlz
Ll9nb1RvQXJyb3dXYXNDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKIAogICAgICAgICByZXR1
cm4gZnJhZ21lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlTmFtZUNlbGxEYXRhOiBm
dW5jdGlvbigpCisgICAgX3VwZGF0ZU5hbWVDZWxsRGF0YSgpCiAgICAgewogICAgICAgICB0aGlz
Ll9uYW1lTGFiZWwudGV4dENvbnRlbnQgPSB0aGlzLmRhdGEubmFtZTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9nb1RvQXJyb3dXYXNDbGlja2VkOiBmdW5jdGlvbigpCisgICAgX2dvVG9BcnJvd1dh
c0NsaWNrZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBh
bmVsLnNob3dNYWluRnJhbWVET01UcmVlKHRoaXMuX2RvbU5vZGUsIHRydWUpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NVHJlZUVsZW1lbnQuanMKaW5kZXggODA2YjIwMy4uYmI4ZjhjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1lbnQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVs
ZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4
LCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0dGxpbGVrLmNvbT4K
ICAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8KICAqCkBAIC0yOCw0NiArMjgs
MjggQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50ID0g
ZnVuY3Rpb24obm9kZSwgZWxlbWVudENsb3NlVGFnKQorV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVt
ZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1l
bnQKIHsKLSAgICB0aGlzLl9lbGVtZW50Q2xvc2VUYWcgPSBlbGVtZW50Q2xvc2VUYWc7Ci0gICAg
dmFyIGhhc0NoaWxkcmVuT3ZlcnJpZGUgPSAhZWxlbWVudENsb3NlVGFnICYmIG5vZGUuaGFzQ2hp
bGROb2RlcygpICYmICF0aGlzLl9zaG93SW5saW5lVGV4dChub2RlKTsKLQotICAgIC8vIFRoZSB0
aXRsZSB3aWxsIGJlIHVwZGF0ZWQgaW4gb25hdHRhY2guCi0gICAgVHJlZUVsZW1lbnQuY2FsbCh0
aGlzLCAiIiwgbm9kZSwgaGFzQ2hpbGRyZW5PdmVycmlkZSk7Ci0KLSAgICBpZiAodGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5ub2RlVHlwZSgpID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAhZWxlbWVu
dENsb3NlVGFnKQotICAgICAgICB0aGlzLl9jYW5BZGRBdHRyaWJ1dGVzID0gdHJ1ZTsKLSAgICB0
aGlzLl9zZWFyY2hRdWVyeSA9IG51bGw7Ci0gICAgdGhpcy5fZXhwYW5kZWRDaGlsZHJlbkxpbWl0
ID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkluaXRpYWxDaGlsZHJlbkxpbWl0OwotfTsK
LQotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkluaXRpYWxDaGlsZHJlbkxpbWl0ID0gNTAw
OwotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50Lk1heGltdW1JbmxpbmVUZXh0Q2hpbGRMZW5n
dGggPSA4MDsKLQotLy8gQSB1bmlvbiBvZiBIVE1MNCBhbmQgSFRNTDUtRHJhZnQgZWxlbWVudHMg
dGhhdCBleHBsaWNpdGx5Ci0vLyBvciBpbXBsaWNpdGx5IChmb3IgSFRNTDUpIGZvcmJpZCB0aGUg
Y2xvc2luZyB0YWcuCi0vLyBGSVhNRTogUmV2aXNlIG9uY2UgSFRNTDUgRmluYWwgaXMgcHVibGlz
aGVkLgotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkZvcmJpZGRlbkNsb3NpbmdUYWdFbGVt
ZW50cyA9IFsKLSAgICAiYXJlYSIsICJiYXNlIiwgImJhc2Vmb250IiwgImJyIiwgImNhbnZhcyIs
ICJjb2wiLCAiY29tbWFuZCIsICJlbWJlZCIsICJmcmFtZSIsCi0gICAgImhyIiwgImltZyIsICJp
bnB1dCIsICJpc2luZGV4IiwgImtleWdlbiIsICJsaW5rIiwgIm1ldGEiLCAicGFyYW0iLCAic291
cmNlIgotXS5rZXlTZXQoKTsKKyAgICBjb25zdHJ1Y3Rvcihub2RlLCBlbGVtZW50Q2xvc2VUYWcp
CisgICAgeworICAgICAgICB0aGlzLl9lbGVtZW50Q2xvc2VUYWcgPSBlbGVtZW50Q2xvc2VUYWc7
CisgICAgICAgIHZhciBoYXNDaGlsZHJlbk92ZXJyaWRlID0gIWVsZW1lbnRDbG9zZVRhZyAmJiBu
b2RlLmhhc0NoaWxkTm9kZXMoKSAmJiAhdGhpcy5fc2hvd0lubGluZVRleHQobm9kZSk7CiAKLS8v
IFRoZXNlIHRhZ3Mgd2UgZG8gbm90IGFsbG93IGVkaXRpbmcgdGhlaXIgdGFnIG5hbWUuCi1XZWJJ
bnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuRWRpdFRhZ0JsYWNrbGlzdCA9IFsKLSAgICAiaHRtbCIs
ICJoZWFkIiwgImJvZHkiCi1dLmtleVNldCgpOworICAgICAgICAvLyBUaGUgdGl0bGUgd2lsbCBi
ZSB1cGRhdGVkIGluIG9uYXR0YWNoLgorICAgICAgICBzdXBlcigiIiwgbm9kZSwgaGFzQ2hpbGRy
ZW5PdmVycmlkZSk7CiAKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5TZWFyY2hIaWdobGln
aHRTdHlsZUNsYXNzTmFtZSA9ICJzZWFyY2gtaGlnaGxpZ2h0IjsKLVdlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudC5Cb3VuY3lIaWdobGlnaHRTdHlsZUNsYXNzTmFtZSA9ICJib3VuY3ktaGlnaGxp
Z2h0IjsKKyAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qubm9kZVR5cGUoKSA9PT0g
Tm9kZS5FTEVNRU5UX05PREUgJiYgIWVsZW1lbnRDbG9zZVRhZykKKyAgICAgICAgICAgIHRoaXMu
X2NhbkFkZEF0dHJpYnV0ZXMgPSB0cnVlOworICAgICAgICB0aGlzLl9zZWFyY2hRdWVyeSA9IG51
bGw7CisgICAgICAgIHRoaXMuX2V4cGFuZGVkQ2hpbGRyZW5MaW1pdCA9IFdlYkluc3BlY3Rvci5E
T01UcmVlRWxlbWVudC5Jbml0aWFsQ2hpbGRyZW5MaW1pdDsKKyAgICB9CiAKLVdlYkluc3BlY3Rv
ci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgaXNDbG9zZVRhZzogZnVuY3Rpb24o
KQorICAgIGlzQ2xvc2VUYWcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRD
bG9zZVRhZzsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZ2hsaWdodFNlYXJjaFJlc3VsdHM6IGZ1
bmN0aW9uKHNlYXJjaFF1ZXJ5KQorICAgIGhpZ2hsaWdodFNlYXJjaFJlc3VsdHMoc2VhcmNoUXVl
cnkpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VhcmNoUXVlcnkgIT09IHNlYXJjaFF1ZXJ5
KSB7CiAgICAgICAgICAgICB0aGlzLl91cGRhdGVTZWFyY2hIaWdobGlnaHQoZmFsc2UpOwpAQCAt
NzcsMTUgKzU5LDE1IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gc2VhcmNoUXVlcnk7CiAgICAgICAgIHRoaXMu
X3NlYXJjaEhpZ2hsaWdodHNWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgdGhpcy51cGRhdGVUaXRs
ZSh0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGVTZWFyY2hIaWdobGlnaHRzOiBmdW5j
dGlvbigpCisgICAgaGlkZVNlYXJjaEhpZ2hsaWdodHMoKQogICAgIHsKICAgICAgICAgZGVsZXRl
IHRoaXMuX3NlYXJjaEhpZ2hsaWdodHNWaXNpYmxlOwogICAgICAgICB0aGlzLl91cGRhdGVTZWFy
Y2hIaWdobGlnaHQoZmFsc2UpOwotICAgIH0sCisgICAgfQogCi0gICAgZW1waGFzaXplU2VhcmNo
SGlnaGxpZ2h0OiBmdW5jdGlvbigpCisgICAgZW1waGFzaXplU2VhcmNoSGlnaGxpZ2h0KCkKICAg
ICB7CiAgICAgICAgIHZhciBoaWdobGlnaHRFbGVtZW50ID0gdGhpcy50aXRsZS5xdWVyeVNlbGVj
dG9yKCIuIiArIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5TZWFyY2hIaWdobGlnaHRTdHls
ZUNsYXNzTmFtZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGhpZ2hsaWdodEVsZW1lbnQpOwpA
QCAtMTE2LDkgKzk4LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2JvdW5jeUhpZ2hsaWdodEVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigid2Via2l0QW5pbWF0aW9uRW5kIiwgYW5pbWF0aW9uRW5kZWQuYmluZCh0
aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU2VhcmNoSGlnaGxpZ2h0OiBmdW5j
dGlvbihzaG93KQorICAgIF91cGRhdGVTZWFyY2hIaWdobGlnaHQoc2hvdykKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5faGlnaGxpZ2h0UmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTUyLDEyICsxMzQsMTIgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICBmb3IgKHZhciBpID0gMCwgc2l6ZSA9IHRoaXMuX2hpZ2hsaWdodFJlc3Vs
dC5sZW5ndGg7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAgICB1cGRhdGVyKHRoaXMuX2hpZ2hs
aWdodFJlc3VsdFtpXSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaG92ZXJlZCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5faG92ZXJlZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNl
dCBob3ZlcmVkKHgpCiAgICAgewpAQCAtMTc0LDEyICsxNTYsMTIgQEAgV2ViSW5zcGVjdG9yLkRP
TVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLmxpc3RJdGVt
RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJob3ZlcmVkIik7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCBleHBhbmRlZENoaWxkcmVuTGltaXQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkQ2hpbGRyZW5MaW1pdDsKLSAgICB9
LAorICAgIH0KIAogICAgIHNldCBleHBhbmRlZENoaWxkcmVuTGltaXQoeCkKICAgICB7CkBAIC0x
ODksNyArMTcxLDcgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fZXhwYW5kZWRDaGlsZHJlbkxpbWl0ID0geDsKICAgICAgICAgaWYgKHRo
aXMudHJlZU91dGxpbmUgJiYgIXRoaXMuX3VwZGF0ZUNoaWxkcmVuSW5Qcm9ncmVzcykKICAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZUNoaWxkcmVuKHRydWUpOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGV4cGFuZGVkQ2hpbGRDb3VudCgpCiAgICAgewpAQCAtMTk5LDkgKzE4MSw5IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChjb3VudCAm
JiB0aGlzLmNoaWxkcmVuW2NvdW50IC0gMV0uZXhwYW5kQWxsQnV0dG9uKQogICAgICAgICAgICAg
Y291bnQtLTsKICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgIH0sCisgICAgfQogCi0gICAgc2hv
d0NoaWxkOiBmdW5jdGlvbihpbmRleCkKKyAgICBzaG93Q2hpbGQoaW5kZXgpCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZWxlbWVudENsb3NlVGFnKTsKICAgICAgICAgaWYg
KHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKQEAgLTIxNCw5ICsxOTYsOSBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFdoZXRoZXIgaW5kZXgt
dGggY2hpbGQgaXMgdmlzaWJsZSBpbiB0aGUgY2hpbGRyZW4gdHJlZQogICAgICAgICByZXR1cm4g
dGhpcy5leHBhbmRlZENoaWxkQ291bnQgPiBpbmRleDsKLSAgICB9LAorICAgIH0KIAotICAgIF9j
cmVhdGVUb29sdGlwRm9yTm9kZTogZnVuY3Rpb24oKQorICAgIF9jcmVhdGVUb29sdGlwRm9yTm9k
ZSgpCiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7CiAg
ICAgICAgIGlmICghbm9kZS5ub2RlTmFtZSgpIHx8IG5vZGUubm9kZU5hbWUoKS50b0xvd2VyQ2Fz
ZSgpICE9PSAiaW1nIikKQEAgLTI1Niw5ICsyMzgsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgb2JqZWN0LnJlbGVhc2UoKTsKICAgICAg
ICAgfQogICAgICAgICBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlKG5vZGUs
ICIiLCByZXNvbHZlZE5vZGUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRh
dGVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVTZWxlY3Rpb24oKQogICAgIHsKICAg
ICAgICAgdmFyIGxpc3RJdGVtRWxlbWVudCA9IHRoaXMubGlzdEl0ZW1FbGVtZW50OwogICAgICAg
ICBpZiAoIWxpc3RJdGVtRWxlbWVudCkKQEAgLTI3Nyw5ICsyNTksOSBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5z
ZWxlY3Rpb25FbGVtZW50LnN0eWxlLmhlaWdodCA9IGxpc3RJdGVtRWxlbWVudC5vZmZzZXRIZWln
aHQgKyAicHgiOwotICAgIH0sCisgICAgfQogCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAg
ICBvbmF0dGFjaCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faG92ZXJlZCkgewogICAgICAg
ICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oKTsKQEAgLTI4OSw1MSArMjcxLDU3IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudXBkYXRl
VGl0bGUoKTsKICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuZHJhZ2dhYmxlID0gdHJ1ZTsK
ICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0
IiwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnBvcHVsYXRlOiBmdW5jdGlvbigpCisg
ICAgb25wb3B1bGF0ZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGgg
fHwgdGhpcy5fc2hvd0lubGluZVRleHQodGhpcy5yZXByZXNlbnRlZE9iamVjdCkgfHwgdGhpcy5f
ZWxlbWVudENsb3NlVGFnKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMudXBk
YXRlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAotICAgIGV4cGFuZFJlY3Vyc2l2ZWx5OiBm
dW5jdGlvbigpCisgICAgc3VwZXJFeHBhbmRSZWN1cnNpdmVseSgpCisgICAgeworICAgICAgICAv
LyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgdG8gYWxsb3cgdXNpbmcgc3VwZXIgaW4gYSBjYWxsYmFj
ay4KKyAgICAgICAgc3VwZXIuZXhwYW5kUmVjdXJzaXZlbHkoTnVtYmVyLk1BWF9WQUxVRSk7Cisg
ICAgfQorCisgICAgZXhwYW5kUmVjdXJzaXZlbHkoKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24g
Y2FsbGJhY2soKQogICAgICAgICB7Ci0gICAgICAgICAgICBUcmVlRWxlbWVudC5wcm90b3R5cGUu
ZXhwYW5kUmVjdXJzaXZlbHkuY2FsbCh0aGlzLCBOdW1iZXIuTUFYX1ZBTFVFKTsKKyAgICAgICAg
ICAgIHRoaXMuc3VwZXJFeHBhbmRSZWN1cnNpdmVseSgpOwogICAgICAgICB9CiAKICAgICAgICAg
dGhpcy5yZXByZXNlbnRlZE9iamVjdC5nZXRTdWJ0cmVlKC0xLCBjYWxsYmFjay5iaW5kKHRoaXMp
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbihmdWxsUmVm
cmVzaCkKKyAgICB1cGRhdGVDaGlsZHJlbihmdWxsUmVmcmVzaCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRo
aXMucmVwcmVzZW50ZWRPYmplY3QuZ2V0Q2hpbGROb2Rlcyh0aGlzLl91cGRhdGVDaGlsZHJlbi5i
aW5kKHRoaXMsIGZ1bGxSZWZyZXNoKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpbnNlcnRDaGls
ZEVsZW1lbnQ6IGZ1bmN0aW9uKGNoaWxkLCBpbmRleCwgY2xvc2luZ1RhZykKKyAgICBpbnNlcnRD
aGlsZEVsZW1lbnQoY2hpbGQsIGluZGV4LCBjbG9zaW5nVGFnKQogICAgIHsKICAgICAgICAgdmFy
IG5ld0VsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50KGNoaWxkLCBjbG9z
aW5nVGFnKTsKICAgICAgICAgbmV3RWxlbWVudC5zZWxlY3RhYmxlID0gdGhpcy50cmVlT3V0bGlu
ZS5fc2VsZWN0RW5hYmxlZDsKICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChuZXdFbGVtZW50LCBp
bmRleCk7CiAgICAgICAgIHJldHVybiBuZXdFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAg
bW92ZUNoaWxkOiBmdW5jdGlvbihjaGlsZCwgdGFyZ2V0SW5kZXgpCisgICAgbW92ZUNoaWxkKGNo
aWxkLCB0YXJnZXRJbmRleCkKICAgICB7CiAgICAgICAgIHZhciB3YXNTZWxlY3RlZCA9IGNoaWxk
LnNlbGVjdGVkOwogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKGNoaWxkKTsKICAgICAgICAgdGhp
cy5pbnNlcnRDaGlsZChjaGlsZCwgdGFyZ2V0SW5kZXgpOwogICAgICAgICBpZiAod2FzU2VsZWN0
ZWQpCiAgICAgICAgICAgICBjaGlsZC5zZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91
cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24oZnVsbFJlZnJlc2gpCisgICAgX3VwZGF0ZUNoaWxkcmVu
KGZ1bGxSZWZyZXNoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUNoaWxkcmVuSW5Q
cm9ncmVzcyB8fCAhdGhpcy50cmVlT3V0bGluZS5fdmlzaWJsZSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTQyMSwyNSArNDA5LDI1IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlQ2hpbGRy
ZW5JblByb2dyZXNzOwotICAgIH0sCisgICAgfQogCi0gICAgYWRqdXN0Q29sbGFwc2VkUmFuZ2U6
IGZ1bmN0aW9uKCkKKyAgICBhZGp1c3RDb2xsYXBzZWRSYW5nZSgpCiAgICAgewogICAgICAgICAv
LyBFbnN1cmUgcHJlY29uZGl0aW9uOiBvbmx5IHRoZSB0cmVlIGVsZW1lbnRzIGZvciBub2RlIGNo
aWxkcmVuIGFyZSBmb3VuZCBpbiB0aGUgdHJlZQogICAgICAgICAvLyAobm90IHRoZSBFeHBhbmQg
QWxsIGJ1dHRvbiBvciB0aGUgY2xvc2luZyB0YWcpLgogICAgICAgICBpZiAodGhpcy5leHBhbmRB
bGxCdXR0b25FbGVtZW50ICYmIHRoaXMuZXhwYW5kQWxsQnV0dG9uRWxlbWVudC5fX3RyZWVFbGVt
ZW50LnBhcmVudCkKICAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQodGhpcy5leHBhbmRBbGxC
dXR0b25FbGVtZW50Ll9fdHJlZUVsZW1lbnQpOwogCi0gICAgICAgIGNvbnN0IG5vZGUgPSB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0OworICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRP
YmplY3Q7CiAgICAgICAgIGlmICghbm9kZS5jaGlsZHJlbikKICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgY29uc3QgY2hpbGROb2RlQ291bnQgPSBub2RlLmNoaWxkcmVuLmxlbmd0aDsKKyAg
ICAgICAgdmFyIGNoaWxkTm9kZUNvdW50ID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7CiAKICAgICAg
ICAgLy8gSW4gY2FzZSBzb21lIG5vZGVzIGZyb20gdGhlIGV4cGFuZGVkIHJhbmdlIHdlcmUgcmVt
b3ZlZCwgcHVsbCBzb21lIG5vZGVzIGZyb20gdGhlIGNvbGxhcHNlZCByYW5nZSBpbnRvIHRoZSBl
eHBhbmRlZCByYW5nZSBhdCB0aGUgYm90dG9tLgogICAgICAgICBmb3IgKHZhciBpID0gdGhpcy5l
eHBhbmRlZENoaWxkQ291bnQsIGxpbWl0ID0gTWF0aC5taW4odGhpcy5leHBhbmRlZENoaWxkcmVu
TGltaXQsIGNoaWxkTm9kZUNvdW50KTsgaSA8IGxpbWl0OyArK2kpCiAgICAgICAgICAgICB0aGlz
Lmluc2VydENoaWxkRWxlbWVudChub2RlLmNoaWxkcmVuW2ldLCBpKTsKIAotICAgICAgICBjb25z
dCBleHBhbmRlZENoaWxkQ291bnQgPSB0aGlzLmV4cGFuZGVkQ2hpbGRDb3VudDsKKyAgICAgICAg
dmFyIGV4cGFuZGVkQ2hpbGRDb3VudCA9IHRoaXMuZXhwYW5kZWRDaGlsZENvdW50OwogICAgICAg
ICBpZiAoY2hpbGROb2RlQ291bnQgPiB0aGlzLmV4cGFuZGVkQ2hpbGRDb3VudCkgewogICAgICAg
ICAgICAgdmFyIHRhcmdldEJ1dHRvbkluZGV4ID0gZXhwYW5kZWRDaGlsZENvdW50OwogICAgICAg
ICAgICAgaWYgKCF0aGlzLmV4cGFuZEFsbEJ1dHRvbkVsZW1lbnQpIHsKQEAgLTQ0Nyw3ICs0MzUs
NyBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgICAgIGJ1dHRvbi5jbGFzc05hbWUgPSAic2hvdy1hbGwtbm9kZXMiOwogICAgICAgICAgICAg
ICAgIGJ1dHRvbi52YWx1ZSA9ICIiOwogCi0gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBuZXcg
VHJlZUVsZW1lbnQoYnV0dG9uLCBudWxsLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdmFyIGl0
ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KGJ1dHRvbiwgbnVsbCwgZmFsc2UpOwog
ICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0YWJsZSA9IGZhbHNlOwogICAgICAgICAgICAgICAg
IGl0ZW0uZXhwYW5kQWxsQnV0dG9uID0gdHJ1ZTsKIApAQCAtNDYxLDMyICs0NDksMzIgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
ZXhwYW5kQWxsQnV0dG9uRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2hvdyBBbGwgTm9kZXMgKCVkIE1vcmUpIikuZm9ybWF0KGNoaWxkTm9kZUNvdW50IC0gZXhw
YW5kZWRDaGlsZENvdW50KTsKICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmV4cGFuZEFsbEJ1dHRv
bkVsZW1lbnQpCiAgICAgICAgICAgICBkZWxldGUgdGhpcy5leHBhbmRBbGxCdXR0b25FbGVtZW50
OwotICAgIH0sCisgICAgfQogCi0gICAgaGFuZGxlTG9hZEFsbENoaWxkcmVuOiBmdW5jdGlvbigp
CisgICAgaGFuZGxlTG9hZEFsbENoaWxkcmVuKCkKICAgICB7CiAgICAgICAgIHRoaXMuZXhwYW5k
ZWRDaGlsZHJlbkxpbWl0ID0gTWF0aC5tYXgodGhpcy5yZXByZXNlbnRlZE9iamVjdC5jaGlsZE5v
ZGVDb3VudCwgdGhpcy5leHBhbmRlZENoaWxkcmVuTGltaXQgKyBXZWJJbnNwZWN0b3IuRE9NVHJl
ZUVsZW1lbnQuSW5pdGlhbENoaWxkcmVuTGltaXQpOwotICAgIH0sCisgICAgfQogCi0gICAgb25l
eHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICBvbmV4cGFuZCgpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fZWxlbWVudENsb3NlVGFnKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
dXBkYXRlVGl0bGUoKTsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVTZWxlY3Rpb24o
KTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBvbmNv
bGxhcHNlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAgICAgICB0
aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAg
b25yZXZlYWw6IGZ1bmN0aW9uKCkKKyAgICBvbnJldmVhbCgpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5saXN0SXRlbUVsZW1lbnQpIHsKICAgICAgICAgICAgIHZhciB0YWdTcGFucyA9IHRoaXMu
bGlzdEl0ZW1FbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImh0bWwtdGFnLW5hbWUiKTsK
QEAgLTQ5NSw5ICs0ODMsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVt
ZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOwogICAgICAgICB9Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBvbnNlbGVjdDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2Vy
KQorICAgIG9uc2VsZWN0KHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAg
ICAgIHRoaXMudHJlZU91dGxpbmUuc3VwcHJlc3NSZXZlYWxBbmRTZWxlY3QgPSB0cnVlOwogICAg
ICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdERPTU5vZGUodGhpcy5yZXByZXNlbnRlZE9iamVj
dCwgc2VsZWN0ZWRCeVVzZXIpOwpAQCAtNTA1LDE0ICs0OTMsMTQgQEAgV2ViSW5zcGVjdG9yLkRP
TVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21U
cmVlTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaWQpOwog
ICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwogICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
LnN1cHByZXNzUmV2ZWFsQW5kU2VsZWN0ID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBv
bmRlc2VsZWN0OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBvbmRlc2VsZWN0KHRyZWVFbGVt
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWxlY3RET01Ob2RlKG51bGwp
OwotICAgIH0sCisgICAgfQogCi0gICAgb25kZWxldGU6IGZ1bmN0aW9uKCkKKyAgICBvbmRlbGV0
ZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5pc0luU2hhZG93
VHJlZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTIzLDkgKzUxMSw5IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHRoaXMucmVtb3ZlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisg
ICAgfQogCi0gICAgb25lbnRlcjogZnVuY3Rpb24oKQorICAgIG9uZW50ZXIoKQogICAgIHsKICAg
ICAgICAgLy8gT24gRW50ZXIgb3IgUmV0dXJuIHN0YXJ0IGVkaXRpbmcgdGhlIGZpcnN0IGF0dHJp
YnV0ZQogICAgICAgICAvLyBvciBjcmVhdGUgYSBuZXcgYXR0cmlidXRlIG9uIHRoZSBzZWxlY3Rl
ZCBlbGVtZW50LgpAQCAtNTM2LDkgKzUyNCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gcHJldmVudCBhIG5ld2xpbmUgZnJvbSBiZWlu
ZyBpbW1lZGlhdGVseSBpbnNlcnRlZAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAg
IH0KIAotICAgIHNlbGVjdE9uTW91c2VEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBzZWxlY3RP
bk1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIFRyZWVFbGVtZW50LnByb3RvdHlwZS5z
ZWxlY3RPbk1vdXNlRG93bi5jYWxsKHRoaXMsIGV2ZW50KTsKIApAQCAtNTQ4LDkgKzUzNiw5IEBA
IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFBy
ZXZlbnQgc2VsZWN0aW5nIHRoZSBuZWFyZXN0IHdvcmQgb24gZG91YmxlIGNsaWNrLgogICAgICAg
ICBpZiAoZXZlbnQuZGV0YWlsID49IDIpCiAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgb25kYmxjbGljazogZnVuY3Rpb24oZXZlbnQpCisg
ICAgb25kYmxjbGljayhldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lZGl0aW5nIHx8
IHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU2MCw5ICs1
NDgsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuICYmICF0aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAg
dGhpcy5leHBhbmQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pbnNlcnRJbkxhc3RBdHRyaWJ1
dGVQb3NpdGlvbjogZnVuY3Rpb24odGFnLCBub2RlKQorICAgIF9pbnNlcnRJbkxhc3RBdHRyaWJ1
dGVQb3NpdGlvbih0YWcsIG5vZGUpCiAgICAgewogICAgICAgICBpZiAodGFnLmdldEVsZW1lbnRz
QnlDbGFzc05hbWUoImh0bWwtYXR0cmlidXRlIikubGVuZ3RoID4gMCkKICAgICAgICAgICAgIHRh
Zy5pbnNlcnRCZWZvcmUobm9kZSwgdGFnLmxhc3RDaGlsZCk7CkBAIC01NzUsOSArNTYzLDkgQEAg
V2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAg
ICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3Rh
cnRFZGl0aW5nVGFyZ2V0OiBmdW5jdGlvbihldmVudFRhcmdldCkKKyAgICBfc3RhcnRFZGl0aW5n
VGFyZ2V0KGV2ZW50VGFyZ2V0KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUu
c2VsZWN0ZWRET01Ob2RlKCkgIT09IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02MDUsOSArNTkzLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGROZXdBdHRy
aWJ1dGUoKTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
cG9wdWxhdGVUYWdDb250ZXh0TWVudTogZnVuY3Rpb24oY29udGV4dE1lbnUsIGV2ZW50KQorICAg
IF9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCkKICAgICB7CiAgICAg
ICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCFub2Rl
LmlzSW5TaGFkb3dUcmVlKCkpIHsKQEAgLTYyOSw5ICs2MTcsOSBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3BvcHVsYXRlTm9kZUNv
bnRleHRNZW51KGNvbnRleHRNZW51KTsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5fcG9wdWxh
dGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgdGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVGb3JjZWRQc2V1ZG9TdGF0ZUl0ZW1zOiBmdW5jdGlv
bihzdWJNZW51KQorICAgIF9wb3B1bGF0ZUZvcmNlZFBzZXVkb1N0YXRlSXRlbXMoc3ViTWVudSkK
ICAgICB7CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAg
ICAgdmFyIGVuYWJsZWRQc2V1ZG9DbGFzc2VzID0gbm9kZS5lbmFibGVkUHNldWRvQ2xhc3NlczsK
QEAgLTY0MywxOCArNjMxLDE4IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICAgICAgbm9kZS5zZXRQc2V1ZG9DbGFzc0VuYWJsZWQocHNldWRv
Q2xhc3MsICFlbmFibGVkKTsKICAgICAgICAgICAgIH0sIGVuYWJsZWQsIGZhbHNlKTsKICAgICAg
ICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVUZXh0Q29udGV4dE1lbnU6IGZ1
bmN0aW9uKGNvbnRleHRNZW51LCB0ZXh0Tm9kZSkKKyAgICBfcG9wdWxhdGVUZXh0Q29udGV4dE1l
bnUoY29udGV4dE1lbnUsIHRleHROb2RlKQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICBpZiAoIW5vZGUuaXNJblNoYWRvd1RyZWUoKSkK
ICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJFZGl0IFRleHQiKSwgdGhpcy5fc3RhcnRFZGl0aW5nVGV4dE5vZGUuYmluZCh0aGlzLCB0ZXh0
Tm9kZSkpOwogCiAgICAgICAgIHRoaXMuX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51KGNvbnRleHRN
ZW51KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3B1bGF0ZU5vZGVDb250ZXh0TWVudTogZnVu
Y3Rpb24oY29udGV4dE1lbnUpCisgICAgX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51KGNvbnRleHRN
ZW51KQogICAgIHsKICAgICAgICAgLy8gQWRkIGZyZWUtZm9ybSBub2RlLXJlbGF0ZWQgYWN0aW9u
cy4KICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwpAQCAtNjYzLDkg
KzY1MSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb3B5IGFz
IEhUTUwiKSwgdGhpcy5fY29weUhUTUwuYmluZCh0aGlzKSk7CiAgICAgICAgIGlmICghbm9kZS5p
c0luU2hhZG93VHJlZSgpKQogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBOb2RlIiksIHRoaXMucmVtb3ZlLmJpbmQodGhpcykp
OwotICAgIH0sCisgICAgfQogCi0gICAgX3N0YXJ0RWRpdGluZzogZnVuY3Rpb24oKQorICAgIF9z
dGFydEVkaXRpbmcoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUuc2VsZWN0
ZWRET01Ob2RlKCkgIT09IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC02ODksOSArNjc3LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0aW5n
VGV4dE5vZGUodGV4dE5vZGUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWRkTmV3QXR0cmlidXRlOiBmdW5jdGlvbigpCisgICAg
X2FkZE5ld0F0dHJpYnV0ZSgpCiAgICAgewogICAgICAgICAvLyBDYW5ub3QganVzdCBjb252ZXJ0
IHRoZSB0ZXh0dWFsIGh0bWwgaW50byBhbiBlbGVtZW50IHdpdGhvdXQKICAgICAgICAgLy8gYSBw
YXJlbnQgbm9kZS4gVXNlIGEgdGVtcG9yYXJ5IHNwYW4gY29udGFpbmVyIGZvciB0aGUgSFRNTC4K
QEAgLTcwNCw5ICs2OTIsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgdGFnID0gdGhpcy5saXN0SXRlbUVsZW1lbnQuZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZSgiaHRtbC10YWciKVswXTsKICAgICAgICAgdGhpcy5faW5zZXJ0SW5MYXN0QXR0
cmlidXRlUG9zaXRpb24odGFnLCBhdHRyKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0RWRp
dGluZ0F0dHJpYnV0ZShhdHRyLCBhdHRyKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmlnZ2Vy
RWRpdEF0dHJpYnV0ZTogZnVuY3Rpb24oYXR0cmlidXRlTmFtZSkKKyAgICBfdHJpZ2dlckVkaXRB
dHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkKICAgICB7CiAgICAgICAgIHZhciBhdHRyaWJ1dGVFbGVt
ZW50cyA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImh0bWwt
YXR0cmlidXRlLW5hbWUiKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGF0dHJpYnV0
ZUVsZW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7CkBAIC03MjAsOSArNzA4LDkgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9zdGFydEVk
aXRpbmdBdHRyaWJ1dGU6IGZ1bmN0aW9uKGF0dHJpYnV0ZSwgZWxlbWVudEZvclNlbGVjdGlvbikK
KyAgICBfc3RhcnRFZGl0aW5nQXR0cmlidXRlKGF0dHJpYnV0ZSwgZWxlbWVudEZvclNlbGVjdGlv
bikKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuaXNCZWluZ0VkaXRlZChhdHRyaWJ1
dGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03NTYsOSArNzQ0LDkgQEAgV2ViSW5z
cGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoZWxlbWVudEZvclNlbGVjdGlvbiwgMCwgZWxlbWVu
dEZvclNlbGVjdGlvbiwgMSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfc3RhcnRFZGl0aW5nVGV4dE5vZGU6IGZ1bmN0aW9uKHRleHROb2RlKQorICAgIF9z
dGFydEVkaXRpbmdUZXh0Tm9kZSh0ZXh0Tm9kZSkKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3IuaXNCZWluZ0VkaXRlZCh0ZXh0Tm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
QEAgLTc2OSw5ICs3NTcsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudCh0ZXh0
Tm9kZSwgMCwgdGV4dE5vZGUsIDEpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3N0YXJ0RWRpdGluZ1RhZ05hbWU6IGZ1bmN0aW9uKHRhZ05hbWVFbGVtZW50
KQorICAgIF9zdGFydEVkaXRpbmdUYWdOYW1lKHRhZ05hbWVFbGVtZW50KQogICAgIHsKICAgICAg
ICAgaWYgKCF0YWdOYW1lRWxlbWVudCkgewogICAgICAgICAgICAgdGFnTmFtZUVsZW1lbnQgPSB0
aGlzLmxpc3RJdGVtRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJodG1sLXRhZy1uYW1l
IilbMF07CkBAIC04MTIsOSArODAwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IFdlYkluc3BlY3Rvci5zdGFydEVk
aXRpbmcodGFnTmFtZUVsZW1lbnQsIGNvbmZpZyk7CiAgICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rp
b24oKS5zZXRCYXNlQW5kRXh0ZW50KHRhZ05hbWVFbGVtZW50LCAwLCB0YWdOYW1lRWxlbWVudCwg
MSk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0YXJ0RWRp
dGluZ0FzSFRNTDogZnVuY3Rpb24oY29tbWl0Q2FsbGJhY2ssIGVycm9yLCBpbml0aWFsVmFsdWUp
CisgICAgX3N0YXJ0RWRpdGluZ0FzSFRNTChjb21taXRDYWxsYmFjaywgZXJyb3IsIGluaXRpYWxW
YWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTg2OCw5ICs4NTYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICB2YXIgY29uZmlnID0gbmV3IFdlYkluc3BlY3Rvci5FZGl0aW5nQ29uZmlnKGNv
bW1pdC5iaW5kKHRoaXMpLCBkaXNwb3NlLmJpbmQodGhpcykpOwogICAgICAgICBjb25maWcuc2V0
TXVsdGlsaW5lKHRydWUpOwogICAgICAgICB0aGlzLl9lZGl0aW5nID0gV2ViSW5zcGVjdG9yLnN0
YXJ0RWRpdGluZyh0aGlzLl9odG1sRWRpdEVsZW1lbnQsIGNvbmZpZyk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3
VGV4dCwgb2xkVGV4dCwgYXR0cmlidXRlTmFtZSwgbW92ZURpcmVjdGlvbikKKyAgICBfYXR0cmli
dXRlRWRpdGluZ0NvbW1pdHRlZChlbGVtZW50LCBuZXdUZXh0LCBvbGRUZXh0LCBhdHRyaWJ1dGVO
YW1lLCBtb3ZlRGlyZWN0aW9uKQogICAgIHsKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IGZhbHNl
OwogCkBAIC05MjUsOSArOTEzLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3Quc2V0
QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG5ld1RleHQsIG1vdmVUb05leHRBdHRyaWJ1dGVJZk5l
ZWRlZC5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90YWdOYW1lRWRpdGluZ0Nv
bW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgdGFnTmFtZSwgbW92
ZURpcmVjdGlvbikKKyAgICBfdGFnTmFtZUVkaXRpbmdDb21taXR0ZWQoZWxlbWVudCwgbmV3VGV4
dCwgb2xkVGV4dCwgdGFnTmFtZSwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIHRoaXMu
X2VkaXRpbmcgPSBmYWxzZTsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwpAQCAtOTg2LDkgKzk3
NCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnNldE5vZGVOYW1lKG5ld1RleHQs
IGNoYW5nZVRhZ05hbWVDYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGV4dE5vZGVF
ZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCBuZXdUZXh0KQorICAgIF90ZXh0Tm9k
ZUVkaXRpbmdDb21taXR0ZWQoZWxlbWVudCwgbmV3VGV4dCkKICAgICB7CiAgICAgICAgIHRoaXMu
X2VkaXRpbmcgPSBmYWxzZTsKIApAQCAtMTAwMSwxNyArOTg5LDE3IEBAIFdlYkluc3BlY3Rvci5E
T01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0ZXh0Tm9kZSA9IHRoaXMu
cmVwcmVzZW50ZWRPYmplY3Q7CiAKICAgICAgICAgdGV4dE5vZGUuc2V0Tm9kZVZhbHVlKG5ld1Rl
eHQsIHRoaXMudXBkYXRlVGl0bGUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
ZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4dCkKKyAgICBfZWRpdGlu
Z0NhbmNlbGxlZChlbGVtZW50LCBjb250ZXh0KQogICAgIHsKICAgICAgICAgdGhpcy5fZWRpdGlu
ZyA9IGZhbHNlOwogCiAgICAgICAgIC8vIE5lZWQgdG8gcmVzdG9yZSBhdHRyaWJ1dGVzIHN0cnVj
dHVyZS4KICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2Rpc3RpbmN0Q2xvc2luZ1RhZ0VsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICBfZGlzdGluY3RDbG9z
aW5nVGFnRWxlbWVudCgpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSB0aGUgVHJl
ZSBFbGVtZW50IC8gT3V0bGluZSBBYnN0cmFjdGlvbiB0byBwcmV2ZW50IGNyYXdsaW5nIHRoZSBE
T00KIApAQCAtMTAyNyw5ICsxMDE1LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgLy8gbnVsbCBpbiB0aGUgY2FzZSB3aGVyZSB0aGVyZSBpc24n
dCBhIGNsb3NpbmcgdGFnLgogICAgICAgICB2YXIgdGFncyA9IHRoaXMubGlzdEl0ZW1FbGVtZW50
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImh0bWwtdGFnIik7CiAgICAgICAgIHJldHVybiAodGFn
cy5sZW5ndGggPT09IDEgPyBudWxsIDogdGFnc1t0YWdzLmxlbmd0aCAtIDFdKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHVwZGF0ZVRpdGxlOiBmdW5jdGlvbihvbmx5U2VhcmNoUXVlcnlDaGFuZ2Vk
KQorICAgIHVwZGF0ZVRpdGxlKG9ubHlTZWFyY2hRdWVyeUNoYW5nZWQpCiAgICAgewogICAgICAg
ICAvLyBJZiB3ZSBhcmUgZWRpdGluZywgcmV0dXJuIGVhcmx5IHRvIHByZXZlbnQgY2FuY2VsaW5n
IHRoZSBlZGl0LgogICAgICAgICAvLyBBZnRlciBlZGl0aW5nIGlzIGNvbW1pdHRlZCB1cGRhdGVU
aXRsZSB3aWxsIGJlIGNhbGxlZC4KQEAgLTEwNDgsOSArMTAzNiw5IEBAIFdlYkluc3BlY3Rvci5E
T01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLnNlbGVjdGlv
bkVsZW1lbnQ7CiAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKCk7CiAgICAgICAgIHRoaXMu
X2hpZ2hsaWdodFNlYXJjaFJlc3VsdHMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9idWlsZEF0
dHJpYnV0ZURPTTogZnVuY3Rpb24ocGFyZW50RWxlbWVudCwgbmFtZSwgdmFsdWUsIG5vZGUpCisg
ICAgX2J1aWxkQXR0cmlidXRlRE9NKHBhcmVudEVsZW1lbnQsIG5hbWUsIHZhbHVlLCBub2RlKQog
ICAgIHsKICAgICAgICAgdmFyIGhhc1RleHQgPSAodmFsdWUubGVuZ3RoID4gMCk7CiAgICAgICAg
IHZhciBhdHRyU3BhbkVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LmNyZWF0ZUNoaWxkKCJzcGFuIiwg
Imh0bWwtYXR0cmlidXRlIik7CkBAIC0xMDg3LDkgKzEwNzUsOSBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChoYXNUZXh0KQogICAgICAg
ICAgICAgYXR0clNwYW5FbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl
KCJcIiIpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9idWlsZFRhZ0RPTTogZnVuY3Rpb24ocGFy
ZW50RWxlbWVudCwgdGFnTmFtZSwgaXNDbG9zaW5nVGFnLCBpc0Rpc3RpbmN0VHJlZUVsZW1lbnQp
CisgICAgX2J1aWxkVGFnRE9NKHBhcmVudEVsZW1lbnQsIHRhZ05hbWUsIGlzQ2xvc2luZ1RhZywg
aXNEaXN0aW5jdFRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0OwogICAgICAgICB2YXIgY2xhc3NlcyA9IFsgImh0bWwtdGFnIiBdOwpA
QCAtMTExMSwxMyArMTA5OSwyMCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICB9CiAgICAgICAgIHRhZ0VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoIj4iKSk7CiAgICAgICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlx1MjAwQiIpKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9ub2RlVGl0bGVJbmZvOiBmdW5jdGlvbigpCisgICAgX25vZGVUaXRsZUluZm8oKQogICAg
IHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICB2
YXIgaW5mbyA9IHt0aXRsZURPTTogZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLCBo
YXNDaGlsZHJlbjogdGhpcy5oYXNDaGlsZHJlbn07CiAKKyAgICAgICAgZnVuY3Rpb24gdHJpbWVk
Tm9kZVZhbHVlKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVHJpbSBlbXB0eSBsaW5lcyBm
cm9tIHRoZSBiZWdpbm5pbmcgYW5kIGV4dHJhIHNwYWNlIGF0IHRoZSBlbmQgc2luY2UgbW9zdCBz
dHlsZSBhbmQgc2NyaXB0IHRhZ3MgYmVnaW4gd2l0aCBhIG5ld2xpbmUKKyAgICAgICAgICAgIC8v
IGFuZCBlbmQgd2l0aCBhIG5ld2xpbmUgYW5kIGluZGVudGF0aW9uIGZvciB0aGUgZW5kIHRhZy4K
KyAgICAgICAgICAgIHJldHVybiBub2RlLm5vZGVWYWx1ZSgpLnJlcGxhY2UoL15bXG5ccl0qLywg
IiIpLnJlcGxhY2UoL1xzKiQvLCAiIik7CisgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKG5v
ZGUubm9kZVR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5U
X05PREU6CiAgICAgICAgICAgICAgICAgdmFyIGZyYWdtZW50RWxlbWVudCA9IGluZm8udGl0bGVE
T00uY3JlYXRlQ2hpbGQoInNwYW4iLCAid2Via2l0LWh0bWwtZnJhZ21lbnQiKTsKQEAgLTExNzcs
MTMgKzExNzIsNiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9OT0RF
OgotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRyaW1lZE5vZGVWYWx1ZSgpCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBUcmltIGVtcHR5IGxpbmVzIGZyb20gdGhl
IGJlZ2lubmluZyBhbmQgZXh0cmEgc3BhY2UgYXQgdGhlIGVuZCBzaW5jZSBtb3N0IHN0eWxlIGFu
ZCBzY3JpcHQgdGFncyBiZWdpbiB3aXRoIGEgbmV3bGluZQotICAgICAgICAgICAgICAgICAgICAv
LyBhbmQgZW5kIHdpdGggYSBuZXdsaW5lIGFuZCBpbmRlbnRhdGlvbiBmb3IgdGhlIGVuZCB0YWcu
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlLm5vZGVWYWx1ZSgpLnJlcGxhY2UoL15b
XG5ccl0qLywgIiIpLnJlcGxhY2UoL1xzKiQvLCAiIik7Ci0gICAgICAgICAgICAgICAgfQotCiAg
ICAgICAgICAgICAgICAgaWYgKG5vZGUucGFyZW50Tm9kZSAmJiBub2RlLnBhcmVudE5vZGUubm9k
ZU5hbWUoKS50b0xvd2VyQ2FzZSgpID09PSAic2NyaXB0IikgewogICAgICAgICAgICAgICAgICAg
ICB2YXIgbmV3Tm9kZSA9IGluZm8udGl0bGVET00uY3JlYXRlQ2hpbGQoInNwYW4iLCAiaHRtbC10
ZXh0LW5vZGUgbGFyZ2UiKTsKICAgICAgICAgICAgICAgICAgICAgbmV3Tm9kZS5hcHBlbmRDaGls
ZChXZWJJbnNwZWN0b3Iuc3ludGF4SGlnaGxpZ2h0U3RyaW5nQXNEb2N1bWVudEZyYWdtZW50KHRy
aW1lZE5vZGVWYWx1ZSgpLCAidGV4dC9qYXZhc2NyaXB0IikpOwpAQCAtMTIzNyw5ICsxMjI1LDkg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBpbmZvOwotICAgIH0sCisgICAgfQogCi0gICAgX3NpbmdsZVRleHRD
aGlsZDogZnVuY3Rpb24obm9kZSkKKyAgICBfc2luZ2xlVGV4dENoaWxkKG5vZGUpCiAgICAgewog
ICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTEyNTMsOSAr
MTI0MSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgdmFyIHNpYmxpbmcgPSBmaXJzdENoaWxkLm5leHRTaWJsaW5nOwogICAgICAgICByZXR1
cm4gc2libGluZyA/IG51bGwgOiBmaXJzdENoaWxkOwotICAgIH0sCisgICAgfQogCi0gICAgX3No
b3dJbmxpbmVUZXh0OiBmdW5jdGlvbihub2RlKQorICAgIF9zaG93SW5saW5lVGV4dChub2RlKQog
ICAgIHsKICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUoKSA9PT0gTm9kZS5FTEVNRU5UX05PREUp
IHsKICAgICAgICAgICAgIHZhciB0ZXh0Q2hpbGQgPSB0aGlzLl9zaW5nbGVUZXh0Q2hpbGQobm9k
ZSk7CkBAIC0xMjYzLDkgKzEyNTEsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZTogZnVuY3Rpb24o
KQorICAgIHJlbW92ZSgpCiAgICAgewogICAgICAgICB2YXIgcGFyZW50RWxlbWVudCA9IHRoaXMu
cGFyZW50OwogICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQpCkBAIC0xMjg1LDkgKzEyNzMsOSBA
QCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAK
ICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVOb2RlKHJlbW92ZU5vZGVDYWxs
YmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZWRpdEFzSFRNTDogZnVuY3Rpb24oKQorICAg
IF9lZGl0QXNIVE1MKCkKICAgICB7CiAgICAgICAgIHZhciB0cmVlT3V0bGluZSA9IHRoaXMudHJl
ZU91dGxpbmU7CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKQEAg
LTEzMjIsMTQgKzEzMTAsMTQgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIG5vZGUuZ2V0T3V0ZXJIVE1MKHRoaXMuX3N0YXJ0
RWRpdGluZ0FzSFRNTC5iaW5kKHRoaXMsIGNvbW1pdENoYW5nZSkpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2NvcHlIVE1MOiBmdW5jdGlvbigpCisgICAgX2NvcHlIVE1MKCkKICAgICB7CiAgICAg
ICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29weU5vZGUoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9oaWdobGlnaHRTZWFyY2hSZXN1bHRzOiBmdW5jdGlvbigpCisgICAgX2hpZ2hsaWdodFNl
YXJjaFJlc3VsdHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnRpdGxlIHx8ICF0aGlzLl9z
ZWFyY2hRdWVyeSB8fCAhdGhpcy5fc2VhcmNoSGlnaGxpZ2h0c1Zpc2libGUpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMzU2LDEzICsxMzQ0LDMwIEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5faGlnaGxpZ2h0UmVzdWx0ID0gW107
CiAgICAgICAgIFdlYkluc3BlY3Rvci5oaWdobGlnaHRSYW5nZXNXaXRoU3R5bGVDbGFzcyh0aGlz
LnRpdGxlLCBtYXRjaFJhbmdlcywgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LlNlYXJjaEhp
Z2hsaWdodFN0eWxlQ2xhc3NOYW1lLCB0aGlzLl9oaWdobGlnaHRSZXN1bHQpOwotICAgIH0sCisg
ICAgfQogCi0gICAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUV2ZW50
KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICJkcmFnc3RhcnQiICYm
IHRoaXMuX2VkaXRpbmcpCiAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
IH0KIH07CiAKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19f
ID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50Lklu
aXRpYWxDaGlsZHJlbkxpbWl0ID0gNTAwOworV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50Lk1h
eGltdW1JbmxpbmVUZXh0Q2hpbGRMZW5ndGggPSA4MDsKKworLy8gQSB1bmlvbiBvZiBIVE1MNCBh
bmQgSFRNTDUtRHJhZnQgZWxlbWVudHMgdGhhdCBleHBsaWNpdGx5CisvLyBvciBpbXBsaWNpdGx5
IChmb3IgSFRNTDUpIGZvcmJpZCB0aGUgY2xvc2luZyB0YWcuCisvLyBGSVhNRTogUmV2aXNlIG9u
Y2UgSFRNTDUgRmluYWwgaXMgcHVibGlzaGVkLgorV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50
LkZvcmJpZGRlbkNsb3NpbmdUYWdFbGVtZW50cyA9IFsKKyAgICAiYXJlYSIsICJiYXNlIiwgImJh
c2Vmb250IiwgImJyIiwgImNhbnZhcyIsICJjb2wiLCAiY29tbWFuZCIsICJlbWJlZCIsICJmcmFt
ZSIsCisgICAgImhyIiwgImltZyIsICJpbnB1dCIsICJpc2luZGV4IiwgImtleWdlbiIsICJsaW5r
IiwgIm1ldGEiLCAicGFyYW0iLCAic291cmNlIgorXS5rZXlTZXQoKTsKKworLy8gVGhlc2UgdGFn
cyB3ZSBkbyBub3QgYWxsb3cgZWRpdGluZyB0aGVpciB0YWcgbmFtZS4KK1dlYkluc3BlY3Rvci5E
T01UcmVlRWxlbWVudC5FZGl0VGFnQmxhY2tsaXN0ID0gWworICAgICJodG1sIiwgImhlYWQiLCAi
Ym9keSIKK10ua2V5U2V0KCk7CisKK1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5TZWFyY2hI
aWdobGlnaHRTdHlsZUNsYXNzTmFtZSA9ICJzZWFyY2gtaGlnaGxpZ2h0IjsKK1dlYkluc3BlY3Rv
ci5ET01UcmVlRWxlbWVudC5Cb3VuY3lIaWdobGlnaHRTdHlsZUNsYXNzTmFtZSA9ICJib3VuY3kt
aGlnaGxpZ2h0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5q
cwppbmRleCA1MWM3YTE0Li4yMTA5NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVsZW1l
bnRQYXRoQ29tcG9uZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMyw5NSArMjMsODcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29t
cG9uZW50ID0gZnVuY3Rpb24oZG9tVHJlZUVsZW1lbnQsIHJlcHJlc2VudGVkT2JqZWN0KSB7Ci0g
ICAgdmFyIG5vZGUgPSBkb21UcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdDsKLQotICAgIHZh
ciB0aXRsZSA9IG51bGw7Ci0gICAgdmFyIGNsYXNzTmFtZSA9IG51bGw7Ci0KLSAgICBzd2l0Y2gg
KG5vZGUubm9kZVR5cGUoKSkgewotICAgIGNhc2UgTm9kZS5FTEVNRU5UX05PREU6Ci0gICAgICAg
IGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9N
RWxlbWVudEljb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGl0bGUgPSBXZWJJbnNwZWN0b3Iu
ZGlzcGxheU5hbWVGb3JOb2RlKG5vZGUpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgTm9k
ZS5URVhUX05PREU6Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxl
bWVudFBhdGhDb21wb25lbnQuRE9NVGV4dE5vZGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAg
IHRpdGxlID0gIlwiIiArIG5vZGUubm9kZVZhbHVlKCkudHJpbUVuZCgzMikgKyAiXCIiOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgTm9kZS5DT01NRU5UX05PREU6Ci0gICAgICAgIGNsYXNz
TmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NQ29tbWVu
dEljb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGl0bGUgPSAiPCEtLSIgKyBub2RlLm5vZGVW
YWx1ZSgpLnRyaW1FbmQoMzIpICsgIi0tPiI7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBO
b2RlLkRPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9y
LkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01Eb2N1bWVudFR5cGVJY29uU3R5bGVDbGFz
c05hbWU7Ci0gICAgICAgIHRpdGxlID0gIjwhRE9DVFlQRT4iOwotICAgICAgICBicmVhazsKLQot
ICAgIGNhc2UgTm9kZS5ET0NVTUVOVF9OT0RFOgotICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNw
ZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTURvY3VtZW50SWNvblN0eWxlQ2xh
c3NOYW1lOwotICAgICAgICB0aXRsZSA9IG5vZGUubm9kZU5hbWVJbkNvcnJlY3RDYXNlKCk7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERToKLSAgICAg
ICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5E
T01DaGFyYWN0ZXJEYXRhSWNvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICB0aXRsZSA9ICI8IVtD
REFUQVsiICsgbm9kZS50cmltRW5kKDMyKSArICJdXT4iOwotICAgICAgICBicmVhazsKLQotICAg
IGNhc2UgTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICAvLyBGSVhNRTogQXQg
c29tZSBwb2ludCB3ZSBtaWdodCB3YW50IGEgZGlmZmVyZW50IGljb24gZm9yIHRoaXMuCi0gICAg
ICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMjgwMDk1MD4gTmVlZCBpY29uIGZvciBET0NVTUVOVF9G
UkFHTUVOVF9OT0RFIGFuZCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUKLSAgICAgICAgY2xh
c3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01Eb2N1
bWVudFR5cGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIGlmIChub2RlLmlzSW5TaGFkb3dU
cmVlKCkpCi0gICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hhZG93
IENvbnRlbnQiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGl0bGUgPSBXZWJJbnNwZWN0
b3IuZGlzcGxheU5hbWVGb3JOb2RlKG5vZGUpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2Ug
Tm9kZS5QUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6Ci0gICAgICAgIC8vIEZJWE1FOiBBdCBz
b21lIHBvaW50IHdlIG1pZ2h0IHdhbnQgYSBkaWZmZXJlbnQgaWNvbiBmb3IgdGhpcy4KLSAgICAg
ICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEyODAwOTUwPiBOZWVkIGljb24gZm9yIERPQ1VNRU5UX0ZS
QUdNRU5UX05PREUgYW5kIFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERS4KLSAgICAgICAgY2xh
c3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01Eb2N1
bWVudFR5cGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIHRpdGxlID0gbm9kZS5ub2RlTmFt
ZUluQ29ycmVjdENhc2UoKTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAg
ICBjb25zb2xlLmVycm9yKCJVbmtub3duIERPTSBub2RlIHR5cGU6ICIsIG5vZGUubm9kZVR5cGUo
KSk7Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhD
b21wb25lbnQuRE9NTm9kZUljb25TdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGl0bGUgPSBub2Rl
Lm5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpOwotICAgIH0KLQotICAgIFdlYkluc3BlY3Rvci5IaWVy
YXJjaGljYWxQYXRoQ29tcG9uZW50LmNhbGwodGhpcywgdGl0bGUsIGNsYXNzTmFtZSwgcmVwcmVz
ZW50ZWRPYmplY3QgfHwgZG9tVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpOwotCi0gICAg
dGhpcy5fZG9tVHJlZUVsZW1lbnQgPSBkb21UcmVlRWxlbWVudDsKLX07CitXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50ID0gY2xhc3MgRE9NVHJlZUVsZW1lbnRQYXRoQ29t
cG9uZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQKK3sK
KyAgICBjb25zdHJ1Y3Rvcihkb21UcmVlRWxlbWVudCwgcmVwcmVzZW50ZWRPYmplY3QpCisgICAg
eworICAgICAgICB2YXIgbm9kZSA9IGRvbVRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0Owog
Ci1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTUVsZW1lbnRJY29u
U3R5bGVDbGFzc05hbWUgPSAiZG9tLWVsZW1lbnQtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NVHJl
ZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTVRleHROb2RlSWNvblN0eWxlQ2xhc3NOYW1lID0gImRv
bS10ZXh0LW5vZGUtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50LkRPTUNvbW1lbnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLWNvbW1lbnQtaWNvbiI7Ci1X
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTURvY3VtZW50VHlwZUlj
b25TdHlsZUNsYXNzTmFtZSA9ICJkb20tZG9jdW1lbnQtdHlwZS1pY29uIjsKLVdlYkluc3BlY3Rv
ci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRG9jdW1lbnRJY29uU3R5bGVDbGFzc05h
bWUgPSAiZG9tLWRvY3VtZW50LWljb24iOwotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0
aENvbXBvbmVudC5ET01DaGFyYWN0ZXJEYXRhSWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS1jaGFy
YWN0ZXItZGF0YS1pY29uIjsKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25l
bnQuRE9NTm9kZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tbm9kZS1pY29uIjsKKyAgICAgICAg
dmFyIHRpdGxlID0gbnVsbDsKKyAgICAgICAgdmFyIGNsYXNzTmFtZSA9IG51bGw7CiAKLVdlYklu
c3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LAorICAg
ICAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUoKSkgeworICAgICAgICBjYXNlIE5vZGUuRUxFTUVO
VF9OT0RFOgorICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVt
ZW50UGF0aENvbXBvbmVudC5ET01FbGVtZW50SWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICAg
ICAgdGl0bGUgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JOb2RlKG5vZGUpOworICAgICAg
ICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBOb2RlLlRFWFRfTk9ERToKKyAgICAgICAgICAg
IGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9N
VGV4dE5vZGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICB0aXRsZSA9ICJcIiIgKyBu
b2RlLm5vZGVWYWx1ZSgpLnRyaW1FbmQoMzIpICsgIlwiIjsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgTm9kZS5DT01NRU5UX05PREU6CisgICAgICAgICAgICBjbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTUNvbW1lbnRJY29u
U3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICB0aXRsZSA9ICI8IS0tIiArIG5vZGUubm9kZVZh
bHVlKCkudHJpbUVuZCgzMikgKyAiLS0+IjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
IGNhc2UgTm9kZS5ET0NVTUVOVF9UWVBFX05PREU6CisgICAgICAgICAgICBjbGFzc05hbWUgPSBX
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTURvY3VtZW50VHlwZUlj
b25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIHRpdGxlID0gIjwhRE9DVFlQRT4iOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX05PREU6CisgICAg
ICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50LkRPTURvY3VtZW50SWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgdGl0bGUgPSBu
b2RlLm5vZGVOYW1lSW5Db3JyZWN0Q2FzZSgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBOb2RlLkNEQVRBX1NFQ1RJT05fTk9ERToKKyAgICAgICAgICAgIGNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NQ2hhcmFjdGVyRGF0
YUljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIHRpdGxlID0gIjwhW0NEQVRBWyIgKyBu
b2RlLnRyaW1FbmQoMzIpICsgIl1dPiI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgICAgIC8vIEZJWE1FOiBB
dCBzb21lIHBvaW50IHdlIG1pZ2h0IHdhbnQgYSBkaWZmZXJlbnQgaWNvbiBmb3IgdGhpcy4KKyAg
ICAgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMjgwMDk1MD4gTmVlZCBpY29uIGZvciBET0NV
TUVOVF9GUkFHTUVOVF9OT0RFIGFuZCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUKKyAgICAg
ICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25l
bnQuRE9NRG9jdW1lbnRUeXBlSWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgaWYgKG5v
ZGUuaXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2hhZG93IENvbnRlbnQiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvck5vZGUobm9kZSk7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE5vZGUuUFJPQ0VTU0lOR19JTlNUUlVD
VElPTl9OT0RFOgorICAgICAgICAgICAgLy8gRklYTUU6IEF0IHNvbWUgcG9pbnQgd2UgbWlnaHQg
d2FudCBhIGRpZmZlcmVudCBpY29uIGZvciB0aGlzLgorICAgICAgICAgICAgLy8gPHJkYXI6Ly9w
cm9ibGVtLzEyODAwOTUwPiBOZWVkIGljb24gZm9yIERPQ1VNRU5UX0ZSQUdNRU5UX05PREUgYW5k
IFBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERS4KKyAgICAgICAgICAgIGNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRG9jdW1lbnRUeXBlSWNv
blN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgdGl0bGUgPSBub2RlLm5vZGVOYW1lSW5Db3Jy
ZWN0Q2FzZSgpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gRE9NIG5vZGUgdHlwZTogIiwgbm9kZS5ub2Rl
VHlwZSgpKTsKKyAgICAgICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxl
bWVudFBhdGhDb21wb25lbnQuRE9NTm9kZUljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAg
IHRpdGxlID0gbm9kZS5ub2RlTmFtZUluQ29ycmVjdENhc2UoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHN1cGVyKHRpdGxlLCBjbGFzc05hbWUsIHJlcHJlc2VudGVkT2JqZWN0IHx8IGRvbVRyZWVF
bGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKKworICAgICAgICB0aGlzLl9kb21UcmVlRWxlbWVu
dCA9IGRvbVRyZWVFbGVtZW50OworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGRv
bVRyZWVFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21UcmVlRWxlbWVu
dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcmV2aW91c1NpYmxpbmcoKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9kb21UcmVlRWxlbWVudC5wcmV2aW91c1NpYmxpbmcpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRE9NVHJl
ZUVsZW1lbnRQYXRoQ29tcG9uZW50KHRoaXMuX2RvbVRyZWVFbGVtZW50LnByZXZpb3VzU2libGlu
Zyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmV4dFNpYmxpbmcoKQogICAgIHsKQEAgLTEy
MCwyMCArMTEyLDI2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fZG9tVHJlZUVsZW1lbnQubmV4dFNpYmxp
bmcuaXNDbG9zZVRhZygpKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudCh0aGlzLl9kb21U
cmVlRWxlbWVudC5uZXh0U2libGluZyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0
ZWQKIAotICAgIG1vdXNlT3ZlcjogZnVuY3Rpb24oKQorICAgIG1vdXNlT3ZlcigpCiAgICAgewog
ICAgICAgICB2YXIgbm9kZUlkID0gdGhpcy5fZG9tVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmpl
Y3QuaWQ7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRET01O
b2RlKG5vZGVJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtb3VzZU91dDogZnVuY3Rpb24oKQor
ICAgIG1vdXNlT3V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdl
ci5oaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudFBhdGhDb21wb25lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rv
ci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NRWxlbWVudEljb25TdHlsZUNsYXNzTmFtZSA9ICJk
b20tZWxlbWVudC1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25l
bnQuRE9NVGV4dE5vZGVJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLXRleHQtbm9kZS1pY29uIjsK
K1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NQ29tbWVudEljb25T
dHlsZUNsYXNzTmFtZSA9ICJkb20tY29tbWVudC1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudFBhdGhDb21wb25lbnQuRE9NRG9jdW1lbnRUeXBlSWNvblN0eWxlQ2xhc3NOYW1lID0g
ImRvbS1kb2N1bWVudC10eXBlLWljb24iOworV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0
aENvbXBvbmVudC5ET01Eb2N1bWVudEljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tZG9jdW1lbnQt
aWNvbiI7CitXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTUNoYXJh
Y3RlckRhdGFJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLWNoYXJhY3Rlci1kYXRhLWljb24iOwor
V2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01Ob2RlSWNvblN0eWxl
Q2xhc3NOYW1lID0gImRvbS1ub2RlLWljb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcwppbmRleCA4
ODVmNzg0Li4zODI5YTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcwpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywgMjAxNSBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1h
dHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5IEpv
c2VwaCBQZWNvcmFybwogICoKQEAgLTI4LDY3ICsyOCw1OSBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUgPSBmdW5jdGlvbihvbWl0Um9vdERPTU5vZGUs
IHNlbGVjdEVuYWJsZWQsIHNob3dJbkVsZW1lbnRzUGFuZWxFbmFibGVkKQorV2ViSW5zcGVjdG9y
LkRPTVRyZWVPdXRsaW5lID0gY2xhc3MgRE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuVHJlZU91dGxpbmUKIHsKLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJvbCIpOwotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24i
LCB0aGlzLl9vbm1vdXNlZG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91c2Vtb3ZlLmJpbmQodGhp
cyksIGZhbHNlKTsKLSAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQi
LCB0aGlzLl9vbm1vdXNlb3V0LmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgdGhpcy5fb25kcmFnc3RhcnQuYmluZCh0aGlz
KSwgZmFsc2UpOwotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnb3ZlciIs
IHRoaXMuX29uZHJhZ292ZXIuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLCB0aGlzLl9vbmRyYWdsZWF2ZS5iaW5kKHRoaXMp
LCBmYWxzZSk7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyb3AiLCB0aGlz
Ll9vbmRyb3AuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJkcmFnZW5kIiwgdGhpcy5fb25kcmFnZW5kLmJpbmQodGhpcyksIGZhbHNlKTsKLQot
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGlu
ZS5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLlN5bnRheEhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUpOwotCi0gICAgVHJlZU91dGxp
bmUuY2FsbCh0aGlzLCB0aGlzLmVsZW1lbnQpOworICAgIGNvbnN0cnVjdG9yKG9taXRSb290RE9N
Tm9kZSwgc2VsZWN0RW5hYmxlZCwgc2hvd0luRWxlbWVudHNQYW5lbEVuYWJsZWQpCisgICAgewor
ICAgICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fb25t
b3VzZWRvd24uYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5fb25tb3VzZW1vdmUuYmluZCh0aGlzKSwgZmFs
c2UpOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0
aGlzLl9vbm1vdXNlb3V0LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIHRoaXMuX29uZHJhZ3N0YXJ0LmJpbmQodGhp
cyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdv
dmVyIiwgdGhpcy5fb25kcmFnb3Zlci5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkcmFnbGVhdmUiLCB0aGlzLl9vbmRyYWdsZWF2ZS5i
aW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJkcm9wIiwgdGhpcy5fb25kcm9wLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdlbmQiLCB0aGlzLl9vbmRyYWdlbmQuYmluZCh0
aGlzKSwgZmFsc2UpOwogCi0gICAgdGhpcy5faW5jbHVkZVJvb3RET01Ob2RlID0gIW9taXRSb290
RE9NTm9kZTsKLSAgICB0aGlzLl9zZWxlY3RFbmFibGVkID0gc2VsZWN0RW5hYmxlZDsKLSAgICB0
aGlzLl9zaG93SW5FbGVtZW50c1BhbmVsRW5hYmxlZCA9IHNob3dJbkVsZW1lbnRzUGFuZWxFbmFi
bGVkOwotICAgIHRoaXMuX3Jvb3RET01Ob2RlID0gbnVsbDsKLSAgICB0aGlzLl9zZWxlY3RlZERP
TU5vZGUgPSBudWxsOwotICAgIHRoaXMuX2V2ZW50U3VwcG9ydCA9IG5ldyBXZWJJbnNwZWN0b3Iu
T2JqZWN0KCk7Ci0gICAgdGhpcy5fZWRpdGluZyA9IGZhbHNlOworICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiZG9tLXRyZWUtb3V0bGluZSIpOworICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuU3ludGF4SGlnaGxpZ2h0ZWRTdHlsZUNsYXNz
TmFtZSk7CiAKLSAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7CisgICAgICAgIHN1cGVyKHRoaXMu
ZWxlbWVudCk7CiAKLSAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1l
bnUiLCB0aGlzLl9jb250ZXh0TWVudUV2ZW50RmlyZWQuYmluZCh0aGlzKSwgdHJ1ZSk7CisgICAg
ICAgIHRoaXMuX2luY2x1ZGVSb290RE9NTm9kZSA9ICFvbWl0Um9vdERPTU5vZGU7CisgICAgICAg
IHRoaXMuX3NlbGVjdEVuYWJsZWQgPSBzZWxlY3RFbmFibGVkOworICAgICAgICB0aGlzLl9zaG93
SW5FbGVtZW50c1BhbmVsRW5hYmxlZCA9IHNob3dJbkVsZW1lbnRzUGFuZWxFbmFibGVkOworICAg
ICAgICB0aGlzLl9yb290RE9NTm9kZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3NlbGVjdGVkRE9N
Tm9kZSA9IG51bGw7CisgICAgICAgIHRoaXMuX2V2ZW50U3VwcG9ydCA9IG5ldyBXZWJJbnNwZWN0
b3IuT2JqZWN0KCk7CisgICAgICAgIHRoaXMuX2VkaXRpbmcgPSBmYWxzZTsKIAotICAgIHRoaXMu
X2hpZGVFbGVtZW50S2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dChudWxsLCAiSCIsIHRoaXMuX2hpZGVFbGVtZW50LmJpbmQodGhpcyksIHRoaXMuZWxl
bWVudCk7Ci0gICAgdGhpcy5faGlkZUVsZW1lbnRLZXlib2FyZFNob3J0Y3V0LmltcGxpY2l0bHlQ
cmV2ZW50c0RlZmF1bHQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlOwog
Ci0gICAgV2ViSW5zcGVjdG9yLnNob3dTaGFkb3dET01TZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvd1NoYWRvd0RPTVNl
dHRpbmdDaGFuZ2VkLCB0aGlzKTsKLX07CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2NvbnRleHRNZW51RXZlbnRGaXJlZC5iaW5kKHRo
aXMpLCB0cnVlKTsKIAotLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1
YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJl
Y2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUp
OworICAgICAgICB0aGlzLl9oaWRlRWxlbWVudEtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgIkgiLCB0aGlzLl9oaWRlRWxlbWVudC5iaW5k
KHRoaXMpLCB0aGlzLmVsZW1lbnQpOworICAgICAgICB0aGlzLl9oaWRlRWxlbWVudEtleWJvYXJk
U2hvcnRjdXQuaW1wbGljaXRseVByZXZlbnRzRGVmYXVsdCA9IGZhbHNlOwogCi1XZWJJbnNwZWN0
b3IuRE9NVHJlZU91dGxpbmUuU3R5bGVDbGFzc05hbWUgPSAiZG9tLXRyZWUtb3V0bGluZSI7Ci0K
LVdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5FdmVudCA9IHsKLSAgICBTZWxlY3RlZE5vZGVD
aGFuZ2VkOiAiZG9tLXRyZWUtb3V0bGluZS1zZWxlY3RlZC1ub2RlLWNoYW5nZWQiCi19OworICAg
ICAgICBXZWJJbnNwZWN0b3Iuc2hvd1NoYWRvd0RPTVNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93U2hhZG93RE9NU2V0
dGluZ0NoYW5nZWQsIHRoaXMpOworICAgIH0KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5l
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRs
aW5lLAorICAgIC8vIFB1YmxpYwogCi0gICAgd2lyZVRvRG9tQWdlbnQ6IGZ1bmN0aW9uKCkKKyAg
ICB3aXJlVG9Eb21BZ2VudCgpCiAgICAgewogICAgICAgICB0aGlzLl9lbGVtZW50c1RyZWVVcGRh
dGVyID0gbmV3IFdlYkluc3BlY3Rvci5ET01UcmVlVXBkYXRlcih0aGlzKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGNsb3NlOiBmdW5jdGlvbigpCisgICAgY2xvc2UoKQogICAgIHsKICAgICAgICAg
aWYgKHRoaXMuX2VsZW1lbnRzVHJlZVVwZGF0ZXIpIHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnRzVHJlZVVwZGF0ZXIuY2xvc2UoKTsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnRzVHJlZVVw
ZGF0ZXIgPSBudWxsOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXRWaXNpYmxl
OiBmdW5jdGlvbih2aXNpYmxlLCBvbWl0Rm9jdXMpCisgICAgc2V0VmlzaWJsZSh2aXNpYmxlLCBv
bWl0Rm9jdXMpCiAgICAgewogICAgICAgICB0aGlzLl92aXNpYmxlID0gdmlzaWJsZTsKICAgICAg
ICAgaWYgKCF0aGlzLl92aXNpYmxlKQpAQCAtOTcsMjIgKzg5LDIyIEBAIFdlYkluc3BlY3Rvci5E
T01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVk
Tm9kZXMoKTsKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkRE9NTm9kZSkKICAgICAgICAgICAg
IHRoaXMuX3JldmVhbEFuZFNlbGVjdE5vZGUodGhpcy5fc2VsZWN0ZWRET01Ob2RlLCBvbWl0Rm9j
dXMpOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oZXZl
bnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKKyAgICBhZGRFdmVudExpc3RlbmVyKGV2ZW50
VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCiAgICAgewogICAgICAgICB0aGlzLl9ldmVudFN1
cHBvcnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KTsK
LSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uKGV2ZW50
VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCisgICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQogICAgIHsKICAgICAgICAgdGhpcy5fZXZlbnRT
dXBwb3J0LnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVj
dCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcm9vdERPTU5vZGUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3Jvb3RET01Ob2RlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJv
b3RET01Ob2RlKHgpCiAgICAgewpAQCAtMTI0LDE5ICsxMTYsMTkgQEAgV2ViSW5zcGVjdG9yLkRP
TVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faXNYTUxNaW1lVHlwZSA9
IHggJiYgeC5pc1hNTE5vZGUoKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZSgpOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGlzWE1MTWltZVR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2lzWE1MTWltZVR5cGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWxlY3RlZERPTU5vZGU6
IGZ1bmN0aW9uKCkKKyAgICBzZWxlY3RlZERPTU5vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3NlbGVjdGVkRE9NTm9kZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlbGVjdERPTU5v
ZGU6IGZ1bmN0aW9uKG5vZGUsIGZvY3VzKQorICAgIHNlbGVjdERPTU5vZGUobm9kZSwgZm9jdXMp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRET01Ob2RlID09PSBub2RlKSB7CiAg
ICAgICAgICAgICB0aGlzLl9yZXZlYWxBbmRTZWxlY3ROb2RlKG5vZGUsICFmb2N1cyk7CkBAIC0x
NTMsMTQgKzE0NSwxNCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0g
ewogICAgICAgICAvLyBOb3RlIHRoYXQgX3JldmVhbEFuZFNlbGVjdE5vZGUgd2lsbCBub3QgZG8g
YW55dGhpbmcgZm9yIGEgbnVsbCBub2RlLgogICAgICAgICBpZiAoIW5vZGUgfHwgdGhpcy5fc2Vs
ZWN0ZWRET01Ob2RlID09PSBub2RlKQogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWROb2RlQ2hh
bmdlZCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVkaXRpbmcoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2VkaXRpbmc7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGU6IGZ1
bmN0aW9uKCkKKyAgICB1cGRhdGUoKQogICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGVkTm9kZSA9
IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA/IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXBy
ZXNlbnRlZE9iamVjdCA6IG51bGw7CiAKQEAgLTE4NywyMiArMTc5LDIyIEBAIFdlYkluc3BlY3Rv
ci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHNlbGVjdGVkTm9k
ZSkKICAgICAgICAgICAgIHRoaXMuX3JldmVhbEFuZFNlbGVjdE5vZGUoc2VsZWN0ZWROb2RlLCB0
cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24oKQor
ICAgIHVwZGF0ZVNlbGVjdGlvbigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRU
cmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdmFyIGVsZW1lbnQgPSB0
aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CiAgICAgICAgIGVsZW1lbnQudXBk
YXRlU2VsZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2VsZWN0ZWROb2RlQ2hhbmdl
ZDogZnVuY3Rpb24oKQorICAgIF9zZWxlY3RlZE5vZGVDaGFuZ2VkKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2V2ZW50U3VwcG9ydC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkRPTVRyZWVPdXRsaW5lLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQpOwotICAgIH0sCisgICAg
fQogCi0gICAgZmluZFRyZWVFbGVtZW50OiBmdW5jdGlvbihub2RlKQorICAgIGZpbmRUcmVlRWxl
bWVudChub2RlKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gaXNBbmNlc3Rvck5vZGUoYW5jZXN0
b3IsIG5vZGUpCiAgICAgICAgIHsKQEAgLTIyMSw5ICsyMTMsOSBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRy
ZWVFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlVHJlZUVsZW1lbnRGb3I6IGZ1
bmN0aW9uKG5vZGUpCisgICAgY3JlYXRlVHJlZUVsZW1lbnRGb3Iobm9kZSkKICAgICB7CiAgICAg
ICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuZmluZFRyZWVFbGVtZW50KG5vZGUpOwogICAgICAg
ICBpZiAodHJlZUVsZW1lbnQpCkBAIC0yMzYsMTYgKzIyOCw1MCBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRyZWVFbGVtZW50
LmNoaWxkcmVuW25vZGUuaW5kZXhdOwogCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IHN1cHByZXNzUmV2ZWFsQW5kU2VsZWN0KHgpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fc3VwcHJlc3NSZXZlYWxBbmRTZWxlY3QgPT09IHgpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHRoaXMuX3N1cHByZXNzUmV2ZWFsQW5kU2VsZWN0ID0geDsKLSAgICB9
LAorICAgIH0KKworCisgICAgcG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQs
IHRyZWVFbGVtZW50KQorICAgIHsKKyAgICAgICAgdmFyIHRhZyA9IGV2ZW50LnRhcmdldC5lbmNs
b3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJodG1sLXRhZyIpOworICAgICAgICB2YXIgdGV4dE5v
ZGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiaHRtbC10ZXh0
LW5vZGUiKTsKKyAgICAgICAgdmFyIGNvbW1lbnROb2RlID0gZXZlbnQudGFyZ2V0LmVuY2xvc2lu
Z05vZGVPclNlbGZXaXRoQ2xhc3MoImh0bWwtY29tbWVudCIpOworCisgICAgICAgIHZhciBwb3B1
bGF0ZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKHRhZyAmJiB0cmVlRWxlbWVudC5fcG9wdWxhdGVU
YWdDb250ZXh0TWVudSkgeworICAgICAgICAgICAgaWYgKHBvcHVsYXRlZCkKKyAgICAgICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIHRyZWVFbGVt
ZW50Ll9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCk7CisgICAgICAg
ICAgICBwb3B1bGF0ZWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKHRleHROb2RlICYmIHRy
ZWVFbGVtZW50Ll9wb3B1bGF0ZVRleHRDb250ZXh0TWVudSkgeworICAgICAgICAgICAgaWYgKHBv
cHVsYXRlZCkKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsK
KyAgICAgICAgICAgIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRleHRDb250ZXh0TWVudShjb250ZXh0
TWVudSwgdGV4dE5vZGUpOworICAgICAgICAgICAgcG9wdWxhdGVkID0gdHJ1ZTsKKyAgICAgICAg
fSBlbHNlIGlmIChjb21tZW50Tm9kZSAmJiB0cmVlRWxlbWVudC5fcG9wdWxhdGVOb2RlQ29udGV4
dE1lbnUpIHsKKyAgICAgICAgICAgIGlmIChwb3B1bGF0ZWQpCisgICAgICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICB0cmVlRWxlbWVudC5fcG9w
dWxhdGVOb2RlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIHRleHROb2RlKTsKKyAgICAgICAgICAg
IHBvcHVsYXRlZCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcG9wdWxhdGVk
OworICAgIH0KKworICAgIGFkanVzdENvbGxhcHNlZFJhbmdlKCkKKyAgICB7CisgICAgfQorCisg
ICAgLy8gUHJpdmF0ZQogCi0gICAgX3JldmVhbEFuZFNlbGVjdE5vZGU6IGZ1bmN0aW9uKG5vZGUs
IG9taXRGb2N1cykKKyAgICBfcmV2ZWFsQW5kU2VsZWN0Tm9kZShub2RlLCBvbWl0Rm9jdXMpCiAg
ICAgewogICAgICAgICBpZiAoIW5vZGUgfHwgdGhpcy5fc3VwcHJlc3NSZXZlYWxBbmRTZWxlY3Qp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNTUsOSArMjgxLDkgQEAgV2ViSW5zcGVjdG9yLkRP
TVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICB0cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3Qob21pdEZvY3VzKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF90cmVlRWxlbWVudEZyb21FdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RyZWVF
bGVtZW50RnJvbUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNjcm9sbENvbnRhaW5l
ciA9IHRoaXMuZWxlbWVudC5wYXJlbnRFbGVtZW50OwogCkBAIC0yODEsOSArMzA3LDkgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVsZW1l
bnQgPSB0aGlzLnRyZWVFbGVtZW50RnJvbVBvaW50KHgsIHkgKyAyKTsKIAogICAgICAgICByZXR1
cm4gZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9vbm1vdXNlZG93bjogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX29ubW91c2Vkb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGVsZW1l
bnQgPSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CiAgICAgICAgIGlmICghZWxl
bWVudCB8fCBlbGVtZW50LmlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpKSB7
CkBAIC0yOTIsOSArMzE4LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGVsZW1lbnQuc2VsZWN0KCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfb25tb3VzZW1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbm1vdXNlbW92
ZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5fdHJlZUVsZW1lbnRG
cm9tRXZlbnQoZXZlbnQpOwogICAgICAgICBpZiAoZWxlbWVudCAmJiB0aGlzLl9wcmV2aW91c0hv
dmVyZWRFbGVtZW50ID09PSBlbGVtZW50KQpAQCAtMzE1LDkgKzM0MSw5IEBAIFdlYkluc3BlY3Rv
ci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBXZWJJ
bnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShlbGVtZW50ID8gZWxlbWVu
dC5yZXByZXNlbnRlZE9iamVjdC5pZCA6IDApOwotICAgIH0sCisgICAgfQogCi0gICAgX29ubW91
c2VvdXQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbm1vdXNlb3V0KGV2ZW50KQogICAgIHsKICAg
ICAgICAgdmFyIG5vZGVVbmRlck1vdXNlID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChldmVu
dC5wYWdlWCwgZXZlbnQucGFnZVkpOwogICAgICAgICBpZiAobm9kZVVuZGVyTW91c2UgJiYgbm9k
ZVVuZGVyTW91c2UuaXNEZXNjZW5kYW50KHRoaXMuZWxlbWVudCkpCkBAIC0zMjksOSArMzU1LDkg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWRlRE9NTm9kZUhpZ2hsaWdo
dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX29uZHJhZ3N0YXJ0OiBmdW5jdGlvbihldmVudCkK
KyAgICBfb25kcmFnc3RhcnQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdHJlZUVsZW1lbnQg
PSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CiAgICAgICAgIGlmICghdHJlZUVs
ZW1lbnQpCkBAIC0zNTAsOSArMzc2LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01O
b2RlSGlnaGxpZ2h0KCk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfb25kcmFnb3ZlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgX29uZHJhZ292ZXIoZXZlbnQp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX25vZGVCZWluZ0RyYWdnZWQpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC0zNzQsMTYgKzQwMCwxNiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJl
ZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwog
ICAgICAgICBldmVudC5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICJtb3ZlIjsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX29uZHJhZ2xlYXZlOiBmdW5jdGlv
bihldmVudCkKKyAgICBfb25kcmFnbGVhdmUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9j
bGVhckRyYWdPdmVyVHJlZUVsZW1lbnRNYXJrZXIoKTsKICAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX2lz
VmFsaWREcmFnU291cmNlT3JUYXJnZXQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF9pc1Zh
bGlkRHJhZ1NvdXJjZU9yVGFyZ2V0KHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0
cmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM5NiwxMSArNDIyLDIz
IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfb25kcm9wOiBmdW5jdGlvbihldmVudCkKKyAgICBfb25kcm9wKGV2ZW50KQogICAgIHsK
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKworICAgICAgICBmdW5jdGlvbiBjYWxs
YmFjayhlcnJvciwgbmV3Tm9kZUlkKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3Ip
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2Rp
ZmllZE5vZGVzKCk7CisgICAgICAgICAgICB2YXIgbmV3Tm9kZSA9IFdlYkluc3BlY3Rvci5kb21U
cmVlTWFuYWdlci5ub2RlRm9ySWQobmV3Tm9kZUlkKTsKKyAgICAgICAgICAgIGlmIChuZXdOb2Rl
KQorICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0RE9NTm9kZShuZXdOb2RlLCB0cnVlKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50RnJv
bUV2ZW50KGV2ZW50KTsKICAgICAgICAgaWYgKHRoaXMuX25vZGVCZWluZ0RyYWdnZWQgJiYgdHJl
ZUVsZW1lbnQpIHsKICAgICAgICAgICAgIHZhciBwYXJlbnROb2RlOwpAQCAtNDE1LDM5ICs0NTMs
MjkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICBhbmNob3JOb2RlID0gZHJhZ1RhcmdldE5vZGU7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBuZXdOb2RlSWQpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzKCk7Ci0gICAg
ICAgICAgICAgICAgdmFyIG5ld05vZGUgPSBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIubm9k
ZUZvcklkKG5ld05vZGVJZCk7Ci0gICAgICAgICAgICAgICAgaWYgKG5ld05vZGUpCi0gICAgICAg
ICAgICAgICAgICAgIHRoaXMuc2VsZWN0RE9NTm9kZShuZXdOb2RlLCB0cnVlKTsKLSAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIHRoaXMuX25vZGVCZWluZ0RyYWdnZWQubW92ZVRvKHBhcmVudE5v
ZGUsIGFuY2hvck5vZGUsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgICAgICB9CiAKICAgICAg
ICAgZGVsZXRlIHRoaXMuX25vZGVCZWluZ0RyYWdnZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
b25kcmFnZW5kOiBmdW5jdGlvbihldmVudCkKKyAgICBfb25kcmFnZW5kKGV2ZW50KQogICAgIHsK
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgdGhpcy5fY2xlYXJEcmFn
T3ZlclRyZWVFbGVtZW50TWFya2VyKCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9ub2RlQmVpbmdE
cmFnZ2VkOwotICAgIH0sCisgICAgfQogCi0gICAgX2NsZWFyRHJhZ092ZXJUcmVlRWxlbWVudE1h
cmtlcjogZnVuY3Rpb24oKQorICAgIF9jbGVhckRyYWdPdmVyVHJlZUVsZW1lbnRNYXJrZXIoKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RyYWdPdmVyVHJlZUVsZW1lbnQpIHsKICAgICAgICAg
ICAgIHRoaXMuX2RyYWdPdmVyVHJlZUVsZW1lbnQudXBkYXRlU2VsZWN0aW9uKCk7CiAgICAgICAg
ICAgICB0aGlzLl9kcmFnT3ZlclRyZWVFbGVtZW50Lmxpc3RJdGVtRWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKCJlbGVtZW50cy1kcmFnLW92ZXIiKTsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9k
cmFnT3ZlclRyZWVFbGVtZW50OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29u
dGV4dE1lbnVFdmVudEZpcmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGV4dE1lbnVFdmVu
dEZpcmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5fdHJl
ZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOwogICAgICAgICBpZiAoIXRyZWVFbGVtZW50KQpAQCAt
NDU2LDQ2ICs0ODQsMTUgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dShldmVudCk7CiAgICAgICAgIHRoaXMucG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwg
ZXZlbnQsIHRyZWVFbGVtZW50KTsKICAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwotICAgIH0s
Ci0KLSAgICBwb3B1bGF0ZUNvbnRleHRNZW51OiBmdW5jdGlvbihjb250ZXh0TWVudSwgZXZlbnQs
IHRyZWVFbGVtZW50KQotICAgIHsKLSAgICAgICAgdmFyIHRhZyA9IGV2ZW50LnRhcmdldC5lbmNs
b3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJodG1sLXRhZyIpOwotICAgICAgICB2YXIgdGV4dE5v
ZGUgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiaHRtbC10ZXh0
LW5vZGUiKTsKLSAgICAgICAgdmFyIGNvbW1lbnROb2RlID0gZXZlbnQudGFyZ2V0LmVuY2xvc2lu
Z05vZGVPclNlbGZXaXRoQ2xhc3MoImh0bWwtY29tbWVudCIpOwotCi0gICAgICAgIHZhciBwb3B1
bGF0ZWQgPSBmYWxzZTsKLSAgICAgICAgaWYgKHRhZyAmJiB0cmVlRWxlbWVudC5fcG9wdWxhdGVU
YWdDb250ZXh0TWVudSkgewotICAgICAgICAgICAgaWYgKHBvcHVsYXRlZCkKLSAgICAgICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAgICAgIHRyZWVFbGVt
ZW50Ll9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCk7Ci0gICAgICAg
ICAgICBwb3B1bGF0ZWQgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKHRleHROb2RlICYmIHRy
ZWVFbGVtZW50Ll9wb3B1bGF0ZVRleHRDb250ZXh0TWVudSkgewotICAgICAgICAgICAgaWYgKHBv
cHVsYXRlZCkKLSAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsK
LSAgICAgICAgICAgIHRyZWVFbGVtZW50Ll9wb3B1bGF0ZVRleHRDb250ZXh0TWVudShjb250ZXh0
TWVudSwgdGV4dE5vZGUpOwotICAgICAgICAgICAgcG9wdWxhdGVkID0gdHJ1ZTsKLSAgICAgICAg
fSBlbHNlIGlmIChjb21tZW50Tm9kZSAmJiB0cmVlRWxlbWVudC5fcG9wdWxhdGVOb2RlQ29udGV4
dE1lbnUpIHsKLSAgICAgICAgICAgIGlmIChwb3B1bGF0ZWQpCi0gICAgICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Ci0gICAgICAgICAgICB0cmVlRWxlbWVudC5fcG9w
dWxhdGVOb2RlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIHRleHROb2RlKTsKLSAgICAgICAgICAg
IHBvcHVsYXRlZCA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcG9wdWxhdGVk
OwotICAgIH0sCi0KLSAgICBhZGp1c3RDb2xsYXBzZWRSYW5nZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVNb2RpZmllZE5vZGVzOiBmdW5jdGlvbigpCisg
ICAgX3VwZGF0ZU1vZGlmaWVkTm9kZXMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1l
bnRzVHJlZVVwZGF0ZXIpCiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50c1RyZWVVcGRhdGVyLl91
cGRhdGVNb2RpZmllZE5vZGVzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVDb250
ZXh0TWVudTogZnVuY3Rpb24oY29udGV4dE1lbnUsIGRvbU5vZGUpCisgICAgX3BvcHVsYXRlQ29u
dGV4dE1lbnUoY29udGV4dE1lbnUsIGRvbU5vZGUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X3Nob3dJbkVsZW1lbnRzUGFuZWxFbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTA3
LDkgKzUwNCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXZlYWwgaW4gRE9NIFRyZWUi
KSwgcmV2ZWFsRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd1NoYWRvd0RPTVNl
dHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2hvd1NoYWRvd0RPTVNldHRpbmdD
aGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG5vZGVUb1NlbGVjdCA9IHRoaXMuc2Vs
ZWN0ZWRUcmVlRWxlbWVudCA/IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9i
amVjdCA6IG51bGw7CiAgICAgICAgIHdoaWxlIChub2RlVG9TZWxlY3QpIHsKQEAgLTUyNCw5ICs1
MjEsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGlmIChub2RlVG9TZWxlY3QpCiAgICAgICAgICAgICB0aGlzLnNlbGVjdERPTU5vZGUobm9k
ZVRvU2VsZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oaWRlRWxlbWVudDogZnVuY3Rpb24o
ZXZlbnQsIGtleWJvYXJkU2hvcnRjdXQpCisgICAgX2hpZGVFbGVtZW50KGV2ZW50LCBrZXlib2Fy
ZFNob3J0Y3V0KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQg
fHwgV2ViSW5zcGVjdG9yLmlzRWRpdGluZ0FueUZpZWxkKCkpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC01NzcsNCArNTc0LDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlw
ZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5ET01UcmVl
T3V0bGluZS5FdmVudCA9IHsKKyAgICBTZWxlY3RlZE5vZGVDaGFuZ2VkOiAiZG9tLXRyZWUtb3V0
bGluZS1zZWxlY3RlZC1ub2RlLWNoYW5nZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcwppbmRl
eCBhZDI2ODQxLi5lMzdiODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywgMjAx
NSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4
IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5
IEpvc2VwaCBQZWNvcmFybwogICoKQEAgLTI4LDc0ICsyOCw3OSBAQAogICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZVVwZGF0ZXIgPSBmdW5jdGlvbih0cmVlT3V0bGluZSkK
K1dlYkluc3BlY3Rvci5ET01UcmVlVXBkYXRlciA9IGNsYXNzIERPTVRyZWVVcGRhdGVyIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Ob2Rl
SW5zZXJ0ZWQsIHRoaXMuX25vZGVJbnNlcnRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRv
bVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2Vy
LkV2ZW50Lk5vZGVSZW1vdmVkLCB0aGlzLl9ub2RlUmVtb3ZlZCwgdGhpcyk7Ci0gICAgV2ViSW5z
cGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRy
ZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZU1vZGlmaWVkLCB0aGlzLl9hdHRyaWJ1dGVzVXBkYXRl
ZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZVJlbW92ZWQsIHRo
aXMuX2F0dHJpYnV0ZXNVcGRhdGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQu
Q2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzLl9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMp
OwotICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Eb2N1bWVudFVwZGF0ZWQsIHRoaXMuX2RvY3Vt
ZW50VXBkYXRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNoaWxkTm9kZUNv
dW50VXBkYXRlZCwgdGhpcy5fY2hpbGROb2RlQ291bnRVcGRhdGVkLCB0aGlzKTsKLQotICAgIHRo
aXMuX3RyZWVPdXRsaW5lID0gdHJlZU91dGxpbmU7Ci0gICAgdGhpcy5fcmVjZW50bHlNb2RpZmll
ZE5vZGVzID0gW107Ci19OworICAgIGNvbnN0cnVjdG9yKHRyZWVPdXRsaW5lKQorICAgIHsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwgdGhpcy5fbm9kZUluc2Vy
dGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5vZGVSZW1vdmVkLCB0
aGlzLl9ub2RlUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5B
dHRyaWJ1dGVNb2RpZmllZCwgdGhpcy5fYXR0cmlidXRlc1VwZGF0ZWQsIHRoaXMpOworICAgICAg
ICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fYXR0cmlidXRl
c1VwZGF0ZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ2hhcmFjdGVy
RGF0YU1vZGlmaWVkLCB0aGlzLl9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMpOworICAgICAg
ICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuRG9jdW1lbnRVcGRhdGVkLCB0aGlzLl9kb2N1bWVudFVw
ZGF0ZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ2hpbGROb2RlQ291
bnRVcGRhdGVkLCB0aGlzLl9jaGlsZE5vZGVDb3VudFVwZGF0ZWQsIHRoaXMpOworCisgICAgICAg
IHRoaXMuX3RyZWVPdXRsaW5lID0gdHJlZU91dGxpbmU7CisgICAgICAgIHRoaXMuX3JlY2VudGx5
TW9kaWZpZWROb2RlcyA9IFtdOworICAgIH0KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVVcGRhdGVy
LnByb3RvdHlwZSA9IHsKLSAgICBjbG9zZTogZnVuY3Rpb24oKQorICAgIC8vIFB1YmxpYworCisg
ICAgY2xvc2UoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnJl
bW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZG9jdW1lbnRVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICAvLyBQcml2YXRlCisKKyAg
ICBfZG9jdW1lbnRVcGRhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVzZXQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9hdHRyaWJ1dGVzVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2F0dHJpYnV0ZXNVcGRhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVj
ZW50bHlNb2RpZmllZE5vZGVzLnB1c2goe25vZGU6IGV2ZW50LmRhdGEubm9kZSwgdXBkYXRlZDog
dHJ1ZX0pOwogICAgICAgICBpZiAodGhpcy5fdHJlZU91dGxpbmUuX3Zpc2libGUpCiAgICAgICAg
ICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzU29vbigpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2NoYXJhY3RlckRhdGFNb2RpZmllZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NoYXJhY3Rl
ckRhdGFNb2RpZmllZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlY2VudGx5TW9kaWZp
ZWROb2Rlcy5wdXNoKHtub2RlOiBldmVudC5kYXRhLm5vZGUsIHVwZGF0ZWQ6IHRydWV9KTsKICAg
ICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLl92aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5f
dXBkYXRlTW9kaWZpZWROb2Rlc1Nvb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9ub2RlSW5z
ZXJ0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9ub2RlSW5zZXJ0ZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICB0aGlzLl9yZWNlbnRseU1vZGlmaWVkTm9kZXMucHVzaCh7bm9kZTogZXZlbnQuZGF0
YS5ub2RlLCBwYXJlbnQ6IGV2ZW50LmRhdGEucGFyZW50LCBpbnNlcnRlZDogdHJ1ZX0pOwogICAg
ICAgICBpZiAodGhpcy5fdHJlZU91dGxpbmUuX3Zpc2libGUpCiAgICAgICAgICAgICB0aGlzLl91
cGRhdGVNb2RpZmllZE5vZGVzU29vbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX25vZGVSZW1v
dmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbm9kZVJlbW92ZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9yZWNlbnRseU1vZGlmaWVkTm9kZXMucHVzaCh7bm9kZTogZXZlbnQuZGF0YS5u
b2RlLCBwYXJlbnQ6IGV2ZW50LmRhdGEucGFyZW50LCByZW1vdmVkOiB0cnVlfSk7CiAgICAgICAg
IGlmICh0aGlzLl90cmVlT3V0bGluZS5fdmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZU1vZGlmaWVkTm9kZXNTb29uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2hpbGROb2RlQ291
bnRVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY2hpbGROb2RlQ291bnRVcGRhdGVkKGV2
ZW50KQogICAgIHsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5fdHJlZU91dGxpbmUu
ZmluZFRyZWVFbGVtZW50KGV2ZW50LmRhdGEpOwogICAgICAgICBpZiAodHJlZUVsZW1lbnQpCiAg
ICAgICAgICAgICB0cmVlRWxlbWVudC5oYXNDaGlsZHJlbiA9IGV2ZW50LmRhdGEuaGFzQ2hpbGRO
b2RlcygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU1vZGlmaWVkTm9kZXNTb29uOiBm
dW5jdGlvbigpCisgICAgX3VwZGF0ZU1vZGlmaWVkTm9kZXNTb29uKCkKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzVGltZW91dCkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc1RpbWVvdXQgPSBzZXRUaW1lb3V0
KHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXMuYmluZCh0aGlzKSwgMCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfdXBkYXRlTW9kaWZpZWROb2RlczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVNb2Rp
ZmllZE5vZGVzKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVz
VGltZW91dCkgewogICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX3VwZGF0ZU1vZGlmaWVk
Tm9kZXNUaW1lb3V0KTsKQEAgLTEzMSw5ICsxMzYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZVVw
ZGF0ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgZGVsZXRlIHVwZGF0ZWRQYXJlbnRUcmVl
RWxlbWVudHNbaV0uYWxyZWFkeVVwZGF0ZWRDaGlsZHJlbjsKIAogICAgICAgICB0aGlzLl9yZWNl
bnRseU1vZGlmaWVkTm9kZXMgPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNldDogZnVu
Y3Rpb24oKQorICAgIF9yZXNldCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJl
ZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKICAgICAgICAgdGhpcy5fcmVjZW50bHlN
b2RpZmllZE5vZGVzID0gW107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcwpp
bmRleCA5MzgxZjc4Li45YTRlMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWluZXJWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZp
ZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsNTEgKzIzLDM1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcgPSBmdW5j
dGlvbigpIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9i
amVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl90b29sYmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkl0ZW0oImRhc2hib2FyZC1jb250YWluZXIiLCAiZ3JvdXAiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkFjdGl2aXR5IFZpZXdlciIpKTsKLQotICAgIHRoaXMuX2FkdmFuY2VG
b3J3YXJkQXJyb3dFbGVtZW50ID0gdGhpcy5fdG9vbGJhckl0ZW0uZWxlbWVudC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgdGhpcy5fYWR2YW5jZUZvcndh
cmRBcnJvd0VsZW1lbnQuY2xhc3NOYW1lID0gImFkdmFuY2UtYXJyb3cgYWR2YW5jZS1mb3J3YXJk
IjsKLSAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0VsZW1lbnQgPSB0aGlzLl90b29sYmFy
SXRlbS5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsK
LSAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJvd0VsZW1lbnQuY2xhc3NOYW1lID0gImFkdmFu
Y2UtYXJyb3cgYWR2YW5jZS1iYWNrd2FyZCI7Ci0KLSAgICB0aGlzLl9hZHZhbmNlRm9yd2FyZEFy
cm93RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2FkdmFuY2VGb3J3YXJk
QXJyb3dDbGlja2VkLmJpbmQodGhpcykpOwotICAgIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFy
cm93Q2xpY2tlZC5iaW5kKHRoaXMpKTsKLQotICAgIC8vIFJlcHJlc2VudHMgY3VycmVudGx5IG9w
ZW4gZGFzaGJvYXJkcywgd2l0aCB0aGUgbW9zdCByZWNlbnQgZW50cmllcyBhcHBlbmRlZCB0byB0
aGUgZW5kLgotICAgIHRoaXMuX2Rhc2hib2FyZFN0YWNrID0gW107Ci0gICAgdGhpcy5fY3VycmVu
dEluZGV4ID0gLTE7CitXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldyA9IGNsYXNz
IERhc2hib2FyZENvbnRhaW5lclZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7Cisg
ICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX3Vw
ZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKTsKLX07CisgICAgICAgIHRoaXMuX3Rvb2xiYXJJ
dGVtID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSgiZGFzaGJvYXJkLWNvbnRhaW5l
ciIsICJncm91cCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWN0aXZpdHkgVmlld2VyIikpOwog
Ci1XZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5WaXNpYmxlRGFzaGJvYXJkU3R5
bGVDbGFzc05hbWUgPSAidmlzaWJsZSI7Ci1XZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVy
Vmlldy5JbmFjdGl2ZVN0eWxlQ2xhc3NOYW1lID0gImluYWN0aXZlIjsKKyAgICAgICAgdGhpcy5f
YWR2YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQgPSB0aGlzLl90b29sYmFySXRlbS5lbGVtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICAgICAgdGhpcy5f
YWR2YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQuY2xhc3NOYW1lID0gImFkdmFuY2UtYXJyb3cgYWR2
YW5jZS1mb3J3YXJkIjsKKyAgICAgICAgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJyb3dFbGVtZW50
ID0gdGhpcy5fdG9vbGJhckl0ZW0uZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKSk7CisgICAgICAgIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVu
dC5jbGFzc05hbWUgPSAiYWR2YW5jZS1hcnJvdyBhZHZhbmNlLWJhY2t3YXJkIjsKIAotV2ViSW5z
cGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQWR2YW5jZURpcmVjdGlvbiA9IHsKLSAgICBG
b3J3YXJkOiAiZGFzaGJvYXJkLWNvbnRhaW5lci12aWV3LWFkdmFuY2UtZGlyZWN0aW9uLWZvcndh
cmQiLAotICAgIEJhY2t3YXJkOiAiZGFzaGJvYXJkLWNvbnRhaW5lci12aWV3LWFkdmFuY2UtZGly
ZWN0aW9uLWJhY2t3YXJkIiwKLSAgICBOb25lOiAiZGFzaGJvYXJkLWNvbnRhaW5lci12aWV3LWFk
dmFuY2UtZGlyZWN0aW9uLW5vbmUiCi19OworICAgICAgICB0aGlzLl9hZHZhbmNlRm9yd2FyZEFy
cm93RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2FkdmFuY2VGb3J3YXJk
QXJyb3dDbGlja2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRB
cnJvd0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9hZHZhbmNlQmFja3dh
cmRBcnJvd0NsaWNrZWQuYmluZCh0aGlzKSk7CiAKLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250
YWluZXJWaWV3LkZvcndhcmRJbmNvbWluZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRl
LWluLWRvd24iOwotV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQmFja3dhcmRJ
bmNvbWluZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLWluLXVwIjsKLVdlYkluc3Bl
Y3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkZvcndhcmRPdXRnb2luZ0Rhc2hib2FyZFN0eWxl
Q2xhc3NOYW1lID0gInNsaWRlLW91dC1kb3duIjsKLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250
YWluZXJWaWV3LkJhY2t3YXJkT3V0Z29pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSA9ICJzbGlk
ZS1vdXQtdXAiOworICAgICAgICAvLyBSZXByZXNlbnRzIGN1cnJlbnRseSBvcGVuIGRhc2hib2Fy
ZHMsIHdpdGggdGhlIG1vc3QgcmVjZW50IGVudHJpZXMgYXBwZW5kZWQgdG8gdGhlIGVuZC4KKyAg
ICAgICAgdGhpcy5fZGFzaGJvYXJkU3RhY2sgPSBbXTsKKyAgICAgICAgdGhpcy5fY3VycmVudElu
ZGV4ID0gLTE7CiAKLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAg
ICAgdGhpcy5fdXBkYXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgpOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IHRvb2xiYXJJdGVtKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl90b29sYmFySXRlbTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjdXJyZW50RGFzaGJv
YXJkVmlldygpCiAgICAgewpAQCAtNzUsOSArNTksOSBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJk
Q29udGFpbmVyVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAog
ICAgICAgICByZXR1cm4gdGhpcy5fZGFzaGJvYXJkU3RhY2tbdGhpcy5fY3VycmVudEluZGV4XTsK
LSAgICB9LAorICAgIH0KIAotICAgIHNob3dEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmpl
Y3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHNob3dEYXNoYm9hcmRWaWV3Rm9y
UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICB2YXIg
ZGFzaGJvYXJkVmlldyA9IHRoaXMuX2Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChy
ZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIGlmICghZGFzaGJvYXJkVmlldykKQEAgLTg5LDkg
KzczLDkgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9kYXNoYm9hcmRTdGFjay5pbmRleE9mKGRhc2hi
b2FyZFZpZXcpOwogICAgICAgICB0aGlzLl9zaG93RGFzaGJvYXJkQXRJbmRleChpbmRleCk7CiAg
ICAgICAgIHJldHVybiBkYXNoYm9hcmRWaWV3OwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZURh
c2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmpl
Y3QpCisgICAgaGlkZURhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRl
ZE9iamVjdCkKICAgICB7CiAgICAgICAgIHZhciBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3cyA9IHRy
dWU7CiAgICAgICAgIHZhciBkYXNoYm9hcmRWaWV3ID0gdGhpcy5fZGFzaGJvYXJkVmlld0ZvclJl
cHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5UmV0dXJuRXhpc3RpbmdWaWV3
cyk7CkBAIC0xMDEsOSArODUsOSBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmll
dy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY3VycmVudElu
ZGV4ID4gMCk7CiAgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRBdEluZGV4KHRoaXMuX2N1cnJl
bnRJbmRleCAtIDEpOwotICAgIH0sCisgICAgfQogCi0gICAgY2xvc2VEYXNoYm9hcmRWaWV3Rm9y
UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIGNsb3Nl
RGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAg
IHsKICAgICAgICAgdmFyIG9ubHlSZXR1cm5FeGlzdGluZ1ZpZXdzID0gdHJ1ZTsKICAgICAgICAg
dmFyIGRhc2hib2FyZFZpZXcgPSB0aGlzLl9kYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmpl
Y3QocmVwcmVzZW50ZWRPYmplY3QsIG9ubHlSZXR1cm5FeGlzdGluZ1ZpZXdzKTsKQEAgLTExMSwz
NSArOTUsMzUgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgdGhpcy5fY2xvc2VEYXNo
Ym9hcmRWaWV3KGRhc2hib2FyZFZpZXcpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX2FkdmFuY2VGb3J3YXJkQXJyb3dDbGlja2VkOiBmdW5jdGlvbigpCisgICAgX2Fk
dmFuY2VGb3J3YXJkQXJyb3dDbGlja2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dEYXNo
Ym9hcmRBdEluZGV4KHRoaXMuX2N1cnJlbnRJbmRleCArIDEpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2FkdmFuY2VCYWNrd2FyZEFycm93Q2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9hZHZhbmNl
QmFja3dhcmRBcnJvd0NsaWNrZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd0Rhc2hib2Fy
ZEF0SW5kZXgodGhpcy5fY3VycmVudEluZGV4IC0gMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
ZGlzbWlzc0FkdmFuY2VBcnJvd3M6IGZ1bmN0aW9uKCkKKyAgICBfZGlzbWlzc0FkdmFuY2VBcnJv
d3MoKQogICAgIHsKICAgICAgICAgdGhpcy5fYWR2YW5jZUZvcndhcmRBcnJvd0VsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5JbmFjdGl2ZVN0
eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJyb3dFbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuSW5hY3Rp
dmVTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlQWR2YW5jZUFy
cm93VmlzaWJpbGl0eTogZnVuY3Rpb24oKQorICAgIF91cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmls
aXR5KCkKICAgICB7CiAgICAgICAgIHZhciBjYW5BZHZhbmNlRm9yd2FyZCA9IHRoaXMuX2N1cnJl
bnRJbmRleCA8IHRoaXMuX2Rhc2hib2FyZFN0YWNrLmxlbmd0aCAtIDE7CiAgICAgICAgIHZhciBj
YW5BZHZhbmNlQmFja3dhcmQgPSB0aGlzLl9jdXJyZW50SW5kZXggPiAwOwogICAgICAgICB0aGlz
Ll9hZHZhbmNlRm9yd2FyZEFycm93RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rv
ci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkluYWN0aXZlU3R5bGVDbGFzc05hbWUsICFjYW5BZHZh
bmNlRm9yd2FyZCk7CiAgICAgICAgIHRoaXMuX2FkdmFuY2VCYWNrd2FyZEFycm93RWxlbWVudC5j
bGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkluYWN0
aXZlU3R5bGVDbGFzc05hbWUsICFjYW5BZHZhbmNlQmFja3dhcmQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2Rhc2hib2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVz
ZW50ZWRPYmplY3QsIG9ubHlSZXR1cm5FeGlzdGluZ1ZpZXdzKQorICAgIF9kYXNoYm9hcmRWaWV3
Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QsIG9ubHlSZXR1cm5FeGlzdGlu
Z1ZpZXdzKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3Qp
OwogCkBAIC0xNTQsOSArMTM4LDkgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAvLyBObyBleGlz
dGluZyBjb250ZW50IHZpZXcgZm91bmQsIG1ha2UgYSBuZXcgb25lLgotICAgICAgICAgICAgZGFz
aGJvYXJkVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyhyZXByZXNlbnRlZE9i
amVjdCk7CisgICAgICAgICAgICBkYXNoYm9hcmRWaWV3ID0gV2ViSW5zcGVjdG9yLkRhc2hib2Fy
ZFZpZXcuY3JlYXRlKHJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgfSBjYXRjaCAoZSkgewot
ICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
ZSwgZS5zdGFjayk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQogCkBAIC0x
NjQsOSArMTQ4LDkgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl90b29sYmFySXRlbS5lbGVtZW50LmFwcGVuZENoaWxkKGRh
c2hib2FyZFZpZXcuZWxlbWVudCk7CiAKICAgICAgICAgcmV0dXJuIGRhc2hib2FyZFZpZXc7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd0Rhc2hib2FyZEF0SW5kZXg6IGZ1bmN0aW9uKGluZGV4
KQorICAgIF9zaG93RGFzaGJvYXJkQXRJbmRleChpbmRleCkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXggPD0gdGhpcy5fZGFzaGJvYXJkU3RhY2subGVu
Z3RoIC0gMSk7CiAKQEAgLTE4NSw5ICsxNjksOSBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29u
dGFpbmVyVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fY3VycmVudEluZGV4ID0g
aW5kZXg7CiAgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRWaWV3KHRoaXMuY3VycmVudERhc2hi
b2FyZFZpZXcsIGlzSW5pdGlhbERhc2hib2FyZCA/IGluaXRpYWxEaXJlY3Rpb24gOiBhZHZhbmNl
RGlyZWN0aW9uKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93RGFzaGJvYXJkVmlldzogZnVu
Y3Rpb24oZGFzaGJvYXJkVmlldywgYWR2YW5jZURpcmVjdGlvbikKKyAgICBfc2hvd0Rhc2hib2Fy
ZFZpZXcoZGFzaGJvYXJkVmlldywgYWR2YW5jZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGRhc2hib2FyZFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGFzaGJv
YXJkVmlldyk7CiAKQEAgLTIwMywyMyArMTg3LDI0IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRD
b250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXM7
CiAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZpc2libGVEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSk7
CiAKKyAgICAgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kZWQoZXZlbnQpIHsKKyAgICAgICAgICAg
IGlmIChldmVudC50YXJnZXQgIT09IGRhc2hib2FyZFZpZXcuZWxlbWVudCkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5yZW1vdmVF
dmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCk7CisgICAg
ICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShhbmltYXRpb25D
bGFzcyk7CisgICAgICAgICAgICBjb250YWluZXIuX3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxp
dHkoKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmIChhbmltYXRpb25DbGFzcykgewotICAgICAg
ICAgICAgZnVuY3Rpb24gYW5pbWF0aW9uRW5kZWQoZXZlbnQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoZXZlbnQudGFyZ2V0ICE9PSBkYXNoYm9hcmRWaWV3LmVsZW1lbnQpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5y
ZW1vdmVFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCk7
Ci0gICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUo
YW5pbWF0aW9uQ2xhc3MpOwotICAgICAgICAgICAgICAgIGNvbnRhaW5lci5fdXBkYXRlQWR2YW5j
ZUFycm93VmlzaWJpbGl0eSgpOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgZGFzaGJvYXJk
Vmlldy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoYW5pbWF0aW9uQ2xhc3MpOwogICAgICAgICAgICAg
ZGFzaGJvYXJkVmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVu
ZCIsIGFuaW1hdGlvbkVuZGVkKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBkYXNoYm9h
cmRWaWV3OwotICAgIH0sCisgICAgfQogCi0gICAgX2hpZGVEYXNoYm9hcmRWaWV3OiBmdW5jdGlv
bihkYXNoYm9hcmRWaWV3LCBhZHZhbmNlRGlyZWN0aW9uLCBjYWxsYmFjaykKKyAgICBfaGlkZURh
c2hib2FyZFZpZXcoZGFzaGJvYXJkVmlldywgYWR2YW5jZURpcmVjdGlvbiwgY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChkYXNoYm9hcmRWaWV3IGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLkRhc2hib2FyZFZpZXcpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmN1
cnJlbnREYXNoYm9hcmRWaWV3ID09PSBkYXNoYm9hcmRWaWV3KTsKQEAgLTIzNSwyNiArMjIwLDI3
IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICB2YXIgY29udGFpbmVyID0gdGhpczsKIAorICAgICAgICBmdW5jdGlvbiBhbmltYXRp
b25FbmRlZChldmVudCkgeworICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZGFzaGJv
YXJkVmlldy5lbGVtZW50KQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
ZGFzaGJvYXJkVmlldy5lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlv
bkVuZCIsIGFuaW1hdGlvbkVuZGVkKTsKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKGFuaW1hdGlvbkNsYXNzKTsKKyAgICAgICAgICAgIGRhc2hib2Fy
ZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250
YWluZXJWaWV3LlZpc2libGVEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICBj
b250YWluZXIuX3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKTsKKworICAgICAgICAgICAg
aWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgICAgICBjYWxs
YmFjaygpOworICAgICAgICB9CisKICAgICAgICAgaWYgKGFuaW1hdGlvbkNsYXNzKSB7Ci0gICAg
ICAgICAgICBmdW5jdGlvbiBhbmltYXRpb25FbmRlZChldmVudCkgewotICAgICAgICAgICAgICAg
IGlmIChldmVudC50YXJnZXQgIT09IGRhc2hib2FyZFZpZXcuZWxlbWVudCkKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50
LnJlbW92ZUV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVuZCIsIGFuaW1hdGlvbkVuZGVk
KTsKLSAgICAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZShhbmltYXRpb25DbGFzcyk7Ci0gICAgICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuVmlz
aWJsZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICAgICAgICAgICAgICBjb250YWluZXIu
X3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKTsKLQotICAgICAgICAgICAgICAgIGlmICh0
eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICAgICAgICAgIGNhbGxi
YWNrKCk7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChhbmltYXRpb25DbGFzcyk7CiAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0QW5pbWF0aW9uRW5kIiwgYW5pbWF0aW9u
RW5kZWQpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVu
dC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZp
c2libGVEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xv
c2VEYXNoYm9hcmRWaWV3OiBmdW5jdGlvbihkYXNoYm9hcmRWaWV3KQorICAgIF9jbG9zZURhc2hi
b2FyZFZpZXcoZGFzaGJvYXJkVmlldykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRh
c2hib2FyZFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyk7CiAKQEAg
LTI4MiwzICsyNjgsMTcgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGVBZHZhbmNlQXJyb3dWaXNpYmlsaXR5KCk7
CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuVmlzaWJs
ZURhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInZpc2libGUiOworV2ViSW5zcGVjdG9yLkRhc2hi
b2FyZENvbnRhaW5lclZpZXcuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSA9ICJpbmFjdGl2ZSI7CisK
K1dlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkFkdmFuY2VEaXJlY3Rpb24gPSB7
CisgICAgRm9yd2FyZDogU3ltYm9sKCJkYXNoYm9hcmQtY29udGFpbmVyLXZpZXctYWR2YW5jZS1k
aXJlY3Rpb24tZm9yd2FyZCIpLAorICAgIEJhY2t3YXJkOiBTeW1ib2woImRhc2hib2FyZC1jb250
YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1iYWNrd2FyZCIpLAorICAgIE5vbmU6IFN5bWJv
bCgiZGFzaGJvYXJkLWNvbnRhaW5lci12aWV3LWFkdmFuY2UtZGlyZWN0aW9uLW5vbmUiKQorfTsK
KworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuRm9yd2FyZEluY29taW5nRGFz
aGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUtaW4tZG93biI7CitXZWJJbnNwZWN0b3IuRGFz
aGJvYXJkQ29udGFpbmVyVmlldy5CYWNrd2FyZEluY29taW5nRGFzaGJvYXJkU3R5bGVDbGFzc05h
bWUgPSAic2xpZGUtaW4tdXAiOworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcu
Rm9yd2FyZE91dGdvaW5nRGFzaGJvYXJkU3R5bGVDbGFzc05hbWUgPSAic2xpZGUtb3V0LWRvd24i
OworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQmFja3dhcmRPdXRnb2luZ0Rh
c2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLW91dC11cCI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5q
cwppbmRleCBiNzM0NWMwLi42YWY5ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
MTAgKzIzLDI1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCwg
aWRlbnRpZmllcikKK1dlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3ID0gY2xhc3MgRGFzaGJvYXJk
VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBDcmVhdGluZyBhIG5l
dyBEYXNoYm9hcmRWaWV3IGRpcmVjdGx5IHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIHByb3Bl
ciBzdWJjbGFzcy4KLSAgICBpZiAodGhpcy5jb25zdHJ1Y3RvciA9PT0gV2ViSW5zcGVjdG9yLkRh
c2hib2FyZFZpZXcpIHsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCwgaWRlbnRp
ZmllcikKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlkZW50aWZpZXIpOworCisgICAg
ICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fcmVwcmVzZW50ZWRPYmplY3QgPSByZXByZXNl
bnRlZE9iamVjdDsKKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNw
ZWN0b3IuRGFzaGJvYXJkVmlldy5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmFkZChpZGVudGlmaWVyKTsKKyAgICB9CisKKyAgICAvLyBTdGF0aWMKKwor
ICAgIHN0YXRpYyBjcmVhdGUocmVwcmVzZW50ZWRPYmplY3QpCisgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7CiAKICAgICAgICAgaWYgKHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmQpCkBAIC00MSw1
MCArNTYsMzIgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcgPSBmdW5jdGlvbihyZXByZXNl
bnRlZE9iamVjdCwgaWRlbnRpZmllcikKICAgICAgICAgdGhyb3cgIkNhbid0IG1ha2UgYSBEYXNo
Ym9hcmRWaWV3IGZvciBhbiB1bmtub3duIHJlcHJlc2VudGVkT2JqZWN0LiI7CiAgICAgfQogCi0g
ICAgLy8gT3RoZXJ3aXNlLCBhIHN1YmNsYXNzIGlzIGNhbGxpbmcgdGhlIGJhc2UgY29uc3RydWN0
b3IuCi0gICAgY29uc29sZS5hc3NlcnQodGhpcy5jb25zdHJ1Y3RvciAhPT0gV2ViSW5zcGVjdG9y
LkRhc2hib2FyZFZpZXcgJiYgdGhpcyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRW
aWV3KTsKLSAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsKLQotICAgIC8vIEZJWE1FOiBD
b252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBz
dXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRo
aXMuX3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmplY3Q7Ci0KLSAgICB0aGlzLl9l
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LlN0eWxlQ2xhc3NOYW1l
KTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoaWRlbnRpZmllcik7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5TdHlsZUNsYXNzTmFtZSA9ICJkYXNoYm9hcmQiOwot
Ci1XZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGUsCi0KICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHJlcHJlc2VudGVkT2JqZWN0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9yZXByZXNlbnRlZE9iamVjdDsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlv
bigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRl
bigpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0s
CisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAg
ICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgfQogfTsKKworV2ViSW5z
cGVjdG9yLkRhc2hib2FyZFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZGFzaGJvYXJkIjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlk
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQu
anMKaW5kZXggZTUyZDg3Yy4uM2M4ODYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsMTgxICsyMywxNjggQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRh
dGFHcmlkID0gZnVuY3Rpb24oY29sdW1uc0RhdGEsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJh
Y2ssIHByZWZlcnJlZENvbHVtbk9yZGVyKQorV2ViSW5zcGVjdG9yLkRhdGFHcmlkID0gY2xhc3Mg
RGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgdGhpcy5jb2x1bW5z
ID0gbmV3IE1hcDsKLSAgICB0aGlzLm9yZGVyZWRDb2x1bW5zID0gW107Ci0KLSAgICB0aGlzLl9z
b3J0Q29sdW1uSWRlbnRpZmllciA9IG51bGw7Ci0gICAgdGhpcy5fc29ydE9yZGVyID0gV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRlci5JbmRldGVybWluYXRlOwotCi0gICAgdGhpcy5jaGls
ZHJlbiA9IFtdOwotICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbnVsbDsKLSAgICB0aGlzLmV4cGFu
ZE5vZGVzV2hlbkFycm93aW5nID0gZmFsc2U7Ci0gICAgdGhpcy5yb290ID0gdHJ1ZTsKLSAgICB0
aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7Ci0gICAgdGhpcy5leHBhbmRlZCA9IHRydWU7Ci0gICAg
dGhpcy5yZXZlYWxlZCA9IHRydWU7Ci0gICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlOwotICAgIHRo
aXMuZGF0YUdyaWQgPSB0aGlzOwotICAgIHRoaXMuaW5kZW50V2lkdGggPSAxNTsKLSAgICB0aGlz
LnJlc2l6ZXJzID0gW107Ci0gICAgdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgPSBmYWxz
ZTsKLQotICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgIHRoaXMuZWxlbWVudC5jbGFzc05hbWUgPSAiZGF0YS1ncmlkIjsKLSAgICB0aGlzLmVsZW1l
bnQudGFiSW5kZXggPSAwOwotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlk
b3duIiwgdGhpcy5fa2V5RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgdGhpcy5lbGVtZW50
LmNvcHlIYW5kbGVyID0gdGhpczsKLQotICAgIHRoaXMuX2hlYWRlclRhYmxlRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7Ci0gICAgdGhpcy5faGVhZGVyVGFibGVFbGVt
ZW50LmNsYXNzTmFtZSA9ICJoZWFkZXIiOwotICAgIHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3Jv
dXBFbGVtZW50ID0gdGhpcy5faGVhZGVyVGFibGVFbGVtZW50LmNyZWF0ZUNoaWxkKCJjb2xncm91
cCIpOwotICAgIHRoaXMuX2hlYWRlclRhYmxlQm9keUVsZW1lbnQgPSB0aGlzLl9oZWFkZXJUYWJs
ZUVsZW1lbnQuY3JlYXRlQ2hpbGQoInRib2R5Iik7Ci0gICAgdGhpcy5faGVhZGVyVGFibGVSb3dF
bGVtZW50ID0gdGhpcy5faGVhZGVyVGFibGVCb2R5RWxlbWVudC5jcmVhdGVDaGlsZCgidHIiKTsK
LSAgICB0aGlzLl9oZWFkZXJUYWJsZUNlbGxFbGVtZW50cyA9IG5ldyBNYXA7Ci0KLSAgICB0aGlz
Ll9zY3JvbGxDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0gICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5jbGFzc05hbWUgPSAiZGF0YS1jb250
YWluZXIiOwotCi0gICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudCA9IHRoaXMuX3Njcm9sbENvbnRh
aW5lckVsZW1lbnQuY3JlYXRlQ2hpbGQoInRhYmxlIik7Ci0gICAgdGhpcy5fZGF0YVRhYmxlRWxl
bWVudC5jbGFzc05hbWUgPSAiZGF0YSI7Ci0KLSAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93bkluRGF0YVRhYmxlLmJp
bmQodGhpcykpOwotICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9jbGlja0luRGF0YVRhYmxlLmJpbmQodGhpcykpOwotICAgIHRoaXMuX2Rh
dGFUYWJsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9jb250
ZXh0TWVudUluRGF0YVRhYmxlLmJpbmQodGhpcyksIHRydWUpOwotCi0gICAgLy8gRklYTUU6IEFk
ZCBhIGNyZWF0ZUNhbGxiYWNrIHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIGVkaXRDYWxsYmFjayBh
bmQgaGFzIGRpZmZlcmVudAotICAgIC8vIGJlaGF2aW9yIHdoZW4gY3JlYXRpbmcgYSBuZXcgbm9k
ZS4KLSAgICBpZiAoZWRpdENhbGxiYWNrKSB7Ci0gICAgICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLl9vbmRibGNsaWNrLmJpbmQodGhp
cyksIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fZWRpdENhbGxiYWNrID0gZWRpdENhbGxiYWNrOwot
ICAgIH0KLSAgICBpZiAoZGVsZXRlQ2FsbGJhY2spCi0gICAgICAgIHRoaXMuX2RlbGV0ZUNhbGxi
YWNrID0gZGVsZXRlQ2FsbGJhY2s7Ci0KLSAgICB0aGlzLl9kYXRhVGFibGVDb2x1bW5Hcm91cEVs
ZW1lbnQgPSB0aGlzLl9oZWFkZXJUYWJsZUNvbHVtbkdyb3VwRWxlbWVudC5jbG9uZU5vZGUodHJ1
ZSk7Ci0gICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhVGFi
bGVDb2x1bW5Hcm91cEVsZW1lbnQpOwotCi0gICAgLy8gVGhpcyBlbGVtZW50IGlzIHVzZWQgYnkg
RGF0YUdyaWROb2RlcyB0byBtYW5pcHVsYXRlIHRhYmxlIHJvd3MgYW5kIGNlbGxzLgotICAgIHRo
aXMuZGF0YVRhYmxlQm9keUVsZW1lbnQgPSB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmNyZWF0ZUNo
aWxkKCJ0Ym9keSIpOwotICAgIHRoaXMuX2ZpbGxlclJvd0VsZW1lbnQgPSB0aGlzLmRhdGFUYWJs
ZUJvZHlFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0ciIpOwotICAgIHRoaXMuX2ZpbGxlclJvd0VsZW1l
bnQuY2xhc3NOYW1lID0gImZpbGxlciI7Ci0KLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5faGVhZGVyVGFibGVFbGVtZW50KTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudCk7Ci0KLSAgICBpZiAocHJlZmVycmVkQ29sdW1u
T3JkZXIpIHsKLSAgICAgICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBvZiBwcmVmZXJyZWRD
b2x1bW5PcmRlcikKLSAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29sdW1uKGNvbHVtbklkZW50aWZp
ZXIsIGNvbHVtbnNEYXRhW2NvbHVtbklkZW50aWZpZXJdKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIGluIGNvbHVtbnNEYXRhKQotICAgICAgICAgICAg
dGhpcy5pbnNlcnRDb2x1bW4oY29sdW1uSWRlbnRpZmllciwgY29sdW1uc0RhdGFbY29sdW1uSWRl
bnRpZmllcl0pOwotICAgIH0KLQotICAgIHRoaXMuX2dlbmVyYXRlU29ydEluZGljYXRvckltYWdl
c0lmTmVlZGVkKCk7Ci19CisgICAgY29uc3RydWN0b3IoY29sdW1uc0RhdGEsIGVkaXRDYWxsYmFj
aywgZGVsZXRlQ2FsbGJhY2ssIHByZWZlcnJlZENvbHVtbk9yZGVyKQorICAgIHsKKyAgICAgICAg
c3VwZXIoKTsKIAotV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50ID0gewotICAgIERpZExheW91
dDogImRhdGFncmlkLWRpZC1sYXlvdXQiLAotICAgIFNvcnRDaGFuZ2VkOiAiZGF0YWdyaWQtc29y
dC1jaGFuZ2VkIiwKLSAgICBTZWxlY3RlZE5vZGVDaGFuZ2VkOiAiZGF0YWdyaWQtc2VsZWN0ZWQt
bm9kZS1jaGFuZ2VkIiwKLSAgICBFeHBhbmRlZE5vZGU6ICJkYXRhZ3JpZC1leHBhbmRlZC1ub2Rl
IiwKLSAgICBDb2xsYXBzZWROb2RlOiAiZGF0YWdyaWQtY29sbGFwc2VkLW5vZGUiCi19OworICAg
ICAgICB0aGlzLmNvbHVtbnMgPSBuZXcgTWFwOworICAgICAgICB0aGlzLm9yZGVyZWRDb2x1bW5z
ID0gW107CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIgPSB7Ci0gICAgSW5kZXRl
cm1pbmF0ZTogImRhdGEtZ3JpZC1zb3J0LW9yZGVyLWluZGV0ZXJtaW5hdGUiLAotICAgIEFzY2Vu
ZGluZzogImRhdGEtZ3JpZC1zb3J0LW9yZGVyLWFzY2VuZGluZyIsCi0gICAgRGVzY2VuZGluZzog
ImRhdGEtZ3JpZC1zb3J0LW9yZGVyLWRlc2NlbmRpbmciCi19OworICAgICAgICB0aGlzLl9zb3J0
Q29sdW1uSWRlbnRpZmllciA9IG51bGw7CisgICAgICAgIHRoaXMuX3NvcnRPcmRlciA9IFdlYklu
c3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuSW5kZXRlcm1pbmF0ZTsKIAotV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLlByZXZpb3VzQ29sdW1uT3JkaW5hbFN5bWJvbCA9IFN5bWJvbCgicHJldmlvdXMt
Y29sdW1uLW9yZGluYWwiKTsKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5OZXh0Q29sdW1uT3JkaW5h
bFN5bWJvbCA9IFN5bWJvbCgibmV4dC1jb2x1bW4tb3JkaW5hbCIpOworICAgICAgICB0aGlzLmNo
aWxkcmVuID0gW107CisgICAgICAgIHRoaXMuc2VsZWN0ZWROb2RlID0gbnVsbDsKKyAgICAgICAg
dGhpcy5leHBhbmROb2Rlc1doZW5BcnJvd2luZyA9IGZhbHNlOworICAgICAgICB0aGlzLnJvb3Qg
PSB0cnVlOworICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7CisgICAgICAgIHRoaXMu
ZXhwYW5kZWQgPSB0cnVlOworICAgICAgICB0aGlzLnJldmVhbGVkID0gdHJ1ZTsKKyAgICAgICAg
dGhpcy5zZWxlY3RlZCA9IGZhbHNlOworICAgICAgICB0aGlzLmRhdGFHcmlkID0gdGhpczsKKyAg
ICAgICAgdGhpcy5pbmRlbnRXaWR0aCA9IDE1OworICAgICAgICB0aGlzLnJlc2l6ZXJzID0gW107
CisgICAgICAgIHRoaXMuX2NvbHVtbldpZHRoc0luaXRpYWxpemVkID0gZmFsc2U7CiAKLVdlYklu
c3BlY3Rvci5EYXRhR3JpZC5Tb3J0Q29sdW1uQXNjZW5kaW5nU3R5bGVDbGFzc05hbWUgPSAic29y
dC1hc2NlbmRpbmciOwotV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRDb2x1bW5EZXNjZW5kaW5n
U3R5bGVDbGFzc05hbWUgPSAic29ydC1kZXNjZW5kaW5nIjsKLVdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5Tb3J0YWJsZUNvbHVtblN0eWxlQ2xhc3NOYW1lID0gInNvcnRhYmxlIjsKKyAgICAgICAgdGhp
cy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc05hbWUgPSAiZGF0YS1ncmlkIjsKKyAgICAgICAgdGhpcy5lbGVtZW50LnRh
YkluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRv
d24iLCB0aGlzLl9rZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LmNvcHlIYW5kbGVyID0gdGhpczsKKworICAgICAgICB0aGlzLl9oZWFkZXJUYWJsZUVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOworICAgICAgICB0aGlzLl9oZWFk
ZXJUYWJsZUVsZW1lbnQuY2xhc3NOYW1lID0gImhlYWRlciI7CisgICAgICAgIHRoaXMuX2hlYWRl
clRhYmxlQ29sdW1uR3JvdXBFbGVtZW50ID0gdGhpcy5faGVhZGVyVGFibGVFbGVtZW50LmNyZWF0
ZUNoaWxkKCJjb2xncm91cCIpOworICAgICAgICB0aGlzLl9oZWFkZXJUYWJsZUJvZHlFbGVtZW50
ID0gdGhpcy5faGVhZGVyVGFibGVFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0Ym9keSIpOworICAgICAg
ICB0aGlzLl9oZWFkZXJUYWJsZVJvd0VsZW1lbnQgPSB0aGlzLl9oZWFkZXJUYWJsZUJvZHlFbGVt
ZW50LmNyZWF0ZUNoaWxkKCJ0ciIpOworICAgICAgICB0aGlzLl9oZWFkZXJUYWJsZUNlbGxFbGVt
ZW50cyA9IG5ldyBNYXA7CisKKyAgICAgICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9zY3JvbGxDb250
YWluZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhLWNvbnRhaW5lciI7CisKKyAgICAgICAgdGhp
cy5fZGF0YVRhYmxlRWxlbWVudCA9IHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQuY3JlYXRl
Q2hpbGQoInRhYmxlIik7CisgICAgICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuY2xhc3NOYW1l
ID0gImRhdGEiOworCisgICAgICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duSW5EYXRhVGFibGUuYmluZCh0aGlzKSk7
CisgICAgICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLl9jbGlja0luRGF0YVRhYmxlLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9kYXRh
VGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5fY29udGV4
dE1lbnVJbkRhdGFUYWJsZS5iaW5kKHRoaXMpLCB0cnVlKTsKKworICAgICAgICAvLyBGSVhNRTog
QWRkIGEgY3JlYXRlQ2FsbGJhY2sgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gZWRpdENhbGxiYWNr
IGFuZCBoYXMgZGlmZmVyZW50CisgICAgICAgIC8vIGJlaGF2aW9yIHdoZW4gY3JlYXRpbmcgYSBu
ZXcgbm9kZS4KKyAgICAgICAgaWYgKGVkaXRDYWxsYmFjaykgeworICAgICAgICAgICAgdGhpcy5f
ZGF0YVRhYmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIHRoaXMuX29uZGJs
Y2xpY2suYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICAgICAgdGhpcy5fZWRpdENhbGxiYWNr
ID0gZWRpdENhbGxiYWNrOworICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5jcmVh
dGVTb3J0YWJsZURhdGFHcmlkID0gZnVuY3Rpb24oY29sdW1uTmFtZXMsIHZhbHVlcykKLXsKLSAg
ICB2YXIgbnVtQ29sdW1ucyA9IGNvbHVtbk5hbWVzLmxlbmd0aDsKLSAgICBpZiAoIW51bUNvbHVt
bnMpCi0gICAgICAgIHJldHVybiBudWxsOwotCi0gICAgdmFyIGNvbHVtbnNEYXRhID0ge307Ci0g
ICAgZm9yICh2YXIgY29sdW1uTmFtZSBvZiBjb2x1bW5OYW1lcykgewotICAgICAgICBjb2x1bW5z
RGF0YVtjb2x1bW5OYW1lXSA9IHsKLSAgICAgICAgICAgIHdpZHRoOiBjb2x1bW5OYW1lLmxlbmd0
aCwKLSAgICAgICAgICAgIHRpdGxlOiBjb2x1bW5OYW1lLAotICAgICAgICAgICAgc29ydGFibGU6
IHRydWUsCi0gICAgICAgIH07Ci0gICAgfQorICAgICAgICBpZiAoZGVsZXRlQ2FsbGJhY2spCisg
ICAgICAgICAgICB0aGlzLl9kZWxldGVDYWxsYmFjayA9IGRlbGV0ZUNhbGxiYWNrOworCisgICAg
ICAgIHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudCA9IHRoaXMuX2hlYWRlclRhYmxl
Q29sdW1uR3JvdXBFbGVtZW50LmNsb25lTm9kZSh0cnVlKTsKKyAgICAgICAgdGhpcy5fZGF0YVRh
YmxlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhVGFibGVDb2x1bW5Hcm91cEVsZW1lbnQp
OwogCi0gICAgdmFyIGRhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5z
RGF0YSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGNvbHVtbk5hbWVzKTsKLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHZhbHVlcy5sZW5ndGggLyBudW1Db2x1bW5zOyArK2kpIHsKLSAgICAgICAgdmFy
IGRhdGEgPSB7fTsKLSAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjb2x1bW5OYW1lcy5sZW5n
dGg7ICsraikKLSAgICAgICAgICAgIGRhdGFbY29sdW1uTmFtZXNbal1dID0gdmFsdWVzW251bUNv
bHVtbnMgKiBpICsgal07CisgICAgICAgIC8vIFRoaXMgZWxlbWVudCBpcyB1c2VkIGJ5IERhdGFH
cmlkTm9kZXMgdG8gbWFuaXB1bGF0ZSB0YWJsZSByb3dzIGFuZCBjZWxscy4KKyAgICAgICAgdGhp
cy5kYXRhVGFibGVCb2R5RWxlbWVudCA9IHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuY3JlYXRlQ2hp
bGQoInRib2R5Iik7CisgICAgICAgIHRoaXMuX2ZpbGxlclJvd0VsZW1lbnQgPSB0aGlzLmRhdGFU
YWJsZUJvZHlFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0ciIpOworICAgICAgICB0aGlzLl9maWxsZXJS
b3dFbGVtZW50LmNsYXNzTmFtZSA9ICJmaWxsZXIiOwogCi0gICAgICAgIHZhciBub2RlID0gbmV3
IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSwgZmFsc2UpOwotICAgICAgICBub2RlLnNl
bGVjdGFibGUgPSBmYWxzZTsKLSAgICAgICAgZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQp
OworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2Nyb2xsQ29udGFpbmVy
RWxlbWVudCk7CisKKyAgICAgICAgaWYgKHByZWZlcnJlZENvbHVtbk9yZGVyKSB7CisgICAgICAg
ICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIG9mIHByZWZlcnJlZENvbHVtbk9yZGVyKQor
ICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0Q29sdW1uKGNvbHVtbklkZW50aWZpZXIsIGNvbHVt
bnNEYXRhW2NvbHVtbklkZW50aWZpZXJdKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1uc0RhdGEpCisgICAgICAgICAgICAg
ICAgdGhpcy5pbnNlcnRDb2x1bW4oY29sdW1uSWRlbnRpZmllciwgY29sdW1uc0RhdGFbY29sdW1u
SWRlbnRpZmllcl0pOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTb3J0SW5k
aWNhdG9ySW1hZ2VzSWZOZWVkZWQoKTsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBzb3J0RGF0YUdy
aWQoKQorICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIGNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQo
Y29sdW1uTmFtZXMsIHZhbHVlcykKICAgICB7Ci0gICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRp
ZmllciA9IGRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyOworICAgICAgICB2YXIgbnVtQ29s
dW1ucyA9IGNvbHVtbk5hbWVzLmxlbmd0aDsKKyAgICAgICAgaWYgKCFudW1Db2x1bW5zKQorICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgdmFyIGNvbHVtbnNEYXRhID0ge307Cisg
ICAgICAgIGZvciAodmFyIGNvbHVtbk5hbWUgb2YgY29sdW1uTmFtZXMpIHsKKyAgICAgICAgICAg
IGNvbHVtbnNEYXRhW2NvbHVtbk5hbWVdID0geworICAgICAgICAgICAgICAgIHdpZHRoOiBjb2x1
bW5OYW1lLmxlbmd0aCwKKyAgICAgICAgICAgICAgICB0aXRsZTogY29sdW1uTmFtZSwKKyAgICAg
ICAgICAgICAgICBzb3J0YWJsZTogdHJ1ZSwKKyAgICAgICAgICAgIH07CisgICAgICAgIH0KKwor
ICAgICAgICB2YXIgZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnNE
YXRhLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHZhbHVlcy5sZW5ndGggLyBudW1Db2x1bW5zOyArK2kpIHsKKyAgICAgICAg
ICAgIHZhciBkYXRhID0ge307CisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbHVt
bk5hbWVzLmxlbmd0aDsgKytqKQorICAgICAgICAgICAgICAgIGRhdGFbY29sdW1uTmFtZXNbal1d
ID0gdmFsdWVzW251bUNvbHVtbnMgKiBpICsgal07CiAKLSAgICAgICAgdmFyIGNvbHVtbklzTnVt
ZXJpYyA9IHRydWU7Ci0gICAgICAgIGZvciAodmFyIG5vZGUgb2YgZGF0YUdyaWQuY2hpbGRyZW4p
IHsKLSAgICAgICAgICAgIHZhciB2YWx1ZSA9IGRhdGFHcmlkLnRleHRGb3JEYXRhR3JpZE5vZGVD
b2x1bW4obm9kZSwgc29ydENvbHVtbklkZW50aWZpZXIpOwotICAgICAgICAgICAgaWYgKGlzTmFO
KE51bWJlcih2YWx1ZSkpKQotICAgICAgICAgICAgICAgIGNvbHVtbklzTnVtZXJpYyA9IGZhbHNl
OworICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZShk
YXRhLCBmYWxzZSk7CisgICAgICAgICAgICBub2RlLnNlbGVjdGFibGUgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGRhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGUpOwogICAgICAgICB9CiAKLSAgICAgICAg
ZnVuY3Rpb24gY29tcGFyYXRvcihkYXRhR3JpZE5vZGUxLCBkYXRhR3JpZE5vZGUyKQorICAgICAg
ICBmdW5jdGlvbiBzb3J0RGF0YUdyaWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgaXRl
bTEgPSBkYXRhR3JpZC50ZXh0Rm9yRGF0YUdyaWROb2RlQ29sdW1uKGRhdGFHcmlkTm9kZTEsIHNv
cnRDb2x1bW5JZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHZhciBpdGVtMiA9IGRhdGFHcmlkLnRl
eHRGb3JEYXRhR3JpZE5vZGVDb2x1bW4oZGF0YUdyaWROb2RlMiwgc29ydENvbHVtbklkZW50aWZp
ZXIpOwotCi0gICAgICAgICAgICB2YXIgY29tcGFyaXNvbjsKLSAgICAgICAgICAgIGlmIChjb2x1
bW5Jc051bWVyaWMpIHsKLSAgICAgICAgICAgICAgICB2YXIgbnVtYmVyMSA9IHBhcnNlRmxvYXQo
aXRlbTEpOwotICAgICAgICAgICAgICAgIHZhciBudW1iZXIyID0gcGFyc2VGbG9hdChpdGVtMik7
Ci0gICAgICAgICAgICAgICAgY29tcGFyaXNvbiA9IG51bWJlcjEgPCBudW1iZXIyID8gLTEgOiAo
bnVtYmVyMSA+IG51bWJlcjIgPyAxIDogMCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICBjb21wYXJpc29uID0gaXRlbTEgPCBpdGVtMiA/IC0xIDogKGl0ZW0xID4gaXRlbTIg
PyAxIDogMCk7Ci0KLSAgICAgICAgICAgIHJldHVybiBjb21wYXJpc29uOworICAgICAgICAgICAg
dmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXI7
CisKKyAgICAgICAgICAgIHZhciBjb2x1bW5Jc051bWVyaWMgPSB0cnVlOworICAgICAgICAgICAg
Zm9yICh2YXIgbm9kZSBvZiBkYXRhR3JpZC5jaGlsZHJlbikgeworICAgICAgICAgICAgICAgIHZh
ciB2YWx1ZSA9IGRhdGFHcmlkLnRleHRGb3JEYXRhR3JpZE5vZGVDb2x1bW4obm9kZSwgc29ydENv
bHVtbklkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIGlmIChpc05hTihOdW1iZXIodmFsdWUp
KSkKKyAgICAgICAgICAgICAgICAgICAgY29sdW1uSXNOdW1lcmljID0gZmFsc2U7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIGNvbXBhcmF0b3IoZGF0YUdyaWROb2RlMSwg
ZGF0YUdyaWROb2RlMikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgaXRlbTEg
PSBkYXRhR3JpZC50ZXh0Rm9yRGF0YUdyaWROb2RlQ29sdW1uKGRhdGFHcmlkTm9kZTEsIHNvcnRD
b2x1bW5JZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICB2YXIgaXRlbTIgPSBkYXRhR3JpZC50
ZXh0Rm9yRGF0YUdyaWROb2RlQ29sdW1uKGRhdGFHcmlkTm9kZTIsIHNvcnRDb2x1bW5JZGVudGlm
aWVyKTsKKworICAgICAgICAgICAgICAgIHZhciBjb21wYXJpc29uOworICAgICAgICAgICAgICAg
IGlmIChjb2x1bW5Jc051bWVyaWMpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG51bWJlcjEg
PSBwYXJzZUZsb2F0KGl0ZW0xKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG51bWJlcjIgPSBw
YXJzZUZsb2F0KGl0ZW0yKTsKKyAgICAgICAgICAgICAgICAgICAgY29tcGFyaXNvbiA9IG51bWJl
cjEgPCBudW1iZXIyID8gLTEgOiAobnVtYmVyMSA+IG51bWJlcjIgPyAxIDogMCk7CisgICAgICAg
ICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIGNvbXBhcmlzb24gPSBpdGVtMSA8
IGl0ZW0yID8gLTEgOiAoaXRlbTEgPiBpdGVtMiA/IDEgOiAwKTsKKworICAgICAgICAgICAgICAg
IHJldHVybiBjb21wYXJpc29uOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkYXRhR3Jp
ZC5zb3J0Tm9kZXMoY29tcGFyYXRvcik7CiAgICAgICAgIH0KIAotICAgICAgICBkYXRhR3JpZC5z
b3J0Tm9kZXMoY29tcGFyYXRvcik7Ci0gICAgfQorICAgICAgICBkYXRhR3JpZC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5Tb3J0Q2hhbmdlZCwgc29ydERhdGFH
cmlkLCB0aGlzKTsKIAotICAgIGRhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLkV2ZW50LlNvcnRDaGFuZ2VkLCBzb3J0RGF0YUdyaWQsIHRoaXMpOworICAgICAg
ICBkYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFz
Y2VuZGluZzsKKyAgICAgICAgZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgPSBjb2x1bW5O
YW1lc1swXTsKIAotICAgIGRhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOwotICAgIGRhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVy
ID0gY29sdW1uTmFtZXNbMF07CisgICAgICAgIHJldHVybiBkYXRhR3JpZDsKKyAgICB9CiAKLSAg
ICByZXR1cm4gZGF0YUdyaWQ7Ci19CisgICAgLy8gUHVibGljCiAKLVdlYkluc3BlY3Rvci5EYXRh
R3JpZC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHJlZnJlc2hDYWxsYmFjaygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fcmVmcmVzaENhbGxiYWNrOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IHJlZnJlc2hDYWxsYmFjayhyZWZyZXNoQ2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlz
Ll9yZWZyZXNoQ2FsbGJhY2sgPSByZWZyZXNoQ2FsbGJhY2s7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgc29ydE9yZGVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3J0T3JkZXI7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc29ydE9yZGVyKG9yZGVyKQogICAgIHsKQEAgLTIx
NSwxMiArMjAyLDEyIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHNvcnRIZWFkZXJDZWxsRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5Tb3J0Q29sdW1uRGVzY2VuZGluZ1N0eWxlQ2xhc3NOYW1lLCB0aGlzLl9zb3J0T3Jk
ZXIgPT09IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuRGVzY2VuZGluZyk7CiAKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LkV2ZW50LlNvcnRDaGFuZ2VkKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzb3J0Q29sdW1u
SWRlbnRpZmllcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc29ydENvbHVtbklkZW50
aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc29ydENvbHVtbklkZW50aWZpZXIoY29s
dW1uSWRlbnRpZmllcikKICAgICB7CkBAIC0yNDYsMTcgKzIzMywxNyBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNvcnRDaGFuZ2Vk
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9vbmRibGNsaWNrOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfb25kYmxjbGljayhldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lZGl0aW5nIHx8
IHRoaXMuX2VkaXRpbmdOb2RlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
X3N0YXJ0RWRpdGluZyhldmVudC50YXJnZXQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0YXJ0
RWRpdGluZ05vZGVBdENvbHVtbkluZGV4OiBmdW5jdGlvbihub2RlLCBjb2x1bW5JbmRleCkKKyAg
ICBfc3RhcnRFZGl0aW5nTm9kZUF0Q29sdW1uSW5kZXgobm9kZSwgY29sdW1uSW5kZXgpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChub2RlLCAiSW52YWxpZCBhcmd1bWVudDogbXVzdCBw
cm92aWRlIERhdGFHcmlkTm9kZSB0byBlZGl0LiIpOwogCkBAIC0yNjcsOSArMjU0LDkgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSB0
aGlzLl9lZGl0aW5nTm9kZS5fZWxlbWVudC5jaGlsZHJlbltjb2x1bW5JbmRleF07CiAgICAgICAg
IFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcoZWxlbWVudCwgdGhpcy5fc3RhcnRFZGl0aW5nQ29u
ZmlnKGVsZW1lbnQpKTsKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRF
eHRlbnQoZWxlbWVudCwgMCwgZWxlbWVudCwgMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3Rh
cnRFZGl0aW5nOiBmdW5jdGlvbih0YXJnZXQpCisgICAgX3N0YXJ0RWRpdGluZyh0YXJnZXQpCiAg
ICAgewogICAgICAgICB2YXIgZWxlbWVudCA9IHRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0
aE5vZGVOYW1lKCJ0ZCIpOwogICAgICAgICBpZiAoIWVsZW1lbnQpCkBAIC0yOTAsMTQgKzI3Nywx
NCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNw
ZWN0b3Iuc3RhcnRFZGl0aW5nKGVsZW1lbnQsIHRoaXMuX3N0YXJ0RWRpdGluZ0NvbmZpZyhlbGVt
ZW50KSk7CiAKICAgICAgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQo
ZWxlbWVudCwgMCwgZWxlbWVudCwgMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhcnRFZGl0
aW5nQ29uZmlnOiBmdW5jdGlvbihlbGVtZW50KQorICAgIF9zdGFydEVkaXRpbmdDb25maWcoZWxl
bWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkVkaXRpbmdDb25m
aWcodGhpcy5fZWRpdGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2Vs
bGVkLmJpbmQodGhpcyksIGVsZW1lbnQudGV4dENvbnRlbnQpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2VkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1RleHQsIG9sZFRleHQs
IGNvbnRleHQsIG1vdmVEaXJlY3Rpb24pCisgICAgX2VkaXRpbmdDb21taXR0ZWQoZWxlbWVudCwg
bmV3VGV4dCwgb2xkVGV4dCwgY29udGV4dCwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAg
IHZhciBjb2x1bW5JZGVudGlmaWVyID0gZWxlbWVudC5fX2NvbHVtbklkZW50aWZpZXI7CiAgICAg
ICAgIHZhciBjb2x1bW5JbmRleCA9IHRoaXMub3JkZXJlZENvbHVtbnMuaW5kZXhPZihjb2x1bW5J
ZGVudGlmaWVyKTsKQEAgLTM0OCwxNiArMzM1LDE2IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHRleHREaWRDaGFuZ2UgPSB0ZXh0QmVmb3JlRWRp
dGluZy50cmltKCkgIT09IG5ld1RleHQudHJpbSgpOwogICAgICAgICBtb3ZlVG9OZXh0Q2VsbC5j
YWxsKHRoaXMsIHRleHREaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX2VkaXRpbmdD
YW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgX2VkaXRpbmdDYW5jZWxsZWQoZWxlbWVu
dCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2VkaXRpbmdOb2RlLmVsZW1l
bnQgPT09IGVsZW1lbnQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidHIiKSk7CiAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9lZGl0aW5nOwogICAgICAgICB0aGlzLl9lZGl0aW5nTm9kZSA9
IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhdXRvU2l6ZUNvbHVtbnM6IGZ1bmN0aW9uKG1p
blBlcmNlbnQsIG1heFBlcmNlbnQsIG1heERlc2NlbnRMZXZlbCkKKyAgICBhdXRvU2l6ZUNvbHVt
bnMobWluUGVyY2VudCwgbWF4UGVyY2VudCwgbWF4RGVzY2VudExldmVsKQogICAgIHsKICAgICAg
ICAgaWYgKG1pblBlcmNlbnQpCiAgICAgICAgICAgICBtaW5QZXJjZW50ID0gTWF0aC5taW4obWlu
UGVyY2VudCwgTWF0aC5mbG9vcigxMDAgLyB0aGlzLm9yZGVyZWRDb2x1bW5zLmxlbmd0aCkpOwpA
QCAtNDIyLDkgKzQwOSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBjb2x1bW5bImVsZW1lbnQiXS5zdHlsZS53aWR0aCA9IHdpZHRoc1tpZGVudGlm
aWVyXSArICIlIjsKICAgICAgICAgdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgPSBmYWxz
ZTsKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGlu
c2VydENvbHVtbjogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgY29sdW1uRGF0YSwgaW5zZXJ0
aW9uSW5kZXgpCisgICAgaW5zZXJ0Q29sdW1uKGNvbHVtbklkZW50aWZpZXIsIGNvbHVtbkRhdGEs
IGluc2VydGlvbkluZGV4KQogICAgIHsKICAgICAgICAgaWYgKGluc2VydGlvbkluZGV4ID09PSB1
bmRlZmluZWQpCiAgICAgICAgICAgICBpbnNlcnRpb25JbmRleCA9IHRoaXMub3JkZXJlZENvbHVt
bnMubGVuZ3RoOwpAQCAtNTE2LDkgKzUwMyw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKGNvbHVtblsiaGlkZGVuIl0pCiAgICAgICAgICAgICB0
aGlzLl9oaWRlQ29sdW1uKGNvbHVtbklkZW50aWZpZXIpOwotICAgIH0sCisgICAgfQogCi0gICAg
cmVtb3ZlQ29sdW1uOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIHJlbW92ZUNvbHVt
bihjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5j
b2x1bW5zLmhhcyhjb2x1bW5JZGVudGlmaWVyKSk7CiAgICAgICAgIHZhciByZW1vdmVkQ29sdW1u
ID0gdGhpcy5jb2x1bW5zLmdldChjb2x1bW5JZGVudGlmaWVyKTsKQEAgLTU1MCw5ICs1MzcsOSBA
QCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIGZvciAodmFy
IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pCiAgICAgICAgICAgICBjaGlsZC5yZWZyZXNoKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfZW51bWVyYXRlQ2hpbGRyZW46IGZ1bmN0aW9uKHJvb3ROb2Rl
LCByZXN1bHQsIG1heExldmVsKQorICAgIF9lbnVtZXJhdGVDaGlsZHJlbihyb290Tm9kZSwgcmVz
dWx0LCBtYXhMZXZlbCkKICAgICB7CiAgICAgICAgIGlmICghcm9vdE5vZGUucm9vdCkKICAgICAg
ICAgICAgIHJlc3VsdC5wdXNoKHJvb3ROb2RlKTsKQEAgLTU2MSw3ICs1NDgsNyBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHJvb3ROb2RlLmNoaWxkcmVuLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5fZW51bWVy
YXRlQ2hpbGRyZW4ocm9vdE5vZGUuY2hpbGRyZW5baV0sIHJlc3VsdCwgbWF4TGV2ZWwgLSAxKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFVwZGF0ZXMg
dGhlIHdpZHRocyBvZiB0aGUgdGFibGUsIGluY2x1ZGluZyB0aGUgcG9zaXRpb25zIG9mIHRoZSBj
b2x1bW4KICAgICAvLyByZXNpemVycy4KQEAgLTU3Myw3ICs1NjAsNyBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgIC8vCiAgICAgLy8gSWYgdGhpcyBmdW5jdGlvbiBp
cyBub3QgY2FsbGVkIGFmdGVyIHRoZSBEYXRhR3JpZCBpcyBhdHRhY2hlZCB0byBpdHMKICAgICAv
LyBwYXJlbnQgZWxlbWVudCwgdGhlbiB0aGUgRGF0YUdyaWQncyBjb2x1bW5zIHdpbGwgbm90IGJl
IHJlc2l6YWJsZS4KLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlv
dXQoKQogICAgIHsKICAgICAgICAgLy8gRG8gbm90IGF0dGVtcHQgdG8gdXNlIG9mZnNldGVzIGlm
IHdlJ3JlIG5vdCBhdHRhY2hlZCB0byB0aGUgZG9jdW1lbnQgdHJlZSB5ZXQuCiAgICAgICAgIGlm
ICghdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgJiYgdGhpcy5lbGVtZW50Lm9mZnNldFdp
ZHRoKSB7CkBAIC02MDIsOSArNTg5LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICB0aGlzLl9wb3NpdGlvblJlc2l6ZXJFbGVtZW50cygpOwogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZl
bnQuRGlkTGF5b3V0KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbHVtbldpZHRoc01hcDogZnVu
Y3Rpb24oKQorICAgIGNvbHVtbldpZHRoc01hcCgpCiAgICAgewogICAgICAgICB2YXIgcmVzdWx0
ID0ge307CiAgICAgICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29s
dW1ucykgewpAQCAtNjEyLDkgKzU5OSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXN1bHRbY29sdW1uSWRlbnRpZmllcl0gPSBwYXJzZUZsb2F0
KHdpZHRoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCisgICAg
fQogCi0gICAgYXBwbHlDb2x1bW5XaWR0aHNNYXA6IGZ1bmN0aW9uKGNvbHVtbldpZHRoc01hcCkK
KyAgICBhcHBseUNvbHVtbldpZHRoc01hcChjb2x1bW5XaWR0aHNNYXApCiAgICAgewogICAgICAg
ICBmb3IgKHZhciBbaWRlbnRpZmllciwgY29sdW1uXSBvZiB0aGlzLmNvbHVtbnMpIHsKICAgICAg
ICAgICAgIHZhciB3aWR0aCA9IChjb2x1bW5XaWR0aHNNYXBbaWRlbnRpZmllcl0gfHwgMCkgKyAi
JSI7CkBAIC02MjQsMTkgKzYxMSwxOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9pc0NvbHVtblZpc2libGU6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIp
CisgICAgX2lzQ29sdW1uVmlzaWJsZShjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAg
cmV0dXJuICF0aGlzLmNvbHVtbnMuZ2V0KGNvbHVtbklkZW50aWZpZXIpWyJoaWRkZW4iXTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9zaG93Q29sdW1uOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVy
KQorICAgIF9zaG93Q29sdW1uKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICBkZWxl
dGUgdGhpcy5jb2x1bW5zLmdldChjb2x1bW5JZGVudGlmaWVyKVsiaGlkZGVuIl07Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfaGlkZUNvbHVtbjogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAg
ICBfaGlkZUNvbHVtbihjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgdmFyIGNvbHVt
biA9IHRoaXMuY29sdW1ucy5nZXQoY29sdW1uSWRlbnRpZmllcik7CiAgICAgICAgIGNvbHVtblsi
aGlkZGVuIl0gPSB0cnVlOwpAQCAtNjQ1LDI0ICs2MzIsMjQgQEAgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgY29sdW1uRWxlbWVudC5zdHlsZS53aWR0aCA9IDA7
CiAKICAgICAgICAgdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBzY3JvbGxDb250YWluZXIoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBp
c1Njcm9sbGVkVG9MYXN0Um93OiBmdW5jdGlvbigpCisgICAgaXNTY3JvbGxlZFRvTGFzdFJvdygp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5pc1Nj
cm9sbGVkVG9Cb3R0b20oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNjcm9sbFRvTGFzdFJvdzog
ZnVuY3Rpb24oKQorICAgIHNjcm9sbFRvTGFzdFJvdygpCiAgICAgewogICAgICAgICB0aGlzLl9z
Y3JvbGxDb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuX3Njcm9sbENvbnRhaW5lckVs
ZW1lbnQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5vZmZzZXRI
ZWlnaHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9zaXRpb25SZXNpemVyRWxlbWVudHM6IGZ1
bmN0aW9uKCkKKyAgICBfcG9zaXRpb25SZXNpemVyRWxlbWVudHMoKQogICAgIHsKICAgICAgICAg
dmFyIGxlZnQgPSAwOwogICAgICAgICB2YXIgcHJldmlvdXNSZXNpemVyID0gbnVsbDsKQEAgLTY5
OSw5ICs2ODYsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAgICAgICAgIGlmIChwcmV2aW91c1Jlc2l6ZXIpCiAgICAgICAgICAgICBwcmV2aW91c1Jl
c2l6ZXJbV2ViSW5zcGVjdG9yLkRhdGFHcmlkLk5leHRDb2x1bW5PcmRpbmFsU3ltYm9sXSA9IHRo
aXMub3JkZXJlZENvbHVtbnMubGVuZ3RoIC0gMTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFBs
YWNlaG9sZGVyTm9kZTogZnVuY3Rpb24oKQorICAgIGFkZFBsYWNlaG9sZGVyTm9kZSgpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5wbGFjZWhvbGRlck5vZGUpCiAgICAgICAgICAgICB0aGlzLnBs
YWNlaG9sZGVyTm9kZS5tYWtlTm9ybWFsKCk7CkBAIC03MTEsMTQgKzY5OCwxNCBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZW1wdHlEYXRhW2lkZW50
aWZpZXJdID0gIiI7CiAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJOb2RlID0gbmV3IFdlYkluc3Bl
Y3Rvci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZShlbXB0eURhdGEpOwogICAgICAgICB0aGlzLmFw
cGVuZENoaWxkKHRoaXMucGxhY2Vob2xkZXJOb2RlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFw
cGVuZENoaWxkOiBmdW5jdGlvbihjaGlsZCkKKyAgICBhcHBlbmRDaGlsZChjaGlsZCkKICAgICB7
CiAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQoY2hpbGQsIHRoaXMuY2hpbGRyZW4ubGVuZ3RoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGluc2VydENoaWxkOiBmdW5jdGlvbihjaGlsZCwgaW5kZXgp
CisgICAgaW5zZXJ0Q2hpbGQoY2hpbGQsIGluZGV4KQogICAgIHsKICAgICAgICAgaWYgKCFjaGls
ZCkKICAgICAgICAgICAgIHRocm93KCJpbnNlcnRDaGlsZDogTm9kZSBjYW4ndCBiZSB1bmRlZmlu
ZWQgb3IgbnVsbC4iKTsKQEAgLTc1Miw5ICs3MzksOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAg
Y2hpbGQuX2F0dGFjaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlQ2hpbGQ6IGZ1bmN0
aW9uKGNoaWxkKQorICAgIHJlbW92ZUNoaWxkKGNoaWxkKQogICAgIHsKICAgICAgICAgaWYgKCFj
aGlsZCkKICAgICAgICAgICAgIHRocm93KCJyZW1vdmVDaGlsZDogTm9kZSBjYW4ndCBiZSB1bmRl
ZmluZWQgb3IgbnVsbC4iKTsKQEAgLTc4MCw5ICs3NjcsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNlOwog
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjaGlsZC5pc1BsYWNlaG9sZGVyTm9kZSwgIlNob3Vs
ZG4ndCBkZWxldGUgdGhlIHBsYWNlaG9sZGVyIG5vZGUuIik7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICByZW1vdmVDaGlsZHJlbjogZnVuY3Rpb24oKQorICAgIHJlbW92ZUNoaWxkcmVuKCkKICAgICB7
CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXTsKQEAgLTc5Nyw5ICs3
ODQsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRo
aXMuY2hpbGRyZW4gPSBbXTsKICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNlOwotICAg
IH0sCisgICAgfQogCi0gICAgcmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmU6IGZ1bmN0aW9uKCkKKyAg
ICByZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZSgpCiAgICAgewogICAgICAgICB2YXIgY2hpbGRyZW5U
b1JlbW92ZSA9IHRoaXMuY2hpbGRyZW47CiAKQEAgLTgyMywxNyArODEwLDE3IEBAIFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmNo
aWxkcmVuID0gW107Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzb3J0Tm9kZXM6IGZ1bmN0aW9uKGNv
bXBhcmF0b3IpCisgICAgc29ydE5vZGVzKGNvbXBhcmF0b3IpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fc29ydE5vZGVzUmVxdWVzdElkKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHRoaXMuX3NvcnROb2Rlc1JlcXVlc3RJZCA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
dGhpcy5fc29ydE5vZGVzQ2FsbGJhY2suYmluZCh0aGlzLCBjb21wYXJhdG9yKSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfc29ydE5vZGVzQ2FsbGJhY2s6IGZ1bmN0aW9uKGNvbXBhcmF0b3IpCisg
ICAgX3NvcnROb2Rlc0NhbGxiYWNrKGNvbXBhcmF0b3IpCiAgICAgewogICAgICAgICBmdW5jdGlv
biBjb21wYXJhdG9yV3JhcHBlcihhUm93LCBiUm93KQogICAgICAgICB7CkBAIC04NzgsOSArODY1
LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHBy
ZXZpb3VzU2libGluZ05vZGUubmV4dFNpYmxpbmcgPSBudWxsOwogCiAgICAgICAgIHRib2R5LmFw
cGVuZENoaWxkKGZpbGxlclJvd0VsZW1lbnQpOyAvLyBXZSBleHBlY3QgdG8gZmluZCBhIGZpbGxl
ciByb3cgd2hlbiBhdHRhY2hpbmcgbm9kZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBfa2V5RG93
bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2tleURvd24oZXZlbnQpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuc2VsZWN0ZWROb2RlIHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50Lm1ldGFLZXkg
fHwgZXZlbnQuY3RybEtleSB8fCB0aGlzLl9lZGl0aW5nKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtOTQ5LDQyICs5MzYsNDIgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgICBldmVudC5z
dG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgZXhwYW5k
OiBmdW5jdGlvbigpCisgICAgZXhwYW5kKCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhl
IHJvb3QsIGRvIG5vdGhpbmcuCi0gICAgfSwKKyAgICB9CiAKLSAgICBjb2xsYXBzZTogZnVuY3Rp
b24oKQorICAgIGNvbGxhcHNlKCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHJvb3Qs
IGRvIG5vdGhpbmcuCi0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWw6IGZ1bmN0aW9uKCkKKyAg
ICByZXZlYWwoKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGlu
Zy4KLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbEFuZFNlbGVjdDogZnVuY3Rpb24oKQorICAg
IHJldmVhbEFuZFNlbGVjdCgpCiAgICAgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSByb290LCBk
byBub3RoaW5nLgotICAgIH0sCisgICAgfQogCi0gICAgZGF0YUdyaWROb2RlRnJvbU5vZGU6IGZ1
bmN0aW9uKHRhcmdldCkKKyAgICBkYXRhR3JpZE5vZGVGcm9tTm9kZSh0YXJnZXQpCiAgICAgewog
ICAgICAgICB2YXIgcm93RWxlbWVudCA9IHRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5v
ZGVOYW1lKCJ0ciIpOwogICAgICAgICByZXR1cm4gcm93RWxlbWVudCAmJiByb3dFbGVtZW50Ll9k
YXRhR3JpZE5vZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkYXRhR3JpZE5vZGVGcm9tUG9pbnQ6
IGZ1bmN0aW9uKHgsIHkpCisgICAgZGF0YUdyaWROb2RlRnJvbVBvaW50KHgsIHkpCiAgICAgewog
ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQub3duZXJEb2N1bWVudC5l
bGVtZW50RnJvbVBvaW50KHgsIHkpOwogICAgICAgICB2YXIgcm93RWxlbWVudCA9IG5vZGUuZW5j
bG9zaW5nTm9kZU9yU2VsZldpdGhOb2RlTmFtZSgidHIiKTsKICAgICAgICAgcmV0dXJuIHJvd0Vs
ZW1lbnQgJiYgcm93RWxlbWVudC5fZGF0YUdyaWROb2RlOwotICAgIH0sCisgICAgfQogCi0gICAg
X2hlYWRlckNlbGxDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGVhZGVyQ2VsbENsaWNr
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY2VsbCA9IGV2ZW50LnRhcmdldC5lbmNsb3Np
bmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0aCIpOwogICAgICAgICBpZiAoIWNlbGwgfHwgIWNl
bGwuY29sdW1uSWRlbnRpZmllciB8fCAhY2VsbC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLlNvcnRhYmxlQ29sdW1uU3R5bGVDbGFzc05hbWUpKQpAQCAtOTk4LDI3ICs5
ODUsMjcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICB0aGlzLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNj
ZW5kaW5nOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRoaXMuc29ydENvbHVtbklkZW50
aWZpZXIgPSBjbGlja2VkQ29sdW1uSWRlbnRpZmllcjsKLSAgICB9LAorICAgIH0KIAotICAgIF9t
b3VzZW92ZXJDb2x1bW5Db2xsYXBzZXI6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZW92ZXJD
b2x1bW5Db2xsYXBzZXIoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY2VsbCA9IGV2ZW50LnRh
cmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0aCIpOwogICAgICAgICBpZiAo
IWNlbGwgfHwgIWNlbGwuY29sbGFwc2VzR3JvdXApCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCJtb3VzZS1vdmVyLWNvbGxhcHNlciIpOwotICAgIH0s
CisgICAgfQogCi0gICAgX21vdXNlb3V0Q29sdW1uQ29sbGFwc2VyOiBmdW5jdGlvbihldmVudCkK
KyAgICBfbW91c2VvdXRDb2x1bW5Db2xsYXBzZXIoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIg
Y2VsbCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0aCIp
OwogICAgICAgICBpZiAoIWNlbGwgfHwgIWNlbGwuY29sbGFwc2VzR3JvdXApCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgY2VsbC5jbGFzc0xpc3QucmVtb3ZlKCJtb3VzZS1vdmVyLWNv
bGxhcHNlciIpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NsaWNrSW5Db2x1bW5Db2xsYXBzZXI6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jbGlja0luQ29sdW1uQ29sbGFwc2VyKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIGNlbGwgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldp
dGhOb2RlTmFtZSgidGgiKTsKICAgICAgICAgaWYgKCFjZWxsIHx8ICFjZWxsLmNvbGxhcHNlc0dy
b3VwKQpAQCAtMTAyOCw5ICsxMDE1LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbGxhcHNlQ29sdW1uR3Jv
dXA6IGZ1bmN0aW9uKGNvbHVtbkdyb3VwKQorICAgIGNvbGxhcHNlQ29sdW1uR3JvdXAoY29sdW1u
R3JvdXApCiAgICAgewogICAgICAgICB2YXIgY29sbGFwc2VyQ29sdW1uSWRlbnRpZmllciA9IG51
bGw7CiAgICAgICAgIGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1u
cykgewpAQCAtMTA0Niw5ICsxMDMzLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICB2YXIgY2VsbCA9IHRoaXMuX2hlYWRlclRhYmxlQ2VsbEVsZW1lbnRz
LmdldChjb2xsYXBzZXJDb2x1bW5JZGVudGlmaWVyKTsKICAgICAgICAgdGhpcy5fY29sbGFwc2VD
b2x1bW5Hcm91cFdpdGhDZWxsKGNlbGwpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbGxhcHNl
Q29sdW1uR3JvdXBXaXRoQ2VsbDogZnVuY3Rpb24oY2VsbCkKKyAgICBfY29sbGFwc2VDb2x1bW5H
cm91cFdpdGhDZWxsKGNlbGwpCiAgICAgewogICAgICAgICB2YXIgY29sdW1uc1dpbGxDb2xsYXBz
ZSA9IGNlbGwuY2xhc3NMaXN0LnRvZ2dsZSgiY29sbGFwc2VkIik7CiAKQEAgLTEwNjUsMzQgKzEw
NTIsMzQgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGNvbGxhcHNlckJ1dHRvbi50aXRsZSA9IGNvbHVtbnNXaWxsQ29sbGFwc2UgPyB0aGlzLl9jb2xs
YXBzZXJCdXR0b25FeHBhbmRDb2x1bW5zVG9vbFRpcCgpIDogdGhpcy5fY29sbGFwc2VyQnV0dG9u
Q29sbGFwc2VDb2x1bW5zVG9vbFRpcCgpOwogCiAgICAgICAgIHRoaXMuZGlkVG9nZ2xlQ29sdW1u
R3JvdXAoY2VsbC5jb2xsYXBzZXNHcm91cCwgY29sdW1uc1dpbGxDb2xsYXBzZSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfY29sbGFwc2VyQnV0dG9uQ29sbGFwc2VDb2x1bW5zVG9vbFRpcDogZnVu
Y3Rpb24oKQorICAgIF9jb2xsYXBzZXJCdXR0b25Db2xsYXBzZUNvbHVtbnNUb29sVGlwKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbGxhcHNlIGNvbHVt
bnMiKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb2xsYXBzZXJCdXR0b25FeHBhbmRDb2x1bW5z
VG9vbFRpcDogZnVuY3Rpb24oKQorICAgIF9jb2xsYXBzZXJCdXR0b25FeHBhbmRDb2x1bW5zVG9v
bFRpcCgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFeHBh
bmQgY29sdW1ucyIpOwotICAgIH0sCisgICAgfQogCi0gICAgd2lsbFRvZ2dsZUNvbHVtbkdyb3Vw
OiBmdW5jdGlvbihjb2x1bW5Hcm91cCwgd2lsbENvbGxhcHNlKQorICAgIHdpbGxUb2dnbGVDb2x1
bW5Hcm91cChjb2x1bW5Hcm91cCwgd2lsbENvbGxhcHNlKQogICAgIHsKICAgICAgICAgLy8gSW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBk
aWRUb2dnbGVDb2x1bW5Hcm91cDogZnVuY3Rpb24oY29sdW1uR3JvdXAsIGRpZENvbGxhcHNlKQor
ICAgIGRpZFRvZ2dsZUNvbHVtbkdyb3VwKGNvbHVtbkdyb3VwLCBkaWRDb2xsYXBzZSkKICAgICB7
CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgotICAgIH0s
CisgICAgfQogCi0gICAgaGVhZGVyVGFibGVIZWFkZXI6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZp
ZXIpCisgICAgaGVhZGVyVGFibGVIZWFkZXIoY29sdW1uSWRlbnRpZmllcikKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9oZWFkZXJUYWJsZUNlbGxFbGVtZW50cy5nZXQoY29sdW1uSWRlbnRp
Zmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ2VuZXJhdGVTb3J0SW5kaWNhdG9ySW1hZ2Vz
SWZOZWVkZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZ2VuZXJhdGVTb3J0SW5kaWNhdG9ySW1hZ2VzSWZO
ZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5fZ2VuZXJh
dGVkU29ydEluZGljYXRvckltYWdlcykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExMTcsOSAr
MTEwNCw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
Z2VuZXJhdGVDb2xvcmVkSW1hZ2VzRm9yQ1NTKHBsYXRmb3JtSW1hZ2VQYXRoKCJTb3J0SW5kaWNh
dG9yRG93bkFycm93LnN2ZyIpLCBzcGVjaWZpY2F0aW9ucywgOSwgOCwgImRhdGEtZ3JpZC1zb3J0
LWluZGljYXRvci1kb3duLSIpOwogICAgICAgICBnZW5lcmF0ZUNvbG9yZWRJbWFnZXNGb3JDU1Mo
cGxhdGZvcm1JbWFnZVBhdGgoIlNvcnRJbmRpY2F0b3JVcEFycm93LnN2ZyIpLCBzcGVjaWZpY2F0
aW9ucywgOSwgOCwgImRhdGEtZ3JpZC1zb3J0LWluZGljYXRvci11cC0iKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9tb3VzZURvd25JbkRhdGFUYWJsZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX21v
dXNlRG93bkluRGF0YVRhYmxlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGdyaWROb2RlID0g
dGhpcy5kYXRhR3JpZE5vZGVGcm9tTm9kZShldmVudC50YXJnZXQpOwogICAgICAgICBpZiAoIWdy
aWROb2RlIHx8ICFncmlkTm9kZS5zZWxlY3RhYmxlKQpAQCAtMTEzNSw5ICsxMTIyLDkgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBncmlkTm9k
ZS5zZWxlY3QoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBncmlkTm9kZS5zZWxlY3Qo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZXh0TWVudUluRGF0YVRhYmxlOiBmdW5jdGlv
bihldmVudCkKKyAgICBfY29udGV4dE1lbnVJbkRhdGFUYWJsZShldmVudCkKICAgICB7CiAgICAg
ICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZlbnQp
OwogCkBAIC0xMTYzLDkgKzExNTAsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAKICAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2NsaWNrSW5EYXRhVGFibGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jbGlj
a0luRGF0YVRhYmxlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGdyaWROb2RlID0gdGhpcy5k
YXRhR3JpZE5vZGVGcm9tTm9kZShldmVudC50YXJnZXQpOwogICAgICAgICBpZiAoIWdyaWROb2Rl
IHx8ICFncmlkTm9kZS5oYXNDaGlsZHJlbikKQEAgLTExODUsMTUgKzExNzIsMTUgQEAgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBncmlkTm9kZS5leHBhbmQoKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0g
ICAgdGV4dEZvckRhdGFHcmlkTm9kZUNvbHVtbjogZnVuY3Rpb24obm9kZSwgY29sdW1uSWRlbnRp
ZmllcikKKyAgICB0ZXh0Rm9yRGF0YUdyaWROb2RlQ29sdW1uKG5vZGUsIGNvbHVtbklkZW50aWZp
ZXIpCiAgICAgewogICAgICAgICB2YXIgZGF0YSA9IG5vZGUuZGF0YVtjb2x1bW5JZGVudGlmaWVy
XTsKICAgICAgICAgcmV0dXJuIChkYXRhIGluc3RhbmNlb2YgTm9kZSA/IGRhdGEudGV4dENvbnRl
bnQgOiBkYXRhKSB8fCAiIjsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb3B5VGV4dEZvckRhdGFH
cmlkTm9kZTogZnVuY3Rpb24obm9kZSkKKyAgICBfY29weVRleHRGb3JEYXRhR3JpZE5vZGUobm9k
ZSkKICAgICB7CiAgICAgICAgIHZhciBmaWVsZHMgPSBbXTsKICAgICAgICAgZm9yICh2YXIgaWRl
bnRpZmllciBvZiBub2RlLmRhdGFHcmlkLm9yZGVyZWRDb2x1bW5zKQpAQCAtMTIwMSwxNSArMTE4
OCwxNSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZh
ciB0YWJTZXBhcmF0ZWRWYWx1ZXMgPSBmaWVsZHMuam9pbigiXHQiKTsKICAgICAgICAgcmV0dXJu
IHRhYlNlcGFyYXRlZFZhbHVlczsKLSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUJlZm9yZUNv
cHlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlQmVmb3JlQ29weUV2ZW50KGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWROb2RlICYmIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5pc0NvbGxhcHNlZCkKICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYW5kbGVDb3B5RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIGhhbmRsZUNvcHlFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5zZWxl
Y3RlZE5vZGUgfHwgIXdpbmRvdy5nZXRTZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTEyMTgsOSArMTIwNSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGV2ZW50LmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dC9w
bGFpbiIsIGNvcHlUZXh0KTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29weVJv
dzogZnVuY3Rpb24odGFyZ2V0KQorICAgIF9jb3B5Um93KHRhcmdldCkKICAgICB7CiAgICAgICAg
IHZhciBncmlkTm9kZSA9IHRoaXMuZGF0YUdyaWROb2RlRnJvbU5vZGUodGFyZ2V0KTsKICAgICAg
ICAgaWYgKCFncmlkTm9kZSkKQEAgLTEyMjgsMjkgKzEyMTUsMjkgQEAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgY29weVRleHQgPSB0aGlzLl9jb3B5
VGV4dEZvckRhdGFHcmlkTm9kZShncmlkTm9kZSk7CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5k
SG9zdC5jb3B5VGV4dChjb3B5VGV4dCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVzaXpl
TWV0aG9kKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVzaXplTWV0aG9kKQogICAgICAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5SZXNpemVNZXRob2QuTmVhcmVzdDsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc2l6ZU1ldGhvZDsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCByZXNpemVNZXRob2QobWV0aG9kKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVzaXplTWV0
aG9kID0gbWV0aG9kOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzaXplckRyYWdTdGFydGVkOiBm
dW5jdGlvbihyZXNpemVyKQorICAgIHJlc2l6ZXJEcmFnU3RhcnRlZChyZXNpemVyKQogICAgIHsK
ICAgICAgICAgaWYgKCFyZXNpemVyW1dlYkluc3BlY3Rvci5EYXRhR3JpZC5OZXh0Q29sdW1uT3Jk
aW5hbFN5bWJvbF0pCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gQWJvcnQgdGhlIGRyYWc7
CiAKICAgICAgICAgdGhpcy5fY3VycmVudFJlc2l6ZXIgPSByZXNpemVyOwotICAgIH0sCisgICAg
fQogCi0gICAgcmVzaXplckRyYWdnaW5nOiBmdW5jdGlvbihyZXNpemVyLCBwb3NpdGlvbkRlbHRh
KQorICAgIHJlc2l6ZXJEcmFnZ2luZyhyZXNpemVyLCBwb3NpdGlvbkRlbHRhKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQocmVzaXplciA9PT0gdGhpcy5fY3VycmVudFJlc2l6ZXIsIHJl
c2l6ZXIsIHRoaXMuX2N1cnJlbnRSZXNpemVyKTsKICAgICAgICAgaWYgKHJlc2l6ZXIgIT0gdGhp
cy5fY3VycmVudFJlc2l6ZXIpCkBAIC0xMjk3LDkgKzEyODQsOSBAQCBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wb3NpdGlvblJlc2l6ZXJFbGVtZW50
cygpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuRGlkTGF5b3V0
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2l6ZXJEcmFnRW5kZWQ6IGZ1bmN0aW9uKHJlc2l6
ZXIpCisgICAgcmVzaXplckRyYWdFbmRlZChyZXNpemVyKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQocmVzaXplciA9PT0gdGhpcy5fY3VycmVudFJlc2l6ZXIsIHJlc2l6ZXIsIHRoaXMu
X2N1cnJlbnRSZXNpemVyKTsKICAgICAgICAgaWYgKHJlc2l6ZXIgIT0gdGhpcy5fY3VycmVudFJl
c2l6ZXIpCkBAIC0xMzA3LDEyICsxMjk0LDMyIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fY3VycmVudFJlc2l6ZXIgPSBudWxsOwogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZl
bnQuRGlkTGF5b3V0KTsKLSAgICB9LAorICAgIH0KK307CiAKLSAgICBDb2x1bW5SZXNpemVQYWRk
aW5nOiAxMCwKK1dlYkluc3BlY3Rvci5EYXRhR3JpZC5Db2x1bW5SZXNpemVQYWRkaW5nID0gMTA7
CitXZWJJbnNwZWN0b3IuRGF0YUdyaWQuQ2VudGVyUmVzaXplck92ZXJCb3JkZXJBZGp1c3RtZW50
ID0gMzsKIAotICAgIENlbnRlclJlc2l6ZXJPdmVyQm9yZGVyQWRqdXN0bWVudDogMywKLX0KK1dl
Ykluc3BlY3Rvci5EYXRhR3JpZC5FdmVudCA9IHsKKyAgICBEaWRMYXlvdXQ6ICJkYXRhZ3JpZC1k
aWQtbGF5b3V0IiwKKyAgICBTb3J0Q2hhbmdlZDogImRhdGFncmlkLXNvcnQtY2hhbmdlZCIsCisg
ICAgU2VsZWN0ZWROb2RlQ2hhbmdlZDogImRhdGFncmlkLXNlbGVjdGVkLW5vZGUtY2hhbmdlZCIs
CisgICAgRXhwYW5kZWROb2RlOiAiZGF0YWdyaWQtZXhwYW5kZWQtbm9kZSIsCisgICAgQ29sbGFw
c2VkTm9kZTogImRhdGFncmlkLWNvbGxhcHNlZC1ub2RlIgorfTsKKworV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLlNvcnRPcmRlciA9IHsKKyAgICBJbmRldGVybWluYXRlOiAiZGF0YS1ncmlkLXNvcnQt
b3JkZXItaW5kZXRlcm1pbmF0ZSIsCisgICAgQXNjZW5kaW5nOiAiZGF0YS1ncmlkLXNvcnQtb3Jk
ZXItYXNjZW5kaW5nIiwKKyAgICBEZXNjZW5kaW5nOiAiZGF0YS1ncmlkLXNvcnQtb3JkZXItZGVz
Y2VuZGluZyIKK307CisKK1dlYkluc3BlY3Rvci5EYXRhR3JpZC5QcmV2aW91c0NvbHVtbk9yZGlu
YWxTeW1ib2wgPSBTeW1ib2woInByZXZpb3VzLWNvbHVtbi1vcmRpbmFsIik7CitXZWJJbnNwZWN0
b3IuRGF0YUdyaWQuTmV4dENvbHVtbk9yZGluYWxTeW1ib2wgPSBTeW1ib2woIm5leHQtY29sdW1u
LW9yZGluYWwiKTsKKworV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRDb2x1bW5Bc2NlbmRpbmdT
dHlsZUNsYXNzTmFtZSA9ICJzb3J0LWFzY2VuZGluZyI7CitXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
U29ydENvbHVtbkRlc2NlbmRpbmdTdHlsZUNsYXNzTmFtZSA9ICJzb3J0LWRlc2NlbmRpbmciOwor
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRhYmxlQ29sdW1uU3R5bGVDbGFzc05hbWUgPSAic29y
dGFibGUiOwogCiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuUmVzaXplTWV0aG9kID0gewogICAgIE5l
YXJlc3Q6ICJuZWFyZXN0IiwKQEAgLTEzMjAsMzkgKzEzMjcsNDIgQEAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLlJlc2l6ZU1ldGhvZCA9IHsKICAgICBMYXN0OiAibGFzdCIKIH07CiAKLVdlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGU7Ci0KLVdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRhLCBo
YXNDaGlsZHJlbikKK1dlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUgPSBjbGFzcyBEYXRhR3JpZE5v
ZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgdGhpcy5fZXhwYW5kZWQgPSBm
YWxzZTsKLSAgICB0aGlzLl9zZWxlY3RlZCA9IGZhbHNlOwotICAgIHRoaXMuX2NvcHlhYmxlID0g
dHJ1ZTsKLSAgICB0aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0cnVlOwotICAgIHRoaXMu
X2RhdGEgPSBkYXRhIHx8IHt9OwotICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBoYXNDaGlsZHJlbiB8
fCBmYWxzZTsKLSAgICB0aGlzLmNoaWxkcmVuID0gW107Ci0gICAgdGhpcy5kYXRhR3JpZCA9IG51
bGw7Ci0gICAgdGhpcy5wYXJlbnQgPSBudWxsOwotICAgIHRoaXMucHJldmlvdXNTaWJsaW5nID0g
bnVsbDsKLSAgICB0aGlzLm5leHRTaWJsaW5nID0gbnVsbDsKLSAgICB0aGlzLmRpc2Nsb3N1cmVU
b2dnbGVXaWR0aCA9IDEwOwotfQotCi1XZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlw
ZSA9IHsKKyAgICBjb25zdHJ1Y3RvcihkYXRhLCBoYXNDaGlsZHJlbikKKyAgICB7CisgICAgICAg
IHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5fZXhwYW5kZWQgPSBmYWxzZTsKKyAgICAgICAgdGhp
cy5fc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fY29weWFibGUgPSB0cnVlOworICAg
ICAgICB0aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0cnVlOworICAgICAgICB0aGlzLl9k
YXRhID0gZGF0YSB8fCB7fTsKKyAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGhhc0NoaWxkcmVu
IHx8IGZhbHNlOworICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107CisgICAgICAgIHRoaXMuZGF0
YUdyaWQgPSBudWxsOworICAgICAgICB0aGlzLnBhcmVudCA9IG51bGw7CisgICAgICAgIHRoaXMu
cHJldmlvdXNTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgdGhpcy5uZXh0U2libGluZyA9IG51bGw7
CisgICAgICAgIHRoaXMuZGlzY2xvc3VyZVRvZ2dsZVdpZHRoID0gMTA7CisgICAgfQorCisgICAg
Ly8gUHVibGljCisKICAgICBnZXQgc2VsZWN0YWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
IXRoaXMuX2VsZW1lbnQgfHwgIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJoaWRk
ZW4iKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb3B5YWJsZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY29weWFibGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29weWFi
bGUoeCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvcHlhYmxlID0geDsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CkBAIC0xMzc2LDE1ICsxMzg2LDE1IEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuY3JlYXRl
Q2VsbHMoKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBjcmVhdGVDZWxsczogZnVuY3Rpb24oKQorICAgIGNyZWF0ZUNlbGxzKCkKICAgICB7CiAg
ICAgICAgIGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgb2YgdGhpcy5kYXRhR3JpZC5vcmRlcmVk
Q29sdW1ucykKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5jcmVh
dGVDZWxsKGNvbHVtbklkZW50aWZpZXIpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2hJ
Zk5lZWRlZDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2hJZk5lZWRlZCgpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX25lZWRzUmVmcmVzaCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzOTIs
OSArMTQwMiw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAg
ICAgICBkZWxldGUgdGhpcy5fbmVlZHNSZWZyZXNoOwogCiAgICAgICAgIHRoaXMucmVmcmVzaCgp
OwotICAgIH0sCisgICAgfQogCi0gICAgbmVlZHNSZWZyZXNoOiBmdW5jdGlvbigpCisgICAgbmVl
ZHNSZWZyZXNoKCkKICAgICB7CiAgICAgICAgIHRoaXMuX25lZWRzUmVmcmVzaCA9IHRydWU7CiAK
QEAgLTE0MDUsMTggKzE0MTUsMTggQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2NoZWR1bGVkUmVm
cmVzaElkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5yZWZyZXNoLmJpbmQo
dGhpcykpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2RhdGE7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZGF0YSh4KQogICAg
IHsKICAgICAgICAgdGhpcy5fZGF0YSA9IHggfHwge307CiAgICAgICAgIHRoaXMubmVlZHNSZWZy
ZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmV2ZWFsZWQoKQogICAgIHsKQEAgLTE0
MzUsNyArMTQ0NSw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewog
CiAgICAgICAgIHRoaXMuX3JldmVhbGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgaGFzQ2hpbGRyZW4oeCkKICAgICB7CkBAIC0xNDU4LDEy
ICsxNDY4LDEyIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJwYXJlbnQiKTsKICAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kZWQiKTsKICAgICAg
ICAgfQotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhhc0NoaWxkcmVuKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9oYXNDaGlsZHJlbjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBy
ZXZlYWxlZCh4KQogICAgIHsKQEAgLTE0ODMsNyArMTQ5Myw3IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhp
cy5jaGlsZHJlbi5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0ucmV2
ZWFsZWQgPSB4ICYmIHRoaXMuZXhwYW5kZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGVw
dGgoKQogICAgIHsKQEAgLTE0OTQsNyArMTUwNCw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5v
ZGUucHJvdG90eXBlID0gewogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9kZXB0aCA9
IDA7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZXB0aDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBsZWZ0UGFkZGluZygpCiAgICAgewpAQCAtMTUwMywyNCArMTUxMywyNCBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9sZWZ0UGFkZGlu
ZyA9IHRoaXMuZGVwdGggKiB0aGlzLmRhdGFHcmlkLmluZGVudFdpZHRoOwogICAgICAgICByZXR1
cm4gdGhpcy5fbGVmdFBhZGRpbmc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2hvdWxkUmVm
cmVzaENoaWxkcmVuKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zaG91bGRSZWZyZXNo
Q2hpbGRyZW47Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2hvdWxkUmVmcmVzaENoaWxkcmVu
KHgpCiAgICAgewogICAgICAgICB0aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB4OwogICAg
ICAgICBpZiAoeCAmJiB0aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3RlZCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fc2VsZWN0ZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0ZWQoeCkK
ICAgICB7CkBAIC0xNTI4LDEyICsxNTM4LDEyIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5zZWxlY3QoKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdGhpcy5kZXNlbGVjdCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGV4
cGFuZGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9leHBhbmRlZDsKLSAgICB9LAor
ICAgIH0KIAogICAgIHNldCBleHBhbmRlZCh4KQogICAgIHsKQEAgLTE1NDEsOSArMTU1MSw5IEBA
IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhp
cy5leHBhbmQoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5jb2xsYXBzZSgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50IHx8ICF0aGlzLmRhdGFHcmlkKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTU1NywxNCArMTU2NywxNCBAQCBXZWJJbnNwZWN0b3IuRGF0
YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUNo
aWxkcmVuKCk7CiAgICAgICAgIHRoaXMuY3JlYXRlQ2VsbHMoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewog
ICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KLSAgICB9LAor
ICAgIH0KIAotICAgIGNyZWF0ZUNlbGw6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCisgICAg
Y3JlYXRlQ2VsbChjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgdmFyIGNlbGxFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKICAgICAgICAgY2VsbEVsZW1lbnQu
Y2xhc3NOYW1lID0gY29sdW1uSWRlbnRpZmllciArICItY29sdW1uIjsKQEAgLTE1ODksNTIgKzE1
OTksMzAgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gY2VsbEVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBj
cmVhdGVDZWxsQ29udGVudDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAgICBjcmVhdGVD
ZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
ZGF0YVtjb2x1bW5JZGVudGlmaWVyXSB8fCAiXHUyMDBiIjsgLy8gWmVybyB3aWR0aCBzcGFjZSB0
byBrZWVwIHRoZSBjZWxsIGZyb20gY29sbGFwc2luZy4KLSAgICB9LAorICAgIH0KIAotICAgIGVs
ZW1lbnRXaXRoQ29sdW1uSWRlbnRpZmllcjogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAg
ICBlbGVtZW50V2l0aENvbHVtbklkZW50aWZpZXIoY29sdW1uSWRlbnRpZmllcikKICAgICB7CiAg
ICAgICAgIHZhciBpbmRleCA9IHRoaXMuZGF0YUdyaWQub3JkZXJlZENvbHVtbnMuaW5kZXhPZihj
b2x1bW5JZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkKICAgICAgICAgICAg
IHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNoaWxkcmVuW2lu
ZGV4XTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFNoYXJlIHRoZXNlIGZ1bmN0aW9ucyB3aXRo
IERhdGFHcmlkLiBUaGV5IGFyZSB3cml0dGVuIHRvIHdvcmsgd2l0aCBhIERhdGFHcmlkTm9kZSB0
aGlzIG9iamVjdC4KLSAgICBhcHBlbmRDaGlsZDogV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZS5hcHBlbmRDaGlsZCwKLSAgICBpbnNlcnRDaGlsZDogV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LnByb3RvdHlwZS5pbnNlcnRDaGlsZCwKLSAgICByZW1vdmVDaGlsZDogV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZCwKLSAgICByZW1vdmVDaGlsZHJlbjogV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbiwKLSAgICByZW1vdmVDaGls
ZHJlblJlY3Vyc2l2ZTogV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGls
ZHJlblJlY3Vyc2l2ZSwKKyAgICBhcHBlbmRDaGlsZCgpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQor
ICAgIGluc2VydENoaWxkKCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlw
ZS5pbnNlcnRDaGlsZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9CisgICAgcmVtb3ZlQ2hpbGQo
KSB7IHJldHVybiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkLmFw
cGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KKyAgICByZW1vdmVDaGlsZHJlbigpIHsgcmV0dXJuIFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4uYXBwbHkodGhpcywg
YXJndW1lbnRzKTsgfQorICAgIHJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlKCkgeyByZXR1cm4gV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZS5hcHBs
eSh0aGlzLCBhcmd1bWVudHMpOyB9CiAKLSAgICBfcmVjYWxjdWxhdGVTaWJsaW5nczogZnVuY3Rp
b24obXlJbmRleCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5wYXJlbnQpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHByZXZpb3VzQ2hpbGQgPSAobXlJbmRleCA+IDAgPyB0
aGlzLnBhcmVudC5jaGlsZHJlbltteUluZGV4IC0gMV0gOiBudWxsKTsKLQotICAgICAgICBpZiAo
cHJldmlvdXNDaGlsZCkgewotICAgICAgICAgICAgcHJldmlvdXNDaGlsZC5uZXh0U2libGluZyA9
IHRoaXM7Ci0gICAgICAgICAgICB0aGlzLnByZXZpb3VzU2libGluZyA9IHByZXZpb3VzQ2hpbGQ7
Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy5wcmV2aW91c1NpYmxpbmcgPSBudWxs
OwotCi0gICAgICAgIHZhciBuZXh0Q2hpbGQgPSB0aGlzLnBhcmVudC5jaGlsZHJlbltteUluZGV4
ICsgMV07Ci0KLSAgICAgICAgaWYgKG5leHRDaGlsZCkgewotICAgICAgICAgICAgbmV4dENoaWxk
LnByZXZpb3VzU2libGluZyA9IHRoaXM7Ci0gICAgICAgICAgICB0aGlzLm5leHRTaWJsaW5nID0g
bmV4dENoaWxkOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMubmV4dFNpYmxpbmcg
PSBudWxsOwotICAgIH0sCi0KLSAgICBjb2xsYXBzZTogZnVuY3Rpb24oKQorICAgIGNvbGxhcHNl
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50KQogICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRlZCIpOwpAQCAtMTY0OCw5ICsxNjM2LDkg
QEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYg
KHRoaXMuZGF0YUdyaWQpCiAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuQ29sbGFwc2VkTm9kZSwge2Rh
dGFHcmlkTm9kZTogdGhpc30pOwotICAgIH0sCisgICAgfQogCi0gICAgY29sbGFwc2VSZWN1cnNp
dmVseTogZnVuY3Rpb24oKQorICAgIGNvbGxhcHNlUmVjdXJzaXZlbHkoKQogICAgIHsKICAgICAg
ICAgdmFyIGl0ZW0gPSB0aGlzOwogICAgICAgICB3aGlsZSAoaXRlbSkgewpAQCAtMTY1OCw5ICsx
NjQ2LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICAgICAgaXRlbS5jb2xsYXBzZSgpOwogICAgICAgICAgICAgaXRlbSA9IGl0ZW0udHJhdmVy
c2VOZXh0Tm9kZShmYWxzZSwgdGhpcywgdHJ1ZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAotICAgIGV4cGFuZDogZnVuY3Rpb24oKQorICAgIGV4cGFuZCgpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuaGFzQ2hpbGRyZW4gfHwgdGhpcy5leHBhbmRlZCkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE2OTYsMTggKzE2ODQsMTggQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuZGF0YUdyaWQpCiAgICAgICAgICAgICB0aGlz
LmRhdGFHcmlkLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
RXZlbnQuRXhwYW5kZWROb2RlLCB7ZGF0YUdyaWROb2RlOiB0aGlzfSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBleHBhbmRSZWN1cnNpdmVseTogZnVuY3Rpb24oKQorICAgIGV4cGFuZFJlY3Vyc2l2
ZWx5KCkKICAgICB7CiAgICAgICAgIHZhciBpdGVtID0gdGhpczsKICAgICAgICAgd2hpbGUgKGl0
ZW0pIHsKICAgICAgICAgICAgIGl0ZW0uZXhwYW5kKCk7CiAgICAgICAgICAgICBpdGVtID0gaXRl
bS50cmF2ZXJzZU5leHROb2RlKGZhbHNlLCB0aGlzKTsKICAgICAgICAgfQotICAgIH0sCisgICAg
fQogCi0gICAgcmV2ZWFsOiBmdW5jdGlvbigpCisgICAgcmV2ZWFsKCkKICAgICB7CiAgICAgICAg
IHZhciBjdXJyZW50QW5jZXN0b3IgPSB0aGlzLnBhcmVudDsKICAgICAgICAgd2hpbGUgKGN1cnJl
bnRBbmNlc3RvciAmJiAhY3VycmVudEFuY2VzdG9yLnJvb3QpIHsKQEAgLTE3MTksOSArMTcwNyw5
IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
LmVsZW1lbnQuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CiAKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInJldmVhbGVkIik7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBzZWxlY3Q6IGZ1bmN0aW9uKHN1cHJlc3NTZWxlY3RlZEV2ZW50KQorICAgIHNlbGVjdChzdXBy
ZXNzU2VsZWN0ZWRFdmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5kYXRhR3JpZCB8fCAh
dGhpcy5zZWxlY3RhYmxlIHx8IHRoaXMuc2VsZWN0ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNzM3LDE1ICsxNzI1LDE1IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBl
ID0gewogCiAgICAgICAgIGlmICghc3VwcmVzc1NlbGVjdGVkRXZlbnQpCiAgICAgICAgICAgICB0
aGlzLmRhdGFHcmlkLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdy
aWQuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZl
YWxBbmRTZWxlY3Q6IGZ1bmN0aW9uKCkKKyAgICByZXZlYWxBbmRTZWxlY3QoKQogICAgIHsKICAg
ICAgICAgdGhpcy5yZXZlYWwoKTsKICAgICAgICAgdGhpcy5zZWxlY3QoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGRlc2VsZWN0OiBmdW5jdGlvbihzdXByZXNzRGVzZWxlY3RlZEV2ZW50KQorICAg
IGRlc2VsZWN0KHN1cHJlc3NEZXNlbGVjdGVkRXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuZGF0YUdyaWQgfHwgdGhpcy5kYXRhR3JpZC5zZWxlY3RlZE5vZGUgIT09IHRoaXMgfHwgIXRo
aXMuc2VsZWN0ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzU4LDkgKzE3NDYsOSBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXN1
cHJlc3NEZXNlbGVjdGVkRXZlbnQpCiAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU2VsZWN0ZWROb2Rl
Q2hhbmdlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmF2ZXJzZU5leHROb2RlOiBmdW5jdGlv
bihza2lwSGlkZGVuLCBzdGF5V2l0aGluLCBkb250UG9wdWxhdGUsIGluZm8pCisgICAgdHJhdmVy
c2VOZXh0Tm9kZShza2lwSGlkZGVuLCBzdGF5V2l0aGluLCBkb250UG9wdWxhdGUsIGluZm8pCiAg
ICAgewogICAgICAgICBpZiAoIWRvbnRQb3B1bGF0ZSAmJiB0aGlzLmhhc0NoaWxkcmVuKQogICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoInBvcHVsYXRlIik7CkBAIC0x
NzkzLDkgKzE3ODEsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVybiAoIXNraXBIaWRkZW4g
fHwgbm9kZS5yZXZlYWxlZCkgPyBub2RlLm5leHRTaWJsaW5nIDogbnVsbDsKLSAgICB9LAorICAg
IH0KIAotICAgIHRyYXZlcnNlUHJldmlvdXNOb2RlOiBmdW5jdGlvbihza2lwSGlkZGVuLCBkb250
UG9wdWxhdGUpCisgICAgdHJhdmVyc2VQcmV2aW91c05vZGUoc2tpcEhpZGRlbiwgZG9udFBvcHVs
YXRlKQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSAoIXNraXBIaWRkZW4gfHwgdGhpcy5yZXZl
YWxlZCkgPyB0aGlzLnByZXZpb3VzU2libGluZyA6IG51bGw7CiAgICAgICAgIGlmICghZG9udFBv
cHVsYXRlICYmIG5vZGUgJiYgbm9kZS5oYXNDaGlsZHJlbikKQEAgLTE4MTQsOSArMTgwMiw5IEBA
IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50OwotICAgIH0sCisgICAgfQog
Ci0gICAgaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZTogZnVuY3Rpb24oZXZlbnQpCisg
ICAgaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCkKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5oYXNDaGlsZHJlbikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE4
MjYsOSArMTgxNCw1NyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICB2YXIgbGVmdCA9IGNlbGwudG90YWxPZmZzZXRMZWZ0ICsgdGhpcy5sZWZ0UGFk
ZGluZzsKICAgICAgICAgcmV0dXJuIGV2ZW50LnBhZ2VYID49IGxlZnQgJiYgZXZlbnQucGFnZVgg
PD0gbGVmdCArIHRoaXMuZGlzY2xvc3VyZVRvZ2dsZVdpZHRoOwotICAgIH0sCisgICAgfQorCisg
ICAgc2F2ZVBvc2l0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zYXZlZFBvc2l0aW9u
KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgX2F0dGFjaDogZnVuY3Rpb24oKQorICAgICAg
ICBpZiAoIXRoaXMucGFyZW50KQorICAgICAgICAgICAgdGhyb3coInNhdmVQb3NpdGlvbjogTm9k
ZSBtdXN0IGhhdmUgYSBwYXJlbnQuIik7CisgICAgICAgIHRoaXMuX3NhdmVkUG9zaXRpb24gPSB7
CisgICAgICAgICAgICBwYXJlbnQ6IHRoaXMucGFyZW50LAorICAgICAgICAgICAgaW5kZXg6IHRo
aXMucGFyZW50LmNoaWxkcmVuLmluZGV4T2YodGhpcykKKyAgICAgICAgfTsKKyAgICB9CisKKyAg
ICByZXN0b3JlUG9zaXRpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zYXZlZFBvc2l0
aW9uKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0aGlzLnBhcmVudCAhPT0g
dGhpcy5fc2F2ZWRQb3NpdGlvbi5wYXJlbnQpCisgICAgICAgICAgICB0aGlzLl9zYXZlZFBvc2l0
aW9uLnBhcmVudC5pbnNlcnRDaGlsZCh0aGlzLCB0aGlzLl9zYXZlZFBvc2l0aW9uLmluZGV4KTsK
KworICAgICAgICBkZWxldGUgdGhpcy5fc2F2ZWRQb3NpdGlvbjsKKyAgICB9CisKKyAgICAvLyBQ
cml2YXRlCisKKyAgICBfcmVjYWxjdWxhdGVTaWJsaW5ncyhteUluZGV4KQorICAgIHsKKyAgICAg
ICAgaWYgKCF0aGlzLnBhcmVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIg
cHJldmlvdXNDaGlsZCA9IChteUluZGV4ID4gMCA/IHRoaXMucGFyZW50LmNoaWxkcmVuW215SW5k
ZXggLSAxXSA6IG51bGwpOworCisgICAgICAgIGlmIChwcmV2aW91c0NoaWxkKSB7CisgICAgICAg
ICAgICBwcmV2aW91c0NoaWxkLm5leHRTaWJsaW5nID0gdGhpczsKKyAgICAgICAgICAgIHRoaXMu
cHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNDaGlsZDsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICB0aGlzLnByZXZpb3VzU2libGluZyA9IG51bGw7CisKKyAgICAgICAgdmFyIG5leHRDaGls
ZCA9IHRoaXMucGFyZW50LmNoaWxkcmVuW215SW5kZXggKyAxXTsKKworICAgICAgICBpZiAobmV4
dENoaWxkKSB7CisgICAgICAgICAgICBuZXh0Q2hpbGQucHJldmlvdXNTaWJsaW5nID0gdGhpczsK
KyAgICAgICAgICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0Q2hpbGQ7CisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgdGhpcy5uZXh0U2libGluZyA9IG51bGw7CisgICAgfQorCisgICAgX2F0
dGFjaCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuZGF0YUdyaWQgfHwgdGhpcy5fYXR0YWNo
ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xODU0LDkgKzE4OTAsOSBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQp
CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyAr
K2kpCiAgICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltpXS5fYXR0YWNoKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZGV0YWNoOiBmdW5jdGlvbigpCisgICAgX2RldGFjaCgpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX2F0dGFjaGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTg2
OCw0OSArMTkwNCwyMiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kp
CiAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2ldLl9kZXRhY2goKTsKLSAgICB9LAotCi0gICAg
c2F2ZVBvc2l0aW9uOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fc2F2ZWRQ
b3NpdGlvbikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAoIXRoaXMucGFyZW50
KQotICAgICAgICAgICAgdGhyb3coInNhdmVQb3NpdGlvbjogTm9kZSBtdXN0IGhhdmUgYSBwYXJl
bnQuIik7Ci0gICAgICAgIHRoaXMuX3NhdmVkUG9zaXRpb24gPSB7Ci0gICAgICAgICAgICBwYXJl
bnQ6IHRoaXMucGFyZW50LAotICAgICAgICAgICAgaW5kZXg6IHRoaXMucGFyZW50LmNoaWxkcmVu
LmluZGV4T2YodGhpcykKLSAgICAgICAgfTsKLSAgICB9LAotCi0gICAgcmVzdG9yZVBvc2l0aW9u
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3NhdmVkUG9zaXRpb24pCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMucGFyZW50ICE9PSB0aGlzLl9z
YXZlZFBvc2l0aW9uLnBhcmVudCkKLSAgICAgICAgICAgIHRoaXMuX3NhdmVkUG9zaXRpb24ucGFy
ZW50Lmluc2VydENoaWxkKHRoaXMsIHRoaXMuX3NhdmVkUG9zaXRpb24uaW5kZXgpOwotCi0gICAg
ICAgIGRlbGV0ZSB0aGlzLl9zYXZlZFBvc2l0aW9uOwogICAgIH0KLX0KLQotV2ViSW5zcGVjdG9y
LkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGU7Cit9OwogCiAvLyBVc2VkIHRvIGNyZWF0ZSBhIG5ldyB0YWJsZSByb3cgd2hlbiBl
bnRlcmluZyBuZXcgZGF0YSBieSBlZGl0aW5nIGNlbGxzLgotV2ViSW5zcGVjdG9yLlBsYWNlaG9s
ZGVyRGF0YUdyaWROb2RlID0gZnVuY3Rpb24oZGF0YSkKK1dlYkluc3BlY3Rvci5QbGFjZWhvbGRl
ckRhdGFHcmlkTm9kZSA9IGNsYXNzIFBsYWNlaG9sZGVyRGF0YUdyaWROb2RlIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZQogewotICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUu
Y2FsbCh0aGlzLCBkYXRhLCBmYWxzZSk7Ci0gICAgdGhpcy5pc1BsYWNlaG9sZGVyTm9kZSA9IHRy
dWU7Ci19Ci0KLVdlYkluc3BlY3Rvci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZS5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5QbGFjZWhvbGRlckRhdGFHcmlkTm9k
ZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLAor
ICAgIGNvbnN0cnVjdG9yKGRhdGEpCisgICAgeworICAgICAgICBzdXBlcihkYXRhLCBmYWxzZSk7
CiAKLSAgICBtYWtlTm9ybWFsOiBmdW5jdGlvbigpCisgICAgICAgIHRoaXMuaXNQbGFjZWhvbGRl
ck5vZGUgPSB0cnVlOworICAgIH0KKyAgICAKKyAgICBtYWtlTm9ybWFsKCkKICAgICB7CiAgICAg
ICAgIGRlbGV0ZSB0aGlzLmlzUGxhY2Vob2xkZXJOb2RlOwogICAgICAgICBkZWxldGUgdGhpcy5t
YWtlTm9ybWFsOwogICAgIH0KLX0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VDb250ZW50Vmlldy5qcwpp
bmRleCAyN2VhMGQ5Li42MzVhZWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlQ29udGVudFZpZXcuanMK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDQ2ICsyMyw0MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50
ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50VmlldyA9IGNsYXNzIERhdGFi
YXNlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCk7Ci0K
LSAgICB0aGlzLmRhdGFiYXNlID0gcmVwcmVzZW50ZWRPYmplY3Q7CisgICAgY29uc3RydWN0b3Io
cmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVj
dCk7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RvcmFnZS12aWV3Iik7Ci0g
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInF1ZXJ5Iik7Ci0gICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoIm1vbm9zcGFjZSIpOworICAgICAgICB0aGlzLmRhdGFiYXNlID0gcmVw
cmVzZW50ZWRPYmplY3Q7CiAKLSAgICB0aGlzLl9wcm9tcHRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fcHJvbXB0RWxlbWVudC5jbGFzc05hbWUgPSAi
ZGF0YWJhc2UtcXVlcnktcHJvbXB0IjsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fcHJvbXB0RWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJz
dG9yYWdlLXZpZXciKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInF1ZXJ5
Iik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJtb25vc3BhY2UiKTsKIAot
ICAgIHRoaXMucHJvbXB0ID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KHRoaXMsICJ0
ZXh0L3gtc3FsIik7Ci0gICAgdGhpcy5fcHJvbXB0RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnBy
b21wdC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fcHJvbXB0RWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9wcm9tcHRFbGVtZW50LmNsYXNzTmFt
ZSA9ICJkYXRhYmFzZS1xdWVyeS1wcm9tcHQiOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fcHJvbXB0RWxlbWVudCk7CiAKLSAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCB0aGlzLl9tZXNzYWdlc0NsaWNrZWQuYmluZCh0aGlzKSwgdHJ1ZSk7
Ci19OworICAgICAgICB0aGlzLnByb21wdCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21w
dCh0aGlzLCAidGV4dC94LXNxbCIpOworICAgICAgICB0aGlzLl9wcm9tcHRFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMucHJvbXB0LmVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250
ZW50Vmlldy5FdmVudCA9IHsKLSAgICBTY2hlbWFVcGRhdGVkOiAiU2NoZW1hVXBkYXRlZCIKLX07
Ci0KLVdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcsCisgICAgICAgIHRo
aXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX21lc3NhZ2VzQ2xpY2tl
ZC5iaW5kKHRoaXMpLCB0cnVlKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBh
bGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFtX
ZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuaWRlbnRpZmllcl07Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAg
IHRoaXMucHJvbXB0LnNob3duKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6
IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgdGhpcy5wcm9t
cHQudXBkYXRlTGF5b3V0KCk7CiAKQEAgLTcyLDE2ICs2NywxNiBAQCBXZWJJbnNwZWN0b3IuRGF0
YWJhc2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0RWxl
bWVudC5kYXRhR3JpZCkKICAgICAgICAgICAgICAgICByZXN1bHRFbGVtZW50LmRhdGFHcmlkLnVw
ZGF0ZUxheW91dCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlVG9Db29r
aWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlVG9Db29raWUoY29va2llKQogICAgIHsKICAg
ICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkRh
dGFiYXNlOwogICAgICAgICBjb29raWUuaG9zdCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaG9z
dDsKICAgICAgICAgY29va2llLm5hbWUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5hbWU7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjb25zb2xlUHJvbXB0Q29tcGxldGlvbnNOZWVkZWQ6IGZ1bmN0
aW9uKHByb21wdCwgZGVmYXVsdENvbXBsZXRpb25zLCBiYXNlLCBwcmVmaXgsIHN1ZmZpeCkKKyAg
ICBjb25zb2xlUHJvbXB0Q29tcGxldGlvbnNOZWVkZWQocHJvbXB0LCBkZWZhdWx0Q29tcGxldGlv
bnMsIGJhc2UsIHByZWZpeCwgc3VmZml4KQogICAgIHsKICAgICAgICAgdmFyIHJlc3VsdHMgPSBb
XTsKIApAQCAtMTA1LDIxICsxMDAsMjEgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kYXRhYmFzZS5nZXRU
YWJsZU5hbWVzKHRhYmxlTmFtZXNDYWxsYmFjay5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0K
IAotICAgIGNvbnNvbGVQcm9tcHRUZXh0Q29tbWl0dGVkOiBmdW5jdGlvbihwcm9tcHQsIHF1ZXJ5
KQorICAgIGNvbnNvbGVQcm9tcHRUZXh0Q29tbWl0dGVkKHByb21wdCwgcXVlcnkpCiAgICAgewog
ICAgICAgICB0aGlzLmRhdGFiYXNlLmV4ZWN1dGVTUUwocXVlcnksIHRoaXMuX3F1ZXJ5RmluaXNo
ZWQuYmluZCh0aGlzLCBxdWVyeSksIHRoaXMuX3F1ZXJ5RXJyb3IuYmluZCh0aGlzLCBxdWVyeSkp
OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX21lc3NhZ2VzQ2xpY2tl
ZDogZnVuY3Rpb24oKQorICAgIF9tZXNzYWdlc0NsaWNrZWQoKQogICAgIHsKICAgICAgICAgdGhp
cy5wcm9tcHQuZm9jdXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9xdWVyeUZpbmlzaGVkOiBm
dW5jdGlvbihxdWVyeSwgY29sdW1uTmFtZXMsIHZhbHVlcykKKyAgICBfcXVlcnlGaW5pc2hlZChx
dWVyeSwgY29sdW1uTmFtZXMsIHZhbHVlcykKICAgICB7CiAgICAgICAgIHZhciBkYXRhR3JpZCA9
IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5jcmVhdGVTb3J0YWJsZURhdGFHcmlkKGNvbHVtbk5hbWVz
LCB2YWx1ZXMpOwogICAgICAgICB2YXIgdHJpbW1lZFF1ZXJ5ID0gcXVlcnkudHJpbSgpOwpAQCAt
MTMyLDkgKzEyNyw5IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBpZiAodHJpbW1lZFF1ZXJ5Lm1hdGNoKC9eY3JlYXRlIC9pKSB8fCB0
cmltbWVkUXVlcnkubWF0Y2goL15kcm9wIHRhYmxlIC9pKSkKICAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3LkV2
ZW50LlNjaGVtYVVwZGF0ZWQsIHRoaXMuZGF0YWJhc2UpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3F1ZXJ5RXJyb3I6IGZ1bmN0aW9uKHF1ZXJ5LCBlcnJvcikKKyAgICBfcXVlcnlFcnJvcihxdWVy
eSwgZXJyb3IpCiAgICAgewogICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSkKICAgICAgICAgICAg
IHZhciBtZXNzYWdlID0gZXJyb3IubWVzc2FnZTsKQEAgLTE0NCw5ICsxMzksOSBAQCBXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIg
bWVzc2FnZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQW4gdW5leHBlY3RlZCBlcnJvciAlcyBv
Y2N1cnJlZC4iKS5mb3JtYXQoZXJyb3IuY29kZSk7CiAKICAgICAgICAgdGhpcy5fYXBwZW5kRXJy
b3JRdWVyeVJlc3VsdChxdWVyeSwgbWVzc2FnZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYXBw
ZW5kVmlld1F1ZXJ5UmVzdWx0OiBmdW5jdGlvbihxdWVyeSwgdmlldykKKyAgICBfYXBwZW5kVmll
d1F1ZXJ5UmVzdWx0KHF1ZXJ5LCB2aWV3KQogICAgIHsKICAgICAgICAgdmFyIHJlc3VsdEVsZW1l
bnQgPSB0aGlzLl9hcHBlbmRRdWVyeVJlc3VsdChxdWVyeSk7CiAKQEAgLTE1NSwxOCArMTUwLDE4
IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgcmVzdWx0RWxlbWVudC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwogCiAgICAgICAgIHRo
aXMuX3Byb21wdEVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoZmFsc2UpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2FwcGVuZEVycm9yUXVlcnlSZXN1bHQ6IGZ1bmN0aW9uKHF1ZXJ5LCBlcnJvclRleHQp
CisgICAgX2FwcGVuZEVycm9yUXVlcnlSZXN1bHQocXVlcnksIGVycm9yVGV4dCkKICAgICB7CiAg
ICAgICAgIHZhciByZXN1bHRFbGVtZW50ID0gdGhpcy5fYXBwZW5kUXVlcnlSZXN1bHQocXVlcnkp
OwogICAgICAgICByZXN1bHRFbGVtZW50LmNsYXNzTGlzdC5hZGQoImVycm9yIik7CiAgICAgICAg
IHJlc3VsdEVsZW1lbnQudGV4dENvbnRlbnQgPSBlcnJvclRleHQ7CiAKICAgICAgICAgdGhpcy5f
cHJvbXB0RWxlbWVudC5zY3JvbGxJbnRvVmlldyhmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfYXBwZW5kUXVlcnlSZXN1bHQ6IGZ1bmN0aW9uKHF1ZXJ5KQorICAgIF9hcHBlbmRRdWVyeVJl
c3VsdChxdWVyeSkKICAgICB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CiAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gImRhdGFiYXNlLXVz
ZXItcXVlcnkiOwpAQCAtMTg0LDQgKzE3OSw2IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VD
b250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3LkV2ZW50ID0gewor
ICAgIFNjaGVtYVVwZGF0ZWQ6ICJTY2hlbWFVcGRhdGVkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlSG9zdFRyZWVFbGVt
ZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJh
c2VIb3N0VHJlZUVsZW1lbnQuanMKaW5kZXggNWE1MmQyMC4uODViYzcwZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VIb3N0VHJl
ZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI5ICsyMywyNiBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZUhv
c3RUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKGhvc3QpCitXZWJJbnNwZWN0b3IuRGF0YWJhc2VIb3N0
VHJlZUVsZW1lbnQgPSBjbGFzcyBEYXRhYmFzZUhvc3RUcmVlRWxlbWVudCBleHRlbmRzIFdlYklu
c3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQKIHsKLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRy
ZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50LkZvbGRl
ckljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9ySG9zdChob3N0
KSwgbnVsbCk7Ci0KLSAgICB0aGlzLl9ob3N0ID0gaG9zdDsKKyAgICBjb25zdHJ1Y3Rvcihob3N0
KQorICAgIHsKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50LkZv
bGRlckljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9ySG9zdCho
b3N0KSwgbnVsbCk7CiAKLSAgICB0aGlzLmhhc0NoaWxkcmVuID0gdHJ1ZTsKLX07CisgICAgICAg
IHRoaXMuX2hvc3QgPSBob3N0OwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VIb3N0VHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VI
b3N0VHJlZUVsZW1lbnQsCisgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlOworICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvckhvc3QodGhpcy5faG9zdCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgY2F0ZWdvcnlOYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkRhdGFiYXNlcyIpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rv
ci5EYXRhYmFzZUhvc3RUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRh
YmxlQ29udGVudFZpZXcuanMKaW5kZXggYzM4Mzg4YS4uY2ExNjJjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZUNvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNjEgKzIzLDU4IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFi
bGVDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9y
LkRhdGFiYXNlVGFibGVDb250ZW50VmlldyA9IGNsYXNzIERhdGFiYXNlVGFibGVDb250ZW50Vmll
dyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50VmlldwogewotICAgIFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5jYWxsKHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcu
U3R5bGVDbGFzc05hbWUpOworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAg
IHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50
ZWRPYmplY3QpOwogCi0gICAgdGhpcy51cGRhdGUoKTsKLX07CisgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcuU3R5
bGVDbGFzc05hbWUpOwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LlN0
eWxlQ2xhc3NOYW1lID0gImRhdGFiYXNlLXRhYmxlIjsKLQotV2ViSW5zcGVjdG9yLkRhdGFiYXNl
VGFibGVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcsCisgICAgICAgIHRoaXMudXBkYXRlKCk7Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgYWxsb3dlZE5hdmlnYXRpb25TaWRlYmFy
UGFuZWxzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbV2ViSW5zcGVjdG9yLnJlc291cmNlU2lk
ZWJhclBhbmVsLmlkZW50aWZpZXJdOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlOiBmdW5j
dGlvbigpCisgICAgdXBkYXRlKCkKICAgICB7CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QuZGF0YWJhc2UuZXhlY3V0ZVNRTCgiU0VMRUNUICogRlJPTSBcIiIgKyB0aGlzLl9lc2NhcGVU
YWJsZU5hbWUodGhpcy5yZXByZXNlbnRlZE9iamVjdC5uYW1lKSArICJcIiIsIHRoaXMuX3F1ZXJ5
RmluaXNoZWQuYmluZCh0aGlzKSwgdGhpcy5fcXVlcnlFcnJvci5iaW5kKHRoaXMpKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91
dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZGF0YUdyaWQpCiAgICAgICAgICAgICB0aGlz
Ll9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVUb0Nv
b2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nvb2tpZShjb29raWUpCiAgICAgewog
ICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUu
RGF0YWJhc2VUYWJsZTsKICAgICAgICAgY29va2llLmhvc3QgPSB0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0Lmhvc3Q7CiAgICAgICAgIGNvb2tpZS5uYW1lID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5u
YW1lOwogICAgICAgICBjb29raWUuZGF0YWJhc2UgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRh
dGFiYXNlLm5hbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRz
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZGF0YUdyaWQpCiAgICAgICAgICAgICByZXR1
cm4gW107CiAgICAgICAgIHJldHVybiBbdGhpcy5fZGF0YUdyaWQuc2Nyb2xsQ29udGFpbmVyXTsK
LSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9lc2NhcGVUYWJsZU5hbWU6
IGZ1bmN0aW9uKG5hbWUpCisgICAgX2VzY2FwZVRhYmxlTmFtZShuYW1lKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvXCIvZywgIlwiXCIiKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9xdWVyeUZpbmlzaGVkOiBmdW5jdGlvbihjb2x1bW5OYW1lcywgdmFsdWVzKQorICAgIF9x
dWVyeUZpbmlzaGVkKGNvbHVtbk5hbWVzLCB2YWx1ZXMpCiAgICAgewogICAgICAgICAvLyBJdCB3
b3VsZCBiZSBuaWNlIHRvIGRvIGJldHRlciB0aGFuIGNyZWF0aW5nIGEgbmV3IGRhdGEgZ3JpZCBl
YWNoIHRpbWUgdGhlIHRhYmxlIGlzIHVwZGF0ZWQsIGJ1dCB0aGUgdGFibGUgdXBkYXRpbmcKICAg
ICAgICAgLy8gZG9lc24ndCBoYXBwZW4gdmVyeSBmcmVxdWVudGx5LiBBZGRpdGlvbmFsbHksIHVz
aW5nIERhdGFHcmlkJ3MgY3JlYXRlU29ydGFibGVEYXRhR3JpZCBtYWtlcyBvdXIgY29kZSBtdWNo
IGNsZWFuZXIgYW5kIGl0IGtub3dzCkBAIC05NSwxMyArOTIsMTMgQEAgV2ViSW5zcGVjdG9yLkRh
dGFiYXNlVGFibGVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwogICAgICAgICB0aGlzLl9k
YXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9xdWVyeUVycm9y
OiBmdW5jdGlvbihlcnJvcikKKyAgICBfcXVlcnlFcnJvcihlcnJvcikKICAgICB7CiAgICAgICAg
IHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLmNyZWF0ZU1lc3NhZ2VUZXh0VmlldyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkFuIGVycm9yIG9jY3VyZWQgdHJ5aW5nIHRvXG5yZWFkIHRoZSDigJwlc+KAnSB0
YWJsZS4iKS5mb3JtYXQodGhpcy5yZXByZXNlbnRlZE9iamVjdC5uYW1lKSwgdHJ1ZSkpOwogICAg
IH0KIH07CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGU7CitXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImRhdGFiYXNl
LXRhYmxlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RhdGFiYXNlVGFibGVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVGFibGVUcmVlRWxlbWVudC5qcwppbmRleCBi
NGE1ZDQ2Li5hNTJiZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywxOSArMjMsMTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24o
cmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50
ID0gY2xhc3MgRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QpOworICAgIGNvbnN0
cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZU9i
amVjdCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywg
V2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVUcmVlRWxlbWVudC5EYXRhYmFzZVRhYmxlSWNvblN0
eWxlQ2xhc3NOYW1lLCByZXByZXNlbnRlZE9iamVjdC5uYW1lLCBudWxsLCByZXByZXNlbnRlZE9i
amVjdCwgZmFsc2UpOworICAgICAgICBzdXBlcigiZGF0YWJhc2UtdGFibGUtaWNvbiIsIHJlcHJl
c2VudGVkT2JqZWN0Lm5hbWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CiAKLSAg
ICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7CisgICAgfQog
fTsKLQotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVUcmVlRWxlbWVudC5EYXRhYmFzZVRhYmxl
SWNvblN0eWxlQ2xhc3NOYW1lID0gImRhdGFiYXNlLXRhYmxlLWljb24iOwotCi1XZWJJbnNwZWN0
b3IuRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVUcmVlRWxlbWVudAotfTsKLQotV2ViSW5zcGVj
dG9yLkRhdGFiYXNlVGFibGVUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRyZWVFbGVtZW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUcmVl
RWxlbWVudC5qcwppbmRleCBjYjQ3OTllLi5iYWNjOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRyZWVFbGVtZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVHJl
ZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDMzICsyMywzMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50ID0gZnVuY3Rp
b24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuRGF0YWJhc2VUcmVlRWxlbWVudCA9
IGNsYXNzIERhdGFiYXNlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRy
ZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYmplY3QpOwotCi0gICAgV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVt
ZW50LkRhdGFiYXNlSWNvblN0eWxlQ2xhc3NOYW1lLCByZXByZXNlbnRlZE9iamVjdC5uYW1lLCBu
dWxsLCByZXByZXNlbnRlZE9iamVjdCwgdHJ1ZSk7Ci0KLSAgICB0aGlzLnNtYWxsID0gdHJ1ZTsK
LSAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50
ZWRPYmplY3QpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFzZU9iamVjdCk7CiAKLSAgICAvLyBTaW5j
ZSB3ZSBhcmUgaW5pdGlhbGx5IHRlbGxpbmcgdGhlIHRyZWUgZWxlbWVudCB3ZSBkb24ndCBoYXZl
IGFueSBjaGlsZHJlbiwgbWFrZSBzdXJlIHRoYXQgd2UgdHJ5IHRvIHBvcHVsYXRlCi0gICAgLy8g
dGhlIHRyZWUgZWxlbWVudCAod2hpY2ggd2lsbCBnZXQgYSBsaXN0IG9mIHRhYmxlcykgd2hlbiB0
aGUgZWxlbWVudCBpcyBjcmVhdGVkLgotICAgIHRoaXMub25wb3B1bGF0ZSgpOwotfTsKKyAgICAg
ICAgc3VwZXIoImRhdGFiYXNlLWljb24iLCByZXByZXNlbnRlZE9iamVjdC5uYW1lLCBudWxsLCBy
ZXByZXNlbnRlZE9iamVjdCwgdHJ1ZSk7CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVt
ZW50LkRhdGFiYXNlSWNvblN0eWxlQ2xhc3NOYW1lID0gImRhdGFiYXNlLWljb24iOworICAgICAg
ICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNlOwog
Ci1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50LAorICAgICAgICAvLyBT
aW5jZSB3ZSBhcmUgaW5pdGlhbGx5IHRlbGxpbmcgdGhlIHRyZWUgZWxlbWVudCB3ZSBkb24ndCBo
YXZlIGFueSBjaGlsZHJlbiwgbWFrZSBzdXJlIHRoYXQgd2UgdHJ5IHRvIHBvcHVsYXRlCisgICAg
ICAgIC8vIHRoZSB0cmVlIGVsZW1lbnQgKHdoaWNoIHdpbGwgZ2V0IGEgbGlzdCBvZiB0YWJsZXMp
IHdoZW4gdGhlIGVsZW1lbnQgaXMgY3JlYXRlZC4KKyAgICAgICAgdGhpcy5vbnBvcHVsYXRlKCk7
CisgICAgfQogCiAgICAgLy8gT3ZlcnJpZGVzIGZyb20gVHJlZUVsZW1lbnQgKFByaXZhdGUpCiAK
LSAgICBvbmNvbGxhcHNlOiBmdW5jdGlvbigpCisgICAgb25jb2xsYXBzZSgpCiAgICAgewogICAg
ICAgICB0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBvbnBvcHVsYXRlOiBmdW5jdGlvbigpCisgICAgb25wb3B1bGF0ZSgpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggJiYgIXRoaXMuc2hvdWxkUmVmcmVzaENoaWxk
cmVuKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzEsNSArNjgsMyBAQCBXZWJJbnNwZWN0b3Iu
RGF0YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMucmVwcmVzZW50
ZWRPYmplY3QuZ2V0VGFibGVOYW1lcyh0YWJsZU5hbWVzQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAg
ICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdn
ZXJEYXNoYm9hcmRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmpzCmluZGV4IGRmNjBjNGYuLjM1NzA5NmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVn
Z2VyRGFzaGJvYXJkVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9EZWJ1Z2dlckRhc2hib2FyZFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNTcgKzIzLDQ4IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyRGFzaGJvYXJkVmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldyA9IGNsYXNzIERlYnVnZ2VyRGFzaGJvYXJkVmlldyBl
eHRlbmRzIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRh
c2hib2FyZFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCwgImRlYnVnZ2VyIik7Ci0K
LSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHRo
aXMuX3JlYnVpbGRMb2NhdGlvbiwgdGhpcyk7Ci0KLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0g
bmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOworICAgIGNvbnN0cnVjdG9yKHJlcHJl
c2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QsICJk
ZWJ1Z2dlciIpOwogCi0gICAgdmFyIHJlc3VtZUltYWdlOwotICAgIGlmIChXZWJJbnNwZWN0b3Iu
UGxhdGZvcm0uaXNMZWdhY3lNYWNPUykKLSAgICAgICAgcmVzdW1lSW1hZ2UgPSB7c3JjOiAiSW1h
Z2VzL0xlZ2FjeS9SZXN1bWUuc3ZnIiwgd2lkdGg6IDE2LCBoZWlnaHQ6IDE2fTsKLSAgICBlbHNl
Ci0gICAgICAgIHJlc3VtZUltYWdlID0ge3NyYzogIkltYWdlcy9SZXN1bWUuc3ZnIiwgd2lkdGg6
IDE1LCBoZWlnaHQ6IDE1fTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZl
Q2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9yZWJ1aWxkTG9jYXRpb24sIHRoaXMpOwogCi0gICAg
dmFyIHRvb2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnRpbnVlIHNjcmlwdCBleGVj
dXRpb24gKCVzIG9yICVzKSIpLmZvcm1hdChXZWJJbnNwZWN0b3IuZGVidWdnZXJTaWRlYmFyUGFu
ZWwucGF1c2VPclJlc3VtZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUsIFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlclNpZGViYXJQYW5lbC5wYXVzZU9yUmVzdW1lQWx0ZXJuYXRlS2V5Ym9hcmRTaG9y
dGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgdGhpcy5fZGVidWdnZXJSZXN1bWVCdXR0b25JdGVtID0g
bmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkZWJ1Z2dlci1k
YXNoYm9hcmQtcGF1c2UiLCB0b29sdGlwLCB0b29sdGlwLCByZXN1bWVJbWFnZS5zcmMsIHJlc3Vt
ZUltYWdlLndpZHRoLCByZXN1bWVJbWFnZS5oZWlnaHQsIHRydWUpOwotICAgIHRoaXMuX2RlYnVn
Z2VyUmVzdW1lQnV0dG9uSXRlbS5hY3RpdmF0ZWQgPSB0cnVlOwotICAgIHRoaXMuX2RlYnVnZ2Vy
UmVzdW1lQnV0dG9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZp
Z2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9yZXN1bWVCdXR0b25DbGlja2VkLCB0aGlz
KTsKLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2RlYnVn
Z2VyUmVzdW1lQnV0dG9uSXRlbSk7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOwogCi0gICAgdmFyIG1lc3NhZ2UgPSB0
aGlzLl9tZXNzYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
IG1lc3NhZ2UuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3
Lk1lc3NhZ2VTdHlsZUNsYXNzTmFtZSk7Ci0gICAgbWVzc2FnZS50aXRsZSA9IG1lc3NhZ2UudGV4
dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlYnVnZ2VyIFBhdXNlZCIpOwotICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdlKTsKKyAgICAgICAgdmFyIHJlc3VtZUlt
YWdlOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MpCisg
ICAgICAgICAgICByZXN1bWVJbWFnZSA9IHtzcmM6ICJJbWFnZXMvTGVnYWN5L1Jlc3VtZS5zdmci
LCB3aWR0aDogMTYsIGhlaWdodDogMTZ9OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1
bWVJbWFnZSA9IHtzcmM6ICJJbWFnZXMvUmVzdW1lLnN2ZyIsIHdpZHRoOiAxNSwgaGVpZ2h0OiAx
NX07CiAKLSAgICB2YXIgZGl2aWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICBkaXZpZGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZWJ1
Z2dlckRhc2hib2FyZFZpZXcuRGl2aWRlclN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQoZGl2aWRlckVsZW1lbnQpOworICAgICAgICB2YXIgdG9vbHRpcCA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiQ29udGludWUgc2NyaXB0IGV4ZWN1dGlvbiAoJXMgb3IgJXMp
IikuZm9ybWF0KFdlYkluc3BlY3Rvci5kZWJ1Z2dlclNpZGViYXJQYW5lbC5wYXVzZU9yUmVzdW1l
S2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSwgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyU2lkZWJh
clBhbmVsLnBhdXNlT3JSZXN1bWVBbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1l
KTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJSZXN1bWVCdXR0b25JdGVtID0gbmV3IFdlYkluc3Bl
Y3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkZWJ1Z2dlci1kYXNoYm9hcmQtcGF1
c2UiLCB0b29sdGlwLCB0b29sdGlwLCByZXN1bWVJbWFnZS5zcmMsIHJlc3VtZUltYWdlLndpZHRo
LCByZXN1bWVJbWFnZS5oZWlnaHQsIHRydWUpOworICAgICAgICB0aGlzLl9kZWJ1Z2dlclJlc3Vt
ZUJ1dHRvbkl0ZW0uYWN0aXZhdGVkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJSZXN1
bWVCdXR0b25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3Jlc3VtZUJ1dHRvbkNsaWNrZWQsIHRoaXMpOwor
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2RlYnVn
Z2VyUmVzdW1lQnV0dG9uSXRlbSk7CiAKLSAgICB2YXIgbG9jYXRpb25FbGVtZW50ID0gdGhpcy5f
bG9jYXRpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgbG9j
YXRpb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJk
Vmlldy5Mb2NhdGlvblN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQobG9jYXRpb25FbGVtZW50KTsKKyAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLl9tZXNzYWdl
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICBtZXNzYWdl
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5NZXNzYWdl
U3R5bGVDbGFzc05hbWUpOworICAgICAgICBtZXNzYWdlLnRpdGxlID0gbWVzc2FnZS50ZXh0Q29u
dGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVidWdnZXIgUGF1c2VkIik7CisgICAgICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdlKTsKIAotICAgIHRoaXMuX3JlYnVpbGRM
b2NhdGlvbigpOwotfTsKKyAgICAgICAgdmFyIGRpdmlkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGRpdmlkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5EaXZpZGVyU3R5bGVDbGFzc05hbWUp
OworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2aWRlckVsZW1lbnQpOwogCi1X
ZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NO
YW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkZ1bmN0aW9uSWNvblN0eWxl
Q2xhc3NOYW1lOwotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5FdmVudExpc3Rl
bmVySWNvblN0eWxlQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50
LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIHZhciBsb2NhdGlvbkVs
ZW1lbnQgPSB0aGlzLl9sb2NhdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKKyAgICAgICAgbG9jYXRpb25FbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5Mb2NhdGlvblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGxvY2F0aW9uRWxlbWVudCk7CiAKLVdlYkluc3BlY3Rv
ci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuSWNvblN0eWxlQ2xhc3NOYW1lID0gImljb24iOwotV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5NZXNzYWdlU3R5bGVDbGFzc05hbWUgPSAi
bWVzc2FnZSI7Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkRpdmlkZXJTdHls
ZUNsYXNzTmFtZSA9ICJkaXZpZGVyIjsKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZp
ZXcuTG9jYXRpb25TdHlsZUNsYXNzTmFtZSA9ICJsb2NhdGlvbiI7Ci1XZWJJbnNwZWN0b3IuRGVi
dWdnZXJEYXNoYm9hcmRWaWV3LkZ1bmN0aW9uTmFtZVN0eWxlQ2xhc3NOYW1lID0gImZ1bmN0aW9u
LW5hbWUiOworICAgICAgICB0aGlzLl9yZWJ1aWxkTG9jYXRpb24oKTsKKyAgICB9CiAKLVdlYklu
c3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LAotICAgIF9fcHJvdG9fXzog
V2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcucHJvdG90eXBlLAorICAgIC8vIFByaXZhdGUKIAot
ICAgIF9yZWJ1aWxkTG9jYXRpb246IGZ1bmN0aW9uKCkKKyAgICBfcmVidWlsZExvY2F0aW9uKCkK
ICAgICB7CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVD
YWxsRnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDcsMTAgKzk4LDE5IEBAIFdlYklu
c3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIg
c2hvdWxkUHJldmVudExpbmtGbG9hdCA9IHRydWU7CiAgICAgICAgIHZhciBsaW5rRWxlbWVudCA9
IFdlYkluc3BlY3Rvci5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb25MaW5rKHNvdXJjZUNvZGVMb2Nh
dGlvbiwgc2hvdWxkUHJldmVudExpbmtGbG9hdCk7CiAgICAgICAgIHRoaXMuX2xvY2F0aW9uRWxl
bWVudC5hcHBlbmRDaGlsZChsaW5rRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVz
dW1lQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9yZXN1bWVCdXR0b25DbGlja2VkKCkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CiAg
ICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5GdW5jdGlvbklj
b25TdHlsZUNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5GdW5j
dGlvbkljb25TdHlsZUNsYXNzTmFtZTsKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZp
ZXcuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DYWxsRnJh
bWVUcmVlRWxlbWVudC5FdmVudExpc3RlbmVySWNvblN0eWxlQ2xhc3NOYW1lOworCitXZWJJbnNw
ZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3Lkljb25TdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsK
K1dlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuTWVzc2FnZVN0eWxlQ2xhc3NOYW1l
ID0gIm1lc3NhZ2UiOworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5EaXZpZGVy
U3R5bGVDbGFzc05hbWUgPSAiZGl2aWRlciI7CitXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9h
cmRWaWV3LkxvY2F0aW9uU3R5bGVDbGFzc05hbWUgPSAibG9jYXRpb24iOworV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5GdW5jdGlvbk5hbWVTdHlsZUNsYXNzTmFtZSA9ICJmdW5j
dGlvbi1uYW1lIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKaW5kZXggNjc4NzI5
OS4uMWM0ZjRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGVidWdnZXJTaWRlYmFyUGFuZWwuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE1MSAr
MjMsMTQwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyU2lkZWJhclBhbmVsID0gY2xhc3MgRGVidWdnZXJTaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbAogewotICAgIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmNhbGwodGhpcywgImRlYnVnZ2VyIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJEZWJ1Z2dlciIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQnVnLnN2ZyIs
ICIzIiwgdHJ1ZSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWlu
UmVzb3VyY2VDaGFuZ2VkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgdGhpcy5f
cmVzb3VyY2VBZGRlZCwgdGhpcyk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVh
a3BvaW50c0VuYWJsZWREaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5n
ZSwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQ2FsbEZyYW1lc0RpZENoYW5n
ZSwgdGhpcy5fZGVidWdnZXJDYWxsRnJhbWVzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50QWRkZWQsIHRoaXMuX2JyZWFrcG9pbnRBZGRlZCwg
dGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludFJlbW92ZWQsIHRo
aXMuX2JyZWFrcG9pbnRSZW1vdmVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVu
dC5TY3JpcHRBZGRlZCwgdGhpcy5fc2NyaXB0QWRkZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlNjcmlwdHNDbGVhcmVkLCB0aGlzLl9zY3JpcHRzQ2xlYXJlZCwgdGhpcyk7
Ci0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCB0aGlzLl9kZWJ1Z2dlckRpZFBh
dXNlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCB0aGlzLl9k
ZWJ1Z2dlckRpZFJlc3VtZSwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0
aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9kZWJ1Z2dlckFjdGl2ZUNhbGxGcmFtZURpZENo
YW5nZSwgdGhpcyk7Ci0KLSAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50c0tleWJvYXJkU2hvcnRj
dXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIlkiLCB0aGlzLl9icmVha3Bv
aW50c1RvZ2dsZUJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5wYXVzZU9yUmVz
dW1lS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sIHwgV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIlkiLCB0aGlz
Ll9kZWJ1Z2dlclBhdXNlUmVzdW1lQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlz
Ll9zdGVwT3ZlcktleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkY2LCB0aGlzLl9k
ZWJ1Z2dlclN0ZXBPdmVyQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9zdGVw
SW50b0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQo
bnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkY3LCB0aGlzLl9kZWJ1Z2dl
clN0ZXBJbnRvQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9zdGVwT3V0S2V5
Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRjgsIHRoaXMuX2RlYnVnZ2VyU3RlcE91
dEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0KLSAgICB0aGlzLnBhdXNlT3JSZXN1bWVBbHRl
cm5hdGVLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2ws
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5CYWNrc2xhc2gsIHRoaXMuX2RlYnVn
Z2VyUGF1c2VSZXN1bWVCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwotICAgIHRoaXMuX3N0ZXBP
dmVyQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JD
b250cm9sLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuU2luZ2xlUXVvdGUsIHRo
aXMuX2RlYnVnZ2VyU3RlcE92ZXJCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOwotICAgIHRoaXMu
X3N0ZXBJbnRvQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21t
YW5kT3JDb250cm9sLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuU2VtaWNvbG9u
LCB0aGlzLl9kZWJ1Z2dlclN0ZXBJbnRvQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKLSAgICB0
aGlzLl9zdGVwT3V0QWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5T
aGlmdCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNv
bnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5TZW1pY29sb24sIHRoaXMu
X2RlYnVnZ2VyU3RlcE91dEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0KLSAgICB0aGlzLl9u
YXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyOwotICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOwotICAgIAot
ICAgIHZhciBpbWFnZVNpemUgPSBXZWJJbnNwZWN0b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUyA/
IDE2IDogMTU7Ci0KLSAgICB2YXIgYnJlYWtwb2ludHNJbWFnZSA9IHtzcmM6IHBsYXRmb3JtSW1h
Z2VQYXRoKCJCcmVha3BvaW50cy5zdmciKSwgd2lkdGg6IGltYWdlU2l6ZSwgaGVpZ2h0OiBpbWFn
ZVNpemV9OwotICAgIHZhciBwYXVzZUltYWdlID0ge3NyYzogcGxhdGZvcm1JbWFnZVBhdGgoIlBh
dXNlLnN2ZyIpLCB3aWR0aDogaW1hZ2VTaXplLCBoZWlnaHQ6IGltYWdlU2l6ZX07Ci0gICAgdmFy
IHJlc3VtZUltYWdlID0ge3NyYzogcGxhdGZvcm1JbWFnZVBhdGgoIlJlc3VtZS5zdmciKSwgd2lk
dGg6IGltYWdlU2l6ZSwgaGVpZ2h0OiBpbWFnZVNpemV9OwotICAgIHZhciBzdGVwT3ZlckltYWdl
ID0ge3NyYzogcGxhdGZvcm1JbWFnZVBhdGgoIlN0ZXBPdmVyLnN2ZyIpLCB3aWR0aDogaW1hZ2VT
aXplLCBoZWlnaHQ6IGltYWdlU2l6ZX07Ci0gICAgdmFyIHN0ZXBJbnRvSW1hZ2UgPSB7c3JjOiBw
bGF0Zm9ybUltYWdlUGF0aCgiU3RlcEludG8uc3ZnIiksIHdpZHRoOiBpbWFnZVNpemUsIGhlaWdo
dDogaW1hZ2VTaXplfTsKLSAgICB2YXIgc3RlcE91dEltYWdlID0ge3NyYzogcGxhdGZvcm1JbWFn
ZVBhdGgoIlN0ZXBPdXQuc3ZnIiksIHdpZHRoOiBpbWFnZVNpemUsIGhlaWdodDogaW1hZ2VTaXpl
fTsKLQotICAgIHZhciB0b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGUgYWxs
IGJyZWFrcG9pbnRzICglcykiKS5mb3JtYXQodGhpcy5fdG9nZ2xlQnJlYWtwb2ludHNLZXlib2Fy
ZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKLSAgICB2YXIgYWx0VG9vbFRpcCA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRGlzYWJsZSBhbGwgYnJlYWtwb2ludHMgKCVzKSIpLmZvcm1hdCh0aGlzLl90
b2dnbGVCcmVha3BvaW50c0tleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwotCi0gICAgdGhp
cy5fZGVidWdnZXJCcmVha3BvaW50c0J1dHRvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2
YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRlYnVnZ2VyLWJyZWFrcG9pbnRzIiwgdG9vbFRpcCwg
YWx0VG9vbFRpcCwgYnJlYWtwb2ludHNJbWFnZS5zcmMsIGJyZWFrcG9pbnRzSW1hZ2Uud2lkdGgs
IGJyZWFrcG9pbnRzSW1hZ2UuaGVpZ2h0KTsKLSAgICB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRz
QnV0dG9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmJyZWFr
cG9pbnRzRW5hYmxlZDsKLSAgICB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRzQnV0dG9uSXRlbS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5D
bGlja2VkLCB0aGlzLl9icmVha3BvaW50c1RvZ2dsZUJ1dHRvbkNsaWNrZWQsIHRoaXMpOwotICAg
IHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fZGVidWdnZXJCcmVh
a3BvaW50c0J1dHRvbkl0ZW0pOwotCi0gICAgdG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUGF1c2Ugc2NyaXB0IGV4ZWN1dGlvbiAoJXMgb3IgJXMpIikuZm9ybWF0KHRoaXMucGF1c2VP
clJlc3VtZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUsIHRoaXMucGF1c2VPclJlc3VtZUFs
dGVybmF0ZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOwotICAgIGFsdFRvb2xUaXAgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnRpbnVlIHNjcmlwdCBleGVjdXRpb24gKCVzIG9yICVz
KSIpLmZvcm1hdCh0aGlzLnBhdXNlT3JSZXN1bWVLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1l
LCB0aGlzLnBhdXNlT3JSZXN1bWVBbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1l
KTsKLQotICAgIHRoaXMuX2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25JdGVtID0gbmV3IFdlYklu
c3BlY3Rvci5Ub2dnbGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiZGVidWdnZXItcGF1c2UtcmVzdW1l
IiwgdG9vbFRpcCwgYWx0VG9vbFRpcCwgcGF1c2VJbWFnZS5zcmMsIHJlc3VtZUltYWdlLnNyYywg
cGF1c2VJbWFnZS53aWR0aCwgcGF1c2VJbWFnZS5oZWlnaHQpOwotICAgIHRoaXMuX2RlYnVnZ2Vy
UGF1c2VSZXN1bWVCdXR0b25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX2RlYnVnZ2VyUGF1c2VSZXN1bWVC
dXR0b25DbGlja2VkLCB0aGlzKTsKLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRp
b25JdGVtKHRoaXMuX2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25JdGVtKTsKLQotICAgIHRoaXMu
X2RlYnVnZ2VyU3RlcE92ZXJCdXR0b25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZp
Z2F0aW9uSXRlbSgiZGVidWdnZXItc3RlcC1vdmVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
dGVwIG92ZXIgKCVzIG9yICVzKSIpLmZvcm1hdCh0aGlzLl9zdGVwT3ZlcktleWJvYXJkU2hvcnRj
dXQuZGlzcGxheU5hbWUsIHRoaXMuX3N0ZXBPdmVyQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dC5k
aXNwbGF5TmFtZSksIHN0ZXBPdmVySW1hZ2Uuc3JjLCBzdGVwT3ZlckltYWdlLndpZHRoLCBzdGVw
T3ZlckltYWdlLmhlaWdodCk7Ci0gICAgdGhpcy5fZGVidWdnZXJTdGVwT3ZlckJ1dHRvbkl0ZW0u
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQu
Q2xpY2tlZCwgdGhpcy5fZGVidWdnZXJTdGVwT3ZlckJ1dHRvbkNsaWNrZWQsIHRoaXMpOwotICAg
IHRoaXMuX2RlYnVnZ2VyU3RlcE92ZXJCdXR0b25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKLSAgICB0
aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2RlYnVnZ2VyU3RlcE92
ZXJCdXR0b25JdGVtKTsKLQotICAgIHRoaXMuX2RlYnVnZ2VyU3RlcEludG9CdXR0b25JdGVtID0g
bmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiZGVidWdnZXItc3RlcC1pbnRv
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGVwIGludG8gKCVzIG9yICVzKSIpLmZvcm1hdCh0
aGlzLl9zdGVwSW50b0tleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUsIHRoaXMuX3N0ZXBJbnRv
QWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSksIHN0ZXBJbnRvSW1hZ2Uuc3Jj
LCBzdGVwSW50b0ltYWdlLndpZHRoLCBzdGVwSW50b0ltYWdlLmhlaWdodCk7Ci0gICAgdGhpcy5f
ZGVidWdnZXJTdGVwSW50b0J1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fZGVidWdnZXJTdGVwSW50
b0J1dHRvbkNsaWNrZWQsIHRoaXMpOwotICAgIHRoaXMuX2RlYnVnZ2VyU3RlcEludG9CdXR0b25J
dGVtLmVuYWJsZWQgPSBmYWxzZTsKLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRp
b25JdGVtKHRoaXMuX2RlYnVnZ2VyU3RlcEludG9CdXR0b25JdGVtKTsKLQotICAgIHRoaXMuX2Rl
YnVnZ2VyU3RlcE91dEJ1dHRvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRp
b25JdGVtKCJkZWJ1Z2dlci1zdGVwLW91dCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RlcCBv
dXQgKCVzIG9yICVzKSIpLmZvcm1hdCh0aGlzLl9zdGVwT3V0S2V5Ym9hcmRTaG9ydGN1dC5kaXNw
bGF5TmFtZSwgdGhpcy5fc3RlcE91dEFsdGVybmF0ZUtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5h
bWUpLCBzdGVwT3V0SW1hZ2Uuc3JjLCBzdGVwT3V0SW1hZ2Uud2lkdGgsIHN0ZXBPdXRJbWFnZS5o
ZWlnaHQpOwotICAgIHRoaXMuX2RlYnVnZ2VyU3RlcE91dEJ1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhp
cy5fZGVidWdnZXJTdGVwT3V0QnV0dG9uQ2xpY2tlZCwgdGhpcyk7Ci0gICAgdGhpcy5fZGVidWdn
ZXJTdGVwT3V0QnV0dG9uSXRlbS5lbmFibGVkID0gZmFsc2U7Ci0gICAgdGhpcy5fbmF2aWdhdGlv
bkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9kZWJ1Z2dlclN0ZXBPdXRCdXR0b25JdGVtKTsK
LQotICAgIC8vIEFkZCB0aGlzIG9mZnNldC1zZWN0aW9ucyBjbGFzcyBuYW1lIHNvIHRoZSBzdGlj
a3kgaGVhZGVycyBkb24ndCBvdmVybGFwIHRoZSBuYXZpZ2F0aW9uIGJhci4KLSAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuT2Zm
c2V0U2VjdGlvbnNTdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9nbG9iYWxCcmVha3BvaW50
c0ZvbGRlclRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudChX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkdsb2JhbCBCcmVha3BvaW50cyIpLCBudWxsLCBXZWJJbnNw
ZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuR2xvYmFsSWNvblN0eWxlQ2xhc3NOYW1lKTsKLSAg
ICB0aGlzLl9hbGxFeGNlcHRpb25zQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3Bl
Y3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5h
bGxFeGNlcHRpb25zQnJlYWtwb2ludCwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVs
LkV4Y2VwdGlvbkljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbGwg
RXhjZXB0aW9ucyIpKTsKLSAgICB0aGlzLl9hbGxVbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50
VHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudChXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFsbFVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQs
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5FeGNlcHRpb25JY29uU3R5bGVDbGFz
c05hbWUsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxsIFVuY2F1Z2h0IEV4Y2VwdGlvbnMiKSk7
Ci0KLSAgICB0aGlzLmZpbHRlckJhci5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiRmlsdGVyIEJyZWFrcG9pbnQgTGlzdCIpOwotICAgIHZhciBzaG93UmVzb3VyY2VzV2l0aEJy
ZWFrcG9pbnRzT25seUZpbHRlckZ1bmN0aW9uID0gZnVuY3Rpb24odHJlZUVsZW1lbnQpCi0gICAg
ewotICAgICAgICAvLyBLZWVwIGJyZWFrcG9pbnRzIGFuZCBvdGhlciBlbGVtZW50cyB0aGF0IGFy
ZW4ndCByZXNvdXJjZXMuCi0gICAgICAgIGlmICghdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigiZGVidWdnZXIiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlYnVnZ2VyIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1C
dWcuc3ZnIiwgIjMiLCB0cnVlKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdl
LCB0aGlzLl9tYWluUmVzb3VyY2VDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNl
V2FzQWRkZWQsIHRoaXMuX3Jlc291cmNlQWRkZWQsIHRoaXMpOworCisgICAgICAgIFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcy5fYnJlYWtw
b2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuQ2FsbEZyYW1lc0RpZENoYW5nZSwgdGhpcy5fZGVidWdnZXJDYWxsRnJhbWVzRGlkQ2hh
bmdlLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFk
ZGVkLCB0aGlzLl9icmVha3BvaW50QWRkZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5CcmVha3BvaW50UmVtb3ZlZCwgdGhpcy5fYnJlYWtwb2ludFJlbW92ZWQsIHRo
aXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5TY3JpcHRBZGRlZCwgdGhpcy5f
c2NyaXB0QWRkZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5TY3Jp
cHRzQ2xlYXJlZCwgdGhpcy5fc2NyaXB0c0NsZWFyZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHRoaXMuX2RlYnVnZ2VyRGlkUGF1c2UsIHRoaXMpOwor
ICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCB0aGlzLl9kZWJ1Z2dlckRp
ZFJlc3VtZSwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkFjdGl2ZUNh
bGxGcmFtZURpZENoYW5nZSwgdGhpcy5fZGVidWdnZXJBY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2Us
IHRoaXMpOworCisgICAgICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnRzS2V5Ym9hcmRTaG9ydGN1
dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCAiWSIsIHRoaXMuX2JyZWFrcG9p
bnRzVG9nZ2xlQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5wYXVzZU9y
UmVzdW1lS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sIHwgV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIlkiLCB0
aGlzLl9kZWJ1Z2dlclBhdXNlUmVzdW1lQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAg
ICAgdGhpcy5fc3RlcE92ZXJLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXli
b2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5GNiwg
dGhpcy5fZGVidWdnZXJTdGVwT3ZlckJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7CisgICAgICAg
IHRoaXMuX3N0ZXBJbnRvS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRjcsIHRo
aXMuX2RlYnVnZ2VyU3RlcEludG9CdXR0b25DbGlja2VkLmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLl9zdGVwT3V0S2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRT
aG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRjgsIHRoaXMu
X2RlYnVnZ2VyU3RlcE91dEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhp
cy5wYXVzZU9yUmVzdW1lQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmll
ci5Db21tYW5kT3JDb250cm9sLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuQmFj
a3NsYXNoLCB0aGlzLl9kZWJ1Z2dlclBhdXNlUmVzdW1lQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMp
KTsKKyAgICAgICAgdGhpcy5fc3RlcE92ZXJBbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0ID0gbmV3
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0LktleS5TaW5nbGVRdW90ZSwgdGhpcy5fZGVidWdnZXJTdGVwT3ZlckJ1dHRvbkNsaWNrZWQu
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3N0ZXBJbnRvQWx0ZXJuYXRlS2V5Ym9hcmRTaG9y
dGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXkuU2VtaWNvbG9uLCB0aGlzLl9kZWJ1Z2dlclN0ZXBJbnRvQnV0dG9u
Q2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fc3RlcE91dEFsdGVybmF0ZUtleWJv
YXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQgfCBXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCBXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5LZXkuU2VtaWNvbG9uLCB0aGlzLl9kZWJ1Z2dlclN0ZXBPdXRCdXR0b25DbGlj
a2VkLmJpbmQodGhpcykpOworCisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOworICAgICAgICAKKyAgICAgICAgdmFyIGlt
YWdlU2l6ZSA9IFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TID8gMTYgOiAxNTsK
KworICAgICAgICB2YXIgYnJlYWtwb2ludHNJbWFnZSA9IHtzcmM6IHBsYXRmb3JtSW1hZ2VQYXRo
KCJCcmVha3BvaW50cy5zdmciKSwgd2lkdGg6IGltYWdlU2l6ZSwgaGVpZ2h0OiBpbWFnZVNpemV9
OworICAgICAgICB2YXIgcGF1c2VJbWFnZSA9IHtzcmM6IHBsYXRmb3JtSW1hZ2VQYXRoKCJQYXVz
ZS5zdmciKSwgd2lkdGg6IGltYWdlU2l6ZSwgaGVpZ2h0OiBpbWFnZVNpemV9OworICAgICAgICB2
YXIgcmVzdW1lSW1hZ2UgPSB7c3JjOiBwbGF0Zm9ybUltYWdlUGF0aCgiUmVzdW1lLnN2ZyIpLCB3
aWR0aDogaW1hZ2VTaXplLCBoZWlnaHQ6IGltYWdlU2l6ZX07CisgICAgICAgIHZhciBzdGVwT3Zl
ckltYWdlID0ge3NyYzogcGxhdGZvcm1JbWFnZVBhdGgoIlN0ZXBPdmVyLnN2ZyIpLCB3aWR0aDog
aW1hZ2VTaXplLCBoZWlnaHQ6IGltYWdlU2l6ZX07CisgICAgICAgIHZhciBzdGVwSW50b0ltYWdl
ID0ge3NyYzogcGxhdGZvcm1JbWFnZVBhdGgoIlN0ZXBJbnRvLnN2ZyIpLCB3aWR0aDogaW1hZ2VT
aXplLCBoZWlnaHQ6IGltYWdlU2l6ZX07CisgICAgICAgIHZhciBzdGVwT3V0SW1hZ2UgPSB7c3Jj
OiBwbGF0Zm9ybUltYWdlUGF0aCgiU3RlcE91dC5zdmciKSwgd2lkdGg6IGltYWdlU2l6ZSwgaGVp
Z2h0OiBpbWFnZVNpemV9OworCisgICAgICAgIHZhciB0b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJFbmFibGUgYWxsIGJyZWFrcG9pbnRzICglcykiKS5mb3JtYXQodGhpcy5fdG9nZ2xl
QnJlYWtwb2ludHNLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKKyAgICAgICAgdmFyIGFs
dFRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRpc2FibGUgYWxsIGJyZWFrcG9pbnRz
ICglcykiKS5mb3JtYXQodGhpcy5fdG9nZ2xlQnJlYWtwb2ludHNLZXlib2FyZFNob3J0Y3V0LmRp
c3BsYXlOYW1lKTsKKworICAgICAgICB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRzQnV0dG9uSXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgiZGVidWdn
ZXItYnJlYWtwb2ludHMiLCB0b29sVGlwLCBhbHRUb29sVGlwLCBicmVha3BvaW50c0ltYWdlLnNy
YywgYnJlYWtwb2ludHNJbWFnZS53aWR0aCwgYnJlYWtwb2ludHNJbWFnZS5oZWlnaHQpOworICAg
ICAgICB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRzQnV0dG9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxlZDsKKyAgICAgICAgdGhp
cy5fZGVidWdnZXJCcmVha3BvaW50c0J1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fYnJlYWtwb2lu
dHNUb2dnbGVCdXR0b25DbGlja2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJh
ci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRzQnV0dG9uSXRlbSk7
CiAKLSAgICAgICAgLy8gS2VlcCByZXNvdXJjZXMgd2l0aCBicmVha3BvaW50cy4KLSAgICAgICAg
aWYgKHRyZWVFbGVtZW50Lmhhc0NoaWxkcmVuKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBjaGls
ZCBvZiB0cmVlRWxlbWVudC5jaGlsZHJlbikgewotICAgICAgICAgICAgICAgIGlmIChjaGlsZCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICB9OworICAgICAgICB0b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJQYXVzZSBzY3JpcHQgZXhlY3V0aW9uICglcyBvciAlcykiKS5mb3JtYXQodGhpcy5w
YXVzZU9yUmVzdW1lS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSwgdGhpcy5wYXVzZU9yUmVz
dW1lQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAgICAgIGFsdFRv
b2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnRpbnVlIHNjcmlwdCBleGVjdXRpb24g
KCVzIG9yICVzKSIpLmZvcm1hdCh0aGlzLnBhdXNlT3JSZXN1bWVLZXlib2FyZFNob3J0Y3V0LmRp
c3BsYXlOYW1lLCB0aGlzLnBhdXNlT3JSZXN1bWVBbHRlcm5hdGVLZXlib2FyZFNob3J0Y3V0LmRp
c3BsYXlOYW1lKTsKIAotICAgIHRoaXMuZmlsdGVyQmFyLmFkZEZpbHRlckJhckJ1dHRvbigiZGVi
dWdnZXItc2hvdy1yZXNvdXJjZXMtd2l0aC1jaGlsZHJlbi1vbmx5Iiwgc2hvd1Jlc291cmNlc1dp
dGhCcmVha3BvaW50c09ubHlGaWx0ZXJGdW5jdGlvbiwgdHJ1ZSwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTaG93IG9ubHkgcmVzb3VyY2VzIHdpdGggYnJlYWtwb2ludHMuIiksIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2hvdyByZXNvdXJjZXMgd2l0aCBhbmQgd2l0aG91dCBicmVha3BvaW50cy4i
KSwgcGxhdGZvcm1JbWFnZVBhdGgoIkJyZWFrcG9pbnRzLnN2ZyIpLCAxNSwgMTUpOworICAgICAg
ICB0aGlzLl9kZWJ1Z2dlclBhdXNlUmVzdW1lQnV0dG9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
VG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRlYnVnZ2VyLXBhdXNlLXJlc3VtZSIsIHRvb2xU
aXAsIGFsdFRvb2xUaXAsIHBhdXNlSW1hZ2Uuc3JjLCByZXN1bWVJbWFnZS5zcmMsIHBhdXNlSW1h
Z2Uud2lkdGgsIHBhdXNlSW1hZ2UuaGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJQYXVz
ZVJlc3VtZUJ1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fZGVidWdnZXJQYXVzZVJlc3VtZUJ1dHRv
bkNsaWNrZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRp
b25JdGVtKHRoaXMuX2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25JdGVtKTsKIAotICAgIHRoaXMu
X2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5lID0gdGhpcy5jb250ZW50VHJlZU91dGxpbmU7
Ci0gICAgdGhpcy5fYnJlYWtwb2ludHNDb250ZW50VHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlz
Ll90cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5fYnJlYWtwb2ludHND
b250ZW50VHJlZU91dGxpbmUub25kZWxldGUgPSB0aGlzLl9icmVha3BvaW50VHJlZU91dGxpbmVE
ZWxldGVUcmVlRWxlbWVudC5iaW5kKHRoaXMpOwotICAgIHRoaXMuX2JyZWFrcG9pbnRzQ29udGVu
dFRyZWVPdXRsaW5lLm9uY29udGV4dG1lbnUgPSB0aGlzLl9icmVha3BvaW50VHJlZU91dGxpbmVD
b250ZXh0TWVudVRyZWVFbGVtZW50LmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2Vy
U3RlcE92ZXJCdXR0b25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bSgiZGVidWdnZXItc3RlcC1vdmVyIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGVwIG92ZXIg
KCVzIG9yICVzKSIpLmZvcm1hdCh0aGlzLl9zdGVwT3ZlcktleWJvYXJkU2hvcnRjdXQuZGlzcGxh
eU5hbWUsIHRoaXMuX3N0ZXBPdmVyQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFt
ZSksIHN0ZXBPdmVySW1hZ2Uuc3JjLCBzdGVwT3ZlckltYWdlLndpZHRoLCBzdGVwT3ZlckltYWdl
LmhlaWdodCk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RlcE92ZXJCdXR0b25JdGVtLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNr
ZWQsIHRoaXMuX2RlYnVnZ2VyU3RlcE92ZXJCdXR0b25DbGlja2VkLCB0aGlzKTsKKyAgICAgICAg
dGhpcy5fZGVidWdnZXJTdGVwT3ZlckJ1dHRvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOworICAgICAg
ICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2RlYnVnZ2VyU3Rl
cE92ZXJCdXR0b25JdGVtKTsKIAotICAgIHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRs
aW5lLmFwcGVuZENoaWxkKHRoaXMuX2dsb2JhbEJyZWFrcG9pbnRzRm9sZGVyVHJlZUVsZW1lbnQp
OwotICAgIHRoaXMuX2dsb2JhbEJyZWFrcG9pbnRzRm9sZGVyVHJlZUVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRUcmVlRWxlbWVudCk7Ci0gICAgdGhpcy5f
Z2xvYmFsQnJlYWtwb2ludHNGb2xkZXJUcmVlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9hbGxV
bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50VHJlZUVsZW1lbnQpOwotICAgIHRoaXMuX2dsb2Jh
bEJyZWFrcG9pbnRzRm9sZGVyVHJlZUVsZW1lbnQuZXhwYW5kKCk7CisgICAgICAgIHRoaXMuX2Rl
YnVnZ2VyU3RlcEludG9CdXR0b25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0
aW9uSXRlbSgiZGVidWdnZXItc3RlcC1pbnRvIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGVw
IGludG8gKCVzIG9yICVzKSIpLmZvcm1hdCh0aGlzLl9zdGVwSW50b0tleWJvYXJkU2hvcnRjdXQu
ZGlzcGxheU5hbWUsIHRoaXMuX3N0ZXBJbnRvQWx0ZXJuYXRlS2V5Ym9hcmRTaG9ydGN1dC5kaXNw
bGF5TmFtZSksIHN0ZXBJbnRvSW1hZ2Uuc3JjLCBzdGVwSW50b0ltYWdlLndpZHRoLCBzdGVwSW50
b0ltYWdlLmhlaWdodCk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RlcEludG9CdXR0b25JdGVt
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIHRoaXMuX2RlYnVnZ2VyU3RlcEludG9CdXR0b25DbGlja2VkLCB0aGlzKTsKKyAg
ICAgICAgdGhpcy5fZGVidWdnZXJTdGVwSW50b0J1dHRvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwor
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2RlYnVn
Z2VyU3RlcEludG9CdXR0b25JdGVtKTsKIAotICAgIHZhciBicmVha3BvaW50c1JvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7Ci0gICAgYnJlYWtwb2ludHNSb3cuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZS5lbGVtZW50
KTsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJTdGVwT3V0QnV0dG9uSXRlbSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImRlYnVnZ2VyLXN0ZXAtb3V0IiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTdGVwIG91dCAoJXMgb3IgJXMpIikuZm9ybWF0KHRoaXMuX3N0ZXBPdXRL
ZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lLCB0aGlzLl9zdGVwT3V0QWx0ZXJuYXRlS2V5Ym9h
cmRTaG9ydGN1dC5kaXNwbGF5TmFtZSksIHN0ZXBPdXRJbWFnZS5zcmMsIHN0ZXBPdXRJbWFnZS53
aWR0aCwgc3RlcE91dEltYWdlLmhlaWdodCk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RlcE91
dEJ1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fZGVidWdnZXJTdGVwT3V0QnV0dG9uQ2xpY2tlZCwg
dGhpcyk7CisgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RlcE91dEJ1dHRvbkl0ZW0uZW5hYmxlZCA9
IGZhbHNlOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRo
aXMuX2RlYnVnZ2VyU3RlcE91dEJ1dHRvbkl0ZW0pOwogCi0gICAgdmFyIGJyZWFrcG9pbnRzR3Jv
dXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW2JyZWFrcG9pbnRzUm93
XSk7Ci0gICAgdmFyIGJyZWFrcG9pbnRzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb24oInNjcmlwdHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdHMiKSwgW2Jy
ZWFrcG9pbnRzR3JvdXBdKTsKLSAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKGJy
ZWFrcG9pbnRzU2VjdGlvbi5lbGVtZW50KTsKKyAgICAgICAgLy8gQWRkIHRoaXMgb2Zmc2V0LXNl
Y3Rpb25zIGNsYXNzIG5hbWUgc28gdGhlIHN0aWNreSBoZWFkZXJzIGRvbid0IG92ZXJsYXAgdGhl
IG5hdmlnYXRpb24gYmFyLgorICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHlsZUNsYXNzTmFt
ZSk7CiAKLSAgICB0aGlzLl9jYWxsU3RhY2tDb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0
ZUNvbnRlbnRUcmVlT3V0bGluZSh0cnVlKTsKLSAgICB0aGlzLl9jYWxsU3RhY2tDb250ZW50VHJl
ZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7
CisgICAgICAgIHRoaXMuX2dsb2JhbEJyZWFrcG9pbnRzRm9sZGVyVHJlZUVsZW1lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiR2xv
YmFsIEJyZWFrcG9pbnRzIiksIG51bGwsIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5l
bC5HbG9iYWxJY29uU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9hbGxFeGNlcHRpb25z
QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVs
ZW1lbnQoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2lu
dCwgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLkV4Y2VwdGlvbkljb25TdHlsZUNs
YXNzTmFtZSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbGwgRXhjZXB0aW9ucyIpKTsKKyAgICAg
ICAgdGhpcy5fYWxsVW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQoV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlci5hbGxVbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LCBXZWJJbnNwZWN0b3IuRGVi
dWdnZXJTaWRlYmFyUGFuZWwuRXhjZXB0aW9uSWNvblN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkFsbCBVbmNhdWdodCBFeGNlcHRpb25zIikpOwogCi0gICAgdGhpcy5fY2Fs
bFN0YWNrUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIk5vIENhbGwgRnJhbWVzIikpOwotICAgIHRoaXMuX2NhbGxTdGFja1Jvdy5z
aG93RW1wdHlNZXNzYWdlKCk7CisgICAgICAgIHRoaXMuZmlsdGVyQmFyLnBsYWNlaG9sZGVyID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWx0ZXIgQnJlYWtwb2ludCBMaXN0Iik7CisgICAgICAg
IHZhciBzaG93UmVzb3VyY2VzV2l0aEJyZWFrcG9pbnRzT25seUZpbHRlckZ1bmN0aW9uID0gZnVu
Y3Rpb24odHJlZUVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEtlZXAgYnJlYWtw
b2ludHMgYW5kIG90aGVyIGVsZW1lbnRzIHRoYXQgYXJlbid0IHJlc291cmNlcy4KKyAgICAgICAg
ICAgIGlmICghdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
RWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CcmVha3BvaW50
VHJlZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICB2YXIgY2Fs
bFN0YWNrR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMu
X2NhbGxTdGFja1Jvd10pOwotICAgIHRoaXMuX2NhbGxTdGFja1NlY3Rpb24gPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uKCJjYWxsLXN0YWNrIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDYWxsIFN0YWNrIiksIFtjYWxsU3RhY2tHcm91cF0pOworICAgICAgICAgICAgLy8gS2VlcCBy
ZXNvdXJjZXMgd2l0aCBicmVha3BvaW50cy4KKyAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudC5o
YXNDaGlsZHJlbikgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGNoaWxkIG9mIHRyZWVFbGVt
ZW50LmNoaWxkcmVuKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH07CiAKLSAgICB0aGlzLl9wYXVzZVJlYXNv
blRyZWVPdXRsaW5lID0gbnVsbDsKKyAgICAgICAgdGhpcy5maWx0ZXJCYXIuYWRkRmlsdGVyQmFy
QnV0dG9uKCJkZWJ1Z2dlci1zaG93LXJlc291cmNlcy13aXRoLWNoaWxkcmVuLW9ubHkiLCBzaG93
UmVzb3VyY2VzV2l0aEJyZWFrcG9pbnRzT25seUZpbHRlckZ1bmN0aW9uLCB0cnVlLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlNob3cgb25seSByZXNvdXJjZXMgd2l0aCBicmVha3BvaW50cy4iKSwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHJlc291cmNlcyB3aXRoIGFuZCB3aXRob3V0IGJy
ZWFrcG9pbnRzLiIpLCBwbGF0Zm9ybUltYWdlUGF0aCgiQnJlYWtwb2ludHMuc3ZnIiksIDE1LCAx
NSk7CiAKLSAgICB0aGlzLl9wYXVzZVJlYXNvbkxpbmtDb250YWluZXJFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgIHRoaXMuX3BhdXNlUmVhc29uVGV4dFJvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25UZXh0Um93OwotICAgIHRoaXMuX3BhdXNl
UmVhc29uR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMu
X3BhdXNlUmVhc29uVGV4dFJvd10pOwotICAgIHRoaXMuX3BhdXNlUmVhc29uU2VjdGlvbiA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24oInBhdXNlZC1yZWFzb24iLCBudWxsLCBbdGhp
cy5fcGF1c2VSZWFzb25Hcm91cF0sIHRoaXMuX3BhdXNlUmVhc29uTGlua0NvbnRhaW5lckVsZW1l
bnQpOwotICAgIHRoaXMuX3BhdXNlUmVhc29uU2VjdGlvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUGF1c2UgUmVhc29uIik7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzQ29udGVu
dFRyZWVPdXRsaW5lID0gdGhpcy5jb250ZW50VHJlZU91dGxpbmU7CisgICAgICAgIHRoaXMuX2Jy
ZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnRT
ZWxlY3RlZC5iaW5kKHRoaXMpOworICAgICAgICB0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVl
T3V0bGluZS5vbmRlbGV0ZSA9IHRoaXMuX2JyZWFrcG9pbnRUcmVlT3V0bGluZURlbGV0ZVRyZWVF
bGVtZW50LmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVP
dXRsaW5lLm9uY29udGV4dG1lbnUgPSB0aGlzLl9icmVha3BvaW50VHJlZU91dGxpbmVDb250ZXh0
TWVudVRyZWVFbGVtZW50LmJpbmQodGhpcyk7CiAKLSAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkRpc3BsYXlM
b2NhdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5n
ZSwgdGhpcyk7Ci19OworICAgICAgICB0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGlu
ZS5hcHBlbmRDaGlsZCh0aGlzLl9nbG9iYWxCcmVha3BvaW50c0ZvbGRlclRyZWVFbGVtZW50KTsK
KyAgICAgICAgdGhpcy5fZ2xvYmFsQnJlYWtwb2ludHNGb2xkZXJUcmVlRWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9hbGxFeGNlcHRpb25zQnJlYWtwb2ludFRyZWVFbGVtZW50KTsKKyAgICAgICAg
dGhpcy5fZ2xvYmFsQnJlYWtwb2ludHNGb2xkZXJUcmVlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9hbGxVbmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50VHJlZUVsZW1lbnQpOworICAgICAgICB0
aGlzLl9nbG9iYWxCcmVha3BvaW50c0ZvbGRlclRyZWVFbGVtZW50LmV4cGFuZCgpOwogCi1XZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHlsZUNsYXNzTmFt
ZSA9ICJvZmZzZXQtc2VjdGlvbnMiOwotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVs
LkRlYnVnZ2VyUGF1c2VkU3R5bGVDbGFzc05hbWUgPSAicGF1c2VkIjsKLVdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclNpZGViYXJQYW5lbC5FeGNlcHRpb25JY29uU3R5bGVDbGFzc05hbWUgPSAiYnJlYWtw
b2ludC1leGNlcHRpb24taWNvbiI7Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwu
UGF1c2VkQnJlYWtwb2ludEljb25TdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LXBhdXNlZC1p
Y29uIjsKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5HbG9iYWxJY29uU3R5bGVD
bGFzc05hbWUgPSAiZ2xvYmFsLWJyZWFrcG9pbnRzLWljb24iOworICAgICAgICB2YXIgYnJlYWtw
b2ludHNSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworICAgICAgICBi
cmVha3BvaW50c1Jvdy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2JyZWFrcG9pbnRzQ29udGVu
dFRyZWVPdXRsaW5lLmVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFu
ZWwuU2VsZWN0ZWRBbGxFeGNlcHRpb25zQ29va2llS2V5ID0gImRlYnVnZ2VyLXNpZGViYXItcGFu
ZWwtYWxsLWV4Y2VwdGlvbnMtYnJlYWtwb2ludCI7Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRl
YmFyUGFuZWwuU2VsZWN0ZWRBbGxVbmNhdWdodEV4Y2VwdGlvbnNDb29raWVLZXkgPSAiZGVidWdn
ZXItc2lkZWJhci1wYW5lbC1hbGwtdW5jYXVnaHQtZXhjZXB0aW9ucy1icmVha3BvaW50IjsKKyAg
ICAgICAgdmFyIGJyZWFrcG9pbnRzR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uR3JvdXAoW2JyZWFrcG9pbnRzUm93XSk7CisgICAgICAgIHZhciBicmVha3BvaW50c1NlY3Rp
b24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJzY3JpcHRzIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTY3JpcHRzIiksIFticmVha3BvaW50c0dyb3VwXSk7CisgICAgICAgIHRo
aXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQoYnJlYWtwb2ludHNTZWN0aW9uLmVsZW1lbnQp
OworCisgICAgICAgIHRoaXMuX2NhbGxTdGFja0NvbnRlbnRUcmVlT3V0bGluZSA9IHRoaXMuY3Jl
YXRlQ29udGVudFRyZWVPdXRsaW5lKHRydWUpOworICAgICAgICB0aGlzLl9jYWxsU3RhY2tDb250
ZW50VHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQo
dGhpcyk7CisKKyAgICAgICAgdGhpcy5fY2FsbFN0YWNrUm93ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIENhbGwgRnJhbWVzIikp
OworICAgICAgICB0aGlzLl9jYWxsU3RhY2tSb3cuc2hvd0VtcHR5TWVzc2FnZSgpOworCisgICAg
ICAgIHZhciBjYWxsU3RhY2tHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25H
cm91cChbdGhpcy5fY2FsbFN0YWNrUm93XSk7CisgICAgICAgIHRoaXMuX2NhbGxTdGFja1NlY3Rp
b24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJjYWxsLXN0YWNrIiwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJDYWxsIFN0YWNrIiksIFtjYWxsU3RhY2tHcm91cF0pOwogCi1XZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19fOiBX
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUsCisgICAgICAgIHRo
aXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSBudWxsOworCisgICAgICAgIHRoaXMuX3BhdXNl
UmVhc29uTGlua0NvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7CisgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVGV4dFJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25UZXh0Um93OworICAgICAgICB0aGlzLl9wYXVzZVJlYXNvbkdyb3VwID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9wYXVzZVJlYXNvblRl
eHRSb3ddKTsKKyAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25TZWN0aW9uID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbigicGF1c2VkLXJlYXNvbiIsIG51bGwsIFt0aGlzLl9wYXVzZVJl
YXNvbkdyb3VwXSwgdGhpcy5fcGF1c2VSZWFzb25MaW5rQ29udGFpbmVyRWxlbWVudCk7CisgICAg
ICAgIHRoaXMuX3BhdXNlUmVhc29uU2VjdGlvbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUGF1c2UgUmVhc29uIik7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5EaXNwbGF5TG9jYXRp
b25EaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRo
aXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC0xNzYsMjUgKzE2NSwyNSBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gISF0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVt
ZW50CiAgICAgICAgICAgICB8fCAhIXRoaXMuX2NhbGxTdGFja0NvbnRlbnRUcmVlT3V0bGluZS5z
ZWxlY3RlZFRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCAodGhpcy5fcGF1c2VSZWFzb25UcmVl
T3V0bGluZSAmJiAhIXRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxl
bWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3OiBmdW5j
dGlvbigpCisgICAgc2hvd0RlZmF1bHRDb250ZW50VmlldygpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd0RlZmF1bHRDb250ZW50VmlldygpOwot
ICAgIH0sCisgICAgfQogCi0gICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVu
Y3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9i
amVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIC8vIFRoZSBtYWluIHJlc291
cmNlIGlzIHVzZWQgYXMgdGhlIHJlcHJlc2VudGVkT2JqZWN0IGluc3RlYWQgb2YgRnJhbWUgaW4g
b3VyIHRyZWUuCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5GcmFtZSkKICAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50
ZWRPYmplY3QubWFpblJlc291cmNlOwogCiAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRUcmVl
T3V0bGluZS5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHNhdmVTdGF0ZVRvQ29va2llOiBmdW5j
dGlvbihjb29raWUpCisgICAgc2F2ZVN0YXRlVG9Db29raWUoY29va2llKQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoY29va2llKTsKIApAQCAtMjExLDkgKzIwMCw5IEBAIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb29r
aWVbV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLlNlbGVjdGVkQWxsVW5jYXVnaHRF
eGNlcHRpb25zQ29va2llS2V5XSA9IHRydWU7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNhdmVTdGF0ZVRvQ29va2llLmNhbGwodGhpcywg
Y29va2llKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc3RvcmVTdGF0ZUZyb21Db29raWU6IGZ1
bmN0aW9uKGNvb2tpZSwgcmVsYXhlZE1hdGNoRGVsYXkpCisgICAgcmVzdG9yZVN0YXRlRnJvbUNv
b2tpZShjb29raWUsIHJlbGF4ZWRNYXRjaERlbGF5KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoY29va2llKTsKIApAQCAtMjI0LDExICsyMTMsMTEgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2FsbFVuY2F1
Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnRUcmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QoKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLnJlc3RvcmVTdGF0ZUZyb21Db29raWUuY2FsbCh0aGlzLCBjb29raWUsIHJl
bGF4ZWRNYXRjaERlbGF5KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF9kZWJ1Z2dlclBhdXNlUmVzdW1lQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucGF1c2VkKQogICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKQEAgLTIzNiwyNCArMjI1LDI0IEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlUmVzdW1lQnV0dG9uSXRlbS5lbmFibGVkID0gZmFsc2U7
CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnBhdXNlKCk7CiAgICAg
ICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9kZWJ1Z2dlclN0ZXBPdmVyQnV0dG9uQ2xpY2tl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RlYnVnZ2VyU3RlcE92ZXJCdXR0b25DbGlja2VkKGV2
ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5zdGVwT3Zl
cigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RlYnVnZ2VyU3RlcEludG9CdXR0b25DbGlja2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICBfZGVidWdnZXJTdGVwSW50b0J1dHRvbkNsaWNrZWQoZXZl
bnQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnN0ZXBJbnRv
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVidWdnZXJTdGVwT3V0QnV0dG9uQ2xpY2tlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX2RlYnVnZ2VyU3RlcE91dEJ1dHRvbkNsaWNrZWQoZXZlbnQp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnN0ZXBPdXQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9kZWJ1Z2dlckRpZFBhdXNlOiBmdW5jdGlvbihldmVudCkK
KyAgICBfZGVidWdnZXJEaWRQYXVzZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX2NhbGxTdGFja1NlY3Rpb24uZWxlbWVudCwgdGhp
cy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkKTsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZVBh
dXNlUmVhc29uKCkpCkBAIC0yNjUsOSArMjU0LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZGVidWdnZXJTdGVwSW50b0J1
dHRvbkl0ZW0uZW5hYmxlZCA9IHRydWU7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLkRlYnVnZ2VyUGF1c2VkU3R5
bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RlYnVnZ2VyRGlkUmVzdW1lOiBm
dW5jdGlvbihldmVudCkKKyAgICBfZGVidWdnZXJEaWRSZXN1bWUoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9jYWxsU3RhY2tTZWN0aW9uLmVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIHRo
aXMuX3BhdXNlUmVhc29uU2VjdGlvbi5lbGVtZW50LnJlbW92ZSgpOwpAQCAtMjc5LDE5ICsyNjgs
MTkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fZGVidWdnZXJTdGVwT3V0QnV0dG9uSXRlbS5lbmFibGVkID0gZmFsc2U7CiAK
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyU2lkZWJhclBhbmVsLkRlYnVnZ2VyUGF1c2VkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2JyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2JyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2RlYnVnZ2VyQnJlYWtwb2ludHNCdXR0b25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2JyZWFrcG9pbnRzVG9nZ2xlQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2JyZWFrcG9pbnRzVG9nZ2xlQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkID0gIXRoaXMu
X2RlYnVnZ2VyQnJlYWtwb2ludHNCdXR0b25JdGVtLmFjdGl2YXRlZDsKLSAgICB9LAorICAgIH0K
IAotICAgIF9hZGRCcmVha3BvaW50OiBmdW5jdGlvbihicmVha3BvaW50KQorICAgIF9hZGRCcmVh
a3BvaW50KGJyZWFrcG9pbnQpCiAgICAgewogICAgICAgICB2YXIgc291cmNlQ29kZSA9IGJyZWFr
cG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlTb3VyY2VDb2RlOwogICAgICAgICBpZiAo
IXNvdXJjZUNvZGUpCkBAIC0zMTEsMTYgKzMwMCwxNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJT
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAocGFyZW50VHJlZUVsZW1lbnQu
Y2hpbGRyZW4ubGVuZ3RoID09PSAxKQogICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuZXhw
YW5kKCk7CiAgICAgICAgIHJldHVybiBicmVha3BvaW50VHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfYWRkQnJlYWtwb2ludHNGb3JTb3VyY2VDb2RlOiBmdW5jdGlvbihzb3VyY2VD
b2RlKQorICAgIF9hZGRCcmVha3BvaW50c0ZvclNvdXJjZUNvZGUoc291cmNlQ29kZSkKICAgICB7
CiAgICAgICAgIHZhciBicmVha3BvaW50cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIu
YnJlYWtwb2ludHNGb3JTb3VyY2VDb2RlKHNvdXJjZUNvZGUpOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGJyZWFrcG9pbnRzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5fYWRk
QnJlYWtwb2ludChicmVha3BvaW50c1tpXSwgc291cmNlQ29kZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfYWRkVHJlZUVsZW1lbnRGb3JTb3VyY2VDb2RlVG9Db250ZW50VHJlZU91dGxpbmU6IGZ1
bmN0aW9uKHNvdXJjZUNvZGUpCisgICAgX2FkZFRyZWVFbGVtZW50Rm9yU291cmNlQ29kZVRvQ29u
dGVudFRyZWVPdXRsaW5lKHNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICB2YXIgdHJlZUVsZW1l
bnQgPSB0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZS5nZXRDYWNoZWRUcmVlRWxl
bWVudChzb3VyY2VDb2RlKTsKICAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkgewpAQCAtMzQwLDkg
KzMyOSw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcmVzb3VyY2VBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jlc291cmNlQWRk
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcmVzb3VyY2UgPSBldmVudC5kYXRhLnJlc291
cmNlOwogCkBAIC0zNTEsMTYgKzM0MCwxNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFy
UGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50Rm9yU291
cmNlQ29kZVRvQ29udGVudFRyZWVPdXRsaW5lKHJlc291cmNlKTsKICAgICAgICAgdGhpcy5fYWRk
QnJlYWtwb2ludHNGb3JTb3VyY2VDb2RlKHJlc291cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9tYWluUmVzb3VyY2VDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbWFpblJlc291cmNl
Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IGV2ZW50LnRhcmdl
dC5tYWluUmVzb3VyY2U7CiAgICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50Rm9yU291cmNlQ29k
ZVRvQ29udGVudFRyZWVPdXRsaW5lKHJlc291cmNlKTsKICAgICAgICAgdGhpcy5fYWRkQnJlYWtw
b2ludHNGb3JTb3VyY2VDb2RlKHJlc291cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zY3Jp
cHRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NjcmlwdEFkZGVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdmFyIHNjcmlwdCA9IGV2ZW50LmRhdGEuc2NyaXB0OwogCkBAIC0zODAsOSArMzY5
LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVudEZvclNvdXJjZUNvZGVUb0NvbnRlbnRUcmVlT3V0
bGluZShzY3JpcHQpOwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50c0ZvclNvdXJjZUNvZGUo
c2NyaXB0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zY3JpcHRzQ2xlYXJlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX3NjcmlwdHNDbGVhcmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgZm9yICh2
YXIgaSA9IHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuLmxlbmd0
aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlz
Ll9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZS5jaGlsZHJlbltpXTsKQEAgLTM5MSwxNSAr
MzgwLDE1IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5lLnJlbW92
ZUNoaWxkQXRJbmRleChpLCB0cnVlLCB0cnVlKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQog
Ci0gICAgX2JyZWFrcG9pbnRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JyZWFrcG9pbnRB
ZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQuZGF0YS5i
cmVha3BvaW50OwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2JyZWFrcG9pbnRSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfYnJlYWtwb2ludFJlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2lu
dCA9IGV2ZW50LmRhdGEuYnJlYWtwb2ludDsKIApAQCAtNDE1LDkgKzQwNCw5IEBAIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludFRyZWVFbGVtZW50KGJyZWFrcG9p
bnRUcmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludERpc3BsYXlM
b2NhdGlvbkRpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JyZWFrcG9pbnREaXNwbGF5
TG9jYXRpb25EaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IGV2ZW50LnRhcmdldDsKICAgICAgICAgaWYgKGV2ZW50LmRhdGEub2xkRGlzcGxheVNvdXJjZUNv
ZGUgPT09IGJyZWFrcG9pbnQuZGlzcGxheVNvdXJjZUNvZGUpCkBAIC00MzcsMTcgKzQyNiwxNyBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGlmIChuZXdCcmVha3BvaW50VHJlZUVsZW1lbnQgJiYgd2FzU2VsZWN0ZWQpCiAgICAgICAg
ICAgICBuZXdCcmVha3BvaW50VHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUsIGZhbHNl
LCB0cnVlLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZW1vdmVCcmVha3BvaW50VHJl
ZUVsZW1lbnQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnRUcmVlRWxlbWVudCkKKyAgICBfcmVtb3ZlQnJl
YWtwb2ludFRyZWVFbGVtZW50KGJyZWFrcG9pbnRUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAg
IHZhciBwYXJlbnRUcmVlRWxlbWVudCA9IGJyZWFrcG9pbnRUcmVlRWxlbWVudC5wYXJlbnQ7CiAg
ICAgICAgIHBhcmVudFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkKGJyZWFrcG9pbnRUcmVlRWxlbWVu
dCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQocGFyZW50VHJlZUVsZW1lbnQucGFyZW50ID09
PSB0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZGVidWdnZXJDYWxsRnJhbWVzRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgX2RlYnVn
Z2VyQ2FsbEZyYW1lc0RpZENoYW5nZSgpCiAgICAgewogICAgICAgICB0aGlzLl9jYWxsU3RhY2tD
b250ZW50VHJlZU91dGxpbmUucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtNDcyLDkgKzQ2MSw5IEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgaWYgKHRyZWVFbGVtZW50VG9TZWxlY3QpCiAgICAgICAgICAgICB0cmVlRWxlbWVudFRvU2Vs
ZWN0LnNlbGVjdCh0cnVlLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kZWJ1Z2dlckFj
dGl2ZUNhbGxGcmFtZURpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIF9kZWJ1Z2dlckFjdGl2ZUNh
bGxGcmFtZURpZENoYW5nZSgpCiAgICAgewogICAgICAgICB2YXIgY2FsbEZyYW1lcyA9IFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuY2FsbEZyYW1lczsKICAgICAgICAgaWYgKCFjYWxsRnJh
bWVzKQpAQCAtNDg1LDkgKzQ3NCw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIHNpbmNlIHRoZXJlIG1pZ2h0IGJlIGNhbGwgZnJh
bWVzIGluIHRoZSBiYWNrZW5kIHRoYXQgd2VyZSByZW1vdmVkIHdoZW4gcHJvY2Vzc2luZyB0aGUg
Y2FsbAogICAgICAgICAvLyBmcmFtZSBwYXlsb2FkLgogICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0
ZXBPdXRCdXR0b25JdGVtLmVuYWJsZWQgPSBpbmRleE9mQWN0aXZlQ2FsbEZyYW1lIDwgY2FsbEZy
YW1lcy5sZW5ndGggLSAxOwotICAgIH0sCisgICAgfQogCi0gICAgX2JyZWFrcG9pbnRzQmVuZWF0
aFRyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfYnJlYWtwb2ludHNCZW5l
YXRoVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50
IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50
KTsKICAgICAgICAgaWYgKCEodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlRWxlbWVudCkgJiYgISh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5TY3JpcHRUcmVlRWxlbWVudCkpCkBAIC01MDQsMjQgKzQ5MywyNCBAQCBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIGJyZWFrcG9pbnRzOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZUFsbEJyZWFr
cG9pbnRzOiBmdW5jdGlvbihicmVha3BvaW50cykKKyAgICBfcmVtb3ZlQWxsQnJlYWtwb2ludHMo
YnJlYWtwb2ludHMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJyZWFrcG9p
bnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGJyZWFrcG9p
bnRzW2ldOwogICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuaXNC
cmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQpKQogICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICAg
ICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2dsZUFsbEJyZWFrcG9pbnRzOiBmdW5jdGlv
bihicmVha3BvaW50cywgZGlzYWJsZWQpCisgICAgX3RvZ2dsZUFsbEJyZWFrcG9pbnRzKGJyZWFr
cG9pbnRzLCBkaXNhYmxlZCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJl
YWtwb2ludHMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBicmVha3BvaW50c1tpXS5kaXNhYmxl
ZCA9IGRpc2FibGVkOwotICAgIH0sCisgICAgfQogCi0gICAgX2JyZWFrcG9pbnRUcmVlT3V0bGlu
ZURlbGV0ZVRyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfYnJlYWtwb2lu
dFRyZWVPdXRsaW5lRGVsZXRlVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudC5zZWxlY3RlZCk7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVs
ZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVs
ZW1lbnQpOwpAQCAtNTM4LDkgKzUyNyw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBuZXh0U2libGluZy5zZWxlY3QodHJ1ZSwg
dHJ1ZSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJl
YWtwb2ludFRyZWVPdXRsaW5lQ29udGV4dE1lbnVUcmVlRWxlbWVudDogZnVuY3Rpb24oZXZlbnQs
IHRyZWVFbGVtZW50KQorICAgIF9icmVha3BvaW50VHJlZU91dGxpbmVDb250ZXh0TWVudVRyZWVF
bGVtZW50KGV2ZW50LCB0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQg
fHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQg
fHwgdHJlZUVsZW1lbnQuY29uc3RydWN0b3IgPT09IFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxl
bWVudCk7CiAgICAgICAgIGlmICghKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZUVsZW1lbnQpICYmICEodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQpKQpAQCAtNTcyLDkgKzU2MSw5IEBAIFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnRz
IiksIHRvZ2dsZUFsbFJlc291cmNlQnJlYWtwb2ludHMuYmluZCh0aGlzKSk7CiAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtw
b2ludHMiKSwgcmVtb3ZlQWxsUmVzb3VyY2VCcmVha3BvaW50cy5iaW5kKHRoaXMpKTsKICAgICAg
ICAgY29udGV4dE1lbnUuc2hvdygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50
U2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKKyAgICBfdHJl
ZUVsZW1lbnRTZWxlY3RlZCh0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCiAgICAgewogICAg
ICAgICBmdW5jdGlvbiBkZXNlbGVjdENhbGxTdGFja0NvbnRlbnRUcmVlRWxlbWVudHMoKQogICAg
ICAgICB7CkBAIC02NDMsOSArNjMyLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd1NvdXJjZUNvZGVMb2NhdGlvbihicmVha3Bv
aW50LnNvdXJjZUNvZGVMb2NhdGlvbik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29tcGFyZVRv
cExldmVsVHJlZUVsZW1lbnRzOiBmdW5jdGlvbihhLCBiKQorICAgIF9jb21wYXJlVG9wTGV2ZWxU
cmVlRWxlbWVudHMoYSwgYikKICAgICB7CiAgICAgICAgIGlmIChhID09PSB0aGlzLl9nbG9iYWxC
cmVha3BvaW50c0ZvbGRlclRyZWVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAt
NjUzLDkgKzY0Miw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICByZXR1cm4gYS5tYWluVGl0
bGUubG9jYWxlQ29tcGFyZShiLm1haW5UaXRsZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29t
cGFyZUJyZWFrcG9pbnRUcmVlRWxlbWVudHM6IGZ1bmN0aW9uKGEsIGIpCisgICAgX2NvbXBhcmVC
cmVha3BvaW50VHJlZUVsZW1lbnRzKGEsIGIpCiAgICAgewogICAgICAgICB2YXIgYUxvY2F0aW9u
ID0gYS5icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKICAgICAgICAgdmFyIGJMb2NhdGlv
biA9IGIuYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CkBAIC02NjUsMTcgKzY1NCwxNyBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1bHQ7CiAKICAgICAgICAgcmV0dXJuIGFMb2NhdGlv
bi5kaXNwbGF5Q29sdW1uTnVtYmVyIC0gYkxvY2F0aW9uLmRpc3BsYXlDb2x1bW5OdW1iZXI7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlUGF1c2VSZWFzb246IGZ1bmN0aW9uKCkKKyAgICBf
dXBkYXRlUGF1c2VSZWFzb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVl
T3V0bGluZSA9IG51bGw7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlUGF1c2VSZWFzb25Hb3RvQXJy
b3coKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVBhdXNlUmVhc29uU2VjdGlvbigpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVBhdXNlUmVhc29uU2VjdGlvbjogZnVuY3Rpb24o
KQorICAgIF91cGRhdGVQYXVzZVJlYXNvblNlY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHBh
dXNlRGF0YSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucGF1c2VEYXRhOwogCkBAIC03
NDYsOSArNzM1LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0K
IAotICAgIF91cGRhdGVQYXVzZVJlYXNvbkdvdG9BcnJvdzogZnVuY3Rpb24oKQorICAgIF91cGRh
dGVQYXVzZVJlYXNvbkdvdG9BcnJvdygpCiAgICAgewogICAgICAgICB0aGlzLl9wYXVzZVJlYXNv
bkxpbmtDb250YWluZXJFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKQEAgLTc2NCwzICs3NTMs
MTIgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fcGF1c2VSZWFzb25MaW5rQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChs
aW5rRWxlbWVudCk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBh
bmVsLk9mZnNldFNlY3Rpb25zU3R5bGVDbGFzc05hbWUgPSAib2Zmc2V0LXNlY3Rpb25zIjsKK1dl
Ykluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5EZWJ1Z2dlclBhdXNlZFN0eWxlQ2xhc3NO
YW1lID0gInBhdXNlZCI7CitXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuRXhjZXB0
aW9uSWNvblN0eWxlQ2xhc3NOYW1lID0gImJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24iOworV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLlBhdXNlZEJyZWFrcG9pbnRJY29uU3R5bGVD
bGFzc05hbWUgPSAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiI7CitXZWJJbnNwZWN0b3IuRGVidWdn
ZXJTaWRlYmFyUGFuZWwuR2xvYmFsSWNvblN0eWxlQ2xhc3NOYW1lID0gImdsb2JhbC1icmVha3Bv
aW50cy1pY29uIjsKKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLlNlbGVjdGVk
QWxsRXhjZXB0aW9uc0Nvb2tpZUtleSA9ICJkZWJ1Z2dlci1zaWRlYmFyLXBhbmVsLWFsbC1leGNl
cHRpb25zLWJyZWFrcG9pbnQiOworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLlNl
bGVjdGVkQWxsVW5jYXVnaHRFeGNlcHRpb25zQ29va2llS2V5ID0gImRlYnVnZ2VyLXNpZGViYXIt
cGFuZWwtYWxsLXVuY2F1Z2h0LWV4Y2VwdGlvbnMtYnJlYWtwb2ludCI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJk
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1
bHREYXNoYm9hcmRWaWV3LmpzCmluZGV4IGU2MjQyOTMuLjAxMjlkYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rl
ZmF1bHREYXNoYm9hcmRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDUyICsyMyw0OCBAQAogICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcgPSBmdW5jdGlvbihy
ZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldyA9IGNs
YXNzIERlZmF1bHREYXNoYm9hcmRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZp
ZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5jYWxsKHRoaXMsIHJlcHJlc2Vu
dGVkT2JqZWN0LCAiZGVmYXVsdCIpOwotCi0gICAgcmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZC5FdmVudC5EYXRhRGlkQ2hhbmdl
LCB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lLmJpbmQobnVsbCwgdGhpcy5fdXBkYXRlRGlz
cGxheS5iaW5kKHRoaXMpKSk7Ci0KLSAgICB0aGlzLl9pdGVtcyA9IHsKLSAgICAgICAgcmVzb3Vy
Y2VzQ291bnQ6IHsKLSAgICAgICAgICAgIHRvb2x0aXA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
VG90YWwgbnVtYmVyIG9mIHJlc291cmNlcywgY2xpY2sgdG8gc2hvdyB0aGUgUmVzb3VyY2VzIG5h
dmlnYXRpb24gc2lkZWJhciIpLAotICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fcmVzb3VyY2Vz
V2FzQ2xpY2tlZAotICAgICAgICB9LAotICAgICAgICByZXNvdXJjZXNTaXplOiB7Ci0gICAgICAg
ICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIHNpemUgb2YgYWxsIHJl
c291cmNlcywgY2xpY2sgdG8gc2hvdyB0aGUgTmV0d29yayBSZXF1ZXN0cyB0aW1lbGluZSIpLAot
ICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fbmV0d29ya0l0ZW1XYXNDbGlja2VkCi0gICAgICAg
IH0sCi0gICAgICAgIHRpbWU6IHsKLSAgICAgICAgICAgIHRvb2x0aXA6IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiVGltZSB1bnRpbCB0aGUgbG9hZCBldmVudCBmaXJlZCwgY2xpY2sgdG8gc2hvdyB0
aGUgTmV0d29yayBSZXF1ZXN0cyB0aW1lbGluZSIpLAotICAgICAgICAgICAgaGFuZGxlcjogdGhp
cy5fbmV0d29ya0l0ZW1XYXNDbGlja2VkCi0gICAgICAgIH0sCi0gICAgICAgIGxvZ3M6IHsKLSAg
ICAgICAgICAgIHRvb2x0aXA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uc29sZSBsb2dzLCBj
bGljayB0byBzaG93IHRoZSBDb25zb2xlIiksCi0gICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9j
b25zb2xlSXRlbVdhc0NsaWNrZWQuYmluZCh0aGlzLCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZp
ZXcuU2NvcGVzLkxvZ3MpCi0gICAgICAgIH0sCi0gICAgICAgIGVycm9yczogewotICAgICAgICAg
ICAgdG9vbHRpcDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIGVycm9ycywgY2xpY2sg
dG8gc2hvdyB0aGUgQ29uc29sZSIpLAotICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29s
ZUl0ZW1XYXNDbGlja2VkLmJpbmQodGhpcywgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNj
b3Blcy5FcnJvcnMpCi0gICAgICAgIH0sCi0gICAgICAgIGlzc3VlczogewotICAgICAgICAgICAg
dG9vbHRpcDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIHdhcm5pbmdzLCBjbGljayB0
byBzaG93IHRoZSBDb25zb2xlIiksCi0gICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9jb25zb2xl
SXRlbVdhc0NsaWNrZWQuYmluZCh0aGlzLCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2Nv
cGVzLldhcm5pbmdzKQotICAgICAgICB9Ci0gICAgfTsKLQotICAgIGZvciAodmFyIG5hbWUgaW4g
dGhpcy5faXRlbXMpCi0gICAgICAgIHRoaXMuX2FwcGVuZEVsZW1lbnRGb3JOYW1lZEl0ZW0obmFt
ZSk7Ci19OwotCi1XZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcuRW5hYmxlZEl0ZW1T
dHlsZUNsYXNzTmFtZSA9ICJlbmFibGVkIjsKLQotV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9h
cmRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRlZmF1
bHREYXNoYm9hcmRWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZp
ZXcucHJvdG90eXBlLAorICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsK
KyAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QsICJkZWZhdWx0Iik7CisKKyAgICAgICAg
cmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVmYXVsdERh
c2hib2FyZC5FdmVudC5EYXRhRGlkQ2hhbmdlLCB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1l
LmJpbmQobnVsbCwgdGhpcy5fdXBkYXRlRGlzcGxheS5iaW5kKHRoaXMpKSk7CisKKyAgICAgICAg
dGhpcy5faXRlbXMgPSB7CisgICAgICAgICAgICByZXNvdXJjZXNDb3VudDogeworICAgICAgICAg
ICAgICAgIHRvb2x0aXA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG90YWwgbnVtYmVyIG9mIHJl
c291cmNlcywgY2xpY2sgdG8gc2hvdyB0aGUgUmVzb3VyY2VzIG5hdmlnYXRpb24gc2lkZWJhciIp
LAorICAgICAgICAgICAgICAgIGhhbmRsZXI6IHRoaXMuX3Jlc291cmNlc1dhc0NsaWNrZWQKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICByZXNvdXJjZXNTaXplOiB7CisgICAgICAgICAgICAg
ICAgdG9vbHRpcDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUb3RhbCBzaXplIG9mIGFsbCByZXNv
dXJjZXMsIGNsaWNrIHRvIHNob3cgdGhlIE5ldHdvcmsgUmVxdWVzdHMgdGltZWxpbmUiKSwKKyAg
ICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9uZXR3b3JrSXRlbVdhc0NsaWNrZWQKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICB0aW1lOiB7CisgICAgICAgICAgICAgICAgdG9vbHRpcDog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUaW1lIHVudGlsIHRoZSBsb2FkIGV2ZW50IGZpcmVkLCBj
bGljayB0byBzaG93IHRoZSBOZXR3b3JrIFJlcXVlc3RzIHRpbWVsaW5lIiksCisgICAgICAgICAg
ICAgICAgaGFuZGxlcjogdGhpcy5fbmV0d29ya0l0ZW1XYXNDbGlja2VkCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgbG9nczogeworICAgICAgICAgICAgICAgIHRvb2x0aXA6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ29uc29sZSBsb2dzLCBjbGljayB0byBzaG93IHRoZSBDb25zb2xlIiks
CisgICAgICAgICAgICAgICAgaGFuZGxlcjogdGhpcy5fY29uc29sZUl0ZW1XYXNDbGlja2VkLmJp
bmQodGhpcywgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5Mb2dzKQorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgIGVycm9yczogeworICAgICAgICAgICAgICAgIHRvb2x0aXA6
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29uc29sZSBlcnJvcnMsIGNsaWNrIHRvIHNob3cgdGhl
IENvbnNvbGUiKSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlzLl9jb25zb2xlSXRlbVdh
c0NsaWNrZWQuYmluZCh0aGlzLCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2NvcGVzLkVy
cm9ycykKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBpc3N1ZXM6IHsKKyAgICAgICAgICAg
ICAgICB0b29sdGlwOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUgd2FybmluZ3MsIGNs
aWNrIHRvIHNob3cgdGhlIENvbnNvbGUiKSwKKyAgICAgICAgICAgICAgICBoYW5kbGVyOiB0aGlz
Ll9jb25zb2xlSXRlbVdhc0NsaWNrZWQuYmluZCh0aGlzLCBXZWJJbnNwZWN0b3IuTG9nQ29udGVu
dFZpZXcuU2NvcGVzLldhcm5pbmdzKQorICAgICAgICAgICAgfQorICAgICAgICB9OwogCisgICAg
ICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcy5faXRlbXMpCisgICAgICAgICAgICB0aGlzLl9hcHBl
bmRFbGVtZW50Rm9yTmFtZWRJdGVtKG5hbWUpOworICAgIH0KKyAgICAKICAgICAvLyBQcml2YXRl
CiAKLSAgICBfdXBkYXRlRGlzcGxheTogZnVuY3Rpb24oKQorICAgIF91cGRhdGVEaXNwbGF5KCkK
ICAgICB7CiAgICAgICAgIHZhciBkYXNoYm9hcmQgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Owog
CkBAIC04NiwxNCArODIsMTQgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNpemVJdGVtID0gdGhpcy5faXRlbXMucmVzb3VyY2Vz
U2l6ZTsKICAgICAgICAgc2l6ZUl0ZW0udGV4dCA9IGRhc2hib2FyZC5yZXNvdXJjZXNTaXplID8g
TnVtYmVyLmJ5dGVzVG9TdHJpbmcoZGFzaGJvYXJkLnJlc291cmNlc1NpemUsIGZhbHNlKSA6ICJc
dTIwMTQiOwogICAgICAgICB0aGlzLl9zZXRJdGVtRW5hYmxlZChzaXplSXRlbSwgZGFzaGJvYXJk
LnJlc291cmNlc1NpemUgPiAwKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mb3JtYXRQb3NzaWJs
ZUxhcmdlTnVtYmVyOiBmdW5jdGlvbihudW1iZXIpCisgICAgX2Zvcm1hdFBvc3NpYmxlTGFyZ2VO
dW1iZXIobnVtYmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIG51bWJlciA+IDk5OSA/IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiOTk5KyIpIDogbnVtYmVyOwotICAgIH0sCisgICAgfQogCi0gICAg
X2FwcGVuZEVsZW1lbnRGb3JOYW1lZEl0ZW06IGZ1bmN0aW9uKG5hbWUpCisgICAgX2FwcGVuZEVs
ZW1lbnRGb3JOYW1lZEl0ZW0obmFtZSkKICAgICB7CiAgICAgICAgIHZhciBpdGVtID0gdGhpcy5f
aXRlbXNbbmFtZV07CiAKQEAgLTEwNyw3ICsxMDMsNyBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdERh
c2hib2FyZFZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShpdGVtLCAidGV4dCIsCiAgICAgICAgIHsKLSAgICAgICAgICAgIHNldDogZnVuY3Rpb24obmV3
VGV4dCkKKyAgICAgICAgICAgIHNldChuZXdUZXh0KQogICAgICAgICAgICAgewogICAgICAgICAg
ICAgICAgIGlmIChuZXdUZXh0ID09PSBpdGVtLm91dGxldC50ZXh0Q29udGVudCkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTE4LDkgKzExNCw5IEBAIFdlYkluc3BlY3Rvci5EZWZh
dWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGl0ZW0uY29udGFpbmVyLmFk
ZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgICAgIHRo
aXMuX2l0ZW1XYXNDbGlja2VkKG5hbWUpOwogICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2l0ZW1XYXNDbGlja2VkOiBmdW5jdGlvbihuYW1lKQorICAgIF9pdGVt
V2FzQ2xpY2tlZChuYW1lKQogICAgIHsKICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9pdGVtc1tu
YW1lXTsKICAgICAgICAgaWYgKCFpdGVtLmNvbnRhaW5lci5jbGFzc0xpc3QuY29udGFpbnMoV2Vi
SW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFzc05hbWUp
KQpAQCAtMTI4LDI1ICsxMjQsMjUgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoaXRlbS5oYW5kbGVyKQogICAgICAgICAgICAg
aXRlbS5oYW5kbGVyLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVzb3VyY2Vz
V2FzQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9yZXNvdXJjZXNXYXNDbGlja2VkKCkKICAgICB7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5zZWxlY3RlZFNpZGViYXJQ
YW5lbCA9IFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbDsKICAgICAgICAgV2ViSW5z
cGVjdG9yLm5hdmlnYXRpb25TaWRlYmFyLmNvbGxhcHNlZCA9IGZhbHNlOwotICAgIH0sCisgICAg
fQogCi0gICAgX25ldHdvcmtJdGVtV2FzQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9uZXR3b3Jr
SXRlbVdhc0NsaWNrZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLm5hdmlnYXRpb25T
aWRlYmFyLnNlbGVjdGVkU2lkZWJhclBhbmVsID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJh
clBhbmVsOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnNvbGVJdGVtV2FzQ2xpY2tlZDogZnVu
Y3Rpb24oc2NvcGUpCisgICAgX2NvbnNvbGVJdGVtV2FzQ2xpY2tlZChzY29wZSkKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5zaG93Q29uc29sZVZpZXcoc2NvcGUpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3NldENvbnNvbGVJdGVtVmFsdWU6IGZ1bmN0aW9uKGl0ZW1OYW1lLCBuZXdWYWx1
ZSkKKyAgICBfc2V0Q29uc29sZUl0ZW1WYWx1ZShpdGVtTmFtZSwgbmV3VmFsdWUpCiAgICAgewog
ICAgICAgICB2YXIgaVZhck5hbWUgPSAiXyIgKyBpdGVtTmFtZTsKICAgICAgICAgdmFyIHByZXZp
b3VzVmFsdWUgPSB0aGlzW2lWYXJOYW1lXTsKQEAgLTE3OCw5ICsxNzQsOSBAQCBXZWJJbnNwZWN0
b3IuRGVmYXVsdERhc2hib2FyZFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29udGFp
bmVyLmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVuZCIsIGFuaW1hdGlvbkVuZGVk
KTsKIAogICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgicHVsc2luZyIpOwotICAgIH0s
CisgICAgfQogCi0gICAgX3NldEl0ZW1FbmFibGVkOiBmdW5jdGlvbihpdGVtLCBlbmFibGVkKQor
ICAgIF9zZXRJdGVtRW5hYmxlZChpdGVtLCBlbmFibGVkKQogICAgIHsKICAgICAgICAgaWYgKGVu
YWJsZWQpCiAgICAgICAgICAgICBpdGVtLmNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5FbmFibGVkSXRlbVN0eWxlQ2xhc3NOYW1lKTsKQEAg
LTE4OCwzICsxODQsNSBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZShXZWJJ
bnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZpZXcuRW5hYmxlZEl0ZW1TdHlsZUNsYXNzTmFtZSk7
CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJsZWRJ
dGVtU3R5bGVDbGFzc05hbWUgPSAiZW5hYmxlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCmluZGV4
IDM5NjU1NTAuLjllY2RjN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uLmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4NSArMjMsNzMg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb24gPSBmdW5jdGlvbihpZGVudGlmaWVyLCB0aXRsZSwgZ3JvdXBzLCBv
cHRpb25zRWxlbWVudCwgZGVmYXVsdENvbGxhcHNlZFNldHRpbmdWYWx1ZSkgewotICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKK1dl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbiA9IGNsYXNzIERldGFpbHNTZWN0aW9uIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIHRpdGxl
LCBncm91cHMsIG9wdGlvbnNFbGVtZW50LCBkZWZhdWx0Q29sbGFwc2VkU2V0dGluZ1ZhbHVlKQor
ICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIGNvbnNvbGUuYXNzZXJ0KGlkZW50aWZpZXIp
OworICAgICAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsKIAotICAgIHRoaXMuX2VsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTmFtZSA9IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5TdHlsZUNsYXNzTmFtZTsKLSAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoaWRlbnRpZmllcik7CisgICAgICAgIHRoaXMu
X2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uU3R5bGVDbGFz
c05hbWU7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChpZGVudGlmaWVyKTsK
IAotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhp
cy5faGVhZGVyRWxlbWVudENsaWNrZWQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5faGVhZGVyRWxl
bWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uSGVhZGVyRWxlbWVu
dFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVh
ZGVyRWxlbWVudCk7CisgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuX2hlYWRlckVsZW1lbnRDbGlja2VkLmJpbmQodGhpcykpOwor
ICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbi5IZWFkZXJFbGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVudCk7CiAKLSAgICBpZiAob3B0aW9u
c0VsZW1lbnQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkgewotICAgICAgICB0aGlzLl9vcHRpb25z
RWxlbWVudCA9IG9wdGlvbnNFbGVtZW50OwotICAgICAgICB0aGlzLl9vcHRpb25zRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9vcHRpb25zRWxlbWVudE1vdXNlRG93
bi5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhpcy5fb3B0aW9uc0VsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2V1cCIsIHRoaXMuX29wdGlvbnNFbGVtZW50TW91c2VVcC5iaW5kKHRoaXMpKTsK
LSAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9vcHRpb25zRWxl
bWVudCk7Ci0gICAgfQorICAgICAgICBpZiAob3B0aW9uc0VsZW1lbnQgaW5zdGFuY2VvZiBIVE1M
RWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5fb3B0aW9uc0VsZW1lbnQgPSBvcHRpb25zRWxl
bWVudDsKKyAgICAgICAgICAgIHRoaXMuX29wdGlvbnNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlZG93biIsIHRoaXMuX29wdGlvbnNFbGVtZW50TW91c2VEb3duLmJpbmQodGhpcykpOwor
ICAgICAgICAgICAgdGhpcy5fb3B0aW9uc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1
cCIsIHRoaXMuX29wdGlvbnNFbGVtZW50TW91c2VVcC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAg
IHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fb3B0aW9uc0VsZW1lbnQpOwor
ICAgICAgICB9CiAKLSAgICB0aGlzLl90aXRsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7Ci0gICAgdGhpcy5faGVhZGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90
aXRsZUVsZW1lbnQpOworICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fdGl0bGVFbGVtZW50KTsKIAotICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fY29udGVudEVsZW1lbnQuY2xh
c3NOYW1lID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkNvbnRlbnRFbGVtZW50U3R5bGVD
bGFzc05hbWU7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50RWxl
bWVudCk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50LmNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5Db250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRFbGVtZW50KTsK
IAotICAgIHRoaXMuX2dlbmVyYXRlRGlzY2xvc3VyZVRyaWFuZ2xlc0lmTmVlZGVkKCk7CisgICAg
ICAgIHRoaXMuX2dlbmVyYXRlRGlzY2xvc3VyZVRyaWFuZ2xlc0lmTmVlZGVkKCk7CiAKLSAgICB0
aGlzLl9pZGVudGlmaWVyID0gaWRlbnRpZmllcjsKLSAgICB0aGlzLnRpdGxlID0gdGl0bGU7Ci0g
ICAgdGhpcy5ncm91cHMgPSBncm91cHMgfHwgW25ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25Hcm91cF07CisgICAgICAgIHRoaXMuX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgICAg
ICB0aGlzLnRpdGxlID0gdGl0bGU7CisgICAgICAgIHRoaXMuZ3JvdXBzID0gZ3JvdXBzIHx8IFtu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXBdOwogCi0gICAgdGhpcy5fY29sbGFw
c2VkU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVudGlmaWVyICsgIi1kZXRh
aWxzLXNlY3Rpb24tY29sbGFwc2VkIiwgISFkZWZhdWx0Q29sbGFwc2VkU2V0dGluZ1ZhbHVlKTsK
LSAgICB0aGlzLmNvbGxhcHNlZCA9IHRoaXMuX2NvbGxhcHNlZFNldHRpbmcudmFsdWU7Ci19Owot
Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uU3R5bGVDbGFzc05hbWUgPSAiZGV0YWlscy1z
ZWN0aW9uIjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5IZWFkZXJFbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAiaGVhZGVyIjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5UaXRsZUVs
ZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ0aXRsZSI7Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b24uQ29udGVudEVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50IjsKLVdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbi5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQiOwot
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLk1vdXNlT3Zlck9wdGlvbnNFbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAibW91c2Utb3Zlci1vcHRpb25zLWVsZW1lbnQiOwotV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uLkRpc2Nsb3N1cmVUcmlhbmdsZU9wZW5DYW52YXNJZGVudGlmaWVyID0gImRl
dGFpbHMtc2VjdGlvbi1kaXNjbG9zdXJlLXRyaWFuZ2xlLW9wZW4iOwotV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uLkRpc2Nsb3N1cmVUcmlhbmdsZUNsb3NlZENhbnZhc0lkZW50aWZpZXIgPSAi
ZGV0YWlscy1zZWN0aW9uLWRpc2Nsb3N1cmUtdHJpYW5nbGUtY2xvc2VkIjsKLVdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVOb3JtYWxDYW52YXNJZGVudGlmaWVy
U3VmZml4ID0gIi1ub3JtYWwiOwotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkRpc2Nsb3N1
cmVUcmlhbmdsZUFjdGl2ZUNhbnZhc0lkZW50aWZpZXJTdWZmaXggPSAiLWFjdGl2ZSI7Ci0KLVdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbiwKKyAgICAgICAgdGhpcy5fY29sbGFwc2VkU2V0
dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVudGlmaWVyICsgIi1kZXRhaWxzLXNl
Y3Rpb24tY29sbGFwc2VkIiwgISFkZWZhdWx0Q29sbGFwc2VkU2V0dGluZ1ZhbHVlKTsKKyAgICAg
ICAgdGhpcy5jb2xsYXBzZWQgPSB0aGlzLl9jb2xsYXBzZWRTZXR0aW5nLnZhbHVlOworICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaWRlbnRpZmllcigp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWRlbnRpZmllcjsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCB0aXRsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGl0bGVFbGVt
ZW50LnRleHRDb250ZW50OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHRpdGxlKHRpdGxlKQog
ICAgIHsKICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LnRleHRDb250ZW50ID0gdGl0bGU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29sbGFwc2VkKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb24uQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IGNvbGxhcHNlZChmbGFnKQogICAgIHsKQEAgLTExMSwxMiArOTksMTIgQEAgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uQ29sbGFwc2VkU3R5
bGVDbGFzc05hbWUpOwogCiAgICAgICAgIHRoaXMuX2NvbGxhcHNlZFNldHRpbmcudmFsdWUgPSBm
bGFnIHx8IGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGdyb3VwcygpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fZ3JvdXBzOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGdy
b3Vwcyhncm91cHMpCiAgICAgewpAQCAtMTI2LDExICsxMTQsMTEgQEAgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRoaXMuX2dyb3Vwcy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2dyb3Vwc1tpXS5lbGVtZW50KTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIF9oZWFkZXJFbGVtZW50Q2xpY2tlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX2hlYWRlckVsZW1lbnRDbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKGV2ZW50LnRhcmdldC5pc1NlbGZPckRlc2NlbmRhbnQodGhpcy5fb3B0aW9uc0VsZW1lbnQp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM4LDE5ICsxMjYsMTkgQEAgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSAh
dGhpcy5jb2xsYXBzZWQ7CiAKICAgICAgICAgdGhpcy5fZWxlbWVudC5zY3JvbGxJbnRvVmlld0lm
TmVlZGVkKGZhbHNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9vcHRpb25zRWxlbWVudE1vdXNl
RG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX29wdGlvbnNFbGVtZW50TW91c2VEb3duKGV2ZW50
KQogICAgIHsKICAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5Nb3VzZU92ZXJPcHRpb25zRWxlbWVudFN0eWxlQ2xhc3NO
YW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9vcHRpb25zRWxlbWVudE1vdXNlVXA6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9vcHRpb25zRWxlbWVudE1vdXNlVXAoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uLk1vdXNlT3Zlck9wdGlvbnNFbGVtZW50U3R5bGVDbGFzc05hbWUpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2dlbmVyYXRlRGlzY2xvc3VyZVRyaWFuZ2xlc0lmTmVlZGVkOiBm
dW5jdGlvbigpCisgICAgX2dlbmVyYXRlRGlzY2xvc3VyZVRyaWFuZ2xlc0lmTmVlZGVkKCkKICAg
ICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uX2dlbmVyYXRlZERp
c2Nsb3N1cmVUcmlhbmdsZXMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNzMsNCArMTYxLDEz
IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsK
IAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5T
dHlsZUNsYXNzTmFtZSA9ICJkZXRhaWxzLXNlY3Rpb24iOworV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uLkhlYWRlckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJoZWFkZXIiOworV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uLlRpdGxlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInRpdGxlIjsK
K1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5Db250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1l
ID0gImNvbnRlbnQiOworV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkNvbGxhcHNlZFN0eWxl
Q2xhc3NOYW1lID0gImNvbGxhcHNlZCI7CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uTW91
c2VPdmVyT3B0aW9uc0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJtb3VzZS1vdmVyLW9wdGlvbnMt
ZWxlbWVudCI7CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uRGlzY2xvc3VyZVRyaWFuZ2xl
T3BlbkNhbnZhc0lkZW50aWZpZXIgPSAiZGV0YWlscy1zZWN0aW9uLWRpc2Nsb3N1cmUtdHJpYW5n
bGUtb3BlbiI7CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uRGlzY2xvc3VyZVRyaWFuZ2xl
Q2xvc2VkQ2FudmFzSWRlbnRpZmllciA9ICJkZXRhaWxzLXNlY3Rpb24tZGlzY2xvc3VyZS10cmlh
bmdsZS1jbG9zZWQiOworV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLkRpc2Nsb3N1cmVUcmlh
bmdsZU5vcm1hbENhbnZhc0lkZW50aWZpZXJTdWZmaXggPSAiLW5vcm1hbCI7CitXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb24uRGlzY2xvc3VyZVRyaWFuZ2xlQWN0aXZlQ2FudmFzSWRlbnRpZmll
clN1ZmZpeCA9ICItYWN0aXZlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbkRhdGFHcmlk
Um93LmpzCmluZGV4IDk1YjdiZDQuLjk2NGQ2OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1Nl
Y3Rpb25EYXRhR3JpZFJvdy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjUgKzIzLDIzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uRGF0YUdy
aWRSb3cgPSBmdW5jdGlvbihkYXRhR3JpZCwgZW1wdHlNZXNzYWdlKSB7Ci0gICAgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93LmNhbGwodGhpcywgZW1wdHlNZXNzYWdlKTsKLQotICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFH
cmlkUm93LlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHRoaXMuZGF0YUdyaWQgPSBkYXRhR3JpZDsK
LX07CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdyA9IGNsYXNzIERldGFp
bHNTZWN0aW9uRGF0YUdyaWRSb3cgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25S
b3cKK3sKKyAgICBjb25zdHJ1Y3RvcihkYXRhR3JpZCwgZW1wdHlNZXNzYWdlKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoZW1wdHlNZXNzYWdlKTsKIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
RGF0YUdyaWRSb3cuU3R5bGVDbGFzc05hbWUgPSAiZGF0YS1ncmlkIjsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoImRhdGEtZ3JpZCIpOwogCi1XZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25EYXRhR3JpZFJvdy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93LAorICAgICAgICB0aGlzLmRhdGFHcmlk
ID0gZGF0YUdyaWQ7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZGF0YUdyaWQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFHcmlkOwotICAgIH0sCisgICAgfQog
CiAgICAgc2V0IGRhdGFHcmlkKGRhdGFHcmlkKQogICAgIHsKQEAgLTU5LDUgKzU3LDMgQEAgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGhpcy5zaG93RW1wdHlNZXNzYWdlKCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbkdyb3VwLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25H
cm91cC5qcwppbmRleCA2NzI5ZmFhLi5lZGNjNDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbkdyb3VwLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9u
R3JvdXAuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDMyICsyMywyOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwID0gZnVuY3Rpb24o
cm93cykgewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmpl
Y3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbkdyb3VwLlN0eWxlQ2xhc3NOYW1lOwotCi0gICAgdGhpcy5yb3dzID0gcm93
czsKLX07CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cCA9IGNsYXNzIERldGFpbHNT
ZWN0aW9uR3JvdXAgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0
b3Iocm93cykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvbkdyb3VwLlN0eWxlQ2xhc3NOYW1lID0gImdyb3VwIjsKKyAgICAgICAgdGhpcy5fZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTmFtZSA9ICJncm91cCI7CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdy
b3VwLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uR3JvdXAsCisgICAgICAgIHRoaXMucm93cyA9IHJvd3M7CisgICAgfQogCiAgICAgLy8g
UHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByb3dzKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9yb3dzOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJvd3Mocm93cykK
ICAgICB7CkBAIC02MCw1ICs1NywzIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3Vw
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fcm93c1tpXS5lbGVtZW50KTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Hcm91cC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9EZXRhaWxzU2VjdGlvblByb3BlcnRpZXNSb3cuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblByb3BlcnRpZXNSb3cuanMKaW5k
ZXggYTk4NjE1Mi4uYTRiZDRlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uUHJv
cGVydGllc1Jvdy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsMjYgKzIzLDI0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUHJvcGVydGllc1Jv
dyA9IGZ1bmN0aW9uKHByb3BlcnRpZXNTZWN0aW9uLCBlbXB0eU1lc3NhZ2UpIHsKLSAgICBXZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuY2FsbCh0aGlzLCBlbXB0eU1lc3NhZ2UpOwotCi0g
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
UHJvcGVydGllc1Jvdy5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLlN5bnRheEhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUpOwotCi0g
ICAgdGhpcy5wcm9wZXJ0aWVzU2VjdGlvbiA9IHByb3BlcnRpZXNTZWN0aW9uOwotfTsKK1dlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblByb3BlcnRpZXNSb3cgPSBjbGFzcyBEZXRhaWxzU2VjdGlv
blByb3BlcnRpZXNSb3cgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cKK3sK
KyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzU2VjdGlvbiwgZW1wdHlNZXNzYWdlKQorICAgIHsK
KyAgICAgICAgc3VwZXIoZW1wdHlNZXNzYWdlKTsKIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uUHJvcGVydGllc1Jvdy5TdHlsZUNsYXNzTmFtZSA9ICJwcm9wZXJ0aWVzIjsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInByb3BlcnRpZXMiKTsKKyAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlN5bnRheEhpZ2hsaWdodGVkU3R5bGVD
bGFzc05hbWUpOwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
UHJvcGVydGllc1JvdywKKyAgICAgICAgdGhpcy5wcm9wZXJ0aWVzU2VjdGlvbiA9IHByb3BlcnRp
ZXNTZWN0aW9uOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHByb3BlcnRpZXNT
ZWN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzU2VjdGlvbjsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCBwcm9wZXJ0aWVzU2VjdGlvbihwcm9wZXJ0aWVzU2Vj
dGlvbikKICAgICB7CkBAIC01OCw1ICs1NiwzIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blByb3BlcnRpZXNSb3cucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5zaG93RW1wdHlN
ZXNzYWdlKCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUHJvcGVy
dGllc1Jvdy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
Um93LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Sb3cuanMKaW5kZXggYWM1YjgwOS4u
OGU5OGRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGV0YWlsc1NlY3Rpb25Sb3cuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Sb3cuanMKQEAgLTIzLDMzICsyMywyOSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdyA9IGZ1bmN0aW9uKGVtcHR5TWVzc2FnZSkgewotICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQot
ICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5T
dHlsZUNsYXNzTmFtZTsKLQotICAgIHRoaXMuX2VtcHR5TWVzc2FnZSA9IGVtcHR5TWVzc2FnZSB8
fCAiIjsKLX07CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cgPSBjbGFzcyBEZXRhaWxz
U2VjdGlvblJvdyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rv
cihlbXB0eU1lc3NhZ2UpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25Sb3cuU3R5bGVDbGFzc05hbWUgPSAicm93IjsKLVdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblJvdy5FbXB0eVN0eWxlQ2xhc3NOYW1lID0gImVtcHR5IjsKKyAgICAgICAg
dGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJyb3ciOwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3cucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Sb3csCisgICAgICAgIHRoaXMuX2VtcHR5TWVzc2FnZSA9IGVtcHR5TWVzc2Fn
ZSB8fCAiIjsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGVtcHR5TWVzc2FnZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZW1wdHlNZXNz
YWdlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVtcHR5TWVzc2FnZShlbXB0eU1lc3NhZ2Up
CiAgICAgewpAQCAtNTcsOSArNTMsOSBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghdGhpcy5fZWxlbWVudC5jaGlsZE5vZGVzLmxl
bmd0aCkKICAgICAgICAgICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSgpOwotICAgIH0sCisgICAg
fQogCi0gICAgc2hvd0VtcHR5TWVzc2FnZTogZnVuY3Rpb24oKQorICAgIHNob3dFbXB0eU1lc3Nh
Z2UoKQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93LkVtcHR5U3R5bGVDbGFzc05hbWUpOwogCkBAIC02OCwxMyAr
NjQsMTMgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9lbXB0eU1lc3NhZ2UpOwog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC50ZXh0Q29udGVudCA9IHRo
aXMuX2VtcHR5TWVzc2FnZTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGVFbXB0eU1lc3NhZ2U6
IGZ1bmN0aW9uKCkKKyAgICBoaWRlRW1wdHlNZXNzYWdlKCkKICAgICB7CiAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5F
bXB0eVN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVu
KCk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblJvdy5FbXB0eVN0eWxlQ2xhc3NOYW1lID0gImVtcHR5IjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNT
ZWN0aW9uU2ltcGxlUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cuanMKaW5kZXggOWU0OWNiOC4uZTQ0OWM3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0
YWlsc1NlY3Rpb25TaW1wbGVSb3cuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cuanMKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDc0ICsyMyw2OCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyA9IGZ1bmN0aW9uKGxhYmVsLCB2YWx1ZSkgewotICAg
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
LlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHRoaXMuX2xhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2xhYmVsRWxlbWVudC5jbGFzc05hbWUgPSBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cuTGFiZWxFbGVtZW50U3R5bGVDbGFz
c05hbWU7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xhYmVsRWxlbWVudCk7
Ci0KLSAgICB0aGlzLl92YWx1ZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLl92YWx1ZUVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uU2ltcGxlUm93LlZhbHVlRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl92YWx1ZUVsZW1lbnQpOwotCi0gICAgLy8gV29ya2Fy
b3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzEyNjY4ODcwPiBUcmlwbGUtY2xpY2tpbmcgdGV4dCB3
aXRoaW4gYQotICAgIC8vIDxkaXY+IHNldCB0byAiZGlzcGxheTogdGFibGUtY2VsbCIgc2VsZWN0
cyB0ZXh0IG91dHNpZGUgdGhlIGNlbGwuCi0gICAgLy8KLSAgICAvLyBPbiB0cmlwbGUtY2xpY2ss
IGFkanVzdCB0aGUgc2VsZWN0aW9uIHJhbmdlIHRvIGluY2x1ZGUgb25seSB0aGUgdmFsdWUKLSAg
ICAvLyBlbGVtZW50IGlmIHRoZSBzZWxlY3Rpb24gZXh0ZW5kcyBiZXlvbmQgaXQuCi0gICAgdmFy
IHZhbHVlRWxlbWVudENsaWNrZWQgPSBmdW5jdGlvbihldmVudCkgewotICAgICAgICBldmVudC5z
dG9wUHJvcGFnYXRpb24oKTsKLQotICAgICAgICBpZiAoZXZlbnQuZGV0YWlsIDwgMykKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgY3VycmVudFNlbGVjdGlvbiA9IHdpbmRvdy5n
ZXRTZWxlY3Rpb24oKTsKLSAgICAgICAgaWYgKCFjdXJyZW50U2VsZWN0aW9uKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBjdXJyZW50UmFuZ2UgPSBjdXJyZW50U2VsZWN0aW9u
LmdldFJhbmdlQXQoMCk7Ci0gICAgICAgIGlmICghY3VycmVudFJhbmdlIHx8IGN1cnJlbnRSYW5n
ZS5zdGFydENvbnRhaW5lciA9PT0gY3VycmVudFJhbmdlLmVuZENvbnRhaW5lcikKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB2YXIgY29ycmVjdGVkUmFuZ2UgPSBkb2N1bWVudC5jcmVh
dGVSYW5nZSgpOwotICAgICAgICBjb3JyZWN0ZWRSYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZXZl
bnQuY3VycmVudFRhcmdldCk7Ci0gICAgICAgIGN1cnJlbnRTZWxlY3Rpb24ucmVtb3ZlQWxsUmFu
Z2VzKCk7Ci0gICAgICAgIGN1cnJlbnRTZWxlY3Rpb24uYWRkUmFuZ2UoY29ycmVjdGVkUmFuZ2Up
OwotICAgIH07Ci0gICAgdGhpcy5fdmFsdWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdmFsdWVFbGVtZW50Q2xpY2tlZCk7Ci0KLSAgICB0aGlzLmxhYmVsID0gbGFiZWw7Ci0gICAg
dGhpcy52YWx1ZSA9IHZhbHVlOwotfTsKLQotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2lt
cGxlUm93LlN0eWxlQ2xhc3NOYW1lID0gInNpbXBsZSI7Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25TaW1wbGVSb3cuRGF0YVN0eWxlQ2xhc3NOYW1lID0gImRhdGEiOwotV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LkVtcHR5U3R5bGVDbGFzc05hbWUgPSAiZW1wdHkiOwot
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LkxhYmVsRWxlbWVudFN0eWxlQ2xh
c3NOYW1lID0gImxhYmVsIjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5W
YWx1ZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ2YWx1ZSI7Ci0KLVdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblNpbXBsZVJvdy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdywKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblNpbXBsZVJvdyA9IGNsYXNzIERldGFpbHNTZWN0aW9uU2ltcGxlUm93IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Cit7CisgICAgY29uc3RydWN0b3IobGFiZWwsIHZh
bHVlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgic2ltcGxlIik7CisKKyAgICAgICAgdGhpcy5fbGFiZWxFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2xhYmVsRWxlbWVudC5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cuTGFiZWxFbGVt
ZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9sYWJlbEVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX3ZhbHVlRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl92YWx1ZUVsZW1lbnQuY2xhc3NO
YW1lID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LlZhbHVlRWxlbWVudFN0
eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdmFs
dWVFbGVtZW50KTsKKworICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0v
MTI2Njg4NzA+IFRyaXBsZS1jbGlja2luZyB0ZXh0IHdpdGhpbiBhCisgICAgICAgIC8vIDxkaXY+
IHNldCB0byAiZGlzcGxheTogdGFibGUtY2VsbCIgc2VsZWN0cyB0ZXh0IG91dHNpZGUgdGhlIGNl
bGwuCisgICAgICAgIC8vCisgICAgICAgIC8vIE9uIHRyaXBsZS1jbGljaywgYWRqdXN0IHRoZSBz
ZWxlY3Rpb24gcmFuZ2UgdG8gaW5jbHVkZSBvbmx5IHRoZSB2YWx1ZQorICAgICAgICAvLyBlbGVt
ZW50IGlmIHRoZSBzZWxlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuYmV5b25kIGl0LgorICAg
ICAgICB2YXIgdmFsdWVFbGVtZW50Q2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKworICAgICAgICAgICAgaWYgKGV2ZW50LmRl
dGFpbCA8IDMpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB2YXIgY3Vy
cmVudFNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKKyAgICAgICAgICAgIGlmICgh
Y3VycmVudFNlbGVjdGlvbikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAg
IHZhciBjdXJyZW50UmFuZ2UgPSBjdXJyZW50U2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7CisgICAg
ICAgICAgICBpZiAoIWN1cnJlbnRSYW5nZSB8fCBjdXJyZW50UmFuZ2Uuc3RhcnRDb250YWluZXIg
PT09IGN1cnJlbnRSYW5nZS5lbmRDb250YWluZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICB2YXIgY29ycmVjdGVkUmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgp
OworICAgICAgICAgICAgY29ycmVjdGVkUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGV2ZW50LmN1
cnJlbnRUYXJnZXQpOworICAgICAgICAgICAgY3VycmVudFNlbGVjdGlvbi5yZW1vdmVBbGxSYW5n
ZXMoKTsKKyAgICAgICAgICAgIGN1cnJlbnRTZWxlY3Rpb24uYWRkUmFuZ2UoY29ycmVjdGVkUmFu
Z2UpOworICAgICAgICB9OworICAgICAgICB0aGlzLl92YWx1ZUVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCB2YWx1ZUVsZW1lbnRDbGlja2VkKTsKKworICAgICAgICB0aGlzLmxhYmVs
ID0gbGFiZWw7CisgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTsKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCBsYWJlbCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbGFi
ZWxFbGVtZW50LnRleHRDb250ZW50OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGxhYmVsKGxh
YmVsKQogICAgIHsKICAgICAgICAgdGhpcy5fbGFiZWxFbGVtZW50LnRleHRDb250ZW50ID0gbGFi
ZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFsdWUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3ZhbHVlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHZhbHVlKHZhbHVlKQog
ICAgIHsKQEAgLTExNyw0ICsxMTEsNyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1w
bGVSb3cucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblNpbXBsZVJvdy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJv
dy5EYXRhU3R5bGVDbGFzc05hbWUgPSAiZGF0YSI7CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25TaW1wbGVSb3cuRW1wdHlTdHlsZUNsYXNzTmFtZSA9ICJlbXB0eSI7CitXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cuTGFiZWxFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAibGFi
ZWwiOworV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LlZhbHVlRWxlbWVudFN0
eWxlQ2xhc3NOYW1lID0gInZhbHVlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uVGV4dFJvdy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uVGV4dFJvdy5q
cwppbmRleCA5NDkwZmZlLi41YjhlYjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblRleHRSb3cuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25UZXh0
Um93LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMywyNyArMjMsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25UZXh0Um93ID0gZnVuY3Rpb24o
dGV4dCkKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblRleHRSb3cgPSBjbGFzcyBEZXRhaWxz
U2VjdGlvblRleHRSb3cgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cKIHsK
LSAgICBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuY2FsbCh0aGlzKTsKLQotICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblRleHRS
b3cuU3R5bGVDbGFzc05hbWUpOwotCi0gICAgdGhpcy5lbGVtZW50LnRleHRDb250ZW50ID0gdGV4
dDsKLX07CisgICAgY29uc3RydWN0b3IodGV4dCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAK
LVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblRleHRSb3cuU3R5bGVDbGFzc05hbWUgPSAidGV4
dCI7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0ZXh0Iik7CiAKLVdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblRleHRSb3cucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25UZXh0Um93LAotICAgIF9fcHJvdG9fXzog
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5l
bGVtZW50LnRleHRDb250ZW50ID0gdGV4dDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAg
IGdldCB0ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQudGV4dENvbnRl
bnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgdGV4dCh0ZXh0KQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTaWRl
YmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDEzOGU2ODQuLmMwMDdiNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTaWRlYmFy
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDcgKzIzLDQ4IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFu
ZWwgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgc2luZ3VsYXJEaXNwbGF5TmFt
ZSwgaW1hZ2UsIGtleWJvYXJkU2hvcnRjdXRLZXksIGVsZW1lbnQpCitXZWJJbnNwZWN0b3IuRGV0
YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIERldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuU2lkZWJhclBhbmVsCiB7Ci0gICAgaWYgKGtleWJvYXJkU2hvcnRjdXRLZXkpCi0g
ICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCB8
IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0LCBrZXlib2FyZFNo
b3J0Y3V0S2V5LCB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpKTsKLQotICAgIGlmICh0aGlzLl9rZXli
b2FyZFNob3J0Y3V0KSB7Ci0gICAgICAgIHZhciBzaG93VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU2hvdyB0aGUgJXMgZGV0YWlscyBzaWRlYmFyICglcykiKS5mb3JtYXQoc2luZ3Vs
YXJEaXNwbGF5TmFtZSwgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAg
ICAgIHZhciBoaWRlVG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgJXMg
ZGV0YWlscyBzaWRlYmFyICglcykiKS5mb3JtYXQoc2luZ3VsYXJEaXNwbGF5TmFtZSwgdGhpcy5f
a2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdmFy
IHNob3dUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRoZSAlcyBkZXRhaWxz
IHNpZGViYXIiKS5mb3JtYXQoc2luZ3VsYXJEaXNwbGF5TmFtZSk7Ci0gICAgICAgIHZhciBoaWRl
VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgJXMgZGV0YWlscyBzaWRl
YmFyIikuZm9ybWF0KHNpbmd1bGFyRGlzcGxheU5hbWUpOwotICAgIH0KKyAgICBjb25zdHJ1Y3Rv
cihpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgc2luZ3VsYXJEaXNwbGF5TmFtZSwgaW1hZ2UsIGtl
eWJvYXJkU2hvcnRjdXRLZXksIGVsZW1lbnQpCisgICAgeworICAgICAgICB2YXIga2V5Ym9hcmRT
aG9ydGN1dCA9IG51bGw7CisgICAgICAgIGlmIChrZXlib2FyZFNob3J0Y3V0S2V5KQorICAgICAg
ICAgICAga2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1
dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sIHwgV2ViSW5z
cGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQsIGtleWJvYXJkU2hvcnRjdXRL
ZXkpOwogCi0gICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5jYWxsKHRoaXMsIGlkZW50aWZp
ZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50
KTsKKyAgICAgICAgaWYgKGtleWJvYXJkU2hvcnRjdXQpIHsKKyAgICAgICAgICAgIHZhciBzaG93
VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUgJXMgZGV0YWlscyBzaWRl
YmFyICglcykiKS5mb3JtYXQoc2luZ3VsYXJEaXNwbGF5TmFtZSwga2V5Ym9hcmRTaG9ydGN1dC5k
aXNwbGF5TmFtZSk7CisgICAgICAgICAgICB2YXIgaGlkZVRvb2xUaXAgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkhpZGUgdGhlICVzIGRldGFpbHMgc2lkZWJhciAoJXMpIikuZm9ybWF0KHNpbmd1
bGFyRGlzcGxheU5hbWUsIGtleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgdmFyIHNob3dUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTaG93IHRoZSAlcyBkZXRhaWxzIHNpZGViYXIiKS5mb3JtYXQoc2luZ3VsYXJEaXNwbGF5
TmFtZSk7CisgICAgICAgICAgICB2YXIgaGlkZVRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkhpZGUgdGhlICVzIGRldGFpbHMgc2lkZWJhciIpLmZvcm1hdChzaW5ndWxhckRpc3BsYXlO
YW1lKTsKKyAgICAgICAgfQogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUpOwotfTsKKyAgICAgICAg
c3VwZXIoaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNob3dUb29sVGlwLCBoaWRlVG9vbFRpcCwg
aW1hZ2UsIGVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5TdHls
ZUNsYXNzTmFtZSA9ICJkZXRhaWxzIjsKKyAgICAgICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dCA9
IGtleWJvYXJkU2hvcnRjdXQ7CisgICAgICAgIGlmICh0aGlzLl9rZXlib2FyZFNob3J0Y3V0KQor
ICAgICAgICAgICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dC5jYWxsYmFjayA9IHRoaXMudG9nZ2xl
LmJpbmQodGhpcyk7CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWws
Ci0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRldGFpbHMiKTsKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAotICAgIGluc3BlY3Q6IGZ1bmN0aW9uKG9iamVjdHMpCisgICAgaW5zcGVj
dChvYmplY3RzKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4K
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0
aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fbmVlZHNSZWZyZXNo
KSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbmVlZHNSZWZyZXNoOwogICAgICAgICAgICAg
dGhpcy5yZWZyZXNoKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIG5lZWRzUmVm
cmVzaDogZnVuY3Rpb24oKQorICAgIG5lZWRzUmVmcmVzaCgpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuc2VsZWN0ZWQpIHsKICAgICAgICAgICAgIHRoaXMuX25lZWRzUmVmcmVzaCA9IHRydWU7
CkBAIC03MSw5ICs3Miw5IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMucmVmcmVzaCgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAg
ICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EaXZpZGVyTmF2aWdhdGlv
bkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EaXZp
ZGVyTmF2aWdhdGlvbkl0ZW0uanMKaW5kZXggNWU5NzY3YTAuLjkxMGMwNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RpdmlkZXJOYXZpZ2F0
aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EaXZpZGVyTmF2aWdhdGlvbkl0ZW0uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE4ICsyMywxNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdh
dGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25JdGVtLmNhbGwodGhpcywgaWRlbnRpZmllcik7Ci19OwotCi1XZWJJbnNwZWN0b3IuRGl2
aWRlck5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lID0gImRpdmlkZXIiOworV2ViSW5zcGVj
dG9yLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIERpdmlkZXJOYXZpZ2F0aW9uSXRlbSBl
eHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbQoreworICAgIGNvbnN0cnVjdG9yKGlk
ZW50aWZpZXIpCisgICAgeworICAgICAgICBzdXBlcihpZGVudGlmaWVyKTsKKyAgICB9CiAKLVdl
Ykluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGl2aWRlck5hdmlnYXRpb25JdGVtLAorICAgIC8vIFByb3Rl
Y3RlZAogCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2FkZGl0aW9uYWxDbGFzc05hbWVzOiBbV2Vi
SW5zcGVjdG9yLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZV0sCisgICAgZ2V0
IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBbImRpdmlkZXIi
XTsKKyAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRGl2aWRlck5hdmlnYXRpb25JdGVtLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRWRp
dGluZ1N1cHBvcnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9FZGl0aW5nU3VwcG9ydC5qcwppbmRleCBhYzU4NjQ2Li4zZmEzNmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FZGl0aW5nU3VwcG9ydC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FZGl0aW5n
U3VwcG9ydC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtNTcsNyArNTcsNyBAQCBXZWJJbnNwZWN0b3IuaXNFZGl0aW5nQW55RmllbGQg
PSBmdW5jdGlvbigpCiAKIFdlYkluc3BlY3Rvci5pc0V2ZW50VGFyZ2V0QW5FZGl0YWJsZUZpZWxk
ID0gZnVuY3Rpb24oZXZlbnQpCiB7Ci0gICAgY29uc3QgdGV4dElucHV0VHlwZXMgPSB7InRleHQi
OiB0cnVlLCAic2VhcmNoIjogdHJ1ZSwgInRlbCI6IHRydWUsICJ1cmwiOiB0cnVlLCAiZW1haWwi
OiB0cnVlLCAicGFzc3dvcmQiOiB0cnVlfTsKKyAgICB2YXIgdGV4dElucHV0VHlwZXMgPSB7InRl
eHQiOiB0cnVlLCAic2VhcmNoIjogdHJ1ZSwgInRlbCI6IHRydWUsICJ1cmwiOiB0cnVlLCAiZW1h
aWwiOiB0cnVlLCAicGFzc3dvcmQiOiB0cnVlfTsKICAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3Rh
bmNlb2YgSFRNTElucHV0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGV2ZW50LnRhcmdldC50eXBl
IGluIHRleHRJbnB1dFR5cGVzOwogCkBAIC03NCwyNiArNzQsMjkgQEAgV2ViSW5zcGVjdG9yLmlz
RXZlbnRUYXJnZXRBbkVkaXRhYmxlRmllbGQgPSBmdW5jdGlvbihldmVudCkKICAgICByZXR1cm4g
ZmFsc2U7CiB9OwogCi1XZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZyA9IGZ1bmN0aW9uKGNvbW1p
dEhhbmRsZXIsIGNhbmNlbEhhbmRsZXIsIGNvbnRleHQpCitXZWJJbnNwZWN0b3IuRWRpdGluZ0Nv
bmZpZyA9IGNsYXNzIEVkaXRpbmdDb25maWcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7
Ci0gICAgdGhpcy5jb21taXRIYW5kbGVyID0gY29tbWl0SGFuZGxlcjsKLSAgICB0aGlzLmNhbmNl
bEhhbmRsZXIgPSBjYW5jZWxIYW5kbGVyOwotICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7Ci0g
ICAgdGhpcy5zcGVsbGNoZWNrID0gZmFsc2U7Ci19OworICAgIGNvbnN0cnVjdG9yKGNvbW1pdEhh
bmRsZXIsIGNhbmNlbEhhbmRsZXIsIGNvbnRleHQpCisgICAgeworICAgICAgICBzdXBlcigpOwor
CisgICAgICAgIHRoaXMuY29tbWl0SGFuZGxlciA9IGNvbW1pdEhhbmRsZXI7CisgICAgICAgIHRo
aXMuY2FuY2VsSGFuZGxlciA9IGNhbmNlbEhhbmRsZXI7CisgICAgICAgIHRoaXMuY29udGV4dCA9
IGNvbnRleHQ7CisgICAgICAgIHRoaXMuc3BlbGxjaGVjayA9IGZhbHNlOworICAgIH0KIAotV2Vi
SW5zcGVjdG9yLkVkaXRpbmdDb25maWcucHJvdG90eXBlID0gewotICAgIHNldFBhc3RlSGFuZGxl
cjogZnVuY3Rpb24ocGFzdGVIYW5kbGVyKQorICAgIHNldFBhc3RlSGFuZGxlcihwYXN0ZUhhbmRs
ZXIpCiAgICAgewogICAgICAgICB0aGlzLnBhc3RlSGFuZGxlciA9IHBhc3RlSGFuZGxlcjsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNldE11bHRpbGluZTogZnVuY3Rpb24obXVsdGlsaW5lKQorICAg
IHNldE11bHRpbGluZShtdWx0aWxpbmUpCiAgICAgewogICAgICAgICB0aGlzLm11bHRpbGluZSA9
IG11bHRpbGluZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNldEN1c3RvbUZpbmlzaEhhbmRsZXI6
IGZ1bmN0aW9uKGN1c3RvbUZpbmlzaEhhbmRsZXIpCisgICAgc2V0Q3VzdG9tRmluaXNoSGFuZGxl
cihjdXN0b21GaW5pc2hIYW5kbGVyKQogICAgIHsKICAgICAgICAgdGhpcy5jdXN0b21GaW5pc2hI
YW5kbGVyID0gY3VzdG9tRmluaXNoSGFuZGxlcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbi5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVu
ZXJTZWN0aW9uLmpzCmluZGV4IDljYzM4NmMuLjk2NzBiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlz
dGVuZXJTZWN0aW9uLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywyNCArMjMsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb24gPSBm
dW5jdGlvbih0eXBlLCBub2RlSWQpCitXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb24g
PSBjbGFzcyBFdmVudExpc3RlbmVyU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvbgogewotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5jYWxsKHRoaXMsIHR5
cGUgKyAiLWV2ZW50LWxpc3RlbmVyLXNlY3Rpb24iLCB0eXBlLCBbXSwgbnVsbCwgdHJ1ZSk7Cisg
ICAgY29uc3RydWN0b3IodHlwZSwgbm9kZUlkKQorICAgIHsKKyAgICAgICAgc3VwZXIodHlwZSAr
ICItZXZlbnQtbGlzdGVuZXItc2VjdGlvbiIsIHR5cGUsIFtdLCBudWxsLCB0cnVlKTsKIAotICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJldmVudC1saXN0ZW5lci1zZWN0aW9uIik7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJldmVudC1saXN0ZW5lci1zZWN0aW9u
Iik7CiAKLSAgICB0aGlzLl9ub2RlSWQgPSBub2RlSWQ7Ci19OworICAgICAgICB0aGlzLl9ub2Rl
SWQgPSBub2RlSWQ7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb24u
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5l
clNlY3Rpb24sCisgICAgLy8gUHVibGljCiAKLSAgICBhZGRMaXN0ZW5lcjogZnVuY3Rpb24oZXZl
bnRMaXN0ZW5lcikKKyAgICBhZGRMaXN0ZW5lcihldmVudExpc3RlbmVyKQogICAgIHsKICAgICAg
ICAgdmFyIGdyb3VwcyA9IHRoaXMuZ3JvdXBzOwogICAgICAgICBncm91cHMucHVzaChuZXcgV2Vi
SW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAoZXZlbnRMaXN0ZW5lciwgdGhpcy5f
bm9kZUlkKSk7CiAgICAgICAgIHRoaXMuZ3JvdXBzID0gZ3JvdXBzOwogICAgIH0KIH07Ci0KLVdl
Ykluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbi5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3Jv
dXAuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExp
c3RlbmVyU2VjdGlvbkdyb3VwLmpzCmluZGV4IDQxOGZkYjEuLjRlNmQzMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJT
ZWN0aW9uR3JvdXAuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjMgKzIzLDI0IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkV2ZW50
TGlzdGVuZXJTZWN0aW9uR3JvdXAgPSBmdW5jdGlvbihldmVudExpc3RlbmVyLCBub2RlSWQpCitX
ZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cCA9IGNsYXNzIEV2ZW50TGlzdGVu
ZXJTZWN0aW9uR3JvdXAgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cAog
ewotICAgIHRoaXMuX2V2ZW50TGlzdGVuZXIgPSBldmVudExpc3RlbmVyOwotICAgIHRoaXMuX25v
ZGVJZCA9IG5vZGVJZDsKKyAgICBjb25zdHJ1Y3RvcihldmVudExpc3RlbmVyLCBub2RlSWQpCisg
ICAgeworICAgICAgICB2YXIgcm93cyA9IFtdOworICAgICAgICByb3dzLnB1c2gobmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5v
ZGUiKSwgdGhpcy5fbm9kZVRleHRPckxpbmsoKSkpOworICAgICAgICByb3dzLnB1c2gobmV3IFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkZ1bmN0aW9uIiksIHRoaXMuX2Z1bmN0aW9uVGV4dE9yTGluaygpKSk7CisgICAgICAgIHJvd3Mu
cHVzaChuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiVHlwZSIpLCB0aGlzLl90eXBlKCkpKTsKIAotICAgIHZhciByb3dzID0gW107
Ci0gICAgcm93cy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3co
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOb2RlIiksIHRoaXMuX25vZGVUZXh0T3JMaW5rKCkpKTsK
LSAgICByb3dzLnB1c2gobmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZ1bmN0aW9uIiksIHRoaXMuX2Z1bmN0aW9uVGV4dE9yTGlu
aygpKSk7Ci0gICAgcm93cy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1w
bGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIiksIHRoaXMuX3R5cGUoKSkpOworICAg
ICAgICBzdXBlcihyb3dzKTsKIAotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3Vw
LmNhbGwodGhpcywgcm93cyk7Ci19OworICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyID0gZXZl
bnRMaXN0ZW5lcjsKKyAgICAgICAgdGhpcy5fbm9kZUlkID0gbm9kZUlkOworICAgIH0KIAotV2Vi
SW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cCwKKyAgICAv
LyBQcml2YXRlCiAKLSAgICBfbm9kZVRleHRPckxpbms6IGZ1bmN0aW9uKCkKKyAgICBfbm9kZVRl
eHRPckxpbmsoKQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9ldmVudExpc3RlbmVy
Lm5vZGU7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGUpOwpAQCAtNTAsOSArNTEsOSBAQCBX
ZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICByZXR1cm4gImRvY3VtZW50IjsKIAogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9y
LmxpbmtpZnlOb2RlUmVmZXJlbmNlKG5vZGUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3R5cGU6
IGZ1bmN0aW9uKCkKKyAgICBfdHlwZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZXZlbnRM
aXN0ZW5lci51c2VDYXB0dXJlKQogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQ2FwdHVyaW5nIik7CkBAIC02MSw5ICs2Miw5IEBAIFdlYkluc3BlY3Rvci5FdmVudExp
c3RlbmVyU2VjdGlvbkdyb3VwLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkF0dHJpYnV0ZSIpOwogCiAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkJ1YmJsaW5nIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZnVuY3Rp
b25UZXh0T3JMaW5rOiBmdW5jdGlvbigpCisgICAgX2Z1bmN0aW9uVGV4dE9yTGluaygpCiAgICAg
ewogICAgICAgICB2YXIgbWF0Y2ggPSB0aGlzLl9ldmVudExpc3RlbmVyLmhhbmRsZXJCb2R5Lm1h
dGNoKC9mdW5jdGlvbiAoW15cKF0rPylcKC8pOwogICAgICAgICBpZiAobWF0Y2gpIHsKQEAgLTk4
LDUgKzk5LDMgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAgICAgfQogfTsKLQotV2ViSW5zcGVj
dG9yLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhci5qcwppbmRleCAy
YWM4MjA3Li5hOWYwNjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw2NSArMjMsNTQgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRmlsdGVyQmFy
ID0gZnVuY3Rpb24oZWxlbWVudCkgewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBX
ZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVt
ZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRmlsdGVyQmFyLlN0eWxlQ2xhc3NOYW1lKTsKLQot
ICAgIHRoaXMuX2ZpbHRlcnNOYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmlsdGVyc05hdmln
YXRpb25CYXIuZWxlbWVudCk7Ci0KLSAgICB0aGlzLl9maWx0ZXJGdW5jdGlvbnNNYXAgPSBuZXcg
TWFwOwotCi0gICAgdGhpcy5faW5wdXRGaWVsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlu
cHV0Iik7Ci0gICAgdGhpcy5faW5wdXRGaWVsZC50eXBlID0gInNlYXJjaCI7Ci0gICAgdGhpcy5f
aW5wdXRGaWVsZC5zcGVsbGNoZWNrID0gZmFsc2U7Ci0gICAgdGhpcy5faW5wdXRGaWVsZC5pbmNy
ZW1lbnRhbCA9IHRydWU7Ci0gICAgdGhpcy5faW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJz
ZWFyY2giLCB0aGlzLl9oYW5kbGVGaWx0ZXJDaGFuZ2VkLmJpbmQodGhpcyksIGZhbHNlKTsKLSAg
ICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2lucHV0RmllbGQpOwotfTsKK1dlYklu
c3BlY3Rvci5GaWx0ZXJCYXIgPSBjbGFzcyBGaWx0ZXJCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoZWxlbWVudCkKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CiAKLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBh
bmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRk
Q29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkZpbHRlckJhcik7CisgICAgICAgIHRo
aXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImZpbHRlci1iYXIiKTsKIAotV2Vi
SW5zcGVjdG9yLkZpbHRlckJhci5TdHlsZUNsYXNzTmFtZSA9ICJmaWx0ZXItYmFyIjsKKyAgICAg
ICAgdGhpcy5fZmlsdGVyc05hdmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25CYXI7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmlsdGVyc05h
dmlnYXRpb25CYXIuZWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5GaWx0ZXJCYXIuRXZlbnQgPSB7
Ci0gICAgRmlsdGVyRGlkQ2hhbmdlOiAiZmlsdGVyLWJhci10ZXh0LWZpbHRlci1kaWQtY2hhbmdl
IgotfTsKKyAgICAgICAgdGhpcy5fZmlsdGVyRnVuY3Rpb25zTWFwID0gbmV3IE1hcDsKIAotV2Vi
SW5zcGVjdG9yLkZpbHRlckJhci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5GaWx0ZXJCYXIsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZSwKKyAgICAgICAgdGhpcy5faW5wdXRGaWVsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImlucHV0Iik7CisgICAgICAgIHRoaXMuX2lucHV0RmllbGQudHlwZSA9ICJzZWFyY2giOwor
ICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLnNwZWxsY2hlY2sgPSBmYWxzZTsKKyAgICAgICAgdGhp
cy5faW5wdXRGaWVsZC5pbmNyZW1lbnRhbCA9IHRydWU7CisgICAgICAgIHRoaXMuX2lucHV0Rmll
bGQuYWRkRXZlbnRMaXN0ZW5lcigic2VhcmNoIiwgdGhpcy5faGFuZGxlRmlsdGVyQ2hhbmdlZC5i
aW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5faW5wdXRGaWVsZCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVu
dCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBwbGFjZWhvbGRlcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5w
dXRGaWVsZC5nZXRBdHRyaWJ1dGUoInBsYWNlaG9sZGVyIik7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBzZXQgcGxhY2Vob2xkZXIodGV4dCkKICAgICB7CiAgICAgICAgIHRoaXMuX2lucHV0RmllbGQu
c2V0QXR0cmlidXRlKCJwbGFjZWhvbGRlciIsIHRleHQpOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGlucHV0RmllbGQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0RmllbGQ7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZmlsdGVycygpCiAgICAgewogICAgICAgICByZXR1
cm4ge3RleHQ6IHRoaXMuX2lucHV0RmllbGQudmFsdWUsIGZ1bmN0aW9uczogWy4uLnRoaXMuX2Zp
bHRlckZ1bmN0aW9uc01hcC52YWx1ZXMoKV19OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGZp
bHRlcnMoZmlsdGVycykKICAgICB7CkBAIC05MSw5ICs4MCw5IEBAIFdlYkluc3BlY3Rvci5GaWx0
ZXJCYXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLnZhbHVlID0gZmls
dGVycy50ZXh0IHx8ICIiOwogICAgICAgICBpZiAob2xkVGV4dFZhbHVlICE9PSB0aGlzLl9pbnB1
dEZpZWxkLnZhbHVlKQogICAgICAgICAgICAgdGhpcy5faGFuZGxlRmlsdGVyQ2hhbmdlZCgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgYWRkRmlsdGVyQmFyQnV0dG9uOiBmdW5jdGlvbihpZGVudGlm
aWVyLCBmaWx0ZXJGdW5jdGlvbiwgYWN0aXZhdGVkQnlEZWZhdWx0LCBkZWZhdWx0VG9vbFRpcCwg
YWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBwcmVz
c0VtYm9zcykKKyAgICBhZGRGaWx0ZXJCYXJCdXR0b24oaWRlbnRpZmllciwgZmlsdGVyRnVuY3Rp
b24sIGFjdGl2YXRlZEJ5RGVmYXVsdCwgZGVmYXVsdFRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAs
IGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MpCiAgICAgewog
ICAgICAgICB2YXIgZmlsdGVyQmFyQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5GaWx0ZXJCYXJC
dXR0b24oaWRlbnRpZmllciwgZmlsdGVyRnVuY3Rpb24sIGFjdGl2YXRlZEJ5RGVmYXVsdCwgZGVm
YXVsdFRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhl
aWdodCwgc3VwcHJlc3NFbWJvc3MpOwogICAgICAgICBmaWx0ZXJCYXJCdXR0b24uYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwg
dGhpcy5faGFuZGxlRmlsdGVyQmFyQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CkBAIC0xMDMsMTIgKzky
LDEyIEBAIFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5fZmlsdGVyRnVuY3Rpb25zTWFwLnNldChmaWx0ZXJCYXJCdXR0b24uaWRlbnRpZmllciwg
ZmlsdGVyQmFyQnV0dG9uLmZpbHRlckZ1bmN0aW9uKTsKICAgICAgICAgICAgIHRoaXMuX2hhbmRs
ZUZpbHRlckNoYW5nZWQoKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgaGFzQWN0
aXZlRmlsdGVyczogZnVuY3Rpb24oKQorICAgIGhhc0FjdGl2ZUZpbHRlcnMoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuICEhdGhpcy5faW5wdXRGaWVsZC52YWx1ZSB8fCAhIXRoaXMuX2ZpbHRlckZ1
bmN0aW9uc01hcC5zaXplOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC0x
MTYsOSArMTA1LDkgQEAgV2ViSW5zcGVjdG9yLkZpbHRlckJhci5wcm90b3R5cGUgPSB7CiAgICAg
ewogICAgICAgICB2YXIgZmlsdGVyQmFyQnV0dG9uID0gZXZlbnQudGFyZ2V0OwogICAgICAgICBm
aWx0ZXJCYXJCdXR0b24udG9nZ2xlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlRmls
dGVyQnV0dG9uVG9nZ2xlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZUZpbHRlckJ1dHRv
blRvZ2dsZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZmlsdGVyQmFyQnV0dG9uID0gZXZl
bnQudGFyZ2V0OwogICAgICAgICBpZiAoZmlsdGVyQmFyQnV0dG9uLmFjdGl2YXRlZCkKQEAgLTEy
NiwxMCArMTE1LDE0IEBAIFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIucHJvdG90eXBlID0gewogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9maWx0ZXJGdW5jdGlvbnNNYXAuZGVsZXRlKGZp
bHRlckJhckJ1dHRvbi5pZGVudGlmaWVyKTsKICAgICAgICAgdGhpcy5faGFuZGxlRmlsdGVyQ2hh
bmdlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZUZpbHRlckNoYW5nZWQ6IGZ1bmN0
aW9uKCkKKyAgICBfaGFuZGxlRmlsdGVyQ2hhbmdlZCgpCiAgICAgewogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRmlsdGVyQmFyLkV2ZW50LkZpbHRl
ckRpZENoYW5nZSk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkZpbHRlckJhci5FdmVudCA9
IHsKKyAgICBGaWx0ZXJEaWRDaGFuZ2U6ICJmaWx0ZXItYmFyLXRleHQtZmlsdGVyLWRpZC1jaGFu
Z2UiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRmlsdGVyQmFyQnV0dG9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRmlsdGVyQmFyQnV0dG9uLmpzCmluZGV4IGIwOWNlNmUuLmY4NmMzMjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRl
ckJhckJ1dHRvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9GaWx0ZXJCYXJCdXR0b24uanMKQEAgLTIzLDM4ICsyMywzNCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5GaWx0ZXJCYXJCdXR0
b24gPSBmdW5jdGlvbihpZGVudGlmaWVyLCBmaWx0ZXJGdW5jdGlvbiwgYWN0aXZhdGVkQnlEZWZh
dWx0LCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgs
IGltYWdlSGVpZ2h0LCBzdXBwcmVzc0VtYm9zcywgcm9sZSkKK1dlYkluc3BlY3Rvci5GaWx0ZXJC
YXJCdXR0b24gPSBjbGFzcyBGaWx0ZXJCYXJCdXR0b24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQWN0
aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbQogewotICAgIFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1
dHRvbk5hdmlnYXRpb25JdGVtLmNhbGwodGhpcywgaWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAs
IGFjdGl2YXRlZFRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJl
c3NFbWJvc3MsIHJvbGUpOwotCi0gICAgdGhpcy5fZmlsdGVyRnVuY3Rpb24gPSBmaWx0ZXJGdW5j
dGlvbjsKLQotICAgIHRoaXMuX2FjdGl2YXRlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNl
dHRpbmcoaWRlbnRpZmllciwgYWN0aXZhdGVkQnlEZWZhdWx0KTsKLQotICAgIHRoaXMuYWN0aXZh
dGVkID0gISF0aGlzLl9hY3RpdmF0ZWRTZXR0aW5nLnZhbHVlOwotfTsKKyAgICBjb25zdHJ1Y3Rv
cihpZGVudGlmaWVyLCBmaWx0ZXJGdW5jdGlvbiwgYWN0aXZhdGVkQnlEZWZhdWx0LCBkZWZhdWx0
VG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0
LCBzdXBwcmVzc0VtYm9zcywgcm9sZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIs
IGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1h
Z2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzLCByb2xlKTsKIAotV2ViSW5zcGVjdG9yLkZpbHRlckJh
ckJ1dHRvbi5TdHlsZUNsYXNzTmFtZSA9ICJmaWx0ZXItYmFyLWJ1dHRvbiI7CisgICAgICAgIHRo
aXMuX2ZpbHRlckZ1bmN0aW9uID0gZmlsdGVyRnVuY3Rpb247CiAKLVdlYkluc3BlY3Rvci5GaWx0
ZXJCYXJCdXR0b24uRXZlbnQgPSB7Ci0gICAgQWN0aXZhdGVkU3RhdGVUb2dnbGVkOiAiZmlsdGVy
LWJhci1hY3RpdmF0ZWQtc3RhdGUtdG9nZ2xlZCIKLX07CisgICAgICAgIHRoaXMuX2FjdGl2YXRl
ZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciwgYWN0aXZhdGVk
QnlEZWZhdWx0KTsKIAotV2ViSW5zcGVjdG9yLkZpbHRlckJhckJ1dHRvbi5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5GaWx0ZXJCYXJCdXR0b24sCi0gICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5
cGUsCisgICAgICAgIHRoaXMuYWN0aXZhdGVkID0gISF0aGlzLl9hY3RpdmF0ZWRTZXR0aW5nLnZh
bHVlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGZpbHRlckZ1bmN0aW9uKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJGdW5jdGlvbjsKLSAgICB9LAorICAg
IH0KIAotICAgIHRvZ2dsZTogZnVuY3Rpb24oKQorICAgIHRvZ2dsZSgpCiAgICAgewogICAgICAg
ICB0aGlzLmFjdGl2YXRlZCA9ICF0aGlzLmFjdGl2YXRlZDsKICAgICAgICAgdGhpcy5fYWN0aXZh
dGVkU2V0dGluZy52YWx1ZSA9IHRoaXMuYWN0aXZhdGVkOwogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRmlsdGVyQmFyQnV0dG9uLkV2ZW50LkFjdGl2
YXRlZFN0YXRlVG9nZ2xlZCk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkZpbHRlckJhckJ1
dHRvbi5FdmVudCA9IHsKKyAgICBBY3RpdmF0ZWRTdGF0ZVRvZ2dsZWQ6ICJmaWx0ZXItYmFyLWFj
dGl2YXRlZC1zdGF0ZS10b2dnbGVkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbmRCYW5uZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaW5kQmFubmVyLmpzCmluZGV4IGJmOWNlYWUuLjZm
Nzc0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0ZpbmRCYW5uZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRmluZEJhbm5lci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTI3ICsyMywxMDggQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRmluZEJhbm5lciA9IGZ1
bmN0aW9uKGRlbGVnYXRlLCBlbGVtZW50KSB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0
byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAg
Ly8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fZGVsZWdhdGUg
PSBkZWxlZ2F0ZSB8fCBudWxsOwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHRoaXMu
X3Jlc3VsdENvdW50TGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwotICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVzdWx0Q291bnRMYWJlbCk7Ci0KLSAg
ICB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImJ1
dHRvbiIpOwotICAgIHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uLmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudGVkQnV0dG9uU3R5bGVDbGFzc05hbWUpOwotICAg
IHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZp
bmRCYW5uZXIuTGVmdFNlZ21lbnRCdXR0b25TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5fcHJl
dmlvdXNSZXN1bHRCdXR0b24uZGlzYWJsZWQgPSB0cnVlOwotICAgIHRoaXMuX3ByZXZpb3VzUmVz
dWx0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fcHJldmlvdXNSZXN1bHRC
dXR0b25DbGlja2VkLmJpbmQodGhpcykpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fcHJldmlvdXNSZXN1bHRCdXR0b24pOwotCi0gICAgdmFyIHByZXZpb3VzUmVzdWx0QnV0
dG9uR2x5cGhFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgcHJl
dmlvdXNSZXN1bHRCdXR0b25HbHlwaEVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
RmluZEJhbm5lci5TZWdtZW50R2x5cGhTdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5fcHJldmlv
dXNSZXN1bHRCdXR0b24uYXBwZW5kQ2hpbGQocHJldmlvdXNSZXN1bHRCdXR0b25HbHlwaEVsZW1l
bnQpOwotCi0gICAgdGhpcy5fbmV4dFJlc3VsdEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImJ1dHRvbiIpOwotICAgIHRoaXMuX25leHRSZXN1bHRCdXR0b24uY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TZWdtZW50ZWRCdXR0b25TdHlsZUNsYXNzTmFtZSk7Ci0g
ICAgdGhpcy5fbmV4dFJlc3VsdEJ1dHRvbi5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5GaW5k
QmFubmVyLlJpZ2h0U2VnbWVudEJ1dHRvblN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl9uZXh0
UmVzdWx0QnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKLSAgICB0aGlzLl9uZXh0UmVzdWx0QnV0dG9u
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbmV4dFJlc3VsdEJ1dHRvbkNsaWNrZWQu
YmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uZXh0UmVz
dWx0QnV0dG9uKTsKLQotICAgIHZhciBuZXh0UmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgbmV4dFJlc3VsdEJ1dHRvbkdseXBoRWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNlZ21lbnRHbHlwaFN0
eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl9uZXh0UmVzdWx0QnV0dG9uLmFwcGVuZENoaWxkKG5l
eHRSZXN1bHRCdXR0b25HbHlwaEVsZW1lbnQpOwotCi0gICAgdGhpcy5faW5wdXRGaWVsZCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Ci0gICAgdGhpcy5faW5wdXRGaWVsZC50eXBl
ID0gInNlYXJjaCI7Ci0gICAgdGhpcy5faW5wdXRGaWVsZC5zcGVsbGNoZWNrID0gZmFsc2U7Ci0g
ICAgdGhpcy5faW5wdXRGaWVsZC5pbmNyZW1lbnRhbCA9IHRydWU7Ci0gICAgdGhpcy5faW5wdXRG
aWVsZC5zZXRBdHRyaWJ1dGUoInJlc3VsdHMiLCA1KTsKLSAgICB0aGlzLl9pbnB1dEZpZWxkLnNl
dEF0dHJpYnV0ZSgiYXV0b3NhdmUiLCAiaW5zcGVjdG9yLXNlYXJjaCIpOwotICAgIHRoaXMuX2lu
cHV0RmllbGQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2lucHV0RmllbGRLZXlE
b3duLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLl9pbnB1dEZpZWxkLmFkZEV2ZW50TGlz
dGVuZXIoImtleXVwIiwgdGhpcy5faW5wdXRGaWVsZEtleVVwLmJpbmQodGhpcyksIGZhbHNlKTsK
LSAgICB0aGlzLl9pbnB1dEZpZWxkLmFkZEV2ZW50TGlzdGVuZXIoInNlYXJjaCIsIHRoaXMuX2lu
cHV0RmllbGRTZWFyY2guYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5faW5wdXRGaWVsZCk7Ci0KLSAgICB0aGlzLl9kb25lQnV0dG9uID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7Ci0gICAgdGhpcy5fZG9uZUJ1dHRvbi50ZXh0
Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRG9uZSIpOwotICAgIHRoaXMuX2RvbmVC
dXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9kb25lQnV0dG9uQ2xpY2tlZC5i
aW5kKHRoaXMpKTsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RvbmVCdXR0
b24pOwotCi0gICAgdGhpcy5fbnVtYmVyT2ZSZXN1bHRzID0gbnVsbDsKLSAgICB0aGlzLl9zZWFy
Y2hCYWNrd2FyZHMgPSBmYWxzZTsKLSAgICB0aGlzLl9zZWFyY2hLZXlQcmVzc2VkID0gZmFsc2U7
Ci0gICAgdGhpcy5fcHJldmlvdXNTZWFyY2hWYWx1ZSA9ICIiOwotCi0gICAgdGhpcy5faGlkZUtl
eWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSwgdGhpcy5oaWRlLmJpbmQo
dGhpcyksIHRoaXMuX2VsZW1lbnQpOwotICAgIHRoaXMuX3BvcHVsYXRlRmluZEtleWJvYXJkU2hv
cnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIkUiLCB0aGlzLl9wb3B1
bGF0ZVNlYXJjaFF1ZXJ5RnJvbVNlbGVjdGlvbi5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9wb3B1
bGF0ZUZpbmRLZXlib2FyZFNob3J0Y3V0LmltcGxpY2l0bHlQcmV2ZW50c0RlZmF1bHQgPSBmYWxz
ZTsKLSAgICB0aGlzLl9maW5kTmV4dEtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIu
Q29tbWFuZE9yQ29udHJvbCwgIkciLCB0aGlzLl9uZXh0UmVzdWx0QnV0dG9uQ2xpY2tlZC5iaW5k
KHRoaXMpKTsKLSAgICB0aGlzLl9maW5kUHJldmlvdXNLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVyLlNoaWZ0IHwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIu
Q29tbWFuZE9yQ29udHJvbCwgIkciLCB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbkNsaWNrZWQu
YmluZCh0aGlzKSk7Ci0KLSAgICB0aGlzLl9nZW5lcmF0ZUJ1dHRvbnNHbHlwaHNJZk5lZWRlZCgp
OwotfTsKLQotLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
IGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRB
ZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRmluZEJhbm5lcik7Ci0KLVdlYklu
c3BlY3Rvci5GaW5kQmFubmVyLlN0eWxlQ2xhc3NOYW1lID0gImZpbmQtYmFubmVyIjsKLVdlYklu
c3BlY3Rvci5GaW5kQmFubmVyLlN1cHBvcnRzRmluZEJhbm5lclN0eWxlQ2xhc3NOYW1lID0gInN1
cHBvcnRzLWZpbmQtYmFubmVyIjsKLVdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNob3dpbmdGaW5k
QmFubmVyU3R5bGVDbGFzc05hbWUgPSAic2hvd2luZy1maW5kLWJhbm5lciI7Ci1XZWJJbnNwZWN0
b3IuRmluZEJhbm5lci5Ob1RyYW5zaXRpb25TdHlsZUNsYXNzTmFtZSA9ICJuby1maW5kLWJhbm5l
ci10cmFuc2l0aW9uIjsKLVdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNob3dpbmdTdHlsZUNsYXNz
TmFtZSA9ICJzaG93aW5nIjsKLVdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNlZ21lbnRlZEJ1dHRv
blN0eWxlQ2xhc3NOYW1lID0gInNlZ21lbnRlZCI7Ci1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5M
ZWZ0U2VnbWVudEJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gImxlZnQiOwotV2ViSW5zcGVjdG9yLkZp
bmRCYW5uZXIuUmlnaHRTZWdtZW50QnV0dG9uU3R5bGVDbGFzc05hbWUgPSAicmlnaHQiOwotV2Vi
SW5zcGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudEdseXBoU3R5bGVDbGFzc05hbWUgPSAiZ2x5cGgi
OwotCi1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5FdmVudCA9IHsKLSAgICBEaWRTaG93OiAiZmlu
ZC1iYW5uZXItZGlkLXNob3ciLAotICAgIERpZEhpZGU6ICJmaW5kLWJhbm5lci1kaWQtaGlkZSIK
LX07Ci0KLVdlYkluc3BlY3Rvci5GaW5kQmFubmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIsCitXZWJJbnNwZWN0b3IuRmluZEJhbm5lciA9
IGNsYXNzIEZpbmRCYW5uZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29u
c3RydWN0b3IoZGVsZWdhdGUsIGVsZW1lbnQpCisgICAgeworICAgICAgICBzdXBlcigpOworCisg
ICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKKworICAgICAgICB0aGlz
Ll9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJmaW5kLWJhbm5lciIpOworCisgICAg
ICAgIHRoaXMuX3Jlc3VsdENvdW50TGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJl
bCIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jlc3VsdENvdW50
TGFiZWwpOworCisgICAgICAgIHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CisgICAgICAgIHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0
dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudGVkQnV0dG9u
U3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbi5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLkxlZnRTZWdtZW50QnV0dG9uU3R5bGVD
bGFzc05hbWUpOworICAgICAgICB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbi5kaXNhYmxlZCA9
IHRydWU7CisgICAgICAgIHRoaXMuX3ByZXZpb3VzUmVzdWx0QnV0dG9uLmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5fcHJldmlvdXNSZXN1bHRCdXR0b25DbGlja2VkLmJpbmQodGhpcykp
OworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ByZXZpb3VzUmVzdWx0
QnV0dG9uKTsKKworICAgICAgICB2YXIgcHJldmlvdXNSZXN1bHRCdXR0b25HbHlwaEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgcHJldmlvdXNSZXN1bHRC
dXR0b25HbHlwaEVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5T
ZWdtZW50R2x5cGhTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX3ByZXZpb3VzUmVzdWx0
QnV0dG9uLmFwcGVuZENoaWxkKHByZXZpb3VzUmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50KTsKKwor
ICAgICAgICB0aGlzLl9uZXh0UmVzdWx0QnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
YnV0dG9uIik7CisgICAgICAgIHRoaXMuX25leHRSZXN1bHRCdXR0b24uY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TZWdtZW50ZWRCdXR0b25TdHlsZUNsYXNzTmFtZSk7Cisg
ICAgICAgIHRoaXMuX25leHRSZXN1bHRCdXR0b24uY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
RmluZEJhbm5lci5SaWdodFNlZ21lbnRCdXR0b25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRo
aXMuX25leHRSZXN1bHRCdXR0b24uZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB0aGlzLl9uZXh0
UmVzdWx0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbmV4dFJlc3VsdEJ1
dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fbmV4dFJlc3VsdEJ1dHRvbik7CisKKyAgICAgICAgdmFyIG5leHRSZXN1bHRCdXR0
b25HbHlwaEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
bmV4dFJlc3VsdEJ1dHRvbkdseXBoRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5G
aW5kQmFubmVyLlNlZ21lbnRHbHlwaFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fbmV4
dFJlc3VsdEJ1dHRvbi5hcHBlbmRDaGlsZChuZXh0UmVzdWx0QnV0dG9uR2x5cGhFbGVtZW50KTsK
KworICAgICAgICB0aGlzLl9pbnB1dEZpZWxkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5w
dXQiKTsKKyAgICAgICAgdGhpcy5faW5wdXRGaWVsZC50eXBlID0gInNlYXJjaCI7CisgICAgICAg
IHRoaXMuX2lucHV0RmllbGQuc3BlbGxjaGVjayA9IGZhbHNlOworICAgICAgICB0aGlzLl9pbnB1
dEZpZWxkLmluY3JlbWVudGFsID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5zZXRB
dHRyaWJ1dGUoInJlc3VsdHMiLCA1KTsKKyAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5zZXRBdHRy
aWJ1dGUoImF1dG9zYXZlIiwgImluc3BlY3Rvci1zZWFyY2giKTsKKyAgICAgICAgdGhpcy5faW5w
dXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5faW5wdXRGaWVsZEtleURv
d24uYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLmFkZEV2ZW50
TGlzdGVuZXIoImtleXVwIiwgdGhpcy5faW5wdXRGaWVsZEtleVVwLmJpbmQodGhpcyksIGZhbHNl
KTsKKyAgICAgICAgdGhpcy5faW5wdXRGaWVsZC5hZGRFdmVudExpc3RlbmVyKCJzZWFyY2giLCB0
aGlzLl9pbnB1dEZpZWxkU2VhcmNoLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pbnB1dEZpZWxkKTsKKworICAgICAgICB0aGlzLl9k
b25lQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7CisgICAgICAgIHRo
aXMuX2RvbmVCdXR0b24udGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvbmUi
KTsKKyAgICAgICAgdGhpcy5fZG9uZUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX2RvbmVCdXR0b25DbGlja2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2RvbmVCdXR0b24pOworCisgICAgICAgIHRoaXMuX251bWJlck9m
UmVzdWx0cyA9IG51bGw7CisgICAgICAgIHRoaXMuX3NlYXJjaEJhY2t3YXJkcyA9IGZhbHNlOwor
ICAgICAgICB0aGlzLl9zZWFyY2hLZXlQcmVzc2VkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3By
ZXZpb3VzU2VhcmNoVmFsdWUgPSAiIjsKKworICAgICAgICB0aGlzLl9oaWRlS2V5Ym9hcmRTaG9y
dGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlLCB0aGlzLmhpZGUuYmluZCh0aGlzKSwgdGhp
cy5fZWxlbWVudCk7CisgICAgICAgIHRoaXMuX3BvcHVsYXRlRmluZEtleWJvYXJkU2hvcnRjdXQg
PSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIkUiLCB0aGlzLl9wb3B1bGF0ZVNl
YXJjaFF1ZXJ5RnJvbVNlbGVjdGlvbi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fcG9wdWxh
dGVGaW5kS2V5Ym9hcmRTaG9ydGN1dC5pbXBsaWNpdGx5UHJldmVudHNEZWZhdWx0ID0gZmFsc2U7
CisgICAgICAgIHRoaXMuX2ZpbmROZXh0S2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmll
ci5Db21tYW5kT3JDb250cm9sLCAiRyIsIHRoaXMuX25leHRSZXN1bHRCdXR0b25DbGlja2VkLmJp
bmQodGhpcykpOworICAgICAgICB0aGlzLl9maW5kUHJldmlvdXNLZXlib2FyZFNob3J0Y3V0ID0g
bmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0IHwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9k
aWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIkciLCB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbkNs
aWNrZWQuYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVCdXR0b25zR2x5cGhz
SWZOZWVkZWQoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBkZWxlZ2F0ZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBzZXQgZGVsZWdhdGUobmV3RGVsZWdhdGUpCiAgICAgewogICAgICAgICB0aGlzLl9kZWxl
Z2F0ZSA9IG5ld0RlbGVnYXRlIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZWxl
bWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBpbnB1dEZpZWxkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9p
bnB1dEZpZWxkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlYXJjaFF1ZXJ5KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9pbnB1dEZpZWxkLnZhbHVlIHx8ICIiOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IHNlYXJjaFF1ZXJ5KHF1ZXJ5KQogICAgIHsKICAgICAgICAgdGhpcy5f
aW5wdXRGaWVsZC52YWx1ZSA9IHF1ZXJ5IHx8ICIiOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IG51bWJlck9mUmVzdWx0cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyT2ZS
ZXN1bHRzOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IG51bWJlck9mUmVzdWx0cyhudW1iZXJP
ZlJlc3VsdHMpCiAgICAgewpAQCAtMTYyLDE1ICsxNDMsMjEgQEAgV2ViSW5zcGVjdG9yLkZpbmRC
YW5uZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fcmVzdWx0Q291bnRMYWJlbC50
ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiMSBtYXRjaCIpOwogICAgICAgICBl
bHNlIGlmIChudW1iZXJPZlJlc3VsdHMgPiAxKQogICAgICAgICAgICAgdGhpcy5fcmVzdWx0Q291
bnRMYWJlbC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWQgbWF0Y2hlcyIp
LmZvcm1hdChudW1iZXJPZlJlc3VsdHMpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRhcmdl
dEVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldEVsZW1lbnQ7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgdGFyZ2V0RWxlbWVudChlbGVtZW50KQogICAgIHsKKyAg
ICAgICAgZnVuY3Rpb24gZGVsYXllZFdvcmsoKQorICAgICAgICB7CisgICAgICAgICAgICBvbGRU
YXJnZXRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuTm9U
cmFuc2l0aW9uU3R5bGVDbGFzc05hbWUpOworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLk5vVHJhbnNpdGlvblN0eWxlQ2xh
c3NOYW1lKTsKKyAgICAgICAgfQorCiAgICAgICAgIGlmICh0aGlzLl90YXJnZXRFbGVtZW50KSB7
CiAgICAgICAgICAgICB2YXIgb2xkVGFyZ2V0RWxlbWVudCA9IHRoaXMuX3RhcmdldEVsZW1lbnQ7
CiAKQEAgLTE4MSwxMiArMTY4LDYgQEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5GaW5kQmFubmVyLk5vVHJhbnNpdGlvblN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TaG93
aW5nU3R5bGVDbGFzc05hbWUpOwogCi0gICAgICAgICAgICBmdW5jdGlvbiBkZWxheWVkV29yaygp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb2xkVGFyZ2V0RWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLk5vVHJhbnNpdGlvblN0eWxlQ2xhc3NO
YW1lKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2Vi
SW5zcGVjdG9yLkZpbmRCYW5uZXIuTm9UcmFuc2l0aW9uU3R5bGVDbGFzc05hbWUpOwotICAgICAg
ICAgICAgfQotCiAgICAgICAgICAgICAvLyBEZWxheSBzbyB3ZSBjYW4gcmVtb3ZlIHRoZSBubyB0
cmFuc2l0aW9uIHN0eWxlIGNsYXNzIGFmdGVyIHRoZSBvdGhlciBzdHlsZSBjaGFuZ2VzIGFyZSBj
b21taXR0ZWQuCiAgICAgICAgICAgICBzZXRUaW1lb3V0KGRlbGF5ZWRXb3JrLmJpbmQodGhpcyks
IDApOwogICAgICAgICB9CkBAIC0xOTUsMTQgKzE3NiwxNCBAQCBXZWJJbnNwZWN0b3IuRmluZEJh
bm5lci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuX3RhcmdldEVsZW1lbnQpCiAg
ICAgICAgICAgICB0aGlzLl90YXJnZXRFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LkZpbmRCYW5uZXIuU3VwcG9ydHNGaW5kQmFubmVyU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHNob3dpbmcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNob3dpbmdT
dHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93OiBmdW5jdGlvbigpCisg
ICAgc2hvdygpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90YXJnZXRFbGVt
ZW50KTsKICAgICAgICAgaWYgKCF0aGlzLl90YXJnZXRFbGVtZW50KQpAQCAtMjI4LDkgKzIwOSw5
IEBAIFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgc2V0VGlt
ZW91dChkZWxheWVkV29yay5iaW5kKHRoaXMpLCAwKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5FdmVudC5EaWRTaG93KTsK
LSAgICB9LAorICAgIH0KIAotICAgIGhpZGU6IGZ1bmN0aW9uKCkKKyAgICBoaWRlKCkKICAgICB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3RhcmdldEVsZW1lbnQpOwogICAgICAgICBp
ZiAoIXRoaXMuX3RhcmdldEVsZW1lbnQpCkBAIC0yNDIsMjcgKzIyMywyNyBAQCBXZWJJbnNwZWN0
b3IuRmluZEJhbm5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TaG93aW5nU3R5bGVDbGFzc05hbWUp
OwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5G
aW5kQmFubmVyLkV2ZW50LkRpZEhpZGUpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX2lucHV0RmllbGRLZXlEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfaW5wdXRG
aWVsZEtleURvd24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmll
ciA9PT0gIlNoaWZ0IikKICAgICAgICAgICAgIHRoaXMuX3NlYXJjaEJhY2t3YXJkcyA9IHRydWU7
CiAgICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJFbnRlciIpCiAgICAg
ICAgICAgICB0aGlzLl9zZWFyY2hLZXlQcmVzc2VkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9pbnB1dEZpZWxkS2V5VXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9pbnB1dEZpZWxkS2V5
VXAoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlNo
aWZ0IikKICAgICAgICAgICAgIHRoaXMuX3NlYXJjaEJhY2t3YXJkcyA9IGZhbHNlOwogICAgICAg
ICBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiRW50ZXIiKQogICAgICAgICAgICAg
dGhpcy5fc2VhcmNoS2V5UHJlc3NlZCA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX2lu
cHV0RmllbGRTZWFyY2g6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9pbnB1dEZpZWxkU2VhcmNoKGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2lucHV0RmllbGQudmFsdWUpIHsKICAgICAg
ICAgICAgIGlmICh0aGlzLl9wcmV2aW91c1NlYXJjaFZhbHVlICE9PSB0aGlzLnNlYXJjaFF1ZXJ5
KSB7CkBAIC0yODUsOSArMjY2LDkgQEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcHJldmlvdXNTZWFyY2hWYWx1ZSA9IHRo
aXMuc2VhcmNoUXVlcnk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVTZWFyY2hRdWVy
eUZyb21TZWxlY3Rpb246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wb3B1bGF0ZVNlYXJjaFF1ZXJ5
RnJvbVNlbGVjdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAm
JiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuZmluZEJhbm5lclNlYXJjaFF1ZXJ5Rm9yU2VsZWN0aW9u
ID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgICB2YXIgcXVlcnkgPSB0aGlzLl9kZWxlZ2F0
ZS5maW5kQmFubmVyU2VhcmNoUXVlcnlGb3JTZWxlY3Rpb24odGhpcyk7CkBAIC0yOTgsMjYgKzI3
OSwyNiBAQCBXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmZpbmRCYW5uZXJQZXJmb3JtU2VhcmNoKHRoaXMsIHRo
aXMuc2VhcmNoUXVlcnkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcHJldmlvdXNSZXN1bHRCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfcHJldmlvdXNSZXN1bHRCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5maW5kQmFubmVyUmV2ZWFs
UHJldmlvdXNSZXN1bHQgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0
ZS5maW5kQmFubmVyUmV2ZWFsUHJldmlvdXNSZXN1bHQodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfbmV4dFJlc3VsdEJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9uZXh0
UmVzdWx0QnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kZWxl
Z2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUuZmluZEJhbm5lclJldmVhbE5leHRSZXN1bHQg
PT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5maW5kQmFubmVyUmV2
ZWFsTmV4dFJlc3VsdCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kb25lQnV0dG9uQ2xp
Y2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RvbmVCdXR0b25DbGlja2VkKGV2ZW50KQogICAg
IHsKICAgICAgICAgdGhpcy5oaWRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ2VuZXJhdGVC
dXR0b25zR2x5cGhzSWZOZWVkZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZ2VuZXJhdGVCdXR0b25zR2x5
cGhzSWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5GaW5kQmFubmVy
Ll9nZW5lcmF0ZWRCdXR0b25zR2x5cGhzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQyLDQg
KzMyMywxNiBAQCBXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5wcm90b3R5cGUgPSB7CiAgICAgfQog
fTsKIAotV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuU3VwcG9y
dHNGaW5kQmFubmVyU3R5bGVDbGFzc05hbWUgPSAic3VwcG9ydHMtZmluZC1iYW5uZXIiOworV2Vi
SW5zcGVjdG9yLkZpbmRCYW5uZXIuU2hvd2luZ0ZpbmRCYW5uZXJTdHlsZUNsYXNzTmFtZSA9ICJz
aG93aW5nLWZpbmQtYmFubmVyIjsKK1dlYkluc3BlY3Rvci5GaW5kQmFubmVyLk5vVHJhbnNpdGlv
blN0eWxlQ2xhc3NOYW1lID0gIm5vLWZpbmQtYmFubmVyLXRyYW5zaXRpb24iOworV2ViSW5zcGVj
dG9yLkZpbmRCYW5uZXIuU2hvd2luZ1N0eWxlQ2xhc3NOYW1lID0gInNob3dpbmciOworV2ViSW5z
cGVjdG9yLkZpbmRCYW5uZXIuU2VnbWVudGVkQnV0dG9uU3R5bGVDbGFzc05hbWUgPSAic2VnbWVu
dGVkIjsKK1dlYkluc3BlY3Rvci5GaW5kQmFubmVyLkxlZnRTZWdtZW50QnV0dG9uU3R5bGVDbGFz
c05hbWUgPSAibGVmdCI7CitXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5SaWdodFNlZ21lbnRCdXR0
b25TdHlsZUNsYXNzTmFtZSA9ICJyaWdodCI7CitXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TZWdt
ZW50R2x5cGhTdHlsZUNsYXNzTmFtZSA9ICJnbHlwaCI7CisKK1dlYkluc3BlY3Rvci5GaW5kQmFu
bmVyLkV2ZW50ID0geworICAgIERpZFNob3c6ICJmaW5kLWJhbm5lci1kaWQtc2hvdyIsCisgICAg
RGlkSGlkZTogImZpbmQtYmFubmVyLWRpZC1oaWRlIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9u
SXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhp
YmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5qcwppbmRleCBhZTU3NmZmLi44NWM5ZjA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNw
YWNlTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxOCArMjMsMTcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24oaWRlbnRpZmllcikgewot
ICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMsIGlkZW50aWZpZXIpOwot
fTsKLQotV2ViSW5zcGVjdG9yLkZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNz
TmFtZSA9ICJmbGV4aWJsZS1zcGFjZSI7CitXZWJJbnNwZWN0b3IuRmxleGlibGVTcGFjZU5hdmln
YXRpb25JdGVtID0gY2xhc3MgRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtCit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikK
KyAgICB7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIpOworICAgIH0KIAotV2ViSW5zcGVjdG9y
LkZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0sCisgICAgLy8gUHJv
dGVjdGVkCiAKLSAgICAvLyBQcml2YXRlCi0KLSAgICBfYWRkaXRpb25hbENsYXNzTmFtZXM6IFtX
ZWJJbnNwZWN0b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lXSwK
KyAgICBnZXQgYWRkaXRpb25hbENsYXNzTmFtZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFsi
ZmxleGlibGUtc3BhY2UiXTsKKyAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRmxleGlibGVTcGFj
ZU5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkl0ZW0ucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRm9sZGVyVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJUcmVlRWxlbWVudC5qcwppbmRleCA4Y2Fl
OGI3Li4yYTA4ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Gb2xkZXJUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjkgKzIzLDI2
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLkZvbGRlclRyZWVFbGVtZW50ID0gZnVuY3Rpb24odGl0bGUsIHN1YnRpdGxlLCBhZGRpdGlv
bmFsQ2xhc3NOYW1lcywgcmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuRm9sZGVyVHJl
ZUVsZW1lbnQgPSBjbGFzcyBGb2xkZXJUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQKIHsKLSAgICB2YXIgY2xhc3NOYW1lczsKLSAgICBpZiAoIWFkZGl0
aW9uYWxDbGFzc05hbWVzKQotICAgICAgICBjbGFzc05hbWVzID0gW107Ci0gICAgZWxzZSBpZiAo
YWRkaXRpb25hbENsYXNzTmFtZXMuY29uc3RydWN0b3IgPT09IEFycmF5KQotICAgICAgICBjbGFz
c05hbWVzID0gYWRkaXRpb25hbENsYXNzTmFtZXM7Ci0gICAgZWxzZSBpZiAodHlwZW9mIGFkZGl0
aW9uYWxDbGFzc05hbWVzID09PSAic3RyaW5nIikKLSAgICAgICAgY2xhc3NOYW1lcyA9IFthZGRp
dGlvbmFsQ2xhc3NOYW1lc107CisgICAgY29uc3RydWN0b3IodGl0bGUsIHN1YnRpdGxlLCBhZGRp
dGlvbmFsQ2xhc3NOYW1lcywgcmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICB2YXIg
Y2xhc3NOYW1lczsKKyAgICAgICAgaWYgKCFhZGRpdGlvbmFsQ2xhc3NOYW1lcykKKyAgICAgICAg
ICAgIGNsYXNzTmFtZXMgPSBbXTsKKyAgICAgICAgZWxzZSBpZiAoYWRkaXRpb25hbENsYXNzTmFt
ZXMuY29uc3RydWN0b3IgPT09IEFycmF5KQorICAgICAgICAgICAgY2xhc3NOYW1lcyA9IGFkZGl0
aW9uYWxDbGFzc05hbWVzOworICAgICAgICBlbHNlIGlmICh0eXBlb2YgYWRkaXRpb25hbENsYXNz
TmFtZXMgPT09ICJzdHJpbmciKQorICAgICAgICAgICAgY2xhc3NOYW1lcyA9IFthZGRpdGlvbmFs
Q2xhc3NOYW1lc107CiAKLSAgICBjbGFzc05hbWVzLnVuc2hpZnQoV2ViSW5zcGVjdG9yLkZvbGRl
clRyZWVFbGVtZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGNsYXNzTmFt
ZXMudW5zaGlmdChXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQuRm9sZGVySWNvblN0eWxl
Q2xhc3NOYW1lKTsKIAotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0
aGlzLCBjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCB0cnVl
KTsKKyAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCByZXByZXNlbnRl
ZE9iamVjdCwgdHJ1ZSk7CiAKLSAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5Gb2xkZXJUcmVlRWxlbWVudC5Gb2xkZXJJY29uU3R5bGVDbGFzc05hbWUgPSAiZm9sZGVy
LWljb24iOwotCi1XZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQKKyAgICAgICAg
dGhpcy5zbWFsbCA9IHRydWU7CisgICAgfQogCiAgICAgLy8gTm8gTWV0aG9kcyBvciBQcm9wZXJ0
aWVzCiB9OwogCi1XZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5z
cGVjdG9yLkZvbGRlclRyZWVFbGVtZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSA9ICJmb2xk
ZXItaWNvbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Gb2xkZXJpemVkVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJpemVkVHJlZUVsZW1lbnQuanMKaW5kZXggNGZmMDEw
Ny4uMWY4YzRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRm9sZGVyaXplZFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZvbGRlcml6ZWRUcmVlRWxlbWVudC5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0MSAr
MjMsMzQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50ID0gZnVuY3Rpb24oY2xhc3NOYW1lcywgdGl0
bGUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pCitXZWJJbnNwZWN0
b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50ID0gY2xhc3MgRm9sZGVyaXplZFRyZWVFbGVtZW50IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAogewotICAgIFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0
bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbik7Ci0KLSAgICB0aGlzLnNob3VsZFJl
ZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0KLSAgICB0aGlzLl9mb2xkZXJTZXR0aW5nc0tleSA9ICIi
OwotICAgIHRoaXMuX2ZvbGRlclR5cGVNYXAgPSBuZXcgTWFwOwotICAgIHRoaXMuX2ZvbGRlcml6
ZVNldHRpbmdzTWFwID0gbmV3IE1hcDsKLSAgICB0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnMgPSBm
YWxzZTsKLSAgICB0aGlzLl9jbGVhck5ld0NoaWxkUXVldWUoKTsKLX07CisgICAgY29uc3RydWN0
b3IoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hp
bGRyZW4pCisgICAgeworICAgICAgICBzdXBlcihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUs
IHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbik7CiAKLVdlYkluc3BlY3Rvci5Gb2xkZXJp
emVkVHJlZUVsZW1lbnQuTWVkaXVtQ2hpbGRDb3VudFRocmVzaG9sZCA9IDU7Ci1XZWJJbnNwZWN0
b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50LkxhcmdlQ2hpbGRDb3VudFRocmVzaG9sZCA9IDE1Owot
V2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5OdW1iZXJPZk1lZGl1bUNhdGVnb3Jp
ZXNUaHJlc2hvbGQgPSAyOwotV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5OZXdD
aGlsZFF1ZXVlVXBkYXRlSW50ZXJ2YWwgPSA1MDA7CisgICAgICAgIHRoaXMuc2hvdWxkUmVmcmVz
aENoaWxkcmVuID0gdHJ1ZTsKIAotV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJl
ZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fZm9sZGVyU2V0dGluZ3NLZXkgPSAiIjsKKyAgICAg
ICAgdGhpcy5fZm9sZGVyVHlwZU1hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX2ZvbGRlcml6
ZVNldHRpbmdzTWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fZ3JvdXBlZEludG9Gb2xkZXJz
ID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2NsZWFyTmV3Q2hpbGRRdWV1ZSgpOworICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGdyb3VwZWRJbnRvRm9sZGVycygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fZ3JvdXBlZEludG9Gb2xkZXJzOwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IGZvbGRlclNldHRpbmdzS2V5KHgpCiAgICAgewogICAgICAgICB0aGlzLl9mb2xkZXJT
ZXR0aW5nc0tleSA9IHg7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWdpc3RlckZvbGRlcml6ZVNl
dHRpbmdzOiBmdW5jdGlvbih0eXBlLCBmb2xkZXJEaXNwbGF5TmFtZSwgdmFsaWRhdGVSZXByZXNl
bnRlZE9iamVjdENhbGxiYWNrLCBjb3VudENoaWxkcmVuQ2FsbGJhY2ssIHRyZWVFbGVtZW50Q29u
c3RydWN0b3IpCisgICAgcmVnaXN0ZXJGb2xkZXJpemVTZXR0aW5ncyh0eXBlLCBmb2xkZXJEaXNw
bGF5TmFtZSwgdmFsaWRhdGVSZXByZXNlbnRlZE9iamVjdENhbGxiYWNrLCBjb3VudENoaWxkcmVu
Q2FsbGJhY2ssIHRyZWVFbGVtZW50Q29uc3RydWN0b3IpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCh0eXBlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZm9sZGVyRGlzcGxheU5hbWUp
OwpAQCAtNzQsMTMgKzY3LDEzIEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICB9OwogCiAgICAgICAgIHRoaXMuX2ZvbGRlcml6ZVNldHRp
bmdzTWFwLnNldCh0eXBlLCBzZXR0aW5ncyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBPdmVy
cmlkZXMgZnJvbSBUcmVlRWxlbWVudCAoUHJpdmF0ZSkuCiAKLSAgICByZW1vdmVDaGlsZHJlbjog
ZnVuY3Rpb24oKQorICAgIHJlbW92ZUNoaWxkcmVuKCkKICAgICB7Ci0gICAgICAgIFRyZWVFbGVt
ZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbi5jYWxsKHRoaXMpOworICAgICAgICBzdXBlci5y
ZW1vdmVDaGlsZHJlbigpOwogCiAgICAgICAgIHRoaXMuX2NsZWFyTmV3Q2hpbGRRdWV1ZSgpOwog
CkBAIC05MCwxMSArODMsMTEgQEAgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2ZvbGRlclR5cGVNYXAuY2xlYXIoKTsKIAogICAg
ICAgICB0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnMgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFByb3RlY3RlZAogCi0gICAgYWRkQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVu
Y3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgYWRkQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVj
dChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIHZhciBzZXR0aW5ncyA9IHRoaXMu
X3NldHRpbmdzRm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAg
ICBjb25zb2xlLmFzc2VydChzZXR0aW5ncyk7CkBAIC0xMDgsMTggKzEwMSwxOCBAQCBXZWJJbnNw
ZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNo
aWxkVHJlZUVsZW1lbnQgPSBuZXcgc2V0dGluZ3MudHJlZUVsZW1lbnRDb25zdHJ1Y3RvcihyZXBy
ZXNlbnRlZE9iamVjdCk7CiAKICAgICAgICAgdGhpcy5fYWRkVHJlZUVsZW1lbnQoY2hpbGRUcmVl
RWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3
Q2hpbGRRdWV1ZTogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgYWRkUmVwcmVzZW50
ZWRPYmplY3RUb05ld0NoaWxkUXVldWUocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAg
ICAvLyBUaGlzIHF1ZXVlIHJlZHVjZXMgZmxhc2hpbmcgYXMgcmVzb3VyY2VzIGxvYWQgYW5kIGNo
YW5nZSBmb2xkZXJzIHdoZW4gdGhlaXIgdHlwZSBiZWNvbWVzIGtub3duLgogCiAgICAgICAgIHRo
aXMuX25ld0NoaWxkUXVldWUucHVzaChyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIGlmICgh
dGhpcy5fbmV3Q2hpbGRRdWV1ZVRpbWVvdXRJZGVudGlmaWVyKQogICAgICAgICAgICAgdGhpcy5f
bmV3Q2hpbGRRdWV1ZVRpbWVvdXRJZGVudGlmaWVyID0gc2V0VGltZW91dCh0aGlzLl9wb3B1bGF0
ZUZyb21OZXdDaGlsZFF1ZXVlLmJpbmQodGhpcyksIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJl
ZUVsZW1lbnQuTmV3Q2hpbGRRdWV1ZVVwZGF0ZUludGVydmFsKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHJlbW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVk
T2JqZWN0KQorICAgIHJlbW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRP
YmplY3QpCiAgICAgewogICAgICAgICB0aGlzLl9yZW1vdmVSZXByZXNlbnRlZE9iamVjdEZyb21O
ZXdDaGlsZFF1ZXVlKHJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgdGhpcy51cGRhdGVQYXJl
bnRTdGF0dXMoKTsKQEAgLTEzNywxNCArMTMwLDE0IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVk
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IHRoaXMuX3JlbW92ZVRyZWVFbGVtZW50KGNoaWxkVHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAg
fQogCi0gICAgY29tcGFyZUNoaWxkVHJlZUVsZW1lbnRzOiBmdW5jdGlvbihhLCBiKQorICAgIGNv
bXBhcmVDaGlsZFRyZWVFbGVtZW50cyhhLCBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2NvbXBhcmVUcmVlRWxlbWVudHNCeU1haW5UaXRsZShhLCBiKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHVwZGF0ZVBhcmVudFN0YXR1czogZnVuY3Rpb24oKQorICAgIHVwZGF0ZVBhcmVudFN0YXR1
cygpCiAgICAgewogICAgICAgICB2YXIgaGFzQ2hpbGRyZW4gPSBmYWxzZTsKICAgICAgICAgZm9y
ICh2YXIgc2V0dGluZ3Mgb2YgdGhpcy5fZm9sZGVyaXplU2V0dGluZ3NNYXAudmFsdWVzKCkpIHsK
QEAgLTE1NywyNiArMTUwLDI2IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW47CiAg
ICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbikKICAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hp
bGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHByZXBhcmVUb1BvcHVsYXRlOiBmdW5jdGlv
bigpCisgICAgcHJlcGFyZVRvUG9wdWxhdGUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9n
cm91cGVkSW50b0ZvbGRlcnMgJiYgdGhpcy5fc2hvdWxkR3JvdXBJbnRvRm9sZGVycygpKQogICAg
ICAgICAgICAgdGhpcy5fZ3JvdXBlZEludG9Gb2xkZXJzID0gdHJ1ZTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jbGVhck5ld0NoaWxkUXVldWU6IGZ1bmN0aW9uKCkK
KyAgICBfY2xlYXJOZXdDaGlsZFF1ZXVlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX25ld0NoaWxk
UXVldWUgPSBbXTsKICAgICAgICAgaWYgKHRoaXMuX25ld0NoaWxkUXVldWVUaW1lb3V0SWRlbnRp
ZmllcikgewogICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX25ld0NoaWxkUXVldWVUaW1l
b3V0SWRlbnRpZmllcik7CiAgICAgICAgICAgICB0aGlzLl9uZXdDaGlsZFF1ZXVlVGltZW91dElk
ZW50aWZpZXIgPSBudWxsOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxh
dGVGcm9tTmV3Q2hpbGRRdWV1ZTogZnVuY3Rpb24oKQorICAgIF9wb3B1bGF0ZUZyb21OZXdDaGls
ZFF1ZXVlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5jaGlsZHJlbi5sZW5ndGgpIHsKICAg
ICAgICAgICAgIHRoaXMudXBkYXRlUGFyZW50U3RhdHVzKCk7CkBAIC0xOTAsMTQgKzE4MywxNCBA
QCBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuYWRkQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdCh0aGlzLl9uZXdDaGlsZFF1
ZXVlW2ldKTsKIAogICAgICAgICB0aGlzLl9jbGVhck5ld0NoaWxkUXVldWUoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9yZW1vdmVSZXByZXNlbnRlZE9iamVjdEZyb21OZXdDaGlsZFF1ZXVlOiBm
dW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBfcmVtb3ZlUmVwcmVzZW50ZWRPYmplY3RG
cm9tTmV3Q2hpbGRRdWV1ZShyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIHRoaXMu
X25ld0NoaWxkUXVldWUucmVtb3ZlKHJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9hZGRUcmVlRWxlbWVudDogZnVuY3Rpb24oY2hpbGRUcmVlRWxlbWVudCkKKyAgICBf
YWRkVHJlZUVsZW1lbnQoY2hpbGRUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGNoaWxkVHJlZUVsZW1lbnQpOwogICAgICAgICBpZiAoIWNoaWxkVHJlZUVsZW1lbnQp
CkBAIC0yMTUsMjcgKzIwOCwyNyBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAod2FzU2VsZWN0ZWQpCiAgICAgICAgICAgICBj
aGlsZFRyZWVFbGVtZW50LnJldmVhbEFuZFNlbGVjdCh0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29tcGFyZVRyZWVFbGVtZW50c0J5TWFpblRpdGxlOiBm
dW5jdGlvbihhLCBiKQorICAgIF9jb21wYXJlVHJlZUVsZW1lbnRzQnlNYWluVGl0bGUoYSwgYikK
ICAgICB7CiAgICAgICAgIHJldHVybiBhLm1haW5UaXRsZS5sb2NhbGVDb21wYXJlKGIubWFpblRp
dGxlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pbnNlcnRGb2xkZXJUcmVlRWxlbWVudDogZnVu
Y3Rpb24oZm9sZGVyVHJlZUVsZW1lbnQpCisgICAgX2luc2VydEZvbGRlclRyZWVFbGVtZW50KGZv
bGRlclRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZ3Jv
dXBlZEludG9Gb2xkZXJzKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIWZvbGRlclRyZWVFbGVt
ZW50LnBhcmVudCk7CiAgICAgICAgIHRoaXMuaW5zZXJ0Q2hpbGQoZm9sZGVyVHJlZUVsZW1lbnQs
IGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihmb2xkZXJUcmVl
RWxlbWVudCwgdGhpcy5jaGlsZHJlbiwgdGhpcy5fY29tcGFyZVRyZWVFbGVtZW50c0J5TWFpblRp
dGxlKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaW5zZXJ0Q2hpbGRUcmVlRWxlbWVudDogZnVu
Y3Rpb24ocGFyZW50VHJlZUVsZW1lbnQsIGNoaWxkVHJlZUVsZW1lbnQpCisgICAgX2luc2VydENo
aWxkVHJlZUVsZW1lbnQocGFyZW50VHJlZUVsZW1lbnQsIGNoaWxkVHJlZUVsZW1lbnQpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCghY2hpbGRUcmVlRWxlbWVudC5wYXJlbnQpOwogICAg
ICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZChjaGlsZFRyZWVFbGVtZW50LCBpbnNl
cnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oY2hpbGRUcmVlRWxlbWVu
dCwgcGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuY29tcGFyZUNoaWxkVHJlZUVsZW1l
bnRzLmJpbmQodGhpcykpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZW1vdmVUcmVlRWxlbWVu
dDogZnVuY3Rpb24oY2hpbGRUcmVlRWxlbWVudCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVz
c1NlbGVjdFNpYmxpbmcpCisgICAgX3JlbW92ZVRyZWVFbGVtZW50KGNoaWxkVHJlZUVsZW1lbnQs
IHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NTZWxlY3RTaWJsaW5nKQogICAgIHsKICAgICAg
ICAgdmFyIG9sZFBhcmVudCA9IGNoaWxkVHJlZUVsZW1lbnQucGFyZW50OwogICAgICAgICBpZiAo
IW9sZFBhcmVudCkKQEAgLTI1Myw5ICsyNDYsOSBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBvbGQgcGFyZW50
IGZvbGRlciBpZiBpdCBpcyBub3cgZW1wdHkuCiAgICAgICAgIGlmICghb2xkUGFyZW50LmNoaWxk
cmVuLmxlbmd0aCkKICAgICAgICAgICAgIG9sZFBhcmVudC5wYXJlbnQucmVtb3ZlQ2hpbGQob2xk
UGFyZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXJlbnRUcmVlRWxlbWVudEZvclJlcHJl
c2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBfcGFyZW50VHJl
ZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5fZ3JvdXBlZEludG9Gb2xkZXJzKQogICAgICAgICAgICAgcmV0dXJu
IHRoaXM7CkBAIC0yODYsMjQgKzI3OSwyNCBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgZm9sZGVyID0gY3JlYXRlRm9sZGVyVHJlZUVs
ZW1lbnQuY2FsbCh0aGlzLCBzZXR0aW5ncy50eXBlLCBzZXR0aW5ncy5mb2xkZXJEaXNwbGF5TmFt
ZSk7CiAgICAgICAgIHRoaXMuX2ZvbGRlclR5cGVNYXAuc2V0KHNldHRpbmdzLnR5cGUsIGZvbGRl
cik7CiAgICAgICAgIHJldHVybiBmb2xkZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9sZGVy
VHJlZUVsZW1lbnRFeHBhbmRlZFN0YXRlQ2hhbmdlOiBmdW5jdGlvbihmb2xkZXJUcmVlRWxlbWVu
dCkKKyAgICBfZm9sZGVyVHJlZUVsZW1lbnRFeHBhbmRlZFN0YXRlQ2hhbmdlKGZvbGRlclRyZWVF
bGVtZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZm9sZGVyVHJlZUVsZW1lbnQu
X19leHBhbmRlZFNldHRpbmcpOwogICAgICAgICBmb2xkZXJUcmVlRWxlbWVudC5fX2V4cGFuZGVk
U2V0dGluZy52YWx1ZSA9IGZvbGRlclRyZWVFbGVtZW50LmV4cGFuZGVkOwotICAgIH0sCisgICAg
fQogCi0gICAgX3NldHRpbmdzRm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2Vu
dGVkT2JqZWN0KQorICAgIF9zZXR0aW5nc0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVk
T2JqZWN0KQogICAgIHsKICAgICAgICAgZm9yICh2YXIgc2V0dGluZ3Mgb2YgdGhpcy5fZm9sZGVy
aXplU2V0dGluZ3NNYXAudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmIChzZXR0aW5ncy52YWxp
ZGF0ZVJlcHJlc2VudGVkT2JqZWN0Q2FsbGJhY2socmVwcmVzZW50ZWRPYmplY3QpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBzZXR0aW5nczsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gbnVs
bDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG91bGRHcm91cEludG9Gb2xkZXJzOiBmdW5jdGlv
bigpCisgICAgX3Nob3VsZEdyb3VwSW50b0ZvbGRlcnMoKQogICAgIHsKICAgICAgICAgLy8gQWxy
ZWFkeSBncm91cGVkIGludG8gZm9sZGVycywga2VlcCBpdCB0aGF0IHdheS4KICAgICAgICAgaWYg
KHRoaXMuX2dyb3VwZWRJbnRvRm9sZGVycykKQEAgLTM1OCwzICszNTEsOCBAQCBXZWJJbnNwZWN0
b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQuTWVk
aXVtQ2hpbGRDb3VudFRocmVzaG9sZCA9IDU7CitXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVF
bGVtZW50LkxhcmdlQ2hpbGRDb3VudFRocmVzaG9sZCA9IDE1OworV2ViSW5zcGVjdG9yLkZvbGRl
cml6ZWRUcmVlRWxlbWVudC5OdW1iZXJPZk1lZGl1bUNhdGVnb3JpZXNUaHJlc2hvbGQgPSAyOwor
V2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5OZXdDaGlsZFF1ZXVlVXBkYXRlSW50
ZXJ2YWwgPSA1MDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Gb250UmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmluZGV4
IGJlM2ExZjUuLmJhMTg4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0ZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywzMyArMjMsMTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcgPSBmdW5jdGlvbihy
ZXNvdXJjZSkKK1dlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIEZv
bnRSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVu
dFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5jYWxsKHRoaXMs
IHJlc291cmNlLCBXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuU3R5bGVDbGFz
c05hbWUpOwotCi0gICAgdGhpcy5fc3R5bGVFbGVtZW50ID0gbnVsbDsKLSAgICB0aGlzLl9wcmV2
aWV3RWxlbWVudCA9IG51bGw7Ci19OwotCi1XZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVu
dFZpZXcuX3VuaXF1ZUZvbnRJZGVudGlmaWVyID0gMDsKLQotV2ViSW5zcGVjdG9yLkZvbnRSZXNv
dXJjZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImZvbnQiOwotV2ViSW5zcGVjdG9yLkZv
bnRSZXNvdXJjZUNvbnRlbnRWaWV3LlByZXZpZXdFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAicHJl
dmlldyI7Ci1XZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuTGluZUVsZW1lbnRT
dHlsZUNsYXNzTmFtZSA9ICJsaW5lIjsKLVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50
Vmlldy5Db250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQiOwotV2ViSW5zcGVj
dG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3Lk1ldHJpY0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9
ICJtZXRyaWMiOwotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LlRvcE1ldHJp
Y0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ0b3AiOwotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJj
ZUNvbnRlbnRWaWV3LlhIZWlnaHRNZXRyaWNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAieGhlaWdo
dCI7Ci1XZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuTWlkZGxlTWV0cmljRWxl
bWVudFN0eWxlQ2xhc3NOYW1lID0gIm1pZGRsZSI7Ci1XZWJJbnNwZWN0b3IuRm9udFJlc291cmNl
Q29udGVudFZpZXcuQmFzZWxpbmVNZXRyaWNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiYmFzZWxp
bmUiOwotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LkJvdHRvbU1ldHJpY0Vs
ZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJib3R0b20iOwotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJj
ZUNvbnRlbnRWaWV3LlByZXZpZXdMaW5lcyA9IFsiQUJDREVGR0hJSktMTSIsICJOT1BRUlNUVVZX
WFlaIiwgImFiY2RlZmdoaWprbG0iLCAibm9wcXJzdHV2d3h5eiIsICIxMjM0NTY3ODkwIl07Ci0K
LVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5NYXhpbXVtRm9udFNpemUgPSA3
MjsKLVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5NaW5pbXVtRm9udFNpemUg
PSAxMjsKKyAgICBjb25zdHJ1Y3RvcihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHJl
c291cmNlLCAiZm9udCIpOwogCi1XZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRm9udFJlc291cmNl
Q29udGVudFZpZXcsCisgICAgICAgIHRoaXMuX3N0eWxlRWxlbWVudCA9IG51bGw7CisgICAgICAg
IHRoaXMuX3ByZXZpZXdFbGVtZW50ID0gbnVsbDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApA
QCAtNTksMTQgKzQxLDE0IEBAIFdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFu
ZWwuaWRlbnRpZmllciwKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQ
YW5lbC5pZGVudGlmaWVyCiAgICAgICAgIF07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJl
dmlld0VsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXZpZXdFbGVtZW50
OwotICAgIH0sCisgICAgfQogCi0gICAgc2l6ZVRvRml0OiBmdW5jdGlvbigpCisgICAgc2l6ZVRv
Rml0KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcHJldmlld0VsZW1lbnQpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC03NywxMyArNTksMTMgQEAgV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJj
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9wcmV2aWV3
RWxlbWVudC5vZmZzZXRXaWR0aCA8PSB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGgpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGNvbnRlbnRB
dmFpbGFibGU6IGZ1bmN0aW9uKGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpCisgICAgY29udGVudEF2
YWlsYWJsZShjb250ZW50LCBiYXNlNjRFbmNvZGVkKQogICAgIHsKICAgICAgICAgdGhpcy5lbGVt
ZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKLSAgICAgICAgY29uc3QgdW5pcXVlRm9udE5hbWUgPSAi
V2ViSW5zcGVjdG9yRm9udFByZXZpZXciICsgKCsrV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNv
bnRlbnRWaWV3Ll91bmlxdWVGb250SWRlbnRpZmllcik7CisgICAgICAgIHZhciB1bmlxdWVGb250
TmFtZSA9ICJXZWJJbnNwZWN0b3JGb250UHJldmlldyIgKyAoKytXZWJJbnNwZWN0b3IuRm9udFJl
c291cmNlQ29udGVudFZpZXcuX3VuaXF1ZUZvbnRJZGVudGlmaWVyKTsKIAogICAgICAgICB2YXIg
Zm9ybWF0ID0gIiI7CiAKQEAgLTEzNiwyOCArMTE4LDI4IEBAIFdlYkluc3BlY3Rvci5Gb250UmVz
b3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9wcmV2aWV3RWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5zaXplVG9GaXQo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVw
ZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB0aGlzLnNpemVUb0ZpdCgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAg
ICAvLyBBZGQgdGhlIHN0eWxlIGVsZW1lbnQgc2luY2UgaXQgaXMgcmVtb3ZlZCB3aGVuIGhpZGRl
bi4KICAgICAgICAgaWYgKHRoaXMuX3N0eWxlRWxlbWVudCkKICAgICAgICAgICAgIGRvY3VtZW50
LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5fc3R5bGVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICAvLyBS
ZW1vdmUgdGhlIHN0eWxlIGVsZW1lbnQgc28gaXQgd2lsbCBub3Qgc3RpY2sgYXJvdW5kIHdoZW4g
dGhpcyBjb250ZW50IHZpZXcgaXMgZGVzdHJveWVkLgogICAgICAgICBpZiAodGhpcy5fc3R5bGVF
bGVtZW50ICYmIHRoaXMuX3N0eWxlRWxlbWVudC5wYXJlbnROb2RlKQogICAgICAgICAgICAgdGhp
cy5fc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fc3R5bGVFbGVtZW50
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgp
CiAgICAgewogICAgICAgICAvLyBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3IgdGhlIGZhY3QgdGhh
dCB0aGUgYnJvd3NlciBkb2VzIG5vdCBzZW5kIGFueSBldmVudHMKICAgICAgICAgLy8gd2hlbiBh
IEBmb250LWZhY2UgcmVzb3VyY2UgaXMgbG9hZGVkLiBTbywgd2UgYXNzdW1lIGl0IGNvdWxkIGJl
IG5lZWRlZCB1bnRpbApAQCAtMTY4LDQgKzE1MCwxOCBAQCBXZWJJbnNwZWN0b3IuRm9udFJlc291
cmNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5G
b250UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJj
ZUNvbnRlbnRWaWV3Ll91bmlxdWVGb250SWRlbnRpZmllciA9IDA7CisKK1dlYkluc3BlY3Rvci5G
b250UmVzb3VyY2VDb250ZW50Vmlldy5QcmV2aWV3RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInBy
ZXZpZXciOworV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LkxpbmVFbGVtZW50
U3R5bGVDbGFzc05hbWUgPSAibGluZSI7CitXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVu
dFZpZXcuQ29udGVudEVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50IjsKK1dlYkluc3Bl
Y3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5NZXRyaWNFbGVtZW50U3R5bGVDbGFzc05hbWUg
PSAibWV0cmljIjsKK1dlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5Ub3BNZXRy
aWNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidG9wIjsKK1dlYkluc3BlY3Rvci5Gb250UmVzb3Vy
Y2VDb250ZW50Vmlldy5YSGVpZ2h0TWV0cmljRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInhoZWln
aHQiOworV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3Lk1pZGRsZU1ldHJpY0Vs
ZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJtaWRkbGUiOworV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJj
ZUNvbnRlbnRWaWV3LkJhc2VsaW5lTWV0cmljRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImJhc2Vs
aW5lIjsKK1dlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5Cb3R0b21NZXRyaWNF
bGVtZW50U3R5bGVDbGFzc05hbWUgPSAiYm90dG9tIjsKK1dlYkluc3BlY3Rvci5Gb250UmVzb3Vy
Y2VDb250ZW50Vmlldy5QcmV2aWV3TGluZXMgPSBbIkFCQ0RFRkdISUpLTE0iLCAiTk9QUVJTVFVW
V1hZWiIsICJhYmNkZWZnaGlqa2xtIiwgIm5vcHFyc3R1dnd4eXoiLCAiMTIzNDU2Nzg5MCJdOwor
CitXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuTWF4aW11bUZvbnRTaXplID0g
NzI7CitXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuTWluaW11bUZvbnRTaXpl
ID0gMTI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9GcmFtZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRnJhbWVDb250ZW50Vmlldy5qcwppbmRleCA0ODQ1Zjk5Li5iMjk3ZGNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFt
ZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0ZyYW1lQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDQ1ICsyMywzOCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRW
aWV3ID0gZnVuY3Rpb24oZnJhbWUpCitXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50VmlldyA9IGNs
YXNzIEZyYW1lQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRW
aWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5jYWxsKHRoaXMsIGZy
YW1lKTsKLQotICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7Ci0KLSAgICBmdW5jdGlvbiBjcmVhdGVQ
YXRoQ29tcG9uZW50KGRpc3BsYXlOYW1lLCBjbGFzc05hbWUsIGlkZW50aWZpZXIpCisgICAgY29u
c3RydWN0b3IoZnJhbWUpCiAgICAgewotICAgICAgICB2YXIgcGF0aENvbXBvbmVudCA9IG5ldyBX
ZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudChkaXNwbGF5TmFtZSwgY2xhc3NO
YW1lLCBpZGVudGlmaWVyLCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIHBhdGhDb21wb25lbnQuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5FdmVu
dC5TaWJsaW5nV2FzU2VsZWN0ZWQsIHRoaXMuX3BhdGhDb21wb25lbnRTZWxlY3RlZCwgdGhpcyk7
Ci0gICAgICAgIHJldHVybiBwYXRoQ29tcG9uZW50OwotICAgIH0KKyAgICAgICAgc3VwZXIoZnJh
bWUpOwogCi0gICAgdGhpcy5fc291cmNlQ29kZVBhdGhDb21wb25lbnQgPSBjcmVhdGVQYXRoQ29t
cG9uZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTb3VyY2UgQ29kZSIpLCBX
ZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5Tb3VyY2VDb2RlSWNvblN0eWxlQ2xhc3NOYW1l
LCBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5Tb3VyY2VDb2RlSWRlbnRpZmllcik7Ci0g
ICAgdGhpcy5fZG9tVHJlZVBhdGhDb21wb25lbnQgPSBjcmVhdGVQYXRoQ29tcG9uZW50LmNhbGwo
dGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJET00gVHJlZSIpLCBXZWJJbnNwZWN0b3IuRnJh
bWVDb250ZW50Vmlldy5ET01UcmVlSWNvblN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuRnJh
bWVDb250ZW50Vmlldy5ET01UcmVlSWRlbnRpZmllcik7CisgICAgICAgIHRoaXMuX2ZyYW1lID0g
ZnJhbWU7CiAKLSAgICB0aGlzLl9zb3VyY2VDb2RlUGF0aENvbXBvbmVudC5uZXh0U2libGluZyA9
IHRoaXMuX2RvbVRyZWVQYXRoQ29tcG9uZW50OwotICAgIHRoaXMuX2RvbVRyZWVQYXRoQ29tcG9u
ZW50LnByZXZpb3VzU2libGluZyA9IHRoaXMuX3NvdXJjZUNvZGVQYXRoQ29tcG9uZW50OworICAg
ICAgICBmdW5jdGlvbiBjcmVhdGVQYXRoQ29tcG9uZW50KGRpc3BsYXlOYW1lLCBjbGFzc05hbWUs
IGlkZW50aWZpZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwYXRoQ29tcG9uZW50ID0g
bmV3IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50KGRpc3BsYXlOYW1lLCBj
bGFzc05hbWUsIGlkZW50aWZpZXIsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIHBhdGhDb21w
b25lbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBv
bmVudC5FdmVudC5TaWJsaW5nV2FzU2VsZWN0ZWQsIHRoaXMuX3BhdGhDb21wb25lbnRTZWxlY3Rl
ZCwgdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gcGF0aENvbXBvbmVudDsKKyAgICAgICAgfQog
Ci0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVu
dFZpZXcuU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9zb3VyY2VDb2RlUGF0aENvbXBv
bmVudCA9IGNyZWF0ZVBhdGhDb21wb25lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNvdXJjZSBDb2RlIiksIFdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LlNvdXJjZUNv
ZGVJY29uU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LlNvdXJj
ZUNvZGVJZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5fZG9tVHJlZVBhdGhDb21wb25lbnQgPSBj
cmVhdGVQYXRoQ29tcG9uZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJET00g
VHJlZSIpLCBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5ET01UcmVlSWNvblN0eWxlQ2xh
c3NOYW1lLCBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5ET01UcmVlSWRlbnRpZmllcik7
CiAKLSAgICB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rv
ci5TZXR0aW5nKCJmcmFtZS1jdXJyZW50LXZpZXctIiArIHRoaXMuX2ZyYW1lLnVybC5oYXNoLCBX
ZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5ET01UcmVlSWRlbnRpZmllcik7Ci19OworICAg
ICAgICB0aGlzLl9zb3VyY2VDb2RlUGF0aENvbXBvbmVudC5uZXh0U2libGluZyA9IHRoaXMuX2Rv
bVRyZWVQYXRoQ29tcG9uZW50OworICAgICAgICB0aGlzLl9kb21UcmVlUGF0aENvbXBvbmVudC5w
cmV2aW91c1NpYmxpbmcgPSB0aGlzLl9zb3VyY2VDb2RlUGF0aENvbXBvbmVudDsKIAotV2ViSW5z
cGVjdG9yLkZyYW1lQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZnJhbWUiOwotV2ViSW5z
cGVjdG9yLkZyYW1lQ29udGVudFZpZXcuU291cmNlQ29kZUljb25TdHlsZUNsYXNzTmFtZSA9ICJz
b3VyY2UtY29kZS1pY29uIjsKLVdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LlNvdXJjZUNv
ZGVJZGVudGlmaWVyID0gInNvdXJjZS1jb2RlIjsKLVdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRW
aWV3LkRPTVRyZWVJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLXRyZWUtaWNvbiI7Ci1XZWJJbnNw
ZWN0b3IuRnJhbWVDb250ZW50Vmlldy5ET01UcmVlSWRlbnRpZmllciA9ICJkb20tdHJlZSI7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJmcmFtZSIpOwogCi1XZWJJbnNwZWN0
b3IuRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LAorICAgICAgICB0aGlzLl9jdXJyZW50Q29udGVudFZp
ZXdTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJmcmFtZS1jdXJyZW50LXZpZXct
IiArIHRoaXMuX2ZyYW1lLnVybC5oYXNoLCBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5E
T01UcmVlSWRlbnRpZmllcik7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZnJh
bWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZyYW1lOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CkBAIC03MSw5ICs2NCw5
IEBAIFdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
Ly8gQXBwZW5kIHRoZSBjdXJyZW50IHZpZXcncyBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIHBhdGgg
Y29tcG9uZW50IHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB2aWV3LgogICAgICAgICB2YXIgY29t
cG9uZW50cyA9IFt0aGlzLl9wYXRoQ29tcG9uZW50Rm9yQ29udGVudFZpZXcodGhpcy5fY29udGVu
dFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3KV07CiAgICAgICAgIHJldHVybiBjb21w
b25lbnRzLmNvbmNhdCh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZp
ZXcuc2VsZWN0aW9uUGF0aENvbXBvbmVudHMpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246
IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuQ2x1
c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCkBAIC04MSwzOCAr
NzQsMzggQEAgV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50
aWZpZXIodGhpcy5fY3VycmVudENvbnRlbnRWaWV3U2V0dGluZy52YWx1ZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2VkLmNhbGwo
dGhpcyk7CiAKICAgICAgICAgdGhpcy5fc2hvd25Jbml0aWFsQ29udGVudCA9IGZhbHNlOwotICAg
IH0sCisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2
ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5SZXNvdXJjZTsKICAgICAgICAgY29va2llLnN1YnZp
ZXcgPSB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5nLnZhbHVlOwogICAgICAgICBpZiAo
IXRoaXMucmVwcmVzZW50ZWRPYmplY3QuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgIGNvb2tp
ZS51cmwgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnVybDsKLSAgICB9LAorICAgIH0KIAotICAg
IHJlc3RvcmVGcm9tQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgcmVzdG9yZUZyb21Db29r
aWUoY29va2llKQogICAgIHsKICAgICAgICAgdmFyIHNob3duVmlldyA9IHRoaXMuX3Nob3dDb250
ZW50Vmlld0ZvcklkZW50aWZpZXIoY29va2llLnN1YnZpZXcpOwogICAgICAgICBpZiAoImxpbmVO
dW1iZXIiIGluIGNvb2tpZSAmJiAiY29sdW1uTnVtYmVyIiBpbiBjb29raWUpCiAgICAgICAgICAg
ICB0aGlzLnNob3dTb3VyY2VDb2RlKG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9u
KGNvb2tpZS5saW5lTnVtYmVyLCBjb29raWUuY29sdW1uTnVtYmVyKSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzaG93UmVzb3VyY2U6IGZ1bmN0aW9uKCkKKyAgICBzaG93UmVzb3VyY2UoKQogICAg
IHsKICAgICAgICAgdGhpcy5fc2hvd25Jbml0aWFsQ29udGVudCA9IHRydWU7CiAKICAgICAgICAg
cmV0dXJuIHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIoV2ViSW5zcGVjdG9yLkZy
YW1lQ29udGVudFZpZXcuU291cmNlQ29kZUlkZW50aWZpZXIpOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2hvd1NvdXJjZUNvZGU6IGZ1bmN0aW9uKHBvc2l0aW9uVG9SZXZlYWwsIHRleHRSYW5nZVRv
U2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQorICAgIHNob3dTb3VyY2VDb2RlKHBvc2l0aW9uVG9S
ZXZlYWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQogICAgIHsKICAgICAg
ICAgdmFyIHJlc291cmNlQ29udGVudFZpZXcgPSB0aGlzLnNob3dSZXNvdXJjZSgpOwogICAgICAg
ICBjb25zb2xlLmFzc2VydChyZXNvdXJjZUNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3KTsKQEAgLTEyMCw5ICsxMTMsOSBAQCBXZWJJ
bnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKIAogICAgICAgICByZXR1cm4gcmVzb3VyY2VDb250ZW50Vmlldy5zaG93UmVzcG9u
c2UocG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQp
OwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd0RPTVRyZWU6IGZ1bmN0aW9uKGRvbU5vZGVUb1Nl
bGVjdCwgcHJldmVudEZvY3VzQ2hhbmdlKQorICAgIHNob3dET01UcmVlKGRvbU5vZGVUb1NlbGVj
dCwgcHJldmVudEZvY3VzQ2hhbmdlKQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd25Jbml0aWFs
Q29udGVudCA9IHRydWU7CiAKQEAgLTEzNCwxMSArMTI3LDExIEBAIFdlYkluc3BlY3Rvci5GcmFt
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgZG9tVHJlZUNvbnRlbnRWaWV3LnNl
bGVjdEFuZFJldmVhbERPTU5vZGUoZG9tTm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2Up
OwogCiAgICAgICAgIHJldHVybiBkb21UcmVlQ29udGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKLSAgICBfcGF0aENvbXBvbmVudEZvckNvbnRlbnRWaWV3OiBmdW5j
dGlvbihjb250ZW50VmlldykKKyAgICBfcGF0aENvbXBvbmVudEZvckNvbnRlbnRWaWV3KGNvbnRl
bnRWaWV3KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGVudFZpZXcpOwogICAg
ICAgICBpZiAoIWNvbnRlbnRWaWV3KQpAQCAtMTQ5LDkgKzE0Miw5IEBAIFdlYkluc3BlY3Rvci5G
cmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9k
b21UcmVlUGF0aENvbXBvbmVudDsKICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBjb250
ZW50Vmlldy4iKTsKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
aWRlbnRpZmllckZvckNvbnRlbnRWaWV3OiBmdW5jdGlvbihjb250ZW50VmlldykKKyAgICBfaWRl
bnRpZmllckZvckNvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoY29udGVudFZpZXcpOwogICAgICAgICBpZiAoIWNvbnRlbnRWaWV3KQpAQCAtMTYy
LDkgKzE1NSw5IEBAIFdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5ET01UcmVl
SWRlbnRpZmllcjsKICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBjb250ZW50Vmlldy4i
KTsKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd0NvbnRl
bnRWaWV3Rm9ySWRlbnRpZmllcjogZnVuY3Rpb24oaWRlbnRpZmllcikKKyAgICBfc2hvd0NvbnRl
bnRWaWV3Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgdmFyIHJlcHJl
c2VudGVkT2JqZWN0VG9TaG93ID0gbnVsbDsKIApAQCAtMTg0LDEyICsxNzcsMTUgQEAgV2ViSW5z
cGVjdG9yLkZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jdXJy
ZW50Q29udGVudFZpZXdTZXR0aW5nLnZhbHVlID0gaWRlbnRpZmllcjsKIAogICAgICAgICByZXR1
cm4gdGhpcy5jb250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRl
ZE9iamVjdChyZXByZXNlbnRlZE9iamVjdFRvU2hvdyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
cGF0aENvbXBvbmVudFNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcGF0aENvbXBvbmVu
dFNlbGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd0NvbnRlbnRWaWV3Rm9y
SWRlbnRpZmllcihldmVudC5kYXRhLnBhdGhDb21wb25lbnQucmVwcmVzZW50ZWRPYmplY3QpOwog
ICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZTsKK1dlYklu
c3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LlNvdXJjZUNvZGVJY29uU3R5bGVDbGFzc05hbWUgPSAi
c291cmNlLWNvZGUtaWNvbiI7CitXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5Tb3VyY2VD
b2RlSWRlbnRpZmllciA9ICJzb3VyY2UtY29kZSI7CitXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50
Vmlldy5ET01UcmVlSWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS10cmVlLWljb24iOworV2ViSW5z
cGVjdG9yLkZyYW1lQ29udGVudFZpZXcuRE9NVHJlZUlkZW50aWZpZXIgPSAiZG9tLXRyZWUiOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJh
bWVET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9GcmFtZURPTVRyZWVDb250ZW50Vmlldy5qcwppbmRleCBjOGNlYzZlLi4zZDY4
MTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9GcmFtZURPTVRyZWVDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9GcmFtZURPTVRyZWVDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNTEgKzIz
LDQ4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLkZyYW1lRE9NVHJlZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24oZG9tVHJlZSkKK1dlYklu
c3BlY3Rvci5GcmFtZURPTVRyZWVDb250ZW50VmlldyA9IGNsYXNzIEZyYW1lRE9NVHJlZUNvbnRl
bnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50VmlldwogewotICAgIGNv
bnNvbGUuYXNzZXJ0KGRvbVRyZWUpOwotCi0gICAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50
Vmlldy5jYWxsKHRoaXMsIGRvbVRyZWUpOwotCi0gICAgdGhpcy5fZG9tVHJlZSA9IGRvbVRyZWU7
Ci0gICAgdGhpcy5fZG9tVHJlZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVl
LkV2ZW50LlJvb3RET01Ob2RlSW52YWxpZGF0ZWQsIHRoaXMuX3Jvb3RET01Ob2RlSW52YWxpZGF0
ZWQsIHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGRvbVRyZWUpCisgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydChkb21UcmVlKTsKIAotICAgIHRoaXMuX3JlcXVlc3RSb290RE9NTm9kZSgpOwot
fTsKKyAgICAgICAgc3VwZXIoZG9tVHJlZSk7CiAKKyAgICAgICAgdGhpcy5fZG9tVHJlZSA9IGRv
bVRyZWU7CisgICAgICAgIHRoaXMuX2RvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NVHJlZS5FdmVudC5Sb290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlzLl9yb290RE9NTm9k
ZUludmFsaWRhdGVkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLkZyYW1lRE9NVHJlZUNvbnRlbnRW
aWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZyYW1lRE9N
VHJlZUNvbnRlbnRWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250
ZW50Vmlldy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX3JlcXVlc3RSb290RE9NTm9kZSgpOwor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGFsbG93ZWROYXZpZ2F0aW9uU2lkZWJh
clBhbmVscygpCiAgICAgewogICAgICAgICByZXR1cm4gW1dlYkluc3BlY3Rvci5yZXNvdXJjZVNp
ZGViYXJQYW5lbC5pZGVudGlmaWVyXTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkb21UcmVl
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21UcmVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2RvbVRyZWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2VkLmNhbGwo
dGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRTZWFyY2hDb250ZXh0Tm9kZXM6IGZ1bmN0
aW9uKGNhbGxiYWNrKQorICAgIGdldFNlYXJjaENvbnRleHROb2RlcyhjYWxsYmFjaykKICAgICB7
CiAgICAgICAgIHRoaXMuX2RvbVRyZWUucmVxdWVzdFJvb3RET01Ob2RlKGZ1bmN0aW9uKHJvb3RE
T01Ob2RlKSB7CiAgICAgICAgICAgICBjYWxsYmFjayhbcm9vdERPTU5vZGUuaWRdKTsKICAgICAg
ICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfcm9vdERPTU5v
ZGVBdmFpbGFibGU6IGZ1bmN0aW9uKHJvb3RET01Ob2RlKQorICAgIF9yb290RE9NTm9kZUF2YWls
YWJsZShyb290RE9NTm9kZSkKICAgICB7CiAgICAgICAgIHRoaXMuZG9tVHJlZU91dGxpbmUucm9v
dERPTU5vZGUgPSByb290RE9NTm9kZTsKIApAQCAtNzcsMTQgKzc0LDE0IEBAIFdlYkluc3BlY3Rv
ci5GcmFtZURPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICB0aGlzLl9yZXN0b3JlU2VsZWN0ZWROb2RlQWZ0ZXJVcGRhdGUodGhpcy5fZG9tVHJlZS5m
cmFtZS51cmwsIHJvb3RET01Ob2RlLmJvZHkgfHwgcm9vdERPTU5vZGUuZG9jdW1lbnRFbGVtZW50
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yb290RE9NTm9kZUludmFsaWRhdGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfcm9vdERPTU5vZGVJbnZhbGlkYXRlZChldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3JlcXVlc3RSb290RE9NTm9kZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
cXVlc3RSb290RE9NTm9kZTogZnVuY3Rpb24oKQorICAgIF9yZXF1ZXN0Um9vdERPTU5vZGUoKQog
ICAgIHsKICAgICAgICAgdGhpcy5fZG9tVHJlZS5yZXF1ZXN0Um9vdERPTU5vZGUodGhpcy5fcm9v
dERPTU5vZGVBdmFpbGFibGUuYmluZCh0aGlzKSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1l
bnQuanMKaW5kZXggNmI5OTkzNy4uYjhmZTRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50Lmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMywxMDEgKzIzLDk5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihmcmFtZSwgcmVw
cmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZy
YW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudAog
ewotICAgIGNvbnNvbGUuYXNzZXJ0KGZyYW1lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1l
KTsKKyAgICBjb25zdHJ1Y3RvcihmcmFtZSwgcmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChmcmFtZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZSk7
CiAKLSAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIGZyYW1l
Lm1haW5SZXNvdXJjZSwgcmVwcmVzZW50ZWRPYmplY3QgfHwgZnJhbWUpOworICAgICAgICBzdXBl
cihmcmFtZS5tYWluUmVzb3VyY2UsIHJlcHJlc2VudGVkT2JqZWN0IHx8IGZyYW1lKTsKIAotICAg
IHRoaXMuX2ZyYW1lID0gZnJhbWU7CisgICAgICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7CiAKLSAg
ICB0aGlzLl91cGRhdGVFeHBhbmRlZFNldHRpbmcoKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlRXhw
YW5kZWRTZXR0aW5nKCk7CiAKLSAgICBmcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURp
ZENoYW5nZSwgdGhpcyk7Ci0gICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgdGhpcy5fcmVzb3VyY2VXYXNBZGRlZCwgdGhp
cyk7Ci0gICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQu
UmVzb3VyY2VXYXNSZW1vdmVkLCB0aGlzLl9yZXNvdXJjZVdhc1JlbW92ZWQsIHRoaXMpOwotICAg
IGZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LkNoaWxkRnJh
bWVXYXNBZGRlZCwgdGhpcy5fY2hpbGRGcmFtZVdhc0FkZGVkLCB0aGlzKTsKLSAgICBmcmFtZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzUmVt
b3ZlZCwgdGhpcy5fY2hpbGRGcmFtZVdhc1JlbW92ZWQsIHRoaXMpOworICAgICAgICBmcmFtZS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRD
aGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIGZyYW1l
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzQWRk
ZWQsIHRoaXMuX3Jlc291cmNlV2FzQWRkZWQsIHRoaXMpOworICAgICAgICBmcmFtZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5SZXNvdXJjZVdhc1JlbW92ZWQsIHRo
aXMuX3Jlc291cmNlV2FzUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIGZyYW1lLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LkNoaWxkRnJhbWVXYXNBZGRlZCwgdGhpcy5f
Y2hpbGRGcmFtZVdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgZnJhbWUuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuQ2hpbGRGcmFtZVdhc1JlbW92ZWQsIHRoaXMuX2No
aWxkRnJhbWVXYXNSZW1vdmVkLCB0aGlzKTsKIAotICAgIGZyYW1lLmRvbVRyZWUuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc0FkZGVkLCB0
aGlzLl9jaGlsZENvbnRlbnRGbG93V2FzQWRkZWQsIHRoaXMpOwotICAgIGZyYW1lLmRvbVRyZWUu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dh
c1JlbW92ZWQsIHRoaXMuX2NoaWxkQ29udGVudEZsb3dXYXNSZW1vdmVkLCB0aGlzKTsKLSAgICBm
cmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQu
Um9vdERPTU5vZGVJbnZhbGlkYXRlZCwgdGhpcy5fcm9vdERPTU5vZGVJbnZhbGlkYXRlZCwgdGhp
cyk7CisgICAgICAgIGZyYW1lLmRvbVRyZWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RE9NVHJlZS5FdmVudC5Db250ZW50Rmxvd1dhc0FkZGVkLCB0aGlzLl9jaGlsZENvbnRlbnRGbG93
V2FzQWRkZWQsIHRoaXMpOworICAgICAgICBmcmFtZS5kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQuQ29udGVudEZsb3dXYXNSZW1vdmVkLCB0aGlzLl9j
aGlsZENvbnRlbnRGbG93V2FzUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIGZyYW1lLmRvbVRyZWUu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Sb290RE9NTm9kZUlu
dmFsaWRhdGVkLCB0aGlzLl9yb290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlzKTsKIAotICAgIGlm
ICh0aGlzLl9mcmFtZS5pc01haW5GcmFtZSgpKQotICAgICAgICB0aGlzLl9kb3dubG9hZGluZ1Bh
Z2UgPSBmYWxzZTsKKyAgICAgICAgaWYgKHRoaXMuX2ZyYW1lLmlzTWFpbkZyYW1lKCkpCisgICAg
ICAgICAgICB0aGlzLl9kb3dubG9hZGluZ1BhZ2UgPSBmYWxzZTsKIAotICAgIHRoaXMuc2hvdWxk
UmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKLSAgICB0aGlzLmZvbGRlclNldHRpbmdzS2V5ID0gdGhp
cy5fZnJhbWUudXJsLmhhc2g7Ci0KLSAgICB0aGlzLnJlZ2lzdGVyRm9sZGVyaXplU2V0dGluZ3Mo
ImZyYW1lcyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRnJhbWVzIiksCi0gICAgICAgIGZ1bmN0
aW9uKHJlcHJlc2VudGVkT2JqZWN0KSB7IHJldHVybiByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5GcmFtZTsgfSwKLSAgICAgICAgZnVuY3Rpb24oKSB7IHJldHVybiB0
aGlzLmZyYW1lLmNoaWxkRnJhbWVzLmxlbmd0aDsgfS5iaW5kKHRoaXMpLAotICAgICAgICBXZWJJ
bnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudAotICAgICk7Ci0KLSAgICB0aGlzLnJlZ2lzdGVyRm9s
ZGVyaXplU2V0dGluZ3MoImZsb3dzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGbG93cyIpLAot
ICAgICAgICBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkgeyByZXR1cm4gcmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3c7IH0sCi0gICAgICAgIGZ1
bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5kb21UcmVlLmZsb3dzQ291bnQ7IH0uYmluZCh0
aGlzKSwKLSAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQKLSAgICAp
OwotCi0gICAgZnVuY3Rpb24gbWFrZVZhbGlkYXRlQ2FsbGJhY2socmVzb3VyY2VUeXBlKSB7Ci0g
ICAgICAgIHJldHVybiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkgewotICAgICAgICAgICAg
cmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNl
ICYmIHJlcHJlc2VudGVkT2JqZWN0LnR5cGUgPT09IHJlc291cmNlVHlwZTsKLSAgICAgICAgfTsK
LSAgICB9CisgICAgICAgIHRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKKyAgICAg
ICAgdGhpcy5mb2xkZXJTZXR0aW5nc0tleSA9IHRoaXMuX2ZyYW1lLnVybC5oYXNoOwogCi0gICAg
ZnVuY3Rpb24gbWFrZUNoaWxkQ291bnRDYWxsYmFjayhmcmFtZSwgcmVzb3VyY2VUeXBlKSB7Ci0g
ICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS5yZXNv
dXJjZXNXaXRoVHlwZShyZXNvdXJjZVR5cGUpLmxlbmd0aDsKLSAgICAgICAgfTsKLSAgICB9Cisg
ICAgICAgIHRoaXMucmVnaXN0ZXJGb2xkZXJpemVTZXR0aW5ncygiZnJhbWVzIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJGcmFtZXMiKSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKHJlcHJlc2VudGVk
T2JqZWN0KSB7IHJldHVybiByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5GcmFtZTsgfSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5j
aGlsZEZyYW1lcy5sZW5ndGg7IH0uYmluZCh0aGlzKSwKKyAgICAgICAgICAgIFdlYkluc3BlY3Rv
ci5GcmFtZVRyZWVFbGVtZW50CisgICAgICAgICk7CiAKLSAgICBmb3IgKHZhciBrZXkgaW4gV2Vi
SW5zcGVjdG9yLlJlc291cmNlLlR5cGUpIHsKLSAgICAgICAgdmFyIHZhbHVlID0gV2ViSW5zcGVj
dG9yLlJlc291cmNlLlR5cGVba2V5XTsKLSAgICAgICAgdmFyIGZvbGRlck5hbWUgPSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKHZhbHVlLCB0cnVlKTsKLSAgICAgICAg
dGhpcy5yZWdpc3RlckZvbGRlcml6ZVNldHRpbmdzKGtleSwgZm9sZGVyTmFtZSwKLSAgICAgICAg
ICAgIG1ha2VWYWxpZGF0ZUNhbGxiYWNrKHZhbHVlKSwKLSAgICAgICAgICAgIG1ha2VDaGlsZENv
dW50Q2FsbGJhY2sodGhpcy5mcmFtZSwgdmFsdWUpLAotICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZUVsZW1lbnQKKyAgICAgICAgdGhpcy5yZWdpc3RlckZvbGRlcml6ZVNldHRp
bmdzKCJmbG93cyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmxvd3MiKSwKKyAgICAgICAgICAg
IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KSB7IHJldHVybiByZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50RmxvdzsgfSwKKyAgICAgICAgICAgIGZ1bmN0
aW9uKCkgeyByZXR1cm4gdGhpcy5mcmFtZS5kb21UcmVlLmZsb3dzQ291bnQ7IH0uYmluZCh0aGlz
KSwKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50CiAgICAg
ICAgICk7Ci0gICAgfQogCi0gICAgdGhpcy51cGRhdGVQYXJlbnRTdGF0dXMoKTsKLX07CisgICAg
ICAgIGZ1bmN0aW9uIG1ha2VWYWxpZGF0ZUNhbGxiYWNrKHJlc291cmNlVHlwZSkgeworICAgICAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291
cmNlICYmIHJlcHJlc2VudGVkT2JqZWN0LnR5cGUgPT09IHJlc291cmNlVHlwZTsKKyAgICAgICAg
ICAgIH07CisgICAgICAgIH0KIAotV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudCwK
LSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSwKKyAgICAgICAgZnVuY3Rpb24gbWFrZUNoaWxkQ291bnRDYWxsYmFjayhmcmFtZSwgcmVzb3Vy
Y2VUeXBlKSB7CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lLnJlc291cmNlc1dpdGhUeXBlKHJlc291cmNlVHlwZSkubGVuZ3RoOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAodmFyIGtleSBpbiBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuVHlwZSkgeworICAgICAgICAgICAgdmFyIHZhbHVlID0gV2ViSW5z
cGVjdG9yLlJlc291cmNlLlR5cGVba2V5XTsKKyAgICAgICAgICAgIHZhciBmb2xkZXJOYW1lID0g
V2ViSW5zcGVjdG9yLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZSh2YWx1ZSwgdHJ1ZSk7Cisg
ICAgICAgICAgICB0aGlzLnJlZ2lzdGVyRm9sZGVyaXplU2V0dGluZ3Moa2V5LCBmb2xkZXJOYW1l
LAorICAgICAgICAgICAgICAgIG1ha2VWYWxpZGF0ZUNhbGxiYWNrKHZhbHVlKSwKKyAgICAgICAg
ICAgICAgICBtYWtlQ2hpbGRDb3VudENhbGxiYWNrKHRoaXMuZnJhbWUsIHZhbHVlKSwKKyAgICAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudAorICAgICAgICAgICAg
KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMudXBkYXRlUGFyZW50U3RhdHVzKCk7CisgICAg
fQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZnJhbWUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2ZyYW1lOwotICAgIH0sCisgICAgfQogCi0gICAgZGVzY2VuZGFudFJlc291cmNl
VHJlZUVsZW1lbnRUeXBlRGlkQ2hhbmdlOiBmdW5jdGlvbihyZXNvdXJjZVRyZWVFbGVtZW50LCBv
bGRUeXBlKQorICAgIGRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50VHlwZURpZENoYW5nZShy
ZXNvdXJjZVRyZWVFbGVtZW50LCBvbGRUeXBlKQogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGJ5
IGRlc2NlbmRhbnQgUmVzb3VyY2VUcmVlRWxlbWVudHMuCiAKICAgICAgICAgLy8gQWRkIHRoZSB0
cmVlIGVsZW1lbnQgYWdhaW4sIHdoaWNoIHdpbGwgbW92ZSBpdCB0byB0aGUgbmV3IGxvY2F0aW9u
CiAgICAgICAgIC8vIGJhc2VkIG9uIHNvcnRpbmcgYW5kIHBvc3NpYmxlIGZvbGRlciBjaGFuZ2Vz
LgogICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVudChyZXNvdXJjZVRyZWVFbGVtZW50KTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50TWFpblRpdGxl
RGlkQ2hhbmdlOiBmdW5jdGlvbihyZXNvdXJjZVRyZWVFbGVtZW50LCBvbGRNYWluVGl0bGUpCisg
ICAgZGVzY2VuZGFudFJlc291cmNlVHJlZUVsZW1lbnRNYWluVGl0bGVEaWRDaGFuZ2UocmVzb3Vy
Y2VUcmVlRWxlbWVudCwgb2xkTWFpblRpdGxlKQogICAgIHsKICAgICAgICAgLy8gQ2FsbGVkIGJ5
IGRlc2NlbmRhbnQgUmVzb3VyY2VUcmVlRWxlbWVudHMuCiAKICAgICAgICAgLy8gQWRkIHRoZSB0
cmVlIGVsZW1lbnQgYWdhaW4sIHdoaWNoIHdpbGwgbW92ZSBpdCB0byB0aGUgbmV3IGxvY2F0aW9u
CiAgICAgICAgIC8vIGJhc2VkIG9uIHNvcnRpbmcgYW5kIHBvc3NpYmxlIGZvbGRlciBjaGFuZ2Vz
LgogICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVudChyZXNvdXJjZVRyZWVFbGVtZW50KTsKLSAg
ICB9LAorICAgIH0KIAogICAgIC8vIE92ZXJyaWRlcyBmcm9tIFNvdXJjZUNvZGVUcmVlRWxlbWVu
dC4KIAotICAgIHVwZGF0ZVNvdXJjZU1hcFJlc291cmNlczogZnVuY3Rpb24oKQorICAgIHVwZGF0
ZVNvdXJjZU1hcFJlc291cmNlcygpCiAgICAgewogICAgICAgICAvLyBGcmFtZXMgaGFuZGxlIHRo
ZWlyIG93biBTb3VyY2VNYXBSZXNvdXJjZXMuCiAKQEAgLTEzMSw5ICsxMjksOSBAQCBXZWJJbnNw
ZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMu
cmVzb3VyY2UgJiYgdGhpcy5yZXNvdXJjZS5zb3VyY2VNYXBzLmxlbmd0aCkKICAgICAgICAgICAg
IHRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAg
IG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgb25hdHRhY2goKQogICAgIHsKICAgICAgICAgLy8g
SW1tZWRpYXRlIHN1cGVyY2xhc3NlcyBhcmUgc2tpcHBlZCwgc2luY2UgRnJhbWVzIGhhbmRsZSB0
aGVpciBvd24gU291cmNlTWFwUmVzb3VyY2VzLgogICAgICAgICBXZWJJbnNwZWN0b3IuR2VuZXJh
bFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5jYWxsKHRoaXMpOwpAQCAtMTQyLDkgKzE0
MCw5IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5ub3RpZmljYXRpb25zLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLk5vdGlmaWNhdGlvbi5QYWdlQXJjaGl2ZVN0YXJ0ZWQsIHRoaXMuX3BhZ2VBcmNoaXZl
U3RhcnRlZCwgdGhpcyk7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iubm90aWZpY2F0aW9ucy5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRpb24uUGFnZUFyY2hpdmVFbmRl
ZCwgdGhpcy5fcGFnZUFyY2hpdmVFbmRlZCwgdGhpcyk7CiAgICAgICAgIH0KLSAgICB9LAorICAg
IH0KIAotICAgIG9uZGV0YWNoOiBmdW5jdGlvbigpCisgICAgb25kZXRhY2goKQogICAgIHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGV0YWNo
LmNhbGwodGhpcyk7CiAKQEAgLTE1MiwxMSArMTUwLDExIEBAIFdlYkluc3BlY3Rvci5GcmFtZVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5ub3RpZmlj
YXRpb25zLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlvbi5QYWdl
QXJjaGl2ZVN0YXJ0ZWQsIHRoaXMuX3BhZ2VBcmNoaXZlU3RhcnRlZCwgdGhpcyk7CiAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3Iubm90aWZpY2F0aW9ucy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5Ob3RpZmljYXRpb24uUGFnZUFyY2hpdmVFbmRlZCwgdGhpcy5fcGFnZUFyY2hpdmVF
bmRlZCwgdGhpcyk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8vIE92ZXJyaWRl
cyBmcm9tIEZvbGRlcml6ZWRUcmVlRWxlbWVudCAoUHJvdGVjdGVkKS4KIAotICAgIGNvbXBhcmVD
aGlsZFRyZWVFbGVtZW50czogZnVuY3Rpb24oYSwgYikKKyAgICBjb21wYXJlQ2hpbGRUcmVlRWxl
bWVudHMoYSwgYikKICAgICB7CiAgICAgICAgIGlmIChhID09PSBiKQogICAgICAgICAgICAgcmV0
dXJuIDA7CkBAIC0xNzUsMTEgKzE3MywxMSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIE5vbi1yZXNvdXJjZXMgc2hvdWxkIGFwcGVhciBi
ZWZvcmUgdGhlIHJlc291cmNlcy4KICAgICAgICAgLy8gRklYTUU6IFRoZXJlIHNob3VsZCBiZSBh
IGJldHRlciB3YXkgdG8gZ3JvdXAgdGhlIGVsZW1lbnRzIGJ5IHRoZWlyIHR5cGUuCiAgICAgICAg
IHJldHVybiBhSXNSZXNvdXJjZSA/IDEgOiAtMTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIENh
bGxlZCBmcm9tIFJlc291cmNlVHJlZUVsZW1lbnQuCiAKLSAgICB1cGRhdGVTdGF0dXNGb3JNYWlu
RnJhbWU6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVTdGF0dXNGb3JNYWluRnJhbWUoKQogICAgIHsK
ICAgICAgICAgZnVuY3Rpb24gbG9hZGVkSW1hZ2VzKCkKICAgICAgICAgewpAQCAtMjIxLDExICsy
MTksMTEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgICAgIGxvYWRlZEltYWdlcy5jYWxsKHRoaXMpOwogICAgICAgICAgICAgfS5iaW5k
KHRoaXMpKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gT3ZlcnJpZGVzIGZy
b20gVHJlZUVsZW1lbnQgKFByaXZhdGUpLgogCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQor
ICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3Ro
ICYmICF0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbikKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTI1MiwzNCArMjUwLDM0IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgZm9yICh2YXIgZmxvd0tleSBpbiBmbG93TWFwKQogICAgICAgICAgICAg
dGhpcy5hZGRDaGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KGZsb3dNYXBbZmxvd0tleV0pOwogCi0g
ICAgfSwKKyAgICB9CiAKLSAgICBvbmV4cGFuZDogZnVuY3Rpb24oKQorICAgIG9uZXhwYW5kKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX2V4cGFuZGVkU2V0dGluZy52YWx1ZSA9IHRydWU7CiAgICAg
ICAgIHRoaXMuX2ZyYW1lLmRvbVRyZWUucmVxdWVzdENvbnRlbnRGbG93TGlzdCgpOwotICAgIH0s
CisgICAgfQogCi0gICAgb25jb2xsYXBzZTogZnVuY3Rpb24oKQorICAgIG9uY29sbGFwc2UoKQog
ICAgIHsKICAgICAgICAgLy8gT25seSBzdG9yZSB0aGUgc2V0dGluZyBpZiB3ZSBoYXZlIGNoaWxk
cmVuLCBzaW5jZSBzZXR0aW5nIGhhc0NoaWxkcmVuIHRvIGZhbHNlIHdpbGwgY2F1c2UgYSBjb2xs
YXBzZSwKICAgICAgICAgLy8gYW5kIHdlIG9ubHkgY2FyZSBhYm91dCB1c2VyIHRyaWdnZXJlZCBj
b2xsYXBzZXMuCiAgICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKQogICAgICAgICAgICAgdGhp
cy5fZXhwYW5kZWRTZXR0aW5nLnZhbHVlID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfdXBkYXRlRXhwYW5kZWRTZXR0aW5nOiBmdW5jdGlvbigpCisgICAg
X3VwZGF0ZUV4cGFuZGVkU2V0dGluZygpCiAgICAgewogICAgICAgICB0aGlzLl9leHBhbmRlZFNl
dHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImZyYW1lLWV4cGFuZGVkLSIgKyB0aGlz
Ll9mcmFtZS51cmwuaGFzaCwgdGhpcy5fZnJhbWUuaXNNYWluRnJhbWUoKSA/IHRydWUgOiBmYWxz
ZSk7CiAgICAgICAgIGlmICh0aGlzLl9leHBhbmRlZFNldHRpbmcudmFsdWUpCiAgICAgICAgICAg
ICB0aGlzLmV4cGFuZCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLmNvbGxhcHNl
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlOiBmdW5jdGlv
bihldmVudCkKKyAgICBfbWFpblJlc291cmNlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdGhpcy5fdXBkYXRlUmVzb3VyY2UodGhpcy5fZnJhbWUubWFpblJlc291cmNlKTsKIApAQCAt
Mjk0LDU2ICsyOTIsNTYgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fdXBkYXRlRG93bmxvYWRCdXR0b24oKTsKIAogICAgICAg
ICB0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcmVzb3VyY2VXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jlc291cmNlV2FzQWRk
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmFkZFJlcHJlc2VudGVkT2JqZWN0VG9OZXdD
aGlsZFF1ZXVlKGV2ZW50LmRhdGEucmVzb3VyY2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
c291cmNlV2FzUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jlc291cmNlV2FzUmVtb3Zl
ZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9i
amVjdChldmVudC5kYXRhLnJlc291cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jaGlsZEZy
YW1lV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGlsZEZyYW1lV2FzQWRkZWQoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLmFkZFJlcHJlc2VudGVkT2JqZWN0VG9OZXdDaGlsZFF1
ZXVlKGV2ZW50LmRhdGEuY2hpbGRGcmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2hpbGRG
cmFtZVdhc1JlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGlsZEZyYW1lV2FzUmVtb3Zl
ZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9i
amVjdChldmVudC5kYXRhLmNoaWxkRnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NoaWxk
Q29udGVudEZsb3dXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NoaWxkQ29udGVudEZs
b3dXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuYWRkUmVwcmVzZW50ZWRPYmpl
Y3RUb05ld0NoaWxkUXVldWUoZXZlbnQuZGF0YS5mbG93KTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9jaGlsZENvbnRlbnRGbG93V2FzUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NoaWxk
Q29udGVudEZsb3dXYXNSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5yZW1vdmVD
aGlsZEZvclJlcHJlc2VudGVkT2JqZWN0KGV2ZW50LmRhdGEuZmxvdyk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcm9vdERPTU5vZGVJbnZhbGlkYXRlZDogZnVuY3Rpb24oKQorICAgIF9yb290RE9N
Tm9kZUludmFsaWRhdGVkKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKQogICAg
ICAgICAgICAgdGhpcy5fZnJhbWUuZG9tVHJlZS5yZXF1ZXN0Q29udGVudEZsb3dMaXN0KCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfcmVsb2FkUGFnZUNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9yZWxvYWRQYWdlQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIC8vIElnbm9yZSBj
YWNoZSB3aGVuIHRoZSBzaGlmdCBrZXkgaXMgcHJlc3NlZC4KICAgICAgICAgUGFnZUFnZW50LnJl
bG9hZChldmVudC5kYXRhLnNoaWZ0S2V5KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kb3dubG9h
ZEJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kb3dubG9hZEJ1dHRvbkNsaWNr
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuYXJjaGl2ZU1haW5GcmFtZSgp
OwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZURvd25sb2FkQnV0dG9uOiBmdW5jdGlvbigp
CisgICAgX3VwZGF0ZURvd25sb2FkQnV0dG9uKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX2ZyYW1lLmlzTWFpbkZyYW1lKCkpOwogICAgICAgICBpZiAoIXRoaXMuX2Rvd25s
b2FkQnV0dG9uKQpAQCAtMzYwLDE1ICszNTgsMTUgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fZG93bmxvYWRC
dXR0b24uZW5hYmxlZCA9IFdlYkluc3BlY3Rvci5jYW5BcmNoaXZlTWFpbkZyYW1lKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcGFnZUFyY2hpdmVTdGFydGVkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfcGFnZUFyY2hpdmVTdGFydGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZG93bmxv
YWRpbmdQYWdlID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fdXBkYXRlRG93bmxvYWRCdXR0b24oKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9wYWdlQXJjaGl2ZUVuZGVkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfcGFnZUFyY2hpdmVFbmRlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Rvd25s
b2FkaW5nUGFnZSA9IGZhbHNlOwogICAgICAgICB0aGlzLl91cGRhdGVEb3dubG9hZEJ1dHRvbigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
R2VuZXJhbFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50LmpzCmluZGV4IDAzMjBmMTQuLjM5NDU3N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVy
YWxUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9HZW5lcmFsVHJlZUVsZW1lbnQuanMKQEAgLTIzLDczICsyMyw1NiBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJl
c2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKK1dlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1l
bnQgPSBjbGFzcyBHZW5lcmFsVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVHJlZUVs
ZW1lbnQKIHsKLSAgICBUcmVlRWxlbWVudC5jYWxsKHRoaXMsICIiLCByZXByZXNlbnRlZE9iamVj
dCwgaGFzQ2hpbGRyZW4pOwotCi0gICAgdGhpcy5jbGFzc05hbWVzID0gY2xhc3NOYW1lczsKLQot
ICAgIHRoaXMuX3Rvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IGZhbHNlOwotICAgIHRoaXMuX21h
aW5UaXRsZSA9IHRpdGxlIHx8ICIiOwotICAgIHRoaXMuX3N1YnRpdGxlID0gc3VidGl0bGUgfHwg
IiI7Ci0gICAgdGhpcy5fc3RhdHVzID0gIiI7Ci19OworICAgIGNvbnN0cnVjdG9yKGNsYXNzTmFt
ZXMsIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKQorICAg
IHsKKyAgICAgICAgc3VwZXIoIiIsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbik7CiAK
LVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAiaXRlbSI7
Ci1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LkRpc2Nsb3N1cmVCdXR0b25TdHlsZUNs
YXNzTmFtZSA9ICJkaXNjbG9zdXJlLWJ1dHRvbiI7Ci1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50Lkljb25FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiaWNvbiI7Ci1XZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50LlN0YXR1c0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzdGF0dXMi
OwotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5UaXRsZXNFbGVtZW50U3R5bGVDbGFz
c05hbWUgPSAidGl0bGVzIjsKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuTWFpblRp
dGxlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInRpdGxlIjsKLVdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnQuU3VidGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAic3VidGl0bGUiOwot
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5Ob1N1YnRpdGxlU3R5bGVDbGFzc05hbWUg
PSAibm8tc3VidGl0bGUiOwotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5TbWFsbFN0
eWxlQ2xhc3NOYW1lID0gInNtYWxsIjsKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQu
VHdvTGluZVN0eWxlQ2xhc3NOYW1lID0gInR3by1saW5lIjsKKyAgICAgICAgdGhpcy5jbGFzc05h
bWVzID0gY2xhc3NOYW1lczsKIAotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5FdmVu
dCA9IHsKLSAgICBNYWluVGl0bGVEaWRDaGFuZ2U6ICJnZW5lcmFsLXRyZWUtZWxlbWVudC1tYWlu
LXRpdGxlLWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVl
RWxlbWVudCwKLSAgICBfX3Byb3RvX186IFRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAg
dGhpcy5fdG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gZmFsc2U7CisgICAgICAgIHRoaXMuX21h
aW5UaXRsZSA9IHRpdGxlIHx8ICIiOworICAgICAgICB0aGlzLl9zdWJ0aXRsZSA9IHN1YnRpdGxl
IHx8ICIiOworICAgICAgICB0aGlzLl9zdGF0dXMgPSAiIjsKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9saXN0
SXRlbU5vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaWNvbkVsZW1lbnQoKQogICAgIHsK
ICAgICAgICAgdGhpcy5fY3JlYXRlRWxlbWVudHNJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4g
dGhpcy5faWNvbkVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGl0bGVzRWxlbWVu
dCgpCiAgICAgewogICAgICAgICB0aGlzLl9jcmVhdGVFbGVtZW50c0lmTmVlZGVkKCk7CiAgICAg
ICAgIHJldHVybiB0aGlzLl90aXRsZXNFbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IG1haW5UaXRsZUVsZW1lbnQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY3JlYXRlRWxlbWVudHNJ
Zk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gdGhpcy5fbWFpblRpdGxlRWxlbWVudDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBzdWJ0aXRsZUVsZW1lbnQoKQogICAgIHsKICAgICAgICAgdGhp
cy5fY3JlYXRlRWxlbWVudHNJZk5lZWRlZCgpOwogICAgICAgICB0aGlzLl9jcmVhdGVTdWJ0aXRs
ZUVsZW1lbnRJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gdGhpcy5fc3VidGl0bGVFbGVtZW50
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNsYXNzTmFtZXMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2NsYXNzTmFtZXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY2xhc3NO
YW1lcyh4KQogICAgIHsKQEAgLTEwNyw5ICs5MCw5IEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLl9jbGFzc05hbWVzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJ
dGVtTm9kZS5jbGFzc0xpc3QuYWRkKHRoaXMuX2NsYXNzTmFtZXNbaV0pOwogICAgICAgICB9Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBhZGRDbGFzc05hbWU6IGZ1bmN0aW9uKGNsYXNzTmFtZSkKKyAg
ICBhZGRDbGFzc05hbWUoY2xhc3NOYW1lKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NsYXNz
TmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExOCw5
ICsxMDEsOSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
IAogICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlKQogICAgICAgICAgICAgdGhpcy5fbGlz
dEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHJlbW92ZUNsYXNzTmFtZTogZnVuY3Rpb24oY2xhc3NOYW1lKQorICAgIHJlbW92ZUNsYXNzTmFt
ZShjbGFzc05hbWUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NsYXNzTmFtZXMuY29udGFp
bnMoY2xhc3NOYW1lKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyOSwxMiArMTEyLDEyIEBA
IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAg
IGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUu
Y2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNt
YWxsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zbWFsbDsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBzbWFsbCh4KQogICAgIHsKQEAgLTE0NiwxMiArMTI5LDEyIEBAIFdlYkluc3Bl
Y3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QucmVtb3ZlKFdlYklu
c3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU21hbGxTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAg
IH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0d29MaW5lKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl90d29MaW5lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHR3b0xpbmUoeCkK
ICAgICB7CkBAIC0xNjMsMTIgKzE0NiwxMiBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0aGlz
Ll9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50LlR3b0xpbmVTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBtYWluVGl0bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21haW5U
aXRsZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBtYWluVGl0bGUoeCkKICAgICB7CkBAIC0x
NzYsMjQgKzE1OSwyNCBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGVFbGVtZW50cygpOwogICAgICAgICB0aGlz
LmRpZENoYW5nZSgpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LkV2ZW50Lk1haW5UaXRsZURpZENoYW5nZSk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VidGl0bGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3N1YnRpdGxlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHN1YnRpdGxlKHgpCiAg
ICAgewogICAgICAgICB0aGlzLl9zdWJ0aXRsZSA9IHggfHwgIiI7CiAgICAgICAgIHRoaXMuX3Vw
ZGF0ZVRpdGxlRWxlbWVudHMoKTsKICAgICAgICAgdGhpcy5kaWRDaGFuZ2UoKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBzdGF0dXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0
YXR1czsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdGF0dXMoeCkKICAgICB7CkBAIC0yMDcs
MzYgKzE5MCwzNiBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0aGlzLl9zdGF0dXMgPSB4IHx8ICIiOwogICAgICAgICB0aGlzLl91cGRh
dGVTdGF0dXNFbGVtZW50KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZmlsdGVyYWJsZURh
dGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHt0ZXh0OiBbdGhpcy5tYWluVGl0bGUsIHRoaXMu
c3VidGl0bGVdfTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0b29sdGlwSGFuZGxlZFNlcGFy
YXRlbHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXBIYW5kbGVkU2VwYXJh
dGVseTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB0b29sdGlwSGFuZGxlZFNlcGFyYXRlbHko
eCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Rvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHggfHwg
ZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBPdmVycmlkZXMgZnJvbSBUcmVlRWxlbWVu
dCAoUHJpdmF0ZSkKIAotICAgIGlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGU6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIGlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpCiAg
ICAgewogICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9kaXNjbG9zdXJlQnV0
dG9uOwotICAgIH0sCisgICAgfQogCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICBvbmF0
dGFjaCgpCiAgICAgewogICAgICAgICB0aGlzLl9jcmVhdGVFbGVtZW50c0lmTmVlZGVkKCk7CiAg
ICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlRWxlbWVudHMoKTsKIAotICAgICAgICB0aGlzLl9saXN0
SXRlbU5vZGUuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlN0
eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQo
Iml0ZW0iKTsKIAogICAgICAgICBpZiAodGhpcy5fY2xhc3NOYW1lcykgewogICAgICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jbGFzc05hbWVzLmxlbmd0aDsgKytpKQpAQCAtMjY0
LDI1ICsyNDcsMjUgQEAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXNFbGVtZW50KCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBvbmRldGFjaDogZnVuY3Rpb24oKQorICAgIG9uZGV0YWNoKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9ib3VuZENvbnRleHRNZW51RXZlbnRIYW5kbGVyKSB7
CiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY29u
dGV4dG1lbnUiLCB0aGlzLl9ib3VuZENvbnRleHRNZW51RXZlbnRIYW5kbGVyLCB0cnVlKTsKICAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLl9ib3VuZENvbnRleHRNZW51RXZlbnRIYW5kbGVyOwogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnJldmVhbDogZnVuY3Rpb24oKQorICAgIG9u
cmV2ZWFsKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCiAgICAgICAg
ICAgICB0aGlzLl9saXN0SXRlbU5vZGUuc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGNhbGxGaXJzdEFuY2VzdG9y
RnVuY3Rpb246IGZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgYXJncykKKyAgICBjYWxsRmlyc3RBbmNl
c3RvckZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgYXJncykKICAgICB7CiAgICAgICAgIC8vIENhbGwg
dGhlIGZpcnN0IGFuY2VzdG9yIHRoYXQgaW1wbGVtZW50cyBhIGZ1bmN0aW9uIG5hbWVkIGZ1bmN0
aW9uTmFtZSAoaWYgYW55KS4KICAgICAgICAgdmFyIGN1cnJlbnROb2RlID0gdGhpcy5wYXJlbnQ7
CkBAIC0yOTQsMTEgKzI3NywxMSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5wYXJl
bnQ7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9j
cmVhdGVFbGVtZW50c0lmTmVlZGVkOiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZUVsZW1lbnRzSWZO
ZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NyZWF0ZWRFbGVtZW50cykKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTMyMSw5ICszMDQsOSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdGl0bGVzRWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9tYWluVGl0bGVFbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9jcmVhdGVk
RWxlbWVudHMgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX2NyZWF0ZVN1YnRpdGxlRWxl
bWVudElmTmVlZGVkOiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZVN1YnRpdGxlRWxlbWVudElmTmVl
ZGVkKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zdWJ0aXRsZUVsZW1lbnQpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0zMzEsOSArMzE0LDkgQEAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3N1YnRpdGxlRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgdGhpcy5fc3VidGl0bGVFbGVt
ZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU3VidGl0bGVF
bGVtZW50U3R5bGVDbGFzc05hbWU7CiAgICAgICAgIHRoaXMuX3RpdGxlc0VsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fc3VidGl0bGVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRh
dGVUaXRsZUVsZW1lbnRzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVRpdGxlRWxlbWVudHMoKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jcmVhdGVkRWxlbWVudHMpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0zNzcsOSArMzYwLDkgQEAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdGhpcy5f
bGlzdEl0ZW1Ob2RlLnRpdGxlID0gc3VidGl0bGVUZXh0OwogICAgICAgICB9Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdXBkYXRlU3RhdHVzRWxlbWVudDogZnVuY3Rpb24oKQorICAgIF91cGRhdGVT
dGF0dXNFbGVtZW50KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc3RhdHVzRWxlbWVudCkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5NCwzICszNzcsMTcgQEAgV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9zdGF0dXNF
bGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fc3RhdHVzOwogICAgIH0KIH07CisKK1dlYkluc3Bl
Y3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuRGlzY2xvc3VyZUJ1dHRvblN0eWxlQ2xhc3NOYW1lID0g
ImRpc2Nsb3N1cmUtYnV0dG9uIjsKK1dlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuSWNv
bkVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKK1dlYkluc3BlY3Rvci5HZW5lcmFsVHJl
ZUVsZW1lbnQuU3RhdHVzRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInN0YXR1cyI7CitXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlRpdGxlc0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ0
aXRsZXMiOworV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5NYWluVGl0bGVFbGVtZW50
U3R5bGVDbGFzc05hbWUgPSAidGl0bGUiOworV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5TdWJ0aXRsZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzdWJ0aXRsZSI7CitXZWJJbnNwZWN0
b3IuR2VuZXJhbFRyZWVFbGVtZW50Lk5vU3VidGl0bGVTdHlsZUNsYXNzTmFtZSA9ICJuby1zdWJ0
aXRsZSI7CitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlNtYWxsU3R5bGVDbGFzc05h
bWUgPSAic21hbGwiOworV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5Ud29MaW5lU3R5
bGVDbGFzc05hbWUgPSAidHdvLWxpbmUiOworCitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVt
ZW50LkV2ZW50ID0geworICAgIE1haW5UaXRsZURpZENoYW5nZTogImdlbmVyYWwtdHJlZS1lbGVt
ZW50LW1haW4tdGl0bGUtZGlkLWNoYW5nZSIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJh
bFRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcwppbmRleCBkYjRhOTViLi40YTFkZTA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFs
VHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDIyICsyMywyMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50ID0gZnVuY3Rpb24o
Z2VuZXJhbFRyZWVFbGVtZW50LCByZXByZXNlbnRlZE9iamVjdCkgewotICAgIFdlYkluc3BlY3Rv
ci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LmNhbGwodGhpcywgZ2VuZXJhbFRyZWVFbGVtZW50
Lm1haW5UaXRsZSwgZ2VuZXJhbFRyZWVFbGVtZW50LmNsYXNzTmFtZXMsIHJlcHJlc2VudGVkT2Jq
ZWN0IHx8IGdlbmVyYWxUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICB0aGlz
Ll9nZW5lcmFsVHJlZUVsZW1lbnQgPSBnZW5lcmFsVHJlZUVsZW1lbnQ7Ci0gICAgZ2VuZXJhbFRy
ZWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5FdmVudC5NYWluVGl0bGVEaWRDaGFuZ2UsIHRoaXMuX21haW5UaXRsZURpZENoYW5nZSwgdGhp
cyk7Ci19OworV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQgPSBj
bGFzcyBHZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9y
LkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihnZW5lcmFsVHJl
ZUVsZW1lbnQsIHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIoZ2VuZXJh
bFRyZWVFbGVtZW50Lm1haW5UaXRsZSwgZ2VuZXJhbFRyZWVFbGVtZW50LmNsYXNzTmFtZXMsIHJl
cHJlc2VudGVkT2JqZWN0IHx8IGdlbmVyYWxUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCk7
CiAKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBh
dGhDb21wb25lbnQsCisgICAgICAgIHRoaXMuX2dlbmVyYWxUcmVlRWxlbWVudCA9IGdlbmVyYWxU
cmVlRWxlbWVudDsKKyAgICAgICAgZ2VuZXJhbFRyZWVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5FdmVudC5NYWluVGl0bGVEaWRDaGFuZ2Us
IHRoaXMuX21haW5UaXRsZURpZENoYW5nZSwgdGhpcyk7CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgZ2VuZXJhbFRyZWVFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9nZW5lcmFsVHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJldmlv
dXNTaWJsaW5nKCkKICAgICB7CkBAIC01MCw3ICs1MCw3IEBAIFdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
biBudWxsOwogCiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxl
bWVudFBhdGhDb21wb25lbnQocHJldmlvdXNTaWJsaW5nKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBuZXh0U2libGluZygpCiAgICAgewpAQCAtNjIsMTQgKzYyLDEyIEBAIFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkdlbmVy
YWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQobmV4dFNpYmxpbmcpOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX21haW5UaXRsZURpZENoYW5nZTogZnVuY3Rpb24oZXZl
bnQpCisgICAgX21haW5UaXRsZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
ZGlzcGxheU5hbWUgPSB0aGlzLl9nZW5lcmFsVHJlZUVsZW1lbnQubWFpblRpdGxlOwogICAgIH0K
IH07Ci0KLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9HZW5lcmljUmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmlu
ZGV4IDJlYTg3MzguLmJjYTdiNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyaWNSZXNvdXJjZUNv
bnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywxNSArMjMsMTAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuR2VuZXJpY1Jlc291cmNlQ29udGVudFZpZXcg
PSBmdW5jdGlvbihyZXNvdXJjZSkKK1dlYkluc3BlY3Rvci5HZW5lcmljUmVzb3VyY2VDb250ZW50
VmlldyA9IGNsYXNzIEdlbmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogewotICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LmNhbGwo
dGhpcywgcmVzb3VyY2UsIFdlYkluc3BlY3Rvci5HZW5lcmljUmVzb3VyY2VDb250ZW50Vmlldy5T
dHlsZUNsYXNzTmFtZSk7CisgICAgY29uc3RydWN0b3IocmVzb3VyY2UpCisgICAgeworICAgICAg
ICBzdXBlcihyZXNvdXJjZSwgImdlbmVyaWMiKTsKKyAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3Iu
R2VuZXJpY1Jlc291cmNlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZ2VuZXJpYyI7Ci0K
LVdlYkluc3BlY3Rvci5HZW5lcmljUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5HZW5lcmljUmVzb3VyY2VDb250ZW50Vmlldwot
fTsKLQotV2ViSW5zcGVjdG9yLkdlbmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Hb1Rv
TGluZURpYWxvZy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0dvVG9MaW5lRGlhbG9nLmpzCmluZGV4IGY1ZjdkNmQuLmRjNDBjM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5lRGlhbG9nLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dvVG9MaW5l
RGlhbG9nLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw1MCArMjMsNDMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cgPSBmdW5jdGlvbigpCitX
ZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cgPSBjbGFzcyBHb1RvTGluZURpYWxvZyBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEg
V2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBX
ZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cuU3R5bGVDbGFzc05hbWU7CisgICAgY29uc3Ry
dWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHZhciBmaWVsZCA9IHRoaXMu
X2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAg
ICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImdvLXRvLWxpbmUtZGlhbG9nIjsKIAotICAg
IHRoaXMuX2lucHV0ID0gZmllbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW5wdXQiKSk7Ci0gICAgdGhpcy5faW5wdXQudHlwZSA9ICJ0ZXh0IjsKLSAgICB0aGlzLl9pbnB1
dC5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGluZSBOdW1iZXIiKTsKLSAg
ICB0aGlzLl9pbnB1dC5zcGVsbGNoZWNrID0gZmFsc2U7CisgICAgICAgIHZhciBmaWVsZCA9IHRo
aXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOwog
Ci0gICAgdGhpcy5fY2xlYXJJY29uID0gZmllbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaW1nIikpOworICAgICAgICB0aGlzLl9pbnB1dCA9IGZpZWxkLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpOworICAgICAgICB0aGlzLl9pbnB1dC50
eXBlID0gInRleHQiOworICAgICAgICB0aGlzLl9pbnB1dC5wbGFjZWhvbGRlciA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTGluZSBOdW1iZXIiKTsKKyAgICAgICAgdGhpcy5faW5wdXQuc3BlbGxj
aGVjayA9IGZhbHNlOwogCi0gICAgdGhpcy5faW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQi
LCB0aGlzKTsKLSAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhp
cyk7Ci0gICAgdGhpcy5faW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMpOwotICAg
IHRoaXMuX2NsZWFySWNvbi5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzKTsKLSAg
ICB0aGlzLl9jbGVhckljb24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzKTsKKyAgICAg
ICAgdGhpcy5fY2xlYXJJY29uID0gZmllbGQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiaW1nIikpOwogCi0gICAgdGhpcy5fZGlzbWlzc2luZyA9IGZhbHNlOwotfTsKLQotV2Vi
SW5zcGVjdG9yLkdvVG9MaW5lRGlhbG9nLlN0eWxlQ2xhc3NOYW1lID0gImdvLXRvLWxpbmUtZGlh
bG9nIjsKLVdlYkluc3BlY3Rvci5Hb1RvTGluZURpYWxvZy5Ob25FbXB0eUNsYXNzTmFtZSA9ICJu
b24tZW1wdHkiOworICAgICAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIs
IHRoaXMpOworICAgICAgICB0aGlzLl9pbnB1dC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwg
dGhpcyk7CisgICAgICAgIHRoaXMuX2lucHV0LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlz
KTsKKyAgICAgICAgdGhpcy5fY2xlYXJJY29uLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIs
IHRoaXMpOworICAgICAgICB0aGlzLl9jbGVhckljb24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLkdvVG9MaW5lRGlhbG9nLnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkdvVG9MaW5lRGlhbG9nLAotCi0gICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fZGlzbWlz
c2luZyA9IGZhbHNlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgcHJlc2VudDogZnVu
Y3Rpb24ocGFyZW50KQorICAgIHByZXNlbnQocGFyZW50KQogICAgIHsKICAgICAgICAgcGFyZW50
LmFwcGVuZENoaWxkKHRoaXMuX2VsZW1lbnQpOwogICAgICAgICB0aGlzLl9pbnB1dC5mb2N1cygp
OwogICAgICAgICB0aGlzLl9jbGVhcigpOwotICAgIH0sCisgICAgfQogCi0gICAgZGlzbWlzczog
ZnVuY3Rpb24oKQorICAgIGRpc21pc3MoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2Rpc21p
c3NpbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04MywxMSArNzYsMTEgQEAgV2ViSW5zcGVj
dG9yLkdvVG9MaW5lRGlhbG9nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZGVsZWdh
dGUuZ29Ub0xpbmVEaWFsb2dXYXNEaXNtaXNzZWQodGhpcyk7CiAKICAgICAgICAgdGhpcy5fZGlz
bWlzc2luZyA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAg
ICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlRXZlbnQoZXZlbnQpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICAgICAgY2FzZSAiaW5wdXQi
OgpAQCAtMTA2LDE5ICs5OSwxOSBAQCBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2tFdmVudChldmVudCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX2hhbmRsZUlucHV0RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVJ
bnB1dEV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2lucHV0LnZhbHVlID09
PSAiIikKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNw
ZWN0b3IuR29Ub0xpbmVEaWFsb2cuTm9uRW1wdHlDbGFzc05hbWUpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkdvVG9M
aW5lRGlhbG9nLk5vbkVtcHR5Q2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5k
bGVLZXlkb3duRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVLZXlkb3duRXZlbnQo
ZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZS5rZXlDb2RlKSB7CiAgICAgICAgICAgICBpZiAo
dGhpcy5faW5wdXQudmFsdWUgPT09ICIiKQpAQCAtMTQxLDI5ICsxMzQsMzEgQEAgV2ViSW5zcGVj
dG9yLkdvVG9MaW5lRGlhbG9nLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2lucHV0
LnNlbGVjdCgpOwogICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmJlZXAoKTsKICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZUJsdXJFdmVudDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX2hhbmRsZUJsdXJFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
ZGlzbWlzcygpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZU1vdXNlZG93bkV2ZW50OiBm
dW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlTW91c2Vkb3duRXZlbnQoZXZlbnQpCiAgICAgewog
ICAgICAgICB0aGlzLl9pbnB1dC5zZWxlY3QoKTsKICAgICAgICAgLy8gVGhpcyBlbnN1cmVzIHdl
IGRvbid0IGdldCBhICJibHVyIiBldmVudCB0cmlnZ2VyZWQgZm9yIHRoZSB0ZXh0IGZpZWxkCiAg
ICAgICAgIC8vIHdoaWNoIHdvdWxkIGVuZCB1cCBkaW1pc3NpbmcgdGhlIGRpYWxvZywgd2hpY2gg
aXMgbm90IHRoZSBpbnRlbnQuCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfaGFuZGxlQ2xpY2tFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2hhbmRsZUNsaWNrRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9jbGVhcigpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2NsZWFyOiBmdW5jdGlvbigpCisgICAgX2NsZWFyKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2lucHV0LnZhbHVlID0gIiI7CiAgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cuTm9uRW1wdHlD
bGFzc05hbWUpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5Hb1RvTGluZURpYWxvZy5Ob25F
bXB0eUNsYXNzTmFtZSA9ICJub24tZW1wdHkiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR3JhZGllbnRTbGlkZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVudFNsaWRlci5qcwppbmRleCBk
ZDQxMzczLi5jOGU1OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9HcmFkaWVudFNsaWRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9HcmFkaWVudFNsaWRlci5qcwpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDMwICsyNiwyMyBA
QAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIgPSBmdW5j
dGlvbihkZWxlZ2F0ZSkKK1dlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlciA9IGNsYXNzIEdyYWRp
ZW50U2xpZGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIHRoaXMuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKLSAgICAKLSAgICB0aGlzLl9lbGVtZW50ID0gbnVsbDsKLSAgICB0aGlz
Ll9zdG9wcyA9IFtdOwotICAgIHRoaXMuX2tub2JzID0gW107Ci0gICAgCi0gICAgdGhpcy5fc2Vs
ZWN0ZWRLbm9iID0gbnVsbDsKLSAgICB0aGlzLl9jYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJjYW52YXMiKTsKLQotICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2MgPSBuZXcgV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuS2V5LkVzY2FwZSk7Ci19Ci0KLVdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5XaWR0
aCA9IDIzODsKLVdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5IZWlnaHQgPSAxOTsKKyAgICBj
b25zdHJ1Y3RvcihkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3Bl
Y3Rvci5HcmFkaWVudFNsaWRlci5TdHlsZUNsYXNzTmFtZSA9ICJncmFkaWVudC1zbGlkZXIiOwot
V2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLkFkZEFyZWFDbGFzc05hbWUgPSAiYWRkLWFyZWEi
OwotV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLkRldGFjaGluZ0NsYXNzTmFtZSA9ICJkZXRh
Y2hpbmciOwotV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLlNoYWRvd0NsYXNzTmFtZSA9ICJz
aGFkb3ciOworICAgICAgICB0aGlzLmRlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIAorICAg
ICAgICB0aGlzLl9lbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc3RvcHMgPSBbXTsKKyAg
ICAgICAgdGhpcy5fa25vYnMgPSBbXTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX3NlbGVjdGVk
S25vYiA9IG51bGw7CisgICAgICAgIHRoaXMuX2NhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImNhbnZhcyIpOwogCi1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIsCisgICAgICAg
IHRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKQEAgLTU3LDkgKzUwLDkgQEAgV2ViSW5zcGVjdG9yLkdy
YWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZWxl
bWVudCkgewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNw
ZWN0b3IuR3JhZGllbnRTbGlkZXIuU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTmFtZSA9ICJncmFkaWVudC1zbGlkZXIiOwogICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jYW52YXMpOwotICAgICAgICAgICAgCisKICAgICAg
ICAgICAgIHRoaXMuX2FkZEFyZWEgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgICAgIHRoaXMuX2FkZEFyZWEuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcyk7CiAgICAgICAgICAgICB0aGlzLl9hZGRBcmVh
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMpOwpAQCAtNjgsMjggKzYxLDI4IEBA
IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLl9hZGRBcmVhLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5BZGRB
cmVhQ2xhc3NOYW1lOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50Owot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0b3BzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zdG9wczsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdG9wcyhzdG9wcykKICAgICB7
CiAgICAgICAgIHRoaXMuX3N0b3BzID0gc3RvcHM7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlU3Rv
cHMoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3RlZFN0b3AoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkS25vYiA/IHRoaXMuX3NlbGVjdGVkS25vYi5zdG9w
IDogbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgaGFuZGxl
RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUV2ZW50KGV2ZW50KQogICAgIHsKICAg
ICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7CiAgICAgICAgIGNhc2UgIm1vdXNlb3ZlciI6CkBA
IC0xMDUsOSArOTgsOSBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2soZXZlbnQpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUtleWRvd25FdmVudDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlS2V5ZG93bkV2ZW50KGV2ZW50KQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9rZXlib2FyZFNob3J0Y3V0RXNjLm1hdGNoZXNFdmVudChldmVudCkg
fHwgIXRoaXMuX3NlbGVjdGVkS25vYiB8fCAhdGhpcy5fc2VsZWN0ZWRLbm9iLnNlbGVjdGVkKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTE1LDIxICsxMDgsMjEgQEAgV2ViSW5zcGVj
dG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRL
bm9iLnNlbGVjdGVkID0gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBrbm9iWERpZENoYW5nZTogZnVuY3Rpb24oa25vYikKKyAgICBrbm9iWERpZENo
YW5nZShrbm9iKQogICAgIHsKICAgICAgICAga25vYi5zdG9wLm9mZnNldCA9IGtub2IueCAvIFdl
Ykluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5XaWR0aDsKICAgICAgICAgdGhpcy5fc29ydFN0b3Bz
KCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNhbnZhcygpOwotICAgIH0sCisgICAgfQogCi0gICAg
a25vYkNhbkRldGFjaDogZnVuY3Rpb24oa25vYikKKyAgICBrbm9iQ2FuRGV0YWNoKGtub2IpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fa25vYnMubGVuZ3RoID4gMjsKLSAgICB9LAorICAg
IH0KIAotICAgIGtub2JXaWxsRGV0YWNoOiBmdW5jdGlvbihrbm9iKQorICAgIGtub2JXaWxsRGV0
YWNoKGtub2IpCiAgICAgewogICAgICAgICBrbm9iLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuRGV0YWNoaW5nQ2xhc3NOYW1lKTsKICAgICAgICAgCkBA
IC0xMzcsOSArMTMwLDkgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fa25vYnMucmVtb3ZlKGtub2IpOwogICAgICAgICB0aGlzLl9zb3J0
U3RvcHMoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlQ2FudmFzKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBrbm9iU2VsZWN0aW9uQ2hhbmdlZDogZnVuY3Rpb24oa25vYikKKyAgICBrbm9iU2VsZWN0
aW9uQ2hhbmdlZChrbm9iKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkS25vYiAm
JiB0aGlzLl9zZWxlY3RlZEtub2IgIT09IGtub2IgJiYga25vYi5zZWxlY3RlZCkKICAgICAgICAg
ICAgIHRoaXMuX3NlbGVjdGVkS25vYi5zZWxlY3RlZCA9IGZhbHNlOwpAQCAtMTUzLDMwICsxNDYs
MzAgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5hZGRXaW5kb3dLZXlkb3duTGlzdGVuZXIodGhpcyk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZW1vdmVXaW5kb3dLZXlkb3duTGlzdGVu
ZXIodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaGFuZGxl
TW91c2VvdmVyOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlTW91c2VvdmVyKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlU2hhZG93S25vYihldmVudCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfaGFuZGxlTW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxl
TW91c2Vtb3ZlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlU2hhZG93S25vYihl
dmVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTW91c2VvdXQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9oYW5kbGVNb3VzZW91dChldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5fc2hhZG93S25vYikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zaGFk
b3dLbm9iLmVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9zaGFkb3dLbm9i
OwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZUNsaWNrOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfaGFuZGxlQ2xpY2soZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVTaGFkb3dL
bm9iKGV2ZW50KTsKIApAQCAtMTkyLDkgKzE4NSw5IEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudFNs
aWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2tub2JzW3RoaXMuX3N0b3BzLmluZGV4
T2Yoc3RvcCldLnNlbGVjdGVkID0gdHJ1ZTsKIAogICAgICAgICBkZWxldGUgdGhpcy5fc2hhZG93
S25vYjsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVTaGFkb3dLbm9iOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfdXBkYXRlU2hhZG93S25vYihldmVudCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fc2hhZG93S25vYikgewogICAgICAgICAgICAgdGhpcy5fc2hhZG93S25vYiA9IG5ldyBX
ZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iKHRoaXMpOwpAQCAtMjA2LDIyICsxOTksMjIg
QEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2
YXIgY29sb3JEYXRhID0gdGhpcy5fY2FudmFzLmdldENvbnRleHQoIjJkIikuZ2V0SW1hZ2VEYXRh
KHRoaXMuX3NoYWRvd0tub2IueCAtIDEsIDAsIDEsIDEpLmRhdGE7CiAgICAgICAgIHRoaXMuX3No
YWRvd0tub2Iud2VsbENvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3Iu
Q29sb3IuRm9ybWF0LlJHQiwgW2NvbG9yRGF0YVswXSwgY29sb3JEYXRhWzFdLCBjb2xvckRhdGFb
Ml0sIGNvbG9yRGF0YVszXSAvIDI1NV0pOwotICAgIH0sCisgICAgfQogCi0gICAgX3NvcnRTdG9w
czogZnVuY3Rpb24oKQorICAgIF9zb3J0U3RvcHMoKQogICAgIHsKICAgICAgICAgdGhpcy5fc3Rv
cHMuc29ydChmdW5jdGlvbihhLCBiKSB7CiAgICAgICAgICAgICByZXR1cm4gYS5vZmZzZXQgLSBi
Lm9mZnNldDsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3RvcHM6
IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlU3RvcHMoKQogICAgIHsKICAgICAgICAgdGhpcy5fdXBk
YXRlQ2FudmFzKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUtub2JzKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfdXBkYXRlQ2FudmFzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUNhbnZhcygpCiAg
ICAgewogICAgICAgICB2YXIgdyA9IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5XaWR0aDsK
ICAgICAgICAgdmFyIGggPSBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuSGVpZ2h0OwpAQCAt
MjQwLDkgKzIzMyw5IEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuZ3Jh
ZGllbnRTbGlkZXJTdG9wc0RpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRo
aXMuZGVsZWdhdGUuZ3JhZGllbnRTbGlkZXJTdG9wc0RpZENoYW5nZSh0aGlzKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF91cGRhdGVLbm9iczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVLbm9icygp
CiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWRTdG9wID0gdGhpcy5fc2VsZWN0ZWRLbm9iID8g
dGhpcy5fc2VsZWN0ZWRLbm9iLnN0b3AgOiBudWxsOwogICAgICAgICAKQEAgLTI2NCw4NyArMjU3
LDkxIEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICBrbm9iLnNlbGVjdGVkID0gc3RvcCA9PT0gc2VsZWN0ZWRTdG9wOwogICAgICAgICB9CiAg
ICAgfQotfQorfTsKKworV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLldpZHRoID0gMjM4Owor
V2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLkhlaWdodCA9IDE5OwogCi1XZWJJbnNwZWN0b3Iu
R3JhZGllbnRTbGlkZXJLbm9iID0gZnVuY3Rpb24oZGVsZWdhdGUpCitXZWJJbnNwZWN0b3IuR3Jh
ZGllbnRTbGlkZXIuQWRkQXJlYUNsYXNzTmFtZSA9ICJhZGQtYXJlYSI7CitXZWJJbnNwZWN0b3Iu
R3JhZGllbnRTbGlkZXIuRGV0YWNoaW5nQ2xhc3NOYW1lID0gImRldGFjaGluZyI7CitXZWJJbnNw
ZWN0b3IuR3JhZGllbnRTbGlkZXIuU2hhZG93Q2xhc3NOYW1lID0gInNoYWRvdyI7CisKK1dlYklu
c3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IgPSBjbGFzcyBHcmFkaWVudFNsaWRlcktub2IgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgdGhpcy5feCA9IDA7Ci0gICAgdGhpcy5f
eSA9IDA7Ci0gICAgdGhpcy5fc3RvcCA9IG51bGw7Ci0gICAgCi0gICAgdGhpcy5kZWxlZ2F0ZSA9
IGRlbGVnYXRlOwotICAgIAotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5H
cmFkaWVudFNsaWRlcktub2IuU3R5bGVDbGFzc05hbWU7CisgICAgY29uc3RydWN0b3IoZGVsZWdh
dGUpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgLy8gQ2hlY2tlcnMgcGF0dGVybi4K
LSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlt
ZyIpKTsKKyAgICAgICAgdGhpcy5feCA9IDA7CisgICAgICAgIHRoaXMuX3kgPSAwOworICAgICAg
ICB0aGlzLl9zdG9wID0gbnVsbDsKIAotICAgIHRoaXMuX3dlbGwgPSB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKKyAgICAgICAgdGhpcy5k
ZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCi0gICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZWRvd24iLCB0aGlzKTsKLX07CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUg
PSAiZ3JhZGllbnQtc2xpZGVyLWtub2IiOwogCi1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJL
bm9iLlN0eWxlQ2xhc3NOYW1lID0gImdyYWRpZW50LXNsaWRlci1rbm9iIjsKLVdlYkluc3BlY3Rv
ci5HcmFkaWVudFNsaWRlcktub2IuU2VsZWN0ZWRDbGFzc05hbWUgPSAic2VsZWN0ZWQiOwotV2Vi
SW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYi5GYWRlT3V0Q2xhc3NOYW1lID0gImZhZGUtb3V0
IjsKKyAgICAgICAgLy8gQ2hlY2tlcnMgcGF0dGVybi4KKyAgICAgICAgdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CisKKyAgICAgICAgdGhp
cy5fd2VsbCA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2IikpOwogCi1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYiwKKyAg
ICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzKTsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0b3Ao
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0b3A7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBzZXQgc3RvcChzdG9wKQogICAgIHsKICAgICAgICAgdGhpcy53ZWxsQ29sb3IgPSBzdG9wLmNv
bG9yOwogICAgICAgICB0aGlzLl9zdG9wID0gc3RvcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCB4KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl94OwotICAgIH0sCisgICAgfQogICAg
IAogICAgIHNldCB4KHgpIHsKICAgICAgICAgdGhpcy5feCA9IHg7CiAgICAgICAgIHRoaXMuX3Vw
ZGF0ZVRyYW5zZm9ybSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHkoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3g7Ci0gICAgfSwKKyAgICB9CiAgICAgCiAgICAgc2V0IHkoeSkg
ewogICAgICAgICB0aGlzLl95ID0geTsKICAgICAgICAgdGhpcy5fdXBkYXRlVHJhbnNmb3JtKCk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgd2VsbENvbG9yKGNvbG9yKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3dlbGxDb2xvcjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB3ZWxs
Q29sb3IoY29sb3IpCiAgICAgewogICAgICAgICB0aGlzLl93ZWxsQ29sb3IgPSBjb2xvcjsKICAg
ICAgICAgdGhpcy5fd2VsbC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBjb2xvcjsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBzZWxlY3RlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25v
Yi5TZWxlY3RlZENsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0ZWQo
c2VsZWN0ZWQpCiAgICAgewpAQCAtMzU1LDExICszNTIsMTEgQEAgV2ViSW5zcGVjdG9yLkdyYWRp
ZW50U2xpZGVyS25vYi5wcm90b3R5cGUgPSB7CiAgICAgICAgIAogICAgICAgICBpZiAodGhpcy5k
ZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5rbm9iU2VsZWN0aW9uQ2hhbmdlZCA9PT0g
ImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUua25vYlNlbGVjdGlvbkNoYW5n
ZWQodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGhhbmRs
ZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVFdmVudChldmVudCkKICAgICB7CiAg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdh
dGlvbigpOwpAQCAtMzc4LDExICszNzUsMTEgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVy
S25vYi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9oYW5kbGVUcmFuc2l0aW9uRW5k
KGV2ZW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKLSAgICBfaGFuZGxlTW91c2Vkb3duOiBmdW5jdGlvbihldmVudCkK
KyAgICBfaGFuZGxlTW91c2Vkb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fbW92ZWQg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5fZGV0YWNoaW5nID0gZmFsc2U7CkBAIC0zOTMsOSArMzkw
LDkgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYi5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3N0YXJ0WCA9IHRoaXMueDsKICAgICAgICAgdGhpcy5fc3RhcnRNb3VzZVggPSBl
dmVudC5wYWdlWDsKICAgICAgICAgdGhpcy5fc3RhcnRNb3VzZVkgPSBldmVudC5wYWdlWTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZW1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9oYW5kbGVNb3VzZW1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdyA9IFdlYkluc3Bl
Y3Rvci5HcmFkaWVudFNsaWRlci5XaWR0aDsKIApAQCAtNDIxLDkgKzQxOCw5IEBAIFdlYkluc3Bl
Y3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy55
ID0gZXZlbnQucGFnZVkgLSB0aGlzLl9zdGFydE1vdXNlWTsKICAgICAgICAgZWxzZSBpZiAodGhp
cy5kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5rbm9iWERpZENoYW5nZSA9PT0gImZ1
bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUua25vYlhEaWRDaGFuZ2UodGhpcyk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTW91c2V1cDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2hhbmRsZU1vdXNldXAoZXZlbnQpCiAgICAgewogICAgICAgICB3aW5kb3cucmVtb3ZlRXZl
bnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcywgdHJ1ZSk7CiAgICAgICAgIHdpbmRvdy5yZW1v
dmVFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcywgdHJ1ZSk7CkBAIC00MzQsMTcgKzQzMSwy
MCBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5f
bW92ZWQpCiAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gIXRoaXMuc2VsZWN0ZWQ7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfaGFuZGxlVHJhbnNpdGlvbkVuZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2hhbmRsZVRyYW5zaXRpb25FbmQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmVsZW1l
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigidHJhbnNpdGlvbmVuZCIsIHRoaXMpOwogICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJL
bm9iLkZhZGVPdXRDbGFzc05hbWUpOwogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlVHJhbnNmb3JtOiBmdW5jdGlvbigpCisgICAgX3Vw
ZGF0ZVRyYW5zZm9ybSgpCiAgICAgewogICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2Via2l0
VHJhbnNmb3JtID0gInRyYW5zbGF0ZTNkKCIgKyB0aGlzLl94ICsgInB4LCAiICsgdGhpcy5feSAr
ICJweCwgMCkiOwogICAgIH0KLX0KK307CisKK1dlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktu
b2IuU2VsZWN0ZWRDbGFzc05hbWUgPSAic2VsZWN0ZWQiOworV2ViSW5zcGVjdG9yLkdyYWRpZW50
U2xpZGVyS25vYi5GYWRlT3V0Q2xhc3NOYW1lID0gImZhZGUtb3V0IjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhD
b21wb25lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9I
aWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LmpzCmluZGV4IGFkMTMzYTIuLmNmYjRmMGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNo
aWNhbFBhdGhDb21wb25lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5qcwpAQCAtMjMsMTA0ICsyMyw4
MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50ID0gZnVuY3Rpb24oZGlzcGxheU5hbWUsIHN0
eWxlQ2xhc3NOYW1lcywgcmVwcmVzZW50ZWRPYmplY3QsIHRleHRPbmx5LCBzaG93U2VsZWN0b3JB
cnJvd3MpCitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudCA9IGNsYXNzIEhp
ZXJhcmNoaWNhbFBhdGhDb21wb25lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0g
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQoZGlzcGxheU5hbWUpOwotICAgIGNvbnNvbGUuYXNz
ZXJ0KHN0eWxlQ2xhc3NOYW1lcyk7Ci0KLSAgICB0aGlzLl9yZXByZXNlbnRlZE9iamVjdCA9IHJl
cHJlc2VudGVkT2JqZWN0IHx8IG51bGw7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TdHlsZUNsYXNzTmFtZTsKKyAgICBj
b25zdHJ1Y3RvcihkaXNwbGF5TmFtZSwgc3R5bGVDbGFzc05hbWVzLCByZXByZXNlbnRlZE9iamVj
dCwgdGV4dE9ubHksIHNob3dTZWxlY3RvckFycm93cykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CiAKLSAgICBpZiAoIShzdHlsZUNsYXNzTmFtZXMgaW5zdGFuY2VvZiBBcnJheSkpCi0gICAgICAg
IHN0eWxlQ2xhc3NOYW1lcyA9IFtzdHlsZUNsYXNzTmFtZXNdOworICAgICAgICBjb25zb2xlLmFz
c2VydChkaXNwbGF5TmFtZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHN0eWxlQ2xhc3NOYW1l
cyk7CiAKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlQ2xhc3NOYW1lcy5sZW5ndGg7ICsr
aSkgewotICAgICAgICBpZiAoIXN0eWxlQ2xhc3NOYW1lc1tpXSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoc3R5bGVDbGFzc05hbWVz
W2ldKTsKLSAgICB9CisgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50
ZWRPYmplY3QgfHwgbnVsbDsKIAotICAgIGlmICghdGV4dE9ubHkpIHsKLSAgICAgICAgdGhpcy5f
aWNvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKLSAgICAgICAgdGhp
cy5faWNvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhD
b21wb25lbnQuSWNvbkVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLSAgICAgICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9pY29uRWxlbWVudCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENv
bXBvbmVudC5UZXh0T25seVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTmFtZSA9ICJoaWVyYXJjaGljYWwtcGF0aC1jb21wb25lbnQiOwogCi0gICAgdGhpcy5fdGl0
bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fdGl0
bGVFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9u
ZW50LlRpdGxlRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fdGl0bGVFbGVtZW50KTsKKyAgICAgICAgaWYgKCEoc3R5bGVDbGFzc05hbWVz
IGluc3RhbmNlb2YgQXJyYXkpKQorICAgICAgICAgICAgc3R5bGVDbGFzc05hbWVzID0gW3N0eWxl
Q2xhc3NOYW1lc107CiAKLSAgICB0aGlzLl90aXRsZUNvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fdGl0bGVDb250ZW50RWxlbWVudC5jbGFz
c05hbWUgPSBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5UaXRsZUNvbnRl
bnRFbGVtZW50U3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fdGl0bGVFbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX3RpdGxlQ29udGVudEVsZW1lbnQpOwotCi0gICAgdGhpcy5fc2VwYXJhdG9yRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3NlcGFyYXRv
ckVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25l
bnQuU2VwYXJhdG9yRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fc2VwYXJhdG9yRWxlbWVudCk7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc3R5bGVDbGFzc05hbWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoIXN0
eWxlQ2xhc3NOYW1lc1tpXSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChzdHlsZUNsYXNzTmFtZXNbaV0pOworICAgICAg
ICB9CiAKLSAgICB0aGlzLl9zZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c2VsZWN0Iik7Ci0gICAgdGhpcy5fc2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZW92ZXIiLCB0aGlzLl9zZWxlY3RFbGVtZW50TW91c2VPdmVyLmJpbmQodGhpcykpOwotICAgIHRo
aXMuX3NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCB0aGlzLl9zZWxl
Y3RFbGVtZW50TW91c2VPdXQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fc2VsZWN0RWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9zZWxlY3RFbGVtZW50TW91c2VEb3du
LmJpbmQodGhpcykpOwotICAgIHRoaXMuX3NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2V1cCIsIHRoaXMuX3NlbGVjdEVsZW1lbnRNb3VzZVVwLmJpbmQodGhpcykpOwotICAgIHRo
aXMuX3NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fc2VsZWN0
RWxlbWVudFNlbGVjdGlvbkNoYW5nZWQuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9zZWxlY3RFbGVtZW50KTsKKyAgICAgICAgaWYgKCF0ZXh0T25seSkg
eworICAgICAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbWciKTsKKyAgICAgICAgICAgIHRoaXMuX2ljb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50Lkljb25FbGVtZW50U3R5bGVDbGFzc05h
bWU7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ljb25FbGVt
ZW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGV4dE9ubHlTdHls
ZUNsYXNzTmFtZSk7CiAKLSAgICB0aGlzLl9wcmV2aW91c1NpYmxpbmcgPSBudWxsOwotICAgIHRo
aXMuX25leHRTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5UaXRsZUVs
ZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl90aXRsZUVsZW1lbnQpOwogCi0gICAgdGhpcy5fdHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5n
dGggPSAwOworICAgICAgICB0aGlzLl90aXRsZUNvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3RpdGxlQ29udGVudEVsZW1lbnQuY2xh
c3NOYW1lID0gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGl0bGVDb250
ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fdGl0bGVDb250ZW50RWxlbWVudCk7CiAKLSAgICB0aGlzLnNlbGVjdG9y
QXJyb3dzID0gc2hvd1NlbGVjdG9yQXJyb3dzOwotICAgIHRoaXMuZGlzcGxheU5hbWUgPSBkaXNw
bGF5TmFtZTsKLX07CisgICAgICAgIHRoaXMuX3NlcGFyYXRvckVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fc2VwYXJhdG9yRWxlbWVudC5jbGFz
c05hbWUgPSBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TZXBhcmF0b3JF
bGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fc2VwYXJhdG9yRWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRo
Q29tcG9uZW50LlN0eWxlQ2xhc3NOYW1lID0gImhpZXJhcmNoaWNhbC1wYXRoLWNvbXBvbmVudCI7
Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5IaWRkZW5TdHlsZUNsYXNz
TmFtZSA9ICJoaWRkZW4iOwotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQu
Q29sbGFwc2VkU3R5bGVDbGFzc05hbWUgPSAiY29sbGFwc2VkIjsKLVdlYkluc3BlY3Rvci5IaWVy
YXJjaGljYWxQYXRoQ29tcG9uZW50Lkljb25FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiaWNvbiI7
Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5UZXh0T25seVN0eWxlQ2xh
c3NOYW1lID0gInRleHQtb25seSI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBv
bmVudC5TaG93U2VsZWN0b3JBcnJvd3NTdHlsZUNsYXNzTmFtZSA9ICJzaG93LXNlbGVjdG9yLWFy
cm93cyI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5UaXRsZUVsZW1l
bnRTdHlsZUNsYXNzTmFtZSA9ICJ0aXRsZSI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0
aENvbXBvbmVudC5UaXRsZUNvbnRlbnRFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiY29udGVudCI7
Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TZWxlY3RvckFycm93c0Vs
ZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3Rvci1hcnJvd3MiOwotV2ViSW5zcGVjdG9yLkhp
ZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuU2VwYXJhdG9yRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0g
InNlcGFyYXRvciI7CisgICAgICAgIHRoaXMuX3NlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzZWxlY3QiKTsKKyAgICAgICAgdGhpcy5fc2VsZWN0RWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl9zZWxlY3RFbGVtZW50TW91c2VPdmVyLmJpbmQo
dGhpcykpOworICAgICAgICB0aGlzLl9zZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlb3V0IiwgdGhpcy5fc2VsZWN0RWxlbWVudE1vdXNlT3V0LmJpbmQodGhpcykpOworICAgICAg
ICB0aGlzLl9zZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
X3NlbGVjdEVsZW1lbnRNb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3NlbGVj
dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX3NlbGVjdEVsZW1lbnRN
b3VzZVVwLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9zZWxlY3RFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX3NlbGVjdEVsZW1lbnRTZWxlY3Rpb25DaGFuZ2VkLmJp
bmQodGhpcykpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3NlbGVj
dEVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5NaW5p
bXVtV2lkdGggPSAzMjsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50Lk1p
bmltdW1XaWR0aENvbGxhcHNlZCA9IDI0OwotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhD
b21wb25lbnQuTWluaW11bVdpZHRoRm9yT25lQ2hhcmFjdGVyVHJ1bmNhdGVkVGl0bGUgPSA1NDsK
LVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlNlbGVjdG9yQXJyb3dzV2lk
dGggPSAxMjsKKyAgICAgICAgdGhpcy5fcHJldmlvdXNTaWJsaW5nID0gbnVsbDsKKyAgICAgICAg
dGhpcy5fbmV4dFNpYmxpbmcgPSBudWxsOwogCi1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0
aENvbXBvbmVudC5FdmVudCA9IHsKLSAgICBTaWJsaW5nV2FzU2VsZWN0ZWQ6ICJoaWVyYXJjaGlj
YWwtcGF0aC1jb21wb25lbnQtc2libGluZy13YXMtc2VsZWN0ZWQiLAotICAgIENsaWNrZWQ6ICJo
aWVyYXJjaGljYWwtcGF0aC1jb21wb25lbnQtY2xpY2tlZCIKLX07CisgICAgICAgIHRoaXMuX3Ry
dW5jYXRlZERpc3BsYXlOYW1lTGVuZ3RoID0gMDsKIAotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNh
bFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudCwKKyAgICAgICAgdGhpcy5zZWxlY3RvckFycm93
cyA9IHNob3dTZWxlY3RvckFycm93czsKKyAgICAgICAgdGhpcy5kaXNwbGF5TmFtZSA9IGRpc3Bs
YXlOYW1lOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgcmVwcmVzZW50ZWRPYmplY3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlcHJl
c2VudGVkT2JqZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRpc3BsYXlOYW1lKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5TmFtZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCBkaXNwbGF5TmFtZShuZXdEaXNwbGF5TmFtZSkKICAgICB7CkBAIC0xMzEsMTIgKzEw
OCwxMiBAQCBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX2Rpc3BsYXlOYW1lID0gbmV3RGlzcGxheU5hbWU7CiAKICAgICAg
ICAgdGhpcy5fdXBkYXRlRWxlbWVudFRpdGxlQW5kVGV4dCgpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHRydW5jYXRlZERpc3BsYXlOYW1lTGVuZ3RoKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl90cnVuY2F0ZWREaXNwbGF5TmFtZUxlbmd0aDsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCB0cnVuY2F0ZWREaXNwbGF5TmFtZUxlbmd0aCh0cnVuY2F0ZWREaXNwbGF5TmFtZUxlbmd0
aCkKICAgICB7CkBAIC0xNDgsNyArMTI1LDcgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBh
dGhDb21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90cnVuY2F0ZWREaXNwbGF5
TmFtZUxlbmd0aCA9IHRydW5jYXRlZERpc3BsYXlOYW1lTGVuZ3RoOwogCiAgICAgICAgIHRoaXMu
X3VwZGF0ZUVsZW1lbnRUaXRsZUFuZFRleHQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBt
aW5pbXVtV2lkdGgoKQogICAgIHsKQEAgLTE1Nyw3ICsxMzQsNyBAQCBXZWJJbnNwZWN0b3IuSGll
cmFyY2hpY2FsUGF0aENvbXBvbmVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLnNl
bGVjdG9yQXJyb3dzKQogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5IaWVyYXJjaGlj
YWxQYXRoQ29tcG9uZW50Lk1pbmltdW1XaWR0aCArIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQ
YXRoQ29tcG9uZW50LlNlbGVjdG9yQXJyb3dzV2lkdGg7CiAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5NaW5pbXVtV2lkdGg7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZm9yY2VkV2lkdGgoKQogICAgIHsKQEAgLTE2NSw3ICsxNDIsNyBAQCBX
ZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGlmICh0eXBlb2YgbWF4V2lkdGggPT09ICJzdHJpbmciKQogICAgICAgICAgICAgcmV0dXJu
IHBhcnNlSW50KG1heFdpZHRoKTsKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBzZXQgZm9yY2VkV2lkdGgod2lkdGgpCiAgICAgewpAQCAtMTg0LDEyICsxNjEsMTIg
QEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgid2lkdGgiLCBNYXRo
Lm1heCgxLCB3aWR0aCkgKyAicHgiKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ3aWR0aCIpOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGhpZGRlbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQu
SGlkZGVuU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGhpZGRlbihm
bGFnKQogICAgIHsKQEAgLTE5NywxMiArMTc0LDEyIEBAIFdlYkluc3BlY3Rvci5IaWVyYXJjaGlj
YWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5IaWRk
ZW5TdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVu
dC5IaWRkZW5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29sbGFw
c2VkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250
YWlucyhXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5Db2xsYXBzZWRTdHls
ZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29sbGFwc2VkKGZsYWcpCiAg
ICAgewpAQCAtMjEwLDEyICsxODcsMTIgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhD
b21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkNvbGxhcHNlZFN0
eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkNv
bGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rv
ckFycm93cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
Y29udGFpbnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuU2hvd1NlbGVj
dG9yQXJyb3dzU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlbGVj
dG9yQXJyb3dzKGZsYWcpCiAgICAgewpAQCAtMjMzLDMxICsyMTAsMzEgQEAgV2ViSW5zcGVjdG9y
LkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBh
dGhDb21wb25lbnQuU2hvd1NlbGVjdG9yQXJyb3dzU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcHJldmlvdXNTaWJsaW5nKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9wcmV2aW91c1NpYmxpbmc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgcHJldmlvdXNTaWJsaW5nKG5ld1NsaWJsaW5nKQogICAgIHsKICAgICAgICAgdGhpcy5fcHJl
dmlvdXNTaWJsaW5nID0gbmV3U2xpYmxpbmcgfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBuZXh0U2libGluZygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmV4dFNpYmxp
bmc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgbmV4dFNpYmxpbmcobmV3U2xpYmxpbmcpCiAg
ICAgewogICAgICAgICB0aGlzLl9uZXh0U2libGluZyA9IG5ld1NsaWJsaW5nIHx8IG51bGw7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRlRWxlbWVudFRpdGxl
QW5kVGV4dDogZnVuY3Rpb24oKQorICAgIF91cGRhdGVFbGVtZW50VGl0bGVBbmRUZXh0KCkKICAg
ICB7CiAgICAgICAgIHZhciB0cnVuY2F0ZWREaXNwbGF5TmFtZSA9IHRoaXMuX2Rpc3BsYXlOYW1l
OwogICAgICAgICBpZiAodGhpcy5fdHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5ndGggJiYgdHJ1bmNh
dGVkRGlzcGxheU5hbWUubGVuZ3RoID4gdGhpcy5fdHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5ndGgp
CkBAIC0yNjUsMTYgKzI0MiwxNiBAQCBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBv
bmVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fZWxlbWVudC50aXRsZSA9IHRoaXMu
X2Rpc3BsYXlOYW1lOwogICAgICAgICB0aGlzLl90aXRsZUNvbnRlbnRFbGVtZW50LnRleHRDb250
ZW50ID0gdHJ1bmNhdGVkRGlzcGxheU5hbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRl
U2VsZWN0RWxlbWVudDogZnVuY3Rpb24oKQorICAgIF91cGRhdGVTZWxlY3RFbGVtZW50KCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3NlbGVjdEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAg
ICAgICBmdW5jdGlvbiBjcmVhdGVPcHRpb24oY29tcG9uZW50KQogICAgICAgICB7CiAgICAgICAg
ICAgICB2YXIgb3B0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIp
OwotICAgICAgICAgICAgY29uc3QgbWF4UG9wdXBNZW51TGVuZ3RoID0gMTMwOyAvLyA8cmRhcjov
L3Byb2JsZW0vMTM0NDUzNzQ+IDxzZWxlY3Q+IHdpdGggdmVyeSBsb25nIG9wdGlvbiBoYXMgY2xp
cHBlZCB0ZXh0IGFuZCBwb3B1cCBtZW51IGlzIHN0aWxsIHZlcnkgd2lkZQorICAgICAgICAgICAg
dmFyIG1heFBvcHVwTWVudUxlbmd0aCA9IDEzMDsgLy8gPHJkYXI6Ly9wcm9ibGVtLzEzNDQ1Mzc0
PiA8c2VsZWN0PiB3aXRoIHZlcnkgbG9uZyBvcHRpb24gaGFzIGNsaXBwZWQgdGV4dCBhbmQgcG9w
dXAgbWVudSBpcyBzdGlsbCB2ZXJ5IHdpZGUKICAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQudGV4
dENvbnRlbnQgPSBjb21wb25lbnQuZGlzcGxheU5hbWUubGVuZ3RoIDw9IG1heFBvcHVwTWVudUxl
bmd0aCA/IGNvbXBvbmVudC5kaXNwbGF5TmFtZSA6IGNvbXBvbmVudC5kaXNwbGF5TmFtZS5zdWJz
dHJpbmcoMCwgbWF4UG9wdXBNZW51TGVuZ3RoKSArICJcdTIwMjYiOwogICAgICAgICAgICAgb3B0
aW9uRWxlbWVudC5fcGF0aENvbXBvbmVudCA9IGNvbXBvbmVudDsKICAgICAgICAgICAgIHJldHVy
biBvcHRpb25FbGVtZW50OwpAQCAtMzA3LDM0ICsyODQsNTIgQEAgV2ViSW5zcGVjdG9yLkhpZXJh
cmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fc2Vs
ZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gLTE7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHRoaXMuX3NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IHByZXZpb3VzU2libGluZ0NvdW50
OwotICAgIH0sCisgICAgfQogCi0gICAgX3NlbGVjdEVsZW1lbnRNb3VzZU92ZXI6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9zZWxlY3RFbGVtZW50TW91c2VPdmVyKGV2ZW50KQogICAgIHsKICAgICAg
ICAgaWYgKHR5cGVvZiB0aGlzLm1vdXNlT3ZlciA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAg
IHRoaXMubW91c2VPdmVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2VsZWN0RWxlbWVudE1v
dXNlT3V0OiBmdW5jdGlvbihldmVudCkKKyAgICBfc2VsZWN0RWxlbWVudE1vdXNlT3V0KGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1vdXNlT3V0ID09PSAiZnVuY3Rpb24i
KQogICAgICAgICAgICAgdGhpcy5tb3VzZU91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nl
bGVjdEVsZW1lbnRNb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zZWxlY3RFbGVtZW50
TW91c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0RWxlbWVu
dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NlbGVjdEVsZW1lbnRNb3VzZVVwOiBmdW5jdGlv
bihldmVudCkKKyAgICBfc2VsZWN0RWxlbWVudE1vdXNlVXAoZXZlbnQpCiAgICAgewogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aENvbXBvbmVudC5FdmVudC5DbGlja2VkKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWxl
Y3RFbGVtZW50U2VsZWN0aW9uQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NlbGVjdEVs
ZW1lbnRTZWxlY3Rpb25DaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQu
RXZlbnQuU2libGluZ1dhc1NlbGVjdGVkLCB7cGF0aENvbXBvbmVudDogdGhpcy5fc2VsZWN0RWxl
bWVudFt0aGlzLl9zZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdLl9wYXRoQ29tcG9uZW50fSk7
CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5z
cGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUgPSAi
aGlkZGVuIjsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkNvbGxhcHNl
ZFN0eWxlQ2xhc3NOYW1lID0gImNvbGxhcHNlZCI7CitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aENvbXBvbmVudC5JY29uRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImljb24iOworV2ViSW5z
cGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGV4dE9ubHlTdHlsZUNsYXNzTmFtZSA9
ICJ0ZXh0LW9ubHkiOworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuU2hv
d1NlbGVjdG9yQXJyb3dzU3R5bGVDbGFzc05hbWUgPSAic2hvdy1zZWxlY3Rvci1hcnJvd3MiOwor
V2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuVGl0bGVFbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAidGl0bGUiOworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25l
bnQuVGl0bGVDb250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQiOworV2ViSW5z
cGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuU2VsZWN0b3JBcnJvd3NFbGVtZW50U3R5
bGVDbGFzc05hbWUgPSAic2VsZWN0b3ItYXJyb3dzIjsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGlj
YWxQYXRoQ29tcG9uZW50LlNlcGFyYXRvckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZXBhcmF0
b3IiOworCitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5NaW5pbXVtV2lk
dGggPSAzMjsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50Lk1pbmltdW1X
aWR0aENvbGxhcHNlZCA9IDI0OworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25l
bnQuTWluaW11bVdpZHRoRm9yT25lQ2hhcmFjdGVyVHJ1bmNhdGVkVGl0bGUgPSA1NDsKK1dlYklu
c3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlNlbGVjdG9yQXJyb3dzV2lkdGggPSAx
MjsKKworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuRXZlbnQgPSB7Cisg
ICAgU2libGluZ1dhc1NlbGVjdGVkOiAiaGllcmFyY2hpY2FsLXBhdGgtY29tcG9uZW50LXNpYmxp
bmctd2FzLXNlbGVjdGVkIiwKKyAgICBDbGlja2VkOiAiaGllcmFyY2hpY2FsLXBhdGgtY29tcG9u
ZW50LWNsaWNrZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmln
YXRpb25JdGVtLmpzCmluZGV4IGRlZmFjNTkuLmUwZTg1ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0
aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI4ICsyMywyMSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5IaWVy
YXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyLCBjb21wb25l
bnRzKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtLmNhbGwodGhpcywgaWRlbnRp
Zmllcik7Ci0KLSAgICB0aGlzLmNvbXBvbmVudHMgPSBjb21wb25lbnRzOwotfTsKLQotV2ViSW5z
cGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZSA9ICJo
aWVyYXJjaGljYWwtcGF0aCI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRp
b25JdGVtLkFsd2F5c1Nob3dMYXN0UGF0aENvbXBvbmVudFNlcGFyYXRvclN0eWxlQ2xhc3NOYW1l
ID0gImFsd2F5cy1zaG93LWxhc3QtcGF0aC1jb21wb25lbnQtc2VwYXJhdG9yIjsKLQotV2ViSW5z
cGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5FdmVudCA9IHsKLSAgICBQYXRo
Q29tcG9uZW50V2FzU2VsZWN0ZWQ6ICJoaWVyYXJjaGljYWwtcGF0aC1uYXZpZ2F0aW9uLWl0ZW0t
cGF0aC1jb21wb25lbnQtd2FzLXNlbGVjdGVkIgotfTsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGlj
YWxQYXRoTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBIaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0
ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0KK3sKKyAgICBjb25zdHJ1Y3Rv
cihpZGVudGlmaWVyLCBjb21wb25lbnRzKQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmll
cik7CiAKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0ucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5h
dmlnYXRpb25JdGVtLAorICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSBjb21wb25lbnRzOworICAg
IH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGNvbXBvbmVudHMoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbXBvbmVudHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29t
cG9uZW50cyhuZXdDb21wb25lbnRzKQogICAgIHsKQEAgLTY5LDE3ICs2MiwxNyBAQCBXZWJJbnNw
ZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgLy8gVXBkYXRlIGxheW91dCBmb3IgdGhlIHNvIG90aGVyIGl0ZW1zIGNhbiBhZGp1c3QgdG8g
dGhlIGV4dHJhIHNwYWNlIChvciBsYWNrIHRoZXJlb2YpIHRvby4KICAgICAgICAgaWYgKHRoaXMu
cGFyZW50TmF2aWdhdGlvbkJhcikKICAgICAgICAgICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkJh
ci51cGRhdGVMYXlvdXRTb29uKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGFzdENvbXBv
bmVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50cy5sYXN0VmFsdWUg
fHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBhbHdheXNTaG93TGFzdFBhdGhDb21w
b25lbnRTZXBhcmF0b3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRl
bS5BbHdheXNTaG93TGFzdFBhdGhDb21wb25lbnRTZXBhcmF0b3JTdHlsZUNsYXNzTmFtZSk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgYWx3YXlzU2hvd0xhc3RQYXRoQ29tcG9uZW50U2VwYXJh
dG9yKGZsYWcpCiAgICAgewpAQCAtODcsOSArODAsOSBAQCBXZWJJbnNwZWN0b3IuSGllcmFyY2hp
Y2FsUGF0aE5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlv
bkl0ZW0uQWx3YXlzU2hvd0xhc3RQYXRoQ29tcG9uZW50U2VwYXJhdG9yU3R5bGVDbGFzc05hbWUp
OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92
ZShXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLkFsd2F5c1Nob3dM
YXN0UGF0aENvbXBvbmVudFNlcGFyYXRvclN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oZXhwYW5kT25seSkKKyAgICB1cGRhdGVMYXlv
dXQoZXhwYW5kT25seSkKICAgICB7CiAgICAgICAgIHZhciBuYXZpZ2F0aW9uQmFyID0gdGhpcy5w
YXJlbnROYXZpZ2F0aW9uQmFyOwogICAgICAgICBpZiAoIW5hdmlnYXRpb25CYXIpCkBAIC0yMjIs
MTYgKzIxNSwyNSBAQCBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVt
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBTZXQgdGhlIHRvb2wgdGlwIG9mIHRoZSBjb2xs
YXBzZWQgY29tcG9uZW50LgogICAgICAgICB0aGlzLl9jb2xsYXBzZWRDb21wb25lbnQuZWxlbWVu
dC50aXRsZSA9IGhpZGRlbkRpc3BsYXlOYW1lcy5qb2luKCJcbiIpOwotICAgIH0sCisgICAgfQog
Ci0gICAgLy8gUHJpdmF0ZQorICAgIC8vIFByb3RlY3RlZAogCi0gICAgX2FkZGl0aW9uYWxDbGFz
c05hbWVzOiBbV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5TdHls
ZUNsYXNzTmFtZV0sCisgICAgZ2V0IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBbImhpZXJhcmNoaWNhbC1wYXRoIl07CisgICAgfQogCi0gICAgX3NpYmxpbmdQ
YXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIC8vIFByaXZhdGUK
KworICAgIF9zaWJsaW5nUGF0aENvbXBvbmVudFdhc1NlbGVjdGVkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNo
aWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5FdmVudC5QYXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQsIGV2
ZW50LmRhdGEpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2
aWdhdGlvbkl0ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
SXRlbS5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25J
dGVtLkFsd2F5c1Nob3dMYXN0UGF0aENvbXBvbmVudFNlcGFyYXRvclN0eWxlQ2xhc3NOYW1lID0g
ImFsd2F5cy1zaG93LWxhc3QtcGF0aC1jb21wb25lbnQtc2VwYXJhdG9yIjsKKworV2ViSW5zcGVj
dG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5FdmVudCA9IHsKKyAgICBQYXRoQ29t
cG9uZW50V2FzU2VsZWN0ZWQ6ICJoaWVyYXJjaGljYWwtcGF0aC1uYXZpZ2F0aW9uLWl0ZW0tcGF0
aC1jb21wb25lbnQtd2FzLXNlbGVjdGVkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hvdmVyTWVudS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hvdmVyTWVudS5qcwppbmRleCBiOWJhZjIyLi5l
NWVkYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Ib3Zlck1lbnUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvSG92ZXJNZW51LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzOCArMjMsMzIgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSG92ZXJNZW51ID0gZnVuY3Rp
b24oZGVsZWdhdGUpCitXZWJJbnNwZWN0b3IuSG92ZXJNZW51ID0gY2xhc3MgSG92ZXJNZW51IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMg
dG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAg
IC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuZGVsZWdhdGUg
PSBkZWxlZ2F0ZTsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ib3Zl
ck1lbnUuU3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJ0cmFuc2l0aW9uZW5kIiwgdGhpcywgdHJ1ZSk7CisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUp
CisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgdGhpcy5fb3V0bGluZUVsZW1lbnQgPSB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciLCAic3ZnIikpOworICAgICAgICB0aGlzLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CiAKLSAgICB0aGlzLl9idXR0b24gPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKLSAgICB0aGlzLl9idXR0b24uYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzKTsKLX0KKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TmFtZSA9ICJob3Zlci1tZW51IjsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJ0cmFuc2l0aW9uZW5kIiwgdGhpcywgdHJ1ZSk7CiAKLVdlYkluc3BlY3Rvci5Ib3Zlck1l
bnUuU3R5bGVDbGFzc05hbWUgPSAiaG92ZXItbWVudSI7Ci1XZWJJbnNwZWN0b3IuSG92ZXJNZW51
LlZpc2libGVDbGFzc05hbWUgPSAidmlzaWJsZSI7CisgICAgICAgIHRoaXMuX291dGxpbmVFbGVt
ZW50ID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMo
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInN2ZyIpKTsKIAotV2ViSW5zcGVjdG9yLkhv
dmVyTWVudS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Ib3Zl
ck1lbnUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAg
ICAgICAgdGhpcy5fYnV0dG9uID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJpbWciKSk7CisgICAgICAgIHRoaXMuX2J1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVs
ZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBwcmVzZW50OiBmdW5jdGlvbihyZWN0cykKKyAgICBwcmVzZW50KHJlY3RzKQog
ICAgIHsKICAgICAgICAgdGhpcy5fb3V0bGluZUVsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKIApA
QCAtNjMsOSArNTcsOSBAQCBXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUu
VmlzaWJsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInNj
cm9sbCIsIHRoaXMsIHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAgZGlzbWlzczogZnVuY3Rp
b24oZGlzY3JldGUpCisgICAgZGlzbWlzcyhkaXNjcmV0ZSkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgIT09IGRvY3VtZW50LmJvZHkpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC03NiwxMSArNzAsMTEgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0
b3IuSG92ZXJNZW51LlZpc2libGVDbGFzc05hbWUpOwogCiAgICAgICAgIHdpbmRvdy5yZW1vdmVF
dmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAogICAg
IC8vIFByb3RlY3RlZAogCi0gICAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhh
bmRsZUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7CiAg
ICAgICAgIGNhc2UgInNjcm9sbCI6CkBAIC05NSwxNyArODksMTcgQEAgV2ViSW5zcGVjdG9yLkhv
dmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1v
dmUoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcml2YXRlCiAKLSAgICBfaGFuZGxlQ2xpY2tFdmVudDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2hhbmRsZUNsaWNrRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5kZWxl
Z2F0ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5ob3Zlck1lbnVCdXR0b25XYXNQcmVzc2VkID09
PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhpcy5kZWxlZ2F0ZS5ob3Zlck1lbnVCdXR0b25X
YXNQcmVzc2VkKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RyYXdPdXRsaW5lOiBmdW5j
dGlvbihyZWN0cykKKyAgICBfZHJhd091dGxpbmUocmVjdHMpCiAgICAgewogICAgICAgICB2YXIg
YnV0dG9uV2lkdGggPSB0aGlzLl9idXR0b24ud2lkdGg7CiAgICAgICAgIHZhciBidXR0b25IZWln
aHQgPSB0aGlzLl9idXR0b24uaGVpZ2h0OwpAQCAtMTM1LDExICsxMjksMTEgQEAgV2ViSW5zcGVj
dG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fYnV0dG9uLnN0eWxl
LmxlZnQgPSAobGFzdFJlY3QubWF4WCgpIC0gYm91bmRzLm1pblgoKSAtIGJ1dHRvbldpZHRoKSAr
ICJweCI7CiAgICAgICAgIHRoaXMuX2J1dHRvbi5zdHlsZS50b3AgPSAobGFzdFJlY3QubWF4WSgp
IC0gYm91bmRzLm1pblkoKSAtIGJ1dHRvbkhlaWdodCkgKyAicHgiOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2FkZFJlY3Q6IGZ1bmN0aW9uKHJlY3QpCisgICAgX2FkZFJlY3QocmVjdCkKICAgICB7
Ci0gICAgICAgIGNvbnN0IHIgPSA0OworICAgICAgICB2YXIgciA9IDQ7CiAKICAgICAgICAgdmFy
IHN2Z1JlY3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIw
MDAvc3ZnIiwgInJlY3QiKTsKICAgICAgICAgc3ZnUmVjdC5zZXRBdHRyaWJ1dGUoIngiLCAxKTsK
QEAgLTE0OSwyNCArMTQzLDI0IEBAIFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlID0g
ewogICAgICAgICBzdmdSZWN0LnNldEF0dHJpYnV0ZSgicngiLCByKTsKICAgICAgICAgc3ZnUmVj
dC5zZXRBdHRyaWJ1dGUoInJ5Iiwgcik7CiAgICAgICAgIHJldHVybiB0aGlzLl9vdXRsaW5lRWxl
bWVudC5hcHBlbmRDaGlsZChzdmdSZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRQYXRo
OiBmdW5jdGlvbihjb21tYW5kcywgdHgsIHR5KQorICAgIF9hZGRQYXRoKGNvbW1hbmRzLCB0eCwg
dHkpCiAgICAgewogICAgICAgICB2YXIgcGF0aCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCAicGF0aCIpOwogICAgICAgICBwYXRoLnNldEF0
dHJpYnV0ZSgiZCIsIGNvbW1hbmRzLmpvaW4oIiAiKSk7CiAgICAgICAgIHBhdGguc2V0QXR0cmli
dXRlKCJ0cmFuc2Zvcm0iLCAidHJhbnNsYXRlKCIgKyAodHggKyAxKSArICIsIiArICh0eSArIDEp
ICsgIikiKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX291dGxpbmVFbGVtZW50LmFwcGVuZENoaWxk
KHBhdGgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RyYXdTaW5nbGVMaW5lOiBmdW5jdGlvbihy
ZWN0KQorICAgIF9kcmF3U2luZ2xlTGluZShyZWN0KQogICAgIHsKICAgICAgICAgdGhpcy5fYWRk
UmVjdChyZWN0LnBhZCgyKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZHJhd1R3b05vbk92ZXJs
YXBwaW5nTGluZXM6IGZ1bmN0aW9uKHJlY3RzKQorICAgIF9kcmF3VHdvTm9uT3ZlcmxhcHBpbmdM
aW5lcyhyZWN0cykKICAgICB7Ci0gICAgICAgIGNvbnN0IHIgPSA0OworICAgICAgICB2YXIgciA9
IDQ7CiAKICAgICAgICAgdmFyIGZpcnN0UmVjdCA9IHJlY3RzWzBdLnBhZCgyKTsKICAgICAgICAg
dmFyIHNlY29uZFJlY3QgPSByZWN0c1sxXS5wYWQoMik7CkBAIC0xOTMsMTIgKzE4NywxMiBAQCBX
ZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICJxIiwgMCwg
ciwgLXIsIHIsCiAgICAgICAgICAgICAiSCIsIHJlY3QubWluWCgpCiAgICAgICAgIF0sIHR4LCB0
eSk7Ci0gICAgfSwKKyAgICB9CiAgICAgCi0gICAgX2RyYXdPdmVybGFwcGluZ0xpbmVzOiBmdW5j
dGlvbihyZWN0cykKKyAgICBfZHJhd092ZXJsYXBwaW5nTGluZXMocmVjdHMpCiAgICAgewotICAg
ICAgICBjb25zdCBQQURESU5HID0gMjsKLSAgICAgICAgY29uc3QgciA9IDQ7CisgICAgICAgIHZh
ciBQQURESU5HID0gMjsKKyAgICAgICAgdmFyIHIgPSA0OwogCiAgICAgICAgIHZhciBtaW5YID0g
TnVtYmVyLk1BWF9WQUxVRTsKICAgICAgICAgdmFyIG1heFggPSAtTnVtYmVyLk1BWF9WQUxVRTsK
QEAgLTIxOSw3ICsyMTMsNyBAQCBXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGRSZWN0KG5ldyBXZWJJbnNwZWN0b3IuUmVjdCht
aW5YLCBtaW5ZLCBtYXhYIC0gbWluWCwgbWF4WSAtIG1pblkpKTsKICAgICAgICAgCiAgICAgICAg
IHZhciBsYXN0TGluZU1pblkgPSByZWN0cy5sYXN0VmFsdWUubWluWSgpICsgUEFERElORzsKLSAg
ICAgICAgaWYgKHJlY3RzWzBdLm1pblgoKSA9PT0gbWluWCArIFBBRERJTkcpCisgICAgICAgIGlm
IChyZWN0c1swXS5taW5YKCkgPT09IG1pblggKyBQQURESU5HKSB7CiAgICAgICAgICAgICByZXR1
cm4gdGhpcy5fYWRkUGF0aChbCiAgICAgICAgICAgICAgICAgIk0iLCBtaW5YICsgciwgbWluWSwK
ICAgICAgICAgICAgICAgICAiSCIsIG1heFggLSByLApAQCAtMjM1LDkgKzIyOSwxMCBAQCBXZWJJ
bnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAiViIsIG1p
blkgKyByLAogICAgICAgICAgICAgICAgICJxIiwgMCwgLXIsIHIsIC1yCiAgICAgICAgICAgICBd
LCAtbWluWCwgLW1pblkpOwotICAgICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIHZhciBmaXJz
dExpbmVNYXhZID0gcmVjdHNbMF0ubWF4WSgpIC0gUEFERElORzsKLSAgICAgICAgaWYgKHJlY3Rz
Lmxhc3RWYWx1ZS5tYXhYKCkgPT09IG1heFggLSBQQURESU5HKQorICAgICAgICBpZiAocmVjdHMu
bGFzdFZhbHVlLm1heFgoKSA9PT0gbWF4WCAtIFBBRERJTkcpIHsKICAgICAgICAgICAgIHJldHVy
biB0aGlzLl9hZGRQYXRoKFsKICAgICAgICAgICAgICAgICAiTSIsIGZpcnN0TGluZU1pblggKyBy
LCBtaW5ZLAogICAgICAgICAgICAgICAgICJIIiwgbWF4WCAtIHIsCkBAIC0yNTMsNyArMjQ4LDgg
QEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
IlYiLCBtaW5ZICsgciwKICAgICAgICAgICAgICAgICAicSIsIDAsIC1yLCByLCAtcgogICAgICAg
ICAgICAgXSwgLW1pblgsIC1taW5ZKTsKLSAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBy
ZXR1cm4gdGhpcy5fYWRkUGF0aChbCiAgICAgICAgICAgICAiTSIsIGZpcnN0TGluZU1pblggKyBy
LCBtaW5ZLAogICAgICAgICAgICAgIkgiLCBtYXhYIC0gciwKQEAgLTI3NCw0ICsyNzAsNiBAQCBX
ZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICJxIiwgMCwg
LXIsIHIsIC1yCiAgICAgICAgIF0sIC1taW5YLCAtbWluWSk7CiAgICAgfQotfQorfTsKKworV2Vi
SW5zcGVjdG9yLkhvdmVyTWVudS5WaXNpYmxlQ2xhc3NOYW1lID0gInZpc2libGUiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW1hZ2VSZXNv
dXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmluZGV4IDI3OTY3OGMuLjlkZWU2OWIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0lt
YWdlUmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9JbWFnZVJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI2ICsyMywy
MyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5JbWFnZVJlc291cmNlQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKK1dlYklu
c3BlY3Rvci5JbWFnZVJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBJbWFnZVJlc291cmNlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50VmlldwogewotICAg
IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVzb3VyY2UsIFdl
Ykluc3BlY3Rvci5JbWFnZVJlc291cmNlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOwotCi0g
ICAgdGhpcy5faW1hZ2VFbGVtZW50ID0gbnVsbDsKLX07Ci0KLVdlYkluc3BlY3Rvci5JbWFnZVJl
c291cmNlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiaW1hZ2UiOworICAgIGNvbnN0cnVj
dG9yKHJlc291cmNlKQorICAgIHsKKyAgICAgICAgc3VwZXIocmVzb3VyY2UsICJpbWFnZSIpOwog
Ci1XZWJJbnNwZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkltYWdlUmVzb3VyY2VDb250ZW50VmlldywKKyAg
ICAgICAgdGhpcy5faW1hZ2VFbGVtZW50ID0gbnVsbDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBpbWFnZUVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lt
YWdlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbnRlbnRBdmFpbGFibGU6IGZ1bmN0
aW9uKGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpCisgICAgY29udGVudEF2YWlsYWJsZShjb250ZW50
LCBiYXNlNjRFbmNvZGVkKQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxk
cmVuKCk7CiAKQEAgLTU0LDUgKzUxLDMgQEAgV2ViSW5zcGVjdG9yLkltYWdlUmVzb3VyY2VDb250
ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9pbWFnZUVsZW1lbnQpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5JbWFnZVJlc291
cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRldGVybWluYXRlUHJv
Z3Jlc3NTcGlubmVyLmpzCmluZGV4IDViZjJkNzYuLjUyYTBmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV0ZXJtaW5hdGVQcm9ncmVz
c1NwaW5uZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTkgKzIzLDE1IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkluZGV0
ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuSW5kZXRl
cm1pbmF0ZVByb2dyZXNzU3Bpbm5lciA9IGNsYXNzIEluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5u
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQg
dGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCku
Ci0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuU3R5
bGVDbGFzc05hbWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bp
bm5lci5TdHlsZUNsYXNzTmFtZSA9ICJpbmRldGVybWluYXRlLXByb2dyZXNzLXNwaW5uZXIiOwor
ICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rv
ci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIsCisgICAgICAg
IHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAiaW5kZXRlcm1pbmF0ZS1wcm9ncmVzcy1zcGlubmVy
IjsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNDQsNSArNDAsMyBAQCBXZWJJbnNwZWN0
b3IuSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9lbGVtZW50OwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5JbmRldGVybWlu
YXRlUHJvZ3Jlc3NTcGlubmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2RlLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlRW50cnlE
YXRhR3JpZE5vZGUuanMKaW5kZXggZDgzOWZmYy4uZGUwMmJmZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlRW50cnlE
YXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvSW5kZXhlZERhdGFiYXNlRW50cnlEYXRhR3JpZE5vZGUuanMKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzAgKzIzLDI4IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LkluZGV4ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2RlID0gZnVuY3Rpb24oZW50cnkpCitXZWJJ
bnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlRW50cnlEYXRhR3JpZE5vZGUgPSBjbGFzcyBJbmRleGVk
RGF0YWJhc2VFbnRyeURhdGFHcmlkTm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5v
ZGUKIHsKLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcywgZW50cnkpOwot
Ci0gICAgdGhpcy5fZW50cnkgPSBlbnRyeTsKLX07CisgICAgY29uc3RydWN0b3IoZW50cnkpCisg
ICAgeworICAgICAgICBzdXBlcihlbnRyeSk7CiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJh
c2VFbnRyeURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5JbmRleGVkRGF0YWJhc2VFbnRyeURhdGFHcmlkTm9kZSwKLSAgICBfX3Byb3RvX186
IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9lbnRy
eSA9IGVudHJ5OworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVudHJ5KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbnRyeTsKLSAgICB9LAorICAgIH0KIAotICAgIGNy
ZWF0ZUNlbGxDb250ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQorICAgIGNy
ZWF0ZUNlbGxDb250ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCiAgICAgewogICAgICAgICB2
YXIgdmFsdWUgPSB0aGlzLl9lbnRyeVtjb2x1bW5JZGVudGlmaWVyXTsKICAgICAgICAgaWYgKHZh
bHVlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCkKICAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRlT2JqZWN0VHJlZU9yRm9ybWF0
dGVkVmFsdWVGb3JSZW1vdGVPYmplY3QodmFsdWUsIG51bGwsIHRydWUpOwogCi0gICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxsQ29udGVu
dC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIsIGNlbGwpOworICAgICAgICByZXR1cm4gc3Vw
ZXIuY3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCk7CiAgICAgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0lu
ZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudC5qcwppbmRl
eCBkNjQyNDMwLi4wYjIwNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNl
SG9zdFRyZWVFbGVtZW50LmpzCkBAIC0yMywyNSArMjMsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlSG9z
dFRyZWVFbGVtZW50ID0gZnVuY3Rpb24oaG9zdCkKK1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJh
c2VIb3N0VHJlZUVsZW1lbnQgPSBjbGFzcyBJbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50CiB7Ci0gICAgV2ViSW5zcGVj
dG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVl
RWxlbWVudC5Gb2xkZXJJY29uU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFt
ZUZvckhvc3QoaG9zdCksIG51bGwpOwotCi0gICAgdGhpcy5faG9zdCA9IGhvc3Q7CisgICAgY29u
c3RydWN0b3IoaG9zdCkKKyAgICB7CisgICAgICAgIHN1cGVyKFdlYkluc3BlY3Rvci5Gb2xkZXJU
cmVlRWxlbWVudC5Gb2xkZXJJY29uU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5kaXNwbGF5
TmFtZUZvckhvc3QoaG9zdCksIG51bGwpOwogCi0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IHRydWU7
Ci19OworICAgICAgICB0aGlzLl9ob3N0ID0gaG9zdDsKIAotV2ViSW5zcGVjdG9yLkluZGV4ZWRE
YXRhYmFzZUhvc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgdGhp
cy5oYXNDaGlsZHJlbiA9IHRydWU7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
bmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9y
SG9zdCh0aGlzLl9ob3N0KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjYXRlZ29yeU5hbWUo
KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RT
dG9yZUNvbnRlbnRWaWV3LmpzCmluZGV4IDhkNDMwNjcuLjgyMzlmZTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9i
amVjdFN0b3JlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Myw4OCArMjMsODQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50VmlldyA9IGZ1
bmN0aW9uKG9iamVjdFN0b3JlT3JJbmRleCkKK1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VP
YmplY3RTdG9yZUNvbnRlbnRWaWV3ID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVD
b250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50VmlldwogewotICAgIFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIG9iamVjdFN0b3JlT3JJbmRleCk7Ci0KLSAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNl
T2JqZWN0U3RvcmVDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICBpZiAob2JqZWN0
U3RvcmVPckluZGV4IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVj
dFN0b3JlKSB7Ci0gICAgICAgIHRoaXMuX29iamVjdFN0b3JlID0gb2JqZWN0U3RvcmVPckluZGV4
OwotICAgICAgICB0aGlzLl9vYmplY3RTdG9yZUluZGV4ID0gbnVsbDsKLSAgICB9IGVsc2UgaWYg
KG9iamVjdFN0b3JlT3JJbmRleCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJh
c2VPYmplY3RTdG9yZUluZGV4KSB7Ci0gICAgICAgIHRoaXMuX29iamVjdFN0b3JlID0gb2JqZWN0
U3RvcmVPckluZGV4LnBhcmVudE9iamVjdFN0b3JlOwotICAgICAgICB0aGlzLl9vYmplY3RTdG9y
ZUluZGV4ID0gb2JqZWN0U3RvcmVPckluZGV4OwotICAgIH0KLQotICAgIGZ1bmN0aW9uIGRpc3Bs
YXlLZXlQYXRoKGtleVBhdGgpCisgICAgY29uc3RydWN0b3Iob2JqZWN0U3RvcmVPckluZGV4KQog
ICAgIHsKLSAgICAgICAgaWYgKCFrZXlQYXRoKQotICAgICAgICAgICAgcmV0dXJuICIiOwotICAg
ICAgICBpZiAoa2V5UGF0aCBpbnN0YW5jZW9mIEFycmF5KQotICAgICAgICAgICAgcmV0dXJuIGtl
eVBhdGguam9pbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiwgIikpOwotICAgICAgICBjb25zb2xl
LmFzc2VydChrZXlQYXRoIGluc3RhbmNlb2YgU3RyaW5nIHx8IHR5cGVvZiBrZXlQYXRoID09PSAi
c3RyaW5nIik7Ci0gICAgICAgIHJldHVybiBrZXlQYXRoOwotICAgIH0KKyAgICAgICAgc3VwZXIo
b2JqZWN0U3RvcmVPckluZGV4KTsKIAotICAgIHZhciBkaXNwbGF5UHJpbWFyeUtleVBhdGggPSBk
aXNwbGF5S2V5UGF0aCh0aGlzLl9vYmplY3RTdG9yZS5rZXlQYXRoKTsKLQotICAgIHZhciBjb2x1
bW5JbmZvID0gewotICAgICAgICBwcmltYXJ5S2V5OiB7dGl0bGU6IGRpc3BsYXlQcmltYXJ5S2V5
UGF0aCA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJpbWFyeSBLZXkgXHUyMDE0ICVzIikuZm9y
bWF0KGRpc3BsYXlQcmltYXJ5S2V5UGF0aCkgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByaW1h
cnkgS2V5Iil9LAotICAgICAgICBrZXk6IHt9LAotICAgICAgICB2YWx1ZToge3RpdGxlOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlZhbHVlIil9Ci0gICAgfTsKLQotICAgIGlmICh0aGlzLl9vYmpl
Y3RTdG9yZUluZGV4KSB7Ci0gICAgICAgIC8vIFdoZW4gdGhlcmUgaXMgYW4gaW5kZXgsIHNob3cg
dGhlIGtleSBwYXRoIGluIHRoZSBLZXkgY29sdW1uLgotICAgICAgICB2YXIgZGlzcGxheUluZGV4
S2V5UGF0aCA9IGRpc3BsYXlLZXlQYXRoKHRoaXMuX29iamVjdFN0b3JlSW5kZXgua2V5UGF0aCk7
Ci0gICAgICAgIGNvbHVtbkluZm8ua2V5LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJ
bmRleCBLZXkgXHUyMDE0ICVzIikuZm9ybWF0KGRpc3BsYXlJbmRleEtleVBhdGgpOwotICAgIH0g
ZWxzZSB7Ci0gICAgICAgIC8vIE9ubHkgbmVlZCB0byBzaG93IEtleSBmb3IgaW5kZXhlcyAtLSBp
dCBpcyB0aGUgc2FtZSBhcyBQcmltYXJ5IEtleQotICAgICAgICAvLyB3aGVuIHRoZXJlIGlzIG5v
IGluZGV4IGJlaW5nIHVzZWQuCi0gICAgICAgIGRlbGV0ZSBjb2x1bW5JbmZvLmtleTsKLSAgICB9
CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbmRleGVkLWRhdGFiYXNlLW9i
amVjdC1zdG9yZSIpOworCisgICAgICAgIGlmIChvYmplY3RTdG9yZU9ySW5kZXggaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUpIHsKKyAgICAgICAgICAg
IHRoaXMuX29iamVjdFN0b3JlID0gb2JqZWN0U3RvcmVPckluZGV4OworICAgICAgICAgICAgdGhp
cy5fb2JqZWN0U3RvcmVJbmRleCA9IG51bGw7CisgICAgICAgIH0gZWxzZSBpZiAob2JqZWN0U3Rv
cmVPckluZGV4IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0
b3JlSW5kZXgpIHsKKyAgICAgICAgICAgIHRoaXMuX29iamVjdFN0b3JlID0gb2JqZWN0U3RvcmVP
ckluZGV4LnBhcmVudE9iamVjdFN0b3JlOworICAgICAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmVJ
bmRleCA9IG9iamVjdFN0b3JlT3JJbmRleDsKKyAgICAgICAgfQogCi0gICAgdGhpcy5fZGF0YUdy
aWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbkluZm8pOwotICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgZnVuY3Rp
b24gZGlzcGxheUtleVBhdGgoa2V5UGF0aCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFr
ZXlQYXRoKQorICAgICAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgICAgIGlmIChrZXlQ
YXRoIGluc3RhbmNlb2YgQXJyYXkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGtleVBhdGguam9p
bihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiwgIikpOworICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoa2V5UGF0aCBpbnN0YW5jZW9mIFN0cmluZyB8fCB0eXBlb2Yga2V5UGF0aCA9PT0gInN0cmlu
ZyIpOworICAgICAgICAgICAgcmV0dXJuIGtleVBhdGg7CisgICAgICAgIH0KIAotICAgIHRoaXMu
X2RhdGFHcmlkLnNjcm9sbENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlz
Ll9kYXRhR3JpZFNjcm9sbGVkLmJpbmQodGhpcykpOworICAgICAgICB2YXIgZGlzcGxheVByaW1h
cnlLZXlQYXRoID0gZGlzcGxheUtleVBhdGgodGhpcy5fb2JqZWN0U3RvcmUua2V5UGF0aCk7CisK
KyAgICAgICAgdmFyIGNvbHVtbkluZm8gPSB7CisgICAgICAgICAgICBwcmltYXJ5S2V5OiB7dGl0
bGU6IGRpc3BsYXlQcmltYXJ5S2V5UGF0aCA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJpbWFy
eSBLZXkgXHUyMDE0ICVzIikuZm9ybWF0KGRpc3BsYXlQcmltYXJ5S2V5UGF0aCkgOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlByaW1hcnkgS2V5Iil9LAorICAgICAgICAgICAga2V5OiB7fSwKKyAg
ICAgICAgICAgIHZhbHVlOiB7dGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmFsdWUiKX0K
KyAgICAgICAgfTsKKworICAgICAgICBpZiAodGhpcy5fb2JqZWN0U3RvcmVJbmRleCkgeworICAg
ICAgICAgICAgLy8gV2hlbiB0aGVyZSBpcyBhbiBpbmRleCwgc2hvdyB0aGUga2V5IHBhdGggaW4g
dGhlIEtleSBjb2x1bW4uCisgICAgICAgICAgICB2YXIgZGlzcGxheUluZGV4S2V5UGF0aCA9IGRp
c3BsYXlLZXlQYXRoKHRoaXMuX29iamVjdFN0b3JlSW5kZXgua2V5UGF0aCk7CisgICAgICAgICAg
ICBjb2x1bW5JbmZvLmtleS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5kZXggS2V5
IFx1MjAxNCAlcyIpLmZvcm1hdChkaXNwbGF5SW5kZXhLZXlQYXRoKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIE9ubHkgbmVlZCB0byBzaG93IEtleSBmb3IgaW5kZXhlcyAtLSBp
dCBpcyB0aGUgc2FtZSBhcyBQcmltYXJ5IEtleQorICAgICAgICAgICAgLy8gd2hlbiB0aGVyZSBp
cyBubyBpbmRleCBiZWluZyB1c2VkLgorICAgICAgICAgICAgZGVsZXRlIGNvbHVtbkluZm8ua2V5
OworICAgICAgICB9CiAKLSAgICB0aGlzLl9lbnRyaWVzID0gW107CisgICAgICAgIHRoaXMuX2Rh
dGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5JbmZvKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwogCi0gICAg
dGhpcy5fZmV0Y2hNb3JlRGF0YSgpOwotfTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuc2Nyb2xs
Q29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX2RhdGFHcmlkU2Nyb2xs
ZWQuYmluZCh0aGlzKSk7CiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9y
ZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImluZGV4ZWQtZGF0YWJhc2Utb2JqZWN0LXN0
b3JlIjsKKyAgICAgICAgdGhpcy5fZW50cmllcyA9IFtdOwogCi1XZWJJbnNwZWN0b3IuSW5kZXhl
ZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3
LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAg
ICAgICAgdGhpcy5fZmV0Y2hNb3JlRGF0YSgpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0g
ICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMu
X3Jlc2V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlVG9Db29raWU6IGZ1bmN0aW9uKGNv
b2tpZSkKKyAgICBzYXZlVG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29va2llLnR5
cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkluZGV4ZWREYXRhYmFzZU9i
amVjdFN0b3JlOwogICAgICAgICBjb29raWUuc2VjdXJpdHlPcmlnaW4gPSB0aGlzLl9vYmplY3RT
dG9yZS5wYXJlbnREYXRhYmFzZS5zZWN1cml0eU9yaWdpbjsKICAgICAgICAgY29va2llLmRhdGFi
YXNlTmFtZSA9IHRoaXMuX29iamVjdFN0b3JlLnBhcmVudERhdGFiYXNlLm5hbWU7CiAgICAgICAg
IGNvb2tpZS5vYmplY3RTdG9yZU5hbWUgPSB0aGlzLl9vYmplY3RTdG9yZS5uYW1lOwogICAgICAg
ICBjb29raWUub2JqZWN0U3RvcmVJbmRleE5hbWUgPSB0aGlzLl9vYmplY3RTdG9yZUluZGV4ICYm
IHRoaXMuX29iamVjdFN0b3JlSW5kZXgubmFtZTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0
ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB0
aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFBy
aXZhdGUKIAotICAgIF9yZXNldDogZnVuY3Rpb24oKQorICAgIF9yZXNldCgpCiAgICAgewogICAg
ICAgICBmb3IgKHZhciBlbnRyeSBvZiB0aGlzLl9lbnRyaWVzKSB7CiAgICAgICAgICAgICBlbnRy
eS5wcmltYXJ5S2V5LnJlbGVhc2UoKTsKQEAgLTExNCwxNyArMTEwLDE3IEBAIFdlYkluc3BlY3Rv
ci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICB0aGlzLl9lbnRyaWVzID0gW107CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92
ZUNoaWxkcmVuKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWRTY3JvbGxlZDogZnVu
Y3Rpb24oKQorICAgIF9kYXRhR3JpZFNjcm9sbGVkKCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5fbW9yZUVudHJpZXNBdmFpbGFibGUgfHwgIXRoaXMuX2RhdGFHcmlkLmlzU2Nyb2xsZWRUb0xh
c3RSb3coKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9mZXRjaE1vcmVE
YXRhKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZmV0Y2hNb3JlRGF0YTogZnVuY3Rpb24oKQor
ICAgIF9mZXRjaE1vcmVEYXRhKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9mZXRjaGluZ01v
cmVEYXRhKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRl
eFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50LmpzCmluZGV4IGVl
YmQxY2EuLmNhODEyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxlbWVudC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVk
RGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQuanMKQEAgLTIzLDIyICsyMywxOCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihv
YmplY3RTdG9yZUluZGV4KQorV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3Jl
SW5kZXhUcmVlRWxlbWVudCA9IGNsYXNzIEluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXhU
cmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKIHsKLSAg
ICBjb25zb2xlLmFzc2VydChvYmplY3RTdG9yZUluZGV4IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXgpOwotCi0gICAgdGhpcy5fb2JqZWN0U3Rv
cmVJbmRleCA9IG9iamVjdFN0b3JlSW5kZXg7CisgICAgY29uc3RydWN0b3Iob2JqZWN0U3RvcmVJ
bmRleCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9iamVjdFN0b3JlSW5kZXggaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleCk7CiAK
LSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVj
dG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQuSWNvblN0eWxlQ2xhc3NO
YW1lLCBvYmplY3RTdG9yZUluZGV4Lm5hbWUsIG51bGwsIG9iamVjdFN0b3JlSW5kZXgsIGZhbHNl
KTsKKyAgICAgICAgc3VwZXIoImRhdGFiYXNlLXRhYmxlLWljb24iLCBvYmplY3RTdG9yZUluZGV4
Lm5hbWUsIG51bGwsIG9iamVjdFN0b3JlSW5kZXgsIGZhbHNlKTsKIAotICAgIHRoaXMuc21hbGwg
PSB0cnVlOwotfTsKKyAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmVJbmRleCA9IG9iamVjdFN0b3Jl
SW5kZXg7CiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJl
ZUVsZW1lbnQuSWNvblN0eWxlQ2xhc3NOYW1lID0gImRhdGFiYXNlLXRhYmxlLWljb24iOwotCi1X
ZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFz
ZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICB0aGlzLnNtYWxsID0gdHJ1
ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVl
RWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0lu
ZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQuanMKaW5kZXggOGY5YzdjMS4uNzk5
YjliZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RT
dG9yZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDM4ICsyMywzNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RT
dG9yZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0U3RvcmUpCitXZWJJbnNwZWN0b3IuSW5k
ZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudCA9IGNsYXNzIEluZGV4ZWREYXRhYmFz
ZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQob2JqZWN0U3RvcmUgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUpOwotCi0gICAgdGhpcy5fb2JqZWN0
U3RvcmUgPSBvYmplY3RTdG9yZTsKLQotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1l
bnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVl
RWxlbWVudC5JY29uU3R5bGVDbGFzc05hbWUsIG9iamVjdFN0b3JlLm5hbWUsIG51bGwsIG9iamVj
dFN0b3JlLCAhIXRoaXMuX29iamVjdFN0b3JlLmluZGV4ZXMubGVuZ3RoKTsKKyAgICBjb25zdHJ1
Y3RvcihvYmplY3RTdG9yZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9iamVjdFN0
b3JlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlKTsK
IAotICAgIHRoaXMuc21hbGwgPSB0cnVlOwotfTsKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9y
LkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQuSWNvblN0eWxlQ2xhc3NOYW1l
LCBvYmplY3RTdG9yZS5uYW1lLCBudWxsLCBvYmplY3RTdG9yZSwgISF0aGlzLl9vYmplY3RTdG9y
ZS5pbmRleGVzLmxlbmd0aCk7CiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RT
dG9yZVRyZWVFbGVtZW50Lkljb25TdHlsZUNsYXNzTmFtZSA9ICJkYXRhYmFzZS10YWJsZS1pY29u
IjsKKyAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZTsKIAotV2ViSW5zcGVj
dG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVU
cmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1l
bnQucHJvdG90eXBlLAorICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICB9CiAKICAgICAv
LyBQdWJsaWMKIAogICAgIGdldCBvYmplY3RTdG9yZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fb2JqZWN0U3RvcmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBPdmVycmlkZXMgZnJv
bSBUcmVlRWxlbWVudCAoUHJvdGVjdGVkKQogCi0gICAgb25jb2xsYXBzZTogZnVuY3Rpb24oKQor
ICAgIG9uY29sbGFwc2UoKQogICAgIHsKICAgICAgICAgdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRy
ZW4gPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQor
ICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3Ro
ICYmICF0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbikKICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4
ZWREYXRhYmFzZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQuanMKaW5kZXggMGY3YjI2Ny4u
YTk1OGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQuanMK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsMzcgKzIzLDM0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oaW5k
ZXhlZERhdGFiYXNlKQorV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50ID0g
Y2xhc3MgSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoaW5kZXhlZERhdGFiYXNlIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZSk7Ci0KLSAgICB0aGlzLl9pbmRl
eGVkRGF0YWJhc2UgPSBpbmRleGVkRGF0YWJhc2U7Ci0KLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJh
bFRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVF
bGVtZW50Lkljb25TdHlsZUNsYXNzTmFtZSwgaW5kZXhlZERhdGFiYXNlLm5hbWUsIG51bGwsIGlu
ZGV4ZWREYXRhYmFzZSwgISF0aGlzLl9pbmRleGVkRGF0YWJhc2Uub2JqZWN0U3RvcmVzLmxlbmd0
aCk7CisgICAgY29uc3RydWN0b3IoaW5kZXhlZERhdGFiYXNlKQorICAgIHsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoaW5kZXhlZERhdGFiYXNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4
ZWREYXRhYmFzZSk7CiAKLSAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKLX07CisgICAgICAgIHRoaXMu
X2luZGV4ZWREYXRhYmFzZSA9IGluZGV4ZWREYXRhYmFzZTsKIAotV2ViSW5zcGVjdG9yLkluZGV4
ZWREYXRhYmFzZVRyZWVFbGVtZW50Lkljb25TdHlsZUNsYXNzTmFtZSA9ICJkYXRhYmFzZS1pY29u
IjsKKyAgICAgICAgc3VwZXIoImRhdGFiYXNlLWljb24iLCBpbmRleGVkRGF0YWJhc2UubmFtZSwg
bnVsbCwgaW5kZXhlZERhdGFiYXNlLCAhIXRoaXMuX2luZGV4ZWREYXRhYmFzZS5vYmplY3RTdG9y
ZXMubGVuZ3RoKTsKIAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFz
ZVRyZWVFbGVtZW50LAorICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICB9CiAKICAgICAv
LyBQdWJsaWMKIAogICAgIGdldCBpbmRleGVkRGF0YWJhc2UoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2luZGV4ZWREYXRhYmFzZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIE92ZXJy
aWRlcyBmcm9tIFRyZWVFbGVtZW50IChQcm90ZWN0ZWQpCiAKLSAgICBvbmNvbGxhcHNlOiBmdW5j
dGlvbigpCisgICAgb25jb2xsYXBzZSgpCiAgICAgewogICAgICAgICB0aGlzLnNob3VsZFJlZnJl
c2hDaGlsZHJlbiA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnBvcHVsYXRlOiBmdW5j
dGlvbigpCisgICAgb25wb3B1bGF0ZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5jaGlsZHJl
bi5sZW5ndGggJiYgIXRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNjYsNSArNjMsMyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChuZXcgV2Vi
SW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQob2JqZWN0U3Rv
cmUpKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1l
bnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQu
cHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTGF5ZXJUcmVlRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJUcmVlRGF0YUdyaWROb2RlLmpzCmluZGV4IDE1MWE1
YTMuLjY2NDAzOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0xheWVyVHJlZURhdGFHcmlkTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllclRyZWVEYXRhR3JpZE5vZGUuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDQw
ICsyMywzOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5MYXllclRyZWVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihsYXllcikKK1dlYklu
c3BlY3Rvci5MYXllclRyZWVEYXRhR3JpZE5vZGUgPSBjbGFzcyBMYXllclRyZWVEYXRhR3JpZE5v
ZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlCiB7Ci0gICAgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkTm9kZS5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fb3V0bGV0cyA9IHt9OworICAg
IGNvbnN0cnVjdG9yKGxheWVyKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMu
bGF5ZXIgPSBsYXllcjsKLX07CisgICAgICAgIHRoaXMuX291dGxldHMgPSB7fTsKIAotV2ViSW5z
cGVjdG9yLkxheWVyVHJlZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUsCisgICAgICAgIHRoaXMubGF5ZXIgPSBsYXll
cjsKKyAgICB9CiAKICAgICAvLyBEYXRhR3JpZE5vZGUgT3ZlcnJpZGVzLgogCi0gICAgY3JlYXRl
Q2VsbHM6IGZ1bmN0aW9uKCkKKyAgICBjcmVhdGVDZWxscygpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxscy5jYWxsKHRoaXMpOwog
CiAgICAgICAgIHRoaXMuX2NlbGxzV2VyZUNyZWF0ZWQgPSB0cnVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgY3JlYXRlQ2VsbENvbnRlbnQ6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIsIGNlbGwp
CisgICAgY3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCkKICAgICB7CiAg
ICAgICAgIHZhciBjZWxsID0gY29sdW1uSWRlbnRpZmllciA9PT0gIm5hbWUiID8gdGhpcy5fbWFr
ZU5hbWVDZWxsKCkgOiB0aGlzLl9tYWtlT3V0bGV0KGNvbHVtbklkZW50aWZpZXIsIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCkpOwogICAgICAgICB0aGlzLl91cGRhdGVDZWxsKGNvbHVtbklkZW50
aWZpZXIpOwogICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGxheWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9sYXll
cjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBsYXllcihsYXllcikKICAgICB7CkBAIC02OSwx
MiArNjgsMTIgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURhdGFHcmlkTm9kZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBwYWludENvdW50OiBsYXllci5wYWludENvdW50IHx8ICJcdTIwMTQi
LAogICAgICAgICAgICAgbWVtb3J5OiBOdW1iZXIuYnl0ZXNUb1N0cmluZyhsYXllci5tZW1vcnkg
fHwgMCkKICAgICAgICAgfTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkYXRhKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRh
dGEoZGF0YSkKICAgICB7CkBAIC04NiwxNyArODUsMTcgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJl
ZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fY2VsbHNX
ZXJlQ3JlYXRlZCkKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDZWxsKGNvbHVtbklkZW50
aWZpZXIpOwogICAgICAgICB9LCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZh
dGUKIAotICAgIF9tYWtlT3V0bGV0OiBmdW5jdGlvbihuYW1lLCBlbGVtZW50KQorICAgIF9tYWtl
T3V0bGV0KG5hbWUsIGVsZW1lbnQpCiAgICAgewogICAgICAgICB0aGlzLl9vdXRsZXRzW25hbWVd
ID0gZWxlbWVudDsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfbWFrZU5hbWVDZWxsOiBmdW5jdGlvbigpCisgICAgX21ha2VOYW1lQ2VsbCgpCiAgICAgewog
ICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7
CiAKQEAgLTExOSwxOCArMTE4LDE4IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVEYXRhR3JpZE5v
ZGUucHJvdG90eXBlID0gewogICAgICAgICByZWZsZWN0aW9uTGFiZWwudGV4dENvbnRlbnQgPSAi
IFx1MjAxNCAiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZsZWN0aW9uIik7CiAKICAgICAg
ICAgcmV0dXJuIGZyYWdtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUNlbGw6IGZ1
bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCisgICAgX3VwZGF0ZUNlbGwoY29sdW1uSWRlbnRpZmll
cikKICAgICB7CiAgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YVtjb2x1bW5JZGVudGlmaWVy
XTsKICAgICAgICAgaWYgKGNvbHVtbklkZW50aWZpZXIgPT09ICJuYW1lIikKICAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZU5hbWVDZWxsRGF0YShkYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgdGhpcy5fb3V0bGV0c1tjb2x1bW5JZGVudGlmaWVyXS50ZXh0Q29udGVudCA9IGRhdGE7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlTmFtZUNlbGxEYXRhOiBmdW5jdGlvbihkYXRhKQor
ICAgIF91cGRhdGVOYW1lQ2VsbERhdGEoZGF0YSkKICAgICB7CiAgICAgICAgIHZhciBsYXllciA9
IHRoaXMuX2xheWVyOwogICAgICAgICB2YXIgbGFiZWwgPSB0aGlzLl9vdXRsZXRzLmxhYmVsOwpA
QCAtMTU3LDEzICsxNTYsMTEgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURhdGFHcmlkTm9kZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoInJlZmxlY3Rp
b24iKTsKICAgICAgICAgZWxzZSBpZiAobGF5ZXIucHNldWRvRWxlbWVudCkKICAgICAgICAgICAg
IGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicHNldWRvLWVsZW1lbnQiKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9nb1RvQXJyb3dXYXNDbGlja2VkOiBmdW5jdGlvbigpCisgICAgX2dvVG9BcnJvd1dh
c0NsaWNrZWQoKQogICAgIHsKICAgICAgICAgdmFyIGRvbU5vZGUgPSBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIubm9kZUZvcklkKHRoaXMuX2xheWVyLm5vZGVJZCk7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93TWFpbkZyYW1lRE9NVHJlZShkb21Ob2Rl
LCB0cnVlKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGF0YUdyaWROb2Rl
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4
IDM2YTE4NWUuLjNmZDg4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsMzIgKzIzLDI4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFu
ZWwgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5l
bCA9IGNsYXNzIExheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbAogewotICAgIFdlYkluc3BlY3Rvci5ET01EZXRhaWxz
U2lkZWJhclBhbmVsLmNhbGwodGhpcywgImxheWVyLXRyZWUiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkxheWVycyIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheWVyIiksICJJbWFnZXMvTmF2
aWdhdGlvbkl0ZW1MYXllcnMuc3ZnIiwgIjMiKTsKLQotICAgIHRoaXMuX2RhdGFHcmlkTm9kZXNC
eUxheWVySWQgPSB7fTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lKTsKLQotICAg
IFdlYkluc3BlY3Rvci5zaG93U2hhZG93RE9NU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dTaGFkb3dET01TZXR0aW5n
Q2hhbmdlZCwgdGhpcyk7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIo
ImxheWVyLXRyZWUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheWVycyIpLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkxheWVyIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1MYXllcnMuc3ZnIiwg
IjMiKTsKIAotICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl93aW5k
b3dSZXNpemVkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9kYXRhR3JpZE5vZGVzQnlMYXll
cklkID0ge307CiAKLSAgICB0aGlzLl9idWlsZExheWVySW5mb1NlY3Rpb24oKTsKLSAgICB0aGlz
Ll9idWlsZERhdGFHcmlkU2VjdGlvbigpOwotICAgIHRoaXMuX2J1aWxkQm90dG9tQmFyKCk7Ci19
OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibGF5ZXItdHJlZSIpOwogCi1X
ZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9
ICJsYXllci10cmVlIjsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTaGFkb3dET01TZXR0aW5n
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhp
cy5fc2hvd1NoYWRvd0RPTVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLkxh
eWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICBfX3Byb3Rv
X186IFdlYkluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICAg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX3dpbmRvd1Jlc2l6ZWQu
YmluZCh0aGlzKSk7CiAKKyAgICAgICAgdGhpcy5fYnVpbGRMYXllckluZm9TZWN0aW9uKCk7Cisg
ICAgICAgIHRoaXMuX2J1aWxkRGF0YUdyaWRTZWN0aW9uKCk7CisgICAgICAgIHRoaXMuX2J1aWxk
Qm90dG9tQmFyKCk7CisgICAgfQorICAgIAogICAgIC8vIERldGFpbHNTaWRlYmFyUGFuZWwgT3Zl
cnJpZGVzLgogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAg
ICAgICBXZWJJbnNwZWN0b3IubGF5ZXJUcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5MYXllclRyZWVNYW5hZ2VyLkV2ZW50LkxheWVyVHJlZURpZENoYW5nZSwgdGhpcy5f
bGF5ZXJUcmVlRGlkQ2hhbmdlLCB0aGlzKTsKIApAQCAtNTcsMTYgKzUzLDE2IEBAIFdlYkluc3Bl
Y3Rvci5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5uZWVkc1JlZnJlc2goKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1Np
ZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd24uY2FsbCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IubGF5ZXJUcmVlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5MYXllclRyZWVNYW5hZ2VyLkV2ZW50LkxheWVyVHJlZURpZENoYW5nZSwgdGhpcy5fbGF5ZXJU
cmVlRGlkQ2hhbmdlLCB0aGlzKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1Np
ZGViYXJQYW5lbC5wcm90b3R5cGUuaGlkZGVuLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaCgpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuZG9tTm9kZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc1LDM1ICs3MSwzNSBA
QCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLl91bmZpbHRlcmVkQ2hpbGRMYXllcnMgPSBjaGlsZExheWVyczsK
ICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZURpc3BsYXlXaXRoTGF5ZXJzKGxheWVyRm9yTm9kZSwg
Y2hpbGRMYXllcnMpOwogICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gRE9NRGV0YWlsc1NpZGViYXJQYW5lbCBPdmVycmlkZXMKIAotICAgIHN1cHBvcnRzRE9N
Tm9kZTogZnVuY3Rpb24obm9kZVRvSW5zcGVjdCkKKyAgICBzdXBwb3J0c0RPTU5vZGUobm9kZVRv
SW5zcGVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IubGF5ZXJUcmVlTWFu
YWdlci5zdXBwb3J0ZWQgJiYgbm9kZVRvSW5zcGVjdC5ub2RlVHlwZSgpID09PSBOb2RlLkVMRU1F
TlRfTk9ERTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9sYXllclRy
ZWVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9sYXllclRyZWVEaWRDaGFuZ2UoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLm5lZWRzUmVmcmVzaCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLnNlbGVjdGVkKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlRGlzcGxheVdpdGhMYXllcnMo
dGhpcy5fbGF5ZXJGb3JOb2RlLCB0aGlzLl91bmZpbHRlcmVkQ2hpbGRMYXllcnMpOwotICAgIH0s
CisgICAgfQogCi0gICAgX3dpbmRvd1Jlc2l6ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF93aW5k
b3dSZXNpemVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXIgJiYgdGhp
cy5fcG9wb3Zlci52aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlUG9wb3ZlckZvclNl
bGVjdGVkTm9kZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2J1aWxkTGF5ZXJJbmZvU2VjdGlv
bjogZnVuY3Rpb24oKQorICAgIF9idWlsZExheWVySW5mb1NlY3Rpb24oKQogICAgIHsKICAgICAg
ICAgdmFyIHJvd3MgPSB0aGlzLl9sYXllckluZm9Sb3dzID0ge307CiAgICAgICAgIHZhciByb3dz
QXJyYXkgPSBbXTsKQEAgLTEyMiw5ICsxMTgsOSBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0
YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2xheWVySW5mb1Nl
Y3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJsYXllci1pbmZvIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJMYXllciBJbmZvIiksIFt0aGlzLl9ub0xheWVySW5mb3JtYXRp
b25Hcm91cF0pOwogCiAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fbGF5ZXJJbmZvU2VjdGlvbi5lbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9idWls
ZERhdGFHcmlkU2VjdGlvbjogZnVuY3Rpb24oKQorICAgIF9idWlsZERhdGFHcmlkU2VjdGlvbigp
CiAgICAgewogICAgICAgICB2YXIgY29sdW1ucyA9IHtuYW1lOiB7fSwgcGFpbnRDb3VudDoge30s
IG1lbW9yeToge319OwogCkBAIC0xNjAsOSArMTU2LDkgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJl
ZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBlbGVtZW50
ID0gdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZChzZWN0aW9uLmVsZW1lbnQpOwogICAg
ICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoc2VjdGlvbi5pZGVudGlmaWVyKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9idWlsZEJvdHRvbUJhcjogZnVuY3Rpb24oKQorICAgIF9idWlsZEJvdHRv
bUJhcigpCiAgICAgewogICAgICAgICB2YXIgYm90dG9tQmFyID0gdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgYm90dG9tQmFy
LmNsYXNzTmFtZSA9ICJib3R0b20tYmFyIjsKQEAgLTE3Miw5ICsxNjgsOSBAQCBXZWJJbnNwZWN0
b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
dGhpcy5fbGF5ZXJzTWVtb3J5TGFiZWwgPSBib3R0b21CYXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2IikpOwogICAgICAgICB0aGlzLl9sYXllcnNNZW1vcnlMYWJlbC5j
bGFzc05hbWUgPSAibGF5ZXJzLW1lbW9yeS1sYWJlbCI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
c29ydERhdGFHcmlkOiBmdW5jdGlvbigpCisgICAgX3NvcnREYXRhR3JpZCgpCiAgICAgewogICAg
ICAgICB2YXIgc29ydENvbHVtbklkZW50aWZpZXIgPSB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1u
SWRlbnRpZmllcjsKIApAQCAtMTg3LDkgKzE4Myw5IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVE
ZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9kYXRhR3Jp
ZC5zb3J0Tm9kZXMoY29tcGFyYXRvcik7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJGb3JT
ZWxlY3RlZE5vZGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWxlY3RlZERhdGFHcmlkTm9k
ZUNoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICBfc2VsZWN0ZWREYXRhR3JpZE5vZGVDaGFuZ2VkKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpIHsKICAgICAg
ICAgICAgIHRoaXMuX2hpZ2hsaWdodFNlbGVjdGVkTm9kZSgpOwpAQCAtMTk4LDI3ICsxOTQsMjcg
QEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGln
aGxpZ2h0KCk7CiAgICAgICAgICAgICB0aGlzLl9oaWRlUG9wb3ZlcigpOwogICAgICAgICB9Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWRHYWluZWRGb2N1czogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2RhdGFHcmlkR2FpbmVkRm9jdXMoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9o
aWdobGlnaHRTZWxlY3RlZE5vZGUoKTsKICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JTZWxl
Y3RlZE5vZGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhR3JpZExvc3RGb2N1czogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlkTG9zdEZvY3VzKGV2ZW50KQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAg
ICAgICAgIHRoaXMuX2hpZGVQb3BvdmVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdy
aWRXYXNDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWRXYXNDbGlja2VkKGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSAmJiBl
dmVudC50YXJnZXQucGFyZW50Tm9kZS5jbGFzc0xpc3QuY29udGFpbnMoImZpbGxlciIpKQogICAg
ICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlLmRlc2VsZWN0KCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfaGlnaGxpZ2h0U2VsZWN0ZWROb2RlOiBmdW5jdGlvbigpCisgICAgX2hp
Z2hsaWdodFNlbGVjdGVkTm9kZSgpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0g
dGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlOwogICAgICAgICBpZiAoIWRhdGFHcmlkTm9kZSkK
QEAgLTIyOSw5ICsyMjUsOSBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFn
ZXIuaGlnaGxpZ2h0UmVjdChsYXllci5ib3VuZHMsIHRydWUpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShsYXll
ci5ub2RlSWQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZURpc3BsYXlXaXRoTGF5ZXJz
OiBmdW5jdGlvbihsYXllckZvck5vZGUsIGNoaWxkTGF5ZXJzKQorICAgIF91cGRhdGVEaXNwbGF5
V2l0aExheWVycyhsYXllckZvck5vZGUsIGNoaWxkTGF5ZXJzKQogICAgIHsKICAgICAgICAgaWYg
KCFXZWJJbnNwZWN0b3Iuc2hvd1NoYWRvd0RPTVNldHRpbmcudmFsdWUpIHsKICAgICAgICAgICAg
IGNoaWxkTGF5ZXJzID0gY2hpbGRMYXllcnMuZmlsdGVyKGZ1bmN0aW9uKGxheWVyKSB7CkBAIC0y
NDUsMTEgKzI0MSwxMSBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fbGF5ZXJGb3JOb2RlID0gbGF5ZXJGb3JO
b2RlOwogICAgICAgICB0aGlzLl9jaGlsZExheWVycyA9IGNoaWxkTGF5ZXJzOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3VwZGF0ZUxheWVySW5mb1NlY3Rpb246IGZ1bmN0aW9uKGxheWVyKQorICAg
IF91cGRhdGVMYXllckluZm9TZWN0aW9uKGxheWVyKQogICAgIHsKLSAgICAgICAgY29uc3QgZW1E
YXNoID0gIlx1MjAxNCI7CisgICAgICAgIHZhciBlbURhc2ggPSAiXHUyMDE0IjsKIAogICAgICAg
ICB0aGlzLl9sYXllckluZm9TZWN0aW9uLmdyb3VwcyA9IGxheWVyID8gW3RoaXMuX2xheWVySW5m
b0dyb3VwXSA6IFt0aGlzLl9ub0xheWVySW5mb3JtYXRpb25Hcm91cF07CiAKQEAgLTI2MCw5ICsy
NTYsOSBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX2xheWVySW5mb1Jvd3NbIldpZHRoIl0udmFsdWUgPSBsYXll
ci5jb21wb3NpdGVkQm91bmRzLndpZHRoICsgInB4IjsKICAgICAgICAgdGhpcy5fbGF5ZXJJbmZv
Um93c1siSGVpZ2h0Il0udmFsdWUgPSBsYXllci5jb21wb3NpdGVkQm91bmRzLmhlaWdodCArICJw
eCI7CiAgICAgICAgIHRoaXMuX2xheWVySW5mb1Jvd3NbIlBhaW50cyJdLnZhbHVlID0gbGF5ZXIu
cGFpbnRDb3VudCArICIiOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZURhdGFHcmlkOiBm
dW5jdGlvbihsYXllckZvck5vZGUsIGNoaWxkTGF5ZXJzKQorICAgIF91cGRhdGVEYXRhR3JpZChs
YXllckZvck5vZGUsIGNoaWxkTGF5ZXJzKQogICAgIHsKICAgICAgICAgdmFyIGRhdGFHcmlkID0g
dGhpcy5fZGF0YUdyaWQ7CiAKQEAgLTI5MSwxOCArMjg3LDE4IEBAIFdlYkluc3BlY3Rvci5MYXll
clRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc29y
dERhdGFHcmlkKCk7CiAKICAgICAgICAgdGhpcy5fY2hpbGRMYXllcnNSb3cuZGF0YUdyaWQgPSAh
aXNFbXB0eU9iamVjdChjaGlsZExheWVycykgPyB0aGlzLl9kYXRhR3JpZCA6IG51bGw7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWROb2RlRm9yTGF5ZXI6IGZ1bmN0aW9uKGxheWVyKQor
ICAgIF9kYXRhR3JpZE5vZGVGb3JMYXllcihsYXllcikKICAgICB7CiAgICAgICAgIHZhciBub2Rl
ID0gbmV3IFdlYkluc3BlY3Rvci5MYXllclRyZWVEYXRhR3JpZE5vZGUobGF5ZXIpOwogCiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkTm9kZXNCeUxheWVySWRbbGF5ZXIubGF5ZXJJZF0gPSBub2RlOwog
CiAgICAgICAgIHJldHVybiBub2RlOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU1ldHJp
Y3M6IGZ1bmN0aW9uKGxheWVyRm9yTm9kZSwgY2hpbGRMYXllcnMpCisgICAgX3VwZGF0ZU1ldHJp
Y3MobGF5ZXJGb3JOb2RlLCBjaGlsZExheWVycykKICAgICB7CiAgICAgICAgIHZhciBsYXllckNv
dW50ID0gMDsKICAgICAgICAgdmFyIHRvdGFsTWVtb3J5ID0gMDsKQEAgLTMxOSw5ICszMTUsOSBA
QCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdGhpcy5fbGF5ZXJzQ291bnRMYWJlbC50ZXh0Q29udGVudCA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiTGF5ZXIgQ291bnQ6ICVkIikuZm9ybWF0KGxheWVyQ291bnQpOwogICAg
ICAgICB0aGlzLl9sYXllcnNNZW1vcnlMYWJlbC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiTWVtb3J5OiAlcyIpLmZvcm1hdChOdW1iZXIuYnl0ZXNUb1N0cmluZyh0b3RhbE1l
bW9yeSkpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dQb3BvdmVyRm9yU2VsZWN0ZWROb2Rl
OiBmdW5jdGlvbigpCisgICAgX3Nob3dQb3BvdmVyRm9yU2VsZWN0ZWROb2RlKCkKICAgICB7CiAg
ICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGU7CiAg
ICAgICAgIGlmICghZGF0YUdyaWROb2RlKQpAQCAtMzMxLDkgKzMyNyw5IEBAIFdlYkluc3BlY3Rv
ci5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGlmIChkYXRhR3JpZE5vZGUgPT09IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSkKICAgICAg
ICAgICAgICAgICB0aGlzLl91cGRhdGVQb3BvdmVyRm9yU2VsZWN0ZWROb2RlKGNvbnRlbnQpOwog
ICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVBvcG92
ZXJGb3JTZWxlY3RlZE5vZGU6IGZ1bmN0aW9uKGNvbnRlbnQpCisgICAgX3VwZGF0ZVBvcG92ZXJG
b3JTZWxlY3RlZE5vZGUoY29udGVudCkKICAgICB7CiAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUg
PSB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGU7CiAgICAgICAgIGlmICghZGF0YUdyaWROb2Rl
KQpAQCAtMzQ5LDE1ICszNDUsMTUgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29u
dGVudDsKIAogICAgICAgICBwb3BvdmVyLnByZXNlbnQodGFyZ2V0RnJhbWUucGFkKDIpLCBbV2Vi
SW5zcGVjdG9yLlJlY3RFZGdlLk1JTl9YXSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGlkZVBv
cG92ZXI6IGZ1bmN0aW9uKCkKKyAgICBfaGlkZVBvcG92ZXIoKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX3BvcG92ZXIpCiAgICAgICAgICAgICB0aGlzLl9wb3BvdmVyLmRpc21pc3MoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9jb250ZW50Rm9yUG9wb3ZlcjogZnVuY3Rpb24obGF5ZXIsIGNh
bGxiYWNrKQorICAgIF9jb250ZW50Rm9yUG9wb3ZlcihsYXllciwgY2FsbGJhY2spCiAgICAgewog
ICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAg
ICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJsYXllci10cmVlLXBvcG92ZXIiOwpAQCAtMzc4LDkg
KzM3NCw5IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKIAogICAgICAgICByZXR1cm4gY29udGVu
dDsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3B1bGF0ZUxpc3RPZkNvbXBvc2l0aW5nUmVhc29u
czogZnVuY3Rpb24obGlzdCwgY29tcG9zaXRpbmdSZWFzb25zKQorICAgIF9wb3B1bGF0ZUxpc3RP
ZkNvbXBvc2l0aW5nUmVhc29ucyhsaXN0LCBjb21wb3NpdGluZ1JlYXNvbnMpCiAgICAgewogICAg
ICAgICBmdW5jdGlvbiBhZGRSZWFzb24ocmVhc29uKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURh
dGFHcmlkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5
b3V0VGltZWxpbmVEYXRhR3JpZC5qcwppbmRleCA1ZmIwOTQyLi5kOGJlMTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGlu
ZURhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0xheW91dFRpbWVsaW5lRGF0YUdyaWQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIwICsyMywxNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1l
bGluZURhdGFHcmlkID0gZnVuY3Rpb24odHJlZU91dGxpbmUsIGNvbHVtbnMsIGRlbGVnYXRlLCBl
ZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNrKQorV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5l
RGF0YUdyaWQgPSBjbGFzcyBMYXlvdXRUaW1lbGluZURhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lRGF0YUdyaWQKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3Jp
ZC5jYWxsKHRoaXMsIHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNr
LCBkZWxldGVDYWxsYmFjayk7Ci19OwotCi1XZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRh
R3JpZC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZURhdGFHcmlkLAorICAgIGNvbnN0cnVjdG9yKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBk
ZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHN1
cGVyKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVD
YWxsYmFjayk7CisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBjYWxsRnJhbWVQb3Bv
dmVyQW5jaG9yRWxlbWVudDogZnVuY3Rpb24oKQorICAgIGNhbGxGcmFtZVBvcG92ZXJBbmNob3JF
bGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTm9kZS5lbGVtZW50
V2l0aENvbHVtbklkZW50aWZpZXIoImluaXRpYXRvckNhbGxGcmFtZSIpOwogICAgIH0KIH07Ci0K
LVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURh
dGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0xheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCmluZGV4IGEwNjJhZWUuLmE3NWEzN2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91
dFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0NCArMjMs
MzYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihsYXlvdXRUaW1lbGlu
ZVJlY29yZCwgYmFzZVN0YXJ0VGltZSkKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFH
cmlkTm9kZSA9IGNsYXNzIExheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
RGF0YUdyaWROb2RlLmNhbGwodGhpcywgZmFsc2UsIG51bGwpOwotCi0gICAgdGhpcy5fcmVjb3Jk
ID0gbGF5b3V0VGltZWxpbmVSZWNvcmQ7Ci0gICAgdGhpcy5fYmFzZVN0YXJ0VGltZSA9IGJhc2VT
dGFydFRpbWUgfHwgMDsKLX07Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9i
amVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVj
dC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkxheW91dFRp
bWVsaW5lRGF0YUdyaWROb2RlKTsKLQotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdy
aWROb2RlLkljb25TdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKLVdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZURhdGFHcmlkTm9kZS5TdWJ0aXRsZVN0eWxlQ2xhc3NOYW1lID0gInN1YnRpdGxlIjsK
KyAgICBjb25zdHJ1Y3RvcihsYXlvdXRUaW1lbGluZVJlY29yZCwgYmFzZVN0YXJ0VGltZSkKKyAg
ICB7CisgICAgICAgIHN1cGVyKGZhbHNlLCBudWxsKTsKIAotV2ViSW5zcGVjdG9yLkxheW91dFRp
bWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLAotICAgIF9fcHJvdG9fXzogV2ViSW5z
cGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fcmVj
b3JkID0gbGF5b3V0VGltZWxpbmVSZWNvcmQ7CisgICAgICAgIHRoaXMuX2Jhc2VTdGFydFRpbWUg
PSBiYXNlU3RhcnRUaW1lIHx8IDA7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
cmVjb3JkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmQ7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgcmVjb3JkcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3Jl
Y29yZF07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVjb3JkOwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlQ2VsbENvbnRl
bnQ6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCisgICAgY3JlYXRlQ2VsbENvbnRl
bnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCkKICAgICB7Ci0gICAgICAgIGNvbnN0IGVtcHR5VmFs
dWVQbGFjZWhvbGRlclN0cmluZyA9ICJcdTIwMTQiOworICAgICAgICB2YXIgZW1wdHlWYWx1ZVBs
YWNlaG9sZGVyU3RyaW5nID0gIlx1MjAxNCI7CiAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuZGF0
YVtjb2x1bW5JZGVudGlmaWVyXTsKIAogICAgICAgICBzd2l0Y2ggKGNvbHVtbklkZW50aWZpZXIp
IHsKQEAgLTg0LDMgKzc2LDYgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWRO
b2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5UaW1lbGluZURh
dGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbENvbnRlbnQuY2FsbCh0aGlzLCBjb2x1bW5J
ZGVudGlmaWVyLCBjZWxsKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxp
bmVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xhc3NOYW1lID0gImljb24iOworV2ViSW5zcGVjdG9y
LkxheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLlN1YnRpdGxlU3R5bGVDbGFzc05hbWUgPSAic3Vi
dGl0bGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTGF5b3V0VGltZWxpbmVPdmVydmlld0dyYXBoLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVPdmVydmlld0dyYXBoLmpzCmlu
ZGV4IGY3NDg5ZGMuLjI1ZTczZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZU92
ZXJ2aWV3R3JhcGguanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0y
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsMzggKzIzLDM0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFw
aCA9IGZ1bmN0aW9uKHRpbWVsaW5lKQorV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lT3ZlcnZp
ZXdHcmFwaCA9IGNsYXNzIExheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCBleHRlbmRzIFdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlld0dyYXBoLmNhbGwodGhpcywgdGltZWxpbmUpOwotCi0gICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5T
dHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9sYXlvdXRUaW1lbGluZSA9IHRpbWVsaW5lOwot
ICAgIHRoaXMuX2xheW91dFRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9sYXlvdXRUaW1lbGluZVJlY29yZEFkZGVk
LCB0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZSkKKyAgICB7CisgICAgICAgIHN1cGVy
KHRpbWVsaW5lKTsKIAotICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFycyA9IFtdOworICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibGF5b3V0Iik7CiAKLSAgICB0aGlzLnJlc2V0
KCk7Ci19OworICAgICAgICB0aGlzLl9sYXlvdXRUaW1lbGluZSA9IHRpbWVsaW5lOworICAgICAg
ICB0aGlzLl9sYXlvdXRUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1l
bGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbGF5b3V0VGltZWxpbmVSZWNvcmRBZGRlZCwg
dGhpcyk7CiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3JhcGguU3R5bGVD
bGFzc05hbWUgPSAibGF5b3V0IjsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVSZWNvcmRCYXJzID0g
W107CiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVPdmVydmll
d0dyYXBoLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFw
aC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMucmVzZXQoKTsKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgcmVzZXQoKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUucmVzZXQuY2FsbCh0
aGlzKTsKIAogICAgICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhck1hcCA9IG5ldyBNYXA7CiAK
ICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUudXBk
YXRlTGF5b3V0LmNhbGwodGhpcyk7CiAKQEAgLTg0LDExICs4MCwxMSBAQCBXZWJJbnNwZWN0b3Iu
TGF5b3V0VGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX3RpbWVsaW5lUmVjb3JkQmFyc1tyZWNvcmRCYXJJbmRleF0ucmVjb3JkcyA9IG51bGw7CiAg
ICAgICAgICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnNbcmVjb3JkQmFySW5kZXhdLmVsZW1l
bnQucmVtb3ZlKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUK
IAotICAgIF9sYXlvdXRUaW1lbGluZVJlY29yZEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
bGF5b3V0VGltZWxpbmVSZWNvcmRBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMubmVl
ZHNMYXlvdXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanMKaW5kZXggMTM3
NzZlYi4uYzU3MjE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lVmlldy5qcwpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywx
NTEgKzIzLDE0NiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcgPSBmdW5jdGlvbih0aW1lbGluZSkKK1dl
Ykluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcgPSBjbGFzcyBMYXlvdXRUaW1lbGluZVZpZXcg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lVmlldy5jYWxsKHRoaXMsIHRpbWVsaW5lKTsKLQotICAgIGNvbnNvbGUuYXNzZXJ0KHRp
bWVsaW5lLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dCB8
fCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SdW5Mb29wKTsKKyAgICBjb25zdHJ1
Y3Rvcih0aW1lbGluZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHRpbWVsaW5lKTsKIAotICAgIHRo
aXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVt
ZW50U2VsZWN0ZWQuYmluZCh0aGlzKTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91
dGxpbmUub25kZXNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50RGVzZWxlY3RlZC5iaW5kKHRoaXMp
OwotICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuSGlkZURpc2Nsb3N1cmVC
dXR0b25zU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0
bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmll
dy5UcmVlT3V0bGluZVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGlt
ZWxpbmUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTGF5b3V0IHx8
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlJ1bkxvb3ApOwogCi0gICAgdmFyIGNv
bHVtbnMgPSB7ZXZlbnRUeXBlOiB7fSwgaW5pdGlhdG9yQ2FsbEZyYW1lOiB7fSwgd2lkdGg6IHt9
LCBoZWlnaHQ6IHt9LCBzdGFydFRpbWU6IHt9LCBkdXJhdGlvbjoge319OworICAgICAgICB0aGlz
Lm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVu
dFNlbGVjdGVkLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVl
T3V0bGluZS5vbmRlc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnREZXNlbGVjdGVkLmJpbmQodGhp
cyk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuSGlkZURpc2Ns
b3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRl
YmFyVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJsYXlvdXQiKTsKIAotICAgIGNv
bHVtbnMuZXZlbnRUeXBlLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIik7Ci0g
ICAgY29sdW1ucy5ldmVudFR5cGUud2lkdGggPSAiMTUlIjsKKyAgICAgICAgdmFyIGNvbHVtbnMg
PSB7ZXZlbnRUeXBlOiB7fSwgaW5pdGlhdG9yQ2FsbEZyYW1lOiB7fSwgd2lkdGg6IHt9LCBoZWln
aHQ6IHt9LCBzdGFydFRpbWU6IHt9LCBkdXJhdGlvbjoge319OwogCi0gICAgdmFyIHR5cGVUb0xh
YmVsTWFwID0gbmV3IE1hcDsKLSAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVjdG9yLkxheW91
dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZSkgewotICAgICAgICB2YXIgdmFsdWUgPSBXZWJJbnNw
ZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlW2tleV07Ci0gICAgICAgIHR5cGVU
b0xhYmVsTWFwLnNldCh2YWx1ZSwgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLmRp
c3BsYXlOYW1lRm9yRXZlbnRUeXBlKHZhbHVlKSk7Ci0gICAgfQorICAgICAgICBjb2x1bW5zLmV2
ZW50VHlwZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHlwZSIpOworICAgICAgICBj
b2x1bW5zLmV2ZW50VHlwZS53aWR0aCA9ICIxNSUiOwogCi0gICAgY29sdW1ucy5ldmVudFR5cGUu
c2NvcGVCYXIgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5jcmVhdGVDb2x1bW5TY29w
ZUJhcigibGF5b3V0IiwgdHlwZVRvTGFiZWxNYXApOwotICAgIGNvbHVtbnMuZXZlbnRUeXBlLmhp
ZGRlbiA9IHRydWU7Ci0KLSAgICBjb2x1bW5zLmluaXRpYXRvckNhbGxGcmFtZS50aXRsZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiSW5pdGlhdG9yIik7Ci0gICAgY29sdW1ucy5pbml0aWF0b3JD
YWxsRnJhbWUud2lkdGggPSAiMjUlIjsKKyAgICAgICAgdmFyIHR5cGVUb0xhYmVsTWFwID0gbmV3
IE1hcDsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGlu
ZVJlY29yZC5FdmVudFR5cGUpIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rv
ci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGVba2V5XTsKKyAgICAgICAgICAgIHR5cGVU
b0xhYmVsTWFwLnNldCh2YWx1ZSwgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLmRp
c3BsYXlOYW1lRm9yRXZlbnRUeXBlKHZhbHVlKSk7CisgICAgICAgIH0KIAotICAgIGNvbHVtbnMu
d2lkdGgudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIik7Ci0gICAgY29sdW1u
cy53aWR0aC53aWR0aCA9ICI4JSI7CisgICAgICAgIGNvbHVtbnMuZXZlbnRUeXBlLnNjb3BlQmFy
ID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuY3JlYXRlQ29sdW1uU2NvcGVCYXIoImxh
eW91dCIsIHR5cGVUb0xhYmVsTWFwKTsKKyAgICAgICAgY29sdW1ucy5ldmVudFR5cGUuaGlkZGVu
ID0gdHJ1ZTsKIAotICAgIGNvbHVtbnMuaGVpZ2h0LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJIZWlnaHQiKTsKLSAgICBjb2x1bW5zLmhlaWdodC53aWR0aCA9ICI4JSI7CisgICAgICAg
IGNvbHVtbnMuaW5pdGlhdG9yQ2FsbEZyYW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJJbml0aWF0b3IiKTsKKyAgICAgICAgY29sdW1ucy5pbml0aWF0b3JDYWxsRnJhbWUud2lkdGgg
PSAiMjUlIjsKIAotICAgIGNvbHVtbnMuc3RhcnRUaW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTdGFydCBUaW1lIik7Ci0gICAgY29sdW1ucy5zdGFydFRpbWUud2lkdGggPSAiOCUi
OwotICAgIGNvbHVtbnMuc3RhcnRUaW1lLmFsaWduZWQgPSAicmlnaHQiOworICAgICAgICBjb2x1
bW5zLndpZHRoLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIpOworICAgICAg
ICBjb2x1bW5zLndpZHRoLndpZHRoID0gIjglIjsKIAotICAgIGNvbHVtbnMuZHVyYXRpb24udGl0
bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIik7Ci0gICAgY29sdW1ucy5kdXJh
dGlvbi53aWR0aCA9ICI4JSI7Ci0gICAgY29sdW1ucy5kdXJhdGlvbi5hbGlnbmVkID0gInJpZ2h0
IjsKKyAgICAgICAgY29sdW1ucy5oZWlnaHQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkhlaWdodCIpOworICAgICAgICBjb2x1bW5zLmhlaWdodC53aWR0aCA9ICI4JSI7CiAKLSAgICBm
b3IgKHZhciBjb2x1bW4gaW4gY29sdW1ucykKLSAgICAgICAgY29sdW1uc1tjb2x1bW5dLnNvcnRh
YmxlID0gdHJ1ZTsKKyAgICAgICAgY29sdW1ucy5zdGFydFRpbWUudGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKKyAgICAgICAgY29sdW1ucy5zdGFydFRpbWUud2lk
dGggPSAiOCUiOworICAgICAgICBjb2x1bW5zLnN0YXJ0VGltZS5hbGlnbmVkID0gInJpZ2h0IjsK
IAotICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURh
dGFHcmlkKHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZSwgY29sdW1ucyk7Ci0gICAg
dGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRh
R3JpZC5FdmVudC5GaWx0ZXJzRGlkQ2hhbmdlLCB0aGlzLl9kYXRhR3JpZEZpbHRlcnNEaWRDaGFu
Z2UsIHRoaXMpOwotICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX2RhdGFHcmlkTm9k
ZVNlbGVjdGVkLCB0aGlzKTsKKyAgICAgICAgY29sdW1ucy5kdXJhdGlvbi50aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiRHVyYXRpb24iKTsKKyAgICAgICAgY29sdW1ucy5kdXJhdGlvbi53
aWR0aCA9ICI4JSI7CisgICAgICAgIGNvbHVtbnMuZHVyYXRpb24uYWxpZ25lZCA9ICJyaWdodCI7
CiAKLSAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJzdGFydFRpbWUi
OwotICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5T
b3J0T3JkZXIuQXNjZW5kaW5nOworICAgICAgICBmb3IgKHZhciBjb2x1bW4gaW4gY29sdW1ucykK
KyAgICAgICAgICAgIGNvbHVtbnNbY29sdW1uXS5zb3J0YWJsZSA9IHRydWU7CiAKLSAgICB0aGlz
Ll9ob3ZlcmVkVHJlZUVsZW1lbnQgPSBudWxsOwotICAgIHRoaXMuX2hvdmVyZWREYXRhR3JpZE5v
ZGUgPSBudWxsOwotICAgIHRoaXMuX3Nob3dpbmdIaWdobGlnaHQgPSBmYWxzZTsKLSAgICB0aGlz
Ll9zaG93aW5nSGlnaGxpZ2h0Rm9yUmVjb3JkID0gbnVsbDsKKyAgICAgICAgdGhpcy5fZGF0YUdy
aWQgPSBuZXcgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWQodGhpcy5uYXZpZ2F0
aW9uU2lkZWJhclRyZWVPdXRsaW5lLCBjb2x1bW5zKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5FdmVudC5GaWx0
ZXJzRGlkQ2hhbmdlLCB0aGlzLl9kYXRhR3JpZEZpbHRlcnNEaWRDaGFuZ2UsIHRoaXMpOworICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5FdmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZE5vZGVTZWxlY3RlZCwg
dGhpcyk7CiAKLSAgICB0aGlzLl9kYXRhR3JpZC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlb3ZlciIsIHRoaXMuX21vdXNlT3ZlckRhdGFHcmlkLmJpbmQodGhpcykpOwotICAgIHRoaXMu
X2RhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX21v
dXNlTGVhdmVEYXRhR3JpZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFy
VHJlZU91dGxpbmUuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl9t
b3VzZU92ZXJUcmVlT3V0bGluZS5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRl
YmFyVHJlZU91dGxpbmUuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhp
cy5fbW91c2VMZWF2ZVRyZWVPdXRsaW5lLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9kYXRh
R3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJzdGFydFRpbWUiOworICAgICAgICB0aGlzLl9k
YXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFzY2Vu
ZGluZzsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5faG92ZXJlZFRyZWVF
bGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5faG92ZXJlZERhdGFHcmlkTm9kZSA9IG51bGw7
CisgICAgICAgIHRoaXMuX3Nob3dpbmdIaWdobGlnaHQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5f
c2hvd2luZ0hpZ2hsaWdodEZvclJlY29yZCA9IG51bGw7CiAKLSAgICB0aW1lbGluZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5f
bGF5b3V0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlk
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fbW91c2VPdmVyRGF0
YUdyaWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX21vdXNlTGVhdmVEYXRhR3JpZC5iaW5kKHRo
aXMpKTsKKyAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fbW91c2VPdmVyVHJlZU91dGxpbmUu
YmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9tb3VzZUxlYXZlVHJl
ZU91dGxpbmUuYmluZCh0aGlzKSk7CiAKLSAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9IFtdOwot
fTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxheW91dCIpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAKLVdl
Ykluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUgPSAibGF5b3V0IjsK
LVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcuVHJlZU91dGxpbmVTdHlsZUNsYXNzTmFt
ZSA9ICJsYXlvdXQiOworICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbGF5b3V0VGltZWxpbmVSZWNv
cmRBZGRlZCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3
LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUsCisg
ICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgbmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZUxhYmVsKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZHMiKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwog
CiAgICAgICAgIHRoaXMuX3VwZGF0ZUhpZ2hsaWdodCgpOwogCiAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnNob3duKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAg
ICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5faGlkZUhpZ2hsaWdodElmTmVlZGVkKCk7
CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuaGlkZGVuKCk7CiAKICAgICAgICAgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4uY2FsbCh0aGlzKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGZpbHRlckRpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIGZpbHRlckRpZENoYW5n
ZSgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZS5m
aWx0ZXJEaWRDaGFuZ2UuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl91cGRhdGVIaWdobGln
aHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAg
IHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3
LnByb3RvdHlwZS51cGRhdGVMYXlvdXQuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl9kYXRh
R3JpZC51cGRhdGVMYXlvdXQoKTsKIAogICAgICAgICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlY29y
ZHMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9t
RmlsdGVyczogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgbWF0Y2hUcmVlRWxlbWVudEFnYWlu
c3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2RhdGFHcmlkLnRyZWVFbGVtZW50TWF0Y2hlc0FjdGl2ZVNjb3BlRmlsdGVycyh0cmVlRWxlbWVu
dCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHJlc2V0KCkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlLnJlc2V0
LmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5faGlkZUhpZ2hsaWdodElmTmVlZGVkKCk7CiAK
ICAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVzZXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByb3RlY3RlZAogCi0gICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0ZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIHRyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdmFyIGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlkLmRhdGFHcmlk
Tm9kZUZvclRyZWVFbGVtZW50KGV2ZW50LmRhdGEucGF0aENvbXBvbmVudC5nZW5lcmFsVHJlZUVs
ZW1lbnQpOwogICAgICAgICBpZiAoIWRhdGFHcmlkTm9kZSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgZGF0YUdyaWROb2RlLnJldmVhbEFuZFNlbGVjdCgpOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Byb2Nlc3NQZW5kaW5nUmVjb3JkczogZnVuY3Rpb24o
KQorICAgIF9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xODAsOSAr
MTc1LDkgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9IFtdOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2xheW91dFRpbWVsaW5lUmVjb3JkQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9sYXlvdXRUaW1lbGluZVJlY29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IGxheW91dFRpbWVsaW5lUmVjb3JkID0gZXZlbnQuZGF0YS5yZWNvcmQ7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGxheW91dFRpbWVsaW5lUmVjb3JkIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxh
eW91dFRpbWVsaW5lUmVjb3JkIHx8IGxheW91dFRpbWVsaW5lUmVjb3JkIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZVJlY29yZCk7CkBAIC0xOTAsMjcgKzE4NSwyNyBAQCBX
ZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fcGVuZGluZ1JlY29yZHMucHVzaChsYXlvdXRUaW1lbGluZVJlY29yZCk7CiAKICAgICAgICAg
dGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkRmlsdGVy
c0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlkRmlsdGVyc0RpZENoYW5n
ZShldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5l
bC51cGRhdGVGaWx0ZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhR3JpZE5vZGVTZWxl
Y3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlkTm9kZVNlbGVjdGVkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudERlc2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVF
bGVtZW50KQorICAgIF90cmVlRWxlbWVudERlc2VsZWN0ZWQodHJlZUVsZW1lbnQpCiAgICAgewog
ICAgICAgICBpZiAodHJlZUVsZW1lbnQuc3RhdHVzKQogICAgICAgICAgICAgdHJlZUVsZW1lbnQu
c3RhdHVzID0gIiI7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlSGlnaGxpZ2h0KCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQs
IHNlbGVjdGVkQnlVc2VyKQorICAgIF90cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBz
ZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZC5zaG91bGRJ
Z25vcmVTZWxlY3Rpb25FdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM1LDkgKzIz
MCw5IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogCiAg
ICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93T3JpZ2luYWxPckZv
cm1hdHRlZFNvdXJjZUNvZGVMb2NhdGlvbih0cmVlRWxlbWVudC5yZWNvcmQuc291cmNlQ29kZUxv
Y2F0aW9uKTsKICAgICAgICAgdGhpcy5fdXBkYXRlVHJlZUVsZW1lbnRXaXRoQ2xvc2VCdXR0b24o
dHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVRyZWVFbGVtZW50V2l0
aENsb3NlQnV0dG9uOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdXBkYXRlVHJlZUVsZW1l
bnRXaXRoQ2xvc2VCdXR0b24odHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
Y2xvc2VTdGF0dXNCdXR0b24pIHsKICAgICAgICAgICAgIHRyZWVFbGVtZW50LnN0YXR1cyA9IHRo
aXMuX2Nsb3NlU3RhdHVzQnV0dG9uLmVsZW1lbnQ7CkBAIC0yNTAsMTUgKzI0NSwxNSBAQCBXZWJJ
bnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlm
ICh0cmVlRWxlbWVudCA9PT0gdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLnNlbGVj
dGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVHJlZUVsZW1lbnRX
aXRoQ2xvc2VCdXR0b24odHJlZUVsZW1lbnQpOwogICAgICAgICB9LmJpbmQodGhpcykpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2Nsb3NlU3RhdHVzQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2Nsb3NlU3RhdHVzQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LmRl
c2VsZWN0KCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC5zaG93
VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdXBkYXRlSGlnaGxpZ2h0OiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUhp
Z2hsaWdodCgpCiAgICAgewogICAgICAgICB2YXIgcmVjb3JkID0gdGhpcy5faG92ZXJlZE9yU2Vs
ZWN0ZWRSZWNvcmQoKTsKICAgICAgICAgaWYgKCFyZWNvcmQpIHsKQEAgLTI2NywxNyArMjYyLDE3
IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgdGhpcy5fc2hvd0hpZ2hsaWdodEZvclJlY29yZChyZWNvcmQpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3Nob3dIaWdobGlnaHRGb3JSZWNvcmQ6IGZ1bmN0aW9uKHJlY29y
ZCkKKyAgICBfc2hvd0hpZ2hsaWdodEZvclJlY29yZChyZWNvcmQpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fc2hvd2luZ0hpZ2hsaWdodEZvclJlY29yZCA9PT0gcmVjb3JkKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3Nob3dpbmdIaWdobGlnaHRGb3JSZWNvcmQgPSBy
ZWNvcmQ7CiAKLSAgICAgICAgY29uc3QgY29udGVudENvbG9yID0ge3I6IDExMSwgZzogMTY4LCBi
OiAyMjAsIGE6IDAuNjZ9OwotICAgICAgICBjb25zdCBvdXRsaW5lQ29sb3IgPSB7cjogMjU1LCBn
OiAyMjksIGI6IDE1MywgYTogMC42Nn07CisgICAgICAgIHZhciBjb250ZW50Q29sb3IgPSB7cjog
MTExLCBnOiAxNjgsIGI6IDIyMCwgYTogMC42Nn07CisgICAgICAgIHZhciBvdXRsaW5lQ29sb3Ig
PSB7cjogMjU1LCBnOiAyMjksIGI6IDE1MywgYTogMC42Nn07CiAKICAgICAgICAgdmFyIHF1YWQg
PSByZWNvcmQucXVhZDsKICAgICAgICAgaWYgKHF1YWQgJiYgRE9NQWdlbnQuaGlnaGxpZ2h0UXVh
ZCkgewpAQCAtMjk5LDkgKzI5NCw5IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fc2hvd2luZ0hpZ2hsaWdodCA9IGZhbHNl
OwogICAgICAgICAgICAgRE9NQWdlbnQuaGlkZUhpZ2hsaWdodCgpOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfaGlkZUhpZ2hsaWdodElmTmVlZGVkOiBmdW5jdGlvbigpCisgICAg
X2hpZGVIaWdobGlnaHRJZk5lZWRlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9zaG93aW5nSGln
aGxpZ2h0Rm9yUmVjb3JkID0gbnVsbDsKIApAQCAtMzA5LDkgKzMwNCw5IEBAIFdlYkluc3BlY3Rv
ci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fc2hv
d2luZ0hpZ2hsaWdodCA9IGZhbHNlOwogICAgICAgICAgICAgRE9NQWdlbnQuaGlkZUhpZ2hsaWdo
dCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaG92ZXJlZE9yU2VsZWN0ZWRS
ZWNvcmQ6IGZ1bmN0aW9uKCkKKyAgICBfaG92ZXJlZE9yU2VsZWN0ZWRSZWNvcmQoKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX2hvdmVyZWREYXRhR3JpZE5vZGUpCiAgICAgICAgICAgICByZXR1
cm4gdGhpcy5faG92ZXJlZERhdGFHcmlkTm9kZS5yZWNvcmQ7CkBAIC0zMjYsOSArMzIxLDkgQEAg
V2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
IAogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZU92ZXJE
YXRhR3JpZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX21vdXNlT3ZlckRhdGFHcmlkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdmFyIGhvdmVyZWREYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5k
YXRhR3JpZE5vZGVGcm9tTm9kZShldmVudC50YXJnZXQpOwogICAgICAgICBpZiAoIWhvdmVyZWRE
YXRhR3JpZE5vZGUpCkBAIC0zMzYsMTUgKzMzMSwxNSBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGlt
ZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9ob3ZlcmVkRGF0YUdyaWRO
b2RlID0gaG92ZXJlZERhdGFHcmlkTm9kZTsKICAgICAgICAgdGhpcy5fdXBkYXRlSGlnaGxpZ2h0
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2VMZWF2ZURhdGFHcmlkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfbW91c2VMZWF2ZURhdGFHcmlkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhp
cy5faG92ZXJlZERhdGFHcmlkTm9kZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUhpZ2hs
aWdodCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlT3ZlclRyZWVPdXRsaW5lOiBmdW5j
dGlvbihldmVudCkKKyAgICBfbW91c2VPdmVyVHJlZU91dGxpbmUoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgaG92ZXJlZFRyZWVFbGVtZW50ID0gdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVP
dXRsaW5lLnRyZWVFbGVtZW50RnJvbU5vZGUoZXZlbnQudGFyZ2V0KTsKICAgICAgICAgaWYgKCFo
b3ZlcmVkVHJlZUVsZW1lbnQpCkBAIC0zNTIsOSArMzQ3LDkgQEAgV2ViSW5zcGVjdG9yLkxheW91
dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5faG92ZXJlZFRyZWVF
bGVtZW50ID0gaG92ZXJlZFRyZWVFbGVtZW50OwogICAgICAgICB0aGlzLl91cGRhdGVIaWdobGln
aHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZUxlYXZlVHJlZU91dGxpbmU6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9tb3VzZUxlYXZlVHJlZU91dGxpbmUoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9ob3ZlcmVkVHJlZUVsZW1lbnQgPSBudWxsOwogICAgICAgICB0aGlzLl91cGRh
dGVIaWdobGlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0xlZ2FjeUNvbnNvbGVNZXNzYWdlLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2UuanMKaW5kZXggZGY4
ZDcxMi4uNTRjZjhlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2UuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2UuanMKQEAgLTEs
NiArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIw
MDgsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAo
QykgMjAwOSBKb3NlcGggUGVjb3Jhcm8KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI4LDQyICsyOCw0
NyBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3Nh
Z2UgPSBmdW5jdGlvbihzb3VyY2UsIGxldmVsLCB1cmwsIGxpbmUsIGNvbHVtbiwgcmVwZWF0Q291
bnQpCitXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UgPSBjbGFzcyBMZWdhY3lDb25z
b2xlTWVzc2FnZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0aGlzLnNvdXJj
ZSA9IHNvdXJjZTsKLSAgICB0aGlzLmxldmVsID0gbGV2ZWw7Ci0gICAgdGhpcy51cmwgPSB1cmwg
fHwgbnVsbDsKLSAgICB0aGlzLmxpbmUgPSBsaW5lIHx8IDA7Ci0gICAgdGhpcy5jb2x1bW4gPSBj
b2x1bW4gfHwgMDsKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2UsIGxldmVsLCB1cmwsIGxpbmUsIGNv
bHVtbiwgcmVwZWF0Q291bnQpCisgICAgeworICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTsK
KyAgICAgICAgdGhpcy5sZXZlbCA9IGxldmVsOworICAgICAgICB0aGlzLnVybCA9IHVybCB8fCBu
dWxsOworICAgICAgICB0aGlzLmxpbmUgPSBsaW5lIHx8IDA7CisgICAgICAgIHRoaXMuY29sdW1u
ID0gY29sdW1uIHx8IDA7CiAKLSAgICByZXBlYXRDb3VudCA9IHJlcGVhdENvdW50IHx8IDE7Ci0g
ICAgdGhpcy5yZXBlYXRDb3VudCA9IHJlcGVhdENvdW50OwotICAgIHRoaXMucmVwZWF0RGVsdGEg
PSByZXBlYXRDb3VudDsKLSAgICB0aGlzLnRvdGFsUmVwZWF0Q291bnQgPSByZXBlYXRDb3VudDsK
LX07CisgICAgICAgIHJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQgfHwgMTsKKyAgICAgICAgdGhp
cy5yZXBlYXRDb3VudCA9IHJlcGVhdENvdW50OworICAgICAgICB0aGlzLnJlcGVhdERlbHRhID0g
cmVwZWF0Q291bnQ7CisgICAgICAgIHRoaXMudG90YWxSZXBlYXRDb3VudCA9IHJlcGVhdENvdW50
OworICAgIH0KKworICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1l
c3NhZ2UucHJvdG90eXBlID0gewotICAgIGlzRXJyb3JPcldhcm5pbmc6IGZ1bmN0aW9uKCkKKyAg
ICBzdGF0aWMgY3JlYXRlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHR5cGUsIHVybCwgbGluZSwg
Y29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdl
SW1wbChzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBudWxsLCB0eXBlLCB1cmwsIGxpbmUsIGNvbHVt
biwgcmVwZWF0Q291bnQsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpOworICAgIH0K
KworICAgIC8vIFB1YmxpYworCisgICAgaXNFcnJvck9yV2FybmluZygpCiAgICAgewogICAgICAg
ICByZXR1cm4gKHRoaXMubGV2ZWwgPT09IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2Fn
ZS5NZXNzYWdlTGV2ZWwuV2FybmluZyB8fCB0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuTGVn
YWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHVwZGF0ZVJlcGVhdENvdW50OiBmdW5jdGlvbigpCisgICAgdXBkYXRlUmVwZWF0Q291bnQo
KQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgY29uY3JldGUgaW5zdGFuY2VzCi0g
ICAgfSwKKyAgICB9CiAKLSAgICBjbG9uZTogZnVuY3Rpb24oKQorICAgIGNsb25lKCkKICAgICB7
CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IGNvbmNyZXRlIGluc3RhbmNlcwogICAgIH0KIH07
CiAKLVdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5jcmVhdGUgPSBmdW5jdGlvbihz
b3VyY2UsIGxldmVsLCBtZXNzYWdlLCB0eXBlLCB1cmwsIGxpbmUsIGNvbHVtbiwgcmVwZWF0Q291
bnQsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpCi17Ci0gICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsKHNvdXJjZSwgbGV2ZWwsIG1lc3Nh
Z2UsIG51bGwsIHR5cGUsIHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVy
cywgc3RhY2tUcmFjZSwgcmVxdWVzdCk7Ci19OwotCiAvLyBGSVhNRTogU3dpdGNoIHRvIENvbnNv
bGVBZ2VudC5Db25zb2xlTWVzc2FnZVNvdXJjZS4KIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xl
TWVzc2FnZS5NZXNzYWdlU291cmNlID0gewogICAgIEhUTUw6ICJodG1sIiwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUNvbnNvbGVN
ZXNzYWdlSW1wbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0xlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5qcwppbmRleCBmM2E5ZDY1Li5mZjcwZDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lD
b25zb2xlTWVzc2FnZUltcGwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLmpzCkBAIC0xLDYgKzEsNiBAQAog
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywgMjAxNSBBcHBsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzIEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9z
ZXBoIFBlY29yYXJvCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOCwzNSArMjgsMzggQEAKICAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbCA9IGZ1
bmN0aW9uKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmtpZmllciwgdHlwZSwgdXJsLCBsaW5l
LCBjb2x1bW4sIHJlcGVhdENvdW50LCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0KQor
V2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbCA9IGNsYXNzIExlZ2FjeUNvbnNv
bGVNZXNzYWdlSW1wbCBleHRlbmRzIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZQog
ewotICAgIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5jYWxsKHRoaXMsIHNvdXJj
ZSwgbGV2ZWwsIHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCk7Ci0KLSAgICB0aGlzLl9s
aW5raWZpZXIgPSBsaW5raWZpZXI7Ci0gICAgdGhpcy50eXBlID0gdHlwZSB8fCBXZWJJbnNwZWN0
b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUuTG9nOwotICAgIHRoaXMuX21lc3Nh
Z2VUZXh0ID0gbWVzc2FnZTsKLSAgICB0aGlzLl9wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKLSAg
ICB0aGlzLl9zdGFja1RyYWNlID0gc3RhY2tUcmFjZTsKLSAgICB0aGlzLl9yZXF1ZXN0ID0gcmVx
dWVzdDsKLQotICAgIHRoaXMuX2N1c3RvbUZvcm1hdHRlcnMgPSB7Ci0gICAgICAgICJvYmplY3Qi
OiB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJBc09iamVjdCwKLSAgICAgICAgImVycm9yIjogdGhpcy5f
Zm9ybWF0UGFyYW1ldGVyQXNPYmplY3QsCi0gICAgICAgICJtYXAiOiB0aGlzLl9mb3JtYXRQYXJh
bWV0ZXJBc09iamVjdCwKLSAgICAgICAgInNldCI6IHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFzT2Jq
ZWN0LAotICAgICAgICAid2Vha21hcCI6IHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFzT2JqZWN0LAot
ICAgICAgICAiaXRlcmF0b3IiOiB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJBc09iamVjdCwKLSAgICAg
ICAgImFycmF5IjogIHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFzQXJyYXksCi0gICAgICAgICJub2Rl
IjogICB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJBc05vZGUsCi0gICAgICAgICJzdHJpbmciOiB0aGlz
Ll9mb3JtYXRQYXJhbWV0ZXJBc1N0cmluZwotICAgIH07Ci19OwotCi1XZWJJbnNwZWN0b3IuTGVn
YWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKKyAgICBjb25zdHJ1Y3Rvcihzb3Vy
Y2UsIGxldmVsLCBtZXNzYWdlLCBsaW5raWZpZXIsIHR5cGUsIHVybCwgbGluZSwgY29sdW1uLCBy
ZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKKyAgICB7CisgICAg
ICAgIHN1cGVyKHNvdXJjZSwgbGV2ZWwsIHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCk7
CisKKyAgICAgICAgdGhpcy5fbGlua2lmaWVyID0gbGlua2lmaWVyOworICAgICAgICB0aGlzLnR5
cGUgPSB0eXBlIHx8IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlw
ZS5Mb2c7CisgICAgICAgIHRoaXMuX21lc3NhZ2VUZXh0ID0gbWVzc2FnZTsKKyAgICAgICAgdGhp
cy5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAgIHRoaXMuX3N0YWNrVHJhY2UgPSBz
dGFja1RyYWNlOworICAgICAgICB0aGlzLl9yZXF1ZXN0ID0gcmVxdWVzdDsKKworICAgICAgICB0
aGlzLl9jdXN0b21Gb3JtYXR0ZXJzID0geworICAgICAgICAgICAgIm9iamVjdCI6IHRoaXMuX2Zv
cm1hdFBhcmFtZXRlckFzT2JqZWN0LAorICAgICAgICAgICAgImVycm9yIjogdGhpcy5fZm9ybWF0
UGFyYW1ldGVyQXNPYmplY3QsCisgICAgICAgICAgICAibWFwIjogdGhpcy5fZm9ybWF0UGFyYW1l
dGVyQXNPYmplY3QsCisgICAgICAgICAgICAic2V0IjogdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNP
YmplY3QsCisgICAgICAgICAgICAid2Vha21hcCI6IHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFzT2Jq
ZWN0LAorICAgICAgICAgICAgIml0ZXJhdG9yIjogdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNPYmpl
Y3QsCisgICAgICAgICAgICAiYXJyYXkiOiAgdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNBcnJheSwK
KyAgICAgICAgICAgICJub2RlIjogICB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJBc05vZGUsCisgICAg
ICAgICAgICAic3RyaW5nIjogdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNTdHJpbmcKKyAgICAgICAg
fTsKKyAgICB9CiAKLSAgICBlbmZvcmNlc0NsaXBib2FyZFByZWZpeFN0cmluZzogdHJ1ZSwKKyAg
ICBnZXQgZW5mb3JjZXNDbGlwYm9hcmRQcmVmaXhTdHJpbmcoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQogCi0gICAgX2Zvcm1hdE1lc3NhZ2U6IGZ1bmN0aW9uKCkKKyAgICBf
Zm9ybWF0TWVzc2FnZSgpCiAgICAgewogICAgICAgICB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICB0aGlzLl9mb3JtYXR0ZWRN
ZXNzYWdlLmNsYXNzTmFtZSA9ICJjb25zb2xlLW1lc3NhZ2UtdGV4dCI7CkBAIC0xMzksMTAgKzE0
MiwxMCBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKHRoaXMuX3Nob3VsZER1bXBTdGFja1RyYWNlKCkpIHsKICAgICAgICAg
ICAgIHZhciBvbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CiAgICAgICAgICAgICBv
bC5jbGFzc05hbWUgPSAib3V0bGluZS1kaXNjbG9zdXJlIjsKLSAgICAgICAgICAgIHZhciB0cmVl
T3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZShvbCk7CisgICAgICAgICAgICB2YXIgdHJlZU91dGxp
bmUgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKG9sKTsKIAogICAgICAgICAgICAgdmFy
IGNvbnRlbnQgPSB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlOwotICAgICAgICAgICAgdmFyIHJvb3Qg
PSBuZXcgVHJlZUVsZW1lbnQoY29udGVudCwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICB2YXIg
cm9vdCA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoY29udGVudCwgbnVsbCwgdHJ1ZSk7
CiAgICAgICAgICAgICBjb250ZW50LnRyZWVFbGVtZW50Rm9yVGVzdCA9IHJvb3Q7CiAgICAgICAg
ICAgICB0cmVlT3V0bGluZS5hcHBlbmRDaGlsZChyb290KTsKICAgICAgICAgICAgIGlmICh0aGlz
LnR5cGUgPT09IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5U
cmFjZSkKQEAgLTE1NCwxOSArMTU3LDE5IEBAIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVz
c2FnZUltcGwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgaW5s
aW5lIG1lc3NhZ2UgYnViYmxlcyBpbiBTb3VyY2VGcmFtZXMsIG9yIG90aGVyIHBsYWluLXRleHQg
cmVwcmVzZW50YXRpb25zLgogICAgICAgICB0aGlzLl9tZXNzYWdlID0gbWVzc2FnZVRleHQudGV4
dENvbnRlbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvdWxkRHVtcFN0YWNrVHJhY2U6IGZ1
bmN0aW9uKCkKKyAgICBfc2hvdWxkRHVtcFN0YWNrVHJhY2UoKQogICAgIHsKICAgICAgICAgcmV0
dXJuICEhdGhpcy5fc3RhY2tUcmFjZSAmJiB0aGlzLl9zdGFja1RyYWNlLmxlbmd0aCAmJiAodGhp
cy5zb3VyY2UgPT09IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlU291
cmNlLk5ldHdvcmsgfHwgdGhpcy5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVN
ZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvciB8fCB0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5M
ZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UcmFjZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfc2hvdWxkSGlkZVVSTDogZnVuY3Rpb24odXJsKQorICAgIF9zaG91bGRIaWRlVVJMKHVy
bCkKICAgICB7CiAgICAgICAgIHJldHVybiB1cmwgPT09ICJ1bmRlZmluZWQiIHx8IHVybCA9PT0g
IltuYXRpdmUgY29kZV0iOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZpcnN0Tm9uTmF0aXZlQ2Fs
bEZyYW1lOiBmdW5jdGlvbigpCisgICAgX2ZpcnN0Tm9uTmF0aXZlQ2FsbEZyYW1lKCkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy5fc3RhY2tUcmFjZSkKICAgICAgICAgICAgIHJldHVybiBudWxs
OwpAQCAtMTc5LDQyICsxODIsNDIgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdl
SW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbnVsbDsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBtZXNzYWdlKCkKICAgICB7CiAgICAgICAgIC8vIGZvcmNl
IG1lc3NhZ2UgZm9ybWF0dGluZwogICAgICAgICB2YXIgZm9ybWF0dGVkTWVzc2FnZSA9IHRoaXMu
Zm9ybWF0dGVkTWVzc2FnZTsKICAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2U7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgZm9ybWF0dGVkTWVzc2FnZSgpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UpCiAgICAgICAgICAgICB0aGlzLl9mb3JtYXRNZXNzYWdl
KCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlOwotICAgIH0sCisgICAg
fQogCi0gICAgX2xpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIpCisgICAgX2xpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcikKICAgICB7CiAgICAgICAgIC8vIENvbnNvbGVNZXNzYWdlIHN0YWNrIHRyYWNlIGxpbmUg
bnVtYmVycyBhcmUgb25lLWJhc2VkLgogICAgICAgICBsaW5lTnVtYmVyID0gbGluZU51bWJlciA/
IGxpbmVOdW1iZXIgLSAxIDogMDsKICAgICAgICAgY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVy
ID8gY29sdW1uTnVtYmVyIC0gMSA6IDA7CiAKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5s
aW5raWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJjb25zb2xlLW1l
c3NhZ2UtdXJsIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbGlua2lmeUNhbGxGcmFtZTogZnVu
Y3Rpb24oY2FsbEZyYW1lKQorICAgIF9saW5raWZ5Q2FsbEZyYW1lKGNhbGxGcmFtZSkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5TG9jYXRpb24oY2FsbEZyYW1lLnVybCwgY2Fs
bEZyYW1lLmxpbmVOdW1iZXIsIGNhbGxGcmFtZS5jb2x1bW5OdW1iZXIpOwotICAgIH0sCisgICAg
fQogCi0gICAgaXNFcnJvck9yV2FybmluZzogZnVuY3Rpb24oKQorICAgIGlzRXJyb3JPcldhcm5p
bmcoKQogICAgIHsKICAgICAgICAgcmV0dXJuICh0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3Iu
TGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcgfHwgdGhpcy5sZXZlbCA9
PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcik7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0OiBmdW5jdGlvbihwYXJhbWV0ZXJzKQorICAg
IF9mb3JtYXQocGFyYW1ldGVycykKICAgICB7CiAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyB1c2Vk
IGxpa2UgYSBCdWlsZGVyLiBWYWx1ZXMgYXJlIGNvbnRpbnVhbGx5IGFwcGVuZGVkIG9udG8gaXQu
CiAgICAgICAgIHZhciBmb3JtYXR0ZWRSZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CkBAIC0yNjYsOSArMjY5LDkgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNz
YWdlSW1wbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZm9ybWF0
dGVkUmVzdWx0OwotICAgIH0sCisgICAgfQogCi0gICAgX2lzRXhwYW5kYWJsZTogZnVuY3Rpb24o
cmVtb3RlT2JqZWN0KSB7CisgICAgX2lzRXhwYW5kYWJsZShyZW1vdGVPYmplY3QpIHsKICAgICAg
ICAgaWYgKCFyZW1vdGVPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI3
Niw5ICsyNzksOSBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1cm4gcmVt
b3RlT2JqZWN0Lmhhc0NoaWxkcmVuOwotICAgIH0sCisgICAgfQogCi0gICAgX2Zvcm1hdFBhcmFt
ZXRlcjogZnVuY3Rpb24ob3V0cHV0LCBmb3JjZU9iamVjdEZvcm1hdCkKKyAgICBfZm9ybWF0UGFy
YW1ldGVyKG91dHB1dCwgZm9yY2VPYmplY3RGb3JtYXQpCiAgICAgewogICAgICAgICB2YXIgdHlw
ZTsKICAgICAgICAgaWYgKGZvcmNlT2JqZWN0Rm9ybWF0KQpAQCAtMjk5LDQ2ICszMDIsNDYgQEAg
V2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgZm9ybWF0dGVyLmNhbGwodGhpcywgb3V0cHV0LCBzcGFuLCBmb3JjZU9iamVjdEZvcm1h
dCk7CiAgICAgICAgIHJldHVybiBzcGFuOwotICAgIH0sCisgICAgfQogCi0gICAgX2Zvcm1hdFBh
cmFtZXRlckFzVmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtKQorICAgIF9mb3JtYXRQYXJhbWV0
ZXJBc1ZhbHVlKHZhbHVlLCBlbGVtKQogICAgIHsKICAgICAgICAgZWxlbS5hcHBlbmRDaGlsZChX
ZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRlRWxlbWVudEZvclJlbW90ZU9iamVjdCh2
YWx1ZSkpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Zvcm1hdFBhcmFtZXRlckFzT2JqZWN0OiBm
dW5jdGlvbihvYmosIGVsZW0sIGZvcmNlRXhwYW5zaW9uKQorICAgIF9mb3JtYXRQYXJhbWV0ZXJB
c09iamVjdChvYmosIGVsZW0sIGZvcmNlRXhwYW5zaW9uKQogICAgIHsKICAgICAgICAgdGhpcy5f
b2JqZWN0VHJlZSA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcob2JqLCBXZWJJbnNw
ZWN0b3IuT2JqZWN0VHJlZVZpZXcuTW9kZS5Qcm9wZXJ0aWVzLCB0aGlzLl9yb290UHJvcGVydHlQ
YXRoRm9yT2JqZWN0KG9iaiksIGZvcmNlRXhwYW5zaW9uKTsKICAgICAgICAgZWxlbS5hcHBlbmRD
aGlsZCh0aGlzLl9vYmplY3RUcmVlLmVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Zv
cm1hdFBhcmFtZXRlckFzU3RyaW5nOiBmdW5jdGlvbihvdXRwdXQsIGVsZW0pCisgICAgX2Zvcm1h
dFBhcmFtZXRlckFzU3RyaW5nKG91dHB1dCwgZWxlbSkKICAgICB7CiAgICAgICAgIHZhciBzcGFu
ID0gV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZUxpbmtpZmllZEVsZW1lbnRTdHJp
bmcob3V0cHV0LmRlc2NyaXB0aW9uKTsKICAgICAgICAgZWxlbS5hcHBlbmRDaGlsZChzcGFuKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9mb3JtYXRQYXJhbWV0ZXJBc05vZGU6IGZ1bmN0aW9uKG9i
amVjdCwgZWxlbSkKKyAgICBfZm9ybWF0UGFyYW1ldGVyQXNOb2RlKG9iamVjdCwgZWxlbSkKICAg
ICB7CiAgICAgICAgIHZhciBzcGFuID0gV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0
ZUVsZW1lbnRGb3JOb2RlKG9iamVjdCk7CiAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQoc3Bhbik7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0UGFyYW1ldGVyQXNBcnJheTogZnVuY3Rpb24o
YXJyLCBlbGVtKQorICAgIF9mb3JtYXRQYXJhbWV0ZXJBc0FycmF5KGFyciwgZWxlbSkKICAgICB7
CiAgICAgICAgIHRoaXMuX29iamVjdFRyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVW
aWV3KGFyciwgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUuUHJvcGVydGllcywgdGhp
cy5fcm9vdFByb3BlcnR5UGF0aEZvck9iamVjdChhcnIpKTsKICAgICAgICAgZWxlbS5hcHBlbmRD
aGlsZCh0aGlzLl9vYmplY3RUcmVlLmVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jv
b3RQcm9wZXJ0eVBhdGhGb3JPYmplY3Q6IGZ1bmN0aW9uKG9iamVjdCkKKyAgICBfcm9vdFByb3Bl
cnR5UGF0aEZvck9iamVjdChvYmplY3QpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuc2F2ZWRS
ZXN1bHRJbmRleCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVybiBu
ZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aChvYmplY3QsICIkIiArIHRoaXMuc2F2ZWRSZXN1
bHRJbmRleCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXNlclByb3ZpZGVkQ29sdW1uTmFtZXM6
IGZ1bmN0aW9uKGNvbHVtbk5hbWVzQXJndW1lbnQpCisgICAgX3VzZXJQcm92aWRlZENvbHVtbk5h
bWVzKGNvbHVtbk5hbWVzQXJndW1lbnQpCiAgICAgewogICAgICAgICBpZiAoIWNvbHVtbk5hbWVz
QXJndW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTM2MSw5ICszNjQsOSBAQCBX
ZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBleHRyYWN0ZWRDb2x1bW5OYW1lcy5sZW5ndGggPyBleHRy
YWN0ZWRDb2x1bW5OYW1lcyA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0UGFy
YW1ldGVyQXNUYWJsZTogZnVuY3Rpb24ocGFyYW1ldGVycykKKyAgICBfZm9ybWF0UGFyYW1ldGVy
QXNUYWJsZShwYXJhbWV0ZXJzKQogICAgIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHZhciB0YWJsZSA9IHBhcmFtZXRlcnNb
MF07CkBAIC0zOTIsNyArMzk1LDcgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdl
SW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgICAgICAgICAgdmFyIHJvd1ZhbHVlID0ge307Ci0gICAgICAgICAgICAgICAgY29uc3QgbWF4
Q29sdW1uc1RvUmVuZGVyID0gMTA7CisgICAgICAgICAgICAgICAgdmFyIG1heENvbHVtbnNUb1Jl
bmRlciA9IDEwOwogICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcm93UHJldmll
dy5wcm9wZXJ0eVByZXZpZXdzLmxlbmd0aDsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAgIHZh
ciBjZWxsUHJvcGVydHkgPSByb3dQcmV2aWV3LnByb3BlcnR5UHJldmlld3Nbal07CiAgICAgICAg
ICAgICAgICAgICAgIHZhciBjb2x1bW5SZW5kZXJlZCA9IGNvbHVtbk5hbWVzLmNvbnRhaW5zKGNl
bGxQcm9wZXJ0eS5uYW1lKTsKQEAgLTQxMSw3ICs0MTQsNyBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5
Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBJZiB0aGVyZSB3
ZXJlIHZhbHVlUHJldmlld3MsIGNvbnZlcnQgdG8gYSBmbGF0IGxpc3QuCiAgICAgICAgIGlmIChy
b3dzLmxlbmd0aCkgewotICAgICAgICAgICAgY29uc3QgZW1EYXNoID0gIlx1MjAxNCI7CisgICAg
ICAgICAgICB2YXIgZW1EYXNoID0gIlx1MjAxNCI7CiAgICAgICAgICAgICBjb2x1bW5OYW1lcy51
bnNoaWZ0KFdlYkluc3BlY3Rvci5VSVN0cmluZygiKEluZGV4KSIpKTsKICAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAgIHZh
ciByb3dOYW1lID0gcm93c1tpXVswXTsKQEAgLTQ1Nyw5ICs0NjAsOSBAQCBXZWJJbnNwZWN0b3Iu
TGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGF0YUdyaWRD
b250YWluZXIuYXBwZW5kQ2hpbGQoZGF0YUdyaWQuZWxlbWVudCk7CiAKICAgICAgICAgcmV0dXJu
IGVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0V2l0aFN1YnN0aXR1dGlvblN0
cmluZzogZnVuY3Rpb24ocGFyYW1ldGVycywgZm9ybWF0dGVkUmVzdWx0KQorICAgIF9mb3JtYXRX
aXRoU3Vic3RpdHV0aW9uU3RyaW5nKHBhcmFtZXRlcnMsIGZvcm1hdHRlZFJlc3VsdCkKICAgICB7
CiAgICAgICAgIHZhciBmb3JtYXR0ZXJzID0ge307CiAKQEAgLTU0OCw5ICs1NTEsOSBAQCBXZWJJ
bnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICAvLyBTdHJpbmcuZm9ybWF0IGRvZXMgdHJlYXQgZm9ybWF0dGVkUmVzdWx0IGxpa2UgYSBCdWls
ZGVyLCByZXN1bHQgaXMgYW4gb2JqZWN0LgogICAgICAgICByZXR1cm4gU3RyaW5nLmZvcm1hdChw
YXJhbWV0ZXJzWzBdLmRlc2NyaXB0aW9uLCBwYXJhbWV0ZXJzLnNsaWNlKDEpLCBmb3JtYXR0ZXJz
LCBmb3JtYXR0ZWRSZXN1bHQsIGFwcGVuZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkZWNvcmF0
ZU1lc3NhZ2VFbGVtZW50OiBmdW5jdGlvbihlbGVtZW50KQorICAgIGRlY29yYXRlTWVzc2FnZUVs
ZW1lbnQoZWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50KQogICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CkBAIC01OTIsOSArNTk1LDkgQEAgV2ViSW5zcGVj
dG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLnVwZGF0ZVJlcGVhdENvdW50KCk7CiAKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB0b01lc3NhZ2VFbGVtZW50OiBmdW5jdGlvbigpCisgICAgdG9NZXNz
YWdlRWxlbWVudCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZWxlbWVudCkKICAgICAgICAg
ICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwpAQCAtNjAyLDkgKzYwNSw5IEBAIFdlYkluc3BlY3Rv
ci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogCiAgICAgICAgIHJldHVybiB0
aGlzLmRlY29yYXRlTWVzc2FnZUVsZW1lbnQoZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcG9wdWxhdGVTdGFja1RyYWNlVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKHBhcmVudFRyZWVFbGVt
ZW50KQorICAgIF9wb3B1bGF0ZVN0YWNrVHJhY2VUcmVlRWxlbWVudChwYXJlbnRUcmVlRWxlbWVu
dCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc3RhY2tUcmFjZS5s
ZW5ndGg7IGkrKykgewogICAgICAgICAgICAgdmFyIGZyYW1lID0gdGhpcy5fc3RhY2tUcmFjZVtp
XTsKQEAgLTYyMSwxMiArNjI0LDEyIEBAIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2Fn
ZUltcGwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQo
dXJsRWxlbWVudCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHZhciB0cmVlRWxlbWVu
dCA9IG5ldyBUcmVlRWxlbWVudChjb250ZW50KTsKKyAgICAgICAgICAgIHZhciB0cmVlRWxlbWVu
dCA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoY29udGVudCk7CiAgICAgICAgICAgICBw
YXJlbnRUcmVlRWxlbWVudC5hcHBlbmRDaGlsZCh0cmVlRWxlbWVudCk7CiAgICAgICAgIH0KLSAg
ICB9LAorICAgIH0KIAotICAgIHVwZGF0ZVJlcGVhdENvdW50OiBmdW5jdGlvbigpIHsKKyAgICB1
cGRhdGVSZXBlYXRDb3VudCgpIHsKICAgICAgICAgaWYgKCF0aGlzLnJlcGVhdENvdW50RWxlbWVu
dCkgewogICAgICAgICAgICAgdGhpcy5yZXBlYXRDb3VudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAgICB0aGlzLnJlcGVhdENvdW50RWxlbWVudC5j
bGFzc05hbWUgPSAiYnViYmxlIjsKQEAgLTYzNCw5ICs2MzcsOSBAQCBXZWJJbnNwZWN0b3IuTGVn
YWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMucmVwZWF0Q291bnRFbGVtZW50LCB0aGlzLl9lbGVtZW50
LmZpcnN0Q2hpbGQpOwogICAgICAgICB9CiAgICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50
LnRleHRDb250ZW50ID0gdGhpcy5yZXBlYXRDb3VudDsKLSAgICB9LAorICAgIH0KIAotICAgIHRv
U3RyaW5nOiBmdW5jdGlvbigpCisgICAgdG9TdHJpbmcoKQogICAgIHsKICAgICAgICAgdmFyIHNv
dXJjZVN0cmluZzsKICAgICAgICAgc3dpdGNoICh0aGlzLnNvdXJjZSkgewpAQCAtNjkwLDE0ICs2
OTMsMTQgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc291cmNlU3RyaW5nICsgIiAiICsgdHlw
ZVN0cmluZyArICIgIiArIHRoaXMubGV2ZWxTdHJpbmcgKyAiOiAiICsgdGhpcy5mb3JtYXR0ZWRN
ZXNzYWdlLnRleHRDb250ZW50ICsgIlxuIiArIHRoaXMudXJsICsgIiBsaW5lICIgKyB0aGlzLmxp
bmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGV4dCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fbWVzc2FnZVRleHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc0VxdWFsOiBmdW5j
dGlvbihtc2cpCisgICAgaXNFcXVhbChtc2cpCiAgICAgewogICAgICAgICBpZiAoIW1zZykKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcyMywxNyArNzI2LDE3IEBAIFdlYkluc3BlY3Rv
ci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0gewogICAgICAgICAgICAgJiYg
KHRoaXMudXJsID09PSBtc2cudXJsKQogICAgICAgICAgICAgJiYgKHRoaXMubWVzc2FnZSA9PT0g
bXNnLm1lc3NhZ2UpCiAgICAgICAgICAgICAmJiAodGhpcy5fcmVxdWVzdCA9PT0gbXNnLl9yZXF1
ZXN0KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGFja1RyYWNlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9zdGFja1RyYWNlOwotICAgIH0sCisgICAgfQogCi0gICAgY2xvbmU6
IGZ1bmN0aW9uKCkKKyAgICBjbG9uZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLmNyZWF0ZSh0aGlzLnNvdXJjZSwgdGhpcy5sZXZlbCwg
dGhpcy5fbWVzc2FnZVRleHQsIHRoaXMudHlwZSwgdGhpcy51cmwsIHRoaXMubGluZSwgdGhpcy5j
b2x1bW4sIHRoaXMucmVwZWF0Q291bnQsIHRoaXMuX3BhcmFtZXRlcnMsIHRoaXMuX3N0YWNrVHJh
Y2UsIHRoaXMuX3JlcXVlc3QpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxldmVsU3RyaW5n
KCkKICAgICB7CkBAIC03NDksMTQgKzc1MiwxNCBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29s
ZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcjoKICAgICAgICAgICAgICAg
ICByZXR1cm4gIkVycm9yIjsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNs
aXBib2FyZFByZWZpeFN0cmluZygpCiAgICAgewogICAgICAgICByZXR1cm4gIlsiICsgdGhpcy5s
ZXZlbFN0cmluZyArICJdICI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0b0NsaXBib2FyZFN0cmlu
ZzogZnVuY3Rpb24oaXNQcmVmaXhPcHRpb25hbCkKKyAgICB0b0NsaXBib2FyZFN0cmluZyhpc1By
ZWZpeE9wdGlvbmFsKQogICAgIHsKICAgICAgICAgdmFyIGlzVHJhY2UgPSB0aGlzLl9zaG91bGRE
dW1wU3RhY2tUcmFjZSgpOwogCkBAIC03OTcsNSArODAwLDMgQEAgV2ViSW5zcGVjdG9yLkxlZ2Fj
eUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBjbGlwYm9h
cmRTdHJpbmc7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdl
SW1wbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNz
YWdlLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0xvZ0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMKaW5kZXggOGFlN2ExZC4uNzhlZTgz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TG9nQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE1NSArMjMsMTM5IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRW
aWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuTG9nQ29udGVu
dFZpZXcgPSBjbGFzcyBMb2dDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50
VmlldwogewotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIHJlcHJlc2Vu
dGVkT2JqZWN0KTsKLQotICAgIHRoaXMuX25lc3RpbmdMZXZlbCA9IDA7Ci0gICAgdGhpcy5fc2Vs
ZWN0ZWRNZXNzYWdlcyA9IFtdOwotCi0gICAgLy8gRklYTUU6IFRyeSB0byB1c2UgYSBtYXJrZXIs
IGluc3RlYWQgb2YgYSBsaXN0IG9mIG1lc3NhZ2VzIHRoYXQgZ2V0IHJlLWFkZGVkLgotICAgIHRo
aXMuX3Byb3Zpc2lvbmFsTWVzc2FnZXMgPSBbXTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7CisgICAg
Y29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihyZXBy
ZXNlbnRlZE9iamVjdCk7CiAKLSAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmNsYXNzTmFtZSA9
ICJjb25zb2xlLW1lc3NhZ2VzIjsKLSAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC50YWJJbmRleCA9
IDA7Ci0gICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgImxvZyIp
OwotICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIs
IHRoaXMuX21vdXNlZG93bi5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2RpZEZvY3VzLmJpbmQodGhpcykpOwotICAg
IHRoaXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9kaWRC
bHVyLmJpbmQodGhpcykpOwotICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImtleWRvd24iLCB0aGlzLl9rZXlEb3duLmJpbmQodGhpcykpOwotICAgIHRoaXMubWVzc2Fn
ZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIHRoaXMuX29uZHJhZ3N0YXJ0
LmJpbmQodGhpcyksIHRydWUpOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLm1l
c3NhZ2VzRWxlbWVudCk7CisgICAgICAgIHRoaXMuX25lc3RpbmdMZXZlbCA9IDA7CisgICAgICAg
IHRoaXMuX3NlbGVjdGVkTWVzc2FnZXMgPSBbXTsKIAotICAgIHRoaXMucHJvbXB0ID0gV2ViSW5z
cGVjdG9yLnF1aWNrQ29uc29sZS5wcm9tcHQ7CisgICAgICAgIC8vIEZJWE1FOiBUcnkgdG8gdXNl
IGEgbWFya2VyLCBpbnN0ZWFkIG9mIGEgbGlzdCBvZiBtZXNzYWdlcyB0aGF0IGdldCByZS1hZGRl
ZC4KKyAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcyA9IFtdOwogCi0gICAgdGhpcy5f
a2V5Ym9hcmRTaG9ydGN1dENvbW1hbmRBID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRy
b2wsICJBIik7Ci0gICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVzYyA9IG5ldyBXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5L
ZXkuRXNjYXBlKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxvZyIpOwog
Ci0gICAgdGhpcy5fbG9nVmlld0NvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3Jp
cHRMb2dWaWV3Q29udHJvbGxlcih0aGlzLm1lc3NhZ2VzRWxlbWVudCwgdGhpcy5lbGVtZW50LCB0
aGlzLnByb21wdCwgdGhpcywgImNvbnNvbGUtcHJvbXB0LWhpc3RvcnkiKTsKKyAgICAgICAgdGhp
cy5tZXNzYWdlc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZXMiOwor
ICAgICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC50YWJJbmRleCA9IDA7CisgICAgICAgIHRoaXMu
bWVzc2FnZXNFbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsICJsb2ciKTsKKyAgICAgICAgdGhp
cy5tZXNzYWdlc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91
c2Vkb3duLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2RpZEZvY3VzLmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLm1lc3NhZ2VzRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJibHVyIiwgdGhpcy5fZGlkQmx1
ci5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigia2V5ZG93biIsIHRoaXMuX2tleURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMu
bWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRyYWdzdGFydCIsIHRoaXMuX29uZHJh
Z3N0YXJ0LmJpbmQodGhpcyksIHRydWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5tZXNzYWdlc0VsZW1lbnQpOwogCi0gICAgdGhpcy5fc2VhcmNoQmFyID0gbmV3IFdl
Ykluc3BlY3Rvci5TZWFyY2hCYXIoImxvZy1zZWFyY2gtYmFyIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJGaWx0ZXIgQ29uc29sZSBMb2ciKSwgdGhpcyk7Ci0gICAgdGhpcy5fc2VhcmNoQmFyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNlYXJjaEJhci5FdmVudC5UZXh0Q2hhbmdlZCwg
dGhpcy5fc2VhcmNoVGV4dERpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMucHJvbXB0ID0g
V2ViSW5zcGVjdG9yLnF1aWNrQ29uc29sZS5wcm9tcHQ7CiAKLSAgICB2YXIgc2NvcGVCYXJJdGVt
cyA9IFsKLSAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0oV2ViSW5zcGVjdG9y
LkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5BbGwsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxsIikp
LAotICAgICAgICBuZXcgV2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbShXZWJJbnNwZWN0b3IuTG9n
Q29udGVudFZpZXcuU2NvcGVzLkVycm9ycywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFcnJvcnMi
KSksCi0gICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtKFdlYkluc3BlY3Rvci5M
b2dDb250ZW50Vmlldy5TY29wZXMuV2FybmluZ3MsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2Fy
bmluZ3MiKSksCi0gICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtKFdlYkluc3Bl
Y3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMuTG9ncywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJM
b2dzIikpCi0gICAgXTsKKyAgICAgICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dENvbW1hbmRBID0g
bmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICJBIik7CisgICAgICAgIHRoaXMuX2tl
eWJvYXJkU2hvcnRjdXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVs
bCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7CiAKLSAgICB0aGlz
Ll9zY29wZUJhciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXIoImxvZy1zY29wZS1iYXIiLCBz
Y29wZUJhckl0ZW1zLCBzY29wZUJhckl0ZW1zWzBdKTsKLSAgICB0aGlzLl9zY29wZUJhci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TY29wZUJhci5FdmVudC5TZWxlY3Rpb25DaGFuZ2Vk
LCB0aGlzLl9zY29wZUJhclNlbGVjdGlvbkRpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMu
X2xvZ1ZpZXdDb250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0TG9nVmlld0Nv
bnRyb2xsZXIodGhpcy5tZXNzYWdlc0VsZW1lbnQsIHRoaXMuZWxlbWVudCwgdGhpcy5wcm9tcHQs
IHRoaXMsICJjb25zb2xlLXByb21wdC1oaXN0b3J5Iik7CiAKLSAgICB2YXIgdHJhc2hJbWFnZTsK
LSAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MpCi0gICAgICAgIHRy
YXNoSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL0xlZ2FjeS9OYXZpZ2F0aW9uSXRlbVRyYXNoLnN2ZyIs
IHdpZHRoOiAxNiwgaGVpZ2h0OiAxNn07Ci0gICAgZWxzZQotICAgICAgICB0cmFzaEltYWdlID0g
e3NyYzogIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVRyYXNoLnN2ZyIsIHdpZHRoOiAxNSwgaGVpZ2h0
OiAxNX07CisgICAgICAgIHRoaXMuX3NlYXJjaEJhciA9IG5ldyBXZWJJbnNwZWN0b3IuU2VhcmNo
QmFyKCJsb2ctc2VhcmNoLWJhciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmlsdGVyIENvbnNv
bGUgTG9nIiksIHRoaXMpOworICAgICAgICB0aGlzLl9zZWFyY2hCYXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuU2VhcmNoQmFyLkV2ZW50LlRleHRDaGFuZ2VkLCB0aGlzLl9zZWFyY2hU
ZXh0RGlkQ2hhbmdlLCB0aGlzKTsKIAotICAgIHRoaXMuX2NsZWFyTG9nTmF2aWdhdGlvbkl0ZW0g
PSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjbGVhci1sb2ciLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkNsZWFyIGxvZyAoJXMgb3IgJXMpIikuZm9ybWF0KHRoaXMuX2xv
Z1ZpZXdDb250cm9sbGVyLm1lc3NhZ2VzQ2xlYXJLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1l
LCB0aGlzLl9sb2dWaWV3Q29udHJvbGxlci5tZXNzYWdlc0FsdGVybmF0ZUNsZWFyS2V5Ym9hcmRT
aG9ydGN1dC5kaXNwbGF5TmFtZSksIHRyYXNoSW1hZ2Uuc3JjLCB0cmFzaEltYWdlLndpZHRoLCB0
cmFzaEltYWdlLmhlaWdodCk7Ci0gICAgdGhpcy5fY2xlYXJMb2dOYXZpZ2F0aW9uSXRlbS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlj
a2VkLCB0aGlzLl9jbGVhckxvZywgdGhpcyk7CisgICAgICAgIHZhciBzY29wZUJhckl0ZW1zID0g
WworICAgICAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0oV2ViSW5zcGVjdG9y
LkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5BbGwsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWxsIikp
LAorICAgICAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0oV2ViSW5zcGVjdG9y
LkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5FcnJvcnMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRXJy
b3JzIikpLAorICAgICAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0oV2ViSW5z
cGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5XYXJuaW5ncywgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJXYXJuaW5ncyIpKSwKKyAgICAgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJ
dGVtKFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMuTG9ncywgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJMb2dzIikpCisgICAgICAgIF07CiAKLSAgICB0aGlzLl9jbGVhckxvZ09uUmVs
b2FkU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiY2xlYXItbG9nLW9uLXJlbG9h
ZCIsIHRydWUpOworICAgICAgICB0aGlzLl9zY29wZUJhciA9IG5ldyBXZWJJbnNwZWN0b3IuU2Nv
cGVCYXIoImxvZy1zY29wZS1iYXIiLCBzY29wZUJhckl0ZW1zLCBzY29wZUJhckl0ZW1zWzBdKTsK
KyAgICAgICAgdGhpcy5fc2NvcGVCYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2Nv
cGVCYXIuRXZlbnQuU2VsZWN0aW9uQ2hhbmdlZCwgdGhpcy5fc2NvcGVCYXJTZWxlY3Rpb25EaWRD
aGFuZ2UsIHRoaXMpOwogCi0gICAgdmFyIHRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlNob3cgc3BsaXQgY29uc29sZSIpOwotICAgIHZhciBhbHRUb29sVGlwID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJTaG93IGZ1bGwtaGVpZ2h0IGNvbnNvbGUiKTsKKyAgICAgICAgdmFyIHRyYXNo
SW1hZ2U7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUykK
KyAgICAgICAgICAgIHRyYXNoSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL0xlZ2FjeS9OYXZpZ2F0aW9u
SXRlbVRyYXNoLnN2ZyIsIHdpZHRoOiAxNiwgaGVpZ2h0OiAxNn07CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRyYXNoSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL05hdmlnYXRpb25JdGVtVHJhc2gu
c3ZnIiwgd2lkdGg6IDE1LCBoZWlnaHQ6IDE1fTsKIAotICAgIHRoaXMuX3RvZ2dsZVNwbGl0TmF2
aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVt
KCJzcGxpdC10b2dnbGUiLCB0b29sVGlwLCBhbHRUb29sVGlwLCBwbGF0Zm9ybUltYWdlUGF0aCgi
U3BsaXRUb2dnbGVEb3duLnN2ZyIpLCBwbGF0Zm9ybUltYWdlUGF0aCgiU3BsaXRUb2dnbGVVcC5z
dmciKSwgMTYsIDE2KTsKLSAgICB0aGlzLl90b2dnbGVTcGxpdE5hdmlnYXRpb25JdGVtLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNr
ZWQsIHRoaXMuX3RvZ2dsZVNwbGl0LCB0aGlzKTsKLSAgICB0aGlzLl90b2dnbGVTcGxpdE5hdmln
YXRpb25JdGVtLnRvZ2dsZWQgPSBXZWJJbnNwZWN0b3IuaXNTaG93aW5nU3BsaXRDb25zb2xlKCk7
CisgICAgICAgIHRoaXMuX2NsZWFyTG9nTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
LkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjbGVhci1sb2ciLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IkNsZWFyIGxvZyAoJXMgb3IgJXMpIikuZm9ybWF0KHRoaXMuX2xvZ1ZpZXdDb250cm9sbGVyLm1l
c3NhZ2VzQ2xlYXJLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lLCB0aGlzLl9sb2dWaWV3Q29u
dHJvbGxlci5tZXNzYWdlc0FsdGVybmF0ZUNsZWFyS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFt
ZSksIHRyYXNoSW1hZ2Uuc3JjLCB0cmFzaEltYWdlLndpZHRoLCB0cmFzaEltYWdlLmhlaWdodCk7
CisgICAgICAgIHRoaXMuX2NsZWFyTG9nTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fY2xl
YXJMb2csIHRoaXMpOwogCi0gICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyks
IGZhbHNlKTsKKyAgICAgICAgdGhpcy5fY2xlYXJMb2dPblJlbG9hZFNldHRpbmcgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNldHRpbmcoImNsZWFyLWxvZy1vbi1yZWxvYWQiLCB0cnVlKTsKIAotICAgIFdl
Ykluc3BlY3Rvci5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkxvZ01h
bmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fc2Vzc2lvbnNDbGVhcmVkLCB0aGlzKTsKLSAgICBX
ZWJJbnNwZWN0b3IubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dN
YW5hZ2VyLkV2ZW50LlNlc3Npb25TdGFydGVkLCB0aGlzLl9zZXNzaW9uU3RhcnRlZCwgdGhpcyk7
Ci0gICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQsIHRoaXMuX21lc3NhZ2VBZGRlZCwgdGhp
cyk7Ci0gICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQs
IHRoaXMuX3ByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhpcyk7Ci0gICAgV2Vi
SW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFu
YWdlci5FdmVudC5BY3RpdmVMb2dDbGVhcmVkLCB0aGlzLl9hY3RpdmVMb2dDbGVhcmVkLCB0aGlz
KTsKKyAgICAgICAgdmFyIHRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgc3Bs
aXQgY29uc29sZSIpOworICAgICAgICB2YXIgYWx0VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2hvdyBmdWxsLWhlaWdodCBjb25zb2xlIik7CiAKLSAgICBXZWJJbnNwZWN0b3IuRnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUHJvdmlzaW9uYWxM
b2FkU3RhcnRlZCwgdGhpcy5fcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcyk7Ci19OworICAg
ICAgICB0aGlzLl90b2dnbGVTcGxpdE5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5U
b2dnbGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic3BsaXQtdG9nZ2xlIiwgdG9vbFRpcCwgYWx0VG9v
bFRpcCwgcGxhdGZvcm1JbWFnZVBhdGgoIlNwbGl0VG9nZ2xlRG93bi5zdmciKSwgcGxhdGZvcm1J
bWFnZVBhdGgoIlNwbGl0VG9nZ2xlVXAuc3ZnIiksIDE2LCAxNik7CisgICAgICAgIHRoaXMuX3Rv
Z2dsZVNwbGl0TmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlU3BsaXQsIHRoaXMp
OworICAgICAgICB0aGlzLl90b2dnbGVTcGxpdE5hdmlnYXRpb25JdGVtLnRvZ2dsZWQgPSBXZWJJ
bnNwZWN0b3IuaXNTaG93aW5nU3BsaXRDb25zb2xlKCk7CiAKLVdlYkluc3BlY3Rvci5Mb2dDb250
ZW50Vmlldy5TY29wZXMgPSB7Ci0gICAgQWxsOiAibG9nLWFsbCIsCi0gICAgRXJyb3JzOiAibG9n
LWVycm9ycyIsCi0gICAgV2FybmluZ3M6ICJsb2ctd2FybmluZ3MiLAotICAgIExvZ3M6ICJsb2ct
bG9ncyIKLX07CisgICAgICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBm
YWxzZSk7CiAKLVdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJs
b2ciOwotV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3Lkl0ZW1XcmFwcGVyU3R5bGVDbGFzc05h
bWUgPSAiY29uc29sZS1pdGVtIjsKLVdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5GaWx0ZXJl
ZE91dFN0eWxlQ2xhc3NOYW1lID0gImZpbHRlcmVkLW91dCI7Ci1XZWJJbnNwZWN0b3IuTG9nQ29u
dGVudFZpZXcuU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3RlZCI7Ci1XZWJJbnNwZWN0
b3IuTG9nQ29udGVudFZpZXcuU2VhcmNoSW5Qcm9ncmVzc1N0eWxlQ2xhc3NOYW1lID0gInNlYXJj
aC1pbi1wcm9ncmVzcyI7Ci1XZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuRmlsdGVyZWRPdXRC
eVNlYXJjaFN0eWxlQ2xhc3NOYW1lID0gImZpbHRlcmVkLW91dC1ieS1zZWFyY2giOwotV2ViSW5z
cGVjdG9yLkxvZ0NvbnRlbnRWaWV3LkhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUgPSAiaGlnaGxp
Z2h0ZWQiOworICAgICAgICBXZWJJbnNwZWN0b3IubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50LkNsZWFyZWQsIHRoaXMuX3Nlc3Npb25zQ2xl
YXJlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuU2Vzc2lvblN0YXJ0ZWQsIHRoaXMu
X3Nlc3Npb25TdGFydGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5NZXNzYWdlQWRk
ZWQsIHRoaXMuX21lc3NhZ2VBZGRlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5sb2dN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuUHJl
dmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkLCB0aGlzLl9wcmV2aW91c01lc3NhZ2VSZXBl
YXRDb3VudFVwZGF0ZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IubG9nTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50LkFjdGl2ZUxvZ0Ns
ZWFyZWQsIHRoaXMuX2FjdGl2ZUxvZ0NsZWFyZWQsIHRoaXMpOwogCi1XZWJJbnNwZWN0b3IuTG9n
Q29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
TG9nQ29udGVudFZpZXcsCisgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5Qcm92aXNpb25hbExvYWRTdGFydGVkLCB0aGlz
Ll9wcm92aXNpb25hbExvYWRTdGFydGVkLCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
ICAgICBnZXQgYWxsb3dlZE5hdmlnYXRpb25TaWRlYmFyUGFuZWxzKCkKICAgICB7CiAgICAgICAg
IC8vIERvbid0IHNob3cgYW55IHNpZGViYXJzIHdoZW4gdGhlIENvbnNvbGUgaXMgb3BlbmVkLgog
ICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBuYXZpZ2F0aW9u
SXRlbXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLl9zZWFyY2hCYXIsIHRoaXMuX3Nj
b3BlQmFyLCB0aGlzLl9jbGVhckxvZ05hdmlnYXRpb25JdGVtLCB0aGlzLl90b2dnbGVTcGxpdE5h
dmlnYXRpb25JdGVtXTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY29wZUJhcigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fc2NvcGVCYXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgbG9nVmlld0NvbnRyb2xsZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xvZ1Zp
ZXdDb250cm9sbGVyOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlv
bigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250
ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0LmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhp
cy5fc2Nyb2xsRWxlbWVudEhlaWdodCA9IHRoaXMubWVzc2FnZXNFbGVtZW50LmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpLmhlaWdodDsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlv
bigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdGhpcy5fdG9nZ2xlU3BsaXROYXZpZ2F0
aW9uSXRlbS50b2dnbGVkID0gV2ViSW5zcGVjdG9yLmlzU2hvd2luZ1NwbGl0Q29uc29sZSgpOwog
CiAgICAgICAgIHRoaXMucHJvbXB0LmZvY3VzKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbdGhpcy5lbGVtZW50
XTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzaG91bGRLZWVwRWxlbWVudHNTY3JvbGxlZFRv
Qm90dG9tKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHNlYXJjaEluUHJvZ3Jlc3MoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMubWVz
c2FnZXNFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZp
ZXcuU2VhcmNoSW5Qcm9ncmVzc1N0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGRpZENsZWFyTWVzc2FnZXM6IGZ1bmN0aW9uKCkKKyAgICBkaWRDbGVhck1lc3NhZ2VzKCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVEaWRDbGVhck1lc3NhZ2VzKQogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICBXZWJJbnNwZWN0b3IubG9nTWFuYWdlci5yZXF1ZXN0Q2xlYXJN
ZXNzYWdlcygpOwotICAgIH0sCisgICAgfQogCi0gICAgZGlkQXBwZW5kQ29uc29sZU1lc3NhZ2U6
IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgZGlkQXBwZW5kQ29uc29sZU1lc3NhZ2UobWVzc2FnZSkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5xdWlja0NvbnNvbGUudXBkYXRlTGF5b3V0KCk7
CiAKQEAgLTIwOSwyNCArMTkzLDI0IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1NwbGl0Q29uc29sZSgpOwog
CiAgICAgICAgIHRoaXMuX2xvZ1ZpZXdDb250cm9sbGVyLnNjcm9sbFRvQm90dG9tKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBwcm9tcHREaWRDaGFuZ2VIZWlnaHQ6IGZ1bmN0aW9uKCkKKyAgICBw
cm9tcHREaWRDaGFuZ2VIZWlnaHQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnF1aWNr
Q29uc29sZS51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBwb3J0
c1NhdmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgc2F2ZURhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHt1cmw6ICJ3ZWItaW5zcGVj
dG9yOi8vL0NvbnNvbGUudHh0IiwgY29udGVudDogdGhpcy5fZm9ybWF0TWVzc2FnZXNBc0RhdGEo
ZmFsc2UpLCBmb3JjZVNhdmVBczogdHJ1ZX07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYW5kbGVD
b3B5RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUNvcHlFdmVudChldmVudCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRNZXNzYWdlcy5sZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0yMzQsNDkgKzIxOCw0OSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLnNldERhdGEo
InRleHQvcGxhaW4iLCB0aGlzLl9mb3JtYXRNZXNzYWdlc0FzRGF0YSh0cnVlKSk7CiAgICAgICAg
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgp
OwotICAgIH0sCisgICAgfQogCi0gICAgZm9jdXNTZWFyY2hCYXI6IGZ1bmN0aW9uKCkKKyAgICBm
b2N1c1NlYXJjaEJhcigpCiAgICAgewogICAgICAgICB0aGlzLl9zZWFyY2hCYXIuZm9jdXMoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGhpZ2hsaWdodFByZXZpb3VzU2VhcmNoTWF0Y2g6IGZ1bmN0
aW9uKCkKKyAgICBoaWdobGlnaHRQcmV2aW91c1NlYXJjaE1hdGNoKCkKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5zZWFyY2hJblByb2dyZXNzIHx8IGlzRW1wdHlPYmplY3QodGhpcy5fc2VhcmNo
TWF0Y2hlcykpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIGluZGV4ID0gdGhp
cy5fc2VsZWN0ZWRTZWFyY2hNYXRjaCA/IHRoaXMuX3NlYXJjaE1hdGNoZXMuaW5kZXhPZih0aGlz
Ll9zZWxlY3RlZFNlYXJjaE1hdGNoKSA6IHRoaXMuX3NlYXJjaE1hdGNoZXMubGVuZ3RoOwogICAg
ICAgICB0aGlzLl9oaWdobGlnaHRTZWFyY2hNYXRjaEF0SW5kZXgoaW5kZXggLSAxKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGhpZ2hsaWdodE5leHRTZWFyY2hNYXRjaDogZnVuY3Rpb24oKQorICAg
IGhpZ2hsaWdodE5leHRTZWFyY2hNYXRjaCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuc2Vh
cmNoSW5Qcm9ncmVzcyB8fCBpc0VtcHR5T2JqZWN0KHRoaXMuX3NlYXJjaE1hdGNoZXMpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX3NlbGVjdGVkU2Vh
cmNoTWF0Y2ggPyB0aGlzLl9zZWFyY2hNYXRjaGVzLmluZGV4T2YodGhpcy5fc2VsZWN0ZWRTZWFy
Y2hNYXRjaCkgKyAxIDogMDsKICAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VhcmNoTWF0Y2hBdElu
ZGV4KGluZGV4KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlYXJjaEJhcldhbnRzVG9Mb3NlRm9j
dXM6IGZ1bmN0aW9uKHNlYXJjaEJhcikKKyAgICBzZWFyY2hCYXJXYW50c1RvTG9zZUZvY3VzKHNl
YXJjaEJhcikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLmxlbmd0
aCkKICAgICAgICAgICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmZvY3VzKCk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHRoaXMucHJvbXB0LmZvY3VzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBzZWFyY2hCYXJEaWRBY3RpdmF0ZTogZnVuY3Rpb24oc2VhcmNoQmFyKQorICAgIHNlYXJjaEJh
ckRpZEFjdGl2YXRlKHNlYXJjaEJhcikKICAgICB7CiAgICAgICAgIGlmICghaXNFbXB0eU9iamVj
dCh0aGlzLl9zZWFyY2hNYXRjaGVzKSkKICAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFNlYXJj
aE1hdGNoQXRJbmRleCgwKTsKICAgICAgICAgdGhpcy5wcm9tcHQuZm9jdXMoKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9mb3JtYXRNZXNzYWdlc0FzRGF0YTogZnVu
Y3Rpb24ob25seVNlbGVjdGVkKQorICAgIF9mb3JtYXRNZXNzYWdlc0FzRGF0YShvbmx5U2VsZWN0
ZWQpCiAgICAgewogICAgICAgICB2YXIgbWVzc2FnZXMgPSB0aGlzLl9hbGxNZXNzYWdlcygpOwog
CkBAIC0zMDIsMTYgKzI4NiwxNiBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogICAgICAgICB9KTsKIAogICAgICAgICByZXR1cm4gZGF0YTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9zZXNzaW9uc0NsZWFyZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zZXNzaW9u
c0NsZWFyZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9pZ25vcmVEaWRDbGVhck1lc3Nh
Z2VzID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fbG9nVmlld0NvbnRyb2xsZXIuY2xlYXIoKTsKICAg
ICAgICAgdGhpcy5faWdub3JlRGlkQ2xlYXJNZXNzYWdlcyA9IGZhbHNlOwotICAgIH0sCisgICAg
fQogCi0gICAgX3Nlc3Npb25TdGFydGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2Vzc2lvblN0
YXJ0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY2xlYXJMb2dPblJlbG9hZFNl
dHRpbmcudmFsdWUpICB7CiAgICAgICAgICAgICB0aGlzLl9jbGVhckxvZygpOwpAQCAtMzIyLDkg
KzMwNiw5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX2xvZ1ZpZXdDb250cm9sbGVyLnN0YXJ0TmV3U2Vzc2lvbigpOwogCiAgICAgICAg
IHRoaXMuX2NsZWFyUHJvdmlzaW9uYWxTdGF0ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX21l
c3NhZ2VBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX21lc3NhZ2VBZGRlZChldmVudCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9zdGFydGVkUHJvdmlzaW9uYWxMb2FkKQogICAgICAgICAg
ICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcy5wdXNoKGV2ZW50LmRhdGEubWVzc2FnZSk7CkBA
IC0zMzIsMTQgKzMxNiwxNCBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgbWVzc2FnZSA9IHRoaXMuX2xvZ1ZpZXdDb250cm9sbGVyLmFwcGVu
ZENvbnNvbGVNZXNzYWdlKGV2ZW50LmRhdGEubWVzc2FnZSk7CiAgICAgICAgIGlmIChtZXNzYWdl
LnR5cGUgIT09IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5F
bmRHcm91cCkKICAgICAgICAgICAgIHRoaXMuX2ZpbHRlck1lc3NhZ2VzKFttZXNzYWdlLnRvTWVz
c2FnZUVsZW1lbnQoKV0pOwotICAgIH0sCisgICAgfQogCi0gICAgX3ByZXZpb3VzTWVzc2FnZVJl
cGVhdENvdW50VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3ByZXZpb3VzTWVzc2FnZVJl
cGVhdENvdW50VXBkYXRlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2xvZ1ZpZXdDb250
cm9sbGVyLnVwZGF0ZVByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50KGV2ZW50LmRhdGEuY291bnQp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZUNvbnRleHRNZW51RXZlbnQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9oYW5kbGVDb250ZXh0TWVudUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAg
ICAgaWYgKCF3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQpIHsKICAgICAgICAgICAg
IC8vIElmIHRoZXJlIGlzIGEgc2VsZWN0aW9uLCB3ZSB3YW50IHRvIHNob3cgb3VyIG5vcm1hbCBj
b250ZXh0IG1lbnUKQEAgLTM2MCw5ICszNDQsOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGNsZWFyTG9n
T25SZWxvYWRVSVN0cmluZywgdGhpcy5fdG9nZ2xlQ2xlYXJMb2dPblJlbG9hZFNldHRpbmcuYmlu
ZCh0aGlzKSk7CiAKICAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX21vdXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX21vdXNlZG93bihldmVudCkK
ICAgICB7CiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtleSkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4NywxNiArMzcxLDE2IEBAIFdlYkluc3BlY3Rvci5M
b2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMpOwogICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
cigibW91c2V1cCIsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RhcmdldEluTWVzc2Fn
ZUNhbkJlU2VsZWN0ZWQ6IGZ1bmN0aW9uKHRhcmdldCwgbWVzc2FnZSkKKyAgICBfdGFyZ2V0SW5N
ZXNzYWdlQ2FuQmVTZWxlY3RlZCh0YXJnZXQsIG1lc3NhZ2UpCiAgICAgewogICAgICAgICBpZiAo
dGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoImEiKSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfbW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2Vtb3ZlKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKICAgICAg
ICAgdmFyIHdyYXBwZXIgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFz
cyhXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuSXRlbVdyYXBwZXJTdHlsZUNsYXNzTmFtZSk7
CkBAIC00MjksOSArNDEzLDkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5z
dG9wUHJvcGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZXVwOiBmdW5jdGlv
bihldmVudCkKKyAgICBfbW91c2V1cChldmVudCkKICAgICB7CiAgICAgICAgIHdpbmRvdy5yZW1v
dmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzKTsKICAgICAgICAgd2luZG93LnJlbW92
ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzKTsKQEAgLTQ2MSwxNyArNDQ1LDE3IEBAIFdl
Ykluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLl9tb3VzZURvd25XcmFwcGVyOwogICAgICAgICBkZWxldGUgdGhpcy5fbW91c2VEb3duU2hp
ZnRLZXk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9tb3VzZURvd25Db21tYW5kS2V5OwotICAgIH0s
CisgICAgfQogCi0gICAgX29uZHJhZ3N0YXJ0OiBmdW5jdGlvbihldmVudCkKKyAgICBfb25kcmFn
c3RhcnQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05v
ZGVPclNlbGZXaXRoQ2xhc3MoV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLlN0eWxlQ2xhc3NO
YW1lKSkgewogICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlRXZlbnQoZXZlbnQpCiAg
ICAgewogICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICAgICAgY2FzZSAibW91c2Vt
b3ZlIjoKQEAgLTQ4MSw5ICs0NjUsOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbW91c2V1cChldmVudCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU1lc3NhZ2Vz
U2VsZWN0aW9uOiBmdW5jdGlvbihtZXNzYWdlLCBtdWx0aXBsZVNlbGVjdGlvbiwgcmFuZ2VTZWxl
Y3Rpb24sIHNob3VsZFNjcm9sbEludG9WaWV3KQorICAgIF91cGRhdGVNZXNzYWdlc1NlbGVjdGlv
bihtZXNzYWdlLCBtdWx0aXBsZVNlbGVjdGlvbiwgcmFuZ2VTZWxlY3Rpb24sIHNob3VsZFNjcm9s
bEludG9WaWV3KQogICAgIHsKICAgICAgICAgdmFyIGFscmVhZHlTZWxlY3RlZE1lc3NhZ2UgPSB0
aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLmNvbnRhaW5zKG1lc3NhZ2UpOwogICAgICAgICBpZiAoYWxy
ZWFkeVNlbGVjdGVkTWVzc2FnZSAmJiB0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLmxlbmd0aCAmJiBt
dWx0aXBsZVNlbGVjdGlvbikgewpAQCAtNTMxLDkgKzUxNSw5IEBAIFdlYkluc3BlY3Rvci5Mb2dD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHNob3VsZFNjcm9sbEludG9W
aWV3ICYmICFhbHJlYWR5U2VsZWN0ZWRNZXNzYWdlKQogICAgICAgICAgICAgdGhpcy5fZW5zdXJl
TWVzc2FnZUlzVmlzaWJsZSh0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLmxhc3RWYWx1ZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfZW5zdXJlTWVzc2FnZUlzVmlzaWJsZTogZnVuY3Rpb24obWVzc2Fn
ZSkKKyAgICBfZW5zdXJlTWVzc2FnZUlzVmlzaWJsZShtZXNzYWdlKQogICAgIHsKICAgICAgICAg
aWYgKCFtZXNzYWdlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTU0LDE1ICs1MzgsMTUgQEAg
V2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlm
ICh5ID4gdGhpcy5fc2Nyb2xsRWxlbWVudEhlaWdodCkKICAgICAgICAgICAgICAgICB0aGlzLmVs
ZW1lbnQuc2Nyb2xsVG9wICs9IHkgLSB0aGlzLl9zY3JvbGxFbGVtZW50SGVpZ2h0OwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9zaXRpb25Gb3JNZXNzYWdlOiBmdW5jdGlvbiht
ZXNzYWdlKQorICAgIF9wb3NpdGlvbkZvck1lc3NhZ2UobWVzc2FnZSkKICAgICB7CiAgICAgICAg
IHZhciBwYWdlUG9pbnQgPSB3aW5kb3cud2Via2l0Q29udmVydFBvaW50RnJvbU5vZGVUb1BhZ2Uo
bWVzc2FnZSwgbmV3IFdlYktpdFBvaW50KDAsIDApKTsKICAgICAgICAgcmV0dXJuIHdpbmRvdy53
ZWJraXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZSh0aGlzLmVsZW1lbnQsIHBhZ2VQb2ludCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaXNNZXNzYWdlVmlzaWJsZTogZnVuY3Rpb24obWVzc2Fn
ZSkKKyAgICBfaXNNZXNzYWdlVmlzaWJsZShtZXNzYWdlKQogICAgIHsKICAgICAgICAgdmFyIG5v
ZGUgPSBtZXNzYWdlOwogCkBAIC01ODIsMjMgKzU2NiwyMyBAQCBXZWJJbnNwZWN0b3IuTG9nQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaXNNZXNzYWdlU2VsZWN0ZWQ6IGZ1bmN0aW9uKG1lc3Nh
Z2UpCisgICAgX2lzTWVzc2FnZVNlbGVjdGVkKG1lc3NhZ2UpCiAgICAgewogICAgICAgICByZXR1
cm4gbWVzc2FnZS5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3
LlNlbGVjdGVkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NsZWFyTWVz
c2FnZXNTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXJNZXNzYWdlc1NlbGVjdGlvbigp
CiAgICAgewogICAgICAgICB0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLmZvckVhY2goZnVuY3Rpb24o
bWVzc2FnZSkgewogICAgICAgICAgICAgbWVzc2FnZS5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5Mb2dDb250ZW50Vmlldy5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgfSk7
CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkTWVzc2FnZXMgPSBbXTsKICAgICAgICAgZGVsZXRlIHRo
aXMuX3JlZmVyZW5jZU1lc3NhZ2VGb3JSYW5nZVNlbGVjdGlvbjsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9zZWxlY3RBbGxNZXNzYWdlczogZnVuY3Rpb24oKQorICAgIF9zZWxlY3RBbGxNZXNzYWdl
cygpCiAgICAgewogICAgICAgICB0aGlzLl9jbGVhck1lc3NhZ2VzU2VsZWN0aW9uKCk7CiAKQEAg
LTYwOCwyMSArNTkyLDIxIEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBtZXNzYWdlLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkxvZ0Nv
bnRlbnRWaWV3LlNlbGVjdGVkU3R5bGVDbGFzc05hbWUpOwogICAgICAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRNZXNzYWdlcy5wdXNoKG1lc3NhZ2UpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfYWxsTWVzc2FnZXM6IGZ1bmN0aW9uKCkKKyAgICBfYWxsTWVzc2FnZXMoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5tZXNzYWdlc0VsZW1lbnQucXVlcnlTZWxl
Y3RvckFsbCgiLmNvbnNvbGUtbWVzc2FnZSwgLmNvbnNvbGUtdXNlci1jb21tYW5kIikpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3VuZmlsdGVyZWRNZXNzYWdlczogZnVuY3Rpb24oKQorICAgIF91
bmZpbHRlcmVkTWVzc2FnZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2FsbE1lc3Nh
Z2VzKCkuZmlsdGVyKGZ1bmN0aW9uKG1lc3NhZ2UpIHsKICAgICAgICAgICAgIHJldHVybiAhbWVz
c2FnZS5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LkZpbHRl
cmVkT3V0U3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAg
IF92aXNpYmxlTWVzc2FnZXM6IGZ1bmN0aW9uKCkKKyAgICBfdmlzaWJsZU1lc3NhZ2VzKCkKICAg
ICB7CiAgICAgICAgIHZhciB1bmZpbHRlcmVkTWVzc2FnZXMgPSB0aGlzLl91bmZpbHRlcmVkTWVz
c2FnZXMoKTsKIApAQCAtNjMyLDQxICs2MTYsNDEgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHVuZmlsdGVyZWRNZXNzYWdlcy5maWx0
ZXIoZnVuY3Rpb24obWVzc2FnZSkgewogICAgICAgICAgICAgcmV0dXJuICFtZXNzYWdlLmNsYXNz
TGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuRmlsdGVyZWRPdXRCeVNl
YXJjaFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
YWN0aXZlTG9nQ2xlYXJlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2FjdGl2ZUxvZ0NsZWFyZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9pZ25vcmVEaWRDbGVhck1lc3NhZ2VzID0gdHJ1
ZTsKICAgICAgICAgdGhpcy5fbG9nVmlld0NvbnRyb2xsZXIuY2xlYXIoKTsKICAgICAgICAgdGhp
cy5faWdub3JlRGlkQ2xlYXJNZXNzYWdlcyA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAg
X3RvZ2dsZVNwbGl0OiBmdW5jdGlvbigpCisgICAgX3RvZ2dsZVNwbGl0KCkKICAgICB7CiAgICAg
ICAgIGlmIChXZWJJbnNwZWN0b3IuaXNTaG93aW5nU3BsaXRDb25zb2xlKCkpCiAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3Iuc2hvd0Z1bGxIZWlnaHRDb25zb2xlKCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93U3BsaXRDb25zb2xlKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfdG9nZ2xlQ2xlYXJMb2dPblJlbG9hZFNldHRpbmc6IGZ1bmN0aW9uKCkKKyAgICBf
dG9nZ2xlQ2xlYXJMb2dPblJlbG9hZFNldHRpbmcoKQogICAgIHsKICAgICAgICAgdGhpcy5fY2xl
YXJMb2dPblJlbG9hZFNldHRpbmcudmFsdWUgPSAhdGhpcy5fY2xlYXJMb2dPblJlbG9hZFNldHRp
bmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXJMb2c6IGZ1bmN0aW9uKCkKKyAg
ICBfY2xlYXJMb2coKQogICAgIHsKICAgICAgICAgdGhpcy5faWdub3JlRGlkQ2xlYXJNZXNzYWdl
cyA9IHRydWU7CiAgICAgICAgIHRoaXMuX2xvZ1ZpZXdDb250cm9sbGVyLmNsZWFyKCk7CiAgICAg
ICAgIHRoaXMuX2lnbm9yZURpZENsZWFyTWVzc2FnZXMgPSBmYWxzZTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9zY29wZUJhclNlbGVjdGlvbkRpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAg
X3Njb3BlQmFyU2VsZWN0aW9uRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5f
ZmlsdGVyTWVzc2FnZXModGhpcy5fYWxsTWVzc2FnZXMoKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZmlsdGVyTWVzc2FnZXM6IGZ1bmN0aW9uKG1lc3NhZ2VzKQorICAgIF9maWx0ZXJNZXNzYWdl
cyhtZXNzYWdlcykKICAgICB7CiAgICAgICAgIHZhciBzaG93c0FsbCA9IHRoaXMuX3Njb3BlQmFy
Lml0ZW0oV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5BbGwpLnNlbGVjdGVkOwog
ICAgICAgICB2YXIgc2hvd3NFcnJvcnMgPSB0aGlzLl9zY29wZUJhci5pdGVtKFdlYkluc3BlY3Rv
ci5Mb2dDb250ZW50Vmlldy5TY29wZXMuRXJyb3JzKS5zZWxlY3RlZDsKQEAgLTcwMSwxOSArNjg1
LDE5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0sIHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3BlcmZvcm1TZWFyY2goKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9kaWRGb2N1czogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RpZEZvY3VzKGV2ZW50
KQogICAgIHsKICAgICAgICAgdGhpcy5fZm9jdXNlZCA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZGlkQmx1cjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RpZEJsdXIoZXZlbnQpCiAgICAg
ewogICAgICAgICB0aGlzLl9mb2N1c2VkID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
a2V5RG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2tleURvd24oZXZlbnQpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fa2V5Ym9hcmRTaG9ydGN1dENvbW1hbmRBLm1hdGNoZXNFdmVudChldmVu
dCkpCiAgICAgICAgICAgICB0aGlzLl9jb21tYW5kQVdhc1ByZXNzZWQoZXZlbnQpOwpAQCAtNzI3
LDE1ICs3MTEsMTUgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHRoaXMuX2xlZnRBcnJvd1dhc1ByZXNzZWQoZXZlbnQpOwogICAgICAgICBl
bHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiUmlnaHQiKQogICAgICAgICAgICAgdGhp
cy5fcmlnaHRBcnJvd1dhc1ByZXNzZWQoZXZlbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nv
bW1hbmRBV2FzUHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbW1hbmRBV2FzUHJlc3Nl
ZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3NlbGVjdEFsbE1lc3NhZ2VzKCk7CiAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZXNjYXBl
V2FzUHJlc3NlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2VzY2FwZVdhc1ByZXNzZWQoZXZlbnQp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRNZXNzYWdlcy5sZW5ndGgpCiAgICAg
ICAgICAgICB0aGlzLl9jbGVhck1lc3NhZ2VzU2VsZWN0aW9uKCk7CkBAIC03NDMsOSArNzI3LDkg
QEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMucHJvbXB0LmZvY3VzKCk7CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF91cEFycm93V2FzUHJlc3NlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3VwQXJyb3dXYXNQcmVzc2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG1lc3Nh
Z2VzID0gdGhpcy5fdmlzaWJsZU1lc3NhZ2VzKCk7CiAKQEAgLTc2NSw5ICs3NDksOSBAQCBXZWJJ
bnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kb3duQXJy
b3dXYXNQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZG93bkFycm93V2FzUHJlc3NlZChl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciBtZXNzYWdlcyA9IHRoaXMuX3Zpc2libGVNZXNzYWdl
cygpOwogCkBAIC03ODcsOSArNzcxLDkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbGVmdEFycm93V2FzUHJlc3NlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2xlZnRBcnJvd1dhc1ByZXNzZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fc2VsZWN0ZWRNZXNzYWdlcy5sZW5ndGggIT09IDEpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC04MTEsOSArNzk1LDkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgb3V0bGluZVNlY3Rpb24uX3NlY3Rpb24uY29sbGFw
c2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3Jp
Z2h0QXJyb3dXYXNQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcmlnaHRBcnJvd1dhc1By
ZXNzZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRNZXNzYWdlcy5s
ZW5ndGggIT09IDEpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04NDUsOSArODI5LDkgQEAgV2Vi
SW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9wcm9wZXJ0
aWVzU2VjdGlvbkRpZFVwZGF0ZUNvbnRlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wcm9wZXJ0
aWVzU2VjdGlvbkRpZFVwZGF0ZUNvbnRlbnQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2Vj
dGlvbiA9IGV2ZW50LnRhcmdldDsKICAgICAgICAgc2VjdGlvbi5yZW1vdmVFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5TZWN0aW9uLkV2ZW50LlZpc2libGVDb250ZW50RGlkQ2hhbmdlLCB0aGlz
Ll9wcm9wZXJ0aWVzU2VjdGlvbkRpZFVwZGF0ZUNvbnRlbnQsIHRoaXMpOwpAQCAtODYwLDM5ICs4
NDQsMzkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuX2Vuc3VyZU1lc3NhZ2VJc1Zpc2libGUobWVzc2FnZSk7CiAgICAgICAgICAg
ICB0aGlzLl9jbGVhckZvY3VzYWJsZUNoaWxkcmVuKCk7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcHJldmlvdXNNZXNzYWdlOiBmdW5jdGlvbihtZXNzYWdl
KQorICAgIF9wcmV2aW91c01lc3NhZ2UobWVzc2FnZSkKICAgICB7CiAgICAgICAgIHZhciBtZXNz
YWdlcyA9IHRoaXMuX3Zpc2libGVNZXNzYWdlcygpOwogICAgICAgICBmb3IgKHZhciBpID0gbWVz
c2FnZXMuaW5kZXhPZihtZXNzYWdlKSAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgICAgICBp
ZiAodGhpcy5faXNNZXNzYWdlVmlzaWJsZShtZXNzYWdlc1tpXSkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG1lc3NhZ2VzW2ldOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbmV4
dE1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgX25leHRNZXNzYWdlKG1lc3NhZ2UpCiAg
ICAgewogICAgICAgICB2YXIgbWVzc2FnZXMgPSB0aGlzLl92aXNpYmxlTWVzc2FnZXMoKTsKICAg
ICAgICAgZm9yICh2YXIgaSA9IG1lc3NhZ2VzLmluZGV4T2YobWVzc2FnZSkgKyAxOyBpIDwgbWVz
c2FnZXMubGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIGlmICh0aGlzLl9pc01lc3NhZ2VWaXNp
YmxlKG1lc3NhZ2VzW2ldKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZXNbaV07CiAg
ICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9jbGVhckZvY3VzYWJsZUNoaWxkcmVuOiBm
dW5jdGlvbigpCisgICAgX2NsZWFyRm9jdXNhYmxlQ2hpbGRyZW4oKQogICAgIHsKICAgICAgICAg
dmFyIGZvY3VzYWJsZUVsZW1lbnRzID0gdGhpcy5tZXNzYWdlc0VsZW1lbnQucXVlcnlTZWxlY3Rv
ckFsbCgiW3RhYmluZGV4XSIpOwogICAgICAgICBmb3IgKHZhciBpID0gMCwgY291bnQgPSBmb2N1
c2FibGVFbGVtZW50cy5sZW5ndGg7IGkgPCBjb3VudDsgKytpKQogICAgICAgICAgICAgZm9jdXNh
YmxlRWxlbWVudHNbaV0ucmVtb3ZlQXR0cmlidXRlKCJ0YWJpbmRleCIpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3NlYXJjaFRleHREaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zZWFy
Y2hUZXh0RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcGVyZm9ybVNlYXJj
aCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKCkKKyAg
ICBfcGVyZm9ybVNlYXJjaCgpCiAgICAgewogICAgICAgICBpZiAoIWlzRW1wdHlPYmplY3QodGhp
cy5fc2VhcmNoSGlnaGxpZ2h0RE9NQ2hhbmdlcykpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
cmV2ZXJ0RG9tQ2hhbmdlcyh0aGlzLl9zZWFyY2hIaWdobGlnaHRET01DaGFuZ2VzKTsKQEAgLTkz
Niw5ICs5MjAsOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTZWFyY2hNYXRjaC5oaWdobGlnaHQuY2xhc3NMaXN0
LnJlbW92ZShXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2VsZWN0ZWRTdHlsZUNsYXNzTmFt
ZSk7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2VsZWN0ZWRTZWFyY2hNYXRjaDsKICAgICAg
ICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2hpZ2hsaWdodFJhbmdlczogZnVuY3Rpb24obWVz
c2FnZSwgbWF0Y2hSYW5nZXMpCisgICAgX2hpZ2hsaWdodFJhbmdlcyhtZXNzYWdlLCBtYXRjaFJh
bmdlcykKICAgICB7CiAgICAgICAgIHZhciBoaWdobGlnaHRlZEVsZW1lbnRzID0gV2ViSW5zcGVj
dG9yLmhpZ2hsaWdodFJhbmdlc1dpdGhTdHlsZUNsYXNzKG1lc3NhZ2UsIG1hdGNoUmFuZ2VzLCBX
ZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuSGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSwgdGhp
cy5fc2VhcmNoSGlnaGxpZ2h0RE9NQ2hhbmdlcyk7CiAKQEAgLTk1OSwxNCArOTQzLDE0IEBAIFdl
Ykluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9LCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9yYW5nZXNPdmVybGFwOiBmdW5jdGlvbihyYW5nZTEsIHJhbmdlMikKKyAgICBfcmFuZ2VzT3Zl
cmxhcChyYW5nZTEsIHJhbmdlMikKICAgICB7CiAgICAgICAgIHJldHVybiByYW5nZTEub2Zmc2V0
IDw9IHJhbmdlMi5vZmZzZXQgKyByYW5nZTIubGVuZ3RoICYmIHJhbmdlMi5vZmZzZXQgPD0gcmFu
Z2UxLm9mZnNldCArIHJhbmdlMS5sZW5ndGg7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGlnaGxp
Z2h0U2VhcmNoTWF0Y2hBdEluZGV4OiBmdW5jdGlvbihpbmRleCkKKyAgICBfaGlnaGxpZ2h0U2Vh
cmNoTWF0Y2hBdEluZGV4KGluZGV4KQogICAgIHsKICAgICAgICAgaWYgKGluZGV4ID49IHRoaXMu
X3NlYXJjaE1hdGNoZXMubGVuZ3RoKQogICAgICAgICAgICAgaW5kZXggPSAwOwpAQCAtOTgwLDE0
ICs5NjQsMTQgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRTZWFyY2hNYXRjaC5oaWdobGlnaHQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7CiAKICAg
ICAgICAgdGhpcy5fZW5zdXJlTWVzc2FnZUlzVmlzaWJsZSh0aGlzLl9zZWxlY3RlZFNlYXJjaE1h
dGNoLm1lc3NhZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Byb3Zpc2lvbmFsTG9hZFN0YXJ0
ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCgpCiAgICAgewogICAg
ICAgICB0aGlzLl9zdGFydGVkUHJvdmlzaW9uYWxMb2FkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9yZWFwcGVuZFByb3Zpc2lvbmFsTWVzc2FnZXM6IGZ1bmN0aW9uKCkKKyAgICBfcmVh
cHBlbmRQcm92aXNpb25hbE1lc3NhZ2VzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc3Rh
cnRlZFByb3Zpc2lvbmFsTG9hZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMDEsMTMgKzk4
NSwyNSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcyA9IFtdOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2NsZWFyUHJvdmlzaW9uYWxTdGF0ZTogZnVuY3Rpb24oKQorICAgIF9jbGVh
clByb3Zpc2lvbmFsU3RhdGUoKQogICAgIHsKICAgICAgICAgdGhpcy5fc3RhcnRlZFByb3Zpc2lv
bmFsTG9hZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9wcm92aXNpb25hbE1lc3NhZ2VzID0gW107
ICAgICAgICAKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGU7CitXZWJJ
bnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2NvcGVzID0geworICAgIEFsbDogImxvZy1hbGwiLAor
ICAgIEVycm9yczogImxvZy1lcnJvcnMiLAorICAgIFdhcm5pbmdzOiAibG9nLXdhcm5pbmdzIiwK
KyAgICBMb2dzOiAibG9nLWxvZ3MiCit9OworCitXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcu
SXRlbVdyYXBwZXJTdHlsZUNsYXNzTmFtZSA9ICJjb25zb2xlLWl0ZW0iOworV2ViSW5zcGVjdG9y
LkxvZ0NvbnRlbnRWaWV3LkZpbHRlcmVkT3V0U3R5bGVDbGFzc05hbWUgPSAiZmlsdGVyZWQtb3V0
IjsKK1dlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lID0g
InNlbGVjdGVkIjsKK1dlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TZWFyY2hJblByb2dyZXNz
U3R5bGVDbGFzc05hbWUgPSAic2VhcmNoLWluLXByb2dyZXNzIjsKK1dlYkluc3BlY3Rvci5Mb2dD
b250ZW50Vmlldy5GaWx0ZXJlZE91dEJ5U2VhcmNoU3R5bGVDbGFzc05hbWUgPSAiZmlsdGVyZWQt
b3V0LWJ5LXNlYXJjaCI7CitXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuSGlnaGxpZ2h0ZWRT
dHlsZUNsYXNzTmFtZSA9ICJoaWdobGlnaHRlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ1RyZWVFbGVtZW50LmpzCmluZGV4
IGE3M2QwZGIuLjdmZmQ4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0xvZ1RyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xvZ1RyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMSArMjMsMTgg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuTG9nVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3Bl
Y3Rvci5Mb2dUcmVlRWxlbWVudCA9IGNsYXNzIExvZ1RyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkxvZ09iamVjdCk7Ci0KLSAgICBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkxvZ1Ry
ZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUi
KSwgcmVwcmVzZW50ZWRPYmplY3Quc3RhcnREYXRlLnRvTG9jYWxlVGltZVN0cmluZygpLCByZXBy
ZXNlbnRlZE9iamVjdCwgZmFsc2UpOwotCi0gICAgdGhpcy5fbG9nT2JqZWN0ID0gcmVwcmVzZW50
ZWRPYmplY3Q7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5Mb2dPYmplY3QpOwogCi0gICAgdGhpcy5zbWFsbCA9IHRydWU7Ci19OworICAgICAgICBz
dXBlcigibG9nLWljb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbnNvbGUiKSwgcmVwcmVz
ZW50ZWRPYmplY3Quc3RhcnREYXRlLnRvTG9jYWxlVGltZVN0cmluZygpLCByZXByZXNlbnRlZE9i
amVjdCwgZmFsc2UpOwogCi1XZWJJbnNwZWN0b3IuTG9nVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05h
bWUgPSAibG9nLWljb24iOworICAgICAgICB0aGlzLl9sb2dPYmplY3QgPSByZXByZXNlbnRlZE9i
amVjdDsKIAotV2ViSW5zcGVjdG9yLkxvZ1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkxvZ1RyZWVFbGVtZW50LAorICAgICAgICB0aGlzLnNt
YWxsID0gdHJ1ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNDYsNSArNDMsMyBAQCBX
ZWJJbnNwZWN0b3IuTG9nVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
dGhpcy5fbG9nT2JqZWN0OwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5Mb2dUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXgg
ZDI4YTgzMi4uODg5NTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01ldHJpY3NTdHlsZURldGFpbHNQYW5l
bC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsMjkgKzIzLDI0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbCA9IGZ1bmN0aW9u
KCkKK1dlYkluc3BlY3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBNZXRyaWNz
U3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwK
IHsKLSAgICBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwuY2FsbCh0aGlzLCBXZWJJbnNw
ZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLlN0eWxlQ2xhc3NOYW1lLCAibWV0cmljcyIs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWV0cmljcyIpKTsKLQotICAgIHRoaXMuX2JveE1vZGVs
RGlhZ3JhbVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdzsK
LQotICAgIHZhciBib3hNb2RlbEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFt0aGlzLl9ib3hNb2RlbERpYWdyYW1Sb3ddKTsKLSAgICB2YXIgYm94TW9kZWxTZWN0
aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigic3R5bGUtYm94LW1vZGVsIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCb3ggTW9kZWwiKSwgW2JveE1vZGVsR3JvdXBdKTsKKyAg
ICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigibWV0cmljcyIsICJtZXRyaWNz
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNZXRyaWNzIikpOwogCi0gICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKGJveE1vZGVsU2VjdGlvbi5lbGVtZW50KTsKLX07CisgICAgICAgIHRoaXMu
X2JveE1vZGVsRGlhZ3JhbVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2Vj
dGlvblJvdzsKIAotV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNs
YXNzTmFtZSA9ICJtZXRyaWNzIjsKKyAgICAgICAgdmFyIGJveE1vZGVsR3JvdXAgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMuX2JveE1vZGVsRGlhZ3JhbVJvd10p
OworICAgICAgICB2YXIgYm94TW9kZWxTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvbigic3R5bGUtYm94LW1vZGVsIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCb3ggTW9k
ZWwiKSwgW2JveE1vZGVsR3JvdXBdKTsKIAotV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFp
bHNQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5NZXRy
aWNzU3R5bGVEZXRhaWxzUGFuZWwsCisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChi
b3hNb2RlbFNlY3Rpb24uZWxlbWVudCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBy
ZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaCgpCiAgICAgewogICAgICAgICB0aGlzLl9i
b3hNb2RlbERpYWdyYW1Sb3cubm9kZVN0eWxlcyA9IHRoaXMubm9kZVN0eWxlczsKICAgICB9CiB9
OwotCi1XZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlv
bkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmln
YXRpb25CYXIuanMKaW5kZXggZmIzMzYyYS4uMWQ1ZTlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMyw1OSArMjMsNDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hdmln
YXRpb25JdGVtcywgcm9sZSwgbGFiZWwpIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAv
LyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0g
ZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jb25zdHJ1Y3Rvci5TdHlsZUNsYXNzTmFtZSB8fCBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkJhci5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5fZWxlbWVu
dC50YWJJbmRleCA9IDA7Ci0KLSAgICBpZiAocm9sZSkKLSAgICAgICAgdGhpcy5fZWxlbWVudC5z
ZXRBdHRyaWJ1dGUoInJvbGUiLCByb2xlKTsKLSAgICBpZiAobGFiZWwpCi0gICAgICAgIHRoaXMu
X2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOwotCi0gICAgdGhpcy5f
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2ZvY3VzLmJpbmQodGhpcyks
IGZhbHNlKTsKLSAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlz
Ll9ibHVyLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0
aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93
bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0KLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJs
b2FkIiwgdGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSwgZmFsc2UpOworV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcywgcm9s
ZSwgbGFiZWwpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgdGhpcy5fc3R5bGVFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKKyAgICAgICAgdGhpcy5fZWxl
bWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnN0cnVjdG9yLlN0eWxlQ2xhc3NO
YW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC50YWJJbmRleCA9IDA7CiAKLSAgICB0aGlzLl9u
YXZpZ2F0aW9uSXRlbXMgPSBbXTsKKyAgICAgICAgaWYgKHJvbGUpCisgICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUpOworICAgICAgICBpZiAobGFiZWwp
CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxh
YmVsKTsKIAotICAgIGlmIChuYXZpZ2F0aW9uSXRlbXMpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBuYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLmFk
ZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtc1tpXSk7Ci0gICAgfQorICAgICAgICB0aGlz
Ll9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fZm9jdXMuYmluZCh0aGlz
KSwgZmFsc2UpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIi
LCB0aGlzLl9ibHVyLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5RG93bi5iaW5kKHRoaXMpLCBmYWxz
ZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwg
dGhpcy5fbW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKIAotICAgIGRvY3VtZW50LmhlYWQu
YXBwZW5kQ2hpbGQodGhpcy5fc3R5bGVFbGVtZW50KTsKLX07CisgICAgICAgIGRvY3VtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0aGlzLnVwZGF0ZUxheW91dC5iaW5kKHRoaXMpLCBmYWxz
ZSk7CiAKLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBh
bmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRk
Q29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIpOworICAgICAg
ICB0aGlzLl9zdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwog
Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5TdHlsZUNsYXNzTmFtZSA9ICJuYXZpZ2F0aW9u
LWJhciI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFt
ZSA9ICJjb2xsYXBzZWQiOworICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMgPSBbXTsKIAot
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuRXZlbnQgPSB7Ci0gICAgTmF2aWdhdGlvbkl0ZW1T
ZWxlY3RlZDogIm5hdmlnYXRpb24tYmFyLW5hdmlnYXRpb24taXRlbS1zZWxlY3RlZCIKLX07Cisg
ICAgICAgIGlmIChuYXZpZ2F0aW9uSXRlbXMpIHsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMu
YWRkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW1zW2ldKTsKKyAgICAgICAgfQogCi1XZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLAorICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENo
aWxkKHRoaXMuX3N0eWxlRWxlbWVudCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBh
ZGROYXZpZ2F0aW9uSXRlbTogZnVuY3Rpb24obmF2aWdhdGlvbkl0ZW0sIHBhcmVudEVsZW1lbnQp
CisgICAgYWRkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0sIHBhcmVudEVsZW1lbnQpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5pbnNlcnROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9u
SXRlbSwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCwgcGFyZW50RWxlbWVudCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBpbnNlcnROYXZpZ2F0aW9uSXRlbTogZnVuY3Rpb24obmF2aWdhdGlv
bkl0ZW0sIGluZGV4LCBwYXJlbnRFbGVtZW50KQorICAgIGluc2VydE5hdmlnYXRpb25JdGVtKG5h
dmlnYXRpb25JdGVtLCBpbmRleCwgcGFyZW50RWxlbWVudCkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KG5hdmlnYXRpb25JdGVtIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25JdGVtKTsKICAgICAgICAgaWYgKCEobmF2aWdhdGlvbkl0ZW0gaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkl0ZW0pKQpAQCAtMTA3LDkgKzk2LDkgQEAgV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25CYXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnVwZGF0ZUxheW91dFNvb24o
KTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdGlvbkl0ZW07Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICByZW1vdmVOYXZpZ2F0aW9uSXRlbTogZnVuY3Rpb24obmF2aWdhdGlvbkl0ZW1PcklkZW50aWZp
ZXJPckluZGV4LCBpbmRleCkKKyAgICByZW1vdmVOYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRl
bU9ySWRlbnRpZmllck9ySW5kZXgsIGluZGV4KQogICAgIHsKICAgICAgICAgdmFyIG5hdmlnYXRp
b25JdGVtID0gdGhpcy5fZmluZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtT3JJZGVudGlm
aWVyT3JJbmRleCk7CiAgICAgICAgIGlmICghbmF2aWdhdGlvbkl0ZW0pCkBAIC0xMjksOSArMTE4
LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLnVwZGF0ZUxheW91dFNvb24oKTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdGlvbkl0ZW07
Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRTb29uOiBmdW5jdGlvbigpCisgICAg
dXBkYXRlTGF5b3V0U29vbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdXBkYXRlTGF5b3V0
VGltZW91dCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0Nyw5ICsxMzYsOSBAQCBXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0
aGlzLl91cGRhdGVMYXlvdXRUaW1lb3V0ID0gc2V0VGltZW91dCh1cGRhdGUuYmluZCh0aGlzKSwg
MCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1
cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUxheW91dFRpbWVv
dXQpIHsKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVMYXlvdXRUaW1lb3V0
KTsKQEAgLTE5MSwxMiArMTgwLDEyIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgLy8gR2l2ZSBlYWNoIG5hdmlnYXRpb24gaXRlbSB0aGUgb3Bwb3J0
dW5pdHkgdG8gY29sbGFwc2UgZnVydGhlci4KICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0
aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9uYXZp
Z2F0aW9uSXRlbXNbaV0udXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2Vs
ZWN0ZWROYXZpZ2F0aW9uSXRlbSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNl
bGVjdGVkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW1PcklkZW50aWZpZXJPckluZGV4KQog
ICAgIHsKQEAgLTIyMSwxNyArMjEwLDE3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyBzZW5kaW5nIHRoZSBldmVudCB3
aGlsZSB0aGUgdXNlciBpcyBzY3J1YmJpbmcgdGhlIGJhci4KICAgICAgICAgaWYgKCF0aGlzLl9t
b3VzZUlzRG93bikKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkV2ZW50Lk5hdmlnYXRpb25JdGVtU2VsZWN0ZWQpOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgbWluaW11bVdpZHRoKCkKICAgICB7CkBAIC0yNDEsMTcgKzIzMCwx
NyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
IAogICAgICAgICByZXR1cm4gdGhpcy5fbWluaW11bVdpZHRoOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHNpemVzVG9GaXQoKQogICAgIHsKICAgICAgICAgLy8gQ2FuIGJlIG92ZXJyaWRlbiBi
eSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcml2YXRlCiAKLSAgICBfZmluZE5hdmlnYXRpb25JdGVtOiBmdW5jdGlvbihuYXZpZ2F0
aW9uSXRlbU9ySWRlbnRpZmllck9ySW5kZXgpCisgICAgX2ZpbmROYXZpZ2F0aW9uSXRlbShuYXZp
Z2F0aW9uSXRlbU9ySWRlbnRpZmllck9ySW5kZXgpCiAgICAgewogICAgICAgICB2YXIgbmF2aWdh
dGlvbkl0ZW0gPSBudWxsOwogCkBAIC0yNzAsOSArMjU5LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5hdmln
YXRpb25JdGVtOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlRG93bjogZnVuY3Rpb24oZXZl
bnQpCisgICAgX21vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIC8vIE9ubHkgaGFuZGxl
IGxlZnQgbW91c2UgY2xpY2tzLgogICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwKQpAQCAt
MzAxLDkgKzI5MCw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJv
cGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZU1vdmVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfbW91c2VNb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX21v
dXNlSXNEb3duKTsKQEAgLTMzMiw5ICszMjEsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJh
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9IGl0
ZW1FbGVtZW50Lm5hdmlnYXRpb25JdGVtOwogCiAgICAgICAgIHRoaXMuc2VsZWN0ZWROYXZpZ2F0
aW9uSXRlbS5hY3RpdmUgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlVXA6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZVVwKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5fbW91c2VJc0Rvd24pOwpAQCAtMzY0LDkgKzM1Myw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uQmFyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwog
ICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9r
ZXlEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfa2V5RG93bihldmVudCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fZm9jdXNlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5NiwxOSAr
Mzg1LDE5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLnNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0gPSB0
aGlzLl9uYXZpZ2F0aW9uSXRlbXNbc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbUluZGV4XTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9mb2N1czogZnVuY3Rpb24oZXZlbnQpCisgICAgX2ZvY3VzKGV2ZW50
KQogICAgIHsKICAgICAgICAgdGhpcy5fZm9jdXNlZCA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfYmx1cjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JsdXIoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9mb2N1c2VkID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRl
U3R5bGU6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlU3R5bGUoKQogICAgIHsKICAgICAgICAgdGhp
cy5fbmVlZHNTdHlsZVVwZGF0ZWQgPSBmYWxzZTsKIApAQCAtNDI0LDkgKzQxMyw5IEBAIFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuX3N0eWxlRWxlbWVudC50ZXh0Q29udGVudCA9IHN0eWxlVGV4dDsKLSAgICB9LAorICAg
IH0KIAotICAgIF9jYWxjdWxhdGVNaW5pbXVtV2lkdGg6IGZ1bmN0aW9uKCkKKyAgICBfY2FsY3Vs
YXRlTWluaW11bVdpZHRoKCkKICAgICB7CiAgICAgICAgIHZhciB3YXNDb2xsYXBzZWQgPSB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5D
b2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAKQEAgLTQ1MCw0ICs0MzksOSBAQCBXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuU3R5bGVDbGFzc05hbWUgPSAi
bmF2aWdhdGlvbi1iYXIiOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuQ29sbGFwc2VkU3R5
bGVDbGFzc05hbWUgPSAiY29sbGFwc2VkIjsKKworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIu
RXZlbnQgPSB7CisgICAgTmF2aWdhdGlvbkl0ZW1TZWxlY3RlZDogIm5hdmlnYXRpb24tYmFyLW5h
dmlnYXRpb24taXRlbS1zZWxlY3RlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCmluZGV4IGEz
MTI1NjkuLmE3YTA1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCkBAIC0yMyw2MCArMjMsNTUg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyLCByb2xlLCBsYWJlbCkgewot
ICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNs
YXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKLQotICAgIHRoaXMuX2lkZW50aWZpZXIgPSBpZGVudGlmaWVyIHx8IG51bGw7Ci0KLSAg
ICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhp
cy5faGlkZGVuID0gZmFsc2U7CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBO
YXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1
Y3RvcihpZGVudGlmaWVyLCByb2xlLCBsYWJlbCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAK
LSAgICBpZiAocm9sZSkKLSAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUi
LCByb2xlKTsKLSAgICBpZiAobGFiZWwpCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmli
dXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOworICAgICAgICB0aGlzLl9pZGVudGlmaWVyID0gaWRl
bnRpZmllciB8fCBudWxsOwogCi0gICAgdmFyIGNsYXNzTmFtZXMgPSB0aGlzLl9jbGFzc05hbWVz
OwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2xhc3NOYW1lcy5sZW5ndGg7ICsraSkKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZXNbaV0pOworICAgICAgICB0
aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRo
aXMuX2hpZGRlbiA9IGZhbHNlOwogCi0gICAgdGhpcy5fZWxlbWVudC5uYXZpZ2F0aW9uSXRlbSA9
IHRoaXM7Ci19OworICAgICAgICBpZiAocm9sZSkKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
c2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7CisgICAgICAgIGlmIChsYWJlbCkKKyAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOwogCi1X
ZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUgPSAiaXRlbSI7Ci1XZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0uSGlkZGVuU3R5bGVDbGFzc05hbWUgPSAiaGlkZGVuIjsK
KyAgICAgICAgdmFyIGNsYXNzTmFtZXMgPSB0aGlzLl9jbGFzc05hbWVzOworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNsYXNzTmFtZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lc1tpXSk7CiAKLQotV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25JdGVtLAorICAgICAgICB0aGlzLl9lbGVtZW50Lm5hdmlnYXRpb25JdGVt
ID0gdGhpczsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBpZGVudGlmaWVyKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pZGVudGlmaWVyOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50TmF2aWdhdGlvbkJhcigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50TmF2aWdhdGlvbkJhcjsKLSAgICB9LAorICAgIH0K
IAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oZXhwYW5kT25seSkKKyAgICB1cGRhdGVMYXlv
dXQoZXhwYW5kT25seSkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCi0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9oaWRkZW47Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgaGlkZGVuKGZsYWcp
CiAgICAgewpAQCAtODUsMjYgKzgwLDIxIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5faGlkZGVuID0gZmxhZzsKIAotICAgICAgICBp
ZiAoZmxhZykKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkl0ZW0uSGlkZGVuU3R5bGVDbGFzc05hbWUpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25JdGVtLkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QudG9nZ2xlKCJoaWRkZW4iLCBmbGFnKTsKIAogICAgICAgICBpZiAodGhp
cy5fcGFyZW50TmF2aWdhdGlvbkJhcikKICAgICAgICAgICAgIHRoaXMuX3BhcmVudE5hdmlnYXRp
b25CYXIudXBkYXRlTGF5b3V0U29vbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCiAgICAgZ2V0IF9jbGFzc05hbWVzKCkKICAgICB7Ci0gICAgICAgIHZhciBjbGFzc05hbWVz
ID0gW1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZV07CisgICAgICAg
IHZhciBjbGFzc05hbWVzID0gWyJpdGVtIl07CiAgICAgICAgIGlmICh0aGlzLl9pZGVudGlmaWVy
KQogICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoKHRoaXMuX2lkZW50aWZpZXIpOwotICAgICAg
ICBpZiAodGhpcy5fYWRkaXRpb25hbENsYXNzTmFtZXMgaW5zdGFuY2VvZiBBcnJheSkKLSAgICAg
ICAgICAgIGNsYXNzTmFtZXMgPSBjbGFzc05hbWVzLmNvbmNhdCh0aGlzLl9hZGRpdGlvbmFsQ2xh
c3NOYW1lcyk7CisgICAgICAgIGlmICh0aGlzLmFkZGl0aW9uYWxDbGFzc05hbWVzIGluc3RhbmNl
b2YgQXJyYXkpCisgICAgICAgICAgICBjbGFzc05hbWVzID0gY2xhc3NOYW1lcy5jb25jYXQodGhp
cy5hZGRpdGlvbmFsQ2xhc3NOYW1lcyk7CiAgICAgICAgIHJldHVybiBjbGFzc05hbWVzOwogICAg
IH0KIH07Ci0KLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNp
ZGViYXJQYW5lbC5qcwppbmRleCA4MGUwOThiLi5hYjBlZTVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVs
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmln
YXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDk5ICsyMyw4OCBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsID0gZnVuY3Rpb24oaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIGltYWdlLCBrZXlib2FyZFNo
b3J0Y3V0S2V5LCBhdXRvUHJ1bmVPbGRUb3BMZXZlbFJlc291cmNlVHJlZUVsZW1lbnRzLCBhdXRv
SGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5LCB3YW50c1RvcE92ZXJmbG93U2hhZG93LCBlbGVtZW50
LCByb2xlLCBsYWJlbCkKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xh
c3MgTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5TaWRlYmFyUGFu
ZWwKIHsKLSAgICBpZiAoa2V5Ym9hcmRTaG9ydGN1dEtleSkKLSAgICAgICAgdGhpcy5fa2V5Ym9h
cmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9sLCBrZXlib2FyZFNob3J0Y3V0S2V5
LCB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpKTsKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBk
aXNwbGF5TmFtZSwgaW1hZ2UsIGtleWJvYXJkU2hvcnRjdXRLZXksIGF1dG9QcnVuZU9sZFRvcExl
dmVsUmVzb3VyY2VUcmVlRWxlbWVudHMsIGF1dG9IaWRlVG9vbGJhckl0ZW1XaGVuRW1wdHksIHdh
bnRzVG9wT3ZlcmZsb3dTaGFkb3csIGVsZW1lbnQsIHJvbGUsIGxhYmVsKQorICAgIHsKKyAgICAg
ICAgdmFyIGtleWJvYXJkU2hvcnRjdXQgPSBudWxsOworICAgICAgICBpZiAoa2V5Ym9hcmRTaG9y
dGN1dEtleSkKKyAgICAgICAgICAgIGtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIu
Q29udHJvbCwga2V5Ym9hcmRTaG9ydGN1dEtleSk7CiAKLSAgICBpZiAodGhpcy5fa2V5Ym9hcmRT
aG9ydGN1dCkgewotICAgICAgICB2YXIgc2hvd1Rvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNob3cgdGhlICVzIG5hdmlnYXRpb24gc2lkZWJhciAoJXMpIikuZm9ybWF0KGRpc3BsYXlO
YW1lLCB0aGlzLl9rZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKLSAgICAgICAgdmFyIGhp
ZGVUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIHRoZSAlcyBuYXZpZ2F0aW9u
IHNpZGViYXIgKCVzKSIpLmZvcm1hdChkaXNwbGF5TmFtZSwgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1
dC5kaXNwbGF5TmFtZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdmFyIHNob3dUb29sVGlwID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRoZSAlcyBuYXZpZ2F0aW9uIHNpZGViYXIiKS5m
b3JtYXQoZGlzcGxheU5hbWUpOwotICAgICAgICB2YXIgaGlkZVRvb2xUaXAgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkhpZGUgdGhlICVzIG5hdmlnYXRpb24gc2lkZWJhciIpLmZvcm1hdChkaXNw
bGF5TmFtZSk7Ci0gICAgfQorICAgICAgICBpZiAoa2V5Ym9hcmRTaG9ydGN1dCkgeworICAgICAg
ICAgICAgdmFyIHNob3dUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRoZSAl
cyBuYXZpZ2F0aW9uIHNpZGViYXIgKCVzKSIpLmZvcm1hdChkaXNwbGF5TmFtZSwga2V5Ym9hcmRT
aG9ydGN1dC5kaXNwbGF5TmFtZSk7CisgICAgICAgICAgICB2YXIgaGlkZVRvb2xUaXAgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUgdGhlICVzIG5hdmlnYXRpb24gc2lkZWJhciAoJXMpIiku
Zm9ybWF0KGRpc3BsYXlOYW1lLCBrZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZhciBzaG93VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU2hvdyB0aGUgJXMgbmF2aWdhdGlvbiBzaWRlYmFyIikuZm9ybWF0KGRpc3BsYXlO
YW1lKTsKKyAgICAgICAgICAgIHZhciBoaWRlVG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiSGlkZSB0aGUgJXMgbmF2aWdhdGlvbiBzaWRlYmFyIikuZm9ybWF0KGRpc3BsYXlOYW1lKTsK
KyAgICAgICAgfQogCi0gICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5jYWxsKHRoaXMsIGlk
ZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBl
bGVtZW50LCByb2xlLCBsYWJlbCB8fCBkaXNwbGF5TmFtZSk7CisgICAgICAgIHN1cGVyKGlkZW50
aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVt
ZW50LCByb2xlLCBsYWJlbCB8fCBkaXNwbGF5TmFtZSk7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5TdHlsZUNsYXNz
TmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuYXZpZ2F0aW9uIik7
CiAKLSAgICB0aGlzLl9hdXRvSGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5ID0gYXV0b0hpZGVUb29s
YmFySXRlbVdoZW5FbXB0eSB8fCBmYWxzZTsKKyAgICAgICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1
dCA9IGtleWJvYXJkU2hvcnRjdXQ7CisgICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQuY2Fs
bGJhY2sgPSB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpOwogCi0gICAgaWYgKGF1dG9IaWRlVG9vbGJh
ckl0ZW1XaGVuRW1wdHkpCi0gICAgICAgIHRoaXMudG9vbGJhckl0ZW0uaGlkZGVuID0gdHJ1ZTsK
KyAgICAgICAgdGhpcy5fYXV0b0hpZGVUb29sYmFySXRlbVdoZW5FbXB0eSA9IGF1dG9IaWRlVG9v
bGJhckl0ZW1XaGVuRW1wdHkgfHwgZmFsc2U7CiAKLSAgICB0aGlzLl92aXNpYmxlQ29udGVudFRy
ZWVPdXRsaW5lcyA9IG5ldyBTZXQ7CisgICAgICAgIGlmIChhdXRvSGlkZVRvb2xiYXJJdGVtV2hl
bkVtcHR5KQorICAgICAgICAgICAgdGhpcy50b29sYmFySXRlbS5oaWRkZW4gPSB0cnVlOwogCi0g
ICAgdGhpcy5jb250ZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl91
cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5LmJpbmQodGhpcykpOworICAgICAg
ICB0aGlzLl92aXNpYmxlQ29udGVudFRyZWVPdXRsaW5lcyA9IG5ldyBTZXQ7CiAKLSAgICB0aGlz
Ll9jb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh0cnVl
KTsKKyAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwi
LCB0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5LmJpbmQodGhpcykp
OwogCi0gICAgdGhpcy5fZmlsdGVyQmFyID0gbmV3IFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIoKTsK
LSAgICB0aGlzLl9maWx0ZXJCYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRmlsdGVy
QmFyLkV2ZW50LkZpbHRlckRpZENoYW5nZSwgdGhpcy5fZmlsdGVyRGlkQ2hhbmdlLCB0aGlzKTsK
LSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZmlsdGVyQmFyLmVsZW1lbnQpOwor
ICAgICAgICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVl
T3V0bGluZSh0cnVlKTsKIAotICAgIHRoaXMuX2JvdHRvbU92ZXJmbG93U2hhZG93RWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2JvdHRvbU92ZXJmbG93
U2hhZG93RWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5PdmVyZmxvd1NoYWRvd0VsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fYm90dG9tT3ZlcmZsb3dTaGFkb3dFbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5fZmlsdGVyQmFyID0gbmV3IFdlYkluc3BlY3Rvci5GaWx0ZXJCYXIoKTsKKyAgICAg
ICAgdGhpcy5fZmlsdGVyQmFyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbHRlckJh
ci5FdmVudC5GaWx0ZXJEaWRDaGFuZ2UsIHRoaXMuX2ZpbHRlckRpZENoYW5nZSwgdGhpcyk7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9maWx0ZXJCYXIuZWxlbWVudCk7
CiAKLSAgICBpZiAod2FudHNUb3BPdmVyZmxvd1NoYWRvdykgewotICAgICAgICB0aGlzLl90b3BP
dmVyZmxvd1NoYWRvd0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICAgICAgdGhpcy5fdG9wT3ZlcmZsb3dTaGFkb3dFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuT3ZlcmZsb3dTaGFkb3dFbGVtZW50U3R5bGVD
bGFzc05hbWUpOwotICAgICAgICB0aGlzLl90b3BPdmVyZmxvd1NoYWRvd0VsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5Ub3BPdmVyZmxvd1No
YWRvd0VsZW1lbnRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl90b3BPdmVyZmxvd1NoYWRvd0VsZW1lbnQpOwotICAgIH0KKyAgICAgICAgdGhp
cy5fYm90dG9tT3ZlcmZsb3dTaGFkb3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX2JvdHRvbU92ZXJmbG93U2hhZG93RWxlbWVudC5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5PdmVyZmxvd1NoYWRvd0Vs
ZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2JvdHRvbU92ZXJmbG93U2hhZG93RWxlbWVudCk7CiAKLSAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigicmVzaXplIiwgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJp
bGl0eS5iaW5kKHRoaXMpKTsKLQotICAgIHRoaXMuX2ZpbHRlcnNTZXR0aW5nID0gbmV3IFdlYklu
c3BlY3Rvci5TZXR0aW5nKGlkZW50aWZpZXIgKyAiLW5hdmlnYXRpb24tc2lkZWJhci1maWx0ZXJz
Iiwge30pOwotICAgIHRoaXMuX2ZpbHRlckJhci5maWx0ZXJzID0gdGhpcy5fZmlsdGVyc1NldHRp
bmcudmFsdWU7CisgICAgICAgIGlmICh3YW50c1RvcE92ZXJmbG93U2hhZG93KSB7CisgICAgICAg
ICAgICB0aGlzLl90b3BPdmVyZmxvd1NoYWRvd0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHRoaXMuX3RvcE92ZXJmbG93U2hhZG93RWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLk92ZXJmbG93
U2hhZG93RWxlbWVudFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHRoaXMuX3RvcE92ZXJm
bG93U2hhZG93RWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLlRvcE92ZXJmbG93U2hhZG93RWxlbWVudFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90b3BPdmVyZmxvd1NoYWRvd0Vs
ZW1lbnQpOworICAgICAgICB9CiAKLSAgICB0aGlzLl9lbXB0eUNvbnRlbnRQbGFjZWhvbGRlckVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbXB0eUNv
bnRlbnRQbGFjZWhvbGRlckVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwuRW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVtZW50U3R5bGVDbGFzc05h
bWU7CisgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJyZXNpemUiLCB0aGlzLl91cGRh
dGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5LmJpbmQodGhpcykpOwogCi0gICAgdGhp
cy5fZW1wdHlDb250ZW50UGxhY2Vob2xkZXJNZXNzYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VtcHR5Q29udGVudFBsYWNlaG9sZGVyTWVzc2Fn
ZUVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwu
RW1wdHlDb250ZW50UGxhY2Vob2xkZXJNZXNzYWdlRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAg
IHRoaXMuX2VtcHR5Q29udGVudFBsYWNlaG9sZGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9l
bXB0eUNvbnRlbnRQbGFjZWhvbGRlck1lc3NhZ2VFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fZmls
dGVyc1NldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciArICItbmF2
aWdhdGlvbi1zaWRlYmFyLWZpbHRlcnMiLCB7fSk7CisgICAgICAgIHRoaXMuX2ZpbHRlckJhci5m
aWx0ZXJzID0gdGhpcy5fZmlsdGVyc1NldHRpbmcudmFsdWU7CiAKLSAgICB0aGlzLl9nZW5lcmF0
ZVN0eWxlUnVsZXNJZk5lZWRlZCgpOwotICAgIHRoaXMuX2dlbmVyYXRlRGlzY2xvc3VyZVRyaWFu
Z2xlc0lmTmVlZGVkKCk7CisgICAgICAgIHRoaXMuX2VtcHR5Q29udGVudFBsYWNlaG9sZGVyRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbXB0
eUNvbnRlbnRQbGFjZWhvbGRlckVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25TaWRlYmFyUGFuZWwuRW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVtZW50U3R5bGVDbGFz
c05hbWU7CiAKLSAgICBpZiAoYXV0b1BydW5lT2xkVG9wTGV2ZWxSZXNvdXJjZVRyZWVFbGVtZW50
cykgewotICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9jaGVja0Zvck9s
ZFJlc291cmNlcywgdGhpcyk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhp
cy5fY2hlY2tGb3JPbGRSZXNvdXJjZXMsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3IuRnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNS
ZW1vdmVkLCB0aGlzLl9jaGVja0Zvck9sZFJlc291cmNlcywgdGhpcyk7Ci0gICAgfQotfTsKKyAg
ICAgICAgdGhpcy5fZW1wdHlDb250ZW50UGxhY2Vob2xkZXJNZXNzYWdlRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbXB0eUNvbnRlbnRQbGFj
ZWhvbGRlck1lc3NhZ2VFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLkVtcHR5Q29udGVudFBsYWNlaG9sZGVyTWVzc2FnZUVsZW1lbnRTdHlsZUNs
YXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2VtcHR5Q29udGVudFBsYWNlaG9sZGVyTWVzc2FnZUVsZW1lbnQpOwog
Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJu
YXZpZ2F0aW9uIjsKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLk92ZXJmbG93
U2hhZG93RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm92ZXJmbG93LXNoYWRvdyI7Ci1XZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5Ub3BPdmVyZmxvd1NoYWRvd0VsZW1lbnRTdHls
ZUNsYXNzTmFtZSA9ICJ0b3AiOwotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwu
Q29udGVudFRyZWVPdXRsaW5lRWxlbWVudEhpZGRlblN0eWxlQ2xhc3NOYW1lID0gImhpZGRlbiI7
Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5Db250ZW50VHJlZU91dGxpbmVF
bGVtZW50U3R5bGVDbGFzc05hbWUgPSAibmF2aWdhdGlvbi1zaWRlYmFyLXBhbmVsLWNvbnRlbnQt
dHJlZS1vdXRsaW5lIjsKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhpZGVE
aXNjbG9zdXJlQnV0dG9uc1N0eWxlQ2xhc3NOYW1lID0gImhpZGUtZGlzY2xvc3VyZS1idXR0b25z
IjsKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkVtcHR5Q29udGVudFBsYWNl
aG9sZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImVtcHR5LWNvbnRlbnQtcGxhY2Vob2xkZXIi
OwotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRW1wdHlDb250ZW50UGxhY2Vo
b2xkZXJNZXNzYWdlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm1lc3NhZ2UiOwotV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFuZ2xlT3BlbkNhbnZhc0lk
ZW50aWZpZXIgPSAibmF2aWdhdGlvbi1zaWRlYmFyLXBhbmVsLWRpc2Nsb3N1cmUtdHJpYW5nbGUt
b3BlbiI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5EaXNjbG9zdXJlVHJp
YW5nbGVDbG9zZWRDYW52YXNJZGVudGlmaWVyID0gIm5hdmlnYXRpb24tc2lkZWJhci1wYW5lbC1k
aXNjbG9zdXJlLXRyaWFuZ2xlLWNsb3NlZCI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5EaXNjbG9zdXJlVHJpYW5nbGVOb3JtYWxDYW52YXNJZGVudGlmaWVyU3VmZml4ID0g
Ii1ub3JtYWwiOwotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3Vy
ZVRyaWFuZ2xlU2VsZWN0ZWRDYW52YXNJZGVudGlmaWVyU3VmZml4ID0gIi1zZWxlY3RlZCI7Cisg
ICAgICAgIHRoaXMuX2dlbmVyYXRlU3R5bGVSdWxlc0lmTmVlZGVkKCk7CisgICAgICAgIHRoaXMu
X2dlbmVyYXRlRGlzY2xvc3VyZVRyaWFuZ2xlc0lmTmVlZGVkKCk7CiAKLVdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19fOiBXZWJJbnNw
ZWN0b3IuU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICAgICAgaWYgKGF1dG9QcnVuZU9sZFRv
cExldmVsUmVzb3VyY2VUcmVlRWxlbWVudHMpIHsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5G
cmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3Vy
Y2VEaWRDaGFuZ2UsIHRoaXMuX2NoZWNrRm9yT2xkUmVzb3VyY2VzLCB0aGlzKTsKKyAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFt
ZS5FdmVudC5DaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcy5fY2hlY2tGb3JPbGRSZXNvdXJjZXMs
IHRoaXMpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzUmVtb3ZlZCwgdGhpcy5fY2hlY2tG
b3JPbGRSZXNvdXJjZXMsIHRoaXMpOworICAgICAgICB9CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgY29udGVudFRyZWVPdXRsaW5lRWxlbWVudCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fY29udGVudFRyZWVPdXRsaW5lLmVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgY29udGVudFRyZWVPdXRsaW5lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9jb250ZW50VHJlZU91dGxpbmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29udGVudFRy
ZWVPdXRsaW5lKG5ld1RyZWVPdXRsaW5lKQogICAgIHsKQEAgLTEzMywzNCArMTIyLDM0IEBAIFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fdmlzaWJsZUNvbnRlbnRUcmVlT3V0bGluZXMuYWRkKG5ld1RyZWVPdXRsaW5lKTsKIAog
ICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXIoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBj
b250ZW50VHJlZU91dGxpbmVUb0F1dG9QcnVuZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY29udGVudFRyZWVPdXRsaW5lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHZpc2libGVD
b250ZW50VHJlZU91dGxpbmVzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxl
Q29udGVudFRyZWVPdXRsaW5lczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoYXNTZWxlY3Rl
ZEVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuICEhdGhpcy5fY29udGVudFRyZWVPdXRs
aW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZmlsdGVy
QmFyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJCYXI7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgcmVzdG9yaW5nU3RhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3Jlc3RvcmluZ1N0YXRlOwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlQ29udGVudFRy
ZWVPdXRsaW5lOiBmdW5jdGlvbihkb250SGlkZUJ5RGVmYXVsdCwgc3VwcHJlc3NGaWx0ZXJpbmcp
CisgICAgY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKGRvbnRIaWRlQnlEZWZhdWx0LCBzdXBwcmVz
c0ZpbHRlcmluZykKICAgICB7CiAgICAgICAgIHZhciBjb250ZW50VHJlZU91dGxpbmVFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKICAgICAgICAgY29udGVudFRyZWVPdXRs
aW5lRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5l
bC5Db250ZW50VHJlZU91dGxpbmVFbGVtZW50U3R5bGVDbGFzc05hbWU7CkBAIC0xNjgsNyArMTU3
LDcgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgY29udGVudFRyZWVPdXRsaW5lRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnRI
aWRkZW5TdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQoY29udGVudFRyZWVPdXRsaW5lRWxlbWVudCk7CiAKLSAgICAgICAgdmFyIGNvbnRlbnRU
cmVlT3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZShjb250ZW50VHJlZU91dGxpbmVFbGVtZW50KTsK
KyAgICAgICAgdmFyIGNvbnRlbnRUcmVlT3V0bGluZSA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91
dGxpbmUoY29udGVudFRyZWVPdXRsaW5lRWxlbWVudCk7CiAgICAgICAgIGNvbnRlbnRUcmVlT3V0
bGluZS5hbGxvd3NSZXBlYXRTZWxlY3Rpb24gPSB0cnVlOwogCiAgICAgICAgIGlmICghc3VwcHJl
c3NGaWx0ZXJpbmcpIHsKQEAgLTE4MiwyNyArMTcxLDI3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3Zpc2libGVD
b250ZW50VHJlZU91dGxpbmVzLmFkZChjb250ZW50VHJlZU91dGxpbmUpOwogCiAgICAgICAgIHJl
dHVybiBjb250ZW50VHJlZU91dGxpbmU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmVlRWxlbWVu
dEZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB0
cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5nZXRDYWNoZWRUcmVlRWxl
bWVudChyZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93RGVmYXVs
dENvbnRlbnRWaWV3OiBmdW5jdGlvbigpCisgICAgc2hvd0RlZmF1bHRDb250ZW50VmlldygpCiAg
ICAgewogICAgICAgICAvLyBJbXBsZW1uZXRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZCB0byBz
aG93IGEgY29udGVudCB2aWV3IHdoZW4gbm8gZXhpc3RpbmcgdHJlZSBlbGVtZW50IGlzIHNlbGVj
dGVkLgotICAgIH0sCisgICAgfQogCi0gICAgc2hvd0NvbnRlbnRWaWV3Rm9yQ3VycmVudFNlbGVj
dGlvbjogZnVuY3Rpb24oKQorICAgIHNob3dDb250ZW50Vmlld0ZvckN1cnJlbnRTZWxlY3Rpb24o
KQogICAgIHsKICAgICAgICAgLy8gUmVzZWxlY3QgdGhlIHNlbGVjdGVkIHRyZWUgZWxlbWVudCB0
byBjYXVzZSB0aGUgY29udGVudCB2aWV3IHRvIGJlIHNob3duIGFzIHdlbGwuIDxyZGFyOi8vcHJv
YmxlbS8xMDg1NDcyNz4KICAgICAgICAgdmFyIHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLl9j
b250ZW50VHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKICAgICAgICAgaWYgKHNlbGVj
dGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICBzZWxlY3RlZFRyZWVFbGVtZW50LnNlbGVjdCgp
OwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVN0YXRlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tp
ZSkKKyAgICBzYXZlU3RhdGVUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChjb29raWUpOwogCkBAIC0yMjYsMTAgKzIxNSwxMCBAQCBXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXByZXNlbnRl
ZE9iamVjdC5zYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBjb25zb2xlLmVycm9yKCJFcnJvcjogVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmpl
Y3QgaXMgbWlzc2luZyBhIHNhdmVJZGVudGl0eVRvQ29va2llIGltcGxlbWVudGF0aW9uLiBUcmVl
RWxlbWVudC5jb25zdHJ1Y3RvcjogIiwgc2VsZWN0ZWRUcmVlRWxlbWVudC5jb25zdHJ1Y3Rvcik7
Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBUaGlzIGNhbiBiZSBzdXBwbGVtZW50ZWQgYnkgc3Vi
Y2xhc3NlcyB0aGF0IGFkbWl0IGEgc2ltcGxlciBzdHJhdGVneSBmb3Igc3RhdGljIHRyZWUgZWxl
bWVudHMuCi0gICAgcmVzdG9yZVN0YXRlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llLCByZWxh
eGVkTWF0Y2hEZWxheSkKKyAgICByZXN0b3JlU3RhdGVGcm9tQ29va2llKGNvb2tpZSwgcmVsYXhl
ZE1hdGNoRGVsYXkpCiAgICAgewogICAgICAgICB0aGlzLl9wZW5kaW5nVmlld1N0YXRlQ29va2ll
ID0gY29va2llOwogICAgICAgICB0aGlzLl9yZXN0b3JpbmdTdGF0ZSA9IHRydWU7CkBAIC0yNTMs
OSArMjQyLDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAvLyBJZiB0aGUgc3BlY2lmaWMgdHJlZSBlbGVtZW50IHdhc24ndCBmb3Vu
ZCwgd2UgbWF5IG5lZWQgdG8gd2FpdCBmb3IgdGhlIHJlc291cmNlcwogICAgICAgICAvLyB0byBi
ZSByZWdpc3RlcmVkLiBXZSB0cnkgb25lIGxhc3QgdGltZSAobWF0Y2ggdHlwZSBvbmx5KSBhZnRl
ciBhbiBhcmJpdHJhcnkgYW1vdW50IG9mIHRpbWVvdXQuCiAgICAgICAgIHRoaXMuX2ZpbmFsQXR0
ZW1wdFRvUmVzdG9yZVZpZXdTdGF0ZVRpbWVvdXQgPSBzZXRUaW1lb3V0KGZpbmFsQXR0ZW1wdFRv
UmVzdG9yZVZpZXdTdGF0ZUZyb21Db29raWUuYmluZCh0aGlzKSwgcmVsYXhlZE1hdGNoRGVsYXkp
OwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd0VtcHR5Q29udGVudFBsYWNlaG9sZGVyOiBmdW5j
dGlvbihtZXNzYWdlLCBoaWRlVG9vbGJhckl0ZW0pCisgICAgc2hvd0VtcHR5Q29udGVudFBsYWNl
aG9sZGVyKG1lc3NhZ2UsIGhpZGVUb29sYmFySXRlbSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KG1lc3NhZ2UpOwogCkBAIC0yNjgsOSArMjU3LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9oaWRlVG9vbGJh
ckl0ZW1XaGVuRW1wdHkgPSBoaWRlVG9vbGJhckl0ZW0gfHwgZmFsc2U7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZVRvb2xiYXJJdGVtVmlzaWJpbGl0eSgpOwogICAgICAgICB0aGlzLl91cGRhdGVDb250
ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRl
RW1wdHlDb250ZW50UGxhY2Vob2xkZXI6IGZ1bmN0aW9uKCkKKyAgICBoaWRlRW1wdHlDb250ZW50
UGxhY2Vob2xkZXIoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbXB0eUNvbnRlbnRQbGFj
ZWhvbGRlckVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4MCw5
ICsyNjksOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX2hpZGVUb29sYmFySXRlbVdoZW5FbXB0eSA9IGZhbHNlOwogICAg
ICAgICB0aGlzLl91cGRhdGVUb29sYmFySXRlbVZpc2liaWxpdHkoKTsKICAgICAgICAgdGhpcy5f
dXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgdXBkYXRlRW1wdHlDb250ZW50UGxhY2Vob2xkZXI6IGZ1bmN0aW9uKG1lc3NhZ2UpCisg
ICAgdXBkYXRlRW1wdHlDb250ZW50UGxhY2Vob2xkZXIobWVzc2FnZSkKICAgICB7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZVRvb2xiYXJJdGVtVmlzaWJpbGl0eSgpOwogCkBAIC0yOTMsMzUgKzI4Miwz
NSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAvLyBUaGVyZSBhcmUgdHJlZSBlbGVtZW50cywgYW5kIG5vdCBhbGwgb2YgdGhl
bSBhcmUgaGlkZGVuIGJ5IHRoZSBmaWx0ZXIuCiAgICAgICAgICAgICB0aGlzLmhpZGVFbXB0eUNv
bnRlbnRQbGFjZWhvbGRlcigpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRh
dGVGaWx0ZXI6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVGaWx0ZXIoKQogICAgIHsKICAgICAgICAg
dGhpcy5fdXBkYXRlRmlsdGVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYXNDdXN0b21GaWx0
ZXJzOiBmdW5jdGlvbigpCisgICAgaGFzQ3VzdG9tRmlsdGVycygpCiAgICAgewogICAgICAgICAv
LyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0sCisgICAgfQogCi0gICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21G
aWx0ZXJzOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5z
dEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRl
ZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEZpbHRlckZ1bmN0aW9uczogZnVu
Y3Rpb24odHJlZUVsZW1lbnQpCisgICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RGaWx0ZXJGdW5j
dGlvbnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBmb3IgKHZhciBmaWx0ZXJGdW5jdGlv
biBvZiB0aGlzLl9maWx0ZXJGdW5jdGlvbnMpIHsKICAgICAgICAgICAgIGlmIChmaWx0ZXJGdW5j
dGlvbih0cmVlRWxlbWVudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgYXBwbHlGaWx0
ZXJzVG9UcmVlRWxlbWVudDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgYXBwbHlGaWx0ZXJz
VG9UcmVlRWxlbWVudCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZmls
dGVyQmFyLmhhc0FjdGl2ZUZpbHRlcnMoKSAmJiAhdGhpcy5oYXNDdXN0b21GaWx0ZXJzKCkpIHsK
ICAgICAgICAgICAgIC8vIE5vIGZpbHRlcnMsIHNvIG1ha2UgZXZlcnl0aGluZyB2aXNpYmxlLgpA
QCAtMzk5LDkgKzM4OCw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBNYWtlIHRoaXMgZWxlbWVudCBpbnZpc2libGUgc2lu
Y2UgaXQgZG9lcyBub3QgbWF0Y2guCiAgICAgICAgIHRyZWVFbGVtZW50LmhpZGRlbiA9IHRydWU7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93OiBmdW5jdGlvbigpCisgICAgc2hvdygpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMucGFyZW50U2lkZWJhcikKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTQwOSw5ICszOTgsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwucHJvdG90eXBl
LnNob3cuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZUVsZW1l
bnQuZm9jdXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAg
c2hvd24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5wcm90b3R5
cGUuc2hvd24uY2FsbCh0aGlzKTsKIApAQCAtNDIwLDI2ICs0MDksMjYgQEAgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAvLyBGb3JjZSB0
aGUgbmF2aWdhdGlvbiBpdGVtIHRvIGJlIHZpc2libGUuIFRoaXMgbWFrZXMgc3VyZSBpdCBpcwog
ICAgICAgICAvLyBhbHdheXMgdmlzaWJsZSB3aGVuIHRoZSBwYW5lbCBpcyBzaG93bi4KICAgICAg
ICAgdGhpcy50b29sYmFySXRlbS5oaWRkZW4gPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAg
IGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3IuU2lkZWJhclBhbmVsLnByb3RvdHlwZS5oaWRkZW4uY2FsbCh0aGlzKTsKIAogICAgICAg
ICB0aGlzLl91cGRhdGVUb29sYmFySXRlbVZpc2liaWxpdHkoKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFByaXZhdGUKICAgICAKLSAgICBfdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93Vmlz
aWJpbGl0eVNvb246IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93
VmlzaWJpbGl0eVNvb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUNvbnRlbnRP
dmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHlJZGVu
dGlmaWVyID0gc2V0VGltZW91dCh0aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNp
YmlsaXR5LmJpbmQodGhpcyksIDApOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUNvbnRl
bnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHk6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlQ29udGVu
dE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eSgpCiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5f
dXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eUlkZW50aWZpZXI7CiAKQEAgLTQ1
NCw5ICs0NDMsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlz
TGVnYWN5TWFjT1MpCi0gICAgICAgICAgICBjb25zdCBlZGdlVGhyZXNob2xkID0gMTA7CisgICAg
ICAgICAgICB2YXIgZWRnZVRocmVzaG9sZCA9IDEwOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBjb25zdCBlZGdlVGhyZXNob2xkID0gMTsKKyAgICAgICAgICAgIHZhciBlZGdlVGhyZXNob2xk
ID0gMTsKIAogICAgICAgICB2YXIgc2Nyb2xsVG9wID0gdGhpcy5jb250ZW50RWxlbWVudC5zY3Jv
bGxUb3A7CiAKQEAgLTQ2NiwxNiArNDU1LDE2IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3RvcE92ZXJmbG93U2hh
ZG93RWxlbWVudCkKICAgICAgICAgICAgIHRoaXMuX3RvcE92ZXJmbG93U2hhZG93RWxlbWVudC5z
dHlsZS5vcGFjaXR5ID0gKHRvcENvdmVyYWdlIC8gZWRnZVRocmVzaG9sZCkudG9GaXhlZCgxKTsK
ICAgICAgICAgdGhpcy5fYm90dG9tT3ZlcmZsb3dTaGFkb3dFbGVtZW50LnN0eWxlLm9wYWNpdHkg
PSAoMSAtIChib3R0b21Db3ZlcmFnZSAvIGVkZ2VUaHJlc2hvbGQpKS50b0ZpeGVkKDEpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVRvb2xiYXJJdGVtVmlzaWJpbGl0eTogZnVuY3Rpb24o
KQorICAgIF91cGRhdGVUb29sYmFySXRlbVZpc2liaWxpdHkoKQogICAgIHsKICAgICAgICAgLy8g
SGlkZSB0aGUgbmF2aWdhdGlvbiBpdGVtIGlmIHJlcXVlc3RlZCBvciBhdXRvLWhpZGluZyBhbmQg
d2UgYXJlIG5vdCB2aXNpYmxlIGFuZCB3ZSBhcmUgZW1wdHkuCiAgICAgICAgIHZhciBzaG91bGRI
aWRlID0gKCh0aGlzLl9oaWRlVG9vbGJhckl0ZW1XaGVuRW1wdHkgfHwgdGhpcy5fYXV0b0hpZGVU
b29sYmFySXRlbVdoZW5FbXB0eSkgJiYgIXRoaXMuc2VsZWN0ZWQgJiYgIXRoaXMuX2NvbnRlbnRU
cmVlT3V0bGluZS5jaGlsZHJlbi5sZW5ndGgpOwogICAgICAgICB0aGlzLnRvb2xiYXJJdGVtLmhp
ZGRlbiA9IHNob3VsZEhpZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2hlY2tGb3JFbXB0eUZp
bHRlclJlc3VsdHM6IGZ1bmN0aW9uKCkKKyAgICBfY2hlY2tGb3JFbXB0eUZpbHRlclJlc3VsdHMo
KQogICAgIHsKICAgICAgICAgLy8gTm8gdHJlZSBlbGVtZW50cywgc28gZG9uJ3QgdG91Y2ggdGhl
IGVtcHR5IGNvbnRlbnQgcGxhY2Vob2xkZXIuCiAgICAgICAgIGlmICghdGhpcy5fY29udGVudFRy
ZWVPdXRsaW5lLmNoaWxkcmVuLmxlbmd0aCkKQEAgLTQ5NywxNCArNDg2LDE0IEBAIFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gQWxs
IHRvcCBsZXZlbCB0cmVlIGVsZW1lbnRzIGFyZSBoaWRkZW4sIHNvIGZpbHRlcmluZyBoaWQgZXZl
cnl0aGluZy4gU2hvdyBhIG1lc3NhZ2UuCiAgICAgICAgIHRoaXMuc2hvd0VtcHR5Q29udGVudFBs
YWNlaG9sZGVyKFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gRmlsdGVyIFJlc3VsdHMiKSk7CiAg
ICAgICAgIHRoaXMuX2VtcHR5RmlsdGVyUmVzdWx0cyA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZmlsdGVyRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgX2ZpbHRlckRpZENoYW5nZSgp
CiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVGaWx0ZXIoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF91cGRhdGVGaWx0ZXI6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRmlsdGVyKCkKICAgICB7
CiAgICAgICAgIHZhciBzZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpcy5fY29udGVudFRyZWVPdXRs
aW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CiAgICAgICAgIHZhciBzZWxlY3Rpb25XYXNIaWRkZW4g
PSBzZWxlY3RlZFRyZWVFbGVtZW50ICYmIHNlbGVjdGVkVHJlZUVsZW1lbnQuaGlkZGVuOwpAQCAt
NTM0LDkgKzUyMyw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyAmJiB0eXBlb2YgY3VycmVu
dENvbnRlbnRWaWV3LmN1cnJlbnRUaW1lbGluZVZpZXcuZmlsdGVyVXBkYXRlZCA9PT0gImZ1bmN0
aW9uIikKICAgICAgICAgICAgICAgICBjdXJyZW50Q29udGVudFZpZXcuY3VycmVudFRpbWVsaW5l
Vmlldy5maWx0ZXJVcGRhdGVkKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF90
cmVlRWxlbWVudEFkZGVkT3JDaGFuZ2VkOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdHJl
ZUVsZW1lbnRBZGRlZE9yQ2hhbmdlZCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIC8vIERv
bid0IHBvcHVsYXRlIGlmIHdlIGRvbid0IGhhdmUgYW55IGFjdGl2ZSBmaWx0ZXJzLgogICAgICAg
ICAvLyBXZSBvbmx5IG5lZWQgdG8gcG9wdWxhdGUgd2hlbiBhIGZpbHRlciBuZWVkcyB0byByZXZl
YWwuCkBAIC01NTQsMjMgKzU0MywyMyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpCiAgICAgICAg
ICAgICB0aGlzLl9jaGVja0VsZW1lbnRzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZSh0cmVlRWxl
bWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRFeHBhbmRlZE9yQ29sbGFw
c2VkOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdHJlZUVsZW1lbnRFeHBhbmRlZE9yQ29s
bGFwc2VkKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92
ZXJmbG93U2hhZG93VmlzaWJpbGl0eSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2dlbmVyYXRl
U3R5bGVSdWxlc0lmTmVlZGVkOiBmdW5jdGlvbigpCisgICAgX2dlbmVyYXRlU3R5bGVSdWxlc0lm
TmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5fc3R5bGVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLl9zdHlsZUVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpOwogCi0gICAgICAgIGNvbnN0IG1heGltdW1TaWRlYmFy
VHJlZURlcHRoID0gMzI7Ci0gICAgICAgIGNvbnN0IGJhc2VMZWZ0UGFkZGluZyA9IDU7IC8vIE1h
dGNoZXMgdGhlIHBhZGRpbmcgaW4gTmF2aWdhdGlvblNpZGViYXJQYW5lbC5jc3MgZm9yIHRoZSBp
dGVtIGNsYXNzLiBLZWVwIGluIHN5bmMuCi0gICAgICAgIGNvbnN0IGRlcHRoUGFkZGluZyA9IDEw
OworICAgICAgICB2YXIgbWF4aW11bVNpZGViYXJUcmVlRGVwdGggPSAzMjsKKyAgICAgICAgdmFy
IGJhc2VMZWZ0UGFkZGluZyA9IDU7IC8vIE1hdGNoZXMgdGhlIHBhZGRpbmcgaW4gTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5jc3MgZm9yIHRoZSBpdGVtIGNsYXNzLiBLZWVwIGluIHN5bmMuCisgICAg
ICAgIHZhciBkZXB0aFBhZGRpbmcgPSAxMDsKIAogICAgICAgICB2YXIgc3R5bGVUZXh0ID0gIiI7
CiAgICAgICAgIHZhciBjaGlsZHJlblN1YnN0cmluZyA9ICIiOwpAQCAtNTg0LDkgKzU3Myw5IEBA
IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuX3N0eWxlRWxlbWVudC50ZXh0
Q29udGVudCA9IHN0eWxlVGV4dDsKIAogICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxk
KFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLl9zdHlsZUVsZW1lbnQpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2dlbmVyYXRlRGlzY2xvc3VyZVRyaWFuZ2xlc0lmTmVlZGVkOiBm
dW5jdGlvbigpCisgICAgX2dlbmVyYXRlRGlzY2xvc3VyZVRyaWFuZ2xlc0lmTmVlZGVkKCkKICAg
ICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5fZ2Vu
ZXJhdGVkRGlzY2xvc3VyZVRyaWFuZ2xlcykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTYyNSw5
ICs2MTQsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgZ2VuZXJhdGVDb2xvcmVkSW1hZ2VzRm9yQ1NTKCJJbWFnZXMvRGlzY2xv
c3VyZVRyaWFuZ2xlU21hbGxPcGVuLnN2ZyIsIHNwZWNpZmljYXRpb25zLCAxMywgMTMsIFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkRpc2Nsb3N1cmVUcmlhbmdsZU9wZW5DYW52
YXNJZGVudGlmaWVyKTsKICAgICAgICAgZ2VuZXJhdGVDb2xvcmVkSW1hZ2VzRm9yQ1NTKCJJbWFn
ZXMvRGlzY2xvc3VyZVRyaWFuZ2xlU21hbGxDbG9zZWQuc3ZnIiwgc3BlY2lmaWNhdGlvbnMsIDEz
LCAxMywgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFu
Z2xlQ2xvc2VkQ2FudmFzSWRlbnRpZmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2hlY2tG
b3JPbGRSZXNvdXJjZXM6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGVja0Zvck9sZFJlc291cmNl
cyhldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jaGVja0Zvck9sZFJlc291cmNlc1Rp
bWVvdXRJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjU3LDE3ICs2NDYsMTcg
QEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgICAgIC8vIENoZWNrIG9uIGEgZGVsYXkgdG8gY29hbGVzY2UgbXVsdGlwbGUgY2FsbHMgdG8g
X2NoZWNrRm9yT2xkUmVzb3VyY2VzLgogICAgICAgICB0aGlzLl9jaGVja0Zvck9sZFJlc291cmNl
c1RpbWVvdXRJZGVudGlmaWVyID0gc2V0VGltZW91dChkZWxheWVkV29yay5iaW5kKHRoaXMpLCAw
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pc1RyZWVFbGVtZW50V2l0aG91dFJlcHJlc2VudGVk
T2JqZWN0OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfaXNUcmVlRWxlbWVudFdpdGhvdXRS
ZXByZXNlbnRlZE9iamVjdCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cmVl
RWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudAogICAgICAg
ICAgICAgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VIb3N0
VHJlZUVsZW1lbnQKICAgICAgICAgICAgIHx8IHR5cGVvZiB0cmVlRWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdCA9PT0gInN0cmluZyIKICAgICAgICAgICAgIHx8IHRyZWVFbGVtZW50LnJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgU3RyaW5nOwotICAgIH0sCisgICAgfQogCi0gICAgX2NoZWNr
T3V0bGluZXNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llOiBmdW5jdGlvbihtYXRjaFR5cGVPbmx5
KQorICAgIF9jaGVja091dGxpbmVzRm9yUGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZShtYXRjaFR5cGVP
bmx5KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nVmlld1N0YXRlQ29va2llKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjgyLDkgKzY3MSw5IEBAIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfSk7CiAKICAgICAgICAg
cmV0dXJuIHRoaXMuX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llKHZpc2li
bGVUcmVlRWxlbWVudHMsIG1hdGNoVHlwZU9ubHkpOwotICAgIH0sCisgICAgfQogCi0gICAgX2No
ZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llOiBmdW5jdGlvbih0cmVlRWxlbWVu
dHMsIG1hdGNoVHlwZU9ubHkpCisgICAgX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRl
Q29va2llKHRyZWVFbGVtZW50cywgbWF0Y2hUeXBlT25seSkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fcGVuZGluZ1ZpZXdTdGF0ZUNvb2tpZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc0
NiwzICs3MzUsMTUgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICB9CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwuT3ZlcmZsb3dTaGFkb3dFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAib3ZlcmZs
b3ctc2hhZG93IjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLlRvcE92ZXJm
bG93U2hhZG93RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInRvcCI7CitXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5Db250ZW50VHJlZU91dGxpbmVFbGVtZW50SGlkZGVuU3R5bGVD
bGFzc05hbWUgPSAiaGlkZGVuIjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVs
LkNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJuYXZpZ2F0aW9uLXNp
ZGViYXItcGFuZWwtY29udGVudC10cmVlLW91dGxpbmUiOworV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwuSGlkZURpc2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUgPSAiaGlk
ZS1kaXNjbG9zdXJlLWJ1dHRvbnMiOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwuRW1wdHlDb250ZW50UGxhY2Vob2xkZXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiZW1wdHkt
Y29udGVudC1wbGFjZWhvbGRlciI7CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5l
bC5FbXB0eUNvbnRlbnRQbGFjZWhvbGRlck1lc3NhZ2VFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAi
bWVzc2FnZSI7CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5EaXNjbG9zdXJl
VHJpYW5nbGVPcGVuQ2FudmFzSWRlbnRpZmllciA9ICJuYXZpZ2F0aW9uLXNpZGViYXItcGFuZWwt
ZGlzY2xvc3VyZS10cmlhbmdsZS1vcGVuIjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLkRpc2Nsb3N1cmVUcmlhbmdsZUNsb3NlZENhbnZhc0lkZW50aWZpZXIgPSAibmF2aWdh
dGlvbi1zaWRlYmFyLXBhbmVsLWRpc2Nsb3N1cmUtdHJpYW5nbGUtY2xvc2VkIjsKK1dlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkRpc2Nsb3N1cmVUcmlhbmdsZU5vcm1hbENhbnZh
c0lkZW50aWZpZXJTdWZmaXggPSAiLW5vcm1hbCI7CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNp
ZGViYXJQYW5lbC5EaXNjbG9zdXJlVHJpYW5nbGVTZWxlY3RlZENhbnZhc0lkZW50aWZpZXJTdWZm
aXggPSAiLXNlbGVjdGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVPdmVydmll
d0dyYXBoLmpzCmluZGV4IDg1Njc3OGIuLjhkMzM5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0
d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwpAQCAtMSw2ICsxLDYgQEAKIAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDMyICsyNCwyMyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5OZXR3b3JrVGlt
ZWxpbmVPdmVydmlld0dyYXBoID0gZnVuY3Rpb24odGltZWxpbmUpCitXZWJJbnNwZWN0b3IuTmV0
d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGNsYXNzIE5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3
R3JhcGggZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jYWxsKHRoaXMsIHRpbWVsaW5lKTsK
LQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OZXR3b3JrVGlt
ZWxpbmVPdmVydmlld0dyYXBoLlN0eWxlQ2xhc3NOYW1lKTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1l
bGluZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHRpbWVsaW5lKTsKIAotICAgIHRpbWVsaW5lLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0
aGlzLl9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7Ci0gICAgdGltZWxpbmUuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuVGltZXNVcGRhdGVkLCB0
aGlzLm5lZWRzTGF5b3V0LCB0aGlzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoIm5ldHdvcmsiKTsKIAotICAgIHRoaXMucmVzZXQoKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5O
ZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLlN0eWxlQ2xhc3NOYW1lID0gIm5ldHdvcmsiOwot
V2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguR3JhcGhSb3dTdHlsZUNs
YXNzTmFtZSA9ICJncmFwaC1yb3ciOwotV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2
aWV3R3JhcGguQmFyU3R5bGVDbGFzc05hbWUgPSAiYmFyIjsKLVdlYkluc3BlY3Rvci5OZXR3b3Jr
VGltZWxpbmVPdmVydmlld0dyYXBoLkluYWN0aXZlQmFyU3R5bGVDbGFzc05hbWUgPSAiaW5hY3Rp
dmUiOwotV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguVW5maW5pc2hl
ZFN0eWxlQ2xhc3NOYW1lID0gInVuZmluaXNoZWQiOwotV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1l
bGluZU92ZXJ2aWV3R3JhcGguTWF4aW11bVJvd0NvdW50ID0gNjsKKyAgICAgICAgdGltZWxpbmUu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQs
IHRoaXMuX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGltZWxp
bmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuVGltZXNVcGRh
dGVkLCB0aGlzLm5lZWRzTGF5b3V0LCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1l
bGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaCwKLSAgICBfX3Byb3RvX186IFdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlLAorICAgICAgICB0aGlzLnJl
c2V0KCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICByZXNldDogZnVuY3Rpb24oKQor
ICAgIHJlc2V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
R3JhcGgucHJvdG90eXBlLnJlc2V0LmNhbGwodGhpcyk7CiAKQEAgLTY4LDkgKzU5LDkgQEAgV2Vi
SW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogCiAg
ICAgICAgICAgICByb3dSZWNvcmRzLl9fcmVjb3JkQmFycyA9IFtdOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlv
dXQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5w
cm90b3R5cGUudXBkYXRlTGF5b3V0LmNhbGwodGhpcyk7CiAKQEAgLTEwNywxMSArOTgsMTEgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIHJvd1JlY29yZEJhcnNbcmVjb3JkQmFySW5kZXhdLmVsZW1lbnQucmVt
b3ZlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdmFyIHJlc291cmNlVGltZWxpbmVSZWNvcmQgPSBldmVudC5kYXRhLnJlY29yZDsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2VUaW1lbGluZVJlY29yZCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lUmVjb3JkKTsKQEAgLTE2MSwzICsxNTIsOSBAQCBXZWJJ
bnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuTmV0d29y
a1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5HcmFwaFJvd1N0eWxlQ2xhc3NOYW1lID0gImdyYXBoLXJv
dyI7CitXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5CYXJTdHlsZUNs
YXNzTmFtZSA9ICJiYXIiOworV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguSW5hY3RpdmVCYXJTdHlsZUNsYXNzTmFtZSA9ICJpbmFjdGl2ZSI7CitXZWJJbnNwZWN0b3Iu
TmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5VbmZpbmlzaGVkU3R5bGVDbGFzc05hbWUgPSAi
dW5maW5pc2hlZCI7CitXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5N
YXhpbXVtUm93Q291bnQgPSA2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZVZpZXcuanMKaW5kZXgg
ODQzZTNjNy4uMWRhY2M3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE0
NCArMjMsMTM5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcgPSBmdW5jdGlvbih0aW1lbGluZSkKK1dl
Ykluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3ID0gY2xhc3MgTmV0d29ya1RpbWVsaW5lVmll
dyBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVWaWV3LmNhbGwodGhpcywgdGltZWxpbmUpOwotCi0gICAgY29uc29sZS5hc3NlcnQo
dGltZWxpbmUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuTmV0d29y
ayk7Ci0KLSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUub25zZWxlY3QgPSB0
aGlzLl90cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5uYXZpZ2F0aW9u
U2lkZWJhclRyZWVPdXRsaW5lLm9uZGVzZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudERlc2VsZWN0
ZWQuYmluZCh0aGlzKTsgICAgCi0gICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5l
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5l
bC5IaWRlRGlzY2xvc3VyZUJ1dHRvbnNTdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5uYXZpZ2F0
aW9uU2lkZWJhclRyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
TmV0d29ya1RpbWVsaW5lVmlldy5UcmVlT3V0bGluZVN0eWxlQ2xhc3NOYW1lKTsKKyAgICBjb25z
dHJ1Y3Rvcih0aW1lbGluZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHRpbWVsaW5lKTsKIAotICAg
IHZhciBjb2x1bW5zID0ge2RvbWFpbjoge30sIHR5cGU6IHt9LCBtZXRob2Q6IHt9LCBzY2hlbWU6
IHt9LCBzdGF0dXNDb2RlOiB7fSwgY2FjaGVkOiB7fSwgc2l6ZToge30sIHRyYW5zZmVyU2l6ZTog
e30sIHJlcXVlc3RTZW50OiB7fSwgbGF0ZW5jeToge30sIGR1cmF0aW9uOiB7fX07CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZC5UeXBlLk5ldHdvcmspOwogCi0gICAgY29sdW1ucy5kb21haW4udGl0bGUgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkRvbWFpbiIpOwotICAgIGNvbHVtbnMuZG9tYWluLndpZHRoID0gIjEw
JSI7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5vbnNlbGVjdCA9
IHRoaXMuX3RyZWVFbGVtZW50U2VsZWN0ZWQuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5uYXZp
Z2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLm9uZGVzZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudERl
c2VsZWN0ZWQuYmluZCh0aGlzKTsgICAgCisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJU
cmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwuSGlkZURpc2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOworICAgICAg
ICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJuZXR3b3JrIik7CiAKLSAgICBjb2x1bW5zLnR5cGUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlR5cGUiKTsKLSAgICBjb2x1bW5zLnR5cGUud2lkdGggPSAiOCUiOworICAgICAgICB2
YXIgY29sdW1ucyA9IHtkb21haW46IHt9LCB0eXBlOiB7fSwgbWV0aG9kOiB7fSwgc2NoZW1lOiB7
fSwgc3RhdHVzQ29kZToge30sIGNhY2hlZDoge30sIHNpemU6IHt9LCB0cmFuc2ZlclNpemU6IHt9
LCByZXF1ZXN0U2VudDoge30sIGxhdGVuY3k6IHt9LCBkdXJhdGlvbjoge319OwogCi0gICAgdmFy
IHR5cGVUb0xhYmVsTWFwID0gbmV3IE1hcDsKLSAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVj
dG9yLlJlc291cmNlLlR5cGUpIHsKLSAgICAgICAgdmFyIHZhbHVlID0gV2ViSW5zcGVjdG9yLlJl
c291cmNlLlR5cGVba2V5XTsKLSAgICAgICAgdHlwZVRvTGFiZWxNYXAuc2V0KHZhbHVlLCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKHZhbHVlLCB0cnVlKSk7Ci0gICAg
fQorICAgICAgICBjb2x1bW5zLmRvbWFpbi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RG9tYWluIik7CisgICAgICAgIGNvbHVtbnMuZG9tYWluLndpZHRoID0gIjEwJSI7CiAKLSAgICBj
b2x1bW5zLnR5cGUuc2NvcGVCYXIgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5jcmVh
dGVDb2x1bW5TY29wZUJhcigibmV0d29yayIsIHR5cGVUb0xhYmVsTWFwKTsKKyAgICAgICAgY29s
dW1ucy50eXBlLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIik7CisgICAgICAg
IGNvbHVtbnMudHlwZS53aWR0aCA9ICI4JSI7CiAKLSAgICBjb2x1bW5zLm1ldGhvZC50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWV0aG9kIik7Ci0gICAgY29sdW1ucy5tZXRob2Qud2lk
dGggPSAiNiUiOworICAgICAgICB2YXIgdHlwZVRvTGFiZWxNYXAgPSBuZXcgTWFwOworICAgICAg
ICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5cGUpIHsKKyAgICAgICAg
ICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlW2tleV07CisgICAgICAg
ICAgICB0eXBlVG9MYWJlbE1hcC5zZXQodmFsdWUsIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5kaXNw
bGF5TmFtZUZvclR5cGUodmFsdWUsIHRydWUpKTsKKyAgICAgICAgfQogCi0gICAgY29sdW1ucy5z
Y2hlbWUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjaGVtZSIpOwotICAgIGNvbHVt
bnMuc2NoZW1lLndpZHRoID0gIjYlIjsKKyAgICAgICAgY29sdW1ucy50eXBlLnNjb3BlQmFyID0g
V2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuY3JlYXRlQ29sdW1uU2NvcGVCYXIoIm5ldHdv
cmsiLCB0eXBlVG9MYWJlbE1hcCk7CiAKLSAgICBjb2x1bW5zLnN0YXR1c0NvZGUudGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXR1cyIpOwotICAgIGNvbHVtbnMuc3RhdHVzQ29kZS53
aWR0aCA9ICI2JSI7CisgICAgICAgIGNvbHVtbnMubWV0aG9kLnRpdGxlID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJNZXRob2QiKTsKKyAgICAgICAgY29sdW1ucy5tZXRob2Qud2lkdGggPSAiNiUi
OwogCi0gICAgY29sdW1ucy5jYWNoZWQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNh
Y2hlZCIpOwotICAgIGNvbHVtbnMuY2FjaGVkLndpZHRoID0gIjYlIjsKKyAgICAgICAgY29sdW1u
cy5zY2hlbWUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjaGVtZSIpOworICAgICAg
ICBjb2x1bW5zLnNjaGVtZS53aWR0aCA9ICI2JSI7CiAKLSAgICBjb2x1bW5zLnNpemUudGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNpemUiKTsKLSAgICBjb2x1bW5zLnNpemUud2lkdGgg
PSAiOCUiOwotICAgIGNvbHVtbnMuc2l6ZS5hbGlnbmVkID0gInJpZ2h0IjsKKyAgICAgICAgY29s
dW1ucy5zdGF0dXNDb2RlLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGF0dXMiKTsK
KyAgICAgICAgY29sdW1ucy5zdGF0dXNDb2RlLndpZHRoID0gIjYlIjsKIAotICAgIGNvbHVtbnMu
dHJhbnNmZXJTaXplLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUcmFuc2ZlcmVkIik7
Ci0gICAgY29sdW1ucy50cmFuc2ZlclNpemUud2lkdGggPSAiOCUiOwotICAgIGNvbHVtbnMudHJh
bnNmZXJTaXplLmFsaWduZWQgPSAicmlnaHQiOworICAgICAgICBjb2x1bW5zLmNhY2hlZC50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2FjaGVkIik7CisgICAgICAgIGNvbHVtbnMuY2Fj
aGVkLndpZHRoID0gIjYlIjsKIAotICAgIGNvbHVtbnMucmVxdWVzdFNlbnQudGl0bGUgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKLSAgICBjb2x1bW5zLnJlcXVlc3RTZW50
LndpZHRoID0gIjklIjsKLSAgICBjb2x1bW5zLnJlcXVlc3RTZW50LmFsaWduZWQgPSAicmlnaHQi
OworICAgICAgICBjb2x1bW5zLnNpemUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNp
emUiKTsKKyAgICAgICAgY29sdW1ucy5zaXplLndpZHRoID0gIjglIjsKKyAgICAgICAgY29sdW1u
cy5zaXplLmFsaWduZWQgPSAicmlnaHQiOwogCi0gICAgY29sdW1ucy5sYXRlbmN5LnRpdGxlID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXRlbmN5Iik7Ci0gICAgY29sdW1ucy5sYXRlbmN5Lndp
ZHRoID0gIjklIjsKLSAgICBjb2x1bW5zLmxhdGVuY3kuYWxpZ25lZCA9ICJyaWdodCI7CisgICAg
ICAgIGNvbHVtbnMudHJhbnNmZXJTaXplLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJU
cmFuc2ZlcmVkIik7CisgICAgICAgIGNvbHVtbnMudHJhbnNmZXJTaXplLndpZHRoID0gIjglIjsK
KyAgICAgICAgY29sdW1ucy50cmFuc2ZlclNpemUuYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICBj
b2x1bW5zLmR1cmF0aW9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIp
OwotICAgIGNvbHVtbnMuZHVyYXRpb24ud2lkdGggPSAiOSUiOwotICAgIGNvbHVtbnMuZHVyYXRp
b24uYWxpZ25lZCA9ICJyaWdodCI7CisgICAgICAgIGNvbHVtbnMucmVxdWVzdFNlbnQudGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKKyAgICAgICAgY29sdW1ucy5y
ZXF1ZXN0U2VudC53aWR0aCA9ICI5JSI7CisgICAgICAgIGNvbHVtbnMucmVxdWVzdFNlbnQuYWxp
Z25lZCA9ICJyaWdodCI7CiAKLSAgICBmb3IgKHZhciBjb2x1bW4gaW4gY29sdW1ucykKLSAgICAg
ICAgY29sdW1uc1tjb2x1bW5dLnNvcnRhYmxlID0gdHJ1ZTsKKyAgICAgICAgY29sdW1ucy5sYXRl
bmN5LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMYXRlbmN5Iik7CisgICAgICAgIGNv
bHVtbnMubGF0ZW5jeS53aWR0aCA9ICI5JSI7CisgICAgICAgIGNvbHVtbnMubGF0ZW5jeS5hbGln
bmVkID0gInJpZ2h0IjsKIAotICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5U
aW1lbGluZURhdGFHcmlkKHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZSwgY29sdW1u
cyk7Ci0gICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVEYXRhR3JpZC5FdmVudC5GaWx0ZXJzRGlkQ2hhbmdlLCB0aGlzLl9kYXRhR3JpZEZpbHRl
cnNEaWRDaGFuZ2UsIHRoaXMpOwotICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX2Rh
dGFHcmlkTm9kZVNlbGVjdGVkLCB0aGlzKTsKLSAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1u
SWRlbnRpZmllciA9ICJyZXF1ZXN0U2VudCI7Ci0gICAgdGhpcy5fZGF0YUdyaWQuc29ydE9yZGVy
ID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRlci5Bc2NlbmRpbmc7CisgICAgICAgIGNv
bHVtbnMuZHVyYXRpb24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIik7
CisgICAgICAgIGNvbHVtbnMuZHVyYXRpb24ud2lkdGggPSAiOSUiOworICAgICAgICBjb2x1bW5z
LmR1cmF0aW9uLmFsaWduZWQgPSAicmlnaHQiOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUpOwot
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAg
ICAgICAgZm9yICh2YXIgY29sdW1uIGluIGNvbHVtbnMpCisgICAgICAgICAgICBjb2x1bW5zW2Nv
bHVtbl0uc29ydGFibGUgPSB0cnVlOwogCi0gICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdvcmtUaW1l
bGluZVJlY29yZEFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQodGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRs
aW5lLCBjb2x1bW5zKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5FdmVudC5GaWx0ZXJzRGlkQ2hhbmdlLCB0aGlz
Ll9kYXRhR3JpZEZpbHRlcnNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLl9kYXRhR3Jp
ZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5TZWxlY3RlZE5v
ZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZE5vZGVTZWxlY3RlZCwgdGhpcyk7CisgICAgICAgIHRo
aXMuX2RhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyID0gInJlcXVlc3RTZW50IjsKKyAgICAg
ICAgdGhpcy5fZGF0YUdyaWQuc29ydE9yZGVyID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRP
cmRlci5Bc2NlbmRpbmc7CiAKLSAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9IFtdOwotfTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm5ldHdvcmsiKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwogCi1XZWJJbnNw
ZWN0b3IuTmV0d29ya1RpbWVsaW5lVmlldy5TdHlsZUNsYXNzTmFtZSA9ICJuZXR3b3JrIjsKLVdl
Ykluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LlRyZWVPdXRsaW5lU3R5bGVDbGFzc05hbWUg
PSAibmV0d29yayI7CisgICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9uZXR3b3JrVGltZWxpbmVSZWNv
cmRBZGRlZCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZp
ZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZSwK
KyAgICAgICAgdGhpcy5fcGVuZGluZ1JlY29yZHMgPSBbXTsKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBuYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lTGFiZWwoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2VzIik7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUuc2hvd24uY2FsbCh0aGlz
KTsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5zaG93bigpOwotICAgIH0sCisgICAgfQogCi0g
ICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLmhpZGRlbigpOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5w
cm90b3R5cGUuaGlkZGVuLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVM
YXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0LmNhbGwodGhpcyk7
CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgdGhp
cy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXRjaFRy
ZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAg
IG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhR3JpZC50cmVlRWxlbWVudE1hdGNoZXNBY3RpdmVT
Y29wZUZpbHRlcnModHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzZXQ6IGZ1
bmN0aW9uKCkKKyAgICByZXNldCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxp
bmVWaWV3LnByb3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnJlc2V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHRy
ZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB0cmVl
RWxlbWVudFBhdGhDb21wb25lbnRTZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBk
YXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5kYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudChl
dmVudC5kYXRhLnBhdGhDb21wb25lbnQuZ2VuZXJhbFRyZWVFbGVtZW50KTsKICAgICAgICAgaWYg
KCFkYXRhR3JpZE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRhdGFHcmlkTm9k
ZS5yZXZlYWxBbmRTZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9wcm9jZXNzUGVuZGluZ1JlY29yZHM6IGZ1bmN0aW9uKCkKKyAgICBfcHJvY2Vzc1BlbmRp
bmdSZWNvcmRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1JlY29yZHMubGVu
Z3RoKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTc4LDkgKzE3Myw5IEBAIFdlYkluc3BlY3Rv
ci5OZXR3b3JrVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbmV0d29y
a1RpbWVsaW5lUmVjb3JkQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9uZXR3b3JrVGltZWxp
bmVSZWNvcmRBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZVRpbWVsaW5l
UmVjb3JkID0gZXZlbnQuZGF0YS5yZWNvcmQ7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291
cmNlVGltZWxpbmVSZWNvcmQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGlu
ZVJlY29yZCk7CkBAIC0xODgsMjUgKzE4MywyNSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVs
aW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzLnB1c2go
cmVzb3VyY2VUaW1lbGluZVJlY29yZCk7CiAKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkRmlsdGVyc0RpZENoYW5nZTogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX2RhdGFHcmlkRmlsdGVyc0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC51cGRhdGVGaWx0ZXIoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9kYXRhR3JpZE5vZGVTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2RhdGFHcmlkTm9kZVNlbGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNl
bGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90
cmVlRWxlbWVudERlc2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF90cmVlRWxl
bWVudERlc2VsZWN0ZWQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAodHJlZUVsZW1l
bnQuc3RhdHVzKQogICAgICAgICAgICAgdHJlZUVsZW1lbnQuc3RhdHVzID0gIiI7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQs
IHNlbGVjdGVkQnlVc2VyKQorICAgIF90cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBz
ZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZC5zaG91bGRJ
Z25vcmVTZWxlY3Rpb25FdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjI0LDkgKzIx
OSw5IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gdHJlZSBlbGVtZW50IHNl
bGVjdGVkLiIpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVRyZWVFbGVtZW50V2l0aENs
b3NlQnV0dG9uOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdXBkYXRlVHJlZUVsZW1lbnRX
aXRoQ2xvc2VCdXR0b24odHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY2xv
c2VTdGF0dXNCdXR0b24pIHsKICAgICAgICAgICAgIHRyZWVFbGVtZW50LnN0YXR1cyA9IHRoaXMu
X2Nsb3NlU3RhdHVzQnV0dG9uLmVsZW1lbnQ7CkBAIC0yMzksOSArMjM0LDkgQEAgV2ViSW5zcGVj
dG9yLk5ldHdvcmtUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHRy
ZWVFbGVtZW50ID09PSB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuc2VsZWN0ZWRU
cmVlRWxlbWVudCkKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVUcmVlRWxlbWVudFdpdGhD
bG9zZUJ1dHRvbih0cmVlRWxlbWVudCk7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfY2xvc2VTdGF0dXNCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfY2xvc2VTdGF0dXNCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhp
cy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQuZGVzZWxl
Y3QoKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVsLnNob3dUaW1l
bGluZVZpZXdGb3JUaW1lbGluZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFByZXZpZXdW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0
UHJldmlld1ZpZXcuanMKaW5kZXggYTFjYmI5Mi4uZTgxMjI5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJldmlld1ZpZXcuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJl
dmlld1ZpZXcuanMKQEAgLTIzLDgwICsyMyw3MiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3VmlldyA9IGZ1bmN0
aW9uKHByZXZpZXcsIG1vZGUpCitXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcgPSBjbGFz
cyBPYmplY3RQcmV2aWV3VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAv
LyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywg
YW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
Ci0KLSAgICBjb25zb2xlLmFzc2VydChwcmV2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLk9i
amVjdFByZXZpZXcpOwotCi0gICAgdGhpcy5fcHJldmlldyA9IHByZXZpZXc7Ci0gICAgdGhpcy5f
bW9kZSA9IG1vZGUgfHwgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3Lk1vZGUuRnVsbDsK
KyAgICBjb25zdHJ1Y3RvcihwcmV2aWV3LCBtb2RlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQocHJldmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3KTsKIAot
ICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAg
dGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAib2JqZWN0LXByZXZpZXciOworICAgICAgICBzdXBl
cigpOwogCi0gICAgdGhpcy5fcHJldmlld0VsZW1lbnQgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7Ci0gICAgdGhpcy5fcHJldmlld0Vs
ZW1lbnQuY2xhc3NOYW1lID0gInByZXZpZXciOwotICAgIHRoaXMuX2xvc3NsZXNzID0gdGhpcy5f
YXBwZW5kUHJldmlldyh0aGlzLl9wcmV2aWV3RWxlbWVudCwgdGhpcy5fcHJldmlldyk7CisgICAg
ICAgIHRoaXMuX3ByZXZpZXcgPSBwcmV2aWV3OworICAgICAgICB0aGlzLl9tb2RlID0gbW9kZSB8
fCBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcuTW9kZS5GdWxsOwogCi0gICAgdGhpcy5f
dGl0bGVFbGVtZW50ID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIikpOwotICAgIHRoaXMuX3RpdGxlRWxlbWVudC5jbGFzc05hbWUgPSAidGl0
bGUiOwotICAgIHRoaXMuX3RpdGxlRWxlbWVudC5oaWRkZW4gPSB0cnVlOwotICAgIHRoaXMuX2lu
aXRUaXRsZUVsZW1lbnQoKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAib2Jq
ZWN0LXByZXZpZXciOwogCi0gICAgaWYgKHRoaXMuX3ByZXZpZXcuaGFzU2l6ZSgpKSB7Ci0gICAg
ICAgIHZhciBzaXplRWxlbWVudCA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpKTsKLSAgICAgICAgc2l6ZUVsZW1lbnQuY2xhc3NOYW1lID0g
InNpemUiOwotICAgICAgICBzaXplRWxlbWVudC50ZXh0Q29udGVudCA9ICIgKCIgKyB0aGlzLl9w
cmV2aWV3LnNpemUgKyAiKSI7Ci0gICAgfQorICAgICAgICB0aGlzLl9wcmV2aWV3RWxlbWVudCA9
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
KTsKKyAgICAgICAgdGhpcy5fcHJldmlld0VsZW1lbnQuY2xhc3NOYW1lID0gInByZXZpZXciOwor
ICAgICAgICB0aGlzLl9sb3NzbGVzcyA9IHRoaXMuX2FwcGVuZFByZXZpZXcodGhpcy5fcHJldmll
d0VsZW1lbnQsIHRoaXMuX3ByZXZpZXcpOwogCi0gICAgaWYgKHRoaXMuX2xvc3NsZXNzKQotICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxvc3NsZXNzIik7Ci19OworICAgICAg
ICB0aGlzLl90aXRsZUVsZW1lbnQgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKSk7CisgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5jbGFz
c05hbWUgPSAidGl0bGUiOworICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuaGlkZGVuID0gdHJ1
ZTsKKyAgICAgICAgdGhpcy5faW5pdFRpdGxlRWxlbWVudCgpOwogCi1XZWJJbnNwZWN0b3IuT2Jq
ZWN0UHJldmlld1ZpZXcuTW9kZSA9IHsKLSAgICBCcmllZjogU3ltYm9sKCJvYmplY3QtcHJldmll
dy1icmllZiIpLAotICAgIEZ1bGw6IFN5bWJvbCgib2JqZWN0LXByZXZpZXctZnVsbCIpLAotfTsK
KyAgICAgICAgaWYgKHRoaXMuX3ByZXZpZXcuaGFzU2l6ZSgpKSB7CisgICAgICAgICAgICB2YXIg
c2l6ZUVsZW1lbnQgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKSk7CisgICAgICAgICAgICBzaXplRWxlbWVudC5jbGFzc05hbWUgPSAic2l6
ZSI7CisgICAgICAgICAgICBzaXplRWxlbWVudC50ZXh0Q29udGVudCA9ICIgKCIgKyB0aGlzLl9w
cmV2aWV3LnNpemUgKyAiKSI7CisgICAgICAgIH0KIAotV2ViSW5zcGVjdG9yLk9iamVjdFByZXZp
ZXdWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9iamVj
dFByZXZpZXdWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGUsCisgICAgICAgIGlmICh0aGlzLl9sb3NzbGVzcykKKyAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmFkZCgibG9zc2xlc3MiKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAog
ICAgIGdldCBwcmV2aWV3KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcmV2aWV3Owot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbW9kZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fbW9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsb3Nz
bGVzcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbG9zc2xlc3M7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzaG93VGl0bGUoKQogICAgIHsKICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50
LmhpZGRlbiA9IGZhbHNlOwogICAgICAgICB0aGlzLl9wcmV2aWV3RWxlbWVudC5oaWRkZW4gPSB0
cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgc2hvd1ByZXZpZXcoKQogICAgIHsKICAgICAgICAg
dGhpcy5fdGl0bGVFbGVtZW50LmhpZGRlbiA9IHRydWU7CiAgICAgICAgIHRoaXMuX3ByZXZpZXdF
bGVtZW50LmhpZGRlbiA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQog
CkBAIC0xMDcsMTIgKzk5LDEyIEBAIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoV2Vi
SW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZUVsZW1lbnRGb3JPYmplY3RQcmV2aWV3KHRo
aXMuX3ByZXZpZXcpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVt
ZW50LnRleHRDb250ZW50ID0gdGhpcy5fcHJldmlldy5kZXNjcmlwdGlvbiB8fCAiIjsKLSAgICB9
LAorICAgIH0KIAogICAgIF9udW1iZXJPZlByb3BlcnRpZXNUb1Nob3dJbk1vZGUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX21vZGUgPT09IFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3
Vmlldy5Nb2RlLkJyaWVmID8gMyA6IEluZmluaXR5OwotICAgIH0sCisgICAgfQogCiAgICAgX2Fw
cGVuZFByZXZpZXcoZWxlbWVudCwgcHJldmlldykKICAgICB7CkBAIC0xMzksNyArMTMxLDcgQEAg
V2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fYXBwZW5kUHJvcGVydHlQcmV2aWV3cyhib2R5RWxlbWVudCwgcHJl
dmlldyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVuZFZhbHVlUHJldmll
dyhib2R5RWxlbWVudCwgcHJldmlldyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfYXBwZW5kRW50
cnlQcmV2aWV3cyhlbGVtZW50LCBwcmV2aWV3KQogICAgIHsKQEAgLTE3Miw3ICsxNjQsNyBAQCBX
ZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICBlbGVt
ZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGlzSXRlcmF0b3IgPyAiXSIg
OiAifSIpKTsKIAogICAgICAgICByZXR1cm4gbG9zc2xlc3M7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBfYXBwZW5kUHJvcGVydHlQcmV2aWV3cyhlbGVtZW50LCBwcmV2aWV3KQogICAgIHsKQEAgLTIy
NCw3ICsyMTYsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGlz
QXJyYXkgPyAiXSIgOiAifSIpKTsKIAogICAgICAgICByZXR1cm4gcHJldmlldy5sb3NzbGVzczsK
LSAgICB9LAorICAgIH0KIAogICAgIF9hcHBlbmRWYWx1ZVByZXZpZXcoZWxlbWVudCwgcHJldmll
dykKICAgICB7CkBAIC0yMzIsMyArMjI0LDggQEAgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogfTsKKworV2Vi
SW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3Lk1vZGUgPSB7CisgICAgQnJpZWY6IFN5bWJvbCgi
b2JqZWN0LXByZXZpZXctYnJpZWYiKSwKKyAgICBGdWxsOiBTeW1ib2woIm9iamVjdC1wcmV2aWV3
LWZ1bGwiKSwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9PYmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVl
RWxlbWVudC5qcwppbmRleCAyZTllZmZmLi42ODk1ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlQXJyYXlJbmRleFRyZWVF
bGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L09iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQuanMKQEAgLTIzLDIzICsyMywyMSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5P
YmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocHJvcGVydHksIHByb3Bl
cnR5UGF0aCkKK1dlYkluc3BlY3Rvci5PYmplY3RUcmVlQXJyYXlJbmRleFRyZWVFbGVtZW50ID0g
Y2xhc3MgT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQocHJvcGVy
dHkuaXNJbmRleFByb3BlcnR5KCksICJBcnJheUluZGV4VHJlZUVsZW1lbnQgZXhwZWN0cyBudW1l
cmljIHByb3BlcnR5IG5hbWVzIik7Ci0KLSAgICBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VU
cmVlRWxlbWVudC5jYWxsKHRoaXMsIHByb3BlcnR5LCBwcm9wZXJ0eVBhdGgsIHByb3BlcnR5KTsK
KyAgICBjb25zdHJ1Y3Rvcihwcm9wZXJ0eSwgcHJvcGVydHlQYXRoKQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQocHJvcGVydHkuaXNJbmRleFByb3BlcnR5KCksICJPYmplY3RUcmVlQXJy
YXlJbmRleFRyZWVFbGVtZW50IGV4cGVjdHMgbnVtZXJpYyBwcm9wZXJ0eSBuYW1lcyIpOwogCi0g
ICAgdGhpcy5tYWluVGl0bGUgPSB0aGlzLl90aXRsZUZyYWdtZW50KCk7Ci0gICAgdGhpcy5hZGRD
bGFzc05hbWUoIm9iamVjdC10cmVlLXByb3BlcnR5Iik7Ci0gICAgdGhpcy5hZGRDbGFzc05hbWUo
Im9iamVjdC10cmVlLWFycmF5LWluZGV4Iik7CisgICAgICAgIHN1cGVyKHByb3BlcnR5LCBwcm9w
ZXJ0eVBhdGgsIHByb3BlcnR5KTsKIAotICAgIGlmICghdGhpcy5wcm9wZXJ0eS5oYXNWYWx1ZSgp
KQotICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgiYWNjZXNzb3IiKTsKLX07CisgICAgICAgIHRo
aXMubWFpblRpdGxlID0gdGhpcy5fdGl0bGVGcmFnbWVudCgpOworICAgICAgICB0aGlzLmFkZENs
YXNzTmFtZSgib2JqZWN0LXRyZWUtcHJvcGVydHkiKTsKKyAgICAgICAgdGhpcy5hZGRDbGFzc05h
bWUoIm9iamVjdC10cmVlLWFycmF5LWluZGV4Iik7CiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVl
QXJyYXlJbmRleFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUsCisgICAg
ICAgIGlmICghdGhpcy5wcm9wZXJ0eS5oYXNWYWx1ZSgpKQorICAgICAgICAgICAgdGhpcy5hZGRD
bGFzc05hbWUoImFjY2Vzc29yIik7CisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKQEAgLTQ4
LDcgKzQ2LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMuX3RpdGxlRnJhZ21l
bnQoKTsKIAogICAgICAgICB0aGlzLnJlbW92ZUNsYXNzTmFtZSgiYWNjZXNzb3IiKTsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNl
VHJlZUVsZW1lbnQuanMKaW5kZXggZjQwZWJmOS4uNTVhNGZiZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUJhc2VUcmVlRWxl
bWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9P
YmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmpzCkBAIC0yMyw0NSArMjMsNDMgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJl
ZUJhc2VUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBwcm9wZXJ0eVBh
dGgsIHByb3BlcnR5KQorV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQgPSBj
bGFzcyBPYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVy
YWxUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsK
LSAgICBjb25zb2xlLmFzc2VydChwcm9wZXJ0eVBhdGggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvcGVydHlQYXRoKTsKLSAgICBjb25zb2xlLmFzc2VydCghcHJvcGVydHkgfHwgcHJvcGVydHkg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yKTsKLQotICAgIHRoaXMu
X3Byb3BlcnR5ID0gcHJvcGVydHk7Ci0gICAgdGhpcy5fcHJvcGVydHlQYXRoID0gcHJvcGVydHlQ
YXRoOworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0LCBwcm9wZXJ0eVBhdGgsIHBy
b3BlcnR5KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3Qp
OworICAgICAgICBjb25zb2xlLmFzc2VydChwcm9wZXJ0eVBhdGggaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuUHJvcGVydHlQYXRoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXByb3BlcnR5IHx8
IHByb3BlcnR5IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvcik7CiAK
LSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgbnVsbCwgbnVs
bCwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKKyAgICAgICAgc3VwZXIobnVsbCwg
bnVsbCwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKIAotICAgIHRoaXMuc21hbGwg
PSB0cnVlOwotICAgIHRoaXMudG9nZ2xlT25DbGljayA9IHRydWU7Ci0gICAgdGhpcy5zZWxlY3Rh
YmxlID0gZmFsc2U7Ci0gICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwot
fTsKKyAgICAgICAgdGhpcy5fcHJvcGVydHkgPSBwcm9wZXJ0eTsKKyAgICAgICAgdGhpcy5fcHJv
cGVydHlQYXRoID0gcHJvcGVydHlQYXRoOwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwor
ICAgICAgICB0aGlzLnRvZ2dsZU9uQ2xpY2sgPSB0cnVlOworICAgICAgICB0aGlzLnNlbGVjdGFi
bGUgPSBmYWxzZTsKKyAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVl
OworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHByb3BlcnR5KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBw
cm9wZXJ0eVBhdGgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UGF0aDsK
LSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCiAgICAgb25jb250ZXh0bWVudShl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvbnRleHRNZW51SGFuZGxlcihldmVudCk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICByZXNvbHZlZFZhbHVlKCkKICAgICB7CkBAIC03MSw3ICs2OSw3
IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgaWYgKHRoaXMuX3Byb3BlcnR5Lmhhc1ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1
cm4gdGhpcy5fcHJvcGVydHkudmFsdWU7CiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisg
ICAgfQogCiAgICAgcmVzb2x2ZWRWYWx1ZVByb3BlcnR5UGF0aCgpCiAgICAgewpAQCAtODEsMTkg
Kzc5LDE5IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3Byb3BlcnR5Lmhhc1ZhbHVlKCkpCiAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fcHJvcGVydHlQYXRoLmFwcGVuZFByb3BlcnR5RGVzY3JpcHRvcih0aGlz
Ll9wcm9wZXJ0eS52YWx1ZSwgdGhpcy5fcHJvcGVydHksIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBh
dGguVHlwZS5WYWx1ZSk7CiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAg
ICAgdGhpc1Byb3BlcnR5UGF0aCgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9wcm9wZXJ0eSk7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eVBhdGguYXBwZW5kUHJv
cGVydHlEZXNjcmlwdG9yKG51bGwsIHRoaXMuX3Byb3BlcnR5LCB0aGlzLnByb3BlcnR5UGF0aFR5
cGUoKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBoYWRFcnJvcigpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl9wcm9wZXJ0eSk7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9w
ZXJ0eS53YXNUaHJvd24gfHwgdGhpcy5fZ2V0dGVySGFkRXJyb3I7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBwcm9wZXJ0eVBhdGhUeXBlKCkKICAgICB7CkBAIC0xMDUsNyArMTAzLDcgQEAgV2ViSW5z
cGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAodGhpcy5fcHJvcGVydHkuaGFzU2V0dGVyKCkpCiAgICAgICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLlByb3BlcnR5UGF0aC5UeXBlLlNldHRlcjsKICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5WYWx1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIHByb3Bl
cnR5UGF0aFN0cmluZyhwcm9wZXJ0eVBhdGgpCiAgICAgewpAQCAtMTEzLDcgKzExMSw3IEBAIFdl
Ykluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlVuYWJsZSB0byBkZXRlcm1pbmUg
cGF0aCB0byBwcm9wZXJ0eSBmcm9tIHJvb3QiKTsKIAogICAgICAgICByZXR1cm4gcHJvcGVydHlQ
YXRoLmRpc3BsYXlQYXRoKHRoaXMucHJvcGVydHlQYXRoVHlwZSgpKTsKLSAgICB9LAorICAgIH0K
IAogICAgIGNyZWF0ZUludGVyYWN0aXZlR2V0dGVyRWxlbWVudCgpCiAgICAgewpAQCAtMTM0LDcg
KzEzMiw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKIAogICAgICAgICByZXR1cm4gZ2V0dGVyRWxl
bWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGNyZWF0ZVJlYWRPbmx5SWNvbkVsZW1lbnQoKQog
ICAgIHsKQEAgLTE0Miw3ICsxNDAsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJlYWRPbmx5RWxlbWVudC5jbGFzc05hbWUg
PSAicmVhZC1vbmx5IjsKICAgICAgICAgcmVhZE9ubHlFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZWFkIG9ubHkiKTsKICAgICAgICAgcmV0dXJuIHJlYWRPbmx5RWxlbWVu
dDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApAQCAtMTYwLDcgKzE1OCw3IEBA
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5xdWlja0NvbnNvbGUucHJvbXB0LnB1c2hIaXN0b3J5SXRl
bSh0ZXh0KTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuY29uc29sZUxvZ1ZpZXdDb250cm9sbGVy
LmFwcGVuZEltbWVkaWF0ZUV4ZWN1dGlvbldpdGhSZXN1bHQodGV4dCwgcmVzb2x2ZWRWYWx1ZSk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBfY29udGV4dE1lbnVIYW5kbGVyKGV2ZW50KQogICAgIHsK
QEAgLTE4NCw3ICsxODIsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCFjb250ZXh0TWVudS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfYXBw
ZW5kTWVudXNJdGVtc0Zvck9iamVjdChjb250ZXh0TWVudSwgcmVzb2x2ZWRWYWx1ZSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9P
YmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LmpzCmluZGV4
IGZiOTJkOGYuLmQ2YmE0N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVNYXBFbnRy
eVRyZWVFbGVtZW50LmpzCkBAIC0yMyw0MiArMjMsNDAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJl
ZUVsZW1lbnQgPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5UGF0aCkKK1dlYkluc3BlY3Rvci5P
YmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVNYXBFbnRyeVRy
ZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQK
IHsKLSAgICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVt
b3RlT2JqZWN0KTsKLQotICAgIHRoaXMuX29iamVjdCA9IG9iamVjdDsKKyAgICBjb25zdHJ1Y3Rv
cihvYmplY3QsIHByb3BlcnR5UGF0aCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpOwogCi0gICAgLy8gVHJl
YXQgdGhlIHNhbWUgYXMgYW4gYXJyYXktaW5kZXgganVzdCB3aXRoIGRpZmZlcmVudCBzdHJpbmdz
IGFuZCB3aWR0aHMuCi0gICAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQu
Y2FsbCh0aGlzLCB0aGlzLl9vYmplY3QsIHByb3BlcnR5UGF0aCk7CisgICAgICAgIC8vIFRyZWF0
IHRoZSBzYW1lIGFzIGFuIGFycmF5LWluZGV4IGp1c3Qgd2l0aCBkaWZmZXJlbnQgc3RyaW5ncyBh
bmQgd2lkdGhzLgorICAgICAgICBzdXBlcih0aGlzLl9vYmplY3QsIHByb3BlcnR5UGF0aCk7CiAK
LSAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMuX3RpdGxlRnJhZ21lbnQoKTsKLSAgICB0aGlzLmFk
ZENsYXNzTmFtZSgib2JqZWN0LXRyZWUtYXJyYXktaW5kZXgiKTsKLSAgICB0aGlzLmFkZENsYXNz
TmFtZSgib2JqZWN0LXRyZWUtbWFwLWVudHJ5Iik7Ci19OworICAgICAgICB0aGlzLl9vYmplY3Qg
PSBvYmplY3Q7CiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFw
RW50cnlUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3RUcmVl
QmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5tYWluVGl0bGUgPSB0aGlz
Ll90aXRsZUZyYWdtZW50KCk7CisgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJvYmplY3QtdHJl
ZS1hcnJheS1pbmRleCIpOworICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgib2JqZWN0LXRyZWUt
bWFwLWVudHJ5Iik7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgb2JqZWN0KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3Q7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcm90ZWN0ZWQKIAogICAgIHJlc29sdmVkVmFsdWUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX29iamVjdDsKLSAgICB9LAorICAgIH0KIAogICAgIHByb3BlcnR5UGF0aFR5cGUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5W
YWx1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApAQCAtODMsMjMgKzgxLDIx
IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgfQogfTsKIAotCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEtleVRyZWVFbGVt
ZW50ID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eVBhdGgpCitXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZU1hcEtleVRyZWVFbGVtZW50ID0gY2xhc3MgT2JqZWN0VHJlZU1hcEtleVRyZWVFbGVtZW50
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50CiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LmNhbGwodGhpcywg
b2JqZWN0LCBwcm9wZXJ0eVBhdGgpOwotICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJrZXkiKTsKLX07
Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEtleVRyZWVFbGVt
ZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVF
bGVtZW50LnByb3RvdHlwZSwKKyAgICBjb25zdHJ1Y3RvcihvYmplY3QsIHByb3BlcnR5UGF0aCkK
KyAgICB7CisgICAgICAgIHN1cGVyKG9iamVjdCwgcHJvcGVydHlQYXRoKTsKIAorICAgICAgICB0
aGlzLmFkZENsYXNzTmFtZSgia2V5Iik7CisgICAgfQorICAgIAogICAgIC8vIFByb3RlY3RlZAog
CiAgICAgZGlzcGxheVByb3BlcnR5TmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJrZXkiKTsKLSAgICB9LAorICAgIH0KIAogICAgIHJlc29sdmVkVmFs
dWVQcm9wZXJ0eVBhdGgoKQogICAgIHsKQEAgLTEwNywyNCArMTAzLDIzIEBAIFdlYkluc3BlY3Rv
ci5PYmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIH0KIH07CiAK
LQotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBWYWx1ZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24o
b2JqZWN0LCBwcm9wZXJ0eVBhdGgsIGtleSkKK1dlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwVmFs
dWVUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVNYXBWYWx1ZVRyZWVFbGVtZW50IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50CiB7Ci0gICAgdGhp
cy5fa2V5ID0ga2V5OwotICAgIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxl
bWVudC5jYWxsKHRoaXMsIG9iamVjdCwgcHJvcGVydHlQYXRoKTsKLSAgICB0aGlzLmFkZENsYXNz
TmFtZSgidmFsdWUiKTsKLX07CisgICAgY29uc3RydWN0b3Iob2JqZWN0LCBwcm9wZXJ0eVBhdGgs
IGtleSkKKyAgICB7CisgICAgICAgIHN1cGVyKG9iamVjdCwgcHJvcGVydHlQYXRoKTsKIAotV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVNYXBWYWx1ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBWYWx1ZVRyZWVFbGVtZW50
LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVt
ZW50LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fa2V5ID0ga2V5OwogCisgICAgICAgIHRoaXMu
YWRkQ2xhc3NOYW1lKCJ2YWx1ZSIpOworICAgIH0KKyAgICAKICAgICAvLyBQcm90ZWN0ZWQKIAog
ICAgIGRpc3BsYXlQcm9wZXJ0eU5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygidmFsdWUiKTsKLSAgICB9LAorICAgIH0KIAogICAgIHJlc29sdmVkVmFs
dWVQcm9wZXJ0eVBhdGgoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVByb3Bl
cnR5VHJlZUVsZW1lbnQuanMKaW5kZXggMzUxNmI2Yy4uOGM3NjJiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVByb3BlcnR5
VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQuanMKQEAgLTIzLDU0ICsyMyw1MiBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHByb3BlcnR5LCBwcm9w
ZXJ0eVBhdGgsIG1vZGUsIHByb3RvdHlwZU5hbWUpCitXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVBy
b3BlcnR5VHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudCBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50CiB7Ci0gICAgdGhp
cy5fbW9kZSA9IG1vZGUgfHwgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUuUHJvcGVy
dGllczsKLSAgICB0aGlzLl9wcm90b3R5cGVOYW1lID0gcHJvdG90eXBlTmFtZTsKLQotICAgIFdl
Ykluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmNhbGwodGhpcywgcHJvcGVydHks
IHByb3BlcnR5UGF0aCwgcHJvcGVydHkpOworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5LCBwcm9w
ZXJ0eVBhdGgsIG1vZGUsIHByb3RvdHlwZU5hbWUpCisgICAgeworICAgICAgICBzdXBlcihwcm9w
ZXJ0eSwgcHJvcGVydHlQYXRoLCBwcm9wZXJ0eSk7CiAKLSAgICB0aGlzLm1haW5UaXRsZSA9IHRo
aXMuX3RpdGxlRnJhZ21lbnQoKTsKLSAgICB0aGlzLmFkZENsYXNzTmFtZSgib2JqZWN0LXRyZWUt
cHJvcGVydHkiKTsKKyAgICAgICAgdGhpcy5fbW9kZSA9IG1vZGUgfHwgV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVWaWV3Lk1vZGUuUHJvcGVydGllczsKKyAgICAgICAgdGhpcy5fcHJvdG90eXBlTmFt
ZSA9IHByb3RvdHlwZU5hbWU7CiAKLSAgICBpZiAodGhpcy5wcm9wZXJ0eS5oYXNWYWx1ZSgpKSB7
Ci0gICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKHRoaXMucHJvcGVydHkudmFsdWUudHlwZSk7Ci0g
ICAgICAgIGlmICh0aGlzLnByb3BlcnR5LnZhbHVlLnN1YnR5cGUpCi0gICAgICAgICAgICB0aGlz
LmFkZENsYXNzTmFtZSh0aGlzLnByb3BlcnR5LnZhbHVlLnN1YnR5cGUpOwotICAgIH0gZWxzZQot
ICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgiYWNjZXNzb3IiKTsKKyAgICAgICAgdGhpcy5tYWlu
VGl0bGUgPSB0aGlzLl90aXRsZUZyYWdtZW50KCk7CisgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1l
KCJvYmplY3QtdHJlZS1wcm9wZXJ0eSIpOwogCi0gICAgaWYgKHRoaXMucHJvcGVydHkud2FzVGhy
b3duKQotICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgiaGFkLWVycm9yIik7Ci0gICAgaWYgKHRo
aXMucHJvcGVydHkubmFtZSA9PT0gIl9fcHJvdG9fXyIpCi0gICAgICAgIHRoaXMuYWRkQ2xhc3NO
YW1lKCJwcm90b3R5cGUtcHJvcGVydHkiKTsKKyAgICAgICAgaWYgKHRoaXMucHJvcGVydHkuaGFz
VmFsdWUoKSkgeworICAgICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUodGhpcy5wcm9wZXJ0eS52
YWx1ZS50eXBlKTsKKyAgICAgICAgICAgIGlmICh0aGlzLnByb3BlcnR5LnZhbHVlLnN1YnR5cGUp
CisgICAgICAgICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUodGhpcy5wcm9wZXJ0eS52YWx1ZS5z
dWJ0eXBlKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgi
YWNjZXNzb3IiKTsKIAotICAgIHRoaXMuX3VwZGF0ZVRvb2x0aXBzKCk7Ci0gICAgdGhpcy5fdXBk
YXRlSGFzQ2hpbGRyZW4oKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgaWYgKHRoaXMu
cHJvcGVydHkud2FzVGhyb3duKQorICAgICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoImhhZC1l
cnJvciIpOworICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5uYW1lID09PSAiX19wcm90b19fIikK
KyAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJwcm90b3R5cGUtcHJvcGVydHkiKTsKIAor
ICAgICAgICB0aGlzLl91cGRhdGVUb29sdGlwcygpOworICAgICAgICB0aGlzLl91cGRhdGVIYXND
aGlsZHJlbigpOworICAgIH0KKyAgICAKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIG9ucG9wdWxh
dGUoKQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAg
IH0KIAogICAgIG9uZXhwYW5kKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9wcmV2aWV3Vmll
dykKICAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdWaWV3LnNob3dUaXRsZSgpOwotICAgIH0sCisg
ICAgfQogCiAgICAgb25jb2xsYXBzZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fcHJldmll
d1ZpZXcpCiAgICAgICAgICAgICB0aGlzLl9wcmV2aWV3Vmlldy5zaG93UHJldmlldygpOwotICAg
IH0sCisgICAgfQogCiAgICAgaW52b2tlZEdldHRlcigpCiAgICAgewpAQCAtODUsNyArODMsNyBA
QCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLnJlbW92ZUNsYXNzTmFtZSgiYWNjZXNzb3IiKTsKIAogICAgICAgICB0
aGlzLl91cGRhdGVIYXNDaGlsZHJlbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCkBAIC05OSw3ICs5Nyw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gIXdh
c1Rocm93biAmJiB2YWx1ZUhhc0NoaWxkcmVuOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0
aGlzLmhhc0NoaWxkcmVuID0gIXdhc1Rocm93biAmJiB2YWx1ZUhhc0NoaWxkcmVuICYmICh0aGlz
LnByb3BlcnR5Lm5hbWUgPT09ICJfX3Byb3RvX18iIHx8IHRoaXMuX2Fsd2F5c0Rpc3BsYXlBc1By
b3BlcnR5KCkpOwotICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZVRvb2x0aXBzKCkKICAgICB7
CkBAIC0xMTMsNyArMTExLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGF0dHJpYnV0ZXMucHVzaCgid3JpdGFi
bGUiKTsKIAogICAgICAgICB0aGlzLmljb25FbGVtZW50LnRpdGxlID0gYXR0cmlidXRlcy5qb2lu
KCIgIik7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfdGl0bGVGcmFnbWVudCgpCiAgICAgewpAQCAt
MTI0LDcgKzEyMiw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVGl0bGVQcm9w
ZXJ0eVN0eWxlKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jcmVh
dGVUaXRsZUFQSVN0eWxlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfY3JlYXRlVGl0bGVQcm90
b3R5cGUoKQogICAgIHsKQEAgLTEzNiw3ICsxMzQsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJl
ZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBuYW1lRWxlbWVudC50
ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJXMgUHJvdG90eXBlIikuZm9ybWF0
KHRoaXMuX3Nhbml0aXplZFByb3RvdHlwZVN0cmluZyh0aGlzLnByb3BlcnR5LnZhbHVlKSk7CiAg
ICAgICAgIG5hbWVFbGVtZW50LnRpdGxlID0gdGhpcy5wcm9wZXJ0eVBhdGhTdHJpbmcodGhpcy50
aGlzUHJvcGVydHlQYXRoKCkpOwogICAgICAgICByZXR1cm4gbmFtZUVsZW1lbnQ7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBfY3JlYXRlVGl0bGVQcm9wZXJ0eVN0eWxlKCkKICAgICB7CkBAIC0xODQs
NyArMTgyLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKG5hbWVFbGVtZW50KTsK
ICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHZhbHVlT3JHZXR0ZXJFbGVtZW50KTsKICAg
ICAgICAgcmV0dXJuIGNvbnRhaW5lcjsKLSAgICB9LAorICAgIH0KIAogICAgIF9jcmVhdGVUaXRs
ZUFQSVN0eWxlKCkKICAgICB7CkBAIC0yMjAsNyArMjE4LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiBjb250YWluZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfYWx3YXlzRGlzcGxh
eUFzUHJvcGVydHkoKQogICAgIHsKQEAgLTIzNywxMiArMjM1LDEyIEBAIFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBfZnVuY3Rpb25Qcm9wZXJ0eVN0cmluZygpCiAgICAgewogICAgICAgICByZXR1cm4gImZ1bmN0
aW9uIiArIHRoaXMuX2Z1bmN0aW9uUGFyYW1ldGVyU3RyaW5nKCk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBfZnVuY3Rpb25QYXJhbWV0ZXJTdHJpbmcoKQogICAgIHsKQEAgLTI4Myw3ICsyODEsNyBA
QCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHZhciBtYXRjaCA9IHJlc29sdmVkVmFsdWUuZGVzY3JpcHRpb24ubWF0Y2go
L15mdW5jdGlvbi4qPyhcKFteKV0rP1wpKS8pOwogICAgICAgICByZXR1cm4gbWF0Y2ggPyBtYXRj
aFsxXSA6ICIoKSI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfc2FuaXRpemVkUHJvdG90eXBlU3Ry
aW5nKHZhbHVlKQogICAgIHsKQEAgLTI5Niw3ICsyOTQsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
ICJSZWdFeHAiOwogCiAgICAgICAgIHJldHVybiB2YWx1ZS5kZXNjcmlwdGlvbi5yZXBsYWNlKC9Q
cm90b3R5cGUkLywgIiIpOwotICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZUNoaWxkcmVuKCkK
ICAgICB7CkBAIC0zMTAsMjAgKzMwOCwyMCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3Bl
cnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZS5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKHRoaXMuX3VwZGF0ZUNoaWxkcmVuSW50ZXJuYWwuYmlu
ZCh0aGlzLCB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzLCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZp
ZXcuTW9kZS5BUEkpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZS5n
ZXREaXNwbGF5YWJsZVByb3BlcnR5RGVzY3JpcHRvcnModGhpcy5fdXBkYXRlQ2hpbGRyZW5JbnRl
cm5hbC5iaW5kKHRoaXMsIHRoaXMuX3VwZGF0ZVByb3BlcnRpZXMsIHRoaXMuX21vZGUpKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIF91cGRhdGVDaGlsZHJlbkludGVybmFsKGhhbmRsZXIsIG1vZGUs
IGxpc3QpCiAgICAgewogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAg
aWYgKCFsaXN0KSB7Ci0gICAgICAgICAgICB2YXIgZXJyb3JNZXNzYWdlRWxlbWVudCA9IFdlYklu
c3BlY3Rvci5PYmplY3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQ291bGQgbm90IGZldGNoIHByb3BlcnRpZXMuIE9iamVjdCBtYXkgbm8gbG9uZ2Vy
IGV4aXN0LiIpKTsKLSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFRyZWVFbGVtZW50
KGVycm9yTWVzc2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CisgICAgICAgICAgICB2YXIgZXJy
b3JNZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5jcmVhdGVFbXB0
eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ291bGQgbm90IGZldGNoIHBy
b3BlcnRpZXMuIE9iamVjdCBtYXkgbm8gbG9uZ2VyIGV4aXN0LiIpKTsKKyAgICAgICAgICAgIHRo
aXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChlcnJvck1lc3NhZ2VF
bGVtZW50LCBudWxsLCBmYWxzZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
ICAgICAgICAgaGFuZGxlci5jYWxsKHRoaXMsIGxpc3QsIHRoaXMucmVzb2x2ZWRWYWx1ZVByb3Bl
cnR5UGF0aCgpLCBtb2RlKTsKLSAgICB9LAorICAgIH0KIAogICAgIF91cGRhdGVFbnRyaWVzKGVu
dHJpZXMsIHByb3BlcnR5UGF0aCwgbW9kZSkKICAgICB7CkBAIC0zMzYsOCArMzM0LDggQEAgV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIGlmICghdGhpcy5jaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgICAg
ICAgIHZhciBlbXB0eU1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3
LmVtcHR5TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBFbnRyaWVzLiIp
KTsKLSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFRyZWVFbGVtZW50KGVtcHR5TWVz
c2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CisgICAgICAgICAgICB2YXIgZW1wdHlNZXNzYWdl
RWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5jcmVhdGVFbXB0eU1lc3NhZ2VF
bGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gRW50cmllcy4iKSk7CisgICAgICAgICAg
ICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoZW1wdHlNZXNz
YWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNob3cg
dGhlIHByb3RvdHlwZSBzbyB1c2VycyBjYW4gc2VlIHRoZSBBUEkuCkBAIC0zNDYsMTEgKzM0NCwx
MSBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgaWYgKHByb3BlcnR5RGVzY3JpcHRvcikKICAgICAgICAgICAgICAg
ICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJl
ZUVsZW1lbnQocHJvcGVydHlEZXNjcmlwdG9yLCBwcm9wZXJ0eVBhdGgsIG1vZGUpKTsKICAgICAg
ICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAogICAgIF91cGRhdGVQcm9wZXJ0aWVz
KHByb3BlcnRpZXMsIHByb3BlcnR5UGF0aCwgbW9kZSkKICAgICB7Ci0gICAgICAgIHByb3BlcnRp
ZXMuc29ydChXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuQ29tcGFyZVByb3BlcnR5RGVzY3Jp
cHRvcnMpOworICAgICAgICBwcm9wZXJ0aWVzLnNvcnQoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVW
aWV3LmNvbXBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzKTsKIAogICAgICAgICB2YXIgcmVzb2x2ZWRW
YWx1ZSA9IHRoaXMucmVzb2x2ZWRWYWx1ZSgpOwogICAgICAgICB2YXIgaXNBcnJheSA9IHJlc29s
dmVkVmFsdWUuaXNBcnJheSgpOwpAQCAtMzgwLDggKzM3OCw4IEBAIFdlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIXRoaXMuY2hpbGRyZW4ubGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgZW1wdHlN
ZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VF
bGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUHJvcGVydGllcy4iKSk7Ci0gICAgICAg
ICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBUcmVlRWxlbWVudChlbXB0eU1lc3NhZ2VFbGVtZW50
LCBudWxsLCBmYWxzZSkpOworICAgICAgICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQgPSBX
ZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY3JlYXRlRW1wdHlNZXNzYWdlRWxlbWVudChXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIk5vIFByb3BlcnRpZXMuIikpOworICAgICAgICAgICAgdGhpcy5h
cHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KGVtcHR5TWVzc2FnZUVsZW1l
bnQsIG51bGwsIGZhbHNlKSk7CiAgICAgICAgIH0KICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVNldEluZGV4
VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudC5qcwppbmRleCA3ODVkYTYwLi40MzMzNDEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9P
YmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudC5qcwpA
QCAtMjMsNDEgKzIzLDM5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVTZXRJbmRleFRyZWVFbGVtZW50ID0gZnVuY3Rp
b24ob2JqZWN0LCBwcm9wZXJ0eVBhdGgpCitXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVNldEluZGV4
VHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudCBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5h
c3NlcnQob2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7Ci0KLSAg
ICB0aGlzLl9vYmplY3QgPSBvYmplY3Q7CisgICAgY29uc3RydWN0b3Iob2JqZWN0LCBwcm9wZXJ0
eVBhdGgpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKIAotICAgIC8vIFRyZWF0IHRoZSBzYW1lIGFzIGFu
IGFycmF5LWluZGV4IGp1c3Qgd2l0aCBkaWZmZXJlbnQgc3RyaW5ncyBhbmQgd2lkdGhzLgotICAg
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmNhbGwodGhpcywgdGhpcy5f
b2JqZWN0LCBwcm9wZXJ0eVBhdGgpOworICAgICAgICAvLyBUcmVhdCB0aGUgc2FtZSBhcyBhbiBh
cnJheS1pbmRleCBqdXN0IHdpdGggZGlmZmVyZW50IHN0cmluZ3MgYW5kIHdpZHRocy4KKyAgICAg
ICAgc3VwZXIodGhpcy5fb2JqZWN0LCBwcm9wZXJ0eVBhdGgpOwogCi0gICAgdGhpcy5tYWluVGl0
bGUgPSB0aGlzLl90aXRsZUZyYWdtZW50KCk7Ci0gICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVj
dC10cmVlLWFycmF5LWluZGV4Iik7Ci19OworICAgICAgICB0aGlzLl9vYmplY3QgPSBvYmplY3Q7
CiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlU2V0SW5kZXhUcmVl
RWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVF
bGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5tYWluVGl0bGUgPSB0aGlzLl90aXRsZUZy
YWdtZW50KCk7CisgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJvYmplY3QtdHJlZS1hcnJheS1p
bmRleCIpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG9iamVjdCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJvdGVjdGVkCiAKICAgICByZXNvbHZlZFZhbHVlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9vYmplY3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICByZXNvbHZlZFZhbHVlUHJvcGVydHlQ
YXRoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnByb3BlcnR5UGF0aC5hcHBlbmRTZXRJ
bmRleCh0aGlzLl9vYmplY3QpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmpl
Y3RUcmVlVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L09iamVjdFRyZWVWaWV3LmpzCmluZGV4IDBkNTUzZDAuLjRhZmJlZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRy
ZWVWaWV3LmpzCkBAIC0yMywxNDQgKzIzLDEzOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldyA9IGZ1bmN0aW9u
KG9iamVjdCwgbW9kZSwgcHJvcGVydHlQYXRoLCBmb3JjZUV4cGFuZGluZykKK1dlYkluc3BlY3Rv
ci5PYmplY3RUcmVlVmlldyA9IGNsYXNzIE9iamVjdFRyZWVWaWV3IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0
b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIGNvbnNvbGUuYXNzZXJ0KG9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpOwotICAgIGNvbnNvbGUuYXNzZXJ0KCFwcm9w
ZXJ0eVBhdGggfHwgcHJvcGVydHlQYXRoIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb3BlcnR5
UGF0aCk7Ci0KLSAgICB0aGlzLl9vYmplY3QgPSBvYmplY3Q7Ci0gICAgdGhpcy5fbW9kZSA9IG1v
ZGUgfHwgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUuUHJvcGVydGllczsKLSAgICB0
aGlzLl9wcm9wZXJ0eVBhdGggPSBwcm9wZXJ0eVBhdGggfHwgbmV3IFdlYkluc3BlY3Rvci5Qcm9w
ZXJ0eVBhdGgodGhpcy5fb2JqZWN0LCAidGhpcyIpOwotICAgIHRoaXMuX2V4cGFuZGVkID0gZmFs
c2U7Ci0gICAgdGhpcy5faGFzTG9zc2xlc3NQcmV2aWV3ID0gZmFsc2U7Ci0KLSAgICAvLyBJZiBP
YmplY3RUcmVlIGlzIHVzZWQgb3V0c2lkZSBvZiB0aGUgY29uc29sZSwgd2UgZG8gbm90IGtub3cg
d2hlbiB0byByZWxlYXNlCi0gICAgLy8gV2Vha01hcCBlbnRyaWVzLiBDdXJyZW50bHkgY29sbGFw
c2Ugd291bGQgd29yay4gRm9yIHRoZSBjb25zb2xlLCB3ZSBjYW4ganVzdAotICAgIC8vIGxpc3Rl
biBmb3IgY29uc29sZSBjbGVhciBldmVudHMuIEN1cnJlbnRseSBhbGwgT2JqZWN0VHJlZXMgYXJl
IGluIHRoZSBjb25zb2xlLgotICAgIHRoaXMuX2luQ29uc29sZSA9IHRydWU7Ci0KLSAgICB0aGlz
Ll9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxl
bWVudC5jbGFzc05hbWUgPSAib2JqZWN0LXRyZWUiOwotCi0gICAgaWYgKHRoaXMuX29iamVjdC5w
cmV2aWV3KSB7Ci0gICAgICAgIHRoaXMuX3ByZXZpZXdWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5P
YmplY3RQcmV2aWV3Vmlldyh0aGlzLl9vYmplY3QucHJldmlldyk7Ci0gICAgICAgIHRoaXMuX3By
ZXZpZXdWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVQ
cmV2aWV3T3JUaXRsZUVsZW1lbnRDbGljay5iaW5kKHRoaXMpKTsKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9wcmV2aWV3Vmlldy5lbGVtZW50KTsKLQotICAgICAgICBp
ZiAodGhpcy5fcHJldmlld1ZpZXcubG9zc2xlc3MgJiYgIXRoaXMuX3Byb3BlcnR5UGF0aC5wYXJl
bnQgJiYgIWZvcmNlRXhwYW5kaW5nKSB7Ci0gICAgICAgICAgICB0aGlzLl9oYXNMb3NzbGVzc1By
ZXZpZXcgPSB0cnVlOwotICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxv
c3NsZXNzLXByZXZpZXciKTsKKyAgICBjb25zdHJ1Y3RvcihvYmplY3QsIG1vZGUsIHByb3BlcnR5
UGF0aCwgZm9yY2VFeHBhbmRpbmcpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KG9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QpOworICAgICAgICBjb25zb2xlLmFzc2VydCghcHJvcGVydHlQYXRoIHx8IHByb3BlcnR5UGF0
aCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGgpOworCisgICAgICAgIHRoaXMu
X29iamVjdCA9IG9iamVjdDsKKyAgICAgICAgdGhpcy5fbW9kZSA9IG1vZGUgfHwgV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUuUHJvcGVydGllczsKKyAgICAgICAgdGhpcy5fcHJvcGVy
dHlQYXRoID0gcHJvcGVydHlQYXRoIHx8IG5ldyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKHRo
aXMuX29iamVjdCwgInRoaXMiKTsKKyAgICAgICAgdGhpcy5fZXhwYW5kZWQgPSBmYWxzZTsKKyAg
ICAgICAgdGhpcy5faGFzTG9zc2xlc3NQcmV2aWV3ID0gZmFsc2U7CisKKyAgICAgICAgLy8gSWYg
T2JqZWN0VHJlZSBpcyB1c2VkIG91dHNpZGUgb2YgdGhlIGNvbnNvbGUsIHdlIGRvIG5vdCBrbm93
IHdoZW4gdG8gcmVsZWFzZQorICAgICAgICAvLyBXZWFrTWFwIGVudHJpZXMuIEN1cnJlbnRseSBj
b2xsYXBzZSB3b3VsZCB3b3JrLiBGb3IgdGhlIGNvbnNvbGUsIHdlIGNhbiBqdXN0CisgICAgICAg
IC8vIGxpc3RlbiBmb3IgY29uc29sZSBjbGVhciBldmVudHMuIEN1cnJlbnRseSBhbGwgT2JqZWN0
VHJlZXMgYXJlIGluIHRoZSBjb25zb2xlLgorICAgICAgICB0aGlzLl9pbkNvbnNvbGUgPSB0cnVl
OworCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAib2JqZWN0LXRyZWUiOworCisg
ICAgICAgIGlmICh0aGlzLl9vYmplY3QucHJldmlldykgeworICAgICAgICAgICAgdGhpcy5fcHJl
dmlld1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXdWaWV3KHRoaXMuX29iamVj
dC5wcmV2aWV3KTsKKyAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdWaWV3LmVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9oYW5kbGVQcmV2aWV3T3JUaXRsZUVsZW1lbnRDbGlj
ay5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fcHJldmlld1ZpZXcuZWxlbWVudCk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLl9wcmV2aWV3
Vmlldy5sb3NzbGVzcyAmJiAhdGhpcy5fcHJvcGVydHlQYXRoLnBhcmVudCAmJiAhZm9yY2VFeHBh
bmRpbmcpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9oYXNMb3NzbGVzc1ByZXZpZXcgPSB0cnVl
OworICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJsb3NzbGVzcy1w
cmV2aWV3Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0
aGlzLl90aXRsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAg
ICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuY2xhc3NOYW1lID0gInRpdGxlIjsKKyAgICAgICAg
ICAgIHRoaXMuX3RpdGxlRWxlbWVudC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuRm9ybWF0dGVk
VmFsdWUuY3JlYXRlRWxlbWVudEZvclJlbW90ZU9iamVjdCh0aGlzLl9vYmplY3QpKTsKKyAgICAg
ICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
X2hhbmRsZVByZXZpZXdPclRpdGxlRWxlbWVudENsaWNrLmJpbmQodGhpcykpOworICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90aXRsZUVsZW1lbnQpOwogICAgICAg
ICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuY2xhc3NO
YW1lID0gInRpdGxlIjsKLSAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKFdl
Ykluc3BlY3Rvci5Gb3JtYXR0ZWRWYWx1ZS5jcmVhdGVFbGVtZW50Rm9yUmVtb3RlT2JqZWN0KHRo
aXMuX29iamVjdCkpOwotICAgICAgICB0aGlzLl90aXRsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9oYW5kbGVQcmV2aWV3T3JUaXRsZUVsZW1lbnRDbGljay5iaW5kKHRo
aXMpKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90aXRsZUVsZW1l
bnQpOwotICAgIH0KIAotICAgIHRoaXMuX291dGxpbmVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgib2wiKTsKLSAgICB0aGlzLl9vdXRsaW5lRWxlbWVudC5jbGFzc05hbWUgPSAib2Jq
ZWN0LXRyZWUtb3V0bGluZSI7Ci0gICAgdGhpcy5fb3V0bGluZSA9IG5ldyBUcmVlT3V0bGluZSh0
aGlzLl9vdXRsaW5lRWxlbWVudCk7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9vdXRsaW5lRWxlbWVudCk7CisgICAgICAgIHRoaXMuX291dGxpbmVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgib2wiKTsKKyAgICAgICAgdGhpcy5fb3V0bGluZUVsZW1lbnQuY2xh
c3NOYW1lID0gIm9iamVjdC10cmVlLW91dGxpbmUiOworICAgICAgICB0aGlzLl9vdXRsaW5lID0g
bmV3IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZSh0aGlzLl9vdXRsaW5lRWxlbWVudCk7CisgICAg
ICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fb3V0bGluZUVsZW1lbnQpOwogCi0g
ICAgLy8gRklYTUU6IFN1cHBvcnQgZWRpdGFibGUgT2JqZWN0VHJlZXMuCi19OworICAgICAgICAv
LyBGSVhNRTogU3VwcG9ydCBlZGl0YWJsZSBPYmplY3RUcmVlcy4KKyAgICB9CiAKLVdlYkluc3Bl
Y3Rvci5PYmplY3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50ID0gZnVuY3Rpb24obWVzc2Fn
ZSkKLXsKLSAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgIGVtcHR5TWVzc2FnZUVsZW1lbnQuY2xhc3NOYW1lID0gImVtcHR5LW1l
c3NhZ2UiOwotICAgIGVtcHR5TWVzc2FnZUVsZW1lbnQudGV4dENvbnRlbnQgPSBtZXNzYWdlOwot
ICAgIHJldHVybiBlbXB0eU1lc3NhZ2VFbGVtZW50OwotfTsKKyAgICAvLyBTdGF0aWMKIAotV2Vi
SW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUgPSB7Ci0gICAgUHJvcGVydGllczogU3ltYm9s
KCJvYmplY3QtdHJlZS1wcm9wZXJ0aWVzIiksCi0gICAgQVBJOiBTeW1ib2woIm9iamVjdC10cmVl
LWFwaSIpLAotfTsKKyAgICBzdGF0aWMgY3JlYXRlRW1wdHlNZXNzYWdlRWxlbWVudChtZXNzYWdl
KQorICAgIHsKKyAgICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgZW1wdHlNZXNzYWdlRWxlbWVudC5jbGFzc05hbWUg
PSAiZW1wdHktbWVzc2FnZSI7CisgICAgICAgIGVtcHR5TWVzc2FnZUVsZW1lbnQudGV4dENvbnRl
bnQgPSBtZXNzYWdlOworICAgICAgICByZXR1cm4gZW1wdHlNZXNzYWdlRWxlbWVudDsKKyAgICB9
CiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5Db21wYXJlUHJvcGVydHlEZXNjcmlwdG9y
cyA9IGZ1bmN0aW9uKHByb3BlcnR5QSwgcHJvcGVydHlCKQotewotICAgIHZhciBhID0gcHJvcGVy
dHlBLm5hbWU7Ci0gICAgdmFyIGIgPSBwcm9wZXJ0eUIubmFtZTsKLQotICAgIC8vIFB1dCBfX3By
b3RvX18gYXQgdGhlIGJvdHRvbS4KLSAgICBpZiAoYSA9PT0gIl9fcHJvdG9fXyIpCi0gICAgICAg
IHJldHVybiAxOwotICAgIGlmIChiID09PSAiX19wcm90b19fIikKLSAgICAgICAgcmV0dXJuIC0x
OwotCi0gICAgLy8gUHV0IGludGVybmFsIHByb3BlcnRpZXMgYXQgdGhlIHRvcC4KLSAgICBpZiAo
YS5pc0ludGVybmFsUHJvcGVydHkgJiYgIWIuaXNJbnRlcm5hbFByb3BlcnR5KQotICAgICAgICBy
ZXR1cm4gLTE7Ci0gICAgaWYgKGIuaXNJbnRlcm5hbFByb3BlcnR5ICYmICFhLmlzSW50ZXJuYWxQ
cm9wZXJ0eSkKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAvLyBpZiB1c2VkIGVsc2V3aGVyZSBt
YWtlIHN1cmUgdG8KLSAgICAvLyAgLSBjb252ZXJ0IGEgYW5kIGIgdG8gc3RyaW5ncyAobm90IG5l
ZWRlZCBoZXJlLCBwcm9wZXJ0aWVzIGFyZSBhbGwgc3RyaW5ncykKLSAgICAvLyAgLSBjaGVjayBp
ZiBhID09IGIgKG5vdCBuZWVkZWQgaGVyZSwgbm8gdHdvIHByb3BlcnRpZXMgY2FuIGJlIHRoZSBz
YW1lKQotCi0gICAgdmFyIGRpZmYgPSAwOwotICAgIHZhciBjaHVuayA9IC9eXGQrfF5cRCsvOwot
ICAgIHZhciBjaHVua2EsIGNodW5rYiwgYW51bSwgYm51bTsKLSAgICB3aGlsZSAoZGlmZiA9PT0g
MCkgewotICAgICAgICBpZiAoIWEgJiYgYikKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAg
ICAgaWYgKCFiICYmIGEpCisgICAgc3RhdGljIGNvbXBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzKHBy
b3BlcnR5QSwgcHJvcGVydHlCKQorICAgIHsKKyAgICAgICAgdmFyIGEgPSBwcm9wZXJ0eUEubmFt
ZTsKKyAgICAgICAgdmFyIGIgPSBwcm9wZXJ0eUIubmFtZTsKKworICAgICAgICAvLyBQdXQgX19w
cm90b19fIGF0IHRoZSBib3R0b20uCisgICAgICAgIGlmIChhID09PSAiX19wcm90b19fIikKICAg
ICAgICAgICAgIHJldHVybiAxOwotICAgICAgICBjaHVua2EgPSBhLm1hdGNoKGNodW5rKVswXTsK
LSAgICAgICAgY2h1bmtiID0gYi5tYXRjaChjaHVuaylbMF07Ci0gICAgICAgIGFudW0gPSAhaXNO
YU4oY2h1bmthKTsKLSAgICAgICAgYm51bSA9ICFpc05hTihjaHVua2IpOwotICAgICAgICBpZiAo
YW51bSAmJiAhYm51bSkKKyAgICAgICAgaWYgKGIgPT09ICJfX3Byb3RvX18iKQorICAgICAgICAg
ICAgcmV0dXJuIC0xOworCisgICAgICAgIC8vIFB1dCBpbnRlcm5hbCBwcm9wZXJ0aWVzIGF0IHRo
ZSB0b3AuCisgICAgICAgIGlmIChhLmlzSW50ZXJuYWxQcm9wZXJ0eSAmJiAhYi5pc0ludGVybmFs
UHJvcGVydHkpCiAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmIChibnVtICYmICFh
bnVtKQorICAgICAgICBpZiAoYi5pc0ludGVybmFsUHJvcGVydHkgJiYgIWEuaXNJbnRlcm5hbFBy
b3BlcnR5KQogICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgIGlmIChhbnVtICYmIGJudW0p
IHsKLSAgICAgICAgICAgIGRpZmYgPSBjaHVua2EgLSBjaHVua2I7Ci0gICAgICAgICAgICBpZiAo
ZGlmZiA9PT0gMCAmJiBjaHVua2EubGVuZ3RoICE9PSBjaHVua2IubGVuZ3RoKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKCErY2h1bmthICYmICErY2h1bmtiKSAvLyBjaHVua3MgYXJlIHN0cmluZ3Mg
b2YgYWxsIDBzIChzcGVjaWFsIGNhc2UpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaHVu
a2EubGVuZ3RoIC0gY2h1bmtiLmxlbmd0aDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBjaHVua2IubGVuZ3RoIC0gY2h1bmthLmxlbmd0aDsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChjaHVua2EgIT09IGNodW5rYikKLSAgICAgICAg
ICAgIHJldHVybiAoY2h1bmthIDwgY2h1bmtiKSA/IC0xIDogMTsKLSAgICAgICAgYSA9IGEuc3Vi
c3RyaW5nKGNodW5rYS5sZW5ndGgpOwotICAgICAgICBiID0gYi5zdWJzdHJpbmcoY2h1bmtiLmxl
bmd0aCk7Ci0gICAgfQotICAgIHJldHVybiBkaWZmOwotfTsKIAotV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGUsCisgICAgICAgIC8vIGlmIHVzZWQgZWxzZXdoZXJlIG1ha2Ugc3VyZSB0bworICAgICAgICAv
LyAgLSBjb252ZXJ0IGEgYW5kIGIgdG8gc3RyaW5ncyAobm90IG5lZWRlZCBoZXJlLCBwcm9wZXJ0
aWVzIGFyZSBhbGwgc3RyaW5ncykKKyAgICAgICAgLy8gIC0gY2hlY2sgaWYgYSA9PSBiIChub3Qg
bmVlZGVkIGhlcmUsIG5vIHR3byBwcm9wZXJ0aWVzIGNhbiBiZSB0aGUgc2FtZSkKKworICAgICAg
ICB2YXIgZGlmZiA9IDA7CisgICAgICAgIHZhciBjaHVuayA9IC9eXGQrfF5cRCsvOworICAgICAg
ICB2YXIgY2h1bmthLCBjaHVua2IsIGFudW0sIGJudW07CisgICAgICAgIHdoaWxlIChkaWZmID09
PSAwKSB7CisgICAgICAgICAgICBpZiAoIWEgJiYgYikKKyAgICAgICAgICAgICAgICByZXR1cm4g
LTE7CisgICAgICAgICAgICBpZiAoIWIgJiYgYSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsK
KyAgICAgICAgICAgIGNodW5rYSA9IGEubWF0Y2goY2h1bmspWzBdOworICAgICAgICAgICAgY2h1
bmtiID0gYi5tYXRjaChjaHVuaylbMF07CisgICAgICAgICAgICBhbnVtID0gIWlzTmFOKGNodW5r
YSk7CisgICAgICAgICAgICBibnVtID0gIWlzTmFOKGNodW5rYik7CisgICAgICAgICAgICBpZiAo
YW51bSAmJiAhYm51bSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBp
ZiAoYm51bSAmJiAhYW51bSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAg
IGlmIChhbnVtICYmIGJudW0pIHsKKyAgICAgICAgICAgICAgICBkaWZmID0gY2h1bmthIC0gY2h1
bmtiOworICAgICAgICAgICAgICAgIGlmIChkaWZmID09PSAwICYmIGNodW5rYS5sZW5ndGggIT09
IGNodW5rYi5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCErY2h1bmthICYmICEr
Y2h1bmtiKSAvLyBjaHVua3MgYXJlIHN0cmluZ3Mgb2YgYWxsIDBzIChzcGVjaWFsIGNhc2UpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2h1bmthLmxlbmd0aCAtIGNodW5rYi5sZW5n
dGg7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBjaHVua2IubGVuZ3RoIC0gY2h1bmthLmxlbmd0aDsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKGNodW5rYSAhPT0gY2h1bmtiKQorICAgICAgICAgICAgICAg
IHJldHVybiAoY2h1bmthIDwgY2h1bmtiKSA/IC0xIDogMTsKKyAgICAgICAgICAgIGEgPSBhLnN1
YnN0cmluZyhjaHVua2EubGVuZ3RoKTsKKyAgICAgICAgICAgIGIgPSBiLnN1YnN0cmluZyhjaHVu
a2IubGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGlmZjsKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCBvYmplY3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX29iamVjdDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRy
ZWVPdXRsaW5lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vdXRsaW5lOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGV4cGFuZGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9leHBhbmRlZDsKLSAgICB9LAorICAgIH0KIAogICAgIGV4cGFuZCgpCiAgICAgewpAQCAtMTc2
LDcgKzE3MCw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX3RyYWNrV2Vha0VudHJpZXMoKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZSgp
OwotICAgIH0sCisgICAgfQogCiAgICAgY29sbGFwc2UoKQogICAgIHsKQEAgLTE5MCwxNCArMTg0
LDE0IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9wcmV2aWV3Vmlldy5zaG93UHJldmlldygpOwogCiAgICAgICAgIHRoaXMuX3Vu
dHJhY2tXZWFrRW50cmllcygpOwotICAgIH0sCisgICAgfQogCiAgICAgc2hvd09ubHlQcm9wZXJ0
aWVzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2luQ29uc29sZSA9IGZhbHNlOwogCiAgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgicHJvcGVydGllcy1vbmx5Iik7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBhcHBlbmRUaXRsZVN1ZmZpeChzdWZmaXhFbGVtZW50KQogICAgIHsKQEAg
LTIwNSw3ICsxOTksNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fcHJldmlld1ZpZXcuZWxlbWVudC5hcHBlbmRDaGlsZChzdWZm
aXhFbGVtZW50KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fdGl0bGVFbGVtZW50
LmFwcGVuZENoaWxkKHN1ZmZpeEVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCiAgICAgYXBwZW5k
RXh0cmFQcm9wZXJ0eURlc2NyaXB0b3IocHJvcGVydHlEZXNjcmlwdG9yKQogICAgIHsKQEAgLTIx
Myw3ICsyMDcsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5fZXh0cmFQcm9wZXJ0aWVzID0gW107CiAKICAgICAgICAgdGhpcy5f
ZXh0cmFQcm9wZXJ0aWVzLnB1c2gocHJvcGVydHlEZXNjcmlwdG9yKTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByb3RlY3RlZAogCkBAIC0yMjMsNyArMjE3LDcgQEAgV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX29iamVjdC5nZXRD
b2xsZWN0aW9uRW50cmllcygwLCAxMDAsIHRoaXMuX3VwZGF0ZUNoaWxkcmVuLmJpbmQodGhpcywg
dGhpcy5fdXBkYXRlRW50cmllcykpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9v
YmplY3QuZ2V0RGlzcGxheWFibGVQcm9wZXJ0eURlc2NyaXB0b3JzKHRoaXMuX3VwZGF0ZUNoaWxk
cmVuLmJpbmQodGhpcywgdGhpcy5fdXBkYXRlUHJvcGVydGllcykpOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQogCkBAIC0yMzIsMTMgKzIyNiwxMyBAQCBXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9vdXRsaW5lLnJlbW92ZUNo
aWxkcmVuKCk7CiAKICAgICAgICAgaWYgKCFsaXN0KSB7Ci0gICAgICAgICAgICB2YXIgZXJyb3JN
ZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VF
bGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ291bGQgbm90IGZldGNoIHByb3BlcnRpZXMu
IE9iamVjdCBtYXkgbm8gbG9uZ2VyIGV4aXN0LiIpKTsKLSAgICAgICAgICAgIHRoaXMuX291dGxp
bmUuYXBwZW5kQ2hpbGQobmV3IFRyZWVFbGVtZW50KGVycm9yTWVzc2FnZUVsZW1lbnQsIG51bGws
IGZhbHNlKSk7CisgICAgICAgICAgICB2YXIgZXJyb3JNZXNzYWdlRWxlbWVudCA9IFdlYkluc3Bl
Y3Rvci5PYmplY3RUcmVlVmlldy5jcmVhdGVFbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiQ291bGQgbm90IGZldGNoIHByb3BlcnRpZXMuIE9iamVjdCBtYXkgbm8gbG9u
Z2VyIGV4aXN0LiIpKTsKKyAgICAgICAgICAgIHRoaXMuX291dGxpbmUuYXBwZW5kQ2hpbGQobmV3
IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChlcnJvck1lc3NhZ2VFbGVtZW50LCBudWxsLCBmYWxz
ZSkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaGFuZGxlci5j
YWxsKHRoaXMsIGxpc3QsIHRoaXMuX3Byb3BlcnR5UGF0aCk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBfdXBkYXRlRW50cmllcyhlbnRyaWVzLCBwcm9wZXJ0eVBhdGgpCiAgICAgewpAQCAtMjUxLDgg
KzI0NSw4IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoIXRoaXMuX291dGxpbmUuY2hpbGRyZW4ubGVuZ3RoKSB7Ci0g
ICAgICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RU
cmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gRW50
cmllcy4iKSk7Ci0gICAgICAgICAgICB0aGlzLl9vdXRsaW5lLmFwcGVuZENoaWxkKG5ldyBUcmVl
RWxlbWVudChlbXB0eU1lc3NhZ2VFbGVtZW50LCBudWxsLCBmYWxzZSkpOworICAgICAgICAgICAg
dmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY3Jl
YXRlRW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIEVudHJpZXMu
IikpOworICAgICAgICAgICAgdGhpcy5fb3V0bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVj
dG9yLlRyZWVFbGVtZW50KGVtcHR5TWVzc2FnZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBTaG93IHRoZSBwcm90b3R5cGUgc28gdXNlcnMgY2FuIHNlZSB0
aGUgQVBJLgpAQCAtMjYwLDE0ICsyNTQsMTQgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChwcm9wZXJ0eURlc2NyaXB0b3IpCiAgICAg
ICAgICAgICAgICAgdGhpcy5fb3V0bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50KHByb3BlcnR5RGVzY3JpcHRvciwgcHJvcGVydHlQ
YXRoLCB0aGlzLl9tb2RlKSk7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBfdXBkYXRlUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBwcm9wZXJ0eVBhdGgpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fZXh0cmFQcm9wZXJ0aWVzKQogICAgICAgICAgICAgcHJvcGVy
dGllcyA9IHByb3BlcnRpZXMuY29uY2F0KHRoaXMuX2V4dHJhUHJvcGVydGllcyk7CiAKLSAgICAg
ICAgcHJvcGVydGllcy5zb3J0KFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5Db21wYXJlUHJv
cGVydHlEZXNjcmlwdG9ycyk7CisgICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3Iu
T2JqZWN0VHJlZVZpZXcuY29tcGFyZVByb3BlcnR5RGVzY3JpcHRvcnMpOwogCiAgICAgICAgIHZh
ciBpc0FycmF5ID0gdGhpcy5fb2JqZWN0LmlzQXJyYXkoKTsKICAgICAgICAgdmFyIGlzUHJvcGVy
dHlNb2RlID0gdGhpcy5fbW9kZSA9PT0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUu
UHJvcGVydGllczsKQEAgLTI4MywxMCArMjc3LDEwIEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXRoaXMuX291dGxp
bmUuY2hpbGRyZW4ubGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVu
dCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiTm8gUHJvcGVydGllcy4iKSk7Ci0gICAgICAgICAgICB0aGlzLl9v
dXRsaW5lLmFwcGVuZENoaWxkKG5ldyBUcmVlRWxlbWVudChlbXB0eU1lc3NhZ2VFbGVtZW50LCBu
dWxsLCBmYWxzZSkpOworICAgICAgICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQgPSBXZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY3JlYXRlRW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5vIFByb3BlcnRpZXMuIikpOworICAgICAgICAgICAgdGhpcy5fb3V0
bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KGVtcHR5TWVzc2Fn
ZUVsZW1lbnQsIG51bGwsIGZhbHNlKSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAg
IF9oYW5kbGVQcmV2aWV3T3JUaXRsZUVsZW1lbnRDbGljayhldmVudCkKICAgICB7CkBAIC0yOTks
NyArMjkzLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuY29sbGFwc2UoKTsKIAogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRp
b24oKTsKLSAgICB9LAorICAgIH0KIAogICAgIF90cmFja1dlYWtFbnRyaWVzKCkKICAgICB7CkBA
IC0zMTYsNyArMzEwLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuQWN0aXZlTG9nQ2xlYXJlZCwgdGhpcy5fdW50
cmFja1dlYWtFbnRyaWVzLCB0aGlzKTsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5sb2dNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuU2Vzc2lv
blN0YXJ0ZWQsIHRoaXMuX3VudHJhY2tXZWFrRW50cmllcywgdGhpcyk7CiAgICAgICAgIH0KLSAg
ICB9LAorICAgIH0KIAogICAgIF91bnRyYWNrV2Vha0VudHJpZXMoKQogICAgIHsKQEAgLTMzOSw1
ICszMzMsMTAgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgb25seSB0cmllcyB0byByZWxlYXNlIHdlYWsgZW50cmllcyBp
ZiB0aGlzIG9iamVjdCB3YXMgYSBXZWFrTWFwLgogICAgICAgICAvLyBJZiB0aGVyZSB3YXMgYSBX
ZWFrTWFwIGV4cGFuZGVkIGluIGEgc3ViLW9iamVjdCwgd2Ugd2lsbCBuZXZlciByZWxlYXNlIHRo
b3NlIHZhbHVlcy4KICAgICAgICAgLy8gU2hvdWxkIHdlIGF0dGVtcHQgd2Fsa2luZyB0aGUgZW50
aXJlIHRyZWUgYW5kIHJlbGVhc2Ugd2VhayBjb2xsZWN0aW9ucz8KLSAgICB9LAorICAgIH0KK307
CisKK1dlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5Nb2RlID0geworICAgIFByb3BlcnRpZXM6
IFN5bWJvbCgib2JqZWN0LXRyZWUtcHJvcGVydGllcyIpLAorICAgIEFQSTogU3ltYm9sKCJvYmpl
Y3QtdHJlZS1hcGkiKSwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzCmluZGV4
IGJkODBlZDIuLjcyY2U3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
Myw3MiArMjMsNjggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcgPSBmdW5jdGlvbihyZWNvcmRpbmcp
CitXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcgPSBjbGFzcyBPdmVydmlld1RpbWVs
aW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVWaWV3LmNhbGwodGhpcywgcmVjb3JkaW5nKTsKLQotICAgIHRoaXMubmF2
aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50U2Vs
ZWN0ZWQuYmluZCh0aGlzKTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUu
b25kZXNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50RGVzZWxlY3RlZC5iaW5kKHRoaXMpOwotCi0g
ICAgdGhpcy5fcmVjb3JkaW5nID0gcmVjb3JkaW5nOworICAgIGNvbnN0cnVjdG9yKHJlY29yZGlu
ZykKKyAgICB7CisgICAgICAgIHN1cGVyKHJlY29yZGluZyk7CiAKLSAgICB2YXIgY29sdW1ucyA9
IHsiZ3JhcGgiOiB7d2lkdGg6ICIxMDAlIn19OworICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRl
YmFyVHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQo
dGhpcyk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5vbmRlc2Vs
ZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnREZXNlbGVjdGVkLmJpbmQodGhpcyk7CiAKLSAgICB0aGlz
Ll9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucyk7Ci0gICAgdGhp
cy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQu
U2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fZGF0YUdyaWROb2RlU2VsZWN0ZWQsIHRoaXMpOwot
ICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibm8taGVhZGVyIik7Cisg
ICAgICAgIHRoaXMuX3JlY29yZGluZyA9IHJlY29yZGluZzsKIAotICAgIHRoaXMuX3RyZWVPdXRs
aW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0
YUdyaWRTeW5jaHJvbml6ZXIodGhpcy5fY29udGVudFRyZWVPdXRsaW5lLCB0aGlzLl9kYXRhR3Jp
ZCk7CisgICAgICAgIHZhciBjb2x1bW5zID0geyJncmFwaCI6IHt3aWR0aDogIjEwMCUifX07CiAK
LSAgICB0aGlzLl90aW1lbGluZVJ1bGVyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVy
OwotICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWxsb3dzQ2xpcHBlZExhYmVscyA9IHRydWU7Ci0g
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RpbWVsaW5lUnVsZXIuZWxlbWVudCk7
CisgICAgICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1
bW5zKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRGF0YUdyaWQuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fZGF0YUdyaWROb2Rl
U2VsZWN0ZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoIm5vLWhlYWRlciIpOwogCi0gICAgdGhpcy5fY3VycmVudFRpbWVNYXJrZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyKDAsIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hcmtl
ci5UeXBlLkN1cnJlbnRUaW1lKTsKLSAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmFkZE1hcmtlcih0
aGlzLl9jdXJyZW50VGltZU1hcmtlcik7CisgICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdy
aWRTeW5jaHJvbml6ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5j
aHJvbml6ZXIodGhpcy5fY29udGVudFRyZWVPdXRsaW5lLCB0aGlzLl9kYXRhR3JpZCk7CiAKLSAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGlu
ZVZpZXcuU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlcjsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5h
bGxvd3NDbGlwcGVkTGFiZWxzID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX3RpbWVsaW5lUnVsZXIuZWxlbWVudCk7CiAKLSAgICB0aGlzLl9uZXR3b3JrVGlt
ZWxpbmUgPSByZWNvcmRpbmcudGltZWxpbmVzLmdldChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmQuVHlwZS5OZXR3b3JrKTsKLSAgICB0aGlzLl9uZXR3b3JrVGltZWxpbmUuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25ldHdv
cmtUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fY3VycmVudFRpbWVN
YXJrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyKDAsIFdlYkluc3BlY3Rvci5U
aW1lbGluZU1hcmtlci5UeXBlLkN1cnJlbnRUaW1lKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVS
dWxlci5hZGRNYXJrZXIodGhpcy5fY3VycmVudFRpbWVNYXJrZXIpOwogCi0gICAgcmVjb3JkaW5n
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlNv
dXJjZUNvZGVUaW1lbGluZUFkZGVkLCB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmVBZGRlZCwgdGhp
cyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJvdmVydmlldyIpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAK
LSAgICB0aGlzLl9wZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzID0gW107Ci19OworICAgICAgICB0
aGlzLl9uZXR3b3JrVGltZWxpbmUgPSByZWNvcmRpbmcudGltZWxpbmVzLmdldChXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3JrKTsKKyAgICAgICAgdGhpcy5fbmV0d29ya1Rp
bWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29y
ZEFkZGVkLCB0aGlzLl9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKLVdlYklu
c3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5TdHlsZUNsYXNzTmFtZSA9ICJvdmVydmlldyI7
CisgICAgICAgIHJlY29yZGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZGluZy5FdmVudC5Tb3VyY2VDb2RlVGltZWxpbmVBZGRlZCwgdGhpcy5fc291cmNlQ29k
ZVRpbWVsaW5lQWRkZWQsIHRoaXMpOwogCi1XZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZp
ZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdU
aW1lbGluZVZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnBy
b3RvdHlwZSwKKyAgICAgICAgdGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cyA9IFtdOwor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25TaWRlYmFyVHJlZU91
dGxpbmVMYWJlbCgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJUaW1lbGluZSBFdmVudHMiKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWNvbmRzUGVy
UGl4ZWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lUnVsZXIuc2Vjb25k
c1BlclBpeGVsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlY29uZHNQZXJQaXhlbCh4KQog
ICAgIHsKICAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5zZWNvbmRzUGVyUGl4ZWwgPSB4Owot
ICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAg
ewogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLnNob3duLmNhbGwo
dGhpcyk7CiAKICAgICAgICAgdGhpcy5fdHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5z
eW5jaHJvbml6ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlv
bigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5UaW1l
bGluZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dC5jYWxsKHRoaXMpOwogCkBAIC0xMTUsNyAr
MTExLDcgQEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci51cGRhdGVMYXlvdXQoKTsKIAogICAgICAgICB0
aGlzLl9wcm9jZXNzUGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cygpOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CkBAIC0xNDEsMjEgKzEz
NywyMSBAQCBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHBhdGhDb21wb25lbnRzOwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICB0cmVlRWxlbWVudFBhdGhDb21wb25lbnRTZWxl
Y3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fdHJlZU91
dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5kYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudChldmVu
dC5kYXRhLnBhdGhDb21wb25lbnQuZ2VuZXJhbFRyZWVFbGVtZW50KTsKICAgICAgICAgaWYgKCFk
YXRhR3JpZE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRhdGFHcmlkTm9kZS5y
ZXZlYWxBbmRTZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF9jb21wYXJlVHJlZUVsZW1lbnRzQnlEZXRhaWxzOiBmdW5jdGlvbihhLCBiKQorICAgIF9jb21w
YXJlVHJlZUVsZW1lbnRzQnlEZXRhaWxzKGEsIGIpCiAgICAgewogICAgICAgICBpZiAoYSBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudCAmJiBiIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICBy
ZXR1cm4gLTE7CkBAIC0xODUsOSArMTgxLDkgQEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxp
bmVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBGYWxsYmFjayB0byBjb21wYXJpbmcg
Ynkgc3RhcnQgdGltZSBmb3IgUmVzb3VyY2VUcmVlRWxlbWVudCBvciBhbnl0aGluZyBlbHNlLgog
ICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZVRyZWVFbGVtZW50c0J5U3RhcnRUaW1lKGEsIGIp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbXBhcmVUcmVlRWxlbWVudHNCeVN0YXJ0VGltZTog
ZnVuY3Rpb24oYSwgYikKKyAgICBfY29tcGFyZVRyZWVFbGVtZW50c0J5U3RhcnRUaW1lKGEsIGIp
CiAgICAgewogICAgICAgICBmdW5jdGlvbiBnZXRTdGFydFRpbWUodHJlZUVsZW1lbnQpCiAgICAg
ICAgIHsKQEAgLTIwNiwxOCArMjAyLDE4IEBAIFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5l
Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gRmFsbGJhY2sgdG8gY29tcGFyaW5nIHRp
dGxlcy4KICAgICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmxvY2FsZUNvbXBhcmUoYi5tYWluVGl0
bGUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2luc2VydFRyZWVFbGVtZW50OiBmdW5jdGlvbih0
cmVlRWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQpCisgICAgX2luc2VydFRyZWVFbGVtZW50KHRy
ZWVFbGVtZW50LCBwYXJlbnRUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRyZWVFbGVtZW50KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRyZWVFbGVtZW50LnBh
cmVudCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudFRyZWVFbGVtZW50KTsKIAogICAg
ICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZCh0cmVlRWxlbWVudCwgaW5zZXJ0aW9u
SW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKHRyZWVFbGVtZW50LCBwYXJlbnRU
cmVlRWxlbWVudC5jaGlsZHJlbiwgdGhpcy5fY29tcGFyZVRyZWVFbGVtZW50c0J5U3RhcnRUaW1l
LmJpbmQodGhpcykpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRSZXNvdXJjZVRvVHJlZUlm
TmVlZGVkOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBfYWRkUmVzb3VyY2VUb1RyZWVJZk5lZWRl
ZChyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKICAg
ICAgICAgaWYgKCFyZXNvdXJjZSkKQEAgLTI2Miw5ICsyNTgsOSBAQCBXZWJJbnNwZWN0b3IuT3Zl
cnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pbnNlcnRUcmVl
RWxlbWVudChyZXNvdXJjZVRyZWVFbGVtZW50LCBwYXJlbnRUcmVlRWxlbWVudCk7CiAKICAgICAg
ICAgcmV0dXJuIHJlc291cmNlVHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWRk
U291cmNlQ29kZVRpbWVsaW5lOiBmdW5jdGlvbihzb3VyY2VDb2RlVGltZWxpbmUpCisgICAgX2Fk
ZFNvdXJjZUNvZGVUaW1lbGluZShzb3VyY2VDb2RlVGltZWxpbmUpCiAgICAgewogICAgICAgICB2
YXIgcGFyZW50VHJlZUVsZW1lbnQgPSBzb3VyY2VDb2RlVGltZWxpbmUuc291cmNlQ29kZUxvY2F0
aW9uID8gdGhpcy5fYWRkUmVzb3VyY2VUb1RyZWVJZk5lZWRlZChzb3VyY2VDb2RlVGltZWxpbmUu
c291cmNlQ29kZSkgOiB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmU7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHBhcmVudFRyZWVFbGVtZW50KTsKQEAgLTI3Niw5ICsyNzIsOSBAQCBX
ZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAg
IHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuYXNzb2NpYXRlKHNvdXJjZUNv
ZGVUaW1lbGluZVRyZWVFbGVtZW50LCBzb3VyY2VDb2RlVGltZWxpbmVEYXRhR3JpZE5vZGUpOwog
ICAgICAgICB0aGlzLl9pbnNlcnRUcmVlRWxlbWVudChzb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxl
bWVudCwgcGFyZW50VHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Byb2Nlc3NQ
ZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzOiBmdW5jdGlvbigpCisgICAgX3Byb2Nlc3NQZW5kaW5n
UmVwcmVzZW50ZWRPYmplY3RzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1Jl
cHJlc2VudGVkT2JqZWN0cyB8fCAhdGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cy5sZW5n
dGgpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTMsOSArMjg5LDkgQEAgV2ViSW5zcGVjdG9y
Lk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuX3BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMgPSBbXTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX25l
dHdvcmtUaW1lbGluZVJlY29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHJlc291
cmNlVGltZWxpbmVSZWNvcmQgPSBldmVudC5kYXRhLnJlY29yZDsKICAgICAgICAgY29uc29sZS5h
c3NlcnQocmVzb3VyY2VUaW1lbGluZVJlY29yZCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRpbWVsaW5lUmVjb3JkKTsKQEAgLTMwNiw5ICszMDIsOSBAQCBXZWJJbnNwZWN0b3IuT3Zl
cnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFdlIGRvbid0IGV4
cGVjdCB0byBoYXZlIGFueSBzb3VyY2UgY29kZSB0aW1lbGluZXMgeWV0LiBUaG9zZSBzaG91bGQg
YmUgYWRkZWQgd2l0aCBfc291cmNlQ29kZVRpbWVsaW5lQWRkZWQuCiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF0aGlzLl9yZWNvcmRpbmcuc291cmNlQ29kZVRpbWVsaW5lc0ZvclNvdXJjZUNvZGUo
cmVzb3VyY2VUaW1lbGluZVJlY29yZC5yZXNvdXJjZSkubGVuZ3RoKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9zb3VyY2VDb2RlVGltZWxpbmVBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Nv
dXJjZUNvZGVUaW1lbGluZUFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNvdXJjZUNv
ZGVUaW1lbGluZSA9IGV2ZW50LmRhdGEuc291cmNlQ29kZVRpbWVsaW5lOwogICAgICAgICBjb25z
b2xlLmFzc2VydChzb3VyY2VDb2RlVGltZWxpbmUpOwpAQCAtMzE4LDIwICszMTQsMjAgQEAgV2Vi
SW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cy5wdXNoKHNvdXJjZUNvZGVUaW1lbGluZSk7CiAK
ICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFH
cmlkTm9kZVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2RlU2VsZWN0
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRD
aGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50RGVzZWxlY3RlZDogZnVu
Y3Rpb24odHJlZUVsZW1lbnQpCisgICAgX3RyZWVFbGVtZW50RGVzZWxlY3RlZCh0cmVlRWxlbWVu
dCkKICAgICB7CiAgICAgICAgIGlmICh0cmVlRWxlbWVudC5zdGF0dXMpCiAgICAgICAgICAgICB0
cmVlRWxlbWVudC5zdGF0dXMgPSAiIjsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVu
dFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAgX3Ry
ZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsKICAg
ICAgICAgaWYgKCFXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFyUGFuZWwuY2FuU2hvd0RpZmZl
cmVudENvbnRlbnRWaWV3KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTgsOSArMzU0LDkg
QEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd09yaWdpbmFsT3JGb3Jt
YXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24odHJlZUVsZW1lbnQuc291cmNlQ29kZVRpbWVsaW5lLnNv
dXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRyZWVFbGVtZW50V2l0aENs
b3NlQnV0dG9uKHRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVUcmVl
RWxlbWVudFdpdGhDbG9zZUJ1dHRvbjogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgX3VwZGF0
ZVRyZWVFbGVtZW50V2l0aENsb3NlQnV0dG9uKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAg
aWYgKHRoaXMuX2Nsb3NlU3RhdHVzQnV0dG9uKSB7CiAgICAgICAgICAgICB0cmVlRWxlbWVudC5z
dGF0dXMgPSB0aGlzLl9jbG9zZVN0YXR1c0J1dHRvbi5lbGVtZW50OwpAQCAtMzczLDkgKzM2OSw5
IEBAIFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBpZiAodHJlZUVsZW1lbnQgPT09IHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0
bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQogICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVRy
ZWVFbGVtZW50V2l0aENsb3NlQnV0dG9uKHRyZWVFbGVtZW50KTsKICAgICAgICAgfS5iaW5kKHRo
aXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jbG9zZVN0YXR1c0J1dHRvbkNsaWNrZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9jbG9zZVN0YXR1c0J1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVl
RWxlbWVudC5kZXNlbGVjdCgpOwogICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFy
UGFuZWwuc2hvd1RpbWVsaW5lT3ZlcnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1BvcG92ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qb3BvdmVyLmpzCmluZGV4IGY2ZDk5YzUuLmM1ODdi
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1BvcG92ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUG9wb3Zlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsNjAgKzIzLDQ4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlBvcG92ZXIgPSBmdW5jdGlvbihkZWxlZ2F0
ZSkgewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKLQotICAgIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICB0aGlzLl9l
ZGdlID0gbnVsbDsKLSAgICB0aGlzLl9mcmFtZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVjdDsKLSAg
ICB0aGlzLl9jb250ZW50ID0gbnVsbDsKLSAgICB0aGlzLl90YXJnZXRGcmFtZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuUmVjdDsKLSAgICB0aGlzLl9hbmNob3JQb2ludCA9IG5ldyBXZWJJbnNwZWN0b3Iu
UG9pbnQ7Ci0gICAgdGhpcy5fcHJlZmVycmVkRWRnZXMgPSBudWxsOworV2ViSW5zcGVjdG9yLlBv
cG92ZXIgPSBjbGFzcyBQb3BvdmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAg
IGNvbnN0cnVjdG9yKGRlbGVnYXRlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRo
aXMuX2NvbnRlbnROZWVkc1VwZGF0ZSA9IGZhbHNlOworICAgICAgICB0aGlzLmRlbGVnYXRlID0g
ZGVsZWdhdGU7CisgICAgICAgIHRoaXMuX2VkZ2UgPSBudWxsOworICAgICAgICB0aGlzLl9mcmFt
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVjdDsKKyAgICAgICAgdGhpcy5fY29udGVudCA9IG51bGw7
CisgICAgICAgIHRoaXMuX3RhcmdldEZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5SZWN0OworICAg
ICAgICB0aGlzLl9hbmNob3JQb2ludCA9IG5ldyBXZWJJbnNwZWN0b3IuUG9pbnQ7CisgICAgICAg
IHRoaXMuX3ByZWZlcnJlZEVkZ2VzID0gbnVsbDsKIAotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5Qb3BvdmVyLlN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2NhbnZhc0lk
ID0gInBvcG92ZXItIiArIChXZWJJbnNwZWN0b3IuUG9wb3Zlci5jYW52YXNJZCsrKTsKLSAgICB0
aGlzLl9lbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICItd2Via2l0LWNhbnZhcygiICsg
dGhpcy5fY2FudmFzSWQgKyAiKSI7Ci0gICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJ0cmFuc2l0aW9uZW5kIiwgdGhpcywgdHJ1ZSk7CisgICAgICAgIHRoaXMuX2NvbnRlbnROZWVk
c1VwZGF0ZSA9IGZhbHNlOwogCi0gICAgdGhpcy5fY29udGFpbmVyID0gdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgdGhpcy5fY29u
dGFpbmVyLmNsYXNzTmFtZSA9ICJjb250YWluZXIiOwotfTsKKyAgICAgICAgdGhpcy5fZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTmFtZSA9ICJwb3BvdmVyIjsKKyAgICAgICAgdGhpcy5fY2FudmFzSWQgPSAicG9wb3Zl
ci0iICsgKFdlYkluc3BlY3Rvci5Qb3BvdmVyLmNhbnZhc0lkKyspOworICAgICAgICB0aGlzLl9l
bGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICItd2Via2l0LWNhbnZhcygiICsgdGhpcy5f
Y2FudmFzSWQgKyAiKSI7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
dHJhbnNpdGlvbmVuZCIsIHRoaXMsIHRydWUpOwogCi1XZWJJbnNwZWN0b3IuUG9wb3Zlci5TdHls
ZUNsYXNzTmFtZSA9ICJwb3BvdmVyIjsKLVdlYkluc3BlY3Rvci5Qb3BvdmVyLkZhZGVPdXRDbGFz
c05hbWUgPSAiZmFkZS1vdXQiOwotV2ViSW5zcGVjdG9yLlBvcG92ZXIuY2FudmFzSWQgPSAwOwot
V2ViSW5zcGVjdG9yLlBvcG92ZXIuQ29ybmVyUmFkaXVzID0gNTsKLVdlYkluc3BlY3Rvci5Qb3Bv
dmVyLk1pbldpZHRoID0gNDA7Ci1XZWJJbnNwZWN0b3IuUG9wb3Zlci5NaW5IZWlnaHQgPSA0MDsK
LVdlYkluc3BlY3Rvci5Qb3BvdmVyLlNoYWRvd1BhZGRpbmcgPSA1OwotV2ViSW5zcGVjdG9yLlBv
cG92ZXIuQ29udGVudFBhZGRpbmcgPSA1OwotV2ViSW5zcGVjdG9yLlBvcG92ZXIuQW5jaG9yU2l6
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuU2l6ZSgyMiwgMTEpOwotV2ViSW5zcGVjdG9yLlBvcG92ZXIu
U2hhZG93RWRnZUluc2V0cyA9IG5ldyBXZWJJbnNwZWN0b3IuRWRnZUluc2V0cyhXZWJJbnNwZWN0
b3IuUG9wb3Zlci5TaGFkb3dQYWRkaW5nKTsKLQotV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUG9wb3ZlciwKKyAgICAgICAg
dGhpcy5fY29udGFpbmVyID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKSk7CisgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jbGFzc05hbWUgPSAi
Y29udGFpbmVyIjsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGZyYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mcmFtZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCB2aXNpYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9lbGVtZW50LnBhcmVudE5vZGUgPT09IGRvY3VtZW50LmJvZHkgJiYgIXRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5Qb3BvdmVyLkZhZGVPdXRDbGFzc05hbWUp
OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGZyYW1lKGZyYW1lKQogICAgIHsKQEAgLTg2LDcg
Kzc0LDcgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9lbGVtZW50LnN0eWxlLmhlaWdodCA9IGZyYW1lLnNpemUuaGVpZ2h0ICsgInB4IjsKICAgICAg
ICAgdGhpcy5fZWxlbWVudC5zdHlsZS5iYWNrZ3JvdW5kU2l6ZSA9IGZyYW1lLnNpemUud2lkdGgg
KyAicHggIiArIGZyYW1lLnNpemUuaGVpZ2h0ICsgInB4IjsKICAgICAgICAgdGhpcy5fZnJhbWUg
PSBmcmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBjb250ZW50KGNvbnRlbnQpCiAgICAg
ewpAQCAtOTksOSArODcsOSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgaWYgKHRoaXMudmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZSh0cnVl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQorICAgIHVwZGF0ZSgp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTExMyw5ICsxMDEsOSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgaWYgKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkKICAgICAgICAgICAgIHByZXZp
b3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpOwotICAgIH0sCisgICAgfQogCi0gICAgcHJlc2Vu
dDogZnVuY3Rpb24odGFyZ2V0RnJhbWUsIHByZWZlcnJlZEVkZ2VzKQorICAgIHByZXNlbnQodGFy
Z2V0RnJhbWUsIHByZWZlcnJlZEVkZ2VzKQogICAgIHsKICAgICAgICAgdGhpcy5fdGFyZ2V0RnJh
bWUgPSB0YXJnZXRGcmFtZTsKICAgICAgICAgdGhpcy5fcHJlZmVycmVkRWRnZXMgPSBwcmVmZXJy
ZWRFZGdlczsKQEAgLTEyNiw5ICsxMTQsOSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX2FkZExpc3RlbmVyc0lmTmVlZGVkKCk7CiAKICAgICAgICAg
dGhpcy5fdXBkYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwcmVzZW50TmV3Q29udGVudFdp
dGhGcmFtZTogZnVuY3Rpb24oY29udGVudCwgdGFyZ2V0RnJhbWUsIHByZWZlcnJlZEVkZ2VzKQor
ICAgIHByZXNlbnROZXdDb250ZW50V2l0aEZyYW1lKGNvbnRlbnQsIHRhcmdldEZyYW1lLCBwcmVm
ZXJyZWRFZGdlcykKICAgICB7CiAgICAgICAgIHRoaXMuX2NvbnRlbnQgPSBjb250ZW50OwogICAg
ICAgICB0aGlzLl9jb250ZW50TmVlZHNVcGRhdGUgPSB0cnVlOwpAQCAtMTQwLDkgKzEyOCw5IEBA
IFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgc2hvdWxk
QW5pbWF0ZSA9IHRoaXMudmlzaWJsZTsKICAgICAgICAgdGhpcy5fdXBkYXRlKHNob3VsZEFuaW1h
dGUpOwotICAgIH0sCisgICAgfQogCi0gICAgZGlzbWlzczogZnVuY3Rpb24oKQorICAgIGRpc21p
c3MoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSAhPT0gZG9j
dW1lbnQuYm9keSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1Niw5ICsxNDQsOSBAQCBXZWJJ
bnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuZGVsZWdh
dGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUud2lsbERpc21pc3NQb3BvdmVyID09PSAiZnVuY3Rp
b24iKQogICAgICAgICAgICAgdGhpcy5kZWxlZ2F0ZS53aWxsRGlzbWlzc1BvcG92ZXIodGhpcyk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAg
aGFuZGxlRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsK
ICAgICAgICAgY2FzZSAibW91c2Vkb3duIjoKQEAgLTE3NiwxMSArMTY0LDExIEBAIFdlYkluc3Bl
Y3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0g
ICAgX3VwZGF0ZTogZnVuY3Rpb24oc2hvdWxkQW5pbWF0ZSkKKyAgICBfdXBkYXRlKHNob3VsZEFu
aW1hdGUpCiAgICAgewogICAgICAgICBpZiAoc2hvdWxkQW5pbWF0ZSkKICAgICAgICAgICAgIHZh
ciBwcmV2aW91c0VkZ2UgPSB0aGlzLl9lZGdlOwpAQCAtMjEyLDcgKzIwMCw3IEBAIFdlYkluc3Bl
Y3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3ByZWZlcnJlZFNp
emUgPSBuZXcgV2ViSW5zcGVjdG9yLlNpemUoTWF0aC5jZWlsKHBvcG92ZXJCb3VuZHMud2lkdGgp
LCBNYXRoLmNlaWwocG9wb3ZlckJvdW5kcy5oZWlnaHQpKTsKICAgICAgICAgfQogCi0gICAgICAg
IGNvbnN0IHRpdGxlQmFyT2Zmc2V0ID0gV2ViSW5zcGVjdG9yLlBsYXRmb3JtLm5hbWUgPT09ICJt
YWMiICYmICFXZWJJbnNwZWN0b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUyA/IDIyIDogMDsKKyAg
ICAgICAgdmFyIHRpdGxlQmFyT2Zmc2V0ID0gV2ViSW5zcGVjdG9yLlBsYXRmb3JtLm5hbWUgPT09
ICJtYWMiICYmICFXZWJJbnNwZWN0b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUyA/IDIyIDogMDsK
ICAgICAgICAgdmFyIGNvbnRhaW5lckZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5SZWN0KDAsIHRp
dGxlQmFyT2Zmc2V0LCB3aW5kb3cuaW5uZXJXaWR0aCwgd2luZG93LmlubmVySGVpZ2h0IC0gdGl0
bGVCYXJPZmZzZXQpOwogICAgICAgICAvLyBUaGUgZnJhbWUgb2YgdGhlIHdpbmRvdyB3aXRoIGEg
bGl0dGxlIGluc2V0IHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHJvb20gZm9yIHNoYWRvd3MuCiAgICAg
ICAgIGNvbnRhaW5lckZyYW1lID0gY29udGFpbmVyRnJhbWUuaW5zZXQoV2ViSW5zcGVjdG9yLlBv
cG92ZXIuU2hhZG93RWRnZUluc2V0cyk7CkBAIC0yOTcsOSArMjg1LDkgQEAgV2ViSW5zcGVjdG9y
LlBvcG92ZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fY29udGVu
dE5lZWRzVXBkYXRlID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY3NzQ2xhc3NOYW1l
Rm9yRWRnZTogZnVuY3Rpb24oKQorICAgIF9jc3NDbGFzc05hbWVGb3JFZGdlKCkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAodGhpcy5fZWRnZSkgewogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5S
ZWN0RWRnZS5NSU5fWDogLy8gRGlzcGxheWVkIG9uIHRoZSBsZWZ0IG9mIHRoZSB0YXJnZXQsIGFy
cm93IHBvaW50cyByaWdodC4KQEAgLTMxMywxNSArMzAxLDE1IEBAIFdlYkluc3BlY3Rvci5Qb3Bv
dmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtu
b3duIGVkZ2UuIik7CiAgICAgICAgIHJldHVybiAiYXJyb3ctdXAiOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3NldEFuY2hvclBvaW50OiBmdW5jdGlvbihhbmNob3JQb2ludCkgeworICAgIF9zZXRB
bmNob3JQb2ludChhbmNob3JQb2ludCkgewogICAgICAgICBhbmNob3JQb2ludC54ID0gTWF0aC5m
bG9vcihhbmNob3JQb2ludC54KTsKICAgICAgICAgYW5jaG9yUG9pbnQueSA9IE1hdGguZmxvb3Io
YW5jaG9yUG9pbnQueSk7CiAgICAgICAgIHRoaXMuX2FuY2hvclBvaW50ID0gYW5jaG9yUG9pbnQ7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYW5pbWF0ZUZyYW1lOiBmdW5jdGlvbih0b0ZyYW1lLCB0
b0FuY2hvcikKKyAgICBfYW5pbWF0ZUZyYW1lKHRvRnJhbWUsIHRvQW5jaG9yKQogICAgIHsKICAg
ICAgICAgdmFyIHN0YXJ0VGltZSA9IERhdGUubm93KCk7CiAgICAgICAgIHZhciBkdXJhdGlvbiA9
IDM1MDsKQEAgLTM1OSw5ICszNDcsOSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICBkcmF3QmFja2dyb3VuZC5jYWxsKHRoaXMpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2RyYXdCYWNrZ3JvdW5kOiBmdW5jdGlvbigpCisgICAgX2RyYXdC
YWNrZ3JvdW5kKCkKICAgICB7CiAgICAgICAgIHZhciBzY2FsZUZhY3RvciA9IHdpbmRvdy5kZXZp
Y2VQaXhlbFJhdGlvOwogCkBAIC00MjksOSArNDE3LDkgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIu
cHJvdG90eXBlID0gewogICAgICAgICBmaW5hbENvbnRleHQuc2hhZG93Q29sb3IgPSAicmdiYSgw
LCAwLCAwLCAwLjUpIjsKIAogICAgICAgICBmaW5hbENvbnRleHQuZHJhd0ltYWdlKHNjcmF0Y2hD
YW52YXMsIDAsIDAsIHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2Jlc3RNZXRyaWNzRm9yRWRnZTogZnVuY3Rpb24ocHJlZmVycmVkU2l6ZSwgdGFyZ2V0
RnJhbWUsIGNvbnRhaW5lckZyYW1lLCBlZGdlKQorICAgIF9iZXN0TWV0cmljc0ZvckVkZ2UocHJl
ZmVycmVkU2l6ZSwgdGFyZ2V0RnJhbWUsIGNvbnRhaW5lckZyYW1lLCBlZGdlKQogICAgIHsKICAg
ICAgICAgdmFyIHgsIHk7CiAgICAgICAgIHZhciB3aWR0aCA9IHByZWZlcnJlZFNpemUud2lkdGgg
KyAoV2ViSW5zcGVjdG9yLlBvcG92ZXIuU2hhZG93UGFkZGluZyAqIDIpICsgKFdlYkluc3BlY3Rv
ci5Qb3BvdmVyLkNvbnRlbnRQYWRkaW5nICogMik7CkBAIC00OTQsOSArNDgyLDkgQEAgV2ViSW5z
cGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgZnJhbWU6IGJlc3RGcmFt
ZSwKICAgICAgICAgICAgIGNvbnRlbnRTaXplOiBuZXcgV2ViSW5zcGVjdG9yLlNpemUod2lkdGgs
IGhlaWdodCkKICAgICAgICAgfTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kcmF3RnJhbWU6IGZ1
bmN0aW9uKGN0eCwgYm91bmRzLCBhbmNob3JFZGdlKQorICAgIF9kcmF3RnJhbWUoY3R4LCBib3Vu
ZHMsIGFuY2hvckVkZ2UpCiAgICAgewogICAgICAgICB2YXIgciA9IFdlYkluc3BlY3Rvci5Qb3Bv
dmVyLkNvcm5lclJhZGl1czsKICAgICAgICAgdmFyIGFycm93SGFsZkxlbmd0aCA9IFdlYkluc3Bl
Y3Rvci5Qb3BvdmVyLkFuY2hvclNpemUud2lkdGggLyAyOwpAQCAtNTQ2LDkgKzUzNCw5IEBAIFdl
Ykluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9h
ZGRMaXN0ZW5lcnNJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIF9hZGRMaXN0ZW5lcnNJZk5lZWRl
ZCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2lzTGlzdGVuaW5nRm9yUG9wb3ZlckV2ZW50
cykgewogICAgICAgICAgICAgdGhpcy5faXNMaXN0ZW5pbmdGb3JQb3BvdmVyRXZlbnRzID0gdHJ1
ZTsKQEAgLTU1OCw0ICs1NDYsMTIgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0g
ewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Qb3BvdmVyLkZh
ZGVPdXRDbGFzc05hbWUgPSAiZmFkZS1vdXQiOworV2ViSW5zcGVjdG9yLlBvcG92ZXIuY2FudmFz
SWQgPSAwOworV2ViSW5zcGVjdG9yLlBvcG92ZXIuQ29ybmVyUmFkaXVzID0gNTsKK1dlYkluc3Bl
Y3Rvci5Qb3BvdmVyLk1pbldpZHRoID0gNDA7CitXZWJJbnNwZWN0b3IuUG9wb3Zlci5NaW5IZWln
aHQgPSA0MDsKK1dlYkluc3BlY3Rvci5Qb3BvdmVyLlNoYWRvd1BhZGRpbmcgPSA1OworV2ViSW5z
cGVjdG9yLlBvcG92ZXIuQ29udGVudFBhZGRpbmcgPSA1OworV2ViSW5zcGVjdG9yLlBvcG92ZXIu
QW5jaG9yU2l6ZSA9IG5ldyBXZWJJbnNwZWN0b3IuU2l6ZSgyMiwgMTEpOworV2ViSW5zcGVjdG9y
LlBvcG92ZXIuU2hhZG93RWRnZUluc2V0cyA9IG5ldyBXZWJJbnNwZWN0b3IuRWRnZUluc2V0cyhX
ZWJJbnNwZWN0b3IuUG9wb3Zlci5TaGFkb3dQYWRkaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGViYXJQYW5l
bC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0
YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCA5ZGQ2OTUyLi5hZTc0YmUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZURldGFpbHNTaWRl
YmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0xLDYgKzEsNiBAQAogLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNCwzMyArMjQsMjkg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlByb2JlRGV0YWlsc1NpZGVi
YXJQYW5lbCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5Qcm9iZURldGFpbHNTaWRlYmFyUGFu
ZWwgPSBjbGFzcyBQcm9iZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NpZGViYXJQYW5lbAogewotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBh
bmVsLmNhbGwodGhpcywgInByb2JlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9iZXMiKSwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9iZXMiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVBy
b2Jlcy5zdmciLCAiNiIpOwotCi0gICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRBZGRlZCwg
dGhpcy5fcHJvYmVTZXRBZGRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVT
ZXRSZW1vdmVkLCB0aGlzLl9wcm9iZVNldFJlbW92ZWQsIHRoaXMpOworICAgIGNvbnN0cnVjdG9y
KCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJwcm9iZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UHJvYmVzIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJvYmVzIiksICJJbWFnZXMvTmF2aWdh
dGlvbkl0ZW1Qcm9iZXMuc3ZnIiwgIjYiKTsKIAotICAgIHRoaXMuX3Byb2JlU2V0U2VjdGlvbnMg
PSBuZXcgTWFwOwotICAgIHRoaXMuX2luc3BlY3RlZFByb2JlU2V0cyA9IFtdOworICAgICAgICBX
ZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlBy
b2JlTWFuYWdlci5FdmVudC5Qcm9iZVNldEFkZGVkLCB0aGlzLl9wcm9iZVNldEFkZGVkLCB0aGlz
KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRSZW1vdmVkLCB0aGlzLl9wcm9i
ZVNldFJlbW92ZWQsIHRoaXMpOwogCi0gICAgLy8gSW5pdGlhbGl6ZSBzaWRlYmFyIHNlY3Rpb25z
IGZvciBwcm9iZSBzZXRzIHRoYXQgYWxyZWFkeSBleGlzdC4KLSAgICBmb3IgKHZhciBwcm9iZVNl
dCBvZiBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLnByb2JlU2V0cykKLSAgICAgICAgdGhpcy5f
cHJvYmVTZXRBZGRlZChwcm9iZVNldCk7Ci19OworICAgICAgICB0aGlzLl9wcm9iZVNldFNlY3Rp
b25zID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5faW5zcGVjdGVkUHJvYmVTZXRzID0gW107CiAK
LVdlYkluc3BlY3Rvci5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHls
ZUNsYXNzTmFtZSAgPSAib2Zmc2V0LXNlY3Rpb25zIjsKLQotV2ViSW5zcGVjdG9yLlByb2JlRGV0
YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUsCisgICAgICAgIC8vIEluaXRpYWxpemUg
c2lkZWJhciBzZWN0aW9ucyBmb3IgcHJvYmUgc2V0cyB0aGF0IGFscmVhZHkgZXhpc3QuCisgICAg
ICAgIGZvciAodmFyIHByb2JlU2V0IG9mIFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIucHJvYmVT
ZXRzKQorICAgICAgICAgICAgdGhpcy5fcHJvYmVTZXRBZGRlZChwcm9iZVNldCk7CisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgaW5zcGVjdGVkUHJvYmVTZXRzKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9pbnNwZWN0ZWRQcm9iZVNldHMuc2xpY2UoKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIHNldCBpbnNwZWN0ZWRQcm9iZVNldHMobmV3UHJvYmVTZXRzKQogICAgIHsK
QEAgLTY1LDkgKzYxLDkgQEAgV2ViSW5zcGVjdG9yLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgc2hvd25TZWN0aW9uID0gdGhpcy5fcHJvYmVT
ZXRTZWN0aW9ucy5nZXQocHJvYmVTZXQpOwogICAgICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVu
dC5hcHBlbmRDaGlsZChzaG93blNlY3Rpb24uZWxlbWVudCk7CiAgICAgICAgIH0KLSAgICB9LAor
ICAgIH0KIAotICAgIGluc3BlY3Q6IGZ1bmN0aW9uKG9iamVjdHMpCisgICAgaW5zcGVjdChvYmpl
Y3RzKQogICAgIHsKICAgICAgICAgaWYgKCEob2JqZWN0cyBpbnN0YW5jZW9mIEFycmF5KSkKICAg
ICAgICAgICAgIG9iamVjdHMgPSBbb2JqZWN0c107CkBAIC05MywxMSArODksMTEgQEAgV2ViSW5z
cGVjdG9yLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuaW5zcGVjdGVkUHJvYmVTZXRzID0gaW5zcGVjdGVkUHJvYmVTZXRzOwogCiAgICAgICAgIHJl
dHVybiAhIXRoaXMuX2luc3BlY3RlZFByb2JlU2V0cy5sZW5ndGg7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKLSAgICBfcHJvYmVTZXRBZGRlZDogZnVuY3Rpb24ocHJvYmVTZXRP
ckV2ZW50KQorICAgIF9wcm9iZVNldEFkZGVkKHByb2JlU2V0T3JFdmVudCkKICAgICB7CiAgICAg
ICAgIHZhciBwcm9iZVNldDsKICAgICAgICAgaWYgKHByb2JlU2V0T3JFdmVudCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5Qcm9iZVNldCkKQEAgLTEwOCwxMCArMTA0LDEwIEBAIFdlYkluc3BlY3Rv
ci5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBu
ZXdTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uKHByb2Jl
U2V0KTsKICAgICAgICAgdGhpcy5fcHJvYmVTZXRTZWN0aW9ucy5zZXQocHJvYmVTZXQsIG5ld1Nl
Y3Rpb24pOwotICAgIH0sCisgICAgfQogCiAKLSAgICBfcHJvYmVTZXRSZW1vdmVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfcHJvYmVTZXRSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IHByb2JlU2V0ID0gZXZlbnQuZGF0YS5wcm9iZVNldDsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fcHJvYmVTZXRTZWN0aW9ucy5oYXMocHJvYmVTZXQpLCAiUmVtb3ZlZCBwcm9iZSBncm91
cCAiLCBwcm9iZVNldCwgIiBkb2Vzbid0IGhhdmUgYSBzaWRlYmFyLiIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREYXRhR3Jp
ZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0
RGF0YUdyaWQuanMKaW5kZXggMWNiN2ViYy4uYmJlNTlmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREYXRhR3JpZC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERhdGFH
cmlkLmpzCkBAIC0xLDYgKzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNCw3NSArMjQsNjggQEAKICAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQgPSBmdW5jdGlvbihwcm9iZVNldCkKK1dl
Ykluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkID0gY2xhc3MgUHJvYmVTZXREYXRhR3JpZCBleHRl
bmRzIFdlYkluc3BlY3Rvci5EYXRhR3JpZAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2V0LCAiSW52YWxpZCBQcm9iZVNldCBhcmd1
bWVudDogIiwgcHJvYmVTZXQpOwotICAgIHRoaXMucHJvYmVTZXQgPSBwcm9iZVNldDsKLQotICAg
IHZhciBjb2x1bW5zRGF0YSA9IHt9OwotICAgIGZvciAodmFyIHByb2JlIG9mIHByb2JlU2V0LnBy
b2JlcykgewotICAgICAgICB2YXIgcHJvYmVUaXRsZSA9IHByb2JlLmV4cHJlc3Npb24gfHwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCIodW5pbml0aWFsaXplZCkiKTsKLSAgICAgICAgY29sdW1uc0Rh
dGFbcHJvYmUuaWRdID0geyB0aXRsZTogcHJvYmVUaXRsZSB9OwotICAgIH0KLQotICAgIFdlYklu
c3BlY3Rvci5EYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnNEYXRhKTsKKyAgICBjb25zdHJ1Y3Rv
cihwcm9iZVNldCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2V0LCAiSW52YWxpZCBQcm9iZVNldCBhcmd1bWVudDog
IiwgcHJvYmVTZXQpOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImlubGluZSIp
OworICAgICAgICB2YXIgY29sdW1uc0RhdGEgPSB7fTsKKyAgICAgICAgZm9yICh2YXIgcHJvYmUg
b2YgcHJvYmVTZXQucHJvYmVzKSB7CisgICAgICAgICAgICB2YXIgcHJvYmVUaXRsZSA9IHByb2Jl
LmV4cHJlc3Npb24gfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIodW5pbml0aWFsaXplZCkiKTsK
KyAgICAgICAgICAgIGNvbHVtbnNEYXRhW3Byb2JlLmlkXSA9IHsgdGl0bGU6IHByb2JlVGl0bGUg
fTsKKyAgICAgICAgfQogCi0gICAgdGhpcy5fZnJhbWVOb2RlcyA9IG5ldyBNYXA7Ci0gICAgdGhp
cy5fbm9kZXNTaW5jZUxhc3ROYXZpZ2F0aW9uID0gW107CisgICAgICAgIHN1cGVyKGNvbHVtbnNE
YXRhKTsKIAotICAgIHRoaXMuX2xpc3RlbmVycyA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0
ZW5lclNldCh0aGlzLCAiUHJvYmVTZXREYXRhR3JpZCBpbnN0YW5jZSBsaXN0ZW5lcnMiKTsKLSAg
ICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIocHJvYmVTZXQsIFdlYkluc3BlY3Rvci5Qcm9iZVNl
dC5FdmVudC5Qcm9iZUFkZGVkLCB0aGlzLl9zZXR1cFByb2JlKTsKLSAgICB0aGlzLl9saXN0ZW5l
cnMucmVnaXN0ZXIocHJvYmVTZXQsIFdlYkluc3BlY3Rvci5Qcm9iZVNldC5FdmVudC5Qcm9iZVJl
bW92ZWQsIHRoaXMuX3RlYXJkb3duUHJvYmUpOwotICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rl
cihwcm9iZVNldCwgV2ViSW5zcGVjdG9yLlByb2JlU2V0LkV2ZW50LlNhbXBsZXNDbGVhcmVkLCB0
aGlzLl9zZXR1cERhdGEpOwotICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihXZWJJbnNwZWN0
b3IuUHJvYmUsIFdlYkluc3BlY3Rvci5Qcm9iZS5FdmVudC5FeHByZXNzaW9uQ2hhbmdlZCwgdGhp
cy5fcHJvYmVFeHByZXNzaW9uQ2hhbmdlZCkKLSAgICB0aGlzLl9saXN0ZW5lcnMuaW5zdGFsbCgp
OworICAgICAgICB0aGlzLnByb2JlU2V0ID0gcHJvYmVTZXQ7CiAKLSAgICB0aGlzLl9zZXR1cERh
dGEoKTsKLX0KKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImlubGluZSIpOwog
Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5EYXRhVXBkYXRlZFN0eWxlQ2xhc3NOYW1l
ID0gImRhdGEtdXBkYXRlZCI7Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5QYXN0RnJh
bWVTdHlsZUNsYXNzTmFtZSA9ICJwYXN0LXZhbHVlIjsKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERh
dGFHcmlkLkhpZ2hsaWdodGVkRnJhbWVTdHlsZUNsYXNzTmFtZSA9ICJoaWdobGlnaHRlZCI7Cisg
ICAgICAgIHRoaXMuX2ZyYW1lTm9kZXMgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9ub2Rlc1Np
bmNlTGFzdE5hdmlnYXRpb24gPSBbXTsKIAotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQu
RGF0YVVwZGF0ZWRBbmltYXRpb25EdXJhdGlvbiA9IDMwMDsgLy8gbWlsbGlzZWNvbmRzCisgICAg
ICAgIHRoaXMuX2xpc3RlbmVycyA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNldCh0
aGlzLCAiUHJvYmVTZXREYXRhR3JpZCBpbnN0YW5jZSBsaXN0ZW5lcnMiKTsKKyAgICAgICAgdGhp
cy5fbGlzdGVuZXJzLnJlZ2lzdGVyKHByb2JlU2V0LCBXZWJJbnNwZWN0b3IuUHJvYmVTZXQuRXZl
bnQuUHJvYmVBZGRlZCwgdGhpcy5fc2V0dXBQcm9iZSk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVy
cy5yZWdpc3Rlcihwcm9iZVNldCwgV2ViSW5zcGVjdG9yLlByb2JlU2V0LkV2ZW50LlByb2JlUmVt
b3ZlZCwgdGhpcy5fdGVhcmRvd25Qcm9iZSk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdp
c3Rlcihwcm9iZVNldCwgV2ViSW5zcGVjdG9yLlByb2JlU2V0LkV2ZW50LlNhbXBsZXNDbGVhcmVk
LCB0aGlzLl9zZXR1cERhdGEpOworICAgICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoV2Vi
SW5zcGVjdG9yLlByb2JlLCBXZWJJbnNwZWN0b3IuUHJvYmUuRXZlbnQuRXhwcmVzc2lvbkNoYW5n
ZWQsIHRoaXMuX3Byb2JlRXhwcmVzc2lvbkNoYW5nZWQpCisgICAgICAgIHRoaXMuX2xpc3RlbmVy
cy5pbnN0YWxsKCk7CiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQsCi0gICAg
X19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLAorICAgICAgICB0aGlz
Ll9zZXR1cERhdGEoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGNsb3NlZDogZnVu
Y3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewogICAgICAgICBmb3IgKHZhciBwcm9iZSBvZiB0
aGlzLnByb2JlU2V0KQogICAgICAgICAgICAgdGhpcy5fdGVhcmRvd25Qcm9iZShwcm9iZSk7CiAK
ICAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnVuaW5zdGFsbCh0cnVlKTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIF9zZXR1cFByb2JlOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfc2V0dXBQcm9iZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcm9iZSA9IGV2ZW50LmRh
dGE7CiAgICAgICAgIHRoaXMuaW5zZXJ0Q29sdW1uKHByb2JlLmlkLCB7dGl0bGU6IHByb2JlLmV4
cHJlc3Npb259KTsKIAogICAgICAgICBmb3IgKHZhciBmcmFtZSBvZiB0aGlzLl9kYXRhLmZyYW1l
cykKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU5vZGVGb3JGcmFtZShmcmFtZSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdGVhcmRvd25Qcm9iZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RlYXJk
b3duUHJvYmUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcHJvYmUgPSBldmVudC5kYXRhOwog
ICAgICAgICB0aGlzLnJlbW92ZUNvbHVtbihwcm9iZS5pZCk7CiAKICAgICAgICAgZm9yICh2YXIg
ZnJhbWUgb2YgdGhpcy5fZGF0YS5mcmFtZXMpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVOb2Rl
Rm9yRnJhbWUoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NldHVwRGF0YTogZnVuY3Rp
b24oKQorICAgIF9zZXR1cERhdGEoKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YSA9IHRoaXMu
cHJvYmVTZXQuZGF0YVRhYmxlOwogICAgICAgICBmb3IgKHZhciBmcmFtZSBvZiB0aGlzLl9kYXRh
LmZyYW1lcykKQEAgLTEwMywxOCArOTYsMTggQEAgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdy
aWQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kYXRhTGlzdGVuZXJzLnJlZ2lzdGVyKHRo
aXMuX2RhdGEsIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5TZXBhcmF0b3JJ
bnNlcnRlZCwgdGhpcy5fZGF0YVNlcGFyYXRvckluc2VydGVkKTsKICAgICAgICAgdGhpcy5fZGF0
YUxpc3RlbmVycy5yZWdpc3Rlcih0aGlzLl9kYXRhLCBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRh
VGFibGUuRXZlbnQuV2lsbFJlbW92ZSwgdGhpcy5fdGVhcmRvd25EYXRhKTsKICAgICAgICAgdGhp
cy5fZGF0YUxpc3RlbmVycy5pbnN0YWxsKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGVhcmRv
d25EYXRhOiBmdW5jdGlvbigpCisgICAgX3RlYXJkb3duRGF0YSgpCiAgICAgewogICAgICAgICB0
aGlzLl9kYXRhTGlzdGVuZXJzLnVuaW5zdGFsbCh0cnVlKTsKICAgICAgICAgdGhpcy5yZW1vdmVD
aGlsZHJlbigpOwogICAgICAgICB0aGlzLl9mcmFtZU5vZGVzID0gbmV3IE1hcDsKICAgICAgICAg
dGhpcy5fc2VwYXJhdG9ycyA9IG5ldyBNYXA7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9sYXN0VXBk
YXRlZEZyYW1lOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU5vZGVGb3JGcmFtZTogZnVu
Y3Rpb24oZnJhbWUpCisgICAgX3VwZGF0ZU5vZGVGb3JGcmFtZShmcmFtZSkKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGZyYW1lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGF0YUZyYW1lLCAiSW52YWxpZCBQcm9iZVNldERhdGFGcmFtZSBhcmd1bWVudDogIiwgZnJhbWUp
OwogICAgICAgICB2YXIgbm9kZSA9IG51bGw7CkBAIC0xNDgsOSArMTQxLDkgQEAgV2ViSW5zcGVj
dG9yLlByb2JlU2V0RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB9LCBXZWJJbnNwZWN0
b3IuUHJvYmVTZXREYXRhR3JpZC5EYXRhVXBkYXRlZEFuaW1hdGlvbkR1cmF0aW9uKTsKIAogICAg
ICAgICB0aGlzLl9ub2Rlc1NpbmNlTGFzdE5hdmlnYXRpb24ucHVzaChub2RlKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF91cGRhdGVOb2RlRm9yU2VwYXJhdG9yOiBmdW5jdGlvbihmcmFtZSkKKyAg
ICBfdXBkYXRlTm9kZUZvclNlcGFyYXRvcihmcmFtZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX2ZyYW1lTm9kZXMuaGFzKGZyYW1lKSwgIlRyaWVkIHRvIGFkZCBzZXBhcmF0
b3IgZm9yIHVua25vd24gZGF0YSBmcmFtZTogIiwgZnJhbWUpOwogICAgICAgICB0aGlzLl9mcmFt
ZU5vZGVzLmdldChmcmFtZSkudXBkYXRlQ2VsbHNGb3JTZXBhcmF0b3IoZnJhbWUsIHRoaXMucHJv
YmVTZXQpOwpAQCAtMTU5LDIyICsxNTIsMjIgQEAgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdy
aWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgbm9kZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQuUGFzdEZyYW1lU3R5bGVDbGFzc05hbWUpOwog
CiAgICAgICAgIHRoaXMuX25vZGVzU2luY2VMYXN0TmF2aWdhdGlvbiA9IFtdOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2RhdGFGcmFtZUluc2VydGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0
YUZyYW1lSW5zZXJ0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUgPSBldmVudC5k
YXRhOwogICAgICAgICB0aGlzLl9sYXN0VXBkYXRlZEZyYW1lID0gZnJhbWU7CiAgICAgICAgIHRo
aXMuX3VwZGF0ZU5vZGVGb3JGcmFtZShmcmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0
YVNlcGFyYXRvckluc2VydGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YVNlcGFyYXRvcklu
c2VydGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGZyYW1lID0gZXZlbnQuZGF0YTsKICAg
ICAgICAgdGhpcy5fdXBkYXRlTm9kZUZvclNlcGFyYXRvcihmcmFtZSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcHJvYmVFeHByZXNzaW9uQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3By
b2JlRXhwcmVzc2lvbkNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcHJvYmUgPSBl
dmVudC50YXJnZXQ7CiAgICAgICAgIGlmIChwcm9iZS5icmVha3BvaW50ICE9PSB0aGlzLnByb2Jl
U2V0LmJyZWFrcG9pbnQpCkBAIC0xOTIsNCArMTg1LDEwIEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNl
dERhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgZm9yICh2YXIgZnJhbWUgb2YgdGhpcy5f
ZGF0YS5mcmFtZXMpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVOb2RlRm9yRnJhbWUoZnJhbWUp
OwogICAgIH0KLX0KK307CisKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLkRhdGFVcGRh
dGVkU3R5bGVDbGFzc05hbWUgPSAiZGF0YS11cGRhdGVkIjsKK1dlYkluc3BlY3Rvci5Qcm9iZVNl
dERhdGFHcmlkLlBhc3RGcmFtZVN0eWxlQ2xhc3NOYW1lID0gInBhc3QtdmFsdWUiOworV2ViSW5z
cGVjdG9yLlByb2JlU2V0RGF0YUdyaWQuSGlnaGxpZ2h0ZWRGcmFtZVN0eWxlQ2xhc3NOYW1lID0g
ImhpZ2hsaWdodGVkIjsKKworV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQuRGF0YVVwZGF0
ZWRBbmltYXRpb25EdXJhdGlvbiA9IDMwMDsgLy8gbWlsbGlzZWNvbmRzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERhdGFHcmlk
Tm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2Jl
U2V0RGF0YUdyaWROb2RlLmpzCmluZGV4IDNiNWIxYmEuLjhjZTUxYzg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERhdGFHcmlk
Tm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Q
cm9iZVNldERhdGFHcmlkTm9kZS5qcwpAQCAtMSw2ICsxLDYgQEAKIC8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMzcgKzI0LDMzIEBACiAgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkTm9kZSA9IGZ1
bmN0aW9uKGRhdGFHcmlkKQorV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWROb2RlID0gY2xh
c3MgUHJvYmVTZXREYXRhR3JpZE5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2Rl
CiB7Ci0gICAgY29uc29sZS5hc3NlcnQoZGF0YUdyaWQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvYmVTZXREYXRhR3JpZCwgIkludmFsaWQgUHJvYmVTZXREYXRhR3JpZCBhcmd1bWVudDoiLCBk
YXRhR3JpZCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcywgdGhp
cy5kYXRhKTsKLSAgICB0aGlzLmRhdGFHcmlkID0gZGF0YUdyaWQ7IC8vIFRoaXMgaXMgc2V0IHRv
IG51bGwgaW4gRGF0YUdyaWROb2RlJ3MgY29uc3RydWN0b3IuCi0gICAgdGhpcy5fZGF0YSA9IHt9
OworICAgIGNvbnN0cnVjdG9yKGRhdGFHcmlkKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoZGF0YUdyaWQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZCwgIklu
dmFsaWQgUHJvYmVTZXREYXRhR3JpZCBhcmd1bWVudDoiLCBkYXRhR3JpZCk7CiAKLSAgICB0aGlz
Ll9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICB0aGlzLl9lbGVt
ZW50LmRhdGFHcmlkTm9kZSA9IHRoaXM7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJyZXZlYWxlZCIpOwotfTsKKyAgICAgICAgc3VwZXIodGhpcy5kYXRhKTsKIAotV2ViSW5zcGVj
dG9yLlByb2JlU2V0RGF0YUdyaWROb2RlLlNlcGFyYXRvclN0eWxlQ2xhc3NOYW1lID0gInNlcGFy
YXRvciI7Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZE5vZGUuVW5rbm93blZhbHVlU3R5
bGVDbGFzc05hbWUgPSAidW5rbm93bi12YWx1ZSI7CisgICAgICAgIHRoaXMuZGF0YUdyaWQgPSBk
YXRhR3JpZDsgLy8gVGhpcyBpcyBzZXQgdG8gbnVsbCBpbiBEYXRhR3JpZE5vZGUncyBjb25zdHJ1
Y3Rvci4KKyAgICAgICAgdGhpcy5fZGF0YSA9IHt9OwogCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXRE
YXRhR3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
UHJvYmVTZXREYXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGF0YUdy
aWROb2RlLnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRyIik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuZGF0YUdyaWROb2RlID0gdGhp
czsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJyZXZlYWxlZCIpOworICAg
IH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTsKLSAgICB9LAorICAgIH0KIAogICAgIHNl
dCBmcmFtZSh2YWx1ZSkKICAgICB7CkBAIC03MCwxNCArNjYsMTQgQEAgV2ViSW5zcGVjdG9yLlBy
b2JlU2V0RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBkYXRhW3By
b2JlLmlkXSA9IHNhbXBsZS5vYmplY3Q7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5fZGF0YSA9
IGRhdGE7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZnJhbWUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2ZyYW1lOwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlQ2VsbENvbnRl
bnQ6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCisgICAgY3JlYXRlQ2VsbENvbnRl
bnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCkKICAgICB7CiAgICAgICAgIHZhciBzYW1wbGUgPSB0
aGlzLmRhdGFbY29sdW1uSWRlbnRpZmllcl07CiAgICAgICAgIGlmIChzYW1wbGUgPT09IFdlYklu
c3BlY3Rvci5Qcm9iZVNldERhdGFGcmFtZS5NaXNzaW5nVmFsdWUpIHsKQEAgLTg5LDE0ICs4NSwx
NyBAQCBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRWYWx1ZS5jcmVhdGVPYmplY3RU
cmVlT3JGb3JtYXR0ZWRWYWx1ZUZvclJlbW90ZU9iamVjdChzYW1wbGUsIG51bGwpOwogCiAgICAg
ICAgIHJldHVybiBzYW1wbGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVDZWxsc0Zyb21G
cmFtZTogZnVuY3Rpb24oZnJhbWUsIHByb2JlU2V0KQorICAgIHVwZGF0ZUNlbGxzRnJvbUZyYW1l
KGZyYW1lLCBwcm9iZVNldCkKICAgICB7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVDZWxs
c0ZvclNlcGFyYXRvcjogZnVuY3Rpb24oZnJhbWUsIHByb2JlU2V0KQorICAgIHVwZGF0ZUNlbGxz
Rm9yU2VwYXJhdG9yKGZyYW1lLCBwcm9iZVNldCkKICAgICB7CiAgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZE5vZGUuU2VwYXJh
dG9yU3R5bGVDbGFzc05hbWUpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERh
dGFHcmlkTm9kZS5TZXBhcmF0b3JTdHlsZUNsYXNzTmFtZSA9ICJzZXBhcmF0b3IiOworV2ViSW5z
cGVjdG9yLlByb2JlU2V0RGF0YUdyaWROb2RlLlVua25vd25WYWx1ZVN0eWxlQ2xhc3NOYW1lID0g
InVua25vd24tdmFsdWUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24uanMKaW5k
ZXggNzdhYTIxMy4uNjZhOGVmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9u
LmpzCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBv
ZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAt
MjMsNzEgKzI0LDYzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24gPSBmdW5jdGlvbihwcm9iZVNl
dCkKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uID0gY2xhc3MgUHJvYmVTZXRE
ZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbgogewotICAg
IGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2V0
LCAiSW52YWxpZCBQcm9iZVNldCBhcmd1bWVudDoiLCBwcm9iZVNldCk7CisgICAgY29uc3RydWN0
b3IocHJvYmVTZXQpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCwgIkludmFsaWQgUHJvYmVTZXQgYXJndW1lbnQ6
IiwgcHJvYmVTZXQpOwogCi0gICAgdGhpcy5fbGlzdGVuZXJzID0gbmV3IFdlYkluc3BlY3Rvci5F
dmVudExpc3RlbmVyU2V0KHRoaXMsICJQcm9iZVNldERldGFpbHNTZWN0aW9uIFVJIGxpc3RlbmVy
cyIpOwotICAgIHRoaXMuX3Byb2JlU2V0ID0gcHJvYmVTZXQ7CisgICAgICAgIHZhciBvcHRpb25z
RWxlbWVudCA9IHRoaXMuX29wdGlvbnNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIG9wdGlvbnNFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uU2VjdGlvbk9wdGlvbnNTdHlsZUNsYXNzTmFtZSk7CiAK
LSAgICB2YXIgb3B0aW9uc0VsZW1lbnQgPSB0aGlzLl9vcHRpb25zRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIG9wdGlvbnNFbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uU2VjdGlvbk9wdGlvbnNTdHlsZUNs
YXNzTmFtZSk7CisgICAgICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvYmVT
ZXREYXRhR3JpZChwcm9iZVNldCk7CiAKLSAgICB2YXIgcmVtb3ZlUHJvYmVCdXR0b24gPSBvcHRp
b25zRWxlbWVudC5jcmVhdGVDaGlsZCgiaW1nIik7Ci0gICAgcmVtb3ZlUHJvYmVCdXR0b24uY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZVJlbW92
ZVN0eWxlQ2xhc3NOYW1lKTsKLSAgICByZW1vdmVQcm9iZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlQnV0dG9uRW5hYmxlZFN0eWxl
Q2xhc3NOYW1lKTsKLSAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIocmVtb3ZlUHJvYmVCdXR0
b24sICJjbGljayIsIHRoaXMuX3JlbW92ZUJ1dHRvbkNsaWNrZWQpOworICAgICAgICB2YXIgc2lu
Z2xldG9uUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdzsKKyAgICAgICAg
c2luZ2xldG9uUm93LmVsZW1lbnQuYXBwZW5kQ2hpbGQoZGF0YUdyaWQuZWxlbWVudCk7CiAKLSAg
ICB2YXIgY2xlYXJTYW1wbGVzQnV0dG9uID0gb3B0aW9uc0VsZW1lbnQuY3JlYXRlQ2hpbGQoImlt
ZyIpOwotICAgIGNsZWFyU2FtcGxlc0J1dHRvbi5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Q
cm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlQ2xlYXJTYW1wbGVzU3R5bGVDbGFzc05hbWUpOwot
ICAgIGNsZWFyU2FtcGxlc0J1dHRvbi5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Qcm9iZVNl
dERldGFpbHNTZWN0aW9uLlByb2JlQnV0dG9uRW5hYmxlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0
aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoY2xlYXJTYW1wbGVzQnV0dG9uLCAiY2xpY2siLCB0aGlz
Ll9jbGVhclNhbXBsZXNCdXR0b25DbGlja2VkKTsKKyAgICAgICAgdmFyIHByb2JlU2VjdGlvbkdy
b3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtzaW5nbGV0b25Sb3dd
KTsKIAotICAgIHZhciBhZGRQcm9iZUJ1dHRvbiA9IG9wdGlvbnNFbGVtZW50LmNyZWF0ZUNoaWxk
KCJpbWciKTsKLSAgICBhZGRQcm9iZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Q
cm9iZVNldERldGFpbHNTZWN0aW9uLkFkZFByb2JlVmFsdWVTdHlsZUNsYXNzTmFtZSk7Ci0gICAg
dGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKGFkZFByb2JlQnV0dG9uLCAiY2xpY2siLCB0aGlzLl9h
ZGRQcm9iZUJ1dHRvbkNsaWNrZWQpOworICAgICAgICB2YXIgZHVtbXlUaXRsZSA9ICIiOworICAg
ICAgICBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uY2FsbCh0aGlzLCAicHJvYmUiLCBkdW1t
eVRpdGxlLCBbcHJvYmVTZWN0aW9uR3JvdXBdLCBvcHRpb25zRWxlbWVudCk7CisgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwcm9iZS1zZXQiKTsKIAotICAgIC8vIFVwZGF0ZSB0
aGUgc291cmNlIGxpbmsgd2hlbiB0aGUgYnJlYWtwb2ludCdzIHJlc29sdmVkIHN0YXRlIGNoYW5n
ZXMsCi0gICAgLy8gc28gdGhhdCBpdCBjYW4gYmVjb21lIGEgbGl2ZSBsb2NhdGlvbiBsaW5rIHdo
ZW4gcG9zc2libGUuCi0gICAgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQoKTsKLSAgICB0aGlzLl9s
aXN0ZW5lcnMucmVnaXN0ZXIodGhpcy5fcHJvYmVTZXQuYnJlYWtwb2ludCwgV2ViSW5zcGVjdG9y
LkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlTGlu
a0VsZW1lbnQpOworICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSBuZXcgV2ViSW5zcGVjdG9yLkV2
ZW50TGlzdGVuZXJTZXQodGhpcywgIlByb2JlU2V0RGV0YWlsc1NlY3Rpb24gVUkgbGlzdGVuZXJz
Iik7CisgICAgICAgIHRoaXMuX3Byb2JlU2V0ID0gcHJvYmVTZXQ7CisgICAgICAgIHRoaXMuX2Rh
dGFHcmlkID0gZGF0YUdyaWQ7CiAKLSAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0
b3IuUHJvYmVTZXREYXRhR3JpZChwcm9iZVNldCk7Ci0gICAgdmFyIHNpbmdsZXRvblJvdyA9IG5l
dyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7Ci0gICAgc2luZ2xldG9uUm93LmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7Ci0gICAgdmFyIHByb2JlU2Vj
dGlvbkdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFtzaW5nbGV0
b25Sb3ddKTsKKyAgICAgICAgdmFyIHJlbW92ZVByb2JlQnV0dG9uID0gb3B0aW9uc0VsZW1lbnQu
Y3JlYXRlQ2hpbGQoImltZyIpOworICAgICAgICByZW1vdmVQcm9iZUJ1dHRvbi5jbGFzc0xpc3Qu
YWRkKFdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlUmVtb3ZlU3R5bGVD
bGFzc05hbWUpOworICAgICAgICByZW1vdmVQcm9iZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlQnV0dG9uRW5hYmxlZFN0eWxlQ2xh
c3NOYW1lKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKHJlbW92ZVByb2JlQnV0
dG9uLCAiY2xpY2siLCB0aGlzLl9yZW1vdmVCdXR0b25DbGlja2VkKTsKIAotICAgIHZhciBkdW1t
eVRpdGxlID0gIiI7Ci0gICAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLmNhbGwodGhpcywg
InByb2JlIiwgZHVtbXlUaXRsZSwgW3Byb2JlU2VjdGlvbkdyb3VwXSwgb3B0aW9uc0VsZW1lbnQp
OwotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Qcm9iZVNldERl
dGFpbHNTZWN0aW9uLlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdmFyIGNsZWFyU2FtcGxlc0J1
dHRvbiA9IG9wdGlvbnNFbGVtZW50LmNyZWF0ZUNoaWxkKCJpbWciKTsKKyAgICAgICAgY2xlYXJT
YW1wbGVzQnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1Nl
Y3Rpb24uUHJvYmVDbGVhclNhbXBsZXNTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGNsZWFyU2Ft
cGxlc0J1dHRvbi5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0
aW9uLlByb2JlQnV0dG9uRW5hYmxlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fbGlz
dGVuZXJzLnJlZ2lzdGVyKGNsZWFyU2FtcGxlc0J1dHRvbiwgImNsaWNrIiwgdGhpcy5fY2xlYXJT
YW1wbGVzQnV0dG9uQ2xpY2tlZCk7CiAKLSAgICB0aGlzLl9saXN0ZW5lcnMuaW5zdGFsbCgpOwot
fTsKKyAgICAgICAgdmFyIGFkZFByb2JlQnV0dG9uID0gb3B0aW9uc0VsZW1lbnQuY3JlYXRlQ2hp
bGQoImltZyIpOworICAgICAgICBhZGRQcm9iZUJ1dHRvbi5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLkFkZFByb2JlVmFsdWVTdHlsZUNsYXNzTmFtZSk7
CisgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3RlcihhZGRQcm9iZUJ1dHRvbiwgImNsaWNr
IiwgdGhpcy5fYWRkUHJvYmVCdXR0b25DbGlja2VkKTsKIAotV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGV0YWlsc1NlY3Rpb24uQWRkUHJvYmVWYWx1ZVN0eWxlQ2xhc3NOYW1lID0gInByb2JlLWFkZCI7
Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Eb250RmxvYXRMaW5rU3R5bGVD
bGFzc05hbWUgPSAiZG9udC1mbG9hdCI7Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2Vj
dGlvbi5Qcm9iZUJ1dHRvbkVuYWJsZWRTdHlsZUNsYXNzTmFtZSA9ICJlbmFibGVkIjsKLVdlYklu
c3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlUG9wb3ZlckVsZW1lbnRTdHlsZUNs
YXNzTmFtZSA9ICJwcm9iZS1wb3BvdmVyIjsKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNT
ZWN0aW9uLlByb2JlQ2xlYXJTYW1wbGVzU3R5bGVDbGFzc05hbWUgPSAicHJvYmUtY2xlYXItc2Ft
cGxlcyI7Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZVJlbW92ZVN0
eWxlQ2xhc3NOYW1lID0gInByb2JlLXJlbW92ZSI7Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRh
aWxzU2VjdGlvbi5TZWN0aW9uT3B0aW9uc1N0eWxlQ2xhc3NOYW1lID0gIm9wdGlvbnMiOwotV2Vi
SW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uU3R5bGVDbGFzc05hbWUgPSAicHJvYmUt
c2V0IjsKKyAgICAgICAgLy8gVXBkYXRlIHRoZSBzb3VyY2UgbGluayB3aGVuIHRoZSBicmVha3Bv
aW50J3MgcmVzb2x2ZWQgc3RhdGUgY2hhbmdlcywKKyAgICAgICAgLy8gc28gdGhhdCBpdCBjYW4g
YmVjb21lIGEgbGl2ZSBsb2NhdGlvbiBsaW5rIHdoZW4gcG9zc2libGUuCisgICAgICAgIHRoaXMu
X3VwZGF0ZUxpbmtFbGVtZW50KCk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcih0
aGlzLl9wcm9iZVNldC5icmVha3BvaW50LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5S
ZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVMaW5rRWxlbWVudCk7CiAKLVdlYklu
c3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLnByb3RvdHlwZSA9IHsKLSAgICBfX3Byb3Rv
X186IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUsCi0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLAorICAgICAgICB0aGlzLl9s
aXN0ZW5lcnMuaW5zdGFsbCgpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgY2xvc2Vk
OiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2xpc3RlbmVy
cy51bmluc3RhbGwodHJ1ZSk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmUoKTsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF91cGRhdGVMaW5rRWxlbWVudDogZnVu
Y3Rpb24oKQorICAgIF91cGRhdGVMaW5rRWxlbWVudCgpCiAgICAgewogICAgICAgICB2YXIgYnJl
YWtwb2ludCA9IHRoaXMuX3Byb2JlU2V0LmJyZWFrcG9pbnQ7CiAgICAgICAgIHZhciB0aXRsZUVs
ZW1lbnQgPSBudWxsOwpAQCAtMTA4LDkgKzEwMSw5IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERl
dGFpbHNTZWN0aW9uLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9saW5rRWxlbWVudCA9
IHRpdGxlRWxlbWVudDsKICAgICAgICAgdGhpcy5fb3B0aW9uc0VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fbGlua0VsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZFByb2JlQnV0dG9u
Q2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2FkZFByb2JlQnV0dG9uQ2xpY2tlZChldmVu
dCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGNyZWF0ZVByb2JlRnJvbUVudGVyZWRFeHByZXNz
aW9uKHZpc2libGVQb3BvdmVyLCBldmVudCkKICAgICAgICAgewpAQCAtMTM0LDE1ICsxMjcsMjQg
QEAgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAg
ICAgICB2YXIgdGFyZ2V0ID0gV2ViSW5zcGVjdG9yLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGV2
ZW50LnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7CiAgICAgICAgIHBvcG92ZXIucHJl
c2VudCh0YXJnZXQsIFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1ksIFdlYkluc3BlY3Rvci5S
ZWN0RWRnZS5NSU5fWSwgV2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1BWF9YXSk7CiAgICAgICAgIHRl
eHRCb3guc2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVtb3ZlQnV0dG9uQ2xpY2tl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3JlbW92ZUJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICB0aGlzLl9wcm9iZVNldC5jbGVhcigpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2NsZWFyU2FtcGxlc0J1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jbGVhclNh
bXBsZXNCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcHJvYmVTZXQu
Y2xlYXJTYW1wbGVzKCk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWls
c1NlY3Rpb24uQWRkUHJvYmVWYWx1ZVN0eWxlQ2xhc3NOYW1lID0gInByb2JlLWFkZCI7CitXZWJJ
bnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Eb250RmxvYXRMaW5rU3R5bGVDbGFzc05h
bWUgPSAiZG9udC1mbG9hdCI7CitXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Q
cm9iZUJ1dHRvbkVuYWJsZWRTdHlsZUNsYXNzTmFtZSA9ICJlbmFibGVkIjsKK1dlYkluc3BlY3Rv
ci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlUG9wb3ZlckVsZW1lbnRTdHlsZUNsYXNzTmFt
ZSA9ICJwcm9iZS1wb3BvdmVyIjsKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9u
LlByb2JlQ2xlYXJTYW1wbGVzU3R5bGVDbGFzc05hbWUgPSAicHJvYmUtY2xlYXItc2FtcGxlcyI7
CitXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZVJlbW92ZVN0eWxlQ2xh
c3NOYW1lID0gInByb2JlLXJlbW92ZSI7CitXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2Vj
dGlvbi5TZWN0aW9uT3B0aW9uc1N0eWxlQ2xhc3NOYW1lID0gIm9wdGlvbnMiOworV2ViSW5zcGVj
dG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uU3R5bGVDbGFzc05hbWUgPSAicHJvYmUtc2V0IjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1By
b2ZpbGVOb2RlRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuanMKaW5kZXggZWRlMTFjNi4uYjA4
MTUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNjMgKzIz
LDU2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWROb2RlID0gZnVuY3Rpb24ocHJvZmlsZU5vZGUsIGJh
c2VTdGFydFRpbWUsIHJhbmdlU3RhcnRUaW1lLCByYW5nZUVuZFRpbWUpCitXZWJJbnNwZWN0b3Iu
UHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUgPSBjbGFzcyBQcm9maWxlTm9kZURhdGFHcmlkTm9kZSBl
eHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZQogewotICAgIHZhciBoYXND
aGlsZHJlbiA9ICEhcHJvZmlsZU5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7Ci0KLSAgICBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBmYWxzZSwgbnVsbCwgaGFzQ2hp
bGRyZW4pOwotCi0gICAgdGhpcy5fcHJvZmlsZU5vZGUgPSBwcm9maWxlTm9kZTsKLSAgICB0aGlz
Ll9iYXNlU3RhcnRUaW1lID0gYmFzZVN0YXJ0VGltZSB8fCAwOwotICAgIHRoaXMuX3JhbmdlU3Rh
cnRUaW1lID0gcmFuZ2VTdGFydFRpbWUgfHwgMDsKLSAgICB0aGlzLl9yYW5nZUVuZFRpbWUgPSB0
eXBlb2YgcmFuZ2VFbmRUaW1lID09PSAibnVtYmVyIiA/IHJhbmdlRW5kVGltZSA6IEluZmluaXR5
OwotCi0gICAgdGhpcy5fZGF0YSA9IHRoaXMuX3Byb2ZpbGVOb2RlLmNvbXB1dGVDYWxsSW5mb0Zv
clRpbWVSYW5nZSh0aGlzLl9yYW5nZVN0YXJ0VGltZSwgdGhpcy5fcmFuZ2VFbmRUaW1lKTsKLSAg
ICB0aGlzLl9kYXRhLmxvY2F0aW9uID0gdGhpcy5fcHJvZmlsZU5vZGUuc291cmNlQ29kZUxvY2F0
aW9uOwotfTsKKyAgICBjb25zdHJ1Y3Rvcihwcm9maWxlTm9kZSwgYmFzZVN0YXJ0VGltZSwgcmFu
Z2VTdGFydFRpbWUsIHJhbmdlRW5kVGltZSkKKyAgICB7CisgICAgICAgIHZhciBoYXNDaGlsZHJl
biA9ICEhcHJvZmlsZU5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7CiAKLS8vIEZJWE1FOiBNb3ZlIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgot
V2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2Vi
SW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWROb2RlKTsKKyAgICAgICAgc3VwZXIoZmFsc2Us
IG51bGwsIGhhc0NoaWxkcmVuKTsKIAotV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWRO
b2RlLkljb25TdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKKyAgICAgICAgdGhpcy5fcHJvZmlsZU5v
ZGUgPSBwcm9maWxlTm9kZTsKKyAgICAgICAgdGhpcy5fYmFzZVN0YXJ0VGltZSA9IGJhc2VTdGFy
dFRpbWUgfHwgMDsKKyAgICAgICAgdGhpcy5fcmFuZ2VTdGFydFRpbWUgPSByYW5nZVN0YXJ0VGlt
ZSB8fCAwOworICAgICAgICB0aGlzLl9yYW5nZUVuZFRpbWUgPSB0eXBlb2YgcmFuZ2VFbmRUaW1l
ID09PSAibnVtYmVyIiA/IHJhbmdlRW5kVGltZSA6IEluZmluaXR5OwogCi1XZWJJbnNwZWN0b3Iu
UHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9k
YXRhID0gdGhpcy5fcHJvZmlsZU5vZGUuY29tcHV0ZUNhbGxJbmZvRm9yVGltZVJhbmdlKHRoaXMu
X3JhbmdlU3RhcnRUaW1lLCB0aGlzLl9yYW5nZUVuZFRpbWUpOworICAgICAgICB0aGlzLl9kYXRh
LmxvY2F0aW9uID0gdGhpcy5fcHJvZmlsZU5vZGUuc291cmNlQ29kZUxvY2F0aW9uOworICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHByb2ZpbGVOb2RlKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9wcm9maWxlTm9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZWNv
cmRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGJhc2VTdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Jhc2VTdGFy
dFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmFuZ2VTdGFydFRpbWUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3JhbmdlU3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHJhbmdlRW5kVGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmFuZ2VF
bmRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2RhdGE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVSYW5nZVRpbWVz
OiBmdW5jdGlvbihzdGFydFRpbWUsIGVuZFRpbWUpCisgICAgdXBkYXRlUmFuZ2VUaW1lcyhzdGFy
dFRpbWUsIGVuZFRpbWUpCiAgICAgewogICAgICAgICB2YXIgb2xkUmFuZ2VTdGFydFRpbWUgPSB0
aGlzLl9yYW5nZVN0YXJ0VGltZTsKICAgICAgICAgdmFyIG9sZFJhbmdlRW5kVGltZSA9IHRoaXMu
X3JhbmdlRW5kVGltZTsKQEAgLTEwMCwxOSArOTMsMTkgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVO
b2RlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAob2xkU3RhcnRCb3Vu
ZGFyeSAhPT0gbmV3U3RhcnRCb3VuZGFyeSB8fCBvbGRFbmRCb3VuZGFyeSAhPT0gbmV3RW5kQm91
bmRhcnkpCiAgICAgICAgICAgICB0aGlzLm5lZWRzUmVmcmVzaCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAgICAg
dGhpcy5fZGF0YSA9IHRoaXMuX3Byb2ZpbGVOb2RlLmNvbXB1dGVDYWxsSW5mb0ZvclRpbWVSYW5n
ZSh0aGlzLl9yYW5nZVN0YXJ0VGltZSwgdGhpcy5fcmFuZ2VFbmRUaW1lKTsKICAgICAgICAgdGhp
cy5fZGF0YS5sb2NhdGlvbiA9IHRoaXMuX3Byb2ZpbGVOb2RlLnNvdXJjZUNvZGVMb2NhdGlvbjsK
IAogICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLnJl
ZnJlc2guY2FsbCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZUNlbGxDb250ZW50
OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQorICAgIGNyZWF0ZUNlbGxDb250ZW50
KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCiAgICAgewotICAgICAgICBjb25zdCBlbXB0eVZhbHVl
UGxhY2Vob2xkZXJTdHJpbmcgPSAiXHUyMDE0IjsKKyAgICAgICAgdmFyIGVtcHR5VmFsdWVQbGFj
ZWhvbGRlclN0cmluZyA9ICJcdTIwMTQiOwogICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmRhdGFb
Y29sdW1uSWRlbnRpZmllcl07CiAKICAgICAgICAgc3dpdGNoIChjb2x1bW5JZGVudGlmaWVyKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Q
cm9maWxlTm9kZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUHJvZmlsZU5vZGVUcmVlRWxlbWVudC5qcwppbmRleCAxMWFiMjQ5Li4yMmJi
Zjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Qcm9maWxlTm9kZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Byb2ZpbGVOb2RlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMTA1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsODcgKzIzLDg1
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihwcm9maWxlTm9kZSwgZGVsZWdh
dGUpCitXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVUcmVlRWxlbWVudCA9IGNsYXNzIFByb2ZpbGVO
b2RlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7
Ci0gICAgY29uc29sZS5hc3NlcnQocHJvZmlsZU5vZGUpOworICAgIGNvbnN0cnVjdG9yKHByb2Zp
bGVOb2RlLCBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2ZpbGVO
b2RlKTsKKworICAgICAgICB2YXIgdGl0bGUgPSBwcm9maWxlTm9kZS5mdW5jdGlvbk5hbWU7Cisg
ICAgICAgIHZhciBzdWJ0aXRsZSA9ICIiOworCisgICAgICAgIGlmICghdGl0bGUpIHsKKyAgICAg
ICAgICAgIHN3aXRjaCAocHJvZmlsZU5vZGUudHlwZSkgeworICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5GdW5jdGlvbjoKKyAgICAgICAgICAgICAgICB0aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKGFub255bW91cyBmdW5jdGlvbikiKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlByb2ZpbGVO
b2RlLlR5cGUuUHJvZ3JhbToKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiKHByb2dyYW0pIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCIoYW5vbnltb3VzIGZ1bmN0aW9uKSIpOworICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
IlVua25vd24gUHJvZmlsZU5vZGUgdHlwZTogIiArIHByb2ZpbGVOb2RlLnR5cGUpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CiAKLSAgICB0aGlzLl9wcm9maWxlTm9kZSA9IHByb2ZpbGVOb2Rl
OwotICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKKyAgICAgICAgdmFyIHNv
dXJjZUNvZGVMb2NhdGlvbiA9IHByb2ZpbGVOb2RlLnNvdXJjZUNvZGVMb2NhdGlvbjsKKyAgICAg
ICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbikgeworICAgICAgICAgICAgc3VidGl0bGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRp
b24ucG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uU3RyaW5nKHN1YnRpdGxlLCAidGV4dENvbnRl
bnQiKTsKKyAgICAgICAgfQogCi0gICAgdmFyIHRpdGxlID0gcHJvZmlsZU5vZGUuZnVuY3Rpb25O
YW1lOwotICAgIHZhciBzdWJ0aXRsZSA9ICIiOworICAgICAgICB2YXIgY2xhc3NOYW1lOwogCi0g
ICAgaWYgKCF0aXRsZSkgewogICAgICAgICBzd2l0Y2ggKHByb2ZpbGVOb2RlLnR5cGUpIHsKICAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGUuVHlwZS5GdW5jdGlvbjoKLSAgICAg
ICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5vbnltb3VzIGZ1bmN0aW9u
KSIpOworICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVF
bGVtZW50LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgaWYgKCFzb3Vy
Y2VDb2RlTG9jYXRpb24pCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9y
LkNhbGxGcmFtZVRyZWVFbGVtZW50Lk5hdGl2ZUljb25TdHlsZUNsYXNzTmFtZTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZS5UeXBlLlBy
b2dyYW06Ci0gICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHByb2dy
YW0pIik7CisgICAgICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRUcmVlRWxlbWVudC5FdmFsdWF0ZWRSZWNvcmRJY29uU3R5bGVDbGFzczsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIihhbm9ueW1vdXMgZnVuY3Rpb24pIik7Ci0gICAgICAgICAgICBjb25zb2xl
LmVycm9yKCJVbmtub3duIFByb2ZpbGVOb2RlIHR5cGU6ICIgKyBwcm9maWxlTm9kZS50eXBlKTsK
ICAgICAgICAgfQotICAgIH0KIAotICAgIHZhciBzb3VyY2VDb2RlTG9jYXRpb24gPSB0aGlzLl9w
cm9maWxlTm9kZS5zb3VyY2VDb2RlTG9jYXRpb247Ci0gICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlv
bikgewotICAgICAgICBzdWJ0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
LSAgICAgICAgc291cmNlQ29kZUxvY2F0aW9uLnBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblN0
cmluZyhzdWJ0aXRsZSwgInRleHRDb250ZW50Iik7Ci0gICAgfQotCi0gICAgdmFyIGNsYXNzTmFt
ZTsKLQotICAgIHN3aXRjaCAodGhpcy5fcHJvZmlsZU5vZGUudHlwZSkgewotICAgIGNhc2UgV2Vi
SW5zcGVjdG9yLlByb2ZpbGVOb2RlLlR5cGUuRnVuY3Rpb246Ci0gICAgICAgIGNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5GdW5jdGlvbkljb25TdHlsZUNsYXNz
TmFtZTsKLSAgICAgICAgaWYgKCFzb3VyY2VDb2RlTG9jYXRpb24pCi0gICAgICAgICAgICBjbGFz
c05hbWUgPSBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuTmF0aXZlSWNvblN0eWxl
Q2xhc3NOYW1lOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5Qcm9maWxl
Tm9kZS5UeXBlLlByb2dyYW06Ci0gICAgICAgIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZFRyZWVFbGVtZW50LkV2YWx1YXRlZFJlY29yZEljb25TdHlsZUNsYXNzOwotICAg
ICAgICBicmVhazsKLSAgICB9CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNsYXNzTmFtZSk7CiAK
LSAgICBjb25zb2xlLmFzc2VydChjbGFzc05hbWUpOworICAgICAgICAvLyBUaGlzIGlzIG1vcmUg
dGhhbiBsaWtlbHkgYW4gZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb24gd2l0aCBhbiAib24iIHByZWZp
eCBhbmQgaXQgaXMKKyAgICAgICAgLy8gYXMgbG9uZyBvciBsb25nZXIgdGhhbiB0aGUgc2hvcnRl
c3QgZXZlbnQgbGlzdGVuZXIgbmFtZSAtLSAib25jdXQiLgorICAgICAgICBpZiAocHJvZmlsZU5v
ZGUuZnVuY3Rpb25OYW1lICYmIHByb2ZpbGVOb2RlLmZ1bmN0aW9uTmFtZS5zdGFydHNXaXRoKCJv
biIpICYmIHByb2ZpbGVOb2RlLmZ1bmN0aW9uTmFtZS5sZW5ndGggPj0gNSkKKyAgICAgICAgICAg
IGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5FdmVudExpc3Rl
bmVySWNvblN0eWxlQ2xhc3NOYW1lOwogCi0gICAgLy8gVGhpcyBpcyBtb3JlIHRoYW4gbGlrZWx5
IGFuIGV2ZW50IGxpc3RlbmVyIGZ1bmN0aW9uIHdpdGggYW4gIm9uIiBwcmVmaXggYW5kIGl0IGlz
Ci0gICAgLy8gYXMgbG9uZyBvciBsb25nZXIgdGhhbiB0aGUgc2hvcnRlc3QgZXZlbnQgbGlzdGVu
ZXIgbmFtZSAtLSAib25jdXQiLgotICAgIGlmIChwcm9maWxlTm9kZS5mdW5jdGlvbk5hbWUgJiYg
cHJvZmlsZU5vZGUuZnVuY3Rpb25OYW1lLnN0YXJ0c1dpdGgoIm9uIikgJiYgcHJvZmlsZU5vZGUu
ZnVuY3Rpb25OYW1lLmxlbmd0aCA+PSA1KQotICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNwZWN0
b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZTsK
KyAgICAgICAgdmFyIGhhc0NoaWxkcmVuID0gISFwcm9maWxlTm9kZS5jaGlsZE5vZGVzLmxlbmd0
aDsKIAotICAgIHZhciBoYXNDaGlsZHJlbiA9ICEhcHJvZmlsZU5vZGUuY2hpbGROb2Rlcy5sZW5n
dGg7CisgICAgICAgIHN1cGVyKFtjbGFzc05hbWVdLCB0aXRsZSwgc3VidGl0bGUsIHByb2ZpbGVO
b2RlLCBoYXNDaGlsZHJlbik7CiAKLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
LmNhbGwodGhpcywgW2NsYXNzTmFtZV0sIHRpdGxlLCBzdWJ0aXRsZSwgcHJvZmlsZU5vZGUsIGhh
c0NoaWxkcmVuKTsKKyAgICAgICAgdGhpcy5fcHJvZmlsZU5vZGUgPSBwcm9maWxlTm9kZTsKKyAg
ICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwogCi0gICAgdGhpcy5zbWFs
bCA9IHRydWU7Ci0gICAgdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0cnVlOworICAgICAg
ICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4g
PSB0cnVlOwogCi0gICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbikKLSAgICAgICAgdGhpcy50b29s
dGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotfTsKLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVO
b2RlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuUHJvZmlsZU5vZGVUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5H
ZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0
aW9uKQorICAgICAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHByb2ZpbGVOb2RlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9wcm9maWxlTm9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBmaWx0ZXJhYmxlRGF0YSgpCiAgICAgewogICAgICAgICB2YXIgdXJsID0gdGhpcy5fcHJvZmls
ZU5vZGUuc291cmNlQ29kZUxvY2F0aW9uID8gdGhpcy5fcHJvZmlsZU5vZGUuc291cmNlQ29kZUxv
Y2F0aW9uLnNvdXJjZUNvZGUudXJsIDogIiI7CiAgICAgICAgIHJldHVybiB7dGV4dDogW3RoaXMu
bWFpblRpdGxlLCB1cmwgfHwgIiJdfTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3Rl
ZAogCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICBvbmF0dGFjaCgpCiAgICAgewogICAg
ICAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaC5j
YWxsKHRoaXMpOwogCkBAIC0xMTQsOSArMTEyLDkgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2Rl
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciB0b29sdGlwUHJlZml4ID0g
dGhpcy5tYWluVGl0bGUgKyAiXG4iOwogICAgICAgICB0aGlzLl9wcm9maWxlTm9kZS5zb3VyY2VD
b2RlTG9jYXRpb24ucG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uVG9vbHRpcCh0aGlzLmVsZW1l
bnQsIHRvb2x0aXBQcmVmaXgpOwotICAgIH0sCisgICAgfQogCi0gICAgb25wb3B1bGF0ZTogZnVu
Y3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmhhc0No
aWxkcmVuIHx8ICF0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbikKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Byb3BlcnRpZXNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUHJvcGVydGllc1NlY3Rpb24uanMKaW5kZXggNTcxNDcyYi4uZGQ5ZDk5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvcGVy
dGllc1NlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUHJvcGVydGllc1NlY3Rpb24uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE3ICsyMywxOCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2Vj
dGlvbiA9IGZ1bmN0aW9uKHRpdGxlLCBzdWJ0aXRsZSkKK1dlYkluc3BlY3Rvci5Qcm9wZXJ0aWVz
U2VjdGlvbiA9IGNsYXNzIFByb3BlcnRpZXNTZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNl
Y3Rpb24KIHsKLSAgICB0aGlzLnByb3BlcnRpZXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgib2wiKTsKLSAgICB0aGlzLnByb3BlcnRpZXNFbGVtZW50LmNsYXNzTmFtZSA9ICJwcm9w
ZXJ0aWVzIHByb3BlcnRpZXMtdHJlZSI7Ci0gICAgdGhpcy5wcm9wZXJ0aWVzRWxlbWVudC50YWJJ
bmRleCA9IDA7Ci0gICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUgPSBuZXcgVHJlZU91dGxp
bmUodGhpcy5wcm9wZXJ0aWVzRWxlbWVudCk7Ci0gICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxp
bmUuc2VjdGlvbiA9IHRoaXM7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIodGl0bGUsIHN1YnRpdGxlKTsKIAotICAgIFdlYkluc3BlY3Rvci5TZWN0aW9uLmNhbGwodGhp
cywgdGl0bGUsIHN1YnRpdGxlKTsKKyAgICAgICAgdGhpcy5wcm9wZXJ0aWVzRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisgICAgICAgIHRoaXMucHJvcGVydGllc0VsZW1l
bnQuY2xhc3NOYW1lID0gInByb3BlcnRpZXMgcHJvcGVydGllcy10cmVlIjsKKyAgICAgICAgdGhp
cy5wcm9wZXJ0aWVzRWxlbWVudC50YWJJbmRleCA9IDA7CisgICAgICAgIHRoaXMucHJvcGVydGll
c1RyZWVPdXRsaW5lID0gbmV3IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZSh0aGlzLnByb3BlcnRp
ZXNFbGVtZW50KTsKKyAgICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuc2VjdGlvbiA9
IHRoaXM7CiAKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wcm9wZXJ0aWVzRWxl
bWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnByb3BlcnRpZXNF
bGVtZW50KTsKKyAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24ucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29u
c29sZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNr
Q29uc29sZS5qcwppbmRleCA3ODE1MjQyLi5jYWFhYzYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGUuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MywxMDUgKzIzLDg3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCitXZWJJbnNw
ZWN0b3IuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0
b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX3RvZ2dsZU9yRm9jdXNLZXlib2FyZFNo
b3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5Fc2NhcGUsIHRoaXMuX3RvZ2dsZU9yRm9jdXMuYmlu
ZCh0aGlzKSk7Ci0KLSAgICB2YXIgbWFpbkZyYW1lRXhlY3V0aW9uQ29udGV4dCA9IG5ldyBXZWJJ
bnNwZWN0b3IuRXhlY3V0aW9uQ29udGV4dChXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLk1haW5G
cmFtZUNvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1h
aW4gRnJhbWUiKSwgdHJ1ZSwgbnVsbCk7Ci0gICAgdGhpcy5fbWFpbkZyYW1lRXhlY3V0aW9uQ29u
dGV4dFBhdGhDb21wb25lbnQgPSB0aGlzLl9jcmVhdGVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBv
bmVudChtYWluRnJhbWVFeGVjdXRpb25Db250ZXh0Lm5hbWUsIG1haW5GcmFtZUV4ZWN1dGlvbkNv
bnRleHQuaWRlbnRpZmllcik7Ci0gICAgdGhpcy5fc2VsZWN0ZWRFeGVjdXRpb25Db250ZXh0UGF0
aENvbXBvbmVudCA9IHRoaXMuX21haW5GcmFtZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50
OwotCi0gICAgdGhpcy5fb3RoZXJFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMgPSBbXTsK
LSAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJUb0V4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50
TWFwID0ge307Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLlF1aWNrQ29uc29sZS5TdHlsZUNsYXNzTmFtZSk7CisgICAgY29uc3RydWN0b3IoZWxl
bWVudCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLnByb21wdCA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdChudWxsLCAidGV4dC9qYXZhc2NyaXB0Iik7Ci0gICAg
dGhpcy5wcm9tcHQuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5RdWlja0NvbnNv
bGUuVGV4dFByb21wdFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMucHJvbXB0LmVsZW1lbnQpOworICAgICAgICB0aGlzLl90b2dnbGVPckZvY3VzS2V5
Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlLCB0aGlzLl90b2dnbGVPckZv
Y3VzLmJpbmQodGhpcykpOwogCi0gICAgLy8gRklYTUU6IENvZGVNaXJyb3IgNCBoYXMgYSBkZWZh
dWx0ICJFc2MiIGtleSBoYW5kbGVyIHRoYXQgYWx3YXlzIHByZXZlbnRzIGRlZmF1bHQuCi0gICAg
Ly8gT3VyIGtleWJvYXJkIHNob3J0Y3V0IGFib3ZlIHdpbGwgcmVzcGVjdCB0aGUgZGVmYXVsdCBw
cmV2ZW50ZWQgYW5kIGlnbm9yZSB0aGUgZXZlbnQKLSAgICAvLyBhbmQgbm90IHRvZ2dsZSB0aGUg
Y29uc29sZS4gSW5zdGFsbCBvdXIgb3duIEVzY2FwZSBrZXkgaGFuZGxlciB0aGF0IHdpbGwgdHJp
Z2dlcgotICAgIC8vIHdoZW4gdGhlIENvbnNvbGVQcm9tcHQgaXMgZW1wdHksIHRvIHJlc3RvcmUg
dG9nZ2xpbmcgYmVoYXZpb3IuIEEgYmV0dGVyIHNvbHV0aW9uCi0gICAgLy8gd291bGQgYmUgZm9y
IENvZGVNaXJyb3IncyBldmVudCBoYW5kbGVyIHRvIHBhc3MgaWYgaXQgZG9lc24ndCBkbyBhbnl0
aGluZy4KLSAgICB0aGlzLnByb21wdC5lc2NhcGVLZXlIYW5kbGVyV2hlbkVtcHR5ID0gZnVuY3Rp
b24oKSB7IFdlYkluc3BlY3Rvci50b2dnbGVTcGxpdENvbnNvbGUoKTsgfTsKKyAgICAgICAgdmFy
IG1haW5GcmFtZUV4ZWN1dGlvbkNvbnRleHQgPSBuZXcgV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNv
bnRleHQoV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5NYWluRnJhbWVDb250ZXh0RXhlY3V0aW9u
SWRlbnRpZmllciwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNYWluIEZyYW1lIiksIHRydWUsIG51
bGwpOworICAgICAgICB0aGlzLl9tYWluRnJhbWVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVu
dCA9IHRoaXMuX2NyZWF0ZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50KG1haW5GcmFtZUV4
ZWN1dGlvbkNvbnRleHQubmFtZSwgbWFpbkZyYW1lRXhlY3V0aW9uQ29udGV4dC5pZGVudGlmaWVy
KTsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudCA9
IHRoaXMuX21haW5GcmFtZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50OwogCi0gICAgdGhp
cy5wcm9tcHQuc2hvd24oKTsKKyAgICAgICAgdGhpcy5fb3RoZXJFeGVjdXRpb25Db250ZXh0UGF0
aENvbXBvbmVudHMgPSBbXTsKKyAgICAgICAgdGhpcy5fZnJhbWVJZGVudGlmaWVyVG9FeGVjdXRp
b25Db250ZXh0UGF0aENvbXBvbmVudE1hcCA9IHt9OwogCi0gICAgdGhpcy5fbmF2aWdhdGlvbkJh
ciA9IG5ldyBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhcjsKLSAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudCk7CisgICAg
ICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInF1aWNrLWNvbnNvbGUi
KTsKIAotICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRTZWxlY3Rvckl0ZW0gPSBuZXcgV2ViSW5z
cGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbTsKLSAgICB0aGlzLl9leGVjdXRp
b25Db250ZXh0U2VsZWN0b3JJdGVtLnNob3dTZWxlY3RvckFycm93cyA9IHRydWU7Ci0gICAgdGhp
cy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9leGVjdXRpb25Db250ZXh0
U2VsZWN0b3JJdGVtKTsKKyAgICAgICAgdGhpcy5wcm9tcHQgPSBuZXcgV2ViSW5zcGVjdG9yLkNv
bnNvbGVQcm9tcHQobnVsbCwgInRleHQvamF2YXNjcmlwdCIpOworICAgICAgICB0aGlzLnByb21w
dC5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5UZXh0UHJv
bXB0U3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMucHJvbXB0LmVsZW1lbnQpOwogCi0gICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dFNlbGVjdG9y
RGl2aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuRGl2aWRlck5hdmlnYXRpb25JdGVtOwotICAgIHRo
aXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fZXhlY3V0aW9uQ29udGV4
dFNlbGVjdG9yRGl2aWRlcik7CisgICAgICAgIC8vIEZJWE1FOiBDb2RlTWlycm9yIDQgaGFzIGEg
ZGVmYXVsdCAiRXNjIiBrZXkgaGFuZGxlciB0aGF0IGFsd2F5cyBwcmV2ZW50cyBkZWZhdWx0Lgor
ICAgICAgICAvLyBPdXIga2V5Ym9hcmQgc2hvcnRjdXQgYWJvdmUgd2lsbCByZXNwZWN0IHRoZSBk
ZWZhdWx0IHByZXZlbnRlZCBhbmQgaWdub3JlIHRoZSBldmVudAorICAgICAgICAvLyBhbmQgbm90
IHRvZ2dsZSB0aGUgY29uc29sZS4gSW5zdGFsbCBvdXIgb3duIEVzY2FwZSBrZXkgaGFuZGxlciB0
aGF0IHdpbGwgdHJpZ2dlcgorICAgICAgICAvLyB3aGVuIHRoZSBDb25zb2xlUHJvbXB0IGlzIGVt
cHR5LCB0byByZXN0b3JlIHRvZ2dsaW5nIGJlaGF2aW9yLiBBIGJldHRlciBzb2x1dGlvbgorICAg
ICAgICAvLyB3b3VsZCBiZSBmb3IgQ29kZU1pcnJvcidzIGV2ZW50IGhhbmRsZXIgdG8gcGFzcyBp
ZiBpdCBkb2Vzbid0IGRvIGFueXRoaW5nLgorICAgICAgICB0aGlzLnByb21wdC5lc2NhcGVLZXlI
YW5kbGVyV2hlbkVtcHR5ID0gZnVuY3Rpb24oKSB7IFdlYkluc3BlY3Rvci50b2dnbGVTcGxpdENv
bnNvbGUoKTsgfTsKIAotICAgIHRoaXMuX3JlYnVpbGRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBv
bmVudHMoKTsKKyAgICAgICAgdGhpcy5wcm9tcHQuc2hvd24oKTsKIAotICAgIC8vIENPTVBBVElC
SUxJVFkgKGlPUyA2KTogRXhlY3V0aW9uIGNvbnRleHRzIGRpZCBub3QgZXhpc3QsIGV2YWx1YXRp
b24gd29ya2VkIHdpdGggZnJhbWUgaWRzLgotICAgIGlmIChXZWJJbnNwZWN0b3IuRXhlY3V0aW9u
Q29udGV4dC5zdXBwb3J0ZWQoKSkgewotICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUGFnZUV4ZWN1dGlvbkNvbnRleHRD
aGFuZ2VkLCB0aGlzLl9mcmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0c0NoYW5nZWQsIHRoaXMpOwot
ICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RnJhbWUuRXZlbnQuRXhlY3V0aW9uQ29udGV4dHNDbGVhcmVkLCB0aGlzLl9mcmFtZUV4ZWN1dGlv
bkNvbnRleHRzQ2xlYXJlZCwgdGhpcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZy
YW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50LkZyYW1lV2FzQWRkZWQsIHRoaXMuX2ZyYW1lQWRkZWQs
IHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuRnJhbWVX
YXNSZW1vdmVkLCB0aGlzLl9mcmFtZVJlbW92ZWQsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0
b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJl
c291cmNlRGlkQ2hhbmdlLCB0aGlzLl9mcmFtZU1haW5SZXNvdXJjZUNoYW5nZWQsIHRoaXMpOwot
ICAgIH0KKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuUXVp
Y2tDb25zb2xlTmF2aWdhdGlvbkJhcjsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOwogCi0gICAgV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9kZWJ1Z2dlckFjdGl2ZUNhbGxG
cmFtZURpZENoYW5nZSwgdGhpcyk7Ci19OworICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0
U2VsZWN0b3JJdGVtID0gbmV3IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlv
bkl0ZW07CisgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRTZWxlY3Rvckl0ZW0uc2hvd1Nl
bGVjdG9yQXJyb3dzID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZp
Z2F0aW9uSXRlbSh0aGlzLl9leGVjdXRpb25Db250ZXh0U2VsZWN0b3JJdGVtKTsKIAotV2ViSW5z
cGVjdG9yLlF1aWNrQ29uc29sZS5TdHlsZUNsYXNzTmFtZSA9ICJxdWljay1jb25zb2xlIjsKLVdl
Ykluc3BlY3Rvci5RdWlja0NvbnNvbGUuU2hvd2luZ0xvZ0NsYXNzTmFtZSA9ICJzaG93aW5nLWxv
ZyI7Ci1XZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLk5hdmlnYXRpb25CYXJDb250YWluZXJTdHls
ZUNsYXNzTmFtZSA9ICJuYXZpZ2F0aW9uLWJhci1jb250YWluZXIiOwotV2ViSW5zcGVjdG9yLlF1
aWNrQ29uc29sZS5OYXZpZ2F0aW9uQmFyU3BhY2VyU3R5bGVDbGFzc05hbWUgPSAibmF2aWdhdGlv
bi1iYXItc3BhY2VyIjsKLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuVGV4dFByb21wdFN0eWxl
Q2xhc3NOYW1lID0gInRleHQtcHJvbXB0IjsKLQotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5U
b29sYmFyU2luZ2xlTGluZUhlaWdodCA9IDIxOwotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5U
b29sYmFyUHJvbXB0UGFkZGluZyA9IDQ7Ci1XZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLlRvb2xi
YXJUb3BCb3JkZXIgPSAxOworICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0U2VsZWN0b3JE
aXZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW07CisgICAgICAg
IHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fZXhlY3V0aW9uQ29u
dGV4dFNlbGVjdG9yRGl2aWRlcik7CiAKLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuTWFpbkZy
YW1lQ29udGV4dEV4ZWN1dGlvbklkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgICAgIHRoaXMu
X3JlYnVpbGRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMoKTsKIAotV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZS5FdmVudCA9IHsKLSAgICBEaWRSZXNpemU6ICJxdWljay1jb25zb2xlLWRp
ZC1yZXNpemUiCi19OworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgNik6IEV4ZWN1dGlv
biBjb250ZXh0cyBkaWQgbm90IGV4aXN0LCBldmFsdWF0aW9uIHdvcmtlZCB3aXRoIGZyYW1lIGlk
cy4KKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0LnN1cHBvcnRlZCgp
KSB7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRnJhbWUuRXZlbnQuUGFnZUV4ZWN1dGlvbkNvbnRleHRDaGFuZ2VkLCB0aGlzLl9m
cmFtZVBhZ2VFeGVjdXRpb25Db250ZXh0c0NoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50
LkV4ZWN1dGlvbkNvbnRleHRzQ2xlYXJlZCwgdGhpcy5fZnJhbWVFeGVjdXRpb25Db250ZXh0c0Ns
ZWFyZWQsIHRoaXMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1l
UmVzb3VyY2VNYW5hZ2VyLkV2ZW50LkZyYW1lV2FzQWRkZWQsIHRoaXMuX2ZyYW1lQWRkZWQsIHRo
aXMpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lUmVzb3VyY2VNYW5hZ2VyLkV2ZW50LkZyYW1l
V2FzUmVtb3ZlZCwgdGhpcy5fZnJhbWVSZW1vdmVkLCB0aGlzKTsKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5N
YWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX2ZyYW1lTWFpblJlc291cmNlQ2hhbmdlZCwgdGhp
cyk7CisgICAgICAgIH0KIAotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUsCisgICAgICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LkFjdGl2ZUNhbGxGcmFtZURpZENoYW5nZSwgdGhpcy5fZGVi
dWdnZXJBY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Vs
ZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF2aWdhdGlvbkJhcigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkJhcjsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBleGVjdXRpb25Db250ZXh0SWRlbnRpZmllcigpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fc2VsZWN0ZWRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudC5fZXhlY3V0aW9uQ29u
dGV4dElkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0
aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgLy8gQSBoYXJkIG1heGlt
dW0gc2l6ZSBvZiAzMyUgb2YgdGhlIHdpbmRvdy4KLSAgICAgICAgY29uc3QgbWF4aW11bUFsbG93
ZWRIZWlnaHQgPSBNYXRoLnJvdW5kKHdpbmRvdy5pbm5lckhlaWdodCAqIDAuMzMpOworICAgICAg
ICB2YXIgbWF4aW11bUFsbG93ZWRIZWlnaHQgPSBNYXRoLnJvdW5kKHdpbmRvdy5pbm5lckhlaWdo
dCAqIDAuMzMpOwogICAgICAgICB0aGlzLnByb21wdC5lbGVtZW50LnN0eWxlLm1heEhlaWdodCA9
IG1heGltdW1BbGxvd2VkSGVpZ2h0ICsgInB4IjsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbnNv
bGVMb2dWaXNpYmlsaXR5Q2hhbmdlZDogZnVuY3Rpb24odmlzaWJsZSkKKyAgICBjb25zb2xlTG9n
VmlzaWJpbGl0eUNoYW5nZWQodmlzaWJsZSkKICAgICB7CiAgICAgICAgIGlmICh2aXNpYmxlKQog
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlF1aWNr
Q29uc29sZS5TaG93aW5nTG9nQ2xhc3NOYW1lKTsKQEAgLTEyOSwxMSArMTExLDExIEBAIFdlYklu
c3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5TaG93aW5nTG9n
Q2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuUXVpY2tDb25zb2xlLkV2ZW50LkRpZFJlc2l6ZSk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKLSAgICBfZXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzVG9E
aXNwbGF5OiBmdW5jdGlvbigpCisgICAgX2V4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50c1Rv
RGlzcGxheSgpCiAgICAgewogICAgICAgICAvLyBJZiB3ZSBhcmUgaW4gdGhlIGRlYnVnZ2VyIHRo
ZSBjb25zb2xlIHdpbGwgdXNlIHRoZSBhY3RpdmUgY2FsbCBmcmFtZSwgZG9uJ3Qgc2hvdyB0aGUg
c2VsZWN0b3IuCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFjdGl2
ZUNhbGxGcmFtZSkKQEAgLTE0NCw5ICsxMjYsOSBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xl
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBbXTsKIAogICAgICAgICByZXR1cm4g
W3RoaXMuX3NlbGVjdGVkRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRdOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3JlYnVpbGRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHM6IGZ1bmN0
aW9uKCkKKyAgICBfcmVidWlsZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50cygpCiAgICAg
ewogICAgICAgICB2YXIgY29tcG9uZW50cyA9IHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRQYXRoQ29t
cG9uZW50c1RvRGlzcGxheSgpOwogICAgICAgICB2YXIgaXNFbXB0eSA9ICFjb21wb25lbnRzLmxl
bmd0aDsKQEAgLTE1NSw5ICsxMzcsOSBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0U2VsZWN0b3JJdGVtLmhp
ZGRlbiA9IGlzRW1wdHk7CiAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbnRleHRTZWxlY3RvckRp
dmlkZXIuaGlkZGVuID0gaXNFbXB0eTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZVBhZ2VF
eGVjdXRpb25Db250ZXh0c0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9mcmFtZVBhZ2VF
eGVjdXRpb25Db250ZXh0c0NoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUg
PSBldmVudC50YXJnZXQ7CiAKQEAgLTE3MCw5ICsxNTIsOSBAQCBXZWJJbnNwZWN0b3IuUXVpY2tD
b25zb2xlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkRXhlY3V0aW9u
Q29udGV4dFBhdGhDb21wb25lbnQgPSBuZXdFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudDsK
ICAgICAgICAgICAgIHRoaXMuX3JlYnVpbGRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMo
KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2ZyYW1lRXhlY3V0aW9uQ29udGV4
dHNDbGVhcmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZnJhbWVFeGVjdXRpb25Db250ZXh0c0Ns
ZWFyZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUgPSBldmVudC50YXJnZXQ7CiAK
QEAgLTE4NywyNyArMTY5LDI3IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcmVtb3ZlRXhlY3V0aW9uQ29udGV4dFBh
dGhDb21wb25lbnRGb3JGcmFtZShmcmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZnJhbWVB
ZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2ZyYW1lQWRkZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgZnJhbWUgPSBldmVudC5kYXRhLmZyYW1lOwogICAgICAgICB0aGlzLl9pbnNlcnRF
eGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudEZvckZyYW1lKGZyYW1lKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9mcmFtZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9mcmFtZVJlbW92
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWUgPSBldmVudC5kYXRhLmZyYW1lOwog
ICAgICAgICB0aGlzLl9yZW1vdmVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudEZvckZyYW1l
KGZyYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZU1haW5SZXNvdXJjZUNoYW5nZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9mcmFtZU1haW5SZXNvdXJjZUNoYW5nZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB2YXIgZnJhbWUgPSBldmVudC50YXJnZXQ7CiAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50Rm9yRnJhbWUoZnJhbWUpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2NyZWF0ZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50OiBmdW5j
dGlvbihuYW1lLCBpZGVudGlmaWVyKQorICAgIF9jcmVhdGVFeGVjdXRpb25Db250ZXh0UGF0aENv
bXBvbmVudChuYW1lLCBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgdmFyIHBhdGhDb21wb25l
bnQgPSBuZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQobmFtZSwgImV4
ZWN1dGlvbi1jb250ZXh0IiwgaWRlbnRpZmllciwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgIHBhdGhD
b21wb25lbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENv
bXBvbmVudC5FdmVudC5TaWJsaW5nV2FzU2VsZWN0ZWQsIHRoaXMuX3BhdGhDb21wb25lbnRTZWxl
Y3RlZCwgdGhpcyk7CkBAIC0yMTUsOSArMTk3LDkgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29s
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHBhdGhDb21wb25lbnQudHJ1bmNhdGVkRGlzcGxheU5h
bWVMZW5ndGggPSA1MDsKICAgICAgICAgcGF0aENvbXBvbmVudC5fZXhlY3V0aW9uQ29udGV4dElk
ZW50aWZpZXIgPSBpZGVudGlmaWVyOwogICAgICAgICByZXR1cm4gcGF0aENvbXBvbmVudDsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9jcmVhdGVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudEZy
b21GcmFtZTogZnVuY3Rpb24oZnJhbWUpCisgICAgX2NyZWF0ZUV4ZWN1dGlvbkNvbnRleHRQYXRo
Q29tcG9uZW50RnJvbUZyYW1lKGZyYW1lKQogICAgIHsKICAgICAgICAgdmFyIG5hbWUgPSBmcmFt
ZS5uYW1lID8gZnJhbWUubmFtZSArICIgXHUyMDE0ICIgKyBmcmFtZS5tYWluUmVzb3VyY2UuZGlz
cGxheU5hbWUgOiBmcmFtZS5tYWluUmVzb3VyY2UuZGlzcGxheU5hbWU7CiAgICAgICAgIHZhciBp
ZGVudGlmaWVyID0gV2ViSW5zcGVjdG9yLkV4ZWN1dGlvbkNvbnRleHQuc3VwcG9ydGVkKCkgPyBm
cmFtZS5wYWdlRXhlY3V0aW9uQ29udGV4dC5pZCA6IGZyYW1lLmlkOwpAQCAtMjI2LDkgKzIwOCw5
IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlID0gewogICAgICAgICBwYXRo
Q29tcG9uZW50Ll9mcmFtZSA9IGZyYW1lOwogCiAgICAgICAgIHJldHVybiBwYXRoQ29tcG9uZW50
OwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbXBhcmVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBv
bmVudHM6IGZ1bmN0aW9uKGEsIGIpCisgICAgX2NvbXBhcmVFeGVjdXRpb25Db250ZXh0UGF0aENv
bXBvbmVudHMoYSwgYikKICAgICB7CiAgICAgICAgIC8vICJNYWluIEZyYW1lIiBhbHdheXMgb24g
dG9wLgogICAgICAgICBpZiAoIWEuX2ZyYW1lKQpAQCAtMjQzLDkgKzIyNSw5IEBAIFdlYkluc3Bl
Y3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIDE7CiAK
ICAgICAgICAgcmV0dXJuIGEuZGlzcGxheU5hbWUubG9jYWxlQ29tcGFyZShiLmRpc3BsYXlOYW1l
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pbnNlcnRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBv
bmVudEZvckZyYW1lOiBmdW5jdGlvbihmcmFtZSwgc2tpcFJlYnVpbGQpCisgICAgX2luc2VydEV4
ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50Rm9yRnJhbWUoZnJhbWUsIHNraXBSZWJ1aWxkKQog
ICAgIHsKICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1
cm4gdGhpcy5fbWFpbkZyYW1lRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQ7CkBAIC0yNzYs
OSArMjU4LDkgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLl9yZWJ1aWxkRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzKCk7CiAK
ICAgICAgICAgcmV0dXJuIGV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50OwotICAgIH0sCisg
ICAgfQogCi0gICAgX3JlbW92ZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50Rm9yRnJhbWU6
IGZ1bmN0aW9uKGZyYW1lLCBza2lwUmVidWlsZCkKKyAgICBfcmVtb3ZlRXhlY3V0aW9uQ29udGV4
dFBhdGhDb21wb25lbnRGb3JGcmFtZShmcmFtZSwgc2tpcFJlYnVpbGQpCiAgICAgewogICAgICAg
ICBpZiAoZnJhbWUuaXNNYWluRnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMwNiw5
ICsyODgsOSBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBpZiAoIXNraXBSZWJ1aWxkKQogICAgICAgICAgICAgdGhpcy5fcmVidWlsZEV4ZWN1dGlv
bkNvbnRleHRQYXRoQ29tcG9uZW50cygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUV4
ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50Rm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1lKQorICAg
IF91cGRhdGVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudEZvckZyYW1lKGZyYW1lKQogICAg
IHsKICAgICAgICAgaWYgKGZyYW1lLmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0zMjYsOSArMzA4LDkgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9u
ZW50ID0gbmV3RXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQ7CiAKICAgICAgICAgdGhpcy5f
cmVidWlsZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50cygpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BhdGhD
b21wb25lbnRTZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5kYXRhLnBh
dGhDb21wb25lbnQgPT09IHRoaXMuX3NlbGVjdGVkRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25l
bnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMzYsMTkgKzMxOCwxOSBAQCBXZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRFeGVj
dXRpb25Db250ZXh0UGF0aENvbXBvbmVudCA9IGV2ZW50LmRhdGEucGF0aENvbXBvbmVudDsKIAog
ICAgICAgICB0aGlzLl9yZWJ1aWxkRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfcGF0aENvbXBvbmVudENsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9wYXRoQ29tcG9uZW50Q2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
cHJvbXB0LmZvY3VzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVidWdnZXJBY3RpdmVDYWxs
RnJhbWVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kZWJ1Z2dlckFjdGl2ZUNhbGxG
cmFtZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlYnVpbGRFeGVjdXRp
b25Db250ZXh0UGF0aENvbXBvbmVudHMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90b2dnbGVP
ckZvY3VzOiBmdW5jdGlvbihldmVudCkKKyAgICBfdG9nZ2xlT3JGb2N1cyhldmVudCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLnByb21wdC5mb2N1c2VkKQogICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnRvZ2dsZVNwbGl0Q29uc29sZSgpOwpAQCAtMzU3LDQgKzMzOSwxNyBAQCBXZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3Iu
UXVpY2tDb25zb2xlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZTsKK1dlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuU2hvd2luZ0xvZ0NsYXNzTmFtZSA9
ICJzaG93aW5nLWxvZyI7CitXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLk5hdmlnYXRpb25CYXJD
b250YWluZXJTdHlsZUNsYXNzTmFtZSA9ICJuYXZpZ2F0aW9uLWJhci1jb250YWluZXIiOworV2Vi
SW5zcGVjdG9yLlF1aWNrQ29uc29sZS5OYXZpZ2F0aW9uQmFyU3BhY2VyU3R5bGVDbGFzc05hbWUg
PSAibmF2aWdhdGlvbi1iYXItc3BhY2VyIjsKK1dlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuVGV4
dFByb21wdFN0eWxlQ2xhc3NOYW1lID0gInRleHQtcHJvbXB0IjsKKworV2ViSW5zcGVjdG9yLlF1
aWNrQ29uc29sZS5Ub29sYmFyU2luZ2xlTGluZUhlaWdodCA9IDIxOworV2ViSW5zcGVjdG9yLlF1
aWNrQ29uc29sZS5Ub29sYmFyUHJvbXB0UGFkZGluZyA9IDQ7CitXZWJJbnNwZWN0b3IuUXVpY2tD
b25zb2xlLlRvb2xiYXJUb3BCb3JkZXIgPSAxOworCitXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xl
Lk1haW5GcmFtZUNvbnRleHRFeGVjdXRpb25JZGVudGlmaWVyID0gdW5kZWZpbmVkOworCitXZWJJ
bnNwZWN0b3IuUXVpY2tDb25zb2xlLkV2ZW50ID0geworICAgIERpZFJlc2l6ZTogInF1aWNrLWNv
bnNvbGUtZGlkLXJlc2l6ZSIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGVOYXZpZ2F0aW9uQmFyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlTmF2aWdhdGlv
bkJhci5qcwppbmRleCAyOTEwOGU3Li4xNDM2ZTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGVOYXZpZ2F0aW9uQmFyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29u
c29sZU5hdmlnYXRpb25CYXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI0ICsyMywyMyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGVOYXZpZ2F0
aW9uQmFyID0gZnVuY3Rpb24oZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1zKQorV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZU5hdmlnYXRpb25CYXIgPSBjbGFzcyBRdWlja0NvbnNvbGVOYXZpZ2F0aW9u
QmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKIHsKLSAgICBXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkJhci5jYWxsKHRoaXMsIGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcyk7Ci19
OworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcykKKyAgICB7CisgICAg
ICAgIHN1cGVyKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcyk7CisgICAgfQogCi1XZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGVOYXZpZ2F0aW9uQmFyLAorICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IHNpemVzVG9GaXQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBhZGROYXZpZ2F0aW9uSXRlbTogZnVuY3Rpb24obmF2aWdhdGlv
bkl0ZW0pCisgICAgYWRkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0pCiAgICAgewogICAg
ICAgICAvLyBBZGQgbmV3IG5hdmlnYXRpb24gaXRlbXMgdG8gdGhlIGxlZnQuCiAgICAgICAgIHJl
dHVybiB0aGlzLmluc2VydE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtLCAwKTsKICAgICB9
CiB9OwotCi1XZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhci5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmFkaW9CdXR0
b25OYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1JhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMKaW5kZXggYWM4MmQ5OS4uYmViZmVi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMyAr
MjMsMTkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIs
IHRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCkgewotICAgIFdlYkluc3Bl
Y3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIHRvb2xUaXAs
IGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgbnVsbCwgInRhYiIpOwotfTsKLQotV2Vi
SW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUgPSAicmFk
aW8iOwotV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uQWN0aXZlU3R5bGVD
bGFzc05hbWUgPSAiYWN0aXZlIjsKLVdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25J
dGVtLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUgPSAic2VsZWN0ZWQiOwotCi1XZWJJbnNwZWN0b3Iu
UmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLAorV2ViSW5zcGVjdG9yLlJh
ZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBSYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVt
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtCit7CisgICAgY29uc3Ry
dWN0b3IoaWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0
KQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2UsIGltYWdl
V2lkdGgsIGltYWdlSGVpZ2h0LCBudWxsLCAidGFiIik7CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgc2VsZWN0ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2Vs
ZWN0ZWQoZmxhZykKICAgICB7CkBAIC01MCwxMiArNDYsMTIgQEAgV2ViSW5zcGVjdG9yLlJhZGlv
QnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuc2V0
QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwgImZhbHNlIik7CiAgICAgICAgIH0KLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBhY3RpdmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uQWN0aXZlU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGFj
dGl2ZShmbGFnKQogICAgIHsKQEAgLTYzLDkgKzU5LDkgQEAgV2ViSW5zcGVjdG9yLlJhZGlvQnV0
dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uQWN0
aXZlU3R5bGVDbGFzc05hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRl
bS5BY3RpdmVTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZW5lcmF0ZVN0
eWxlVGV4dDogZnVuY3Rpb24ocGFyZW50U2VsZWN0b3IpCisgICAgZ2VuZXJhdGVTdHlsZVRleHQo
cGFyZW50U2VsZWN0b3IpCiAgICAgewogICAgICAgICB2YXIgY2xhc3NOYW1lcyA9IHRoaXMuX2Ns
YXNzTmFtZXMuam9pbigiLiIpOwogCkBAIC03OSw5ICs3NSw5IEBAIFdlYkluc3BlY3Rvci5SYWRp
b0J1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgc3R5bGVUZXh0ICs9
IHBhcmVudFNlbGVjdG9yICsgIiAuIiArIGNsYXNzTmFtZXMgKyAiLnNlbGVjdGVkOm5vdCguZGlz
YWJsZWQpOmFjdGl2ZSA+IC5nbHlwaCB7IGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtY2FudmFz
KCIgKyB0aGlzLl9jYW52YXNJZGVudGlmaWVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbS5TdGF0ZXMuQWN0aXZlRm9jdXMpICsgIik7IH1cbiI7CiAKICAgICAgICAgcmV0dXJuIHN0
eWxlVGV4dDsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oZXhw
YW5kT25seSkKKyAgICB1cGRhdGVMYXlvdXQoZXhwYW5kT25seSkKICAgICB7CiAgICAgICAgIGlm
IChleHBhbmRPbmx5KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTAxLDExICs5NywxNSBAQCBX
ZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuUmFkaW9C
dXR0b25OYXZpZ2F0aW9uSXRlbS5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAiZmFsc2UiKTsKICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgLy8gUHJpdmF0ZQorICAgIC8vIFByb3RlY3Rl
ZAogCi0gICAgX2FkZGl0aW9uYWxDbGFzc05hbWVzOiBbV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5TdHlsZUNsYXNzTmFtZV0sCisgICAgZ2V0IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdXBlci5hZGRpdGlvbmFsQ2xhc3NOYW1lcy51bnNoaWZ0
KCJyYWRpbyIpOworICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRp
b25JdGVtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0ucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
QWN0aXZlU3R5bGVDbGFzc05hbWUgPSAiYWN0aXZlIjsKK1dlYkluc3BlY3Rvci5SYWRpb0J1dHRv
bk5hdmlnYXRpb25JdGVtLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUgPSAic2VsZWN0ZWQiOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVwbGF5
RGFzaGJvYXJkVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1JlcGxheURhc2hib2FyZFZpZXcuanMKaW5kZXggYTUzZWExMS4uOTJjYmZiOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVwbGF5RGFz
aGJvYXJkVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9SZXBsYXlEYXNoYm9hcmRWaWV3LmpzCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmln
aHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjMsNjUgKzI0LDU2IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZp
ZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5SZXBsYXlEYXNo
Ym9hcmRWaWV3ID0gY2xhc3MgUmVwbGF5RGFzaGJvYXJkVmlldyBleHRlbmRzIFdlYkluc3BlY3Rv
ci5EYXNoYm9hcmRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuY2FsbCh0
aGlzLCByZXByZXNlbnRlZE9iamVjdCwgInJlcGxheSIpOwotCi0gICAgdGhpcy5fbmF2aWdhdGlv
bkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKLSAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKLQotICAgIHRoaXMuX2Nh
cHR1cmVCdXR0b25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRp
b25JdGVtKCJyZXBsYXktZGFzaGJvYXJkLWNhcHR1cmUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlN0YXJ0IFJlY29yZGluZyIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3AgUmVjb3JkaW5n
IiksICJJbWFnZXMvUmVwbGF5UmVjb3JkaW5nQnV0dG9uLnN2ZyIsIDE2LCAxNik7Ci0gICAgdGhp
cy5fY2FwdHVyZUJ1dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fY2FwdHVyZUJ1dHRvbkl0ZW1DbGlj
a2VkLCB0aGlzKTsKLSAgICB0aGlzLl9jYXB0dXJlQnV0dG9uSXRlbS5oaWRkZW4gPSB0cnVlOwot
ICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fY2FwdHVyZUJ1
dHRvbkl0ZW0pOwotCi0gICAgdGhpcy5fcmVwbGF5QnV0dG9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0
b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInJlcGxheS1kYXNoYm9hcmQtcmVwbGF5Iiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBQbGF5YmFjayIpLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlBhdXNlIFBsYXliYWNrIiksICJJbWFnZXMvUmVwbGF5UGxheUJ1dHRvbi5zdmciLCAi
SW1hZ2VzL1JlcGxheVBhdXNlQnV0dG9uLnN2ZyIsIDE2LCAxNik7Ci0gICAgdGhpcy5fcmVwbGF5
QnV0dG9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9yZXBsYXlCdXR0b25JdGVtQ2xpY2tlZCwgdGhpcyk7
Ci0gICAgdGhpcy5fcmVwbGF5QnV0dG9uSXRlbS5oaWRkZW4gPSB0cnVlOwotICAgIHRoaXMuX25h
dmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fcmVwbGF5QnV0dG9uSXRlbSk7Ci0K
LSAgICAvLyBBZGQgZXZlbnRzIHJlcXVpcmVkIHRvIHRyYWNrIGNhcHR1cmUgYW5kIHJlcGxheSBz
dGF0ZS4KLSAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2ZW50LkNhcHR1cmVTdGFydGVkLCB0aGlzLl9jYXB0
dXJlU3RhcnRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5FdmVudC5DYXB0dXJlU3RvcHBl
ZCwgdGhpcy5fY2FwdHVyZVN0b3BwZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5yZXBsYXlN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuRXZlbnQu
UGxheWJhY2tTdGFydGVkLCB0aGlzLl9wbGF5YmFja1N0YXJ0ZWQsIHRoaXMpOwotICAgIFdlYklu
c3BlY3Rvci5yZXBsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlcGxh
eU1hbmFnZXIuRXZlbnQuUGxheWJhY2tQYXVzZWQsIHRoaXMuX3BsYXliYWNrUGF1c2VkLCB0aGlz
KTsKLSAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2ZW50LlBsYXliYWNrRmluaXNoZWQsIHRoaXMuX3BsYXli
YWNrRmluaXNoZWQsIHRoaXMpOwotCi0gICAgLy8gTWFudWFsbHkgaW5pdGlhbGl6ZSBzdHlsZSBj
bGFzc2VzIGJ5IHF1ZXJ5aW5nIGN1cnJlbnQgcmVwbGF5IHN0YXRlLgotICAgIGlmIChXZWJJbnNw
ZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgPT09IFdlYkluc3BlY3Rvci5SZXBsYXlN
YW5hZ2VyLlNlc3Npb25TdGF0ZS5DYXB0dXJpbmcpCi0gICAgICAgIHRoaXMuX2NhcHR1cmVTdGFy
dGVkKCk7Ci0gICAgZWxzZSBpZiAoV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvblN0
YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuSW5hY3RpdmUp
Ci0gICAgICAgIHRoaXMuX2NhcHR1cmVTdG9wcGVkKCk7Ci0gICAgLy8gUmVwbGF5TWFuYWdlci5z
ZXNzaW9uU3RhdGUgbXVzdCBiZSBSZXBsYXlpbmcuCi0gICAgZWxzZSBpZiAoV2ViSW5zcGVjdG9y
LnJlcGxheU1hbmFnZXIuc2VnbWVudFN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdl
ci5TZWdtZW50U3RhdGUuRGlzcGF0Y2hpbmcpCi0gICAgICAgIHRoaXMuX3BsYXliYWNrU3RhcnRl
ZCgpOwotICAgIC8vIFJlcGxheU1hbmFnZXIuc2Vzc2lvblN0YXRlIG11c3QgYmUgVW5sb2FkZWQg
b3IgTG9hZGVkLCBzbyBleGVjdXRpb24gaXMgcGF1c2VkLgotICAgIGVsc2UKLSAgICAgICAgdGhp
cy5fcGxheWJhY2tQYXVzZWQoKTsKLX07Ci0KLS8vIENsYXNzIG5hbWVzIGZvciB0b3AtbGV2ZWwg
ZmxleCBpdGVtcyB3aXRoaW4gdGhlIHJlcGxheSBkYXNoYm9hcmQuCi1XZWJJbnNwZWN0b3IuUmVw
bGF5RGFzaGJvYXJkVmlldy5SZWNvcmRpbmdDb250YWluZXJTdHlsZUNsYXNzTmFtZSA9ICJyZWNv
cmRpbmctY29udGFpbmVyIjsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0LCAicmVwbGF5Iik7CiAKLS8vIENs
YXNzIG5hbWVzIGZvciBzaW5nbGUgYnV0dG9ucy4KLVdlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9h
cmRWaWV3LlJlY29yZEJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gInJlY29yZC1idXR0b24iOwotV2Vi
SW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZpZXcuUmVwbGF5QnV0dG9uU3R5bGVDbGFzc05hbWUg
PSAicmVwbGF5LWJ1dHRvbiI7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXI7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuUmVwbGF5RGFz
aGJvYXJkVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5S
ZXBsYXlEYXNoYm9hcmRWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRhc2hib2Fy
ZFZpZXcucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9jYXB0dXJlQnV0dG9uSXRlbSA9IG5ldyBX
ZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgicmVwbGF5LWRhc2hib2Fy
ZC1jYXB0dXJlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBSZWNvcmRpbmciKSwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIFJlY29yZGluZyIpLCAiSW1hZ2VzL1JlcGxheVJlY29y
ZGluZ0J1dHRvbi5zdmciLCAxNiwgMTYpOworICAgICAgICB0aGlzLl9jYXB0dXJlQnV0dG9uSXRl
bS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVu
dC5DbGlja2VkLCB0aGlzLl9jYXB0dXJlQnV0dG9uSXRlbUNsaWNrZWQsIHRoaXMpOworICAgICAg
ICB0aGlzLl9jYXB0dXJlQnV0dG9uSXRlbS5oaWRkZW4gPSB0cnVlOworICAgICAgICB0aGlzLl9u
YXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX2NhcHR1cmVCdXR0b25JdGVtKTsK
IAorICAgICAgICB0aGlzLl9yZXBsYXlCdXR0b25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5Ub2dn
bGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgicmVwbGF5LWRhc2hib2FyZC1yZXBsYXkiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFBsYXliYWNrIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
UGF1c2UgUGxheWJhY2siKSwgIkltYWdlcy9SZXBsYXlQbGF5QnV0dG9uLnN2ZyIsICJJbWFnZXMv
UmVwbGF5UGF1c2VCdXR0b24uc3ZnIiwgMTYsIDE2KTsKKyAgICAgICAgdGhpcy5fcmVwbGF5QnV0
dG9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5FdmVudC5DbGlja2VkLCB0aGlzLl9yZXBsYXlCdXR0b25JdGVtQ2xpY2tlZCwgdGhpcyk7Cisg
ICAgICAgIHRoaXMuX3JlcGxheUJ1dHRvbkl0ZW0uaGlkZGVuID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9yZXBsYXlCdXR0b25JdGVt
KTsKKworICAgICAgICAvLyBBZGQgZXZlbnRzIHJlcXVpcmVkIHRvIHRyYWNrIGNhcHR1cmUgYW5k
IHJlcGxheSBzdGF0ZS4KKyAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5FdmVudC5DYXB0dXJlU3RhcnRl
ZCwgdGhpcy5fY2FwdHVyZVN0YXJ0ZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IucmVw
bGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2
ZW50LkNhcHR1cmVTdG9wcGVkLCB0aGlzLl9jYXB0dXJlU3RvcHBlZCwgdGhpcyk7CisgICAgICAg
IFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlJlcGxheU1hbmFnZXIuRXZlbnQuUGxheWJhY2tTdGFydGVkLCB0aGlzLl9wbGF5YmFja1N0YXJ0
ZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2ZW50LlBsYXliYWNrUGF1c2VkLCB0
aGlzLl9wbGF5YmFja1BhdXNlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuRXZlbnQu
UGxheWJhY2tGaW5pc2hlZCwgdGhpcy5fcGxheWJhY2tGaW5pc2hlZCwgdGhpcyk7CisKKyAgICAg
ICAgLy8gTWFudWFsbHkgaW5pdGlhbGl6ZSBzdHlsZSBjbGFzc2VzIGJ5IHF1ZXJ5aW5nIGN1cnJl
bnQgcmVwbGF5IHN0YXRlLgorICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIu
c2Vzc2lvblN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUu
Q2FwdHVyaW5nKQorICAgICAgICAgICAgdGhpcy5fY2FwdHVyZVN0YXJ0ZWQoKTsKKyAgICAgICAg
ZWxzZSBpZiAoV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvblN0YXRlID09PSBXZWJJ
bnNwZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuSW5hY3RpdmUpCisgICAgICAgICAg
ICB0aGlzLl9jYXB0dXJlU3RvcHBlZCgpOworICAgICAgICAvLyBSZXBsYXlNYW5hZ2VyLnNlc3Np
b25TdGF0ZSBtdXN0IGJlIFJlcGxheWluZy4KKyAgICAgICAgZWxzZSBpZiAoV2ViSW5zcGVjdG9y
LnJlcGxheU1hbmFnZXIuc2VnbWVudFN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdl
ci5TZWdtZW50U3RhdGUuRGlzcGF0Y2hpbmcpCisgICAgICAgICAgICB0aGlzLl9wbGF5YmFja1N0
YXJ0ZWQoKTsKKyAgICAgICAgLy8gUmVwbGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgbXVzdCBiZSBV
bmxvYWRlZCBvciBMb2FkZWQsIHNvIGV4ZWN1dGlvbiBpcyBwYXVzZWQuCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHRoaXMuX3BsYXliYWNrUGF1c2VkKCk7CisgICAgfQorICAgIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF9jYXB0dXJlQnV0dG9uSXRlbUNsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAg
ICBfY2FwdHVyZUJ1dHRvbkl0ZW1DbGlja2VkKCkKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgIT09IFdlYkluc3BlY3Rvci5SZXBsYXlN
YW5hZ2VyLlNlc3Npb25TdGF0ZS5DYXB0dXJpbmcpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
cmVwbGF5TWFuYWdlci5zdGFydENhcHR1cmluZygpOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zdG9wQ2FwdHVyaW5nKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfcmVwbGF5QnV0dG9uSXRlbUNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9yZXBsYXlCdXR0b25JdGVtQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSAhPT0gV2ViSW5z
cGVjdG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLkNhcHR1cmluZywgIlRyaWVkIHRvIHN0
YXJ0IHJlcGxheWluZyB3aGlsZSBTZXNzaW9uU3RhdGUgaXMgQ2FwdHVyaW5nISIpOwogCkBAIC05
MSwzNCArODMsMzggQEAgV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucGF1c2VQbGF5YmFj
aygpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdl
ci5yZXBsYXlUb0NvbXBsZXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jYXB0dXJlU3Rh
cnRlZDogZnVuY3Rpb24oKQorICAgIF9jYXB0dXJlU3RhcnRlZCgpCiAgICAgewogICAgICAgICB0
aGlzLl9jYXB0dXJlQnV0dG9uSXRlbS5oaWRkZW4gPSBmYWxzZTsKICAgICAgICAgdGhpcy5fY2Fw
dHVyZUJ1dHRvbkl0ZW0uYWN0aXZhdGVkID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fcmVwbGF5QnV0
dG9uSXRlbS5oaWRkZW4gPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX2NhcHR1cmVTdG9w
cGVkOiBmdW5jdGlvbigpCisgICAgX2NhcHR1cmVTdG9wcGVkKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2NhcHR1cmVCdXR0b25JdGVtLmFjdGl2YXRlZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9j
YXB0dXJlQnV0dG9uSXRlbS5oaWRkZW4gPSB0cnVlOwogICAgICAgICB0aGlzLl9yZXBsYXlCdXR0
b25JdGVtLmhpZGRlbiA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX3BsYXliYWNrU3Rh
cnRlZDogZnVuY3Rpb24oKQorICAgIF9wbGF5YmFja1N0YXJ0ZWQoKQogICAgIHsKICAgICAgICAg
dGhpcy5fcmVwbGF5QnV0dG9uSXRlbS50b2dnbGVkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9wbGF5YmFja1BhdXNlZDogZnVuY3Rpb24oKQorICAgIF9wbGF5YmFja1BhdXNlZCgpCiAg
ICAgewogICAgICAgICB0aGlzLl9yZXBsYXlCdXR0b25JdGVtLnRvZ2dsZWQgPSBmYWxzZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9wbGF5YmFja0ZpbmlzaGVkOiBmdW5jdGlvbigpCisgICAgX3Bs
YXliYWNrRmluaXNoZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVwbGF5QnV0dG9uSXRlbS50
b2dnbGVkID0gZmFsc2U7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2Fy
ZFZpZXcuUmVjb3JkaW5nQ29udGFpbmVyU3R5bGVDbGFzc05hbWUgPSAicmVjb3JkaW5nLWNvbnRh
aW5lciI7CitXZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJkVmlldy5SZWNvcmRCdXR0b25TdHls
ZUNsYXNzTmFtZSA9ICJyZWNvcmQtYnV0dG9uIjsKK1dlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9h
cmRWaWV3LlJlcGxheUJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gInJlcGxheS1idXR0b24iOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzaXpl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc2l6ZXIu
anMKaW5kZXggNzEyNjExOS4uODkzZWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzaXplci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNpemVyLmpzCkBAIC0xLDQgKzEsNSBAQAogLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dApAQCAtMjMsNjEgKzI0LDQ5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlc2l6ZXIgPSBmdW5jdGlvbihydWxlT3JpZW50
YXRpb24sIGRlbGVnYXRlKSB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQoZGVsZWdhdGUp
OwotCi0gICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICB0aGlzLl9vcmllbnRhdGlv
biA9IHJ1bGVPcmllbnRhdGlvbjsKLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5SZXNpemVyLlN0eWxlQ2xhc3NOYW1lKTsKK1dlYkluc3BlY3Rvci5SZXNpemVyID0gY2xh
c3MgUmVzaXplciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rv
cihydWxlT3JpZW50YXRpb24sIGRlbGVnYXRlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoZGVsZWdhdGUpOwogCi0gICAgaWYgKHRoaXMuX29yaWVudGF0aW9uID09PSBXZWJJbnNwZWN0
b3IuUmVzaXplci5SdWxlT3JpZW50YXRpb24uSG9yaXpvbnRhbCkKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5SZXNpemVyLkhvcml6b250YWxSdWxlU3R5
bGVDbGFzc05hbWUpOwotICAgIGVsc2UgaWYgKHRoaXMuX29yaWVudGF0aW9uID09PSBXZWJJbnNw
ZWN0b3IuUmVzaXplci5SdWxlT3JpZW50YXRpb24uVmVydGljYWwpCi0gICAgICAgIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUmVzaXplci5WZXJ0aWNhbFJ1bGVTdHls
ZUNsYXNzTmFtZSk7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl9lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX3Jlc2l6ZXJNb3VzZURvd24uYmluZCh0aGlz
KSwgZmFsc2UpOwotICAgIHRoaXMuX3Jlc2l6ZXJNb3VzZU1vdmVkRXZlbnRMaXN0ZW5lciA9IHRo
aXMuX3Jlc2l6ZXJNb3VzZU1vdmVkLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5fcmVzaXplck1vdXNl
VXBFdmVudExpc3RlbmVyID0gdGhpcy5fcmVzaXplck1vdXNlVXAuYmluZCh0aGlzKTsKLX07Cisg
ICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7CisgICAgICAgIHRoaXMuX29yaWVudGF0
aW9uID0gcnVsZU9yaWVudGF0aW9uOworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgicmVzaXplciIpOwogCi1XZWJJbnNwZWN0b3IuUmVzaXplci5SdWxlT3JpZW50YXRpb24gPSB7
Ci0gICAgSG9yaXpvbnRhbDogU3ltYm9sKCJyZXNpemVyLXJ1bGUtb3JpZW50YXRpb24taG9yaXpv
bnRhbCIpLAotICAgIFZlcnRpY2FsOiBTeW1ib2woInJlc2l6ZXItcnVsZS1vcmllbnRhdGlvbi12
ZXJ0aWNhbCIpLAotfTsKLQotV2ViSW5zcGVjdG9yLlJlc2l6ZXIuU3R5bGVDbGFzc05hbWUgPSAi
cmVzaXplciI7Ci1XZWJJbnNwZWN0b3IuUmVzaXplci5Ib3Jpem9udGFsUnVsZVN0eWxlQ2xhc3NO
YW1lID0gImhvcml6b250YWwtcnVsZSI7Ci1XZWJJbnNwZWN0b3IuUmVzaXplci5WZXJ0aWNhbFJ1
bGVTdHlsZUNsYXNzTmFtZSA9ICJ2ZXJ0aWNhbC1ydWxlIjsKLVdlYkluc3BlY3Rvci5SZXNpemVy
LkdsYXNzUGFuZVN0eWxlQ2xhc3NOYW1lID0gImdsYXNzLXBhbmUtZm9yLWRyYWciOworICAgICAg
ICBpZiAodGhpcy5fb3JpZW50YXRpb24gPT09IFdlYkluc3BlY3Rvci5SZXNpemVyLlJ1bGVPcmll
bnRhdGlvbi5Ib3Jpem9udGFsKQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJob3Jpem9udGFsLXJ1bGUiKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5fb3JpZW50YXRp
b24gPT09IFdlYkluc3BlY3Rvci5SZXNpemVyLlJ1bGVPcmllbnRhdGlvbi5WZXJ0aWNhbCkKKyAg
ICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidmVydGljYWwtcnVsZSIpOwog
Ci1XZWJJbnNwZWN0b3IuUmVzaXplci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5SZXNpemVyLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGUsCisgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vk
b3duIiwgdGhpcy5fcmVzaXplck1vdXNlRG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAg
IHRoaXMuX3Jlc2l6ZXJNb3VzZU1vdmVkRXZlbnRMaXN0ZW5lciA9IHRoaXMuX3Jlc2l6ZXJNb3Vz
ZU1vdmVkLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuX3Jlc2l6ZXJNb3VzZVVwRXZlbnRMaXN0
ZW5lciA9IHRoaXMuX3Jlc2l6ZXJNb3VzZVVwLmJpbmQodGhpcyk7CisgICAgfQogCiAgICAgLy8g
UHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBvcmllbnRhdGlvbigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fb3JpZW50YXRpb247Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgaW5pdGlhbFBvc2l0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNpemVy
TW91c2VEb3duUG9zaXRpb24gfHwgTmFOOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX2N1cnJlbnRQb3NpdGlvbjogZnVuY3Rpb24oKQorICAgIF9jdXJyZW50UG9zaXRp
b24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX29yaWVudGF0aW9uID09PSBXZWJJbnNwZWN0
b3IuUmVzaXplci5SdWxlT3JpZW50YXRpb24uVmVydGljYWwpCiAgICAgICAgICAgICByZXR1cm4g
ZXZlbnQucGFnZVg7CkBAIC04NSw5ICs3NCw5IEBAIFdlYkluc3BlY3Rvci5SZXNpemVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBldmVudC5wYWdlWTsKIAogICAgICAgICBjb25z
b2xlLmFzc2VydChmYWxzZSwgIlNob3VsZCBub3QgYmUgcmVhY2hlZCEiKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9yZXNpemVyTW91c2VEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVzaXpl
ck1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDAg
fHwgZXZlbnQuY3RybEtleSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyNCwyMSArMTEzLDIx
IEBAIFdlYkluc3BlY3Rvci5SZXNpemVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5fZWxlbWVudERyYWdnaW5nR2xhc3NQYW5lLnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hp
bGQoV2ViSW5zcGVjdG9yLl9lbGVtZW50RHJhZ2dpbmdHbGFzc1BhbmUpOwogCiAgICAgICAgIHZh
ciBnbGFzc1BhbmVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
ICAgIGdsYXNzUGFuZUVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlJlc2l6ZXIuR2xh
c3NQYW5lU3R5bGVDbGFzc05hbWU7CisgICAgICAgIGdsYXNzUGFuZUVsZW1lbnQuY2xhc3NOYW1l
ID0gImdsYXNzLXBhbmUtZm9yLWRyYWciOwogICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENo
aWxkKGdsYXNzUGFuZUVsZW1lbnQpOwogICAgICAgICBXZWJJbnNwZWN0b3IuX2VsZW1lbnREcmFn
Z2luZ0dsYXNzUGFuZSA9IGdsYXNzUGFuZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
cmVzaXplck1vdXNlTW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZXNpemVyTW91c2VNb3Zl
ZChldmVudCkKICAgICB7CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAg
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogCiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fZGVs
ZWdhdGUucmVzaXplckRyYWdnaW5nID09PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhpcy5f
ZGVsZWdhdGUucmVzaXplckRyYWdnaW5nKHRoaXMsIHRoaXMuX3Jlc2l6ZXJNb3VzZURvd25Qb3Np
dGlvbiAtIHRoaXMuX2N1cnJlbnRQb3NpdGlvbigpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9y
ZXNpemVyTW91c2VVcDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jlc2l6ZXJNb3VzZVVwKGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTYyLDMgKzE1MSw4IEBAIFdlYkluc3BlY3Rvci5S
ZXNpemVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX3Jlc2l6ZXJNb3VzZURv
d25Qb3NpdGlvbjsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUmVzaXplci5SdWxlT3JpZW50
YXRpb24gPSB7CisgICAgSG9yaXpvbnRhbDogU3ltYm9sKCJyZXNpemVyLXJ1bGUtb3JpZW50YXRp
b24taG9yaXpvbnRhbCIpLAorICAgIFZlcnRpY2FsOiBTeW1ib2woInJlc2l6ZXItcnVsZS1vcmll
bnRhdGlvbi12ZXJ0aWNhbCIpLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDbHVzdGVyQ29u
dGVudFZpZXcuanMKaW5kZXggZWU2ZGFkYi4uZDE0NzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVz
b3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDM5ICsyMywzMSBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0
ZXJDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQorV2ViSW5zcGVjdG9yLlJlc291cmNl
Q2x1c3RlckNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9y
LkNsdXN0ZXJDb250ZW50Vmlldy5jYWxsKHRoaXMsIHJlc291cmNlKTsKLQotICAgIHRoaXMuX3Jl
c291cmNlID0gcmVzb3VyY2U7Ci0gICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHlwZURpZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VU
eXBlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlkRmluaXNoLCB0aGlzLl9yZXNv
dXJjZUxvYWRpbmdEaWRGaW5pc2gsIHRoaXMpOwotCi0gICAgZnVuY3Rpb24gY3JlYXRlUGF0aENv
bXBvbmVudChkaXNwbGF5TmFtZSwgY2xhc3NOYW1lLCBpZGVudGlmaWVyKQorICAgIGNvbnN0cnVj
dG9yKHJlc291cmNlKQogICAgIHsKLSAgICAgICAgdmFyIHBhdGhDb21wb25lbnQgPSBuZXcgV2Vi
SW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQoZGlzcGxheU5hbWUsIGNsYXNzTmFt
ZSwgaWRlbnRpZmllciwgZmFsc2UsIHRydWUpOwotICAgICAgICBwYXRoQ29tcG9uZW50LmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuRXZlbnQu
U2libGluZ1dhc1NlbGVjdGVkLCB0aGlzLl9wYXRoQ29tcG9uZW50U2VsZWN0ZWQsIHRoaXMpOwot
ICAgICAgICByZXR1cm4gcGF0aENvbXBvbmVudDsKLSAgICB9CisgICAgICAgIHN1cGVyKHJlc291
cmNlKTsKIAotICAgIHRoaXMuX3JlcXVlc3RQYXRoQ29tcG9uZW50ID0gY3JlYXRlUGF0aENvbXBv
bmVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVxdWVzdCIpLCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdEljb25TdHlsZUNsYXNzTmFt
ZSwgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJZGVudGlm
aWVyKTsKLSAgICB0aGlzLl9yZXNwb25zZVBhdGhDb21wb25lbnQgPSBjcmVhdGVQYXRoQ29tcG9u
ZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSIpLCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJY29uU3R5bGVDbGFzc05h
bWUsIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUlkZW50
aWZpZXIpOworICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICB0aGlz
Ll9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5U
eXBlRGlkQ2hhbmdlLCB0aGlzLl9yZXNvdXJjZVR5cGVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAg
ICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5F
dmVudC5Mb2FkaW5nRGlkRmluaXNoLCB0aGlzLl9yZXNvdXJjZUxvYWRpbmdEaWRGaW5pc2gsIHRo
aXMpOwogCi0gICAgdGhpcy5fcmVxdWVzdFBhdGhDb21wb25lbnQubmV4dFNpYmxpbmcgPSB0aGlz
Ll9yZXNwb25zZVBhdGhDb21wb25lbnQ7Ci0gICAgdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50
LnByZXZpb3VzU2libGluZyA9IHRoaXMuX3JlcXVlc3RQYXRoQ29tcG9uZW50OwotCi0gICAgdGhp
cy5fY3VycmVudENvbnRlbnRWaWV3U2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygi
cmVzb3VyY2UtY3VycmVudC12aWV3LSIgKyB0aGlzLl9yZXNvdXJjZS51cmwuaGFzaCwgV2ViSW5z
cGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWRlbnRpZmllcik7Ci19
OworICAgICAgICBmdW5jdGlvbiBjcmVhdGVQYXRoQ29tcG9uZW50KGRpc3BsYXlOYW1lLCBjbGFz
c05hbWUsIGlkZW50aWZpZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwYXRoQ29tcG9u
ZW50ID0gbmV3IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50KGRpc3BsYXlO
YW1lLCBjbGFzc05hbWUsIGlkZW50aWZpZXIsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIHBh
dGhDb21wb25lbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0
aENvbXBvbmVudC5FdmVudC5TaWJsaW5nV2FzU2VsZWN0ZWQsIHRoaXMuX3BhdGhDb21wb25lbnRT
ZWxlY3RlZCwgdGhpcyk7CisgICAgICAgICAgICByZXR1cm4gcGF0aENvbXBvbmVudDsKKyAgICAg
ICAgfQogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ29udGVudFZp
ZXdJZGVudGlmaWVyQ29va2llS2V5ID0gInJlc291cmNlLWNsdXN0ZXItY29udGVudC12aWV3LWlk
ZW50aWZpZXIiOworICAgICAgICB0aGlzLl9yZXF1ZXN0UGF0aENvbXBvbmVudCA9IGNyZWF0ZVBh
dGhDb21wb25lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QiKSwg
V2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJY29uU3R5bGVD
bGFzc05hbWUsIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0
SWRlbnRpZmllcik7CisgICAgICAgIHRoaXMuX3Jlc3BvbnNlUGF0aENvbXBvbmVudCA9IGNyZWF0
ZVBhdGhDb21wb25lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc3BvbnNl
IiksIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUljb25T
dHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJl
c3BvbnNlSWRlbnRpZmllcik7CiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50
Vmlldy5SZXF1ZXN0SWNvblN0eWxlQ2xhc3NOYW1lID0gInJlcXVlc3QtaWNvbiI7Ci1XZWJJbnNw
ZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJY29uU3R5bGVDbGFzc05h
bWUgPSAicmVzcG9uc2UtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcuUmVxdWVzdElkZW50aWZpZXIgPSAicmVxdWVzdCI7Ci1XZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJZGVudGlmaWVyID0gInJlc3BvbnNlIjsKKyAg
ICAgICAgdGhpcy5fcmVxdWVzdFBhdGhDb21wb25lbnQubmV4dFNpYmxpbmcgPSB0aGlzLl9yZXNw
b25zZVBhdGhDb21wb25lbnQ7CisgICAgICAgIHRoaXMuX3Jlc3BvbnNlUGF0aENvbXBvbmVudC5w
cmV2aW91c1NpYmxpbmcgPSB0aGlzLl9yZXF1ZXN0UGF0aENvbXBvbmVudDsKIAotV2ViSW5zcGVj
dG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LAorICAgICAgICB0
aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5n
KCJyZXNvdXJjZS1jdXJyZW50LXZpZXctIiArIHRoaXMuX3Jlc291cmNlLnVybC5oYXNoLCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJZGVudGlmaWVyKTsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNzMsMTIgKzY1LDEyIEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVsLmlkZW50aWZpZXIKICAgICAgICAg
ICAgIF07CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXNvdXJjZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgcmVzcG9uc2VDb250ZW50VmlldygpCiAgICAgewpAQCAtMTA3LDcgKzk5LDcgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZUNvbnRlbnRWaWV3OwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHJlcXVlc3RDb250ZW50VmlldygpCiAgICAgewpAQCAtMTIwLDcg
KzExMiw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50VmlldyA9IG5ldyBXZWJJbnNwZWN0
b3IuVGV4dENvbnRlbnRWaWV3KHRoaXMuX3Jlc291cmNlLnJlcXVlc3REYXRhIHx8ICIiLCB0aGlz
Ll9yZXNvdXJjZS5yZXF1ZXN0RGF0YUNvbnRlbnRUeXBlKTsKIAogICAgICAgICByZXR1cm4gdGhp
cy5fcmVxdWVzdENvbnRlbnRWaWV3OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGlv
blBhdGhDb21wb25lbnRzKCkKICAgICB7CkBAIC0xMzQsOSArMTI2LDkgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gQXBw
ZW5kIHRoZSBjdXJyZW50IHZpZXcncyBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIHBhdGggY29tcG9u
ZW50IHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB2aWV3LgogICAgICAgICB2YXIgY29tcG9uZW50
cyA9IFt0aGlzLl9wYXRoQ29tcG9uZW50Rm9yQ29udGVudFZpZXcoY3VycmVudENvbnRlbnRWaWV3
KV07CiAgICAgICAgIHJldHVybiBjb21wb25lbnRzLmNvbmNhdChjdXJyZW50Q29udGVudFZpZXcu
c2VsZWN0aW9uUGF0aENvbXBvbmVudHMpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1
bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuQ2x1c3Rl
ckNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCkBAIC0xNDQsMzUgKzEz
NiwzNSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3Nob3dDb250ZW50Vmll
d0ZvcklkZW50aWZpZXIodGhpcy5fY3VycmVudENvbnRlbnRWaWV3U2V0dGluZy52YWx1ZSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUuY2xv
c2VkLmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fc2hvd25Jbml0aWFsQ29udGVudCA9IGZh
bHNlOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUp
CisgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVtXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ29udGVudFZpZXdJZGVudGlmaWVyQ29v
a2llS2V5XSA9IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcudmFsdWU7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHJl
c3RvcmVGcm9tQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIHZhciBjb250ZW50VmlldyA9
IHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIoY29va2llW1dlYkluc3BlY3Rvci5S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5Db250ZW50Vmlld0lkZW50aWZpZXJDb29raWVLZXld
KTsKICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50Vmlldy5yZXZlYWxQb3NpdGlvbiA9PT0gImZ1
bmN0aW9uIiAmJiAibGluZU51bWJlciIgaW4gY29va2llICYmICJjb2x1bW5OdW1iZXIiIGluIGNv
b2tpZSkKICAgICAgICAgICAgIGNvbnRlbnRWaWV3LnJldmVhbFBvc2l0aW9uKG5ldyBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKGNvb2tpZS5saW5lTnVtYmVyLCBjb29raWUuY29sdW1u
TnVtYmVyKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93UmVxdWVzdDogZnVuY3Rpb24oKQor
ICAgIHNob3dSZXF1ZXN0KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3duSW5pdGlhbENvbnRl
bnQgPSB0cnVlOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVu
dGlmaWVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWRl
bnRpZmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93UmVzcG9uc2U6IGZ1bmN0aW9uKHBv
c2l0aW9uVG9SZXZlYWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQorICAg
IHNob3dSZXNwb25zZShwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VV
bmZvcm1hdHRlZCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3duSW5pdGlhbENvbnRlbnQgPSB0
cnVlOwogCkBAIC0xODYsMTEgKzE3OCwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVy
Q29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodHlwZW9mIHJlc3BvbnNlQ29u
dGVudFZpZXcucmV2ZWFsUG9zaXRpb24gPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICByZXNw
b25zZUNvbnRlbnRWaWV3LnJldmVhbFBvc2l0aW9uKHBvc2l0aW9uVG9SZXZlYWwsIHRleHRSYW5n
ZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKTsKICAgICAgICAgcmV0dXJuIHJlc3BvbnNlQ29u
dGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfY2FuU2hv
d1JlcXVlc3RDb250ZW50VmlldzogZnVuY3Rpb24oKQorICAgIF9jYW5TaG93UmVxdWVzdENvbnRl
bnRWaWV3KCkKICAgICB7CiAgICAgICAgIHZhciByZXF1ZXN0RGF0YSA9IHRoaXMuX3Jlc291cmNl
LnJlcXVlc3REYXRhOwogICAgICAgICBpZiAoIXJlcXVlc3REYXRhKQpAQCAtMjAxLDkgKzE5Myw5
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcGF0aENvbXBvbmVudEZvckNvbnRlbnRWaWV3OiBmdW5jdGlvbihj
b250ZW50VmlldykKKyAgICBfcGF0aENvbXBvbmVudEZvckNvbnRlbnRWaWV3KGNvbnRlbnRWaWV3
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGVudFZpZXcpOwogICAgICAgICBp
ZiAoIWNvbnRlbnRWaWV3KQpAQCAtMjE0LDkgKzIwNiw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhp
cy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50OwogICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3du
IGNvbnRlbnRWaWV3LiIpOwogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9pZGVudGlmaWVyRm9yQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAg
IF9pZGVudGlmaWVyRm9yQ29udGVudFZpZXcoY29udGVudFZpZXcpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChjb250ZW50Vmlldyk7CiAgICAgICAgIGlmICghY29udGVudFZpZXcpCkBA
IC0yMjcsOSArMjE5LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VD
bHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJZGVudGlmaWVyOwogICAgICAgICBjb25zb2xlLmVy
cm9yKCJVbmtub3duIGNvbnRlbnRWaWV3LiIpOwogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9
LAorICAgIH0KIAotICAgIF9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyOiBmdW5jdGlvbihp
ZGVudGlmaWVyKQorICAgIF9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIp
CiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXdUb1Nob3cgPSBudWxsOwogCkBAIC0yNTAs
MTQgKzI0MiwxNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5nLnZhbHVl
ID0gdGhpcy5faWRlbnRpZmllckZvckNvbnRlbnRWaWV3KGNvbnRlbnRWaWV3VG9TaG93KTsKIAog
ICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVudFZpZXco
Y29udGVudFZpZXdUb1Nob3cpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhdGhDb21wb25lbnRT
ZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZChldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIoZXZl
bnQuZGF0YS5wYXRoQ29tcG9uZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9yZXNvdXJjZVR5cGVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZXNv
dXJjZVR5cGVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICAvLyBTaW5jZSByZXNvdXJj
ZSB2aWV3cyBhcmUgYmFzZWQgb24gdGhlIHR5cGUsIHdlIG5lZWQgdG8gbWFrZSBhIG5ldyBjb250
ZW50IHZpZXcgYW5kIHRlbGwgdGhlIGNvbnRhaW5lciB0byByZXBsYWNlIHRoaXMKICAgICAgICAg
Ly8gY29udGVudCB2aWV3IHdpdGggdGhlIG5ldyBvbmUuIE1ha2UgYSBuZXcgUmVzb3VyY2VDb250
ZW50VmlldyB3aGljaCB3aWxsIHVzZSB0aGUgbmV3IHJlc291cmNlIHR5cGUgdG8gbWFrZSB0aGUg
Y29ycmVjdApAQCAtMjcwLDkgKzI2Miw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXNwb25zZUNv
bnRlbnRWaWV3OwogCiAgICAgICAgIHRoaXMuY29udGVudFZpZXdDb250YWluZXIucmVwbGFjZUNv
bnRlbnRWaWV3KGN1cnJlbnRSZXNwb25zZUNvbnRlbnRWaWV3LCB0aGlzLnJlc3BvbnNlQ29udGVu
dFZpZXcpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc291cmNlTG9hZGluZ0RpZEZpbmlzaDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jlc291cmNlTG9hZGluZ0RpZEZpbmlzaChldmVudCkKICAg
ICB7CiAgICAgICAgIGlmICgiX3Bvc2l0aW9uVG9SZXZlYWwiIGluIHRoaXMpIHsKICAgICAgICAg
ICAgIGlmICh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcgPT09
IHRoaXMuX3Jlc3BvbnNlQ29udGVudFZpZXcpCkBAIC0yODUsNCArMjc3LDkgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICB9CiB9Owog
Ci1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlOworV2ViSW5z
cGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkNvbnRlbnRWaWV3SWRlbnRpZmllckNv
b2tpZUtleSA9ICJyZXNvdXJjZS1jbHVzdGVyLWNvbnRlbnQtdmlldy1pZGVudGlmaWVyIjsKKwor
V2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJY29uU3R5bGVD
bGFzc05hbWUgPSAicmVxdWVzdC1pY29uIjsKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJD
b250ZW50Vmlldy5SZXNwb25zZUljb25TdHlsZUNsYXNzTmFtZSA9ICJyZXNwb25zZS1pY29uIjsK
K1dlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWRlbnRpZmll
ciA9ICJyZXF1ZXN0IjsKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5S
ZXNwb25zZUlkZW50aWZpZXIgPSAicmVzcG9uc2UiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZp
ZXcuanMKaW5kZXggNThmNzQxNC4uZGQ4YmRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRW
aWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMyw3MSArMjMsNjcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJl
c291cmNlLCBzdHlsZUNsYXNzTmFtZSkKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3
ID0gY2xhc3MgUmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50
VmlldwogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKLSAgICBjb25zb2xlLmFzc2Vy
dChzdHlsZUNsYXNzTmFtZSk7CisgICAgY29uc3RydWN0b3IocmVzb3VyY2UsIHN0eWxlQ2xhc3NO
YW1lKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UpOworICAgICAgICBj
b25zb2xlLmFzc2VydChzdHlsZUNsYXNzTmFtZSk7CiAKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcuY2FsbCh0aGlzLCByZXNvdXJjZSk7CisgICAgICAgIHN1cGVyKHJlc291cmNlKTsKIAot
ICAgIHRoaXMuX3Jlc291cmNlID0gcmVzb3VyY2U7CisgICAgICAgIHRoaXMuX3Jlc291cmNlID0g
cmVzb3VyY2U7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoc3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgicmVzb3VyY2UiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
c3R5bGVDbGFzc05hbWUpOwogCi0gICAgLy8gQXBwZW5kIGEgc3Bpbm5lciB3aGlsZSB3YWl0aW5n
IGZvciBjb250ZW50QXZhaWxhYmxlLiBUaGUgc3ViY2xhc3NlcyBhcmUgcmVzcG9uc2libGUgZm9y
IHJlbW92aW5nCi0gICAgLy8gdGhlIHNwaW5uZXIgYmVmb3JlIHNob3dpbmcgdGhlIHJlc291cmNl
IGNvbnRlbnQuCi0gICAgdmFyIHNwaW5uZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5h
dGVQcm9ncmVzc1NwaW5uZXI7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHNwaW5uZXIu
ZWxlbWVudCk7CisgICAgICAgIC8vIEFwcGVuZCBhIHNwaW5uZXIgd2hpbGUgd2FpdGluZyBmb3Ig
Y29udGVudEF2YWlsYWJsZS4gVGhlIHN1YmNsYXNzZXMgYXJlIHJlc3BvbnNpYmxlIGZvciByZW1v
dmluZworICAgICAgICAvLyB0aGUgc3Bpbm5lciBiZWZvcmUgc2hvd2luZyB0aGUgcmVzb3VyY2Ug
Y29udGVudC4KKyAgICAgICAgdmFyIHNwaW5uZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV0ZXJt
aW5hdGVQcm9ncmVzc1NwaW5uZXI7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChz
cGlubmVyLmVsZW1lbnQpOwogCi0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fbW91c2VXYXNDbGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbW91c2VXYXNDbGlj
a2VkLmJpbmQodGhpcyksIGZhbHNlKTsKIAotICAgIC8vIFJlcXVlc3QgY29udGVudCBsYXN0IHNv
IHRoZSBzcGlubmVyIHdpbGwgYWx3YXlzIGJlIHJlbW92ZWQgaW4gY2FzZSB0aGUgY29udGVudCBp
cyBpbW1lZGlhdGVseSBhdmFpbGFibGUuCi0gICAgcmVzb3VyY2UucmVxdWVzdENvbnRlbnQoKS50
aGVuKHRoaXMuX2NvbnRlbnRBdmFpbGFibGUuYmluZCh0aGlzKSkuY2F0Y2godGhpcy5fY29udGVu
dEVycm9yLmJpbmQodGhpcykpOworICAgICAgICAvLyBSZXF1ZXN0IGNvbnRlbnQgbGFzdCBzbyB0
aGUgc3Bpbm5lciB3aWxsIGFsd2F5cyBiZSByZW1vdmVkIGluIGNhc2UgdGhlIGNvbnRlbnQgaXMg
aW1tZWRpYXRlbHkgYXZhaWxhYmxlLgorICAgICAgICByZXNvdXJjZS5yZXF1ZXN0Q29udGVudCgp
LnRoZW4odGhpcy5fY29udGVudEF2YWlsYWJsZS5iaW5kKHRoaXMpKS5jYXRjaCh0aGlzLl9jb250
ZW50RXJyb3IuYmluZCh0aGlzKSk7CiAKLSAgICBpZiAoIXRoaXMubWFuYWdlc093bklzc3Vlcykg
ewotICAgICAgICBXZWJJbnNwZWN0b3IuaXNzdWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLklzc3VlTWFuYWdlci5FdmVudC5Jc3N1ZVdhc0FkZGVkLCB0aGlzLl9pc3N1ZVdh
c0FkZGVkLCB0aGlzKTsKKyAgICAgICAgaWYgKCF0aGlzLm1hbmFnZXNPd25Jc3N1ZXMpIHsKKyAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5pc3N1ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuSXNzdWVNYW5hZ2VyLkV2ZW50Lklzc3VlV2FzQWRkZWQsIHRoaXMuX2lzc3VlV2Fz
QWRkZWQsIHRoaXMpOwogCi0gICAgICAgIHZhciBpc3N1ZXMgPSBXZWJJbnNwZWN0b3IuaXNzdWVN
YW5hZ2VyLmlzc3Vlc0ZvclNvdXJjZUNvZGUocmVzb3VyY2UpOwotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGlzc3Vlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuYWRkSXNzdWUo
aXNzdWVzW2ldKTsKKyAgICAgICAgICAgIHZhciBpc3N1ZXMgPSBXZWJJbnNwZWN0b3IuaXNzdWVN
YW5hZ2VyLmlzc3Vlc0ZvclNvdXJjZUNvZGUocmVzb3VyY2UpOworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBpc3N1ZXMubGVuZ3RoOyArK2kpCisgICAgICAgICAgICAgICAgdGhpcy5h
ZGRJc3N1ZShpc3N1ZXNbaV0pOworICAgICAgICB9CiAgICAgfQotfTsKLQotV2ViSW5zcGVjdG9y
LlJlc291cmNlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAicmVzb3VyY2UiOwotCi1XZWJJ
bnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LAotICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKIAogICAgIC8vIFB1YmxpYwogCiAgICAg
Z2V0IHJlc291cmNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGNvbnRlbnRBdmFpbGFibGU6IGZ1bmN0aW9uKGNvbnRlbnQsIGJh
c2U2NEVuY29kZWQpCisgICAgY29udGVudEF2YWlsYWJsZShjb250ZW50LCBiYXNlNjRFbmNvZGVk
KQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAor
ICAgIH0KIAotICAgIGFkZElzc3VlOiBmdW5jdGlvbihpc3N1ZSkKKyAgICBhZGRJc3N1ZShpc3N1
ZSkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgZ2VuZXJpY2FsbHkgc2hvd3Mgb25seSB0aGUgbGFz
dCBpc3N1ZSwgc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgZm9yIGJldHRlciBoYW5kbGluZy4KICAg
ICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IuY3JlYXRlTWVzc2FnZVRleHRWaWV3KGlzc3VlLnRl
eHQsIGlzc3VlLmxldmVsID09PSBXZWJJbnNwZWN0b3IuSXNzdWVNZXNzYWdlLkxldmVsLkVycm9y
KSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQo
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLm1hbmFnZXNPd25Jc3N1ZXMpCiAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuaXNzdWVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLklzc3VlTWFuYWdlci5FdmVudC5Jc3N1ZVdhc0FkZGVkLCB0aGlzLl9pc3N1ZVdhc0FkZGVk
LCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jb250ZW50
QXZhaWxhYmxlOiBmdW5jdGlvbihwYXJhbWV0ZXJzKQorICAgIF9jb250ZW50QXZhaWxhYmxlKHBh
cmFtZXRlcnMpCiAgICAgewogICAgICAgICBpZiAocGFyYW1ldGVycy5lcnJvcikgewogICAgICAg
ICAgICAgdGhpcy5fY29udGVudEVycm9yKHsgbWVzc2FnZTogcGFyYW1ldGVycy5lcnJvciB9KTsK
QEAgLTk2LDkgKzkyLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogCiAgICAgICAgIC8vIENvbnRlbnQgaXMgcmVhZHkgdG8gc2hvdywgY2FsbCB0aGUg
cHVibGljIG1ldGhvZCBub3cuCiAgICAgICAgIHRoaXMuY29udGVudEF2YWlsYWJsZShwYXJhbWV0
ZXJzLmNvbnRlbnQsIHBhcmFtZXRlcnMuYmFzZTY0RW5jb2RlZCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfY29udGVudEVycm9yOiBmdW5jdGlvbihlcnJvcikKKyAgICBfY29udGVudEVycm9yKGVy
cm9yKQogICAgIHsKICAgICAgICAgLy8gRG9uJ3Qgc2hvdyBhbiBlcnJvciBtZXNzYWdlIGlmIHRo
ZXJlIGlzIGFscmVhZHkgYW4gZXJyb3IgbWVzc2FnZSBzaG93aW5nIChsaWtlIG9uZSBhZGRlZCBi
eSBhZGRJc3N1ZS4pCiAgICAgICAgIGlmICh0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvcigiLm1l
c3NhZ2UtdGV4dC12aWV3LmVycm9yIikpCkBAIC0xMDYsOSArMTAyLDkgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuZWxlbWVu
dC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoV2Vi
SW5zcGVjdG9yLmNyZWF0ZU1lc3NhZ2VUZXh0VmlldyhlcnJvci5tZXNzYWdlLCB0cnVlKSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfaXNzdWVXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2lzc3VlV2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhp
cy5tYW5hZ2VzT3duSXNzdWVzKTsKIApAQCAtMTE5LDkgKzExNSw5IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICB0aGlzLmFkZElzc3VlKGlzc3VlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3Vz
ZVdhc0NsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZVdhc0NsaWNrZWQoZXZlbnQp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuaGFuZGxlUG9zc2libGVMaW5rQ2xpY2soZXZl
bnQsIHRoaXMucmVzb3VyY2UucGFyZW50RnJhbWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlRGV0YWlsc1NpZGVi
YXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
c291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCBlZDM2OTFiLi5mMDFjN2U4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJj
ZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5OSArMjMs
OTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVj
dG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIFJlc291cmNlRGV0YWlsc1Np
ZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsCiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCAicmVzb3VyY2Ut
ZGV0YWlscyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2UiKSwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZXNvdXJjZSIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtRmlsZS5zdmciLCAi
MSIpOwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlJlc291
cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9yZXNv
dXJjZSA9IG51bGw7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoInJl
c291cmNlLWRldGFpbHMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlIiksIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2UiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUZpbGUu
c3ZnIiwgIjEiKTsKIAotICAgIHRoaXMuX3R5cGVNSU1FVHlwZVJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNSU1FIFR5
cGUiKSk7Ci0gICAgdGhpcy5fdHlwZVJlc291cmNlVHlwZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNvdXJjZSBU
eXBlIikpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicmVzb3VyY2UiKTsK
IAotICAgIHRoaXMuX3R5cGVTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bigicmVzb3VyY2UtdHlwZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHlwZSIpKTsKLSAgICB0
aGlzLl90eXBlU2VjdGlvbi5ncm91cHMgPSBbbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
bkdyb3VwKFt0aGlzLl90eXBlTUlNRVR5cGVSb3csIHRoaXMuX3R5cGVSZXNvdXJjZVR5cGVSb3dd
KV07CisgICAgICAgIHRoaXMuX3Jlc291cmNlID0gbnVsbDsKIAotICAgIHRoaXMuX2xvY2F0aW9u
RnVsbFVSTFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJGdWxsIFVSTCIpKTsKLSAgICB0aGlzLl9sb2NhdGlvblNjaGVt
ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTY2hlbWUiKSk7Ci0gICAgdGhpcy5fbG9jYXRpb25Ib3N0Um93ID0gbmV3
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkhvc3QiKSk7Ci0gICAgdGhpcy5fbG9jYXRpb25Qb3J0Um93ID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBvcnQiKSk7
Ci0gICAgdGhpcy5fbG9jYXRpb25QYXRoUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBhdGgiKSk7Ci0gICAgdGhpcy5f
bG9jYXRpb25RdWVyeVN0cmluZ1JvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25T
aW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJRdWVyeSBTdHJpbmciKSk7Ci0gICAgdGhp
cy5fbG9jYXRpb25GcmFnbWVudFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25T
aW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGcmFnbWVudCIpKTsKLSAgICB0aGlzLl9s
b2NhdGlvbkZpbGVuYW1lUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBs
ZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbGVuYW1lIikpOwotICAgIHRoaXMuX2luaXRp
YXRvclJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJJbml0aWF0b3IiKSk7CisgICAgICAgIHRoaXMuX3R5cGVNSU1FVHlw
ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJNSU1FIFR5cGUiKSk7CisgICAgICAgIHRoaXMuX3R5cGVSZXNvdXJjZVR5
cGVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUmVzb3VyY2UgVHlwZSIpKTsKIAotICAgIHZhciBmaXJzdEdyb3VwID0g
W3RoaXMuX2xvY2F0aW9uRnVsbFVSTFJvd107Ci0gICAgdmFyIHNlY29uZEdyb3VwID0gW3RoaXMu
X2xvY2F0aW9uU2NoZW1lUm93LCB0aGlzLl9sb2NhdGlvbkhvc3RSb3csIHRoaXMuX2xvY2F0aW9u
UG9ydFJvdywgdGhpcy5fbG9jYXRpb25QYXRoUm93LAotICAgICAgICB0aGlzLl9sb2NhdGlvblF1
ZXJ5U3RyaW5nUm93LCB0aGlzLl9sb2NhdGlvbkZyYWdtZW50Um93LCB0aGlzLl9sb2NhdGlvbkZp
bGVuYW1lUm93XTsKLSAgICB2YXIgdGhpcmRHcm91cCA9IFt0aGlzLl9pbml0aWF0b3JSb3ddOwor
ICAgICAgICB0aGlzLl90eXBlU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b24oInJlc291cmNlLXR5cGUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUiKSk7CisgICAg
ICAgIHRoaXMuX3R5cGVTZWN0aW9uLmdyb3VwcyA9IFtuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uR3JvdXAoW3RoaXMuX3R5cGVNSU1FVHlwZVJvdywgdGhpcy5fdHlwZVJlc291cmNlVHlw
ZVJvd10pXTsKIAotICAgIHRoaXMuX2Z1bGxVUkxHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Hcm91cChmaXJzdEdyb3VwKTsKLSAgICB0aGlzLl9sb2NhdGlvblVSTENvbXBv
bmVudHNHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChzZWNvbmRH
cm91cCk7Ci0gICAgdGhpcy5faW5pdGlhdG9yR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uR3JvdXAodGhpcmRHcm91cCk7CisgICAgICAgIHRoaXMuX2xvY2F0aW9uRnVsbFVS
TFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJGdWxsIFVSTCIpKTsKKyAgICAgICAgdGhpcy5fbG9jYXRpb25TY2hlbWVS
b3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2NoZW1lIikpOworICAgICAgICB0aGlzLl9sb2NhdGlvbkhvc3RSb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiSG9zdCIpKTsKKyAgICAgICAgdGhpcy5fbG9jYXRpb25Qb3J0Um93ID0gbmV3IFdlYklu
c3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlBv
cnQiKSk7CisgICAgICAgIHRoaXMuX2xvY2F0aW9uUGF0aFJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXRoIikpOwor
ICAgICAgICB0aGlzLl9sb2NhdGlvblF1ZXJ5U3RyaW5nUm93ID0gbmV3IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlF1ZXJ5IFN0cmlu
ZyIpKTsKKyAgICAgICAgdGhpcy5fbG9jYXRpb25GcmFnbWVudFJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGcmFnbWVu
dCIpKTsKKyAgICAgICAgdGhpcy5fbG9jYXRpb25GaWxlbmFtZVJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWxlbmFt
ZSIpKTsKKyAgICAgICAgdGhpcy5faW5pdGlhdG9yUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkluaXRpYXRvciIpKTsK
IAotICAgIHRoaXMuX2xvY2F0aW9uU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb24oInJlc291cmNlLWxvY2F0aW9uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJMb2NhdGlv
biIpLCBbdGhpcy5fZnVsbFVSTEdyb3VwLCB0aGlzLl9sb2NhdGlvblVSTENvbXBvbmVudHNHcm91
cCwgdGhpcy5faW5pdGlhdG9yR3JvdXBdKTsKKyAgICAgICAgdmFyIGZpcnN0R3JvdXAgPSBbdGhp
cy5fbG9jYXRpb25GdWxsVVJMUm93XTsKKyAgICAgICAgdmFyIHNlY29uZEdyb3VwID0gW3RoaXMu
X2xvY2F0aW9uU2NoZW1lUm93LCB0aGlzLl9sb2NhdGlvbkhvc3RSb3csIHRoaXMuX2xvY2F0aW9u
UG9ydFJvdywgdGhpcy5fbG9jYXRpb25QYXRoUm93LAorICAgICAgICAgICAgdGhpcy5fbG9jYXRp
b25RdWVyeVN0cmluZ1JvdywgdGhpcy5fbG9jYXRpb25GcmFnbWVudFJvdywgdGhpcy5fbG9jYXRp
b25GaWxlbmFtZVJvd107CisgICAgICAgIHZhciB0aGlyZEdyb3VwID0gW3RoaXMuX2luaXRpYXRv
clJvd107CiAKLSAgICB0aGlzLl9xdWVyeVBhcmFtZXRlcnNSb3cgPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cobnVsbCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJO
byBRdWVyeSBQYXJhbWV0ZXJzIikpOwotICAgIHRoaXMuX3F1ZXJ5UGFyYW1ldGVyc1NlY3Rpb24g
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJyZXNvdXJjZS1xdWVyeS1wYXJhbWV0
ZXJzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJRdWVyeSBQYXJhbWV0ZXJzIikpOwotICAgIHRo
aXMuX3F1ZXJ5UGFyYW1ldGVyc1NlY3Rpb24uZ3JvdXBzID0gW25ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5fcXVlcnlQYXJhbWV0ZXJzUm93XSldOworICAgICAgICB0
aGlzLl9mdWxsVVJMR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAo
Zmlyc3RHcm91cCk7CisgICAgICAgIHRoaXMuX2xvY2F0aW9uVVJMQ29tcG9uZW50c0dyb3VwID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKHNlY29uZEdyb3VwKTsKKyAgICAg
ICAgdGhpcy5faW5pdGlhdG9yR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
R3JvdXAodGhpcmRHcm91cCk7CiAKLSAgICB0aGlzLl9yZXF1ZXN0RGF0YVNlY3Rpb24gPSBuZXcg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJyZXNvdXJjZS1yZXF1ZXN0LWRhdGEiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgRGF0YSIpKTsKKyAgICAgICAgdGhpcy5fbG9jYXRp
b25TZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigicmVzb3VyY2UtbG9j
YXRpb24iLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2F0aW9uIiksIFt0aGlzLl9mdWxsVVJM
R3JvdXAsIHRoaXMuX2xvY2F0aW9uVVJMQ29tcG9uZW50c0dyb3VwLCB0aGlzLl9pbml0aWF0b3JH
cm91cF0pOwogCi0gICAgdGhpcy5fcmVxdWVzdE1ldGhvZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNZXRob2QiKSk7
Ci0gICAgdGhpcy5fY2FjaGVkUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNp
bXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNhY2hlZCIpKTsKKyAgICAgICAgdGhpcy5f
cXVlcnlQYXJhbWV0ZXJzUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFH
cmlkUm93KG51bGwsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUXVlcnkgUGFyYW1ldGVycyIp
KTsKKyAgICAgICAgdGhpcy5fcXVlcnlQYXJhbWV0ZXJzU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb24oInJlc291cmNlLXF1ZXJ5LXBhcmFtZXRlcnMiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlF1ZXJ5IFBhcmFtZXRlcnMiKSk7CisgICAgICAgIHRoaXMuX3F1ZXJ5UGFy
YW1ldGVyc1NlY3Rpb24uZ3JvdXBzID0gW25ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25H
cm91cChbdGhpcy5fcXVlcnlQYXJhbWV0ZXJzUm93XSldOwogCi0gICAgdGhpcy5fc3RhdHVzVGV4
dFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTdGF0dXMiKSk7Ci0gICAgdGhpcy5fc3RhdHVzQ29kZVJvdyA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDb2RlIikpOworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YVNlY3Rpb24gPSBuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uKCJyZXNvdXJjZS1yZXF1ZXN0LWRhdGEiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlJlcXVlc3QgRGF0YSIpKTsKIAotICAgIHRoaXMuX2VuY29kZWRTaXplUm93
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkVuY29kZWQiKSk7Ci0gICAgdGhpcy5fZGVjb2RlZFNpemVSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RGVjb2RlZCIpKTsKLSAgICB0aGlzLl90cmFuc2ZlclNpemVSb3cgPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNmZXJl
ZCIpKTsKKyAgICAgICAgdGhpcy5fcmVxdWVzdE1ldGhvZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNZXRob2QiKSk7
CisgICAgICAgIHRoaXMuX2NhY2hlZFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWNoZWQiKSk7CiAKLSAgICB0aGlz
Ll9jb21wcmVzc2VkUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJv
dyhXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvbXByZXNzZWQiKSk7Ci0gICAgdGhpcy5fY29tcHJl
c3Npb25Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQ29tcHJlc3Npb24iKSk7CisgICAgICAgIHRoaXMuX3N0YXR1c1Rl
eHRSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU3RhdHVzIikpOworICAgICAgICB0aGlzLl9zdGF0dXNDb2RlUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNvZGUiKSk7CiAKLSAgICB2YXIgcmVxdWVzdEdyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9yZXF1ZXN0TWV0aG9kUm93LCB0aGlzLl9jYWNo
ZWRSb3ddKTsKLSAgICB2YXIgc3RhdHVzR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uR3JvdXAoW3RoaXMuX3N0YXR1c1RleHRSb3csIHRoaXMuX3N0YXR1c0NvZGVSb3ddKTsK
LSAgICB2YXIgc2l6ZUdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3Vw
KFt0aGlzLl9lbmNvZGVkU2l6ZVJvdywgdGhpcy5fZGVjb2RlZFNpemVSb3csIHRoaXMuX3RyYW5z
ZmVyU2l6ZVJvd10pOwotICAgIHZhciBjb21wcmVzc2lvbkdyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9jb21wcmVzc2VkUm93LCB0aGlzLl9jb21wcmVz
c2lvblJvd10pOworICAgICAgICB0aGlzLl9lbmNvZGVkU2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmNvZGVk
IikpOworICAgICAgICB0aGlzLl9kZWNvZGVkU2l6ZVJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWNvZGVkIikpOwor
ICAgICAgICB0aGlzLl90cmFuc2ZlclNpemVSb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNmZXJlZCIpKTsKIAot
ICAgIHRoaXMuX3JlcXVlc3RBbmRSZXNwb25zZVNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uKCJyZXNvdXJjZS1yZXF1ZXN0LXJlc3BvbnNlIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJSZXF1ZXN0ICYgUmVzcG9uc2UiKSwgW3JlcXVlc3RHcm91cCwgc3RhdHVzR3JvdXAs
IHNpemVHcm91cCwgY29tcHJlc3Npb25Hcm91cF0pOworICAgICAgICB0aGlzLl9jb21wcmVzc2Vk
Um93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIkNvbXByZXNzZWQiKSk7CisgICAgICAgIHRoaXMuX2NvbXByZXNzaW9uUm93
ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyhXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkNvbXByZXNzaW9uIikpOwogCi0gICAgdGhpcy5fcmVxdWVzdEhlYWRlcnNSb3cg
PSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cobnVsbCwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJObyBSZXF1ZXN0IEhlYWRlcnMiKSk7Ci0gICAgdGhpcy5fcmVxdWVz
dEhlYWRlcnNTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigicmVzb3Vy
Y2UtcmVxdWVzdC1oZWFkZXJzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IEhlYWRl
cnMiKSk7Ci0gICAgdGhpcy5fcmVxdWVzdEhlYWRlcnNTZWN0aW9uLmdyb3VwcyA9IFtuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMuX3JlcXVlc3RIZWFkZXJzUm93XSld
OworICAgICAgICB2YXIgcmVxdWVzdEdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbkdyb3VwKFt0aGlzLl9yZXF1ZXN0TWV0aG9kUm93LCB0aGlzLl9jYWNoZWRSb3ddKTsKKyAg
ICAgICAgdmFyIHN0YXR1c0dyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdy
b3VwKFt0aGlzLl9zdGF0dXNUZXh0Um93LCB0aGlzLl9zdGF0dXNDb2RlUm93XSk7CisgICAgICAg
IHZhciBzaXplR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3Ro
aXMuX2VuY29kZWRTaXplUm93LCB0aGlzLl9kZWNvZGVkU2l6ZVJvdywgdGhpcy5fdHJhbnNmZXJT
aXplUm93XSk7CisgICAgICAgIHZhciBjb21wcmVzc2lvbkdyb3VwID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9jb21wcmVzc2VkUm93LCB0aGlzLl9jb21wcmVz
c2lvblJvd10pOwogCi0gICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzUm93ID0gbmV3IFdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93KG51bGwsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiTm8gUmVzcG9uc2UgSGVhZGVycyIpKTsKLSAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNTZWN0
aW9uID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbigicmVzb3VyY2UtcmVzcG9uc2Ut
aGVhZGVycyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2UgSGVhZGVycyIpKTsKLSAg
ICB0aGlzLl9yZXNwb25zZUhlYWRlcnNTZWN0aW9uLmdyb3VwcyA9IFtuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMuX3Jlc3BvbnNlSGVhZGVyc1Jvd10pXTsKKyAgICAg
ICAgdGhpcy5fcmVxdWVzdEFuZFJlc3BvbnNlU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb24oInJlc291cmNlLXJlcXVlc3QtcmVzcG9uc2UiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlJlcXVlc3QgJiBSZXNwb25zZSIpLCBbcmVxdWVzdEdyb3VwLCBzdGF0dXNHcm91cCwg
c2l6ZUdyb3VwLCBjb21wcmVzc2lvbkdyb3VwXSk7CiAKLSAgICAvLyBSb3dzIGZvciB0aGUgIklt
YWdlIFNpemUiIHNlY3Rpb24uCi0gICAgdGhpcy5faW1hZ2VXaWR0aFJvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0
aCIpKTsKLSAgICB0aGlzLl9pbWFnZUhlaWdodFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIZWlnaHQiKSk7CisgICAg
ICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzUm93ID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbkRhdGFHcmlkUm93KG51bGwsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUmVxdWVzdCBI
ZWFkZXJzIikpOworICAgICAgICB0aGlzLl9yZXF1ZXN0SGVhZGVyc1NlY3Rpb24gPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJyZXNvdXJjZS1yZXF1ZXN0LWhlYWRlcnMiLCBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QgSGVhZGVycyIpKTsKKyAgICAgICAgdGhpcy5fcmVx
dWVzdEhlYWRlcnNTZWN0aW9uLmdyb3VwcyA9IFtuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uR3JvdXAoW3RoaXMuX3JlcXVlc3RIZWFkZXJzUm93XSldOwogCi0gICAgLy8gIkltYWdlIFNp
emUiIHNlY3Rpb24gd2hlcmUgd2UgZGlzcGxheSBpbnRyaW5zaWMgbWV0cmljcyBmb3IgaW1hZ2Ug
cmVzb3VyY2VzLgotICAgIHRoaXMuX2ltYWdlU2l6ZVNlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uKCJyZXNvdXJjZS10eXBlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJ
bWFnZSBTaXplIikpOwotICAgIHRoaXMuX2ltYWdlU2l6ZVNlY3Rpb24uZ3JvdXBzID0gW25ldyBX
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cChbdGhpcy5faW1hZ2VXaWR0aFJvdywgdGhp
cy5faW1hZ2VIZWlnaHRSb3ddKV07CisgICAgICAgIHRoaXMuX3Jlc3BvbnNlSGVhZGVyc1JvdyA9
IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdyhudWxsLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5vIFJlc3BvbnNlIEhlYWRlcnMiKSk7CisgICAgICAgIHRoaXMuX3Jl
c3BvbnNlSGVhZGVyc1NlY3Rpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJy
ZXNvdXJjZS1yZXNwb25zZS1oZWFkZXJzIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25z
ZSBIZWFkZXJzIikpOworICAgICAgICB0aGlzLl9yZXNwb25zZUhlYWRlcnNTZWN0aW9uLmdyb3Vw
cyA9IFtuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uR3JvdXAoW3RoaXMuX3Jlc3BvbnNl
SGVhZGVyc1Jvd10pXTsKIAotICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fdHlwZVNlY3Rpb24uZWxlbWVudCk7Ci0gICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9sb2NhdGlvblNlY3Rpb24uZWxlbWVudCk7Ci0gICAgdGhpcy5jb250ZW50RWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yZXF1ZXN0QW5kUmVzcG9uc2VTZWN0aW9uLmVsZW1lbnQp
OwotICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVxdWVzdEhlYWRl
cnNTZWN0aW9uLmVsZW1lbnQpOwotICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fcmVzcG9uc2VIZWFkZXJzU2VjdGlvbi5lbGVtZW50KTsKLX07CisgICAgICAgIC8vIFJv
d3MgZm9yIHRoZSAiSW1hZ2UgU2l6ZSIgc2VjdGlvbi4KKyAgICAgICAgdGhpcy5faW1hZ2VXaWR0
aFJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJXaWR0aCIpKTsKKyAgICAgICAgdGhpcy5faW1hZ2VIZWlnaHRSb3cgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0
cmluZygiSGVpZ2h0IikpOwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBh
bmVsLlN0eWxlQ2xhc3NOYW1lID0gInJlc291cmNlIjsKKyAgICAgICAgLy8gIkltYWdlIFNpemUi
IHNlY3Rpb24gd2hlcmUgd2UgZGlzcGxheSBpbnRyaW5zaWMgbWV0cmljcyBmb3IgaW1hZ2UgcmVz
b3VyY2VzLgorICAgICAgICB0aGlzLl9pbWFnZVNpemVTZWN0aW9uID0gbmV3IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2VjdGlvbigicmVzb3VyY2UtdHlwZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
SW1hZ2UgU2l6ZSIpKTsKKyAgICAgICAgdGhpcy5faW1hZ2VTaXplU2VjdGlvbi5ncm91cHMgPSBb
bmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwKFt0aGlzLl9pbWFnZVdpZHRoUm93
LCB0aGlzLl9pbWFnZUhlaWdodFJvd10pXTsKIAotV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWls
c1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuY29udGVudEVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdHlwZVNlY3Rpb24uZWxlbWVudCk7CisgICAgICAgIHRo
aXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbG9jYXRpb25TZWN0aW9uLmVsZW1l
bnQpOworICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JlcXVl
c3RBbmRSZXNwb25zZVNlY3Rpb24uZWxlbWVudCk7CisgICAgICAgIHRoaXMuY29udGVudEVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVxdWVzdEhlYWRlcnNTZWN0aW9uLmVsZW1lbnQpOworICAg
ICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jlc3BvbnNlSGVhZGVy
c1NlY3Rpb24uZWxlbWVudCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBpbnNwZWN0
OiBmdW5jdGlvbihvYmplY3RzKQorICAgIGluc3BlY3Qob2JqZWN0cykKICAgICB7CiAgICAgICAg
IC8vIENvbnZlcnQgdG8gYSBzaW5nbGUgaXRlbSBhcnJheSBpZiBuZWVkZWQuCiAgICAgICAgIGlm
ICghKG9iamVjdHMgaW5zdGFuY2VvZiBBcnJheSkpCkBAIC0xMzksMTIgKzEzNSwxMiBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5yZXNvdXJjZSA9IHJlc291cmNlVG9JbnNwZWN0OwogCiAgICAgICAgIHJldHVybiAh
IXRoaXMuX3Jlc291cmNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlc291cmNlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZTsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCByZXNvdXJjZShyZXNvdXJjZSkKICAgICB7CkBAIC0xNzYsOSArMTcyLDkgQEAgV2ViSW5z
cGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICB0aGlzLm5lZWRzUmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
cmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLl9yZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE5MiwxMSArMTg4LDExIEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9yZWZyZXNoUmVxdWVzdEhlYWRlcnMoKTsKICAgICAgICAgdGhpcy5fcmVm
cmVzaEltYWdlU2l6ZVNlY3Rpb24oKTsKICAgICAgICAgdGhpcy5fcmVmcmVzaFJlcXVlc3REYXRh
U2VjdGlvbigpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3JlZnJl
c2hVUkw6IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaFVSTCgpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX3Jlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM4LDI1ICsyMzQsMjUg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBpZiAocXVlcnlQYXJhbWV0ZXJzU2VjdGlvbkVsZW1lbnQucGFyZW50Tm9k
ZSkKICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtZXRlcnNTZWN0aW9uRWxlbWVudC5wYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKHF1ZXJ5UGFyYW1ldGVyc1NlY3Rpb25FbGVtZW50KTsKICAgICAgICAg
fQotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hSZXNvdXJjZVR5cGU6IGZ1bmN0aW9uKCkK
KyAgICBfcmVmcmVzaFJlc291cmNlVHlwZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3Jl
c291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3R5cGVSZXNvdXJj
ZVR5cGVSb3cudmFsdWUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBl
KHRoaXMuX3Jlc291cmNlLnR5cGUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hNSU1F
VHlwZTogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoTUlNRVR5cGUoKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9yZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlz
Ll90eXBlTUlNRVR5cGVSb3cudmFsdWUgPSB0aGlzLl9yZXNvdXJjZS5taW1lVHlwZTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9yZWZyZXNoUmVxdWVzdEFuZFJlc3BvbnNlOiBmdW5jdGlvbigpCisg
ICAgX3JlZnJlc2hSZXF1ZXN0QW5kUmVzcG9uc2UoKQogICAgIHsKICAgICAgICAgdmFyIHJlc291
cmNlID0gdGhpcy5fcmVzb3VyY2U7CiAgICAgICAgIGlmICghcmVzb3VyY2UpCkBAIC0yNjQsNyAr
MjYwLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIHZhbHVlLCB3ZSBzZXQgYW4g
ZW0tZGFzaCB0byBrZWVwIHRoZSByb3cgZnJvbSBoaWRpbmcuCiAgICAgICAgIC8vIFRoaXMga2Vl
cHMgdGhlIFVJIGZyb20gc2hpZnRpbmcgYXJvdW5kIGFzIGRhdGEgY29tZXMgaW4uCi0gICAgICAg
IGNvbnN0IGVtRGFzaCA9ICJcdTIwMTQiOworICAgICAgICB2YXIgZW1EYXNoID0gIlx1MjAxNCI7
CiAKICAgICAgICAgdGhpcy5fcmVxdWVzdE1ldGhvZFJvdy52YWx1ZSA9IHJlc291cmNlLnJlcXVl
c3RNZXRob2QgfHwgZW1EYXNoOwogCkBAIC0yNzUsMjMgKzI3MSwyMyBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlz
Ll9yZWZyZXNoUmVzcG9uc2VIZWFkZXJzKCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hDb21wcmVz
c2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdmFsdWVGb3JTaXplOiBmdW5jdGlvbihzaXpl
KQorICAgIF92YWx1ZUZvclNpemUoc2l6ZSkKICAgICB7CiAgICAgICAgIC8vIElmIHdlIGRvbid0
IGhhdmUgYSB2YWx1ZSwgd2Ugc2V0IGFuIGVtLWRhc2ggdG8ga2VlcCB0aGUgcm93IGZyb20gaGlk
aW5nLgogICAgICAgICAvLyBUaGlzIGtlZXBzIHRoZSBVSSBmcm9tIHNoaWZ0aW5nIGFyb3VuZCBh
cyBkYXRhIGNvbWVzIGluLgotICAgICAgICBjb25zdCBlbURhc2ggPSAiXHUyMDE0IjsKKyAgICAg
ICAgdmFyIGVtRGFzaCA9ICJcdTIwMTQiOwogICAgICAgICByZXR1cm4gc2l6ZSA+IDAgPyBOdW1i
ZXIuYnl0ZXNUb1N0cmluZyhzaXplKSA6IGVtRGFzaDsKLSAgICB9LAorICAgIH0KIAotICAgIF9y
ZWZyZXNoQ29tcHJlc3NlZDogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoQ29tcHJlc3NlZCgpCiAg
ICAgewogICAgICAgICB0aGlzLl9jb21wcmVzc2VkUm93LnZhbHVlID0gdGhpcy5fcmVzb3VyY2Uu
Y29tcHJlc3NlZCA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiWWVzIikgOiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIk5vIik7CiAgICAgICAgIHRoaXMuX2NvbXByZXNzaW9uUm93LnZhbHVlID0gdGhp
cy5fcmVzb3VyY2UuY29tcHJlc3NlZCA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJS4yZlx1MDBk
NyIpLmZvcm1hdCh0aGlzLl9yZXNvdXJjZS5zaXplIC8gdGhpcy5fcmVzb3VyY2UuZW5jb2RlZFNp
emUpIDogbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNoRGVjb2RlZFNpemU6IGZ1
bmN0aW9uKCkKKyAgICBfcmVmcmVzaERlY29kZWRTaXplKCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fcmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDAsOSArMjk2LDkgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX2RlY29kZWRTaXplUm93LnZhbHVlID0gdGhpcy5fdmFsdWVGb3JTaXplKHRo
aXMuX3Jlc291cmNlLnNpemUpOwogCiAgICAgICAgIHRoaXMuX3JlZnJlc2hDb21wcmVzc2VkKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaFRyYW5zZmVyU2l6ZTogZnVuY3Rpb24oKQor
ICAgIF9yZWZyZXNoVHJhbnNmZXJTaXplKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVz
b3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMTEsMjUgKzMwNywyNSBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fdHJhbnNmZXJTaXplUm93LnZhbHVlID0gdGhpcy5fdmFsdWVGb3JTaXplKHRoaXMuX3Jl
c291cmNlLnRyYW5zZmVyU2l6ZSk7CiAKICAgICAgICAgdGhpcy5fcmVmcmVzaENvbXByZXNzZWQo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNoUmVxdWVzdEhlYWRlcnM6IGZ1bmN0aW9u
KCkKKyAgICBfcmVmcmVzaFJlcXVlc3RIZWFkZXJzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5fcmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmVxdWVz
dEhlYWRlcnNSb3cuZGF0YUdyaWQgPSB0aGlzLl9jcmVhdGVOYW1lVmFsdWVEYXRhR3JpZCh0aGlz
Ll9yZXNvdXJjZS5yZXF1ZXN0SGVhZGVycyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVz
aFJlc3BvbnNlSGVhZGVyczogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoUmVzcG9uc2VIZWFkZXJz
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgdGhpcy5fcmVzcG9uc2VIZWFkZXJzUm93LmRhdGFHcmlkID0gdGhpcy5f
Y3JlYXRlTmFtZVZhbHVlRGF0YUdyaWQodGhpcy5fcmVzb3VyY2UucmVzcG9uc2VIZWFkZXJzKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9jcmVhdGVOYW1lVmFsdWVEYXRhR3JpZDogZnVuY3Rpb24o
ZGF0YSkKKyAgICBfY3JlYXRlTmFtZVZhbHVlRGF0YUdyaWQoZGF0YSkKICAgICB7CiAgICAgICAg
IGlmICghZGF0YSB8fCBkYXRhIGluc3RhbmNlb2YgQXJyYXkgPyAhZGF0YS5sZW5ndGggOiBpc0Vt
cHR5T2JqZWN0KGRhdGEpKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC0zNzQsOSArMzcw
LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZGF0YUdyaWQ7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcmVmcmVzaEltYWdlU2l6ZVNlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVz
aEltYWdlU2l6ZVNlY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNlID0gdGhpcy5f
cmVzb3VyY2U7CiAKQEAgLTM5OSwxNCArMzk1LDE0IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZURl
dGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5faW1hZ2VX
aWR0aFJvdy52YWx1ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWZweCIpLmZvcm1hdChzaXpl
LndpZHRoKTsKICAgICAgICAgICAgIHRoaXMuX2ltYWdlSGVpZ2h0Um93LnZhbHVlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCIlZnB4IikuZm9ybWF0KHNpemUuaGVpZ2h0KTsKICAgICAgICAgfS5i
aW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nb1RvUmVxdWVzdERhdGFDbGlja2Vk
OiBmdW5jdGlvbigpCisgICAgX2dvVG9SZXF1ZXN0RGF0YUNsaWNrZWQoKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVsLnNob3dSZXNvdXJjZVJlcXVlc3Qo
dGhpcy5fcmVzb3VyY2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hSZXF1ZXN0RGF0
YVNlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaFJlcXVlc3REYXRhU2VjdGlvbigpCiAg
ICAgewogICAgICAgICB2YXIgcmVzb3VyY2UgPSB0aGlzLl9yZXNvdXJjZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRl
YmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
ZXNvdXJjZVNpZGViYXJQYW5lbC5qcwppbmRleCAxMzY0YTc2Li44YTBiOTJhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVNpZGVi
YXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9SZXNvdXJjZVNpZGViYXJQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsODYgKzIzLDg2IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJh
clBhbmVsID0gZnVuY3Rpb24oKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFy
UGFuZWwuY2FsbCh0aGlzLCAicmVzb3VyY2UiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291
cmNlcyIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtU3RvcmFnZS5zdmciLCAiMSIsIHRydWUsIGZh
bHNlLCB0cnVlKTsKLQotICAgIHZhciBzZWFyY2hFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgc2VhcmNoRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzZWFyY2gtYmFy
Iik7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHNlYXJjaEVsZW1lbnQpOworV2ViSW5z
cGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsID0gY2xhc3MgUmVzb3VyY2VTaWRlYmFyUGFuZWwg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbAoreworICAgIGNvbnN0
cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJyZXNvdXJjZSIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUmVzb3VyY2VzIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1TdG9yYWdlLnN2ZyIs
ICIxIiwgdHJ1ZSwgZmFsc2UsIHRydWUpOwogCi0gICAgdGhpcy5faW5wdXRFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKLSAgICB0aGlzLl9pbnB1dEVsZW1lbnQudHlw
ZSA9ICJzZWFyY2giOwotICAgIHRoaXMuX2lucHV0RWxlbWVudC5zcGVsbGNoZWNrID0gZmFsc2U7
Ci0gICAgdGhpcy5faW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNlYXJjaCIsIHRoaXMu
X3NlYXJjaEZpZWxkQ2hhbmdlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9pbnB1dEVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCB0aGlzLl9zZWFyY2hGaWVsZElucHV0LmJpbmQodGhp
cykpOwotICAgIHRoaXMuX2lucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoInJlc3VsdHMiLCA1KTsK
LSAgICB0aGlzLl9pbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCJhdXRvc2F2ZSIsICJpbnNwZWN0
b3Itc2VhcmNoIik7Ci0gICAgdGhpcy5faW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZSgicGxhY2Vo
b2xkZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlYXJjaCBSZXNvdXJjZSBDb250ZW50Iikp
OwotICAgIHNlYXJjaEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faW5wdXRFbGVtZW50KTsKKyAg
ICAgICAgdmFyIHNlYXJjaEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgc2VhcmNoRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzZWFyY2gtYmFyIik7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzZWFyY2hFbGVtZW50KTsKIAotICAgIHRoaXMu
ZmlsdGVyQmFyLnBsYWNlaG9sZGVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWx0ZXIgUmVz
b3VyY2UgTGlzdCIpOworICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQudHlwZSA9ICJz
ZWFyY2giOworICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuc3BlbGxjaGVjayA9IGZhbHNlOwor
ICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VhcmNoIiwgdGhp
cy5fc2VhcmNoRmllbGRDaGFuZ2VkLmJpbmQodGhpcykpOworICAgICAgICB0aGlzLl9pbnB1dEVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCB0aGlzLl9zZWFyY2hGaWVsZElucHV0LmJp
bmQodGhpcykpOworICAgICAgICB0aGlzLl9pbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCJyZXN1
bHRzIiwgNSk7CisgICAgICAgIHRoaXMuX2lucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoImF1dG9z
YXZlIiwgImluc3BlY3Rvci1zZWFyY2giKTsKKyAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnNl
dEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlYXJjaCBS
ZXNvdXJjZSBDb250ZW50IikpOworICAgICAgICBzZWFyY2hFbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2lucHV0RWxlbWVudCk7CiAKLSAgICB0aGlzLl93YWl0aW5nRm9ySW5pdGlhbE1haW5GcmFt
ZSA9IHRydWU7Ci0gICAgdGhpcy5fbGFzdFNlYXJjaGVkUGFnZVNldHRpbmcgPSBuZXcgV2ViSW5z
cGVjdG9yLlNldHRpbmcoImxhc3Qtc2VhcmNoZWQtcGFnZSIsIG51bGwpOworICAgICAgICB0aGlz
LmZpbHRlckJhci5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmlsdGVyIFJl
c291cmNlIExpc3QiKTsKIAotICAgIHRoaXMuX3NlYXJjaFF1ZXJ5U2V0dGluZyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2V0dGluZygic2VhcmNoLXNpZGViYXItcXVlcnkiLCAiIik7Ci0gICAgdGhpcy5f
aW5wdXRFbGVtZW50LnZhbHVlID0gdGhpcy5fc2VhcmNoUXVlcnlTZXR0aW5nLnZhbHVlOworICAg
ICAgICB0aGlzLl93YWl0aW5nRm9ySW5pdGlhbE1haW5GcmFtZSA9IHRydWU7CisgICAgICAgIHRo
aXMuX2xhc3RTZWFyY2hlZFBhZ2VTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJs
YXN0LXNlYXJjaGVkLXBhZ2UiLCBudWxsKTsKIAotICAgIHRoaXMuX3NlYXJjaEtleWJvYXJkU2hv
cnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdlYkluc3BlY3Rvci5L
ZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0LCAiRiIsIHRoaXMuX2ZvY3VzU2VhcmNoRmll
bGQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5U2V0dGluZyA9IG5ldyBX
ZWJJbnNwZWN0b3IuU2V0dGluZygic2VhcmNoLXNpZGViYXItcXVlcnkiLCAiIik7CisgICAgICAg
IHRoaXMuX2lucHV0RWxlbWVudC52YWx1ZSA9IHRoaXMuX3NlYXJjaFF1ZXJ5U2V0dGluZy52YWx1
ZTsKIAotICAgIHRoaXMuX2xvY2FsU3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAg
dGhpcy5fc2Vzc2lvblN0b3JhZ2VSb290VHJlZUVsZW1lbnQgPSBudWxsOworICAgICAgICB0aGlz
Ll9zZWFyY2hLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRy
b2wgfCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdCwgIkYiLCB0
aGlzLl9mb2N1c1NlYXJjaEZpZWxkLmJpbmQodGhpcykpOwogCi0gICAgdGhpcy5fZGF0YWJhc2VS
b290VHJlZUVsZW1lbnQgPSBudWxsOwotICAgIHRoaXMuX2RhdGFiYXNlSG9zdFRyZWVFbGVtZW50
TWFwID0ge307CisgICAgICAgIHRoaXMuX2xvY2FsU3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9IG51
bGw7CisgICAgICAgIHRoaXMuX3Nlc3Npb25TdG9yYWdlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsK
IAotICAgIHRoaXMuX2luZGV4ZWREYXRhYmFzZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAg
dGhpcy5faW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFwID0ge307CisgICAgICAgIHRo
aXMuX2RhdGFiYXNlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fZGF0YWJh
c2VIb3N0VHJlZUVsZW1lbnRNYXAgPSB7fTsKIAotICAgIHRoaXMuX2Nvb2tpZVN0b3JhZ2VSb290
VHJlZUVsZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2VSb290VHJl
ZUVsZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9pbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVs
ZW1lbnRNYXAgPSB7fTsKIAotICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVSb290VHJlZUVsZW1l
bnQgPSBudWxsOwotICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVVUkxUcmVlRWxlbWVudE1hcCA9
IHt9OworICAgICAgICB0aGlzLl9jb29raWVTdG9yYWdlUm9vdFRyZWVFbGVtZW50ID0gbnVsbDsK
IAotICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5Db29raWVTdG9yYWdlT2JqZWN0V2FzQWRkZWQs
IHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVj
dG9yLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VN
YW5hZ2VyLkV2ZW50LkRPTVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcy5fZG9tU3RvcmFnZU9i
amVjdFdhc0FkZGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU3RvcmFnZU1hbmFnZXIuRXZlbnQuRE9NU3RvcmFn
ZU9iamVjdFdhc0luc3BlY3RlZCwgdGhpcy5fZG9tU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZCwg
dGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRhdGFiYXNlV2FzQWRkZWQsIHRoaXMu
X2RhdGFiYXNlV2FzQWRkZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5EYXRh
YmFzZVdhc0luc3BlY3RlZCwgdGhpcy5fZGF0YWJhc2VXYXNJbnNwZWN0ZWQsIHRoaXMpOwotICAg
IFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5TdG9yYWdlTWFuYWdlci5FdmVudC5JbmRleGVkRGF0YWJhc2VXYXNBZGRlZCwgdGhpcy5faW5k
ZXhlZERhdGFiYXNlV2FzQWRkZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5D
bGVhcmVkLCB0aGlzLl9zdG9yYWdlQ2xlYXJlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2FwcGxp
Y2F0aW9uQ2FjaGVSb290VHJlZUVsZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9hcHBsaWNh
dGlvbkNhY2hlVVJMVHJlZUVsZW1lbnRNYXAgPSB7fTsKIAotICAgIFdlYkluc3BlY3Rvci5hcHBs
aWNhdGlvbkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0QWRkZWQsIHRoaXMuX2ZyYW1lTWFu
aWZlc3RBZGRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2Vy
LkV2ZW50LkZyYW1lTWFuaWZlc3RSZW1vdmVkLCB0aGlzLl9mcmFtZU1hbmlmZXN0UmVtb3ZlZCwg
dGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5Db29raWVTdG9yYWdlT2JqZWN0
V2FzQWRkZWQsIHRoaXMuX2Nvb2tpZVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcyk7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2FzQWRkZWQsIHRoaXMu
X2RvbVN0b3JhZ2VPYmplY3RXYXNBZGRlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5z
dG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TdG9yYWdlTWFuYWdl
ci5FdmVudC5ET01TdG9yYWdlT2JqZWN0V2FzSW5zcGVjdGVkLCB0aGlzLl9kb21TdG9yYWdlT2Jq
ZWN0V2FzSW5zcGVjdGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkRh
dGFiYXNlV2FzQWRkZWQsIHRoaXMuX2RhdGFiYXNlV2FzQWRkZWQsIHRoaXMpOworICAgICAgICBX
ZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
U3RvcmFnZU1hbmFnZXIuRXZlbnQuRGF0YWJhc2VXYXNJbnNwZWN0ZWQsIHRoaXMuX2RhdGFiYXNl
V2FzSW5zcGVjdGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlN0b3JhZ2VNYW5hZ2VyLkV2ZW50LkluZGV4
ZWREYXRhYmFzZVdhc0FkZGVkLCB0aGlzLl9pbmRleGVkRGF0YWJhc2VXYXNBZGRlZCwgdGhpcyk7
CisgICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5TdG9yYWdlTWFuYWdlci5FdmVudC5DbGVhcmVkLCB0aGlzLl9zdG9yYWdlQ2xl
YXJlZCwgdGhpcyk7CiAKLSAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWVSZXNvdXJjZU1hbmFnZXIuRXZlbnQuTWFp
bkZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOwotICAgIFdl
Ykluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5FdmVudC5GcmFtZVdhc0FkZGVkLCB0aGlzLl9mcmFt
ZVdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLkV2ZW50LkZyYW1lTWFuaWZlc3RBZGRlZCwgdGhpcy5fZnJhbWVNYW5pZmVzdEFkZGVkLCB0
aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLkV2ZW50LkZy
YW1lTWFuaWZlc3RSZW1vdmVkLCB0aGlzLl9mcmFtZU1hbmlmZXN0UmVtb3ZlZCwgdGhpcyk7CiAK
LSAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuRE9NTm9kZVdhc0luc3BlY3RlZCwgdGhpcy5fZG9t
Tm9kZVdhc0luc3BlY3RlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291
cmNlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFu
YWdlci5FdmVudC5NYWluRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX21haW5GcmFtZURpZENoYW5nZSwg
dGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5GcmFtZVJlc291cmNlTWFuYWdlci5FdmVudC5GcmFtZVdh
c0FkZGVkLCB0aGlzLl9mcmFtZVdhc0FkZGVkLCB0aGlzKTsKIAotICAgIFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlNjcmlwdEFkZGVkLCB0aGlzLl9zY3JpcHRXYXNBZGRlZCwgdGhpcyk7Ci0gICAg
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0c0NsZWFyZWQsIHRoaXMuX3NjcmlwdHNDbGVh
cmVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkRPTU5vZGVXYXNJbnNw
ZWN0ZWQsIHRoaXMuX2RvbU5vZGVXYXNJbnNwZWN0ZWQsIHRoaXMpOwogCi0gICAgV2ViSW5zcGVj
dG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZpY2F0
aW9uLkV4dHJhRG9tYWluc0FjdGl2YXRlZCwgdGhpcy5fZXh0cmFEb21haW5zQWN0aXZhdGVkLCB0
aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuU2NyaXB0QWRkZWQsIHRoaXMu
X3NjcmlwdFdhc0FkZGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
U2NyaXB0c0NsZWFyZWQsIHRoaXMuX3NjcmlwdHNDbGVhcmVkLCB0aGlzKTsKIAotICAgIHRoaXMu
X3Jlc291cmNlc0NvbnRlbnRUcmVlT3V0bGluZSA9IHRoaXMuY29udGVudFRyZWVPdXRsaW5lOwot
ICAgIHRoaXMuX3NlYXJjaENvbnRlbnRUcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRy
ZWVPdXRsaW5lKCk7CisgICAgICAgIFdlYkluc3BlY3Rvci5ub3RpZmljYXRpb25zLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlvbi5FeHRyYURvbWFpbnNBY3RpdmF0ZWQs
IHRoaXMuX2V4dHJhRG9tYWluc0FjdGl2YXRlZCwgdGhpcyk7CiAKLSAgICB0aGlzLl9yZXNvdXJj
ZXNDb250ZW50VHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudFNlbGVjdGVk
LmJpbmQodGhpcyk7Ci0gICAgdGhpcy5fc2VhcmNoQ29udGVudFRyZWVPdXRsaW5lLm9uc2VsZWN0
ID0gdGhpcy5fdHJlZUVsZW1lbnRTZWxlY3RlZC5iaW5kKHRoaXMpOworICAgICAgICB0aGlzLl9y
ZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZTsKKyAg
ICAgICAgdGhpcy5fc2VhcmNoQ29udGVudFRyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50
VHJlZU91dGxpbmUoKTsKIAotICAgIHRoaXMuX3Jlc291cmNlc0NvbnRlbnRUcmVlT3V0bGluZS5p
bmNsdWRlU291cmNlTWFwUmVzb3VyY2VDaGlsZHJlbiA9IHRydWU7CisgICAgICAgIHRoaXMuX3Jl
c291cmNlc0NvbnRlbnRUcmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50U2Vs
ZWN0ZWQuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5fc2VhcmNoQ29udGVudFRyZWVPdXRsaW5l
Lm9uc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnRTZWxlY3RlZC5iaW5kKHRoaXMpOwogCi0gICAg
aWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dhYmxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLkRlYnVnZ2Fi
bGVUeXBlLkphdmFTY3JpcHQpCi0gICAgICAgIHRoaXMuX3Jlc291cmNlc0NvbnRlbnRUcmVlT3V0
bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFy
UGFuZWwuSGlkZURpc2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOwotfTsKKyAgICAgICAg
dGhpcy5fcmVzb3VyY2VzQ29udGVudFRyZWVPdXRsaW5lLmluY2x1ZGVTb3VyY2VNYXBSZXNvdXJj
ZUNoaWxkcmVuID0gdHJ1ZTsKIAotV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJh
clBhbmVsLAorICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2FibGVUeXBlID09PSBXZWJJ
bnNwZWN0b3IuRGVidWdnYWJsZVR5cGUuSmF2YVNjcmlwdCkKKyAgICAgICAgICAgIHRoaXMuX3Jl
c291cmNlc0NvbnRlbnRUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuSGlkZURpc2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFz
c05hbWUpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgc2hvd0RlZmF1bHRDb250ZW50
VmlldzogZnVuY3Rpb24oKQorICAgIHNob3dEZWZhdWx0Q29udGVudFZpZXcoKQogICAgIHsKICAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUpIHsK
ICAgICAgICAgICAgIHRoaXMuc2hvd01haW5GcmFtZSgpOwpAQCAtMTEyLDQxICsxMTIsNDEgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dmFyIGZpcnN0VHJlZUVsZW1lbnQgPSB0aGlzLl9yZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmUu
Y2hpbGRyZW5bMF07CiAgICAgICAgIGlmIChmaXJzdFRyZWVFbGVtZW50KQogICAgICAgICAgICAg
Zmlyc3RUcmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBjb250ZW50VHJlZU91dGxpbmVUb0F1dG9QcnVuZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fc2VhcmNoQ29udGVudFRyZWVPdXRsaW5lOwotICAgIH0sCisgICAgfQogCi0gICAg
c2hvd01haW5GcmFtZTogZnVuY3Rpb24obm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2Up
CisgICAgc2hvd01haW5GcmFtZShub2RlVG9TZWxlY3QsIHByZXZlbnRGb2N1c0NoYW5nZSkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXdG
b3JSZXByZXNlbnRlZE9iamVjdChXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFp
bkZyYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dNYWluRnJhbWVET01UcmVlOiBmdW5j
dGlvbihub2RlVG9TZWxlY3QsIHByZXZlbnRGb2N1c0NoYW5nZSkKKyAgICBzaG93TWFpbkZyYW1l
RE9NVHJlZShub2RlVG9TZWxlY3QsIHByZXZlbnRGb2N1c0NoYW5nZSkKICAgICB7CiAgICAgICAg
IHZhciBjb250ZW50VmlldyA9IFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5jb250ZW50Vmll
d0ZvclJlcHJlc2VudGVkT2JqZWN0KFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5t
YWluRnJhbWUpOwogICAgICAgICBjb250ZW50Vmlldy5zaG93RE9NVHJlZShub2RlVG9TZWxlY3Qs
IHByZXZlbnRGb2N1c0NoYW5nZSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nl
ci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hv
d01haW5GcmFtZVNvdXJjZUNvZGU6IGZ1bmN0aW9uKCkKKyAgICBzaG93TWFpbkZyYW1lU291cmNl
Q29kZSgpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29u
dGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXZWJJbnNwZWN0b3Iu
ZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKICAgICAgICAgY29udGVudFZpZXcuc2hv
d1NvdXJjZUNvZGUoKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dD
b250ZW50Vmlldyhjb250ZW50Vmlldyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93Q29udGVu
dEZsb3dET01UcmVlOiBmdW5jdGlvbihjb250ZW50Rmxvdywgbm9kZVRvU2VsZWN0LCBwcmV2ZW50
Rm9jdXNDaGFuZ2UpCisgICAgc2hvd0NvbnRlbnRGbG93RE9NVHJlZShjb250ZW50Rmxvdywgbm9k
ZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2UpCiAgICAgewogICAgICAgICB2YXIgY29udGVu
dFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNl
bnRlZE9iamVjdChjb250ZW50Rmxvdyk7CiAgICAgICAgIGlmIChub2RlVG9TZWxlY3QpCiAgICAg
ICAgICAgICBjb250ZW50Vmlldy5zZWxlY3RBbmRSZXZlYWxET01Ob2RlKG5vZGVUb1NlbGVjdCwg
cHJldmVudEZvY3VzQ2hhbmdlKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2Vy
LnNob3dDb250ZW50Vmlldyhjb250ZW50Vmlldyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93
U291cmNlQ29kZUZvckZyYW1lOiBmdW5jdGlvbihmcmFtZUlkZW50aWZpZXIsIHJldmVhbEFuZFNl
bGVjdFRyZWVFbGVtZW50KQorICAgIHNob3dTb3VyY2VDb2RlRm9yRnJhbWUoZnJhbWVJZGVudGlm
aWVyLCByZXZlYWxBbmRTZWxlY3RUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLl9mcmFtZUlkZW50aWZpZXJUb1Nob3dTb3VyY2VDb2RlV2hlbkF2YWlsYWJsZTsKIApAQCAt
MTY4LDkgKzE2OCw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgaWYgKHJldmVhbEFuZFNlbGVjdFRyZWVFbGVtZW50KQogICAgICAg
ICAgICAgdGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KGZyYW1lKS5yZXZlYWxB
bmRTZWxlY3QodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBz
aG93U291cmNlQ29kZTogZnVuY3Rpb24oc291cmNlQ29kZSwgcG9zaXRpb25Ub1JldmVhbCwgdGV4
dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQpCisgICAgc2hvd1NvdXJjZUNvZGUoc291
cmNlQ29kZSwgcG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3Jt
YXR0ZWQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghcG9zaXRpb25Ub1JldmVhbCB8
fCBwb3NpdGlvblRvUmV2ZWFsIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3Np
dGlvbiwgcG9zaXRpb25Ub1JldmVhbCk7CiAgICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdCA9
IHNvdXJjZUNvZGU7CkBAIC0xODYsNDEgKzE4Niw0MSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBjb29raWUgPSBwb3NpdGlv
blRvUmV2ZWFsID8ge2xpbmVOdW1iZXI6IHBvc2l0aW9uVG9SZXZlYWwubGluZU51bWJlciwgY29s
dW1uTnVtYmVyOiBwb3NpdGlvblRvUmV2ZWFsLmNvbHVtbk51bWJlcn0gOiB7fTsKICAgICAgICAg
V2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVk
T2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBjb29raWUpOwotICAgIH0sCisgICAgfQogCi0gICAg
c2hvd1NvdXJjZUNvZGVMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlQ29kZUxvY2F0aW9uKQorICAg
IHNob3dTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKQogICAgIHsKICAgICAg
ICAgdGhpcy5zaG93U291cmNlQ29kZShzb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNvdXJjZUNv
ZGUsIHNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5UG9zaXRpb24oKSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzaG93T3JpZ2luYWxVbmZvcm1hdHRlZFNvdXJjZUNvZGVMb2NhdGlvbjogZnVuY3Rp
b24oc291cmNlQ29kZUxvY2F0aW9uKQorICAgIHNob3dPcmlnaW5hbFVuZm9ybWF0dGVkU291cmNl
Q29kZUxvY2F0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikKICAgICB7CiAgICAgICAgIHRoaXMuc2hv
d1NvdXJjZUNvZGUoc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUsIHNvdXJjZUNvZGVMb2Nh
dGlvbi5wb3NpdGlvbigpLCB1bmRlZmluZWQsIHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAg
c2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJj
ZUNvZGVMb2NhdGlvbikKKyAgICBzaG93T3JpZ2luYWxPckZvcm1hdHRlZFNvdXJjZUNvZGVMb2Nh
dGlvbihzb3VyY2VDb2RlTG9jYXRpb24pCiAgICAgewogICAgICAgICB0aGlzLnNob3dTb3VyY2VD
b2RlKHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLCBzb3VyY2VDb2RlTG9jYXRpb24uZm9y
bWF0dGVkUG9zaXRpb24oKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93U291cmNlQ29kZVRl
eHRSYW5nZTogZnVuY3Rpb24oc291cmNlQ29kZVRleHRSYW5nZSkKKyAgICBzaG93U291cmNlQ29k
ZVRleHRSYW5nZShzb3VyY2VDb2RlVGV4dFJhbmdlKQogICAgIHsKICAgICAgICAgdmFyIHRleHRS
YW5nZVRvU2VsZWN0ID0gc291cmNlQ29kZVRleHRSYW5nZS5kaXNwbGF5VGV4dFJhbmdlOwogICAg
ICAgICB0aGlzLnNob3dTb3VyY2VDb2RlKHNvdXJjZUNvZGVUZXh0UmFuZ2UuZGlzcGxheVNvdXJj
ZUNvZGUsIHRleHRSYW5nZVRvU2VsZWN0LnN0YXJ0UG9zaXRpb24oKSwgdGV4dFJhbmdlVG9TZWxl
Y3QpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VD
b2RlVGV4dFJhbmdlOiBmdW5jdGlvbihzb3VyY2VDb2RlVGV4dFJhbmdlKQorICAgIHNob3dPcmln
aW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZVRleHRSYW5nZShzb3VyY2VDb2RlVGV4dFJhbmdlKQog
ICAgIHsKICAgICAgICAgdmFyIHRleHRSYW5nZVRvU2VsZWN0ID0gc291cmNlQ29kZVRleHRSYW5n
ZS5mb3JtYXR0ZWRUZXh0UmFuZ2U7CiAgICAgICAgIHRoaXMuc2hvd1NvdXJjZUNvZGUoc291cmNl
Q29kZVRleHRSYW5nZS5zb3VyY2VDb2RlLCB0ZXh0UmFuZ2VUb1NlbGVjdC5zdGFydFBvc2l0aW9u
KCksIHRleHRSYW5nZVRvU2VsZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dSZXNvdXJj
ZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgc2hvd1Jlc291cmNlKHJlc291cmNlKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlld0ZvclJl
cHJlc2VudGVkT2JqZWN0KHJlc291cmNlLmlzTWFpblJlc291cmNlKCkgPyByZXNvdXJjZS5wYXJl
bnRGcmFtZSA6IHJlc291cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dSZXNvdXJjZVJl
cXVlc3Q6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHNob3dSZXNvdXJjZVJlcXVlc3QocmVzb3Vy
Y2UpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVu
dEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXNvdXJjZS5pc01haW5S
ZXNvdXJjZSgpID8gcmVzb3VyY2UucGFyZW50RnJhbWUgOiByZXNvdXJjZSk7CiAKQEAgLTIzNiw5
ICsyMzYsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICByZXNvdXJjZUNvbnRlbnRWaWV3LnNob3dSZXF1ZXN0KCk7CiAKICAgICAgICAg
V2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlldyhjb250ZW50Vmlldyk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0OiBm
dW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB0cmVlRWxlbWVudEZvclJlcHJlc2VudGVk
T2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgLy8gQSBjdXN0b20gaW1w
bGVtZW50YXRpb24gaXMgbmVlZGVkIGZvciB0aGlzIHNpbmNlIHRoZSBmcmFtZXMgYXJlIHBvcHVs
YXRlZCBsYXppbHkuCiAKQEAgLTMwNSw5ICszMDUsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VT
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9hbm9ueW1vdXNTY3JpcHRz
Rm9sZGVyVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0VHJlZUVsZW1lbnQpOwogCiAgICAg
ICAgIHJldHVybiBzY3JpcHRUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIHBlcmZv
cm1TZWFyY2g6IGZ1bmN0aW9uKHNlYXJjaFRlcm0pCisgICAgcGVyZm9ybVNlYXJjaChzZWFyY2hU
ZXJtKQogICAgIHsKICAgICAgICAgLy8gQmVmb3JlIHBlcmZvcm1pbmcgYSBuZXcgc2VhcmNoLCBj
bGVhciB0aGUgb2xkIHNlYXJjaC4KICAgICAgICAgdGhpcy5fc2VhcmNoQ29udGVudFRyZWVPdXRs
aW5lLnJlbW92ZUNoaWxkcmVuKCk7CkBAIC01MTUsMzUgKzUxNSwzNSBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAvLyA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMTMxMjUyPiBXZWIgSW5zcGVjdG9yOiBKU0NvbnRleHQgaW5zcGVjdGlvbiBS
ZXNvdXJjZSBzZWFyY2ggZG9lcyBub3Qgd29yawogICAgICAgICBpZiAoIXdpbmRvdy5ET01BZ2Vu
dCAmJiAhd2luZG93LlBhZ2VBZ2VudCkKICAgICAgICAgICAgIHVwZGF0ZUVtcHR5Q29udGVudFBs
YWNlaG9sZGVyU29vbi5jYWxsKHRoaXMpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX3Nob3dSZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmU6IGZ1bmN0aW9uKCkKKyAg
ICBfc2hvd1Jlc291cmNlc0NvbnRlbnRUcmVlT3V0bGluZSgpCiAgICAgewogICAgICAgICB0aGlz
LmZpbHRlckJhci5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRmlsdGVyIFJl
c291cmNlIExpc3QiKTsKICAgICAgICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLl9y
ZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd1Nl
YXJjaENvbnRlbnRUcmVlT3V0bGluZTogZnVuY3Rpb24oKQorICAgIF9zaG93U2VhcmNoQ29udGVu
dFRyZWVPdXRsaW5lKCkKICAgICB7CiAgICAgICAgIHRoaXMuZmlsdGVyQmFyLnBsYWNlaG9sZGVy
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWx0ZXIgU2VhcmNoIFJlc3VsdHMiKTsKICAgICAg
ICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLl9zZWFyY2hDb250ZW50VHJlZU91dGxp
bmU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2VhcmNoRmllbGRDaGFuZ2VkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfc2VhcmNoRmllbGRDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhp
cy5wZXJmb3JtU2VhcmNoKGV2ZW50LnRhcmdldC52YWx1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfc2VhcmNoRmllbGRJbnB1dDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NlYXJjaEZpZWxkSW5w
dXQoZXZlbnQpCiAgICAgewogICAgICAgICAvLyBJZiB0aGUgc2VhcmNoIGZpZWxkIGlzIGNsZWFy
ZWQsIGltbWVkaWF0ZWx5IGNsZWFyIHRoZSBzZWFyY2ggcmVzdWx0cyB0cmVlIG91dGxpbmUuCiAg
ICAgICAgIGlmICghZXZlbnQudGFyZ2V0LnZhbHVlLmxlbmd0aCAmJiB0aGlzLmNvbnRlbnRUcmVl
T3V0bGluZSA9PT0gdGhpcy5fc2VhcmNoQ29udGVudFRyZWVPdXRsaW5lKQogICAgICAgICAgICAg
dGhpcy5wZXJmb3JtU2VhcmNoKCIiKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWFyY2hUcmVl
RWxlbWVudEZvclJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBfc2VhcmNoVHJlZUVs
ZW1lbnRGb3JSZXNvdXJjZShyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZVRy
ZWVFbGVtZW50ID0gdGhpcy5fc2VhcmNoQ29udGVudFRyZWVPdXRsaW5lLmdldENhY2hlZFRyZWVF
bGVtZW50KHJlc291cmNlKTsKICAgICAgICAgaWYgKCFyZXNvdXJjZVRyZWVFbGVtZW50KSB7CkBA
IC01NTUsOSArNTU1LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiByZXNvdXJjZVRyZWVFbGVtZW50
OwotICAgIH0sCisgICAgfQogCi0gICAgX3NlYXJjaFRyZWVFbGVtZW50Rm9yU2NyaXB0OiBmdW5j
dGlvbihzY3JpcHQpCisgICAgX3NlYXJjaFRyZWVFbGVtZW50Rm9yU2NyaXB0KHNjcmlwdCkKICAg
ICB7CiAgICAgICAgIHZhciBzY3JpcHRUcmVlRWxlbWVudCA9IHRoaXMuX3NlYXJjaENvbnRlbnRU
cmVlT3V0bGluZS5nZXRDYWNoZWRUcmVlRWxlbWVudChzY3JpcHQpOwogICAgICAgICBpZiAoIXNj
cmlwdFRyZWVFbGVtZW50KSB7CkBAIC01NjksMTYgKzU2OSwxNiBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIHNjcmlwdFRyZWVFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX2ZvY3VzU2VhcmNo
RmllbGQ6IGZ1bmN0aW9uKGtleWJvYXJkU2hvcnRjdXQsIGV2ZW50KQorICAgIF9mb2N1c1NlYXJj
aEZpZWxkKGtleWJvYXJkU2hvcnRjdXQsIGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5zaG93
KCk7CiAKICAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnNlbGVjdCgpOwotICAgIH0sCisgICAg
fQogCi0gICAgX21haW5GcmFtZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX21haW5G
cmFtZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9tYWluRnJhbWVU
cmVlRWxlbWVudCkgewogICAgICAgICAgICAgdGhpcy5fbWFpbkZyYW1lVHJlZUVsZW1lbnQuZnJh
bWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuTWFpblJlc291
cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVNYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMp
OwpAQCAtNjE2LDkgKzYxNiw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gU2VhcmNoIGZvciB3aGF0ZXZlciBpcyBpbiB0aGUg
aW5wdXQgZmllbGQuIFRoaXMgd2FzIHBvcHVsYXRlZCB3aXRoIHRoZSBsYXN0IHVzZWQgc2VhcmNo
IHRlcm0uCiAgICAgICAgIHRoaXMucGVyZm9ybVNlYXJjaCh0aGlzLl9pbnB1dEVsZW1lbnQudmFs
dWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX21haW5GcmFtZU1haW5SZXNvdXJjZURpZENoYW5n
ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX21haW5GcmFtZU1haW5SZXNvdXJjZURpZENoYW5nZShl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciB3YXNTaG93aW5nUmVzb3VyY2VTaWRlYmFyID0gdGhp
cy5zZWxlY3RlZDsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IFdlYkluc3BlY3Rv
ci5jb250ZW50QnJvd3Nlci5jdXJyZW50Q29udGVudFZpZXc7CkBAIC02NTUsOSArNjU1LDkgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
Ly8gRGVsYXkgdGhpcyB3b3JrIGJlY2F1c2Ugb3RoZXIgbGlzdGVuZXJzIG9mIHRoaXMgZXZlbnQg
bWlnaHQgbm90IGhhdmUgZmlyZWQgeWV0LiBTbyBzZWxlY3RpbmcgdGhlIG1haW4gZnJhbWUKICAg
ICAgICAgLy8gYmVmb3JlIHRob3NlIGxpc3RlbmVycyBkbyB0aGVpciB3b3JrIG1pZ2h0IGNhdXNl
IHRoZSBjb250ZW50IG9mIHRoZSBvbGQgcGFnZSB0byBzaG93IGluc3RlYWQgb2YgdGhlIG5ldyBw
YWdlLgogICAgICAgICBzZXRUaW1lb3V0KGRlbGF5ZWRXb3JrLmJpbmQodGhpcyksIDApOwotICAg
IH0sCisgICAgfQogCi0gICAgX2ZyYW1lV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9m
cmFtZVdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9mcmFtZUlkZW50
aWZpZXJUb1Nob3dTb3VyY2VDb2RlV2hlbkF2YWlsYWJsZSkKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTY2Nyw5ICs2NjcsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuc2hvd1NvdXJj
ZUNvZGVGb3JGcmFtZShmcmFtZS5pZCwgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2Ny
aXB0V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zY3JpcHRXYXNBZGRlZChldmVudCkK
ICAgICB7CiAgICAgICAgIHZhciBzY3JpcHQgPSBldmVudC5kYXRhLnNjcmlwdDsKIApAQCAtNzE1
LDkgKzcxNSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgICAgIHBhcmVudEZvbGRlclRyZWVFbGVtZW50LmFwcGVuZENoaWxkKHNj
cmlwdFRyZWVFbGVtZW50KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3Njcmlw
dHNDbGVhcmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2NyaXB0c0NsZWFyZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fZXh0ZW5zaW9uU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50
KSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fZXh0ZW5zaW9uU2NyaXB0c0ZvbGRlclRyZWVFbGVt
ZW50LnBhcmVudCkKQEAgLTczNiw5ICs3MzYsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuX2Fub255bW91c1Nj
cmlwdHNGb2xkZXJUcmVlRWxlbWVudC5wYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy5fYW5vbnltb3Vz
U2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50KTsKICAgICAgICAgICAgIHRoaXMuX2Fub255bW91c1Nj
cmlwdHNGb2xkZXJUcmVlRWxlbWVudCA9IG51bGw7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAotICAgIF9zY3JpcHRzVG9TZWFyY2g6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zY3JpcHRzVG9T
ZWFyY2goZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgbm9uUmVzb3VyY2VTY3JpcHRzID0gW107
CiAKQEAgLTc2Myw5ICs3NjMsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG5vblJlc291cmNlU2Ny
aXB0czsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudFNlbGVjdGVkOiBmdW5jdGlv
bih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAgX3RyZWVFbGVtZW50U2VsZWN0ZWQo
dHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsKICAgICAgICAgaWYgKHRyZWVFbGVt
ZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50IHx8IHRyZWVFbGVt
ZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlSG9zdFRyZWVFbGVtZW50IHx8CiAg
ICAgICAgICAgICB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0
YWJhc2VIb3N0VHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQpCkBAIC03ODgsMTQgKzc4OCwxNCBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5zaG93TWFpbkZyYW1lRE9NVHJlZSh0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC5k
b21Ob2RlLCB0cnVlKTsKICAgICAgICAgZWxzZSBpZiAodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0
KQogICAgICAgICAgICAgdGhpcy5zaG93T3JpZ2luYWxPckZvcm1hdHRlZFNvdXJjZUNvZGVUZXh0
UmFuZ2UodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Quc291cmNlQ29kZVRleHRSYW5nZSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZG9tTm9kZVdhc0luc3BlY3RlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2RvbU5vZGVXYXNJbnNwZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlz
LnNob3dNYWluRnJhbWVET01UcmVlKGV2ZW50LmRhdGEubm9kZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZG9tU3RvcmFnZU9iamVjdFdhc0FkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZG9t
U3RvcmFnZU9iamVjdFdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGRvbVN0b3Jh
Z2UgPSBldmVudC5kYXRhLmRvbVN0b3JhZ2U7CiAgICAgICAgIHZhciBzdG9yYWdlRWxlbWVudCA9
IG5ldyBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50KGRvbVN0b3JhZ2UpOwpAQCAt
ODA0LDE2ICs4MDQsMTYgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2xvY2FsU3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9
IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZChzdG9yYWdlRWxlbWVudCwgdGhpcy5fbG9jYWxTdG9yYWdl
Um9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2FsIFN0b3JhZ2UiKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3Nlc3Npb25TdG9yYWdlUm9vdFRyZWVF
bGVtZW50ID0gdGhpcy5fYWRkU3RvcmFnZUNoaWxkKHN0b3JhZ2VFbGVtZW50LCB0aGlzLl9zZXNz
aW9uU3RvcmFnZVJvb3RUcmVlRWxlbWVudCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZXNzaW9u
IFN0b3JhZ2UiKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZG9tU3RvcmFnZU9iamVjdFdhc0lu
c3BlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RvbVN0b3JhZ2VPYmplY3RXYXNJbnNwZWN0
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IGV2ZW50LmRhdGEuZG9t
U3RvcmFnZTsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy50cmVlRWxlbWVudEZvclJl
cHJlc2VudGVkT2JqZWN0KGRvbVN0b3JhZ2UpOwogICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWxB
bmRTZWxlY3QodHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YWJhc2VXYXNBZGRlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFiYXNlV2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgZGF0YWJhc2UgPSBldmVudC5kYXRhLmRhdGFiYXNlOwogCkBAIC04MjYsMTYgKzgy
NiwxNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
CiAgICAgICAgIHZhciBkYXRhYmFzZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFiYXNl
VHJlZUVsZW1lbnQoZGF0YWJhc2UpOwogICAgICAgICB0aGlzLl9kYXRhYmFzZUhvc3RUcmVlRWxl
bWVudE1hcFtkYXRhYmFzZS5ob3N0XS5hcHBlbmRDaGlsZChkYXRhYmFzZUVsZW1lbnQpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2RhdGFiYXNlV2FzSW5zcGVjdGVkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfZGF0YWJhc2VXYXNJbnNwZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZGF0
YWJhc2UgPSBldmVudC5kYXRhLmRhdGFiYXNlOwogICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0
aGlzLnRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QoZGF0YWJhc2UpOwogICAgICAgICB0
cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QodHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
aW5kZXhlZERhdGFiYXNlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9pbmRleGVkRGF0
YWJhc2VXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBpbmRleGVkRGF0YWJhc2Ug
PSBldmVudC5kYXRhLmluZGV4ZWREYXRhYmFzZTsKIApAQCAtODQ4LDE3ICs4NDgsMTcgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2
YXIgaW5kZXhlZERhdGFiYXNlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFi
YXNlVHJlZUVsZW1lbnQoaW5kZXhlZERhdGFiYXNlKTsKICAgICAgICAgdGhpcy5faW5kZXhlZERh
dGFiYXNlSG9zdFRyZWVFbGVtZW50TWFwW2luZGV4ZWREYXRhYmFzZS5ob3N0XS5hcHBlbmRDaGls
ZChpbmRleGVkRGF0YWJhc2VFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb29raWVT
dG9yYWdlT2JqZWN0V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb29raWVTdG9yYWdl
T2JqZWN0V2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVu
dC5kYXRhLmNvb2tpZVN0b3JhZ2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFn
ZU9iamVjdCk7CiAKICAgICAgICAgdmFyIGNvb2tpZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudChldmVudC5kYXRhLmNvb2tpZVN0b3JhZ2UpOwogICAg
ICAgICB0aGlzLl9jb29raWVTdG9yYWdlUm9vdFRyZWVFbGVtZW50ID0gdGhpcy5fYWRkU3RvcmFn
ZUNoaWxkKGNvb2tpZUVsZW1lbnQsIHRoaXMuX2Nvb2tpZVN0b3JhZ2VSb290VHJlZUVsZW1lbnQs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29va2llcyIpKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9mcmFtZU1hbmlmZXN0QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9mcmFtZU1hbmlmZXN0
QWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJhbWVNYW5pZmVzdCA9IGV2ZW50LmRh
dGEuZnJhbWVNYW5pZmVzdDsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZnJhbWVNYW5pZmVzdCBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpOwpAQCAtODcyLDE0
ICs4NzIsMTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB2YXIgZnJhbWVDYWNoZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkFw
cGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50KGZyYW1lTWFuaWZlc3QpOwogICAgICAgICB0
aGlzLl9hcHBsaWNhdGlvbkNhY2hlVVJMVHJlZUVsZW1lbnRNYXBbbWFuaWZlc3RVUkxdLmFwcGVu
ZENoaWxkKGZyYW1lQ2FjaGVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZU1h
bmlmZXN0UmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2ZyYW1lTWFuaWZlc3RSZW1vdmVk
KGV2ZW50KQogICAgIHsKICAgICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KLSAgICB9
LAorICAgIH0KIAotICAgIF9jb21wYXJlVHJlZUVsZW1lbnRzOiBmdW5jdGlvbihhLCBiKQorICAg
IF9jb21wYXJlVHJlZUVsZW1lbnRzKGEsIGIpCiAgICAgewogICAgICAgICAvLyBBbHdheXMgc29y
dCB0aGUgbWFpbiBmcmFtZSBlbGVtZW50IGZpcnN0LgogICAgICAgICBpZiAoYSBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50KQpAQCAtODkxLDkgKzg5MSw5IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGIubWFpblRpdGxlKTsKIAogICAgICAgICByZXR1cm4gKGEubWFpblRpdGxlIHx8
ICIiKS5sb2NhbGVDb21wYXJlKGIubWFpblRpdGxlIHx8ICIiKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9hZGRTdG9yYWdlQ2hpbGQ6IGZ1bmN0aW9uKGNoaWxkRWxlbWVudCwgcGFyZW50RWxlbWVu
dCwgZm9sZGVyTmFtZSkKKyAgICBfYWRkU3RvcmFnZUNoaWxkKGNoaWxkRWxlbWVudCwgcGFyZW50
RWxlbWVudCwgZm9sZGVyTmFtZSkKICAgICB7CiAgICAgICAgIGlmICghcGFyZW50RWxlbWVudCkg
ewogICAgICAgICAgICAgY2hpbGRFbGVtZW50LmZsYXR0ZW5lZCA9IHRydWU7CkBAIC05MjMsOSAr
OTIzLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcGFyZW50RWxlbWVudC5pbnNlcnRDaGlsZChjaGlsZEVsZW1lbnQsIGluc2VydGlv
bkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihjaGlsZEVsZW1lbnQsIHBhcmVu
dEVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVlRWxlbWVudHMpKTsKIAogICAgICAg
ICByZXR1cm4gcGFyZW50RWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdG9yYWdlQ2xl
YXJlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3N0b3JhZ2VDbGVhcmVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgLy8gQ2xvc2UgYWxsIERPTSBhbmQgY29va2llIHN0b3JhZ2UgY29udGVudCB2aWV3
cyBzaW5jZSB0aGUgbWFpbiBmcmFtZSBoYXMgbmF2aWdhdGVkIGFuZCBhbGwgc3RvcmFnZXMgYXJl
IGNsZWFyZWQuCiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5jb250ZW50Vmll
d0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3c09mUHJvdG90eXBlKFdlYkluc3BlY3Rvci5D
b29raWVTdG9yYWdlQ29udGVudFZpZXcpOwpAQCAtOTYxLDEzICs5NjEsMTEgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY29v
a2llU3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7CiAgICAgICAgIHRoaXMuX2FwcGxpY2F0
aW9uQ2FjaGVSb290VHJlZUVsZW1lbnQgPSBudWxsOwogICAgICAgICB0aGlzLl9hcHBsaWNhdGlv
bkNhY2hlVVJMVHJlZUVsZW1lbnRNYXAgPSB7fTsKLSAgICB9LAorICAgIH0KIAotICAgIF9leHRy
YURvbWFpbnNBY3RpdmF0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZXh0cmFEb21haW5zQWN0aXZhdGVk
KCkKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnYWJsZVR5cGUgPT09IFdl
Ykluc3BlY3Rvci5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0KQogICAgICAgICAgICAgdGhpcy5f
cmVzb3VyY2VzQ29udGVudFRyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5IaWRlRGlzY2xvc3VyZUJ1dHRvbnNTdHls
ZUNsYXNzTmFtZSk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBh
bmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlk
Tm9kZS5qcwppbmRleCA4MzkzMzU3Li43MjI1ZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2Rl
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291
cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDQ2ICsyMywzOCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVs
aW5lRGF0YUdyaWROb2RlID0gZnVuY3Rpb24ocmVzb3VyY2VUaW1lbGluZVJlY29yZCwgZ3JhcGhP
bmx5LCBncmFwaERhdGFTb3VyY2UpCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFH
cmlkTm9kZSA9IGNsYXNzIFJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxp
bmVEYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBncmFwaE9ubHksIGdyYXBoRGF0YVNvdXJjZSk7Cisg
ICAgY29uc3RydWN0b3IocmVzb3VyY2VUaW1lbGluZVJlY29yZCwgZ3JhcGhPbmx5LCBncmFwaERh
dGFTb3VyY2UpCisgICAgeworICAgICAgICBzdXBlcihncmFwaE9ubHksIGdyYXBoRGF0YVNvdXJj
ZSk7CiAKLSAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlVGltZWxpbmVSZWNvcmQucmVzb3Vy
Y2U7Ci0gICAgdGhpcy5fcmVjb3JkID0gcmVzb3VyY2VUaW1lbGluZVJlY29yZDsKKyAgICAgICAg
dGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZVRpbWVsaW5lUmVjb3JkLnJlc291cmNlOworICAgICAg
ICB0aGlzLl9yZWNvcmQgPSByZXNvdXJjZVRpbWVsaW5lUmVjb3JkOwogCi0gICAgdGhpcy5fcmVj
b3JkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLkV2ZW50LlVw
ZGF0ZWQsIGdyYXBoT25seSA/IHRoaXMuX3RpbWVsaW5lUmVjb3JkVXBkYXRlZCA6IHRoaXMuX25l
ZWRzUmVmcmVzaCwgdGhpcyk7CisgICAgICAgIHRoaXMuX3JlY29yZC5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5FdmVudC5VcGRhdGVkLCBncmFwaE9ubHkgPyB0
aGlzLl90aW1lbGluZVJlY29yZFVwZGF0ZWQgOiB0aGlzLl9uZWVkc1JlZnJlc2gsIHRoaXMpOwog
Ci0gICAgaWYgKCFncmFwaE9ubHkpIHsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVVJMRGlkQ2hhbmdlLCB0aGlzLl9u
ZWVkc1JlZnJlc2gsIHRoaXMpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UeXBlRGlkQ2hhbmdlLCB0aGlzLl9uZWVk
c1JlZnJlc2gsIHRoaXMpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlkRmluaXNoLCB0aGlzLl9uZWVk
c1JlZnJlc2gsIHRoaXMpOwotICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlkRmFpbCwgdGhpcy5fbmVlZHNS
ZWZyZXNoLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuU2l6ZURpZENoYW5nZSwgdGhpcy5fbmVlZHNSZWZy
ZXNoLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHJhbnNmZXJTaXplRGlkQ2hhbmdlLCB0aGlzLl9uZWVk
c1JlZnJlc2gsIHRoaXMpOworICAgICAgICBpZiAoIWdyYXBoT25seSkgeworICAgICAgICAgICAg
dGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZl
bnQuVVJMRGlkQ2hhbmdlLCB0aGlzLl9uZWVkc1JlZnJlc2gsIHRoaXMpOworICAgICAgICAgICAg
dGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZl
bnQuVHlwZURpZENoYW5nZSwgdGhpcy5fbmVlZHNSZWZyZXNoLCB0aGlzKTsKKyAgICAgICAgICAg
IHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlLkV2
ZW50LkxvYWRpbmdEaWRGaW5pc2gsIHRoaXMuX25lZWRzUmVmcmVzaCwgdGhpcyk7CisgICAgICAg
ICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJj
ZS5FdmVudC5Mb2FkaW5nRGlkRmFpbCwgdGhpcy5fbmVlZHNSZWZyZXNoLCB0aGlzKTsKKyAgICAg
ICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291
cmNlLkV2ZW50LlNpemVEaWRDaGFuZ2UsIHRoaXMuX25lZWRzUmVmcmVzaCwgdGhpcyk7CisgICAg
ICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNv
dXJjZS5FdmVudC5UcmFuc2ZlclNpemVEaWRDaGFuZ2UsIHRoaXMuX25lZWRzUmVmcmVzaCwgdGhp
cyk7CisgICAgICAgIH0KICAgICB9Ci19OwotCi0vLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3Bl
Y3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYkluc3BlY3Rv
ci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlKTsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlVGlt
ZWxpbmVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xhc3NOYW1lID0gImljb24iOwotV2ViSW5zcGVj
dG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuRXJyb3JTdHlsZUNsYXNzTmFtZSA9ICJl
cnJvciI7Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVE
YXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLAogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgcmVjb3JkcygpCiAg
ICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3JlY29yZF07Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgcmVzb3VyY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKQEAgLTkzLDE2ICs4NSwxNiBA
QCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdGhpcy5fY2FjaGVkRGF0YSA9IGRhdGE7CiAgICAgICAgIHJldHVybiBkYXRh
OwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlQ2VsbENvbnRlbnQ6IGZ1bmN0aW9uKGNvbHVt
bklkZW50aWZpZXIsIGNlbGwpCisgICAgY3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmll
ciwgY2VsbCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlOwog
CiAgICAgICAgIGlmIChyZXNvdXJjZS5mYWlsZWQgfHwgcmVzb3VyY2UuY2FuY2VsZWQgfHwgcmVz
b3VyY2Uuc3RhdHVzQ29kZSA+PSA0MDApCi0gICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuRXJyb3JTdHlsZUNsYXNz
TmFtZSk7CisgICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoImVycm9yIik7CiAKLSAgICAg
ICAgY29uc3QgZW1wdHlWYWx1ZVBsYWNlaG9sZGVyU3RyaW5nID0gIlx1MjAxNCI7CisgICAgICAg
IHZhciBlbXB0eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgPSAiXHUyMDE0IjsKICAgICAgICAgdmFy
IHZhbHVlID0gdGhpcy5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwogCiAgICAgICAgIHN3aXRjaCAo
Y29sdW1uSWRlbnRpZmllcikgewpAQCAtMTE3LDcgKzEwOSw3IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGZyYWdt
ZW50LmFwcGVuZENoaWxkKGdvVG9CdXR0b24pOwogCiAgICAgICAgICAgICB2YXIgaWNvbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgaWNvbi5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5JY29uU3R5bGVDbGFz
c05hbWU7CisgICAgICAgICAgICBpY29uLmNsYXNzTmFtZSA9ICJpY29uIjsKICAgICAgICAgICAg
IGZyYWdtZW50LmFwcGVuZENoaWxkKGljb24pOwogCiAgICAgICAgICAgICB2YXIgdGV4dCA9IGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHZhbHVlKTsKQEAgLTE1MSw5ICsxNDMsOSBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnBy
b3RvdHlwZS5jcmVhdGVDZWxsQ29udGVudC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIsIGNl
bGwpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJl
c2goKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFJlZnJlc2hJZGVudGlmaWVy
KSB7CiAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRSZWZy
ZXNoSWRlbnRpZmllcik7CkBAIC0xNjMsMTEgKzE1NSwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlz
Ll9jYWNoZWREYXRhOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9k
ZS5wcm90b3R5cGUucmVmcmVzaC5jYWxsKHRoaXMpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQogCi0gICAgX25lZWRzUmVmcmVzaDogZnVuY3Rpb24oKQorICAgIF9uZWVkc1JlZnJl
c2goKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZGF0YUdyaWQgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVEYXRhR3JpZCkgewogICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5kYXRh
R3JpZE5vZGVOZWVkc1JlZnJlc2godGhpcyk7CkBAIC0xNzgsMTQgKzE3MCwxNCBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2NoZWR1bGVkUmVmcmVzaElkZW50aWZpZXIg
PSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5yZWZyZXNoLmJpbmQodGhpcykpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2dvVG9SZXNvdXJjZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2dvVG9S
ZXNvdXJjZShldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGVi
YXJQYW5lbC5zaG93U291cmNlQ29kZSh0aGlzLl9yZXNvdXJjZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfdGltZWxpbmVSZWNvcmRVcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGltZWxp
bmVSZWNvcmRVcGRhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuaXNSZWNvcmRW
aXNpYmxlKHRoaXMuX3JlY29yZCkpCiAgICAgICAgICAgICB0aGlzLm5lZWRzR3JhcGhSZWZyZXNo
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVudC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3Jp
ZE5vZGVQYXRoQ29tcG9uZW50LmpzCmluZGV4IGE0MzIyYjkuLjcxMDc5MDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxp
bmVEYXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29t
cG9uZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMywzMSArMjMsMzEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBh
dGhDb21wb25lbnQgPSBmdW5jdGlvbihyZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlKSB7Ci0g
ICAgdmFyIHJlc291cmNlID0gcmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5yZWNvcmQucmVz
b3VyY2U7Ci0gICAgdmFyIGNsYXNzTmFtZXMgPSBbV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVs
ZW1lbnQuUmVzb3VyY2VJY29uU3R5bGVDbGFzc05hbWUsIHJlc291cmNlLnR5cGVdOwotCi0gICAg
V2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuY2FsbCh0aGlzLCByZXNvdXJj
ZVRpbWVsaW5lRGF0YUdyaWROb2RlLmRhdGEubmFtZSwgY2xhc3NOYW1lcywgcmVzb3VyY2UpOwor
V2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50ID0g
Y2xhc3MgUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudAoreworICAgIGNvbnN0cnVjdG9y
KHJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUpCisgICAgeworICAgICAgICB2YXIgcmVzb3Vy
Y2UgPSByZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLnJlY29yZC5yZXNvdXJjZTsKKyAgICAg
ICAgdmFyIGNsYXNzTmFtZXMgPSBbV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuUmVz
b3VyY2VJY29uU3R5bGVDbGFzc05hbWUsIHJlc291cmNlLnR5cGVdOwogCi0gICAgdGhpcy5fcmVz
b3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZSA9IHJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGU7
Ci19OworICAgICAgICBzdXBlcihyZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmRhdGEubmFt
ZSwgY2xhc3NOYW1lcywgcmVzb3VyY2UpOwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGlu
ZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQs
CisgICAgICAgIHRoaXMuX3Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUgPSByZXNvdXJjZVRp
bWVsaW5lRGF0YUdyaWROb2RlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJl
c291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
cHJldmlvdXNTaWJsaW5nKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2VUaW1l
bGluZURhdGFHcmlkTm9kZS5wcmV2aW91c1NpYmxpbmcpCiAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFH
cmlkTm9kZVBhdGhDb21wb25lbnQodGhpcy5fcmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5w
cmV2aW91c1NpYmxpbmcpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5leHRTaWJsaW5nKCkK
ICAgICB7CkBAIC01Niw1ICs1NiwzIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0
YUdyaWROb2RlUGF0aENvbXBvbmVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50KHRo
aXMuX3Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUubmV4dFNpYmxpbmcpOwogICAgIH0KIH07
Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVu
dC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21w
b25lbnQucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVsZW1lbnQuanMKaW5kZXggYjgw
OThhOS4uZTg4OGU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUmVzb3VyY2VUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4MSAr
MjMsNzcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlc291cmNlLCByZXByZXNl
bnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50ID0gY2xhc3MgUmVz
b3VyY2VUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1l
bnQKIHsKLSAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50LmNh
bGwodGhpcywgcmVzb3VyY2UsIFtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5TdHls
ZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuUmVzb3VyY2VJY29u
U3R5bGVDbGFzc05hbWUsIHJlc291cmNlLnR5cGVdLCAiIiwgIiIsIHJlcHJlc2VudGVkT2JqZWN0
IHx8IHJlc291cmNlLCBmYWxzZSk7CisgICAgY29uc3RydWN0b3IocmVzb3VyY2UsIHJlcHJlc2Vu
dGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UpOwogCi0gICAgdGhpcy5fdXBkYXRlUmVzb3VyY2Uo
cmVzb3VyY2UpOwotfTsKKyAgICAgICAgc3VwZXIocmVzb3VyY2UsIFsicmVzb3VyY2UiLCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUljb25TdHlsZUNsYXNzTmFtZSwg
cmVzb3VyY2UudHlwZV0sICIiLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QgfHwgcmVzb3VyY2UsIGZh
bHNlKTsKIAotV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUg
PSAicmVzb3VyY2UiOwotV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuUmVzb3VyY2VJ
Y29uU3R5bGVDbGFzc05hbWUgPSAicmVzb3VyY2UtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUcmVlRWxlbWVudC5GYWlsZWRTdHlsZUNsYXNzTmFtZSA9ICJmYWlsZWQiOworICAgICAgICB0
aGlzLl91cGRhdGVSZXNvdXJjZShyZXNvdXJjZSk7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlRWxlbWVudC5jb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVudHMgPSBmdW5jdGlvbihh
LCBiKQotewotICAgIC8vIENvbXBhcmUgYnkgdHlwZSBmaXJzdCB0byBrZWVwIHJlc291cmNlcyBn
cm91cGVkIGJ5IHR5cGUgd2hlbiBub3Qgc29ydGVkIGludG8gZm9sZGVycy4KLSAgICB2YXIgY29t
cGFyaXNvblJlc3VsdCA9IGEucmVzb3VyY2UudHlwZS5sb2NhbGVDb21wYXJlKGIucmVzb3VyY2Uu
dHlwZSk7Ci0gICAgaWYgKGNvbXBhcmlzb25SZXN1bHQgIT09IDApCi0gICAgICAgIHJldHVybiBj
b21wYXJpc29uUmVzdWx0OwotCi0gICAgLy8gQ29tcGFyZSBhc3luYyByZXNvdXJjZSB0eXBlcyBi
eSB0aGVpciBmaXJzdCB0aW1lc3RhbXAgc28gdGhleSBhcmUgaW4gY2hyb25vbG9naWNhbCBvcmRl
ci4KLSAgICBpZiAoYS5yZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlw
ZS5YSFIgfHwgYS5yZXNvdXJjZS50eXBlID09PSBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuVHlwZS5X
ZWJTb2NrZXQpCi0gICAgICAgIHJldHVybiBhLnJlc291cmNlLmZpcnN0VGltZXN0YW1wIC0gYi5y
ZXNvdXJjZS5maXJzdFRpbWVzdGFtcCB8fCAwOwotCi0gICAgLy8gQ29tcGFyZSBieSBzdWJ0aXRs
ZSB3aGVuIHRoZSB0eXBlcyBhcmUgdGhlIHNhbWUuIFRoZSBzdWJ0aXRsZSBpcyB1c2VkIHRvIHNo
b3cgdGhlCi0gICAgLy8gZG9tYWluIG9mIHRoZSByZXNvdXJjZS4gVGhpcyBjYXVzZXMgcmVzb3Vy
Y2VzIHRvIGdyb3VwIGJ5IGRvbWFpbi4gSWYgdGhlIHJlc291cmNlCi0gICAgLy8gaXMgb24gdGhl
IHNhbWUgZG9tYWluIGFzIHRoZSBmcmFtZSBpdCB3aWxsIGhhdmUgYW4gZW1wdHkgc3VidGl0bGUu
IFRoaXMgaXMgZ29vZAotICAgIC8vIGJlY2F1c2UgZW1wdHkgc3RyaW5nIHNvcnRzIGZpcnN0LCBz
byB0aG9zZSB3aWxsIGFwcGVhciBiZWZvcmUgZXh0ZXJuYWwgcmVzb3VyY2VzLgotICAgIGNvbXBh
cmlzb25SZXN1bHQgPSBhLnN1YnRpdGxlLmxvY2FsZUNvbXBhcmUoYi5zdWJ0aXRsZSk7Ci0gICAg
aWYgKGNvbXBhcmlzb25SZXN1bHQgIT09IDApCi0gICAgICAgIHJldHVybiBjb21wYXJpc29uUmVz
dWx0OwotCi0gICAgLy8gQ29tcGFyZSBieSB0aXRsZSB3aGVuIHRoZSBzdWJ0aXRsZXMgYXJlIHRo
ZSBzYW1lLgotICAgIHJldHVybiBhLm1haW5UaXRsZS5sb2NhbGVDb21wYXJlKGIubWFpblRpdGxl
KTsKLX07CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50
LmNvbXBhcmVGb2xkZXJBbmRSZXNvdXJjZVRyZWVFbGVtZW50cyA9IGZ1bmN0aW9uKGEsIGIpCi17
Ci0gICAgdmFyIGFJc0ZvbGRlciA9IGEgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRm9sZGVyVHJl
ZUVsZW1lbnQ7Ci0gICAgdmFyIGJJc0ZvbGRlciA9IGIgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
Rm9sZGVyVHJlZUVsZW1lbnQ7Ci0KLSAgICBpZiAoYUlzRm9sZGVyICYmICFiSXNGb2xkZXIpCi0g
ICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoIWFJc0ZvbGRlciAmJiBiSXNGb2xkZXIpCi0gICAg
ICAgIHJldHVybiAxOwotICAgIGlmIChhSXNGb2xkZXIgJiYgYklzRm9sZGVyKQorICAgIHN0YXRp
YyBjb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVudHMoYSwgYikKKyAgICB7CisgICAgICAgIC8vIENv
bXBhcmUgYnkgdHlwZSBmaXJzdCB0byBrZWVwIHJlc291cmNlcyBncm91cGVkIGJ5IHR5cGUgd2hl
biBub3Qgc29ydGVkIGludG8gZm9sZGVycy4KKyAgICAgICAgdmFyIGNvbXBhcmlzb25SZXN1bHQg
PSBhLnJlc291cmNlLnR5cGUubG9jYWxlQ29tcGFyZShiLnJlc291cmNlLnR5cGUpOworICAgICAg
ICBpZiAoY29tcGFyaXNvblJlc3VsdCAhPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBjb21wYXJp
c29uUmVzdWx0OworCisgICAgICAgIC8vIENvbXBhcmUgYXN5bmMgcmVzb3VyY2UgdHlwZXMgYnkg
dGhlaXIgZmlyc3QgdGltZXN0YW1wIHNvIHRoZXkgYXJlIGluIGNocm9ub2xvZ2ljYWwgb3JkZXIu
CisgICAgICAgIGlmIChhLnJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5U
eXBlLlhIUiB8fCBhLnJlc291cmNlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBl
LldlYlNvY2tldCkKKyAgICAgICAgICAgIHJldHVybiBhLnJlc291cmNlLmZpcnN0VGltZXN0YW1w
IC0gYi5yZXNvdXJjZS5maXJzdFRpbWVzdGFtcCB8fCAwOworCisgICAgICAgIC8vIENvbXBhcmUg
Ynkgc3VidGl0bGUgd2hlbiB0aGUgdHlwZXMgYXJlIHRoZSBzYW1lLiBUaGUgc3VidGl0bGUgaXMg
dXNlZCB0byBzaG93IHRoZQorICAgICAgICAvLyBkb21haW4gb2YgdGhlIHJlc291cmNlLiBUaGlz
IGNhdXNlcyByZXNvdXJjZXMgdG8gZ3JvdXAgYnkgZG9tYWluLiBJZiB0aGUgcmVzb3VyY2UKKyAg
ICAgICAgLy8gaXMgb24gdGhlIHNhbWUgZG9tYWluIGFzIHRoZSBmcmFtZSBpdCB3aWxsIGhhdmUg
YW4gZW1wdHkgc3VidGl0bGUuIFRoaXMgaXMgZ29vZAorICAgICAgICAvLyBiZWNhdXNlIGVtcHR5
IHN0cmluZyBzb3J0cyBmaXJzdCwgc28gdGhvc2Ugd2lsbCBhcHBlYXIgYmVmb3JlIGV4dGVybmFs
IHJlc291cmNlcy4KKyAgICAgICAgY29tcGFyaXNvblJlc3VsdCA9IGEuc3VidGl0bGUubG9jYWxl
Q29tcGFyZShiLnN1YnRpdGxlKTsKKyAgICAgICAgaWYgKGNvbXBhcmlzb25SZXN1bHQgIT09IDAp
CisgICAgICAgICAgICByZXR1cm4gY29tcGFyaXNvblJlc3VsdDsKKworICAgICAgICAvLyBDb21w
YXJlIGJ5IHRpdGxlIHdoZW4gdGhlIHN1YnRpdGxlcyBhcmUgdGhlIHNhbWUuCiAgICAgICAgIHJl
dHVybiBhLm1haW5UaXRsZS5sb2NhbGVDb21wYXJlKGIubWFpblRpdGxlKTsKKyAgICB9CiAKLSAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuY29tcGFyZVJlc291cmNl
VHJlZUVsZW1lbnRzKGEsIGIpOwotfTsKKyAgICBzdGF0aWMgY29tcGFyZUZvbGRlckFuZFJlc291
cmNlVHJlZUVsZW1lbnRzKGEsIGIpCisgICAgeworICAgICAgICB2YXIgYUlzRm9sZGVyID0gYSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudDsKKyAgICAgICAgdmFyIGJJ
c0ZvbGRlciA9IGIgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQ7CiAK
LVdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAg
aWYgKGFJc0ZvbGRlciAmJiAhYklzRm9sZGVyKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAg
ICAgICBpZiAoIWFJc0ZvbGRlciAmJiBiSXNGb2xkZXIpCisgICAgICAgICAgICByZXR1cm4gMTsK
KyAgICAgICAgaWYgKGFJc0ZvbGRlciAmJiBiSXNGb2xkZXIpCisgICAgICAgICAgICByZXR1cm4g
YS5tYWluVGl0bGUubG9jYWxlQ29tcGFyZShiLm1haW5UaXRsZSk7CisKKyAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LmNvbXBhcmVSZXNvdXJjZVRyZWVFbGVt
ZW50cyhhLCBiKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCByZXNvdXJjZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgZmlsdGVyYWJsZURhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHt0ZXh0OiB0
aGlzLl9yZXNvdXJjZS51cmx9OwotICAgIH0sCisgICAgfQogCi0gICAgb25kYmxjbGljazogZnVu
Y3Rpb24oKQorICAgIG9uZGJsY2xpY2soKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0Lm9wZW5Jbk5ld1RhYih0aGlzLl9yZXNvdXJjZS51cmwpOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJvdGVjdGVkIChVc2VkIGJ5IEZyYW1lVHJlZUVsZW1lbnQpCiAKLSAgICBfdXBk
YXRlUmVzb3VyY2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIF91cGRhdGVSZXNvdXJjZShyZXNv
dXJjZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLlJlc291cmNlKTsKIApAQCAtMTI1LDExICsxMjEsMTEgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRh
dGVUaXRsZXMoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKCk7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZVRvb2xUaXAoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0g
ICAgX3VwZGF0ZVRpdGxlczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVUaXRsZXMoKQogICAgIHsK
ICAgICAgICAgdmFyIGZyYW1lID0gdGhpcy5fcmVzb3VyY2UucGFyZW50RnJhbWU7CiAgICAgICAg
IHZhciBpc01haW5SZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlLmlzTWFpblJlc291cmNlKCk7CkBA
IC0xNTIsMTEgKzE0OCwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKG9sZE1haW5UaXRsZSAhPT0gdGhpcy5tYWluVGl0bGUp
CiAgICAgICAgICAgICB0aGlzLmNhbGxGaXJzdEFuY2VzdG9yRnVuY3Rpb24oImRlc2NlbmRhbnRS
ZXNvdXJjZVRyZWVFbGVtZW50TWFpblRpdGxlRGlkQ2hhbmdlIiwgW3RoaXMsIG9sZE1haW5UaXRs
ZV0pOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZVN0YXR1
czogZnVuY3Rpb24oKQorICAgIF91cGRhdGVTdGF0dXMoKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX3Jlc291cmNlLmZhaWxlZCkKICAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LkZhaWxlZFN0eWxlQ2xhc3NOYW1lKTsKQEAgLTE3
NCwyMCArMTcwLDIwIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHZhciBzcGlubmVyID0gbmV3IFdlYkluc3BlY3Rvci5JbmRldGVy
bWluYXRlUHJvZ3Jlc3NTcGlubmVyOwogICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBzcGlubmVy
LmVsZW1lbnQ7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVUb29sVGlw
OiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVRvb2xUaXAoKQogICAgIHsKICAgICAgICAgdGhpcy50
b29sdGlwID0gdGhpcy5fcmVzb3VyY2UudXJsOwotICAgIH0sCisgICAgfQogCi0gICAgX3VybERp
ZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3VybERpZENoYW5nZShldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlcygpOwogICAgICAgICB0aGlzLl91cGRhdGVUb29s
VGlwKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHlwZURpZENoYW5nZTogZnVuY3Rpb24oZXZl
bnQpCisgICAgX3R5cGVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnJlbW92
ZUNsYXNzTmFtZShldmVudC5kYXRhLm9sZFR5cGUpOwogICAgICAgICB0aGlzLmFkZENsYXNzTmFt
ZSh0aGlzLl9yZXNvdXJjZS50eXBlKTsKQEAgLTE5NSwzICsxOTEsNiBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY2FsbEZpcnN0
QW5jZXN0b3JGdW5jdGlvbigiZGVzY2VuZGFudFJlc291cmNlVHJlZUVsZW1lbnRUeXBlRGlkQ2hh
bmdlIiwgW3RoaXMsIGV2ZW50LmRhdGEub2xkVHlwZV0pOwogICAgIH0KIH07CisKK1dlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LlJlc291cmNlSWNvblN0eWxlQ2xhc3NOYW1lID0gInJl
c291cmNlLWljb24iOworV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuRmFpbGVkU3R5
bGVDbGFzc05hbWUgPSAiZmFpbGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVs
LmpzCmluZGV4IDIxNWIxODYuLmNmZTM3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFp
bHNQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsMjMgKzIzLDE4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBmdW5j
dGlvbigpCitXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVz
U3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwK
IHsKLSAgICBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwuY2FsbCh0aGlzLCBXZWJJbnNw
ZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSwgInJ1bGVzIiwgV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSdWxlcyIpKTsKLQotICAgIHRoaXMuX3NlY3Rpb25zID0gW107
Ci19OwotCi1XZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFt
ZSA9ICJydWxlcyI7Ci1XZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5MYWJlbEVs
ZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJsYWJlbCI7Ci1XZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURl
dGFpbHNQYW5lbC5OZXdSdWxlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm5ldy1ydWxlIjsKKyAg
ICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigicnVsZXMiLCAicnVsZXMiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJ1bGVzIikpOwogCi1XZWJJbnNwZWN0b3IuUnVsZXNTdHls
ZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLAorICAgICAgICB0aGlzLl9zZWN0aW9ucyA9IFtdOwor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oc2lnbmlmaWNh
bnRDaGFuZ2UpCisgICAgcmVmcmVzaChzaWduaWZpY2FudENoYW5nZSkKICAgICB7CiAgICAgICAg
IC8vIFdlIG9ubHkgbmVlZCB0byBkbyBhIHJlYnVpbGQgb24gc2lnbmlmaWNhbnQgY2hhbmdlcy4g
T3RoZXIgY2hhbmdlcyBhcmUgaGFuZGxlZAogICAgICAgICAvLyBieSB0aGUgc2VjdGlvbnMgYW5k
IHRleHQgZWRpdG9ycyB0aGVtc2VsdmVzLgpAQCAtMTUwLDcgKzE0NSw3IEBAIFdlYkluc3BlY3Rv
ci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgaWYg
KCF0aGlzLm5vZGVTdHlsZXMubm9kZS5pc0luU2hhZG93VHJlZSgpKSB7CiAgICAgICAgICAgICAg
ICAgdmFyIG5ld1J1bGVCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICAgICAgICAgICAgICBuZXdSdWxlQnV0dG9uLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5SdWxl
c1N0eWxlRGV0YWlsc1BhbmVsLk5ld1J1bGVFbGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAg
ICAgICAgICAgbmV3UnVsZUJ1dHRvbi5jbGFzc05hbWUgPSAibmV3LXJ1bGUiOwogICAgICAgICAg
ICAgICAgIG5ld1J1bGVCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9uZXdS
dWxlQ2xpY2tlZC5iaW5kKHRoaXMpKTsKIAogICAgICAgICAgICAgICAgIG5ld1J1bGVCdXR0b24u
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpOwpAQCAtMTg5LDcgKzE4
NCw3IEBAIFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgICAgICBwcmVmaXhFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJJbmhlcml0ZWQgRnJvbTogIik7CiAKICAgICAgICAgICAgICAgICB2YXIgaW5o
ZXJpdGVkTGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAg
ICAgICBpbmhlcml0ZWRMYWJlbC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURl
dGFpbHNQYW5lbC5MYWJlbEVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgICAgICBp
bmhlcml0ZWRMYWJlbC5jbGFzc05hbWUgPSAibGFiZWwiOwogICAgICAgICAgICAgICAgIGluaGVy
aXRlZExhYmVsLmFwcGVuZENoaWxkKHByZWZpeEVsZW1lbnQpOwogICAgICAgICAgICAgICAgIGlu
aGVyaXRlZExhYmVsLmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5saW5raWZ5Tm9kZVJlZmVyZW5j
ZShzdHlsZS5ub2RlKSk7CiAgICAgICAgICAgICAgICAgbmV3RE9NRnJhZ21lbnQuYXBwZW5kQ2hp
bGQoaW5oZXJpdGVkTGFiZWwpOwpAQCAtMjEyLDcgKzIwNyw3IEBAIFdlYkluc3BlY3Rvci5SdWxl
c1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgcHJl
Zml4RWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWVkaWE6ICIp
OwogCiAgICAgICAgICAgICAgICAgICAgIHZhciBtZWRpYUxhYmVsID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICAgICAgICAgIG1lZGlhTGFiZWwuY2xhc3NOYW1l
ID0gV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuTGFiZWxFbGVtZW50U3R5bGVD
bGFzc05hbWU7CisgICAgICAgICAgICAgICAgICAgIG1lZGlhTGFiZWwuY2xhc3NOYW1lID0gImxh
YmVsIjsKICAgICAgICAgICAgICAgICAgICAgbWVkaWFMYWJlbC5hcHBlbmRDaGlsZChwcmVmaXhF
bGVtZW50KTsKICAgICAgICAgICAgICAgICAgICAgbWVkaWFMYWJlbC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShtZWRpYS50ZXh0KSk7CiAKQEAgLTI0NCwxMSArMjM5LDExIEBA
IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBpZiAocHJldmlvdXNGb2N1c2VkU2VjdGlvbikKICAgICAgICAgICAgIHByZXZpb3VzRm9j
dXNlZFNlY3Rpb24uZm9jdXMoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAog
Ci0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7CiAK
QEAgLTI1OSw5ICsyNTQsOSBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBzZWN0aW9uLnN0eWxlLl9fcnVsZXNTZWN0aW9uID0g
c2VjdGlvbjsKICAgICAgICAgICAgIHNlY3Rpb24udXBkYXRlTGF5b3V0KCk7CiAgICAgICAgIH0K
LSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAg
ICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmhp
ZGRlbi5jYWxsKHRoaXMpOwogCkBAIC0yNjksMjEgKzI2NCwxOSBAQCBXZWJJbnNwZWN0b3IuUnVs
ZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIHRvIHJlbGVhc2Ug
dGhlaXIgb2JqZWN0cyB3aGVuIHRoaXMgcGFuZWwgaXMgbm90IHZpc2libGUuCiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAg
ICBkZWxldGUgdGhpcy5fc2VjdGlvbnNbaV0uc3R5bGUuX19ydWxlc1NlY3Rpb247Ci0gICAgfSwK
KyAgICB9CiAKLSAgICB3aWR0aERpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIHdpZHRoRGlkQ2hh
bmdlKCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMu
bGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9zZWN0aW9uc1tpXS51cGRhdGVMYXlvdXQo
KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9uZXdSdWxlQ2xpY2tl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX25ld1J1bGVDbGlja2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5fZm9jdXNOZXh0TmV3SW5zcGVjdG9yUnVsZSA9IHRydWU7CiAgICAgICAgIHRo
aXMubm9kZVN0eWxlcy5hZGRFbXB0eVJ1bGUoKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3Iu
UnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3JhcGgu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdW5Mb29wVGlt
ZWxpbmVPdmVydmlld0dyYXBoLmpzCmluZGV4IDJkMzAwY2IuLmZhZWRlODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bkxvb3BUaW1lbGlu
ZU92ZXJ2aWV3R3JhcGguanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwpAQCAtMjMsMjggKzIzLDIz
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZSkKK1dl
Ykluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBoID0gY2xhc3MgUnVuTG9vcFRp
bWVsaW5lT3ZlcnZpZXdHcmFwaCBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
R3JhcGgKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLmNhbGwodGhp
cywgdGltZWxpbmUpOwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLlJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3JhcGguU3R5bGVDbGFzc05hbWUpOwotCi0gICAg
dGhpcy5fcnVuTG9vcFRpbWVsaW5lID0gdGltZWxpbmU7Ci0gICAgdGhpcy5fdGltZWxpbmVSZWNv
cmRGcmFtZXMgPSBbXTsKLSAgICB0aGlzLl9ncmFwaEhlaWdodFNlY29uZHMgPSBOYU47Ci0gICAg
dGhpcy5fZnJhbWVzUGVyU2Vjb25kRGl2aWRlcnMgPSBuZXcgTWFwOworICAgIGNvbnN0cnVjdG9y
KHRpbWVsaW5lKQorICAgIHsKKyAgICAgICAgc3VwZXIodGltZWxpbmUpOwogCi0gICAgdGhpcy5f
cnVuTG9vcFRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2
ZW50LlJlY29yZEFkZGVkLCB0aGlzLl90aW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJ1bmxvb3AiKTsKIAotICAgIHRoaXMucmVz
ZXQoKTsKLX07CisgICAgICAgIHRoaXMuX3J1bkxvb3BUaW1lbGluZSA9IHRpbWVsaW5lOworICAg
ICAgICB0aGlzLl90aW1lbGluZVJlY29yZEZyYW1lcyA9IFtdOworICAgICAgICB0aGlzLl9ncmFw
aEhlaWdodFNlY29uZHMgPSBOYU47CisgICAgICAgIHRoaXMuX2ZyYW1lc1BlclNlY29uZERpdmlk
ZXJzID0gbmV3IE1hcDsKIAotV2ViSW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguU3R5bGVDbGFzc05hbWUgPSAicnVubG9vcCI7Ci1XZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVs
aW5lT3ZlcnZpZXdHcmFwaC5NYXhpbXVtR3JhcGhIZWlnaHRTZWNvbmRzID0gMC4wNTsKKyAgICAg
ICAgdGhpcy5fcnVuTG9vcFRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl90aW1lbGluZVJlY29yZEFkZGVkLCB0aGlz
KTsKIAotV2ViSW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lT3ZlcnZp
ZXdHcmFwaCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3Jh
cGgucHJvdG90eXBlLAorICAgICAgICB0aGlzLnJlc2V0KCk7CisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKQEAgLTYwLDcgKzU1LDcgQEAgV2ViSW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZU92ZXJ2
aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9ncmFwaEhlaWdodFNlY29uZHMg
PSBtYXhpbXVtRnJhbWVEdXJhdGlvbiAqIDEuMTsgIC8vIEFkZCAxMCUgbWFyZ2luIGFib3ZlIGZy
YW1lcy4KICAgICAgICAgdGhpcy5fZ3JhcGhIZWlnaHRTZWNvbmRzID0gTWF0aC5taW4odGhpcy5f
Z3JhcGhIZWlnaHRTZWNvbmRzLCBXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdH
cmFwaC5NYXhpbXVtR3JhcGhIZWlnaHRTZWNvbmRzKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2dy
YXBoSGVpZ2h0U2Vjb25kczsKLSAgICB9LAorICAgIH0KIAogICAgIHJlc2V0KCkKICAgICB7CkBA
IC02OSw3ICs2NCw3IEBAIFdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBo
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAK
ICAgICAgICAgdGhpcy5fZnJhbWVzUGVyU2Vjb25kRGl2aWRlcnMuY2xlYXIoKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewpAQCAtMTAyLDcgKzk3LDcgQEAgV2Vi
SW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAg
ICAgICB9CiAKICAgICAgICAgdGhpcy5fdXBkYXRlRGl2aWRlcnMoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIApAQCAtMTExLDcgKzEwNiw3IEBAIFdlYkluc3BlY3Rvci5SdW5M
b29wVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZ3Jh
cGhIZWlnaHRTZWNvbmRzID0gTmFOOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIF91cGRhdGVEaXZpZGVycygpCiAgICAgewpAQCAtMTQ2LDcgKzE0
MSw3IEBAIFdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBjcmVhdGVEaXZpZGVyQXRQb3NpdGlvbi5jYWxsKHRoaXMsIDYwKTsK
ICAgICAgICAgY3JlYXRlRGl2aWRlckF0UG9zaXRpb24uY2FsbCh0aGlzLCAzMCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBfdXBkYXRlRWxlbWVudFBvc2l0aW9uKGVsZW1lbnQsIG5ld1Bvc2l0aW9u
LCBwcm9wZXJ0eSkKICAgICB7CkBAIC0xNTgsMyArMTUzLDUgQEAgV2ViSW5zcGVjdG9yLlJ1bkxv
b3BUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICAgICAgZWxlbWVu
dC5zdHlsZVtwcm9wZXJ0eV0gPSBuZXdQb3NpdGlvbiArICIlIjsKICAgICB9CiB9OworCitXZWJJ
bnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5NYXhpbXVtR3JhcGhIZWlnaHRT
ZWNvbmRzID0gMC4wNTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Njb3BlQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2NvcGVCYXIuanMKaW5kZXggZWJkYzQ0Zi4uNDE2MTM5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NvcGVCYXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NvcGVCYXIu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDUzICsyMyw0OCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5TY29wZUJhciA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGl0ZW1z
LCBkZWZhdWx0SXRlbSkgewotICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5jYWxsKHRo
aXMsIGlkZW50aWZpZXIpOwotCi0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5TY29wZUJhci5TdHlsZUNsYXNzTmFtZSk7CitXZWJJbnNwZWN0b3IuU2NvcGVCYXIg
PSBjbGFzcyBTY29wZUJhciBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbQorewor
ICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIGl0ZW1zLCBkZWZhdWx0SXRlbSkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKGlkZW50aWZpZXIpOwogCi0gICAgdGhpcy5faXRlbXMgPSBpdGVtczsKLSAg
ICB0aGlzLl9kZWZhdWx0SXRlbSA9IGRlZmF1bHRJdGVtOworICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQoInNjb3BlLWJhciIpOwogCi0gICAgdGhpcy5faXRlbXNCeUlkID0gW107
Ci0gICAgdGhpcy5fcG9wdWxhdGUoKTsKLX07CisgICAgICAgIHRoaXMuX2l0ZW1zID0gaXRlbXM7
CisgICAgICAgIHRoaXMuX2RlZmF1bHRJdGVtID0gZGVmYXVsdEl0ZW07CiAKLVdlYkluc3BlY3Rv
ci5TY29wZUJhci5TdHlsZUNsYXNzTmFtZSA9ICJzY29wZS1iYXIiOwotV2ViSW5zcGVjdG9yLlNj
b3BlQmFyLkV2ZW50ID0gewotICAgIFNlbGVjdGlvbkNoYW5nZWQ6ICJzY29wZWJhci1zZWxlY3Rp
b24tZGlkLWNoYW5nZSIKLX07Ci0KLVdlYkluc3BlY3Rvci5TY29wZUJhci5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY29wZUJhciwKKyAgICAgICAgdGhpcy5f
aXRlbXNCeUlkID0gW107CisgICAgICAgIHRoaXMuX3BvcHVsYXRlKCk7CisgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKICAgICBnZXQgZGVmYXVsdEl0ZW0oKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2RlZmF1bHRJdGVtOwotICAgIH0sCisgICAgfQogCi0gICAgaXRlbTogZnVuY3Rpb24o
aWQpCisgICAgaXRlbShpZCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pdGVtc0J5SWRb
aWRdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGVkSXRlbXMoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLmZpbHRlcihmdW5jdGlvbihpdGVtKSB7CiAgICAgICAg
ICAgICByZXR1cm4gaXRlbS5zZWxlY3RlZDsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBoYXNOb25EZWZhdWx0SXRlbVNlbGVjdGVkOiBmdW5jdGlvbigpCisgICAgaGFzTm9uRGVm
YXVsdEl0ZW1TZWxlY3RlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faXRlbXMuc29t
ZShmdW5jdGlvbihpdGVtKSB7CiAgICAgICAgICAgICByZXR1cm4gaXRlbS5zZWxlY3RlZCAmJiBp
dGVtICE9PSB0aGlzLl9kZWZhdWx0SXRlbTsKICAgICAgICAgfSwgdGhpcyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKGV4cGFuZE9ubHkpCisgICAgdXBkYXRl
TGF5b3V0KGV4cGFuZE9ubHkpCiAgICAgewogICAgICAgICBpZiAoZXhwYW5kT25seSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTg4LDExICs4MywxMSBAQCBXZWJJbnNwZWN0b3IuU2NvcGVCYXIu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKCFpc1NlbGVjdGVkKQogICAgICAgICAgICAg
ICAgIGl0ZW0uZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5TY29wZUJhckl0
ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFByaXZhdGUKIAotICAgIF9wb3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIF9wb3B1bGF0
ZSgpCiAgICAgewogICAgICAgICB2YXIgaXRlbTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLl9pdGVtcy5sZW5ndGg7ICsraSkgewpAQCAtMTA1LDkgKzEwMCw5IEBAIFdlYkluc3Bl
Y3Rvci5TY29wZUJhci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVk
SXRlbXMubGVuZ3RoICYmIHRoaXMuX2RlZmF1bHRJdGVtKQogICAgICAgICAgICAgdGhpcy5fZGVm
YXVsdEl0ZW0uc2VsZWN0ZWQgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX2l0ZW1TZWxl
Y3Rpb25EaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9pdGVtU2VsZWN0aW9uRGlkQ2hh
bmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNlbmRlciA9IGV2ZW50LnRhcmdldDsKICAg
ICAgICAgdmFyIGl0ZW07CkBAIC0xMzgsNCArMTMzLDYgQEAgV2ViSW5zcGVjdG9yLlNjb3BlQmFy
LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuU2NvcGVCYXIucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGU7CitX
ZWJJbnNwZWN0b3IuU2NvcGVCYXIuRXZlbnQgPSB7CisgICAgU2VsZWN0aW9uQ2hhbmdlZDogInNj
b3BlYmFyLXNlbGVjdGlvbi1kaWQtY2hhbmdlIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njb3BlQmFySXRlbS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njb3BlQmFySXRlbS5qcwppbmRleCBm
MzQwNmU5Li42ZTc4NGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TY29wZUJhckl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2NvcGVCYXJJdGVtLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyNiArMjMsMjAgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU2Nv
cGVCYXJJdGVtID0gZnVuY3Rpb24oaWQsIGxhYmVsLCBpc0V4Y2x1c2l2ZSkgewotICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQot
ICAgIHRoaXMuaWQgPSBpZDsKLSAgICB0aGlzLmxhYmVsID0gbGFiZWw7Ci0gICAgdGhpcy5pc0V4
Y2x1c2l2ZSA9IGlzRXhjbHVzaXZlOworV2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbSA9IGNsYXNz
IFNjb3BlQmFySXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1
Y3RvcihpZCwgbGFiZWwsIGlzRXhjbHVzaXZlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAot
ICAgIHRoaXMuX3NlbGVjdGVkU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygic2Nv
cGViYXJpdGVtLSIgKyBpZCwgZmFsc2UpOworICAgICAgICB0aGlzLmlkID0gaWQ7CisgICAgICAg
IHRoaXMubGFiZWwgPSBsYWJlbDsKKyAgICAgICAgdGhpcy5pc0V4Y2x1c2l2ZSA9IGlzRXhjbHVz
aXZlOwogCi0gICAgdGhpcy5fbWFya0VsZW1lbnRTZWxlY3RlZCh0aGlzLl9zZWxlY3RlZFNldHRp
bmcudmFsdWUpOwotfTsKLQotV2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbS5TZWxlY3RlZFN0eWxl
Q2xhc3NOYW1lID0gInNlbGVjdGVkIjsKLVdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0uRXZlbnQg
PSB7Ci0gICAgU2VsZWN0aW9uQ2hhbmdlZDogInNjb3BlLWJhci1pdGVtLXNlbGVjdGlvbi1kaWQt
Y2hhbmdlIgotfTsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRTZXR0aW5nID0gbmV3IFdlYkluc3Bl
Y3Rvci5TZXR0aW5nKCJzY29wZWJhcml0ZW0tIiArIGlkLCBmYWxzZSk7CiAKLVdlYkluc3BlY3Rv
ci5TY29wZUJhckl0ZW0ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuU2NvcGVCYXJJdGVtLAorICAgICAgICB0aGlzLl9tYXJrRWxlbWVudFNlbGVjdGVkKHRoaXMu
X3NlbGVjdGVkU2V0dGluZy52YWx1ZSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKQEAgLTU0
LDE5ICs0OCwxOSBAQCBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9j
bGlja2VkLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdGhp
cy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3RlZCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRTZXR0aW5nLnZhbHVlOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IHNlbGVjdGVkKHNlbGVjdGVkKQogICAgIHsKICAgICAgICAgdGhpcy5zZXRT
ZWxlY3RlZChzZWxlY3RlZCwgZmFsc2UpOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0U2VsZWN0
ZWQ6IGZ1bmN0aW9uKHNlbGVjdGVkLCB3aXRoTW9kaWZpZXIpCisgICAgc2V0U2VsZWN0ZWQoc2Vs
ZWN0ZWQsIHdpdGhNb2RpZmllcikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFNl
dHRpbmcudmFsdWUgPT09IHNlbGVjdGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzYsMjMg
KzcwLDI3IEBAIFdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0ucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9zZWxlY3RlZFNldHRpbmcudmFsdWUgPSBzZWxlY3RlZDsKIAogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtLkV2ZW50
LlNlbGVjdGlvbkNoYW5nZWQsIHt3aXRoTW9kaWZpZXJ9KTsKLSAgICB9LAorICAgIH0KIAogICAg
IC8vIFByaXZhdGUKIAotICAgIF9tYXJrRWxlbWVudFNlbGVjdGVkOiBmdW5jdGlvbihzZWxlY3Rl
ZCkKKyAgICBfbWFya0VsZW1lbnRTZWxlY3RlZChzZWxlY3RlZCkKICAgICB7CiAgICAgICAgIGlm
IChzZWxlY3RlZCkKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5TY29wZUJhckl0ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGVs
c2UKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rv
ci5TY29wZUJhckl0ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfY2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NsaWNrZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICB2YXIgd2l0aE1vZGlmaWVyID0gKGV2ZW50Lm1ldGFLZXkgJiYgIWV2ZW50LmN0
cmxLZXkgJiYgIWV2ZW50LmFsdEtleSAmJiAhZXZlbnQuc2hpZnRLZXkpOwogICAgICAgICB0aGlz
LnNldFNlbGVjdGVkKCF0aGlzLnNlbGVjdGVkLCB3aXRoTW9kaWZpZXIpOwogICAgIH0KIH07CiAK
LVdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbS5TZWxlY3Rl
ZFN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdGVkIjsKKworV2ViSW5zcGVjdG9yLlNjb3BlQmFySXRl
bS5FdmVudCA9IHsKKyAgICBTZWxlY3Rpb25DaGFuZ2VkOiAic2NvcGUtYmFyLWl0ZW0tc2VsZWN0
aW9uLWRpZC1jaGFuZ2UiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUNoYWluRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcwppbmRleCBjMmNiYzAxLi4wZDBiMzM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUNoYWluRGV0YWlsc1NpZGVi
YXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjEgKzIzLDE3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNjb3Bl
Q2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlNjb3Bl
Q2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbAogewotICAgIFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLmNhbGwodGhpcywgInNjb3BlLWNoYWluIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY29wZSBDaGFpbiIpLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNjb3BlIENoYWluIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1WYXJpYWJsZS5zdmciLCAi
NSIpOwotCi0gICAgdGhpcy5fY2FsbEZyYW1lID0gbnVsbDsKLQotICAgIC8vIFVwZGF0ZSBvbiBj
b25zb2xlIHByb21wdCBldmFsIGFzIG9iamVjdHMgaW4gdGhlIHNjb3BlIGNoYWluIG1heSBoYXZl
IGNoYW5nZWQuCi0gICAgV2ViSW5zcGVjdG9yLnJ1bnRpbWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlJ1bnRpbWVNYW5hZ2VyLkV2ZW50LkRpZEV2YWx1YXRlLCB0aGlzLm5l
ZWRzUmVmcmVzaCwgdGhpcyk7Ci19OworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAg
IHN1cGVyKCJzY29wZS1jaGFpbiIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NvcGUgQ2hhaW4i
KSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTY29wZSBDaGFpbiIpLCAiSW1hZ2VzL05hdmlnYXRp
b25JdGVtVmFyaWFibGUuc3ZnIiwgIjUiKTsKIAotV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRh
aWxzU2lkZWJhclBhbmVsLmF1dG9FeHBhbmRQcm9wZXJ0aWVzID0gbmV3IFNldDsKKyAgICAgICAg
dGhpcy5fY2FsbEZyYW1lID0gbnVsbDsKIAotV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLAorICAgICAgICAvLyBVcGRhdGUgb24g
Y29uc29sZSBwcm9tcHQgZXZhbCBhcyBvYmplY3RzIGluIHRoZSBzY29wZSBjaGFpbiBtYXkgaGF2
ZSBjaGFuZ2VkLgorICAgICAgICBXZWJJbnNwZWN0b3IucnVudGltZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuUnVudGltZU1hbmFnZXIuRXZlbnQuRGlkRXZhbHVhdGUsIHRo
aXMubmVlZHNSZWZyZXNoLCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNjAs
MTIgKzU2LDEyIEBAIFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY2FsbEZyYW1lID0gY2FsbEZyYW1lVG9JbnNwZWN0
OwogCiAgICAgICAgIHJldHVybiAhIXRoaXMuY2FsbEZyYW1lOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGNhbGxGcmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY2FsbEZyYW1l
OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNhbGxGcmFtZShjYWxsRnJhbWUpCiAgICAgewpA
QCAtNzUsNyArNzEsNyBAQCBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jYWxsRnJhbWUgPSBjYWxsRnJhbWU7CiAK
ICAgICAgICAgdGhpcy5uZWVkc1JlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAogICAgIHJlZnJl
c2goKQogICAgIHsKQEAgLTE4MSwxMyArMTc3LDEzIEBAIFdlYkluc3BlY3Rvci5TY29wZUNoYWlu
RGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFdlIG5lZWQgYSB0
aW1lb3V0IGluIHBsYWNlIGluIGNhc2UgdGhlcmUgYXJlIGxvbmcgcnVubmluZywgcGVuZGluZyBi
YWNrZW5kIGRpc3BhdGNoZXMuIFRoaXMgY2FuIGhhcHBlbgogICAgICAgICAvLyBpZiB0aGUgZGVi
dWdnZXIgaXMgcGF1c2VkIGluIGNvZGUgdGhhdCB3YXMgZXhlY3V0ZWQgZnJvbSB0aGUgY29uc29s
ZS4gVGhlIGNvbnNvbGUgd2lsbCBiZSB3YWl0aW5nIGZvcgogICAgICAgICAvLyB0aGUgcmVzdWx0
IG9mIHRoZSBleGVjdXRpb24gYW5kIHdpdGhvdXQgYSB0aW1lb3V0IHdlIHdvdWxkIG5ldmVyIHVw
ZGF0ZSB0aGUgc2NvcGUgdmFyaWFibGVzLgotICAgICAgICB2YXIgZGVsYXkgPSBXZWJJbnNwZWN0
b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwuYXV0b0V4cGFuZFByb3BlcnRpZXMuc2l6
ZSA9PT0gMCA/IDUwIDogMjUwOworICAgICAgICB2YXIgZGVsYXkgPSBXZWJJbnNwZWN0b3IuU2Nv
cGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwuX2F1dG9FeHBhbmRQcm9wZXJ0aWVzLnNpemUgPT09
IDAgPyA1MCA6IDI1MDsKICAgICAgICAgdmFyIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGRlbGF5ZWRX
b3JrLmJpbmQodGhpcyksIGRlbGF5KTsKIAogICAgICAgICAvLyBTaW5jZSBPYmplY3RUcmVlVmll
dyBwb3B1bGF0ZXMgYXN5bmNocm9ub3VzbHksIHdlIHdhbnQgdG8gd2FpdCB0byByZXBsYWNlIHRo
ZSBleGlzdGluZyBjb250ZW50CiAgICAgICAgIC8vIHVudGlsIGFmdGVyIGFsbCB0aGUgcGVuZGlu
ZyBhc3luY2hyb25vdXMgcmVxdWVzdHMgYXJlIGNvbXBsZXRlZC4gVGhpcyBwcmV2ZW50cyBzZXZl
cmUgZmxhc2hpbmcgd2hpbGUgc3RlcHBpbmcuCiAgICAgICAgIEluc3BlY3RvckJhY2tlbmQucnVu
QWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhkZWxheWVkV29yay5iaW5kKHRoaXMpKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIF9wcm9wZXJ0eVBhdGhJZGVudGlmaWVyRm9yVHJlZUVsZW1lbnQoaWRlbnRp
Zmllciwgb2JqZWN0UHJvcGVydHlUcmVlRWxlbWVudCkKICAgICB7CkBAIC0xOTksNyArMTk1LDcg
QEAgV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVybiBpZGVudGlmaWVy
ICsgIi0iICsgcHJvcGVydHlQYXRoLmZ1bGxQYXRoOwotICAgIH0sCisgICAgfQogCiAgICAgX29i
amVjdFRyZWVBZGRIYW5kbGVyKGlkZW50aWZpZXIsIHRyZWVFbGVtZW50KQogICAgIHsKQEAgLTIw
Nyw5ICsyMDMsOSBAQCBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXByb3BlcnR5UGF0aElkZW50aWZpZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0
YWlsc1NpZGViYXJQYW5lbC5hdXRvRXhwYW5kUHJvcGVydGllcy5oYXMocHJvcGVydHlQYXRoSWRl
bnRpZmllcikpCisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRl
YmFyUGFuZWwuX2F1dG9FeHBhbmRQcm9wZXJ0aWVzLmhhcyhwcm9wZXJ0eVBhdGhJZGVudGlmaWVy
KSkKICAgICAgICAgICAgIHRyZWVFbGVtZW50LmV4cGFuZCgpOwotICAgIH0sCisgICAgfQogCiAg
ICAgX29iamVjdFRyZWVFeHBhbmRIYW5kbGVyKGlkZW50aWZpZXIsIHRyZWVFbGVtZW50KQogICAg
IHsKQEAgLTIxNyw4ICsyMTMsOCBAQCBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXByb3BlcnR5UGF0aElkZW50aWZp
ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLlNjb3BlQ2hh
aW5EZXRhaWxzU2lkZWJhclBhbmVsLmF1dG9FeHBhbmRQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eVBh
dGhJZGVudGlmaWVyKTsKLSAgICB9LAorICAgICAgICBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRl
dGFpbHNTaWRlYmFyUGFuZWwuX2F1dG9FeHBhbmRQcm9wZXJ0aWVzLmFkZChwcm9wZXJ0eVBhdGhJ
ZGVudGlmaWVyKTsKKyAgICB9CiAKICAgICBfb2JqZWN0VHJlZUNvbGxhcHNlSGFuZGxlcihpZGVu
dGlmaWVyLCB0cmVlRWxlbWVudCkKICAgICB7CkBAIC0yMjYsNiArMjIyLDggQEAgV2ViSW5zcGVj
dG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
aWYgKCFwcm9wZXJ0eVBhdGhJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5hdXRvRXhwYW5k
UHJvcGVydGllcy5kZWxldGUocHJvcGVydHlQYXRoSWRlbnRpZmllcik7CisgICAgICAgIFdlYklu
c3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5fYXV0b0V4cGFuZFByb3BlcnRp
ZXMuZGVsZXRlKHByb3BlcnR5UGF0aElkZW50aWZpZXIpOwogICAgIH0KIH07CisKK1dlYkluc3Bl
Y3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5fYXV0b0V4cGFuZFByb3BlcnRpZXMg
PSBuZXcgU2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcwppbmRleCBmM2E3YWJkLi4wNDNm
MzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TY3JpcHRDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNzMgKzIzLDcwIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNjcmlw
dENvbnRlbnRWaWV3ID0gZnVuY3Rpb24oc2NyaXB0KQorV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRl
bnRWaWV3ID0gY2xhc3MgU2NyaXB0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0aGlzLCBzY3Jp
cHQpOwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNjcmlw
dENvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIC8vIEFwcGVuZCBhIHNwaW5uZXIg
d2hpbGUgd2FpdGluZyBmb3IgX2NvbnRlbnRXaWxsUG9wdWxhdGUuCi0gICAgdmFyIHNwaW5uZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXI7Ci0gICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHNwaW5uZXIuZWxlbWVudCk7Ci0KLSAgICB0aGlzLl9zY3Jp
cHQgPSBzY3JpcHQ7Ci0KLSAgICAvLyBUaGlzIHZpZXcgaXMgb25seSBmb3Igc3RhbmRhbG9uZSBT
Y3JpcHRzIHdpdGggbm8gY29ycmVzcG9uZGluZyBSZXNvdXJjZS4gQWxsIG90aGVyIFNjcmlwdHMK
LSAgICAvLyBzaG91bGQgYmUgaGFuZGxlZCBieSBUZXh0UmVzb3VyY2VDb250ZW50VmlldyB2aWEg
dGhlIFJlc291cmNlLgotICAgIGNvbnNvbGUuYXNzZXJ0KCFzY3JpcHQucmVzb3VyY2UpOwotICAg
IGNvbnNvbGUuYXNzZXJ0KHNjcmlwdC5yYW5nZS5zdGFydExpbmUgPT09IDApOwotICAgIGNvbnNv
bGUuYXNzZXJ0KHNjcmlwdC5yYW5nZS5zdGFydENvbHVtbiA9PT0gMCk7Ci0KLSAgICB0aGlzLl90
ZXh0RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvcihzY3JpcHQp
OwotICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvci5FdmVudC5FeGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hhbmdlLCB0aGlzLl9leGVjdXRp
b25MaW5lTnVtYmVyRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuTnVtYmVyT2ZTZWFyY2hS
ZXN1bHRzRGlkQ2hhbmdlLCB0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRo
aXMpOwotICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvci5FdmVudC5Gb3JtYXR0aW5nRGlkQ2hhbmdlLCB0aGlzLl90ZXh0RWRpdG9yRm9y
bWF0dGluZ0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5FdmVudC5Db250ZW50V2ls
bFBvcHVsYXRlLCB0aGlzLl9jb250ZW50V2lsbFBvcHVsYXRlLCB0aGlzKTsKLSAgICB0aGlzLl90
ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLkV2ZW50LkNvbnRlbnREaWRQb3B1bGF0ZSwgdGhpcy5fY29udGVudERpZFBvcHVsYXRlLCB0
aGlzKTsKLQotICAgIHZhciBjdXJsZXlCcmFjZXNJbWFnZTsKLSAgICBpZiAoV2ViSW5zcGVjdG9y
LlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MpCi0gICAgICAgIGN1cmxleUJyYWNlc0ltYWdlID0ge3Ny
YzogIkltYWdlcy9MZWdhY3kvTmF2aWdhdGlvbkl0ZW1DdXJsZXlCcmFjZXMuc3ZnIiwgd2lkdGg6
IDE2LCBoZWlnaHQ6IDE2fTsKLSAgICBlbHNlCi0gICAgICAgIGN1cmxleUJyYWNlc0ltYWdlID0g
e3NyYzogIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUN1cmxleUJyYWNlcy5zdmciLCB3aWR0aDogMTMs
IGhlaWdodDogMTN9OwotCi0gICAgdmFyIHRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlByZXR0eSBwcmludCIpOwotICAgIHZhciBhY3RpdmF0ZWRUb29sVGlwID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJPcmlnaW5hbCBmb3JtYXR0aW5nIik7Ci0gICAgdGhpcy5fcHJldHR5UHJpbnRC
dXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZp
Z2F0aW9uSXRlbSgicHJldHR5LXByaW50IiwgdG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgY3Vy
bGV5QnJhY2VzSW1hZ2Uuc3JjLCBjdXJsZXlCcmFjZXNJbWFnZS53aWR0aCwgY3VybGV5QnJhY2Vz
SW1hZ2UuaGVpZ2h0KTsKLSAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVt
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVByZXR0eVByaW50LCB0aGlzKTsKLSAgICB0aGlzLl9wcmV0
dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsgLy8gRW5hYmxlZCB3
aGVuIHRoZSB0ZXh0IGVkaXRvciBpcyBwb3B1bGF0ZWQgd2l0aCBjb250ZW50LgotCi0gICAgdmFy
IHRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0eXBlIGluZm9ybWF0
aW9uIik7Ci0gICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiSGlkZSB0eXBlIGluZm9ybWF0aW9uIik7Ci0gICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9u
TmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlv
bkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlwVHlwZXMsIGFjdGl2YXRlZFRvb2xUaXBUeXBlcywg
IkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIsIDEzLCAxNCk7Ci0gICAgdGhpcy5fc2hv
d1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlVHlwZUFubm90
YXRpb25zLCB0aGlzKTsKLSAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5l
bmFibGVkID0gZmFsc2U7Ci0KLSAgICBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5m
b3JtYXRpb25TZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZl
bnQuQ2hhbmdlZCwgdGhpcy5fc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hh
bmdlZCwgdGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcuU3R5bGVD
bGFzc05hbWUgPSAic2NyaXB0IjsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRW
aWV3LAorICAgIGNvbnN0cnVjdG9yKHNjcmlwdCkKKyAgICB7CisgICAgICAgIHN1cGVyKHNjcmlw
dCk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNjcmlwdCIpOworCisg
ICAgICAgIC8vIEFwcGVuZCBhIHNwaW5uZXIgd2hpbGUgd2FpdGluZyBmb3IgX2NvbnRlbnRXaWxs
UG9wdWxhdGUuCisgICAgICAgIHZhciBzcGlubmVyID0gbmV3IFdlYkluc3BlY3Rvci5JbmRldGVy
bWluYXRlUHJvZ3Jlc3NTcGlubmVyOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
c3Bpbm5lci5lbGVtZW50KTsKKworICAgICAgICB0aGlzLl9zY3JpcHQgPSBzY3JpcHQ7CisKKyAg
ICAgICAgLy8gVGhpcyB2aWV3IGlzIG9ubHkgZm9yIHN0YW5kYWxvbmUgU2NyaXB0cyB3aXRoIG5v
IGNvcnJlc3BvbmRpbmcgUmVzb3VyY2UuIEFsbCBvdGhlciBTY3JpcHRzCisgICAgICAgIC8vIHNo
b3VsZCBiZSBoYW5kbGVkIGJ5IFRleHRSZXNvdXJjZUNvbnRlbnRWaWV3IHZpYSB0aGUgUmVzb3Vy
Y2UuCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFzY3JpcHQucmVzb3VyY2UpOworICAgICAgICBj
b25zb2xlLmFzc2VydChzY3JpcHQucmFuZ2Uuc3RhcnRMaW5lID09PSAwKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoc2NyaXB0LnJhbmdlLnN0YXJ0Q29sdW1uID09PSAwKTsKKworICAgICAgICB0
aGlzLl90ZXh0RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvcihz
Y3JpcHQpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuRXhlY3V0aW9uTGluZU51bWJlckRpZENoYW5nZSwgdGhp
cy5fZXhlY3V0aW9uTGluZU51bWJlckRpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3Rl
eHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5O
dW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0
c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5Gb3JtYXR0aW5nRGlkQ2hhbmdlLCB0
aGlzLl90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMu
X3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IuRXZlbnQuQ29udGVudFdpbGxQb3B1bGF0ZSwgdGhpcy5fY29udGVudFdpbGxQb3B1bGF0
ZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRXZlbnQuQ29udGVudERpZFBvcHVsYXRlLCB0
aGlzLl9jb250ZW50RGlkUG9wdWxhdGUsIHRoaXMpOworCisgICAgICAgIHZhciBjdXJsZXlCcmFj
ZXNJbWFnZTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09T
KQorICAgICAgICAgICAgY3VybGV5QnJhY2VzSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL0xlZ2FjeS9O
YXZpZ2F0aW9uSXRlbUN1cmxleUJyYWNlcy5zdmciLCB3aWR0aDogMTYsIGhlaWdodDogMTZ9Owor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjdXJsZXlCcmFjZXNJbWFnZSA9IHtzcmM6ICJJbWFn
ZXMvTmF2aWdhdGlvbkl0ZW1DdXJsZXlCcmFjZXMuc3ZnIiwgd2lkdGg6IDEzLCBoZWlnaHQ6IDEz
fTsKKworICAgICAgICB2YXIgdG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJldHR5
IHByaW50Iik7CisgICAgICAgIHZhciBhY3RpdmF0ZWRUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJPcmlnaW5hbCBmb3JtYXR0aW5nIik7CisgICAgICAgIHRoaXMuX3ByZXR0eVByaW50
QnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2
aWdhdGlvbkl0ZW0oInByZXR0eS1wcmludCIsIHRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGN1
cmxleUJyYWNlc0ltYWdlLnNyYywgY3VybGV5QnJhY2VzSW1hZ2Uud2lkdGgsIGN1cmxleUJyYWNl
c0ltYWdlLmhlaWdodCk7CisgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlv
bkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
RXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlUHJldHR5UHJpbnQsIHRoaXMpOworICAgICAgICB0
aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsgLy8g
RW5hYmxlZCB3aGVuIHRoZSB0ZXh0IGVkaXRvciBpcyBwb3B1bGF0ZWQgd2l0aCBjb250ZW50Lgor
CisgICAgICAgIHZhciB0b29sVGlwVHlwZXMgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cg
dHlwZSBpbmZvcm1hdGlvbiIpOworICAgICAgICB2YXIgYWN0aXZhdGVkVG9vbFRpcFR5cGVzID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIHR5cGUgaW5mb3JtYXRpb24iKTsKKyAgICAgICAg
dGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFj
dGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlwVHlwZXMsIGFj
dGl2YXRlZFRvb2xUaXBUeXBlcywgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIsIDEz
LCAxNCk7CisgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNr
ZWQsIHRoaXMuX3RvZ2dsZVR5cGVBbm5vdGF0aW9ucywgdGhpcyk7CisgICAgICAgIHRoaXMuX3No
b3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKKworICAgICAgICBX
ZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvd0ph
dmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisgICAgfQogCiAg
ICAgLy8gUHVibGljCiAKICAgICBnZXQgbmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBbdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hv
d1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW1dOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNj
cmlwdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0OwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHRleHRFZGl0b3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Rl
eHRFZGl0b3I7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcGxlbWVudGFsUmVwcmVzZW50
ZWRPYmplY3RzKCkKICAgICB7CkBAIC05OSwxMDQgKzk2LDEwNCBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0Q29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyBJZiB0aGUgU291cmNlQ29k
ZVRleHRFZGl0b3IgaGFzIGFuIGV4ZWN1dGlvbkxpbmVOdW1iZXIsIHdlIGNhbiBhc3N1bWUKICAg
ICAgICAgLy8gaXQgaXMgYWx3YXlzIHRoZSBhY3RpdmUgY2FsbCBmcmFtZS4KICAgICAgICAgcmV0
dXJuIFtXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZV07Ci0gICAg
fSwKKyAgICB9CiAKLSAgICByZXZlYWxQb3NpdGlvbjogZnVuY3Rpb24ocG9zaXRpb24sIHRleHRS
YW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQorICAgIHJldmVhbFBvc2l0aW9uKHBvc2l0
aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3RleHRFZGl0b3IucmV2ZWFsUG9zaXRpb24ocG9zaXRpb24sIHRleHRSYW5nZVRvU2Vs
ZWN0LCBmb3JjZVVuZm9ybWF0dGVkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5j
dGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zaG93
bigpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVu
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuaGlkZGVuKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAg
ICAgdGhpcy5fdGV4dEVkaXRvci5jbG9zZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVRv
Q29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkKICAgICB7
CiAgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlw
ZS5SZXNvdXJjZTsKICAgICAgICAgY29va2llLnVybCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
dXJsOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNv
b2tpZSkKKyAgICByZXN0b3JlRnJvbUNvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBpZiAo
ImxpbmVOdW1iZXIiIGluIGNvb2tpZSAmJiAiY29sdW1uTnVtYmVyIiBpbiBjb29raWUpCiAgICAg
ICAgICAgICB0aGlzLnJldmVhbFBvc2l0aW9uKG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBv
c2l0aW9uKGNvb2tpZS5saW5lTnVtYmVyLCBjb29raWUuY29sdW1uTnVtYmVyKSk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNTYXZlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNhdmVEYXRhKCkKICAgICB7CiAgICAgICAg
IHZhciB1cmwgPSB0aGlzLl9zY3JpcHQudXJsIHx8ICJ3ZWItaW5zcGVjdG9yOi8vLyIgKyBlbmNv
ZGVVUkkodGhpcy5fc2NyaXB0LmRpc3BsYXlOYW1lKSArICIuanMiOwogICAgICAgICByZXR1cm4g
e3VybCwgY29udGVudDogdGhpcy5fdGV4dEVkaXRvci5zdHJpbmd9OwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHN1cHBvcnRzU2VhcmNoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG51bWJlck9mU2VhcmNoUmVzdWx0cygpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVkaXRvci5udW1iZXJPZlNlYXJjaFJlc3VsdHM7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFzUGVyZm9ybWVkU2VhcmNoKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl90ZXh0RWRpdG9yLmN1cnJlbnRTZWFyY2hRdWVyeSAhPT0gbnVsbDsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCBhdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hS
ZXN1bHQocmV2ZWFsKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5hdXRvbWF0aWNh
bGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQgPSByZXZlYWw7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihxdWVyeSkKKyAgICBwZXJmb3JtU2VhcmNoKHF1ZXJ5
KQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTsK
LSAgICB9LAorICAgIH0KIAotICAgIHNlYXJjaENsZWFyZWQ6IGZ1bmN0aW9uKCkKKyAgICBzZWFy
Y2hDbGVhcmVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2VhcmNoQ2xlYXJl
ZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uOiBmdW5j
dGlvbigpCisgICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl90ZXh0RWRpdG9yLnNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigpOwotICAgIH0s
CisgICAgfQogCi0gICAgcmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5n
ZUZvY3VzKQorICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAg
IHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChj
aGFuZ2VGb2N1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0
OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5n
ZUZvY3VzKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZXZlYWxOZXh0U2VhcmNo
UmVzdWx0KGNoYW5nZUZvY3VzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDog
ZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0
RWRpdG9yLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQog
Ci0gICAgX2NvbnRlbnRXaWxsUG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50
V2lsbFBvcHVsYXRlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3RleHRFZGl0b3Iu
ZWxlbWVudC5wYXJlbnROb2RlID09PSB0aGlzLmVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0yMDcsNDUgKzIwNCw0MyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJv
dG90eXBlID0gewogCiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAg
ICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGV4dEVkaXRvci5lbGVtZW50KTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50RGlkUG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9jb250ZW50RGlkUG9wdWxhdGUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9w
cmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9y
LmNhbkJlRm9ybWF0dGVkKCk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRp
b25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhblNob3dUeXBlQW5ub3RhdGlvbnMo
KTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVk
ID0gV2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF90b2dnbGVQcmV0dHlQcmludDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX3RvZ2dsZVByZXR0eVByaW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGFj
dGl2YXRlZCA9ICF0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRl
ZDsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5mb3JtYXR0ZWQgPSBhY3RpdmF0ZWQ7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlVHlwZUFubm90YXRpb25zOiBmdW5jdGlvbihldmVudCkK
KyAgICBfdG9nZ2xlVHlwZUFubm90YXRpb25zKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5f
dGV4dEVkaXRvci50b2dnbGVUeXBlQW5ub3RhdGlvbnMoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZChl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVt
LmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNl
dHRpbmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGV4dEVkaXRvckZvcm1hdHRpbmdE
aWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENo
YW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdh
dGlvbkl0ZW0uYWN0aXZhdGVkID0gdGhpcy5fdGV4dEVkaXRvci5mb3JtYXR0ZWQ7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZXhlY3V0aW9uTGluZU51bWJlckRpZENoYW5nZTogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2V4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2U6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAg
ewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlKTsKICAgICB9CiB9
OwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZURhdGFHcmlk
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGlt
ZWxpbmVEYXRhR3JpZC5qcwppbmRleCAwMjIzYTI4Li4wYzc2NjBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZURhdGFH
cmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nj
cmlwdFRpbWVsaW5lRGF0YUdyaWQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIwICsyMywxNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURh
dGFHcmlkID0gZnVuY3Rpb24odHJlZU91dGxpbmUsIGNvbHVtbnMsIGRlbGVnYXRlLCBlZGl0Q2Fs
bGJhY2ssIGRlbGV0ZUNhbGxiYWNrKQorV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdy
aWQgPSBjbGFzcyBTY3JpcHRUaW1lbGluZURhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lRGF0YUdyaWQKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5jYWxs
KHRoaXMsIHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxl
dGVDYWxsYmFjayk7Ci19OwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGlu
ZURhdGFHcmlkLAorICAgIGNvbnN0cnVjdG9yKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0
ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHN1cGVyKHRy
ZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFj
ayk7CisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBjYWxsRnJhbWVQb3BvdmVyQW5j
aG9yRWxlbWVudDogZnVuY3Rpb24oKQorICAgIGNhbGxGcmFtZVBvcG92ZXJBbmNob3JFbGVtZW50
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTm9kZS5lbGVtZW50V2l0aENv
bHVtbklkZW50aWZpZXIoImxvY2F0aW9uIik7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlNj
cmlwdFRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5U
aW1lbGluZURhdGFHcmlkLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVE
YXRhR3JpZE5vZGUuanMKaW5kZXggNjk1NWJkMS4uNGYyNDExOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRhR3Jp
ZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDUxICsyMyw0NCBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1l
bGluZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHNjcmlwdFRpbWVsaW5lUmVjb3JkLCBiYXNlU3Rh
cnRUaW1lLCByYW5nZVN0YXJ0VGltZSwgcmFuZ2VFbmRUaW1lKQorV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lRGF0YUdyaWROb2RlID0gY2xhc3MgU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUKIHsKLSAgICBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBmYWxzZSwgbnVsbCk7Ci0KLSAg
ICB0aGlzLl9yZWNvcmQgPSBzY3JpcHRUaW1lbGluZVJlY29yZDsKLSAgICB0aGlzLl9iYXNlU3Rh
cnRUaW1lID0gYmFzZVN0YXJ0VGltZSB8fCAwOwotICAgIHRoaXMuX3JhbmdlU3RhcnRUaW1lID0g
cmFuZ2VTdGFydFRpbWUgfHwgMDsKLSAgICB0aGlzLl9yYW5nZUVuZFRpbWUgPSB0eXBlb2YgcmFu
Z2VFbmRUaW1lID09PSAibnVtYmVyIiA/IHJhbmdlRW5kVGltZSA6IEluZmluaXR5OwotfTsKLQot
Ly8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBj
YW4gcmVtb3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUpOwot
Ci1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xhc3NO
YW1lID0gImljb24iOworICAgIGNvbnN0cnVjdG9yKHNjcmlwdFRpbWVsaW5lUmVjb3JkLCBiYXNl
U3RhcnRUaW1lLCByYW5nZVN0YXJ0VGltZSwgcmFuZ2VFbmRUaW1lKQorICAgIHsKKyAgICAgICAg
c3VwZXIoZmFsc2UsIG51bGwpOwogCi1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2NyaXB0
VGltZWxpbmVEYXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9yZWNvcmQgPSBzY3JpcHRU
aW1lbGluZVJlY29yZDsKKyAgICAgICAgdGhpcy5fYmFzZVN0YXJ0VGltZSA9IGJhc2VTdGFydFRp
bWUgfHwgMDsKKyAgICAgICAgdGhpcy5fcmFuZ2VTdGFydFRpbWUgPSByYW5nZVN0YXJ0VGltZSB8
fCAwOworICAgICAgICB0aGlzLl9yYW5nZUVuZFRpbWUgPSB0eXBlb2YgcmFuZ2VFbmRUaW1lID09
PSAibnVtYmVyIiA/IHJhbmdlRW5kVGltZSA6IEluZmluaXR5OworICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IHJlY29yZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVj
b3JkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlY29yZHMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIFt0aGlzLl9yZWNvcmRdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGJhc2VTdGFy
dFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Jhc2VTdGFydFRpbWU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgcmFuZ2VTdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3JhbmdlU3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJhbmdl
RW5kVGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmFuZ2VFbmRUaW1lOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKQEAgLTc3LDkgKzcwLDkgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICByZXR1cm4ge2V2ZW50VHlwZTogdGhpcy5fcmVjb3JkLmV2ZW50VHlwZSwgc3RhcnRUaW1l
LCBzZWxmVGltZTogZHVyYXRpb24sIHRvdGFsVGltZTogZHVyYXRpb24sCiAgICAgICAgICAgICBh
dmVyYWdlVGltZTogZHVyYXRpb24sIGNhbGxDb3VudDogMSwgbG9jYXRpb246IGNhbGxGcmFtZU9y
U291cmNlQ29kZUxvY2F0aW9ufTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZVJhbmdlVGlt
ZXM6IGZ1bmN0aW9uKHN0YXJ0VGltZSwgZW5kVGltZSkKKyAgICB1cGRhdGVSYW5nZVRpbWVzKHN0
YXJ0VGltZSwgZW5kVGltZSkKICAgICB7CiAgICAgICAgIHZhciBvbGRSYW5nZVN0YXJ0VGltZSA9
IHRoaXMuX3JhbmdlU3RhcnRUaW1lOwogICAgICAgICB2YXIgb2xkUmFuZ2VFbmRUaW1lID0gdGhp
cy5fcmFuZ2VFbmRUaW1lOwpAQCAtMTA0LDExICs5NywxMSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0
VGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChvbGRTdGFy
dEJvdW5kYXJ5ICE9PSBuZXdTdGFydEJvdW5kYXJ5IHx8IG9sZEVuZEJvdW5kYXJ5ICE9PSBuZXdF
bmRCb3VuZGFyeSkKICAgICAgICAgICAgIHRoaXMubmVlZHNSZWZyZXNoKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBjcmVhdGVDZWxsQ29udGVudDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwg
Y2VsbCkKKyAgICBjcmVhdGVDZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQogICAg
IHsKLSAgICAgICAgY29uc3QgZW1wdHlWYWx1ZVBsYWNlaG9sZGVyU3RyaW5nID0gIlx1MjAxNCI7
CisgICAgICAgIHZhciBlbXB0eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgPSAiXHUyMDE0IjsKICAg
ICAgICAgdmFyIHZhbHVlID0gdGhpcy5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwogCiAgICAgICAg
IHN3aXRjaCAoY29sdW1uSWRlbnRpZmllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVPdmVydmlld0dyYXBoLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxp
bmVPdmVydmlld0dyYXBoLmpzCmluZGV4IDM3ODdhMzMuLjRiMjBhNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lT3Zl
cnZpZXdHcmFwaC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzggKzIzLDM0IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGZ1bmN0aW9uKHRpbWVsaW5lKQorV2ViSW5zcGVjdG9y
LlNjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGNsYXNzIFNjcmlwdFRpbWVsaW5lT3ZlcnZp
ZXdHcmFwaCBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgKIHsKLSAg
ICBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLmNhbGwodGhpcywgdGltZWxpbmUp
OwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lT3ZlcnZpZXdHcmFwaC5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9zY3JpcHRU
aW1lbGluZSA9IHRpbWVsaW5lOwotICAgIHRoaXMuX3NjcmlwdFRpbWVsaW5lLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9zY3Jp
cHRUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZSkK
KyAgICB7CisgICAgICAgIHN1cGVyKHRpbWVsaW5lKTsKIAotICAgIHRoaXMuX3RpbWVsaW5lUmVj
b3JkQmFycyA9IFtdOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2NyaXB0
Iik7CiAKLSAgICB0aGlzLnJlc2V0KCk7Ci19OworICAgICAgICB0aGlzLl9zY3JpcHRUaW1lbGlu
ZSA9IHRpbWVsaW5lOworICAgICAgICB0aGlzLl9zY3JpcHRUaW1lbGluZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fc2NyaXB0
VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGlu
ZU92ZXJ2aWV3R3JhcGguU3R5bGVDbGFzc05hbWUgPSAic2NyaXB0IjsKKyAgICAgICAgdGhpcy5f
dGltZWxpbmVSZWNvcmRCYXJzID0gW107CiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZU92
ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
U2NyaXB0VGltZWxpbmVPdmVydmlld0dyYXBoLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
LlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMucmVzZXQoKTsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgcmVz
ZXQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5w
cm90b3R5cGUucmVzZXQuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl90aW1lbGluZVJlY29y
ZEJhck1hcCA9IG5ldyBNYXA7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVu
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1
cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZp
ZXdHcmFwaC5wcm90b3R5cGUudXBkYXRlTGF5b3V0LmNhbGwodGhpcyk7CiAKQEAgLTg0LDExICs4
MCwxMSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFyc1tyZWNvcmRCYXJJbmRl
eF0ucmVjb3JkcyA9IG51bGw7CiAgICAgICAgICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnNb
cmVjb3JkQmFySW5kZXhdLmVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9zY3JpcHRUaW1lbGluZVJlY29yZEFkZGVkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1l
bGluZVZpZXcuanMKaW5kZXggYzNhNGQ3Ny4uMzg4ODkzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVWaWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVs
aW5lVmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw4NyArMjMsODIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3ID0gZnVuY3Rpb24o
dGltZWxpbmUpCitXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3ID0gY2xhc3MgU2NyaXB0
VGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldwogewotICAgIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVZpZXcuY2FsbCh0aGlzLCB0aW1lbGluZSk7Ci0KLSAgICBjb25z
b2xlLmFzc2VydCh0aW1lbGluZS50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQu
VHlwZS5TY3JpcHQpOwotCi0gICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLm9u
c2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnRTZWxlY3RlZC5iaW5kKHRoaXMpOwotICAgIHRoaXMu
bmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5vbmRlc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1l
bnREZXNlbGVjdGVkLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVP
dXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVW
aWV3LlRyZWVPdXRsaW5lU3R5bGVDbGFzc05hbWUpOworICAgIGNvbnN0cnVjdG9yKHRpbWVsaW5l
KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUudHlwZSA9PT0gV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0KTsKIAotICAgIHZhciBjb2x1bW5zID0g
e2xvY2F0aW9uOiB7fSwgY2FsbENvdW50OiB7fSwgc3RhcnRUaW1lOiB7fSwgdG90YWxUaW1lOiB7
fSwgc2VsZlRpbWU6IHt9LCBhdmVyYWdlVGltZToge319OworICAgICAgICBzdXBlcih0aW1lbGlu
ZSk7CiAKLSAgICBjb2x1bW5zLmxvY2F0aW9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJMb2NhdGlvbiIpOwotICAgIGNvbHVtbnMubG9jYXRpb24ud2lkdGggPSAiMTUlIjsKKyAgICAg
ICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fdHJl
ZUVsZW1lbnRTZWxlY3RlZC5iaW5kKHRoaXMpOworICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRl
YmFyVHJlZU91dGxpbmUub25kZXNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50RGVzZWxlY3RlZC5i
aW5kKHRoaXMpOworICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJzY3JpcHQiKTsKIAotICAgIGNvbHVtbnMuY2FsbENvdW50LnRp
dGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWxscyIpOwotICAgIGNvbHVtbnMuY2FsbENv
dW50LndpZHRoID0gIjUlIjsKLSAgICBjb2x1bW5zLmNhbGxDb3VudC5hbGlnbmVkID0gInJpZ2h0
IjsKKyAgICAgICAgdmFyIGNvbHVtbnMgPSB7bG9jYXRpb246IHt9LCBjYWxsQ291bnQ6IHt9LCBz
dGFydFRpbWU6IHt9LCB0b3RhbFRpbWU6IHt9LCBzZWxmVGltZToge30sIGF2ZXJhZ2VUaW1lOiB7
fX07CiAKLSAgICBjb2x1bW5zLnN0YXJ0VGltZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU3RhcnQgVGltZSIpOwotICAgIGNvbHVtbnMuc3RhcnRUaW1lLndpZHRoID0gIjEwJSI7Ci0g
ICAgY29sdW1ucy5zdGFydFRpbWUuYWxpZ25lZCA9ICJyaWdodCI7CisgICAgICAgIGNvbHVtbnMu
bG9jYXRpb24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvY2F0aW9uIik7CisgICAg
ICAgIGNvbHVtbnMubG9jYXRpb24ud2lkdGggPSAiMTUlIjsKIAotICAgIGNvbHVtbnMudG90YWxU
aW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUb3RhbCBUaW1lIik7Ci0gICAgY29s
dW1ucy50b3RhbFRpbWUud2lkdGggPSAiMTAlIjsKLSAgICBjb2x1bW5zLnRvdGFsVGltZS5hbGln
bmVkID0gInJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy5jYWxsQ291bnQudGl0bGUgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIkNhbGxzIik7CisgICAgICAgIGNvbHVtbnMuY2FsbENvdW50LndpZHRo
ID0gIjUlIjsKKyAgICAgICAgY29sdW1ucy5jYWxsQ291bnQuYWxpZ25lZCA9ICJyaWdodCI7CiAK
LSAgICBjb2x1bW5zLnNlbGZUaW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxm
IFRpbWUiKTsKLSAgICBjb2x1bW5zLnNlbGZUaW1lLndpZHRoID0gIjEwJSI7Ci0gICAgY29sdW1u
cy5zZWxmVGltZS5hbGlnbmVkID0gInJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy5zdGFydFRpbWUu
dGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKKyAgICAgICAgY29s
dW1ucy5zdGFydFRpbWUud2lkdGggPSAiMTAlIjsKKyAgICAgICAgY29sdW1ucy5zdGFydFRpbWUu
YWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICBjb2x1bW5zLmF2ZXJhZ2VUaW1lLnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJBdmVyYWdlIFRpbWUiKTsKLSAgICBjb2x1bW5zLmF2ZXJhZ2VU
aW1lLndpZHRoID0gIjEwJSI7Ci0gICAgY29sdW1ucy5hdmVyYWdlVGltZS5hbGlnbmVkID0gInJp
Z2h0IjsKKyAgICAgICAgY29sdW1ucy50b3RhbFRpbWUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlRvdGFsIFRpbWUiKTsKKyAgICAgICAgY29sdW1ucy50b3RhbFRpbWUud2lkdGggPSAi
MTAlIjsKKyAgICAgICAgY29sdW1ucy50b3RhbFRpbWUuYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAg
ICBmb3IgKHZhciBjb2x1bW4gaW4gY29sdW1ucykKLSAgICAgICAgY29sdW1uc1tjb2x1bW5dLnNv
cnRhYmxlID0gdHJ1ZTsKKyAgICAgICAgY29sdW1ucy5zZWxmVGltZS50aXRsZSA9IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU2VsZiBUaW1lIik7CisgICAgICAgIGNvbHVtbnMuc2VsZlRpbWUud2lk
dGggPSAiMTAlIjsKKyAgICAgICAgY29sdW1ucy5zZWxmVGltZS5hbGlnbmVkID0gInJpZ2h0IjsK
IAotICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURh
dGFHcmlkKHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZSwgY29sdW1ucywgdGhpcyk7
Ci0gICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxp
bmVEYXRhR3JpZC5FdmVudC5GaWx0ZXJzRGlkQ2hhbmdlLCB0aGlzLl9kYXRhR3JpZEZpbHRlcnNE
aWRDaGFuZ2UsIHRoaXMpOwotICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX2RhdGFH
cmlkTm9kZVNlbGVjdGVkLCB0aGlzKTsKLSAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRl
bnRpZmllciA9ICJzdGFydFRpbWUiOwotICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOworICAgICAgICBjb2x1bW5z
LmF2ZXJhZ2VUaW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBdmVyYWdlIFRpbWUi
KTsKKyAgICAgICAgY29sdW1ucy5hdmVyYWdlVGltZS53aWR0aCA9ICIxMCUiOworICAgICAgICBj
b2x1bW5zLmF2ZXJhZ2VUaW1lLmFsaWduZWQgPSAicmlnaHQiOwogCi0gICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5TdHlsZUNsYXNz
TmFtZSk7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1l
bnQpOworICAgICAgICBmb3IgKHZhciBjb2x1bW4gaW4gY29sdW1ucykKKyAgICAgICAgICAgIGNv
bHVtbnNbY29sdW1uXS5zb3J0YWJsZSA9IHRydWU7CiAKLSAgICB0aW1lbGluZS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fc2Ny
aXB0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkID0g
bmV3IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlkKHRoaXMubmF2aWdhdGlvblNp
ZGViYXJUcmVlT3V0bGluZSwgY29sdW1ucywgdGhpcyk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlk
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuRXZlbnQuRmls
dGVyc0RpZENoYW5nZSwgdGhpcy5fZGF0YUdyaWRGaWx0ZXJzRGlkQ2hhbmdlLCB0aGlzKTsKKyAg
ICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdy
aWQuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fZGF0YUdyaWROb2RlU2VsZWN0ZWQs
IHRoaXMpOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJz
dGFydFRpbWUiOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQuU29ydE9yZGVyLkFzY2VuZGluZzsKIAotICAgIHRoaXMuX3BlbmRpbmdSZWNv
cmRzID0gW107Ci19OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2NyaXB0
Iik7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVt
ZW50KTsKIAotV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5TdHlsZUNsYXNzTmFtZSA9
ICJzY3JpcHQiOwotV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5UcmVlT3V0bGluZVN0
eWxlQ2xhc3NOYW1lID0gInNjcmlwdCI7CisgICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9zY3JpcHRU
aW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5l
Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY3JpcHRU
aW1lbGluZVZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnBy
b3RvdHlwZSwKKyAgICAgICAgdGhpcy5fcGVuZGluZ1JlY29yZHMgPSBbXTsKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCBuYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lTGFiZWwo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjb3JkcyIp
OwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAg
ICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLnNob3duLmNh
bGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc2hvd24oKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAg
ICB0aGlzLl9kYXRhR3JpZC5oaWRkZW4oKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcucHJvdG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAg
dXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dC5jYWxs
KHRoaXMpOwogCkBAIC0xMjMsNyArMTE4LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5l
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9wcm9jZXNzUGVu
ZGluZ1JlY29yZHMoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rpb25QYXRoQ29t
cG9uZW50cygpCiAgICAgewpAQCAtMTQ5LDM4ICsxNDQsMzggQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g
cGF0aENvbXBvbmVudHM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXRjaFRyZWVFbGVtZW50QWdh
aW5zdEN1c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIG1hdGNoVHJlZUVs
ZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9kYXRhR3JpZC50cmVlRWxlbWVudE1hdGNoZXNBY3RpdmVTY29wZUZpbHRlcnMo
dHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAg
ICByZXNldCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3Rv
dHlwZS5yZXNldC5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlc2V0KCk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHRyZWVFbGVtZW50UGF0
aENvbXBvbmVudFNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB0cmVlRWxlbWVudFBhdGhD
b21wb25lbnRTZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUg
PSB0aGlzLl9kYXRhR3JpZC5kYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudChldmVudC5kYXRhLnBh
dGhDb21wb25lbnQuZ2VuZXJhbFRyZWVFbGVtZW50KTsKICAgICAgICAgaWYgKCFkYXRhR3JpZE5v
ZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRhdGFHcmlkTm9kZS5yZXZlYWxBbmRT
ZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50
OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBkYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudCh0
cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5Qcm9maWxlTm9kZVRyZWVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUodHJlZUVsZW1lbnQucHJvZmls
ZU5vZGUsIHRoaXMuemVyb1RpbWUsIHRoaXMuc3RhcnRUaW1lLCB0aGlzLmVuZFRpbWUpOwogICAg
ICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIHBvcHVsYXRlUHJvZmlsZU5v
ZGVUcmVlRWxlbWVudDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgcG9wdWxhdGVQcm9maWxl
Tm9kZVRyZWVFbGVtZW50KHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgdmFyIHplcm9UaW1l
ID0gdGhpcy56ZXJvVGltZTsKICAgICAgICAgdmFyIHN0YXJ0VGltZSA9IHRoaXMuc3RhcnRUaW1l
OwpAQCAtMTkxLDExICsxODYsMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2YXIgcHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUgPSBu
ZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWROb2RlKGNoaWxkUHJvZmlsZU5vZGUs
IHplcm9UaW1lLCBzdGFydFRpbWUsIGVuZFRpbWUpOwogICAgICAgICAgICAgdGhpcy5fZGF0YUdy
aWQuYWRkUm93SW5Tb3J0T3JkZXIocHJvZmlsZU5vZGVUcmVlRWxlbWVudCwgcHJvZmlsZU5vZGVE
YXRhR3JpZE5vZGUsIHRyZWVFbGVtZW50KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gUHJpdmF0ZQogCi0gICAgX3Byb2Nlc3NQZW5kaW5nUmVjb3JkczogZnVuY3Rpb24oKQor
ICAgIF9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9w
ZW5kaW5nUmVjb3Jkcy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjQsOSArMjE5
LDkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9IFtdOwotICAgIH0sCisgICAg
fQogCi0gICAgX3NjcmlwdFRpbWVsaW5lUmVjb3JkQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9zY3JpcHRUaW1lbGluZVJlY29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNj
cmlwdFRpbWVsaW5lUmVjb3JkID0gZXZlbnQuZGF0YS5yZWNvcmQ7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHNjcmlwdFRpbWVsaW5lUmVjb3JkIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lUmVjb3JkKTsKQEAgLTIzNCwyNSArMjI5LDI1IEBAIFdlYkluc3BlY3Rvci5TY3Jp
cHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3Jk
cy5wdXNoKHNjcmlwdFRpbWVsaW5lUmVjb3JkKTsKIAogICAgICAgICB0aGlzLm5lZWRzTGF5b3V0
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWRGaWx0ZXJzRGlkQ2hhbmdlOiBmdW5j
dGlvbihldmVudCkKKyAgICBfZGF0YUdyaWRGaWx0ZXJzRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVsLnVwZGF0ZUZpbHRlcigp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkTm9kZVNlbGVjdGVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfZGF0YUdyaWROb2RlU2VsZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZl
bnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3RyZWVFbGVtZW50RGVzZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgX3Ry
ZWVFbGVtZW50RGVzZWxlY3RlZCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICh0cmVl
RWxlbWVudC5zdGF0dXMpCiAgICAgICAgICAgICB0cmVlRWxlbWVudC5zdGF0dXMgPSAiIjsKLSAg
ICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxl
bWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAgX3RyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1l
bnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RhdGFHcmlkLnNo
b3VsZElnbm9yZVNlbGVjdGlvbkV2ZW50KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNzgs
OSArMjczLDkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVsLnNob3dPcmlnaW5h
bE9yRm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAg
ICAgIHRoaXMuX3VwZGF0ZVRyZWVFbGVtZW50V2l0aENsb3NlQnV0dG9uKHRyZWVFbGVtZW50KTsK
LSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVUcmVlRWxlbWVudFdpdGhDbG9zZUJ1dHRvbjog
ZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgX3VwZGF0ZVRyZWVFbGVtZW50V2l0aENsb3NlQnV0
dG9uKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2Nsb3NlU3RhdHVzQnV0
dG9uKSB7CiAgICAgICAgICAgICB0cmVlRWxlbWVudC5zdGF0dXMgPSB0aGlzLl9jbG9zZVN0YXR1
c0J1dHRvbi5lbGVtZW50OwpAQCAtMjkzLDkgKzI4OCw5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRU
aW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50ID09
PSB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCkK
ICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVUcmVlRWxlbWVudFdpdGhDbG9zZUJ1dHRvbih0
cmVlRWxlbWVudCk7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfY2xvc2VTdGF0dXNCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfY2xvc2VT
dGF0dXNCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5uYXZpZ2F0aW9u
U2lkZWJhclRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQuZGVzZWxlY3QoKTsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVsLnNob3dUaW1lbGluZVZpZXdGb3JU
aW1lbGluZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRyZWVFbGVtZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VHJlZUVsZW1lbnQu
anMKaW5kZXggOTIwY2ZhMi4uYjgzZDI2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VHJlZUVsZW1lbnQuanMK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDM0ICsyMywzMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHNjcmlwdCkKK1dl
Ykluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudCA9IGNsYXNzIFNjcmlwdFRyZWVFbGVtZW50IGV4
dGVuZHMgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUu
YXNzZXJ0KHNjcmlwdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpOwotCi0gICAgV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHNjcmlwdCwgV2ViSW5z
cGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBudWxsLCBudWxsLCBzY3Jp
cHQsIGZhbHNlKTsKKyAgICBjb25zdHJ1Y3RvcihzY3JpcHQpCisgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydChzY3JpcHQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KTsKIAotICAg
IHRoaXMubWFpblRpdGxlID0gc2NyaXB0LmRpc3BsYXlOYW1lOworICAgICAgICBzdXBlcihzY3Jp
cHQsICJzY3JpcHQiLCBudWxsLCBudWxsLCBzY3JpcHQsIGZhbHNlKTsKIAotICAgIGlmIChzY3Jp
cHQudXJsKSB7Ci0gICAgICAgIC8vIFNob3cgdGhlIGhvc3QgYXMgdGhlIHN1YnRpdGxlIGlmIGl0
IGlzIGRpZmZlcmVudCBmcm9tIHRoZSBtYWluIHRpdGxlLgotICAgICAgICB2YXIgc3VidGl0bGUg
PSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHNjcmlwdC51cmxDb21wb25lbnRzLmhv
c3QpOwotICAgICAgICB0aGlzLnN1YnRpdGxlID0gdGhpcy5tYWluVGl0bGUgIT09IHN1YnRpdGxl
ID8gc3VidGl0bGUgOiBudWxsOworICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHNjcmlwdC5kaXNw
bGF5TmFtZTsKIAotICAgICAgICB0aGlzLnRvb2x0aXAgPSBzY3JpcHQudXJsOworICAgICAgICBp
ZiAoc2NyaXB0LnVybCkgeworICAgICAgICAgICAgLy8gU2hvdyB0aGUgaG9zdCBhcyB0aGUgc3Vi
dGl0bGUgaWYgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIG1haW4gdGl0bGUuCisgICAgICAgICAg
ICB2YXIgc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHNjcmlwdC51
cmxDb21wb25lbnRzLmhvc3QpOworICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZSA9IHRoaXMubWFp
blRpdGxlICE9PSBzdWJ0aXRsZSA/IHN1YnRpdGxlIDogbnVsbDsKIAotICAgICAgICB0aGlzLmFk
ZENsYXNzTmFtZShXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUljb25T
dHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZS5UeXBlLlNjcmlwdCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHRoaXMuYWRkQ2xhc3NO
YW1lKFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudC5Bbm9ueW1vdXNTY3JpcHRJY29uU3R5
bGVDbGFzc05hbWUpOworICAgICAgICAgICAgdGhpcy50b29sdGlwID0gc2NyaXB0LnVybDsKIAot
ICAgIHRoaXMuX3NjcmlwdCA9IHNjcmlwdDsKLX07CisgICAgICAgICAgICB0aGlzLmFkZENsYXNz
TmFtZShXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUljb25TdHlsZUNs
YXNzTmFtZSk7CisgICAgICAgICAgICB0aGlzLmFkZENsYXNzTmFtZShXZWJJbnNwZWN0b3IuUmVz
b3VyY2UuVHlwZS5TY3JpcHQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuYWRk
Q2xhc3NOYW1lKFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudC5Bbm9ueW1vdXNTY3JpcHRJ
Y29uU3R5bGVDbGFzc05hbWUpOwogCi1XZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQuQW5v
bnltb3VzU2NyaXB0SWNvblN0eWxlQ2xhc3NOYW1lID0gImFub255bW91cy1zY3JpcHQtaWNvbiI7
Ci1XZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAic2NyaXB0
IjsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50LAorICAgICAgICB0aGlz
Ll9zY3JpcHQgPSBzY3JpcHQ7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKQEAgLTYwLDQgKzU2
LDQgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB9
CiB9OwogCi1XZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5z
cGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50LkFub255bW91c1NjcmlwdEljb25TdHlsZUNsYXNzTmFt
ZSA9ICJhbm9ueW1vdXMtc2NyaXB0LWljb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoQmFyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoQmFyLmpzCmluZGV4IDg1ZDQ0ZGIuLjRm
Nzg4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NlYXJjaEJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TZWFyY2hCYXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDYxICsyMyw1NiBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TZWFyY2hCYXIgPSBmdW5jdGlv
bihpZGVudGlmaWVyLCBwbGFjZWhvbGRlciwgZGVsZWdhdGUpIHsKLSAgICBXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvbkl0ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyKTsKLQotICAgIHRoaXMuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKLQotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNw
ZWN0b3IuU2VhcmNoQmFyLlN0eWxlQ2xhc3NOYW1lKTsKK1dlYkluc3BlY3Rvci5TZWFyY2hCYXIg
PSBjbGFzcyBTZWFyY2hCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0KK3sK
KyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCBwbGFjZWhvbGRlciwgZGVsZWdhdGUpCisgICAg
eworICAgICAgICBzdXBlcihpZGVudGlmaWVyKTsKIAotICAgIHRoaXMuX2tleWJvYXJkU2hvcnRj
dXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7Ci0gICAgdGhpcy5fa2V5Ym9hcmRTaG9y
dGN1dEVudGVyID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5FbnRlcik7CisgICAgICAgIHRoaXMuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKIAotICAgIHRoaXMuX3NlYXJjaElucHV0ID0gdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKTsKLSAgICB0aGlzLl9z
ZWFyY2hJbnB1dC50eXBlID0gInNlYXJjaCI7Ci0gICAgdGhpcy5fc2VhcmNoSW5wdXQuc3BlbGxj
aGVjayA9IGZhbHNlOwotICAgIHRoaXMuX3NlYXJjaElucHV0LmluY3JlbWVudGFsID0gdHJ1ZTsK
LSAgICB0aGlzLl9zZWFyY2hJbnB1dC5zZXRBdHRyaWJ1dGUoInJlc3VsdHMiLCA1KTsKLSAgICB0
aGlzLl9zZWFyY2hJbnB1dC5zZXRBdHRyaWJ1dGUoImF1dG9zYXZlIiwgaWRlbnRpZmllciArICIt
YXV0b3NhdmUiKTsKLSAgICB0aGlzLl9zZWFyY2hJbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9s
ZGVyIiwgcGxhY2Vob2xkZXIpOwotICAgIHRoaXMuX3NlYXJjaElucHV0LmFkZEV2ZW50TGlzdGVu
ZXIoInNlYXJjaCIsIHRoaXMuX2hhbmRsZVNlYXJjaEV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsK
LSAgICB0aGlzLl9zZWFyY2hJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5f
aGFuZGxlS2V5ZG93bkV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKLX07CisgICAgICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2VhcmNoLWJhciIpOwogCi1XZWJJbnNwZWN0b3IuU2Vh
cmNoQmFyLlN0eWxlQ2xhc3NOYW1lID0gInNlYXJjaC1iYXIiOwotV2ViSW5zcGVjdG9yLlNlYXJj
aEJhci5FdmVudCA9IHsKLSAgICBUZXh0Q2hhbmdlZDogInNlYXJjaGJhci10ZXh0LWRpZC1jaGFu
Z2UiCi19OworICAgICAgICB0aGlzLl9rZXlib2FyZFNob3J0Y3V0RXNjID0gbmV3IFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
LktleS5Fc2NhcGUpOworICAgICAgICB0aGlzLl9rZXlib2FyZFNob3J0Y3V0RW50ZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQuS2V5LkVudGVyKTsKIAotV2ViSW5zcGVjdG9yLlNlYXJjaEJhci5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TZWFyY2hCYXIsCisgICAgICAgIHRo
aXMuX3NlYXJjaElucHV0ID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpbnB1dCIpKTsKKyAgICAgICAgdGhpcy5fc2VhcmNoSW5wdXQudHlwZSA9ICJz
ZWFyY2giOworICAgICAgICB0aGlzLl9zZWFyY2hJbnB1dC5zcGVsbGNoZWNrID0gZmFsc2U7Cisg
ICAgICAgIHRoaXMuX3NlYXJjaElucHV0LmluY3JlbWVudGFsID0gdHJ1ZTsKKyAgICAgICAgdGhp
cy5fc2VhcmNoSW5wdXQuc2V0QXR0cmlidXRlKCJyZXN1bHRzIiwgNSk7CisgICAgICAgIHRoaXMu
X3NlYXJjaElucHV0LnNldEF0dHJpYnV0ZSgiYXV0b3NhdmUiLCBpZGVudGlmaWVyICsgIi1hdXRv
c2F2ZSIpOworICAgICAgICB0aGlzLl9zZWFyY2hJbnB1dC5zZXRBdHRyaWJ1dGUoInBsYWNlaG9s
ZGVyIiwgcGxhY2Vob2xkZXIpOworICAgICAgICB0aGlzLl9zZWFyY2hJbnB1dC5hZGRFdmVudExp
c3RlbmVyKCJzZWFyY2giLCB0aGlzLl9oYW5kbGVTZWFyY2hFdmVudC5iaW5kKHRoaXMpLCBmYWxz
ZSk7CisgICAgICAgIHRoaXMuX3NlYXJjaElucHV0LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24i
LCB0aGlzLl9oYW5kbGVLZXlkb3duRXZlbnQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHRleHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3NlYXJjaElucHV0LnZhbHVlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHRleHQobmV3
VGV4dCkKICAgICB7CiAgICAgICAgIHRoaXMuX3NlYXJjaElucHV0LnZhbHVlID0gbmV3VGV4dDsK
LSAgICB9LAorICAgIH0KIAotICAgIGZvY3VzOiBmdW5jdGlvbigpCisgICAgZm9jdXMoKQogICAg
IHsKICAgICAgICAgdGhpcy5fc2VhcmNoSW5wdXQuZm9jdXMoKTsKICAgICAgICAgdGhpcy5fc2Vh
cmNoSW5wdXQuc2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAg
ICBfaGFuZGxlU2VhcmNoRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVTZWFyY2hF
dmVudChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5TZWFyY2hCYXIuRXZlbnQuVGV4dENoYW5nZWQpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2hhbmRsZUtleWRvd25FdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRs
ZUtleWRvd25FdmVudChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9rZXlib2FyZFNo
b3J0Y3V0RXNjLm1hdGNoZXNFdmVudChldmVudCkpIHsKICAgICAgICAgICAgIGlmICh0aGlzLmRl
bGVnYXRlICYmIHR5cGVvZiB0aGlzLmRlbGVnYXRlLnNlYXJjaEJhcldhbnRzVG9Mb3NlRm9jdXMg
PT09ICJmdW5jdGlvbiIpIHsKQEAgLTk1LDQgKzkwLDYgQEAgV2ViSW5zcGVjdG9yLlNlYXJjaEJh
ci5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlNlYXJjaEJhci5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZTsK
K1dlYkluc3BlY3Rvci5TZWFyY2hCYXIuRXZlbnQgPSB7CisgICAgVGV4dENoYW5nZWQ6ICJzZWFy
Y2hiYXItdGV4dC1kaWQtY2hhbmdlIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaFJlc3VsdFRyZWVFbGVtZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoUmVzdWx0VHJlZUVs
ZW1lbnQuanMKaW5kZXggNjdhMzhlNS4uMTQ0ZWYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoUmVz
dWx0VHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDY3ICsyMyw2NiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVu
dCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3Vs
dFRyZWVFbGVtZW50ID0gY2xhc3MgU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc29sZS5hc3NlcnQocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NU2VhcmNoTWF0Y2hPYmplY3Qg
fHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVNl
YXJjaE1hdGNoT2JqZWN0KTsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkRPTVNlYXJjaE1hdGNoT2JqZWN0IHx8IHJlcHJlc2VudGVkT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVTZWFyY2hNYXRjaE9iamVjdCk7CiAKLSAg
ICB2YXIgdGl0bGUgPSBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQudHJ1bmNh
dGVBbmRIaWdobGlnaHRUaXRsZShyZXByZXNlbnRlZE9iamVjdC50aXRsZSwgcmVwcmVzZW50ZWRP
YmplY3Quc2VhcmNoVGVybSwgcmVwcmVzZW50ZWRPYmplY3Quc291cmNlQ29kZVRleHRSYW5nZSk7
CisgICAgICAgIHZhciB0aXRsZSA9IFdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVu
dC50cnVuY2F0ZUFuZEhpZ2hsaWdodFRpdGxlKHJlcHJlc2VudGVkT2JqZWN0LnRpdGxlLCByZXBy
ZXNlbnRlZE9iamVjdC5zZWFyY2hUZXJtLCByZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlVGV4
dFJhbmdlKTsKIAotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlz
LCByZXByZXNlbnRlZE9iamVjdC5jbGFzc05hbWUsIHRpdGxlLCBudWxsLCByZXByZXNlbnRlZE9i
amVjdCwgZmFsc2UpOwotICAgIHRoaXMuc21hbGwgPSB0cnVlOwotfTsKKyAgICAgICAgc3VwZXIo
cmVwcmVzZW50ZWRPYmplY3QuY2xhc3NOYW1lLCB0aXRsZSwgbnVsbCwgcmVwcmVzZW50ZWRPYmpl
Y3QsIGZhbHNlKTsKIAotV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LkNoYXJh
Y3RlcnNUb1Nob3dCZWZvcmVTZWFyY2hNYXRjaCA9IDE1OwotV2ViSW5zcGVjdG9yLlNlYXJjaFJl
c3VsdFRyZWVFbGVtZW50LkNoYXJhY3RlcnNUb1Nob3dBZnRlclNlYXJjaE1hdGNoID0gNTA7Ci1X
ZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuSGlnaGxpZ2h0ZWRTdHlsZUNsYXNz
TmFtZSA9ICJoaWdobGlnaHRlZCI7CisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOworICAgIH0K
IAotV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LAorICAg
IC8vIFN0YXRpYwogCi0gICAgLy8gUHVibGljCi0KLSAgICBnZXQgZmlsdGVyYWJsZURhdGEoKQor
ICAgIHN0YXRpYyB0cnVuY2F0ZUFuZEhpZ2hsaWdodFRpdGxlKHRpdGxlLCBzZWFyY2hUZXJtLCBz
b3VyY2VDb2RlVGV4dFJhbmdlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHt0ZXh0OiB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LnRpdGxlfTsKLSAgICB9Ci19OworICAgICAgICAvLyBVc2UgdGhlIG9y
aWdpbmFsIGxvY2F0aW9uLCBzaW5jZSB0aG9zZSBsaW5lL2NvbHVtbiBvZmZzZXRzIG1hdGNoIHRo
ZSBsaW5lIHRleHQgaW4gdGl0bGUuCisgICAgICAgIHZhciB0ZXh0UmFuZ2UgPSBzb3VyY2VDb2Rl
VGV4dFJhbmdlLnRleHRSYW5nZTsKIAotV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVt
ZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
LnByb3RvdHlwZTsKKyAgICAgICAgdmFyIHNlYXJjaFRlcm1JbmRleCA9IHRleHRSYW5nZS5zdGFy
dENvbHVtbjsKIAotV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LnRydW5jYXRl
QW5kSGlnaGxpZ2h0VGl0bGUgPSBmdW5jdGlvbih0aXRsZSwgc2VhcmNoVGVybSwgc291cmNlQ29k
ZVRleHRSYW5nZSkKLXsKLSAgICAvLyBVc2UgdGhlIG9yaWdpbmFsIGxvY2F0aW9uLCBzaW5jZSB0
aG9zZSBsaW5lL2NvbHVtbiBvZmZzZXRzIG1hdGNoIHRoZSBsaW5lIHRleHQgaW4gdGl0bGUuCi0g
ICAgdmFyIHRleHRSYW5nZSA9IHNvdXJjZUNvZGVUZXh0UmFuZ2UudGV4dFJhbmdlOworICAgICAg
ICAvLyBXZSBzaG91bGQgb25seSBoYXZlIG9uZSBsaW5lIHRleHQgcmFuZ2VzLCBzbyBtYWtlIHN1
cmUgdGhhdCBpcyB0aGUgY2FzZS4KKyAgICAgICAgY29uc29sZS5hc3NlcnQodGV4dFJhbmdlLnN0
YXJ0TGluZSA9PT0gdGV4dFJhbmdlLmVuZExpbmUpOwogCi0gICAgdmFyIHNlYXJjaFRlcm1JbmRl
eCA9IHRleHRSYW5nZS5zdGFydENvbHVtbjsKKyAgICAgICAgLy8gU2hvdyBzb21lIGNoYXJhY3Rl
cnMgYmVmb3JlIHRoZSBtYXRjaGluZyB0ZXh0IChpZiB0aGVyZSBhcmUgZW5vdWdoKSBmb3IgY29u
dGV4dC4gVHJlZU91dGxpbmUgdGFrZXMgY2FyZSBvZiB0aGUgdHJ1bmNhdGluZworICAgICAgICAv
LyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCisgICAgICAgIHZhciBtb2RpZmllZFRpdGxlID0g
bnVsbDsKKyAgICAgICAgaWYgKHNlYXJjaFRlcm1JbmRleCA+IFdlYkluc3BlY3Rvci5TZWFyY2hS
ZXN1bHRUcmVlRWxlbWVudC5DaGFyYWN0ZXJzVG9TaG93QmVmb3JlU2VhcmNoTWF0Y2gpIHsKKyAg
ICAgICAgICAgIG1vZGlmaWVkVGl0bGUgPSAiXHUyMDI2IiArIHRpdGxlLnN1YnN0cmluZyhzZWFy
Y2hUZXJtSW5kZXggLSBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuQ2hhcmFj
dGVyc1RvU2hvd0JlZm9yZVNlYXJjaE1hdGNoKTsKKyAgICAgICAgICAgIHNlYXJjaFRlcm1JbmRl
eCA9IFdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5DaGFyYWN0ZXJzVG9TaG93
QmVmb3JlU2VhcmNoTWF0Y2ggKyAxOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG1vZGlm
aWVkVGl0bGUgPSB0aXRsZTsKIAotICAgIC8vIFdlIHNob3VsZCBvbmx5IGhhdmUgb25lIGxpbmUg
dGV4dCByYW5nZXMsIHNvIG1ha2Ugc3VyZSB0aGF0IGlzIHRoZSBjYXNlLgotICAgIGNvbnNvbGUu
YXNzZXJ0KHRleHRSYW5nZS5zdGFydExpbmUgPT09IHRleHRSYW5nZS5lbmRMaW5lKTsKKyAgICAg
ICAgLy8gVHJ1bmNhdGUgdGhlIHRhaWwgb2YgdGhlIHRpdGxlIHNvIHRoZSB0b29sdGlwIGlzbid0
IHNvIGxhcmdlLgorICAgICAgICBtb2RpZmllZFRpdGxlID0gbW9kaWZpZWRUaXRsZS50cmltRW5k
KHNlYXJjaFRlcm1JbmRleCArIHNlYXJjaFRlcm0ubGVuZ3RoICsgV2ViSW5zcGVjdG9yLlNlYXJj
aFJlc3VsdFRyZWVFbGVtZW50LkNoYXJhY3RlcnNUb1Nob3dBZnRlclNlYXJjaE1hdGNoKTsKIAot
ICAgIC8vIFNob3cgc29tZSBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgbWF0Y2hpbmcgdGV4dCAoaWYg
dGhlcmUgYXJlIGVub3VnaCkgZm9yIGNvbnRleHQuIFRyZWVPdXRsaW5lIHRha2VzIGNhcmUgb2Yg
dGhlIHRydW5jYXRpbmcKLSAgICAvLyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuCi0gICAgdmFy
IG1vZGlmaWVkVGl0bGUgPSBudWxsOwotICAgIGlmIChzZWFyY2hUZXJtSW5kZXggPiBXZWJJbnNw
ZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuQ2hhcmFjdGVyc1RvU2hvd0JlZm9yZVNlYXJj
aE1hdGNoKSB7Ci0gICAgICAgIG1vZGlmaWVkVGl0bGUgPSAiXHUyMDI2IiArIHRpdGxlLnN1YnN0
cmluZyhzZWFyY2hUZXJtSW5kZXggLSBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1l
bnQuQ2hhcmFjdGVyc1RvU2hvd0JlZm9yZVNlYXJjaE1hdGNoKTsKLSAgICAgICAgc2VhcmNoVGVy
bUluZGV4ID0gV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LkNoYXJhY3RlcnNU
b1Nob3dCZWZvcmVTZWFyY2hNYXRjaCArIDE7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1vZGlmaWVk
VGl0bGUgPSB0aXRsZTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobW9kaWZpZWRUaXRsZS5zdWJz
dHJpbmcoc2VhcmNoVGVybUluZGV4LCBzZWFyY2hUZXJtSW5kZXggKyBzZWFyY2hUZXJtLmxlbmd0
aCkudG9Mb3dlckNhc2UoKSA9PT0gc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKTsKIAotICAgIC8v
IFRydW5jYXRlIHRoZSB0YWlsIG9mIHRoZSB0aXRsZSBzbyB0aGUgdG9vbHRpcCBpc24ndCBzbyBs
YXJnZS4KLSAgICBtb2RpZmllZFRpdGxlID0gbW9kaWZpZWRUaXRsZS50cmltRW5kKHNlYXJjaFRl
cm1JbmRleCArIHNlYXJjaFRlcm0ubGVuZ3RoICsgV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRy
ZWVFbGVtZW50LkNoYXJhY3RlcnNUb1Nob3dBZnRlclNlYXJjaE1hdGNoKTsKKyAgICAgICAgdmFy
IGhpZ2hsaWdodGVkVGl0bGUgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAK
LSAgICBjb25zb2xlLmFzc2VydChtb2RpZmllZFRpdGxlLnN1YnN0cmluZyhzZWFyY2hUZXJtSW5k
ZXgsIHNlYXJjaFRlcm1JbmRleCArIHNlYXJjaFRlcm0ubGVuZ3RoKS50b0xvd2VyQ2FzZSgpID09
PSBzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpOworICAgICAgICBoaWdobGlnaHRlZFRpdGxlLmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1vZGlmaWVkVGl0bGUuc3Vic3RyaW5n
KDAsIHNlYXJjaFRlcm1JbmRleCkpKTsKIAotICAgIHZhciBoaWdobGlnaHRlZFRpdGxlID0gZG9j
dW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOworICAgICAgICB2YXIgaGlnaGxpZ2h0U3Bh
biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgaGlnaGxpZ2h0U3Bh
bi5jbGFzc05hbWUgPSAiaGlnaGxpZ2h0ZWQiOworICAgICAgICBoaWdobGlnaHRTcGFuLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1vZGlmaWVkVGl0bGUuc3Vic3RyaW5nKHNl
YXJjaFRlcm1JbmRleCwgc2VhcmNoVGVybUluZGV4ICsgc2VhcmNoVGVybS5sZW5ndGgpKSk7Cisg
ICAgICAgIGhpZ2hsaWdodGVkVGl0bGUuYXBwZW5kQ2hpbGQoaGlnaGxpZ2h0U3Bhbik7CiAKLSAg
ICBoaWdobGlnaHRlZFRpdGxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1v
ZGlmaWVkVGl0bGUuc3Vic3RyaW5nKDAsIHNlYXJjaFRlcm1JbmRleCkpKTsKKyAgICAgICAgaGln
aGxpZ2h0ZWRUaXRsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtb2RpZmll
ZFRpdGxlLnN1YnN0cmluZyhzZWFyY2hUZXJtSW5kZXggKyBzZWFyY2hUZXJtLmxlbmd0aCkpKTsK
IAotICAgIHZhciBoaWdobGlnaHRTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
OwotICAgIGhpZ2hsaWdodFNwYW4uY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3Vs
dFRyZWVFbGVtZW50LkhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWU7Ci0gICAgaGlnaGxpZ2h0U3Bh
bi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtb2RpZmllZFRpdGxlLnN1YnN0
cmluZyhzZWFyY2hUZXJtSW5kZXgsIHNlYXJjaFRlcm1JbmRleCArIHNlYXJjaFRlcm0ubGVuZ3Ro
KSkpOwotICAgIGhpZ2hsaWdodGVkVGl0bGUuYXBwZW5kQ2hpbGQoaGlnaGxpZ2h0U3Bhbik7Cisg
ICAgICAgIHJldHVybiBoaWdobGlnaHRlZFRpdGxlOworICAgIH0KIAotICAgIGhpZ2hsaWdodGVk
VGl0bGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobW9kaWZpZWRUaXRsZS5z
dWJzdHJpbmcoc2VhcmNoVGVybUluZGV4ICsgc2VhcmNoVGVybS5sZW5ndGgpKSk7CisgICAgLy8g
UHVibGljCiAKLSAgICByZXR1cm4gaGlnaGxpZ2h0ZWRUaXRsZTsKKyAgICBnZXQgZmlsdGVyYWJs
ZURhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHt0ZXh0OiB0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0LnRpdGxlfTsKKyAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVs
ZW1lbnQuQ2hhcmFjdGVyc1RvU2hvd0JlZm9yZVNlYXJjaE1hdGNoID0gMTU7CitXZWJJbnNwZWN0
b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQuQ2hhcmFjdGVyc1RvU2hvd0FmdGVyU2VhcmNoTWF0
Y2ggPSA1MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TZWN0aW9uLmpzCmluZGV4IDFlNjRjZjIuLjU5OTgyNTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlY3Rpb24uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VjdGlvbi5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNTEg
KzIzLDQ5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLlNlY3Rpb24gPSBmdW5jdGlvbih0aXRsZSwgc3VidGl0bGUpCitXZWJJbnNwZWN0
b3IuU2VjdGlvbiA9IGNsYXNzIFNlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7
Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHRpdGxlLCBzdWJ0aXRsZSkKKyAgICB7CisgICAgICAg
IHN1cGVyKCk7CiAKLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInNlY3Rpb24iOwotICAgIHRoaXMu
ZWxlbWVudC5fc2VjdGlvbiA9IHRoaXM7CisgICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0g
InNlY3Rpb24iOworICAgICAgICB0aGlzLmVsZW1lbnQuX3NlY3Rpb24gPSB0aGlzOwogCi0gICAg
aWYgKHR5cGVvZiB0aXRsZSA9PT0gInN0cmluZyIgfHwgdGl0bGUgaW5zdGFuY2VvZiBOb2RlIHx8
IHR5cGVvZiBzdWJ0aXRsZSA9PT0gInN0cmluZyIpIHsKLSAgICAgICAgdGhpcy5oZWFkZXJFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMuaGVhZGVy
RWxlbWVudC5jbGFzc05hbWUgPSAiaGVhZGVyIjsKKyAgICAgICAgaWYgKHR5cGVvZiB0aXRsZSA9
PT0gInN0cmluZyIgfHwgdGl0bGUgaW5zdGFuY2VvZiBOb2RlIHx8IHR5cGVvZiBzdWJ0aXRsZSA9
PT0gInN0cmluZyIpIHsKKyAgICAgICAgICAgIHRoaXMuaGVhZGVyRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgdGhpcy5oZWFkZXJFbGVtZW50LmNs
YXNzTmFtZSA9ICJoZWFkZXIiOwogCi0gICAgICAgIHRoaXMudGl0bGVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMudGl0bGVFbGVtZW50LmNsYXNz
TmFtZSA9ICJ0aXRsZSI7CisgICAgICAgICAgICB0aGlzLnRpdGxlRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQuY2xh
c3NOYW1lID0gInRpdGxlIjsKIAotICAgICAgICB0aGlzLnN1YnRpdGxlRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLnN1YnRpdGxlRWxlbWVudC5j
bGFzc05hbWUgPSAic3VidGl0bGUiOworICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHRoaXMuc3VidGl0
bGVFbGVtZW50LmNsYXNzTmFtZSA9ICJzdWJ0aXRsZSI7CiAKLSAgICAgICAgdGhpcy5oZWFkZXJF
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc3VidGl0bGVFbGVtZW50KTsKLSAgICAgICAgdGhpcy5o
ZWFkZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudGl0bGVFbGVtZW50KTsKKyAgICAgICAgICAg
IHRoaXMuaGVhZGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnN1YnRpdGxlRWxlbWVudCk7Cisg
ICAgICAgICAgICB0aGlzLmhlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy50aXRsZUVsZW1l
bnQpOwogCi0gICAgICAgIHRoaXMuaGVhZGVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuaGFuZGxlQ2xpY2suYmluZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5oZWFkZXJFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMu
aGVhZGVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuaGFuZGxlQ2xpY2su
YmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuaGVhZGVyRWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy50aXRsZSA9IHRpdGxlOwotICAg
ICAgICB0aGlzLnN1YnRpdGxlID0gc3VidGl0bGU7Ci0gICAgfSBlbHNlCi0gICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuby1oZWFkZXIiKTsKKyAgICAgICAgICAgIHRoaXMudGl0
bGUgPSB0aXRsZTsKKyAgICAgICAgICAgIHRoaXMuc3VidGl0bGUgPSBzdWJ0aXRsZTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibm8taGVh
ZGVyIik7CiAKLSAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9leHBh
bmRlZCA9IGZhbHNlOwogCi0gICAgaWYgKCF0aGlzLmhlYWRlckVsZW1lbnQpCi0gICAgICAgIHRo
aXMuZXhwYW5kKCk7Ci19OworICAgICAgICBpZiAoIXRoaXMuaGVhZGVyRWxlbWVudCkKKyAgICAg
ICAgICAgIHRoaXMuZXhwYW5kKCk7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuU2VjdGlvbi5FdmVu
dCA9IHsKLSAgICBWaXNpYmxlQ29udGVudERpZENoYW5nZTogInNlY3Rpb24tdmlzaWJsZS1jb250
ZW50LWRpZC1jaGFuZ2UiCi19OworICAgIC8vIFB1YmxpYwogCi1XZWJJbnNwZWN0b3IuU2VjdGlv
bi5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHRpdGxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl90aXRsZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB0aXRsZSh4KQogICAgIHsKQEAg
LTgwLDEyICs3OCwxMiBAQCBXZWJJbnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLnRpdGxlRWxlbWVudC5hcHBlbmRDaGlsZCh4KTsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQudGV4dENvbnRlbnQgPSB4OwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHN1YnRpdGxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9z
dWJ0aXRsZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdWJ0aXRsZSh4KQogICAgIHsKQEAg
LTkzLDcgKzkxLDcgQEAgV2ViSW5zcGVjdG9yLlNlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLl9zdWJ0aXRsZSA9IHg7CiAgICAgICAgIHRoaXMu
c3VidGl0bGVFbGVtZW50LnRleHRDb250ZW50ID0geDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzdWJ0aXRsZUFzVGV4dEZvclRlc3QoKQogICAgIHsKQEAgLTEwNSwxMiArMTAzLDEyIEBAIFdl
Ykluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXN1bHQg
Kz0gbGlua0RhdGE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBleHBhbmRlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZXhwYW5kZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZXhwYW5kZWQoeCkKICAgICB7CkBA
IC0xMTgsMTIgKzExNiwxMiBAQCBXZWJJbnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLmV4cGFuZCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlz
LmNvbGxhcHNlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcG9wdWxhdGVkKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9wb3B1bGF0ZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgcG9wdWxhdGVkKHgpCiAgICAgewpAQCAtMTMyLDEyICsxMzAsMTIgQEAgV2ViSW5zcGVjdG9y
LlNlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5vbnBvcHVsYXRlKCk7CiAg
ICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZWQgPSB0cnVlOwogICAgICAgICB9Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBvbnBvcHVsYXRlOiBmdW5jdGlvbigpCisgICAgb25wb3B1bGF0ZSgpCiAgICAg
ewogICAgICAgICAvLyBPdmVycmlkZW4gYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBmaXJzdFNpYmxpbmcoKQogICAgIHsKQEAgLTE1Myw3ICsxNTEsNyBAQCBXZWJJbnNw
ZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g
bnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsYXN0U2libGluZygpCiAgICAgewpAQCAt
MTY5LDcgKzE2Nyw3IEBAIFdlYkluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5l
eHRTaWJsaW5nKCkKICAgICB7CkBAIC0xNzksNyArMTc3LDcgQEAgV2ViSW5zcGVjdG9yLlNlY3Rp
b24ucHJvdG90eXBlID0gewogICAgICAgICB9IHdoaWxlIChjdXJFbGVtZW50ICYmICFjdXJFbGVt
ZW50Ll9zZWN0aW9uKTsKIAogICAgICAgICByZXR1cm4gY3VyRWxlbWVudCA/IGN1ckVsZW1lbnQu
X3NlY3Rpb24gOiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByZXZpb3VzU2libGlu
ZygpCiAgICAgewpAQCAtMTg5LDkgKzE4Nyw5IEBAIFdlYkluc3BlY3Rvci5TZWN0aW9uLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfSB3aGlsZSAoY3VyRWxlbWVudCAmJiAhY3VyRWxlbWVudC5fc2Vj
dGlvbik7CiAKICAgICAgICAgcmV0dXJuIGN1ckVsZW1lbnQgPyBjdXJFbGVtZW50Ll9zZWN0aW9u
IDogbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIGV4cGFuZDogZnVuY3Rpb24oKQorICAgIGV4
cGFuZCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZXhwYW5kZWQpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0yMDMsMjYgKzIwMSwyOCBAQCBXZWJJbnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZWQgPSB0cnVlOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rv
ci5TZWN0aW9uLkV2ZW50LlZpc2libGVDb250ZW50RGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0K
IAotICAgIGNvbGxhcHNlOiBmdW5jdGlvbigpCisgICAgY29sbGFwc2UoKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9leHBhbmRlZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhp
cy5fZXhwYW5kZWQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoImV4cGFuZGVkIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0b2dnbGVFeHBhbmRlZDogZnVu
Y3Rpb24oKQorICAgIHRvZ2dsZUV4cGFuZGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuZXhwYW5k
ZWQgPSAhdGhpcy5leHBhbmRlZDsKLSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUNsaWNrOiBm
dW5jdGlvbihlKQorICAgIGhhbmRsZUNsaWNrKGUpCiAgICAgewogICAgICAgICB0aGlzLnRvZ2ds
ZUV4cGFuZGVkKCk7CiAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgfQogfTsKIAot
V2ViSW5zcGVjdG9yLlNlY3Rpb24ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlNlY3Rpb24uRXZlbnQgPSB7CisgICAgVmlz
aWJsZUNvbnRlbnREaWRDaGFuZ2U6ICJzZWN0aW9uLXZpc2libGUtY29udGVudC1kaWQtY2hhbmdl
IgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NpZGViYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TaWRlYmFyLmpzCmluZGV4IGI4MmJjN2MuLjZjMjE2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcwpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNTYgKzIz
LDM4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLlNpZGViYXIgPSBmdW5jdGlvbihlbGVtZW50LCBzaWRlLCBzaWRlYmFyUGFuZWxzLCBy
b2xlLCBsYWJlbCkgewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0
b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKK1dlYkluc3BlY3Rvci5TaWRlYmFyID0gY2xhc3MgU2lkZWJh
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50
LCBzaWRlLCBzaWRlYmFyUGFuZWxzLCByb2xlLCBsYWJlbCkKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CiAKLSAgICBjb25zb2xlLmFzc2VydCghc2lkZSB8fCBzaWRlID09PSBXZWJJbnNwZWN0b3Iu
U2lkZWJhci5TaWRlcy5MZWZ0IHx8IHNpZGUgPT09IFdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVz
LlJpZ2h0KTsKLSAgICB0aGlzLl9zaWRlID0gc2lkZSB8fCBXZWJJbnNwZWN0b3IuU2lkZWJhci5T
aWRlcy5MZWZ0OworICAgICAgICBjb25zb2xlLmFzc2VydCghc2lkZSB8fCBzaWRlID09PSBXZWJJ
bnNwZWN0b3IuU2lkZWJhci5TaWRlcy5MZWZ0IHx8IHNpZGUgPT09IFdlYkluc3BlY3Rvci5TaWRl
YmFyLlNpZGVzLlJpZ2h0KTsKKyAgICAgICAgdGhpcy5fc2lkZSA9IHNpZGUgfHwgV2ViSW5zcGVj
dG9yLlNpZGViYXIuU2lkZXMuTGVmdDsKIAotICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuU2lkZWJhci5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TaWRlYmFyLkNvbGxhcHNlZFN0eWxl
Q2xhc3NOYW1lKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5fc2lkZSk7
CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNpZGViYXIi
KTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TaWRl
YmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKHRoaXMuX3NpZGUpOwogCi0gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUo
InJvbGUiLCByb2xlIHx8ICJncm91cCIpOwotICAgIGlmIChsYWJlbCkKLSAgICAgICAgdGhpcy5f
ZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBsYWJlbCk7CisgICAgICAgIHRoaXMu
X2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSB8fCAiZ3JvdXAiKTsKKyAgICAgICAg
aWYgKGxhYmVsKQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEt
bGFiZWwiLCBsYWJlbCk7CiAKLSAgICB0aGlzLl9yZXNpemVyID0gbmV3IFdlYkluc3BlY3Rvci5S
ZXNpemVyKFdlYkluc3BlY3Rvci5SZXNpemVyLlJ1bGVPcmllbnRhdGlvbi5WZXJ0aWNhbCwgdGhp
cyk7Ci0gICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fcmVzaXplci5lbGVtZW50
LCB0aGlzLl9lbGVtZW50LmZpcnN0Q2hpbGQpOworICAgICAgICB0aGlzLl9yZXNpemVyID0gbmV3
IFdlYkluc3BlY3Rvci5SZXNpemVyKFdlYkluc3BlY3Rvci5SZXNpemVyLlJ1bGVPcmllbnRhdGlv
bi5WZXJ0aWNhbCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuaW5zZXJ0QmVmb3JlKHRo
aXMuX3Jlc2l6ZXIuZWxlbWVudCwgdGhpcy5fZWxlbWVudC5maXJzdENoaWxkKTsKIAotICAgIHRo
aXMuX3NpZGViYXJQYW5lbHMgPSBbXTsKKyAgICAgICAgdGhpcy5fc2lkZWJhclBhbmVscyA9IFtd
OwogCi0gICAgaWYgKHNpZGViYXJQYW5lbHMpIHsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzaWRlYmFyUGFuZWxzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5hZGRTaWRlYmFy
UGFuZWwoc2lkZWJhclBhbmVsc1tpXSk7CisgICAgICAgIGlmIChzaWRlYmFyUGFuZWxzKSB7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZGViYXJQYW5lbHMubGVuZ3RoOyArK2kp
CisgICAgICAgICAgICAgICAgdGhpcy5hZGRTaWRlYmFyUGFuZWwoc2lkZWJhclBhbmVsc1tpXSk7
CisgICAgICAgIH0KICAgICB9Ci19OwotCi0vLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYkluc3BlY3Rvci5P
YmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5TaWRl
YmFyKTsKLQotV2ViSW5zcGVjdG9yLlNpZGViYXIuU3R5bGVDbGFzc05hbWUgPSAic2lkZWJhciI7
Ci1XZWJJbnNwZWN0b3IuU2lkZWJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBz
ZWQiOwotV2ViSW5zcGVjdG9yLlNpZGViYXIuQWJzb2x1dGVNaW5pbXVtV2lkdGggPSAyMDA7Ci0K
LVdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVzID0ge307Ci1XZWJJbnNwZWN0b3IuU2lkZWJhci5T
aWRlcy5SaWdodCA9ICJyaWdodCI7Ci1XZWJJbnNwZWN0b3IuU2lkZWJhci5TaWRlcy5MZWZ0ID0g
ImxlZnQiOwotCi1XZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudCA9IHsKLSAgICBTaWRlYmFyUGFu
ZWxTZWxlY3RlZDogInNpZGViYXItc2lkZWJhci1wYW5lbC1zZWxlY3RlZCIsCi0gICAgQ29sbGFw
c2VkU3RhdGVEaWRDaGFuZ2U6ICJzaWRlYmFyLXNpZGViYXItY29sbGFwc2VkLXN0YXRlLWRpZC1j
aGFuZ2UiLAotICAgIFdpZHRoRGlkQ2hhbmdlOiAic2lkZWJhci13aWR0aC1kaWQtY2hhbmdlIiwK
LX07Ci0KLVdlYkluc3BlY3Rvci5TaWRlYmFyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLlNpZGViYXIsCiAKICAgICAvLyBQdWJsaWMKIAotICAgIGFkZFNpZGVi
YXJQYW5lbDogZnVuY3Rpb24oc2lkZWJhclBhbmVsKQorICAgIGFkZFNpZGViYXJQYW5lbChzaWRl
YmFyUGFuZWwpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChzaWRlYmFyUGFuZWwgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsKTsKICAgICAgICAgaWYgKCEoc2lkZWJh
clBhbmVsIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbCkpCkBAIC05MCw5ICs3
Miw5IEBAIFdlYkluc3BlY3Rvci5TaWRlYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgc2lkZWJh
clBhbmVsLmFkZGVkKCk7CiAKICAgICAgICAgcmV0dXJuIHNpZGViYXJQYW5lbDsKLSAgICB9LAor
ICAgIH0KIAotICAgIHJlbW92ZVNpZGViYXJQYW5lbDogZnVuY3Rpb24oc2lkZWJhclBhbmVsT3JJ
ZGVudGlmaWVyT3JJbmRleCwgaW5kZXgpCisgICAgcmVtb3ZlU2lkZWJhclBhbmVsKHNpZGViYXJQ
YW5lbE9ySWRlbnRpZmllck9ySW5kZXgsIGluZGV4KQogICAgIHsKICAgICAgICAgdmFyIHNpZGVi
YXJQYW5lbCA9IHRoaXMuZmluZFNpZGViYXJQYW5lbChzaWRlYmFyUGFuZWxPcklkZW50aWZpZXJP
ckluZGV4KTsKICAgICAgICAgaWYgKCFzaWRlYmFyUGFuZWwpCkBAIC0xMTMsMTIgKzk1LDEyIEBA
IFdlYkluc3BlY3Rvci5TaWRlYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgc2lkZWJhclBhbmVs
LnJlbW92ZWQoKTsKIAogICAgICAgICByZXR1cm4gc2lkZWJhclBhbmVsOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHNlbGVjdGVkU2lkZWJhclBhbmVsKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9zZWxlY3RlZFNpZGViYXJQYW5lbCB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IHNlbGVjdGVkU2lkZWJhclBhbmVsKHNpZGViYXJQYW5lbE9ySWRlbnRpZmllck9ySW5k
ZXgpCiAgICAgewpAQCAtMTQ5LDI0ICsxMzEsMjQgQEAgV2ViSW5zcGVjdG9yLlNpZGViYXIucHJv
dG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlNpZGViYXIuRXZlbnQuU2lkZWJhclBhbmVsU2VsZWN0ZWQpOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1pbmltdW1XaWR0aCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLlNpZGViYXIuQWJzb2x1dGVNaW5pbXVtV2lkdGg7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgbWF4aW11bVdpZHRoKCkKICAgICB7CiAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIGlzIGtpbmQgb2YgYXJiaXRyYXJ5IGFuZCBpZGVhbGx5IHdvdWxkIGJlIGEgbW9yZSBj
b21wbGV4IGNhbGN1bGF0aW9uIGJhc2VkIG9uIHRoZQogICAgICAgICAvLyBhdmFpbGFibGUgc3Bh
Y2UgZm9yIHRoZSBzaWJsaW5nIGVsZW1lbnRzLgogICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh3
aW5kb3cuaW5uZXJXaWR0aCAvIDMpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHdpZHRoKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50Lm9mZnNldFdpZHRoOwotICAgIH0s
CisgICAgfQogCiAgICAgc2V0IHdpZHRoKG5ld1dpZHRoKQogICAgIHsKQEAgLTE4MSwxMiArMTYz
LDEyIEBAIFdlYkluc3BlY3Rvci5TaWRlYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX3NlbGVjdGVkU2lkZWJhclBhbmVsLndpZHRoRGlkQ2hhbmdlKCk7CiAKICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNpZGViYXIuRXZlbnQuV2lk
dGhEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvbGxhcHNlZCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5z
cGVjdG9yLlNpZGViYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQog
CiAgICAgc2V0IGNvbGxhcHNlZChmbGFnKQogICAgIHsKQEAgLTIxMSwyNCArMTkzLDI0IEBAIFdl
Ykluc3BlY3Rvci5TaWRlYmFyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudC5Db2xsYXBzZWRTdGF0
ZURpZENoYW5nZSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5TaWRlYmFyLkV2ZW50LldpZHRoRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBzaWRlYmFyUGFuZWxzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zaWRl
YmFyUGFuZWxzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2lk
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2lkZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGZpbmRTaWRlYmFyUGFuZWw6IGZ1bmN0aW9uKHNpZGViYXJQYW5lbE9ySWRlbnRpZmllck9y
SW5kZXgpCisgICAgZmluZFNpZGViYXJQYW5lbChzaWRlYmFyUGFuZWxPcklkZW50aWZpZXJPcklu
ZGV4KQogICAgIHsKICAgICAgICAgdmFyIHNpZGViYXJQYW5lbCA9IG51bGw7CiAKQEAgLTI0Nywx
NiArMjI5LDE2IEBAIFdlYkluc3BlY3Rvci5TaWRlYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
fQogCiAgICAgICAgIHJldHVybiBzaWRlYmFyUGFuZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcm90ZWN0ZWQKIAotICAgIHJlc2l6ZXJEcmFnU3RhcnRlZDogZnVuY3Rpb24ocmVzaXplcikK
KyAgICByZXNpemVyRHJhZ1N0YXJ0ZWQocmVzaXplcikKICAgICB7CiAgICAgICAgIHRoaXMuX3dp
ZHRoQmVmb3JlUmVzaXplID0gdGhpcy53aWR0aDsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2l6
ZXJEcmFnZ2luZzogZnVuY3Rpb24ocmVzaXplciwgcG9zaXRpb25EZWx0YSkKKyAgICByZXNpemVy
RHJhZ2dpbmcocmVzaXplciwgcG9zaXRpb25EZWx0YSkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9zaWRlID09PSBXZWJJbnNwZWN0b3IuU2lkZWJhci5TaWRlcy5MZWZ0KQogICAgICAgICAgICAg
cG9zaXRpb25EZWx0YSAqPSAtMTsKQEAgLTI2NCwxOSArMjQ2LDMxIEBAIFdlYkluc3BlY3Rvci5T
aWRlYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIG5ld1dpZHRoID0gcG9zaXRpb25EZWx0
YSArIHRoaXMuX3dpZHRoQmVmb3JlUmVzaXplOwogICAgICAgICB0aGlzLndpZHRoID0gbmV3V2lk
dGg7CiAgICAgICAgIHRoaXMuY29sbGFwc2VkID0gKG5ld1dpZHRoIDwgKHRoaXMubWluaW11bVdp
ZHRoIC8gMikpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzaXplckRyYWdFbmRlZDogZnVuY3Rp
b24ocmVzaXplcikKKyAgICByZXNpemVyRHJhZ0VuZGVkKHJlc2l6ZXIpCiAgICAgewogICAgICAg
ICBkZWxldGUgdGhpcy5fd2lkdGhCZWZvcmVSZXNpemU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX25hdmlnYXRpb25JdGVtU2VsZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlz
LnNlbGVjdGVkU2lkZWJhclBhbmVsID0gZXZlbnQudGFyZ2V0LnNlbGVjdGVkTmF2aWdhdGlvbkl0
ZW0gPyBldmVudC50YXJnZXQuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbS5pZGVudGlmaWVyIDogbnVs
bDsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuU2lkZWJhci5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuU2lkZWJhci5D
b2xsYXBzZWRTdHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQiOworV2ViSW5zcGVjdG9yLlNpZGVi
YXIuQWJzb2x1dGVNaW5pbXVtV2lkdGggPSAyMDA7CisKK1dlYkluc3BlY3Rvci5TaWRlYmFyLlNp
ZGVzID0geworICAgIFJpZ2h0OiAicmlnaHQiLAorICAgIExlZnQ6ICJsZWZ0IgorfTsKKworV2Vi
SW5zcGVjdG9yLlNpZGViYXIuRXZlbnQgPSB7CisgICAgU2lkZWJhclBhbmVsU2VsZWN0ZWQ6ICJz
aWRlYmFyLXNpZGViYXItcGFuZWwtc2VsZWN0ZWQiLAorICAgIENvbGxhcHNlZFN0YXRlRGlkQ2hh
bmdlOiAic2lkZWJhci1zaWRlYmFyLWNvbGxhcHNlZC1zdGF0ZS1kaWQtY2hhbmdlIiwKKyAgICBX
aWR0aERpZENoYW5nZTogInNpZGViYXItd2lkdGgtZGlkLWNoYW5nZSIsCit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhclBhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhclBh
bmVsLmpzCmluZGV4IDI3Nzg0ZTcuLjdjZTAyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyUGFuZWwuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDY4
ICsyMyw2MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5TaWRlYmFyUGFuZWwgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBkaXNwbGF5TmFt
ZSwgc2hvd1Rvb2xUaXAsIGhpZGVUb29sVGlwLCBpbWFnZSwgZWxlbWVudCwgcm9sZSwgbGFiZWwp
CitXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsID0gY2xhc3MgU2lkZWJhclBhbmVsIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBX
ZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdl
Ykluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX2lkZW50aWZpZXIgPSBp
ZGVudGlmaWVyOworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93
VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50LCByb2xlLCBsYWJlbCkKKyAgICB7
CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl90b29sYmFySXRlbSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbShpZGVudGlmaWVyLCBzaG93VG9vbFRpcCwg
aGlkZVRvb2xUaXAsIGRpc3BsYXlOYW1lLCBpbWFnZSwgbnVsbCwgInRhYiIpOwotICAgIHRoaXMu
X3Rvb2xiYXJJdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMudG9nZ2xlLCB0aGlzKTsKLSAgICB0aGlzLl90b29s
YmFySXRlbS5lbmFibGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2lkZW50aWZpZXIgPSBpZGVu
dGlmaWVyOwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5TaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZChpZGVudGlmaWVyKTsKKyAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0gPSBuZXcg
V2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0oaWRlbnRpZmllciwgc2hvd1Rv
b2xUaXAsIGhpZGVUb29sVGlwLCBkaXNwbGF5TmFtZSwgaW1hZ2UsIG51bGwsICJ0YWIiKTsKKyAg
ICAgICAgdGhpcy5fdG9vbGJhckl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy50b2dnbGUsIHRoaXMpOworICAg
ICAgICB0aGlzLl90b29sYmFySXRlbS5lbmFibGVkID0gZmFsc2U7CiAKLSAgICB0aGlzLl9lbGVt
ZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUgfHwgImdyb3VwIik7Ci0gICAgdGhpcy5fZWxl
bWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBsYWJlbCB8fCBkaXNwbGF5TmFtZSk7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInBhbmVsIik7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChpZGVudGlmaWVyKTsKIAotICAgIHRo
aXMuX2NvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
dGhpcy5fY29udGVudEVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5l
bC5Db250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fY29udGVudEVsZW1lbnQpOwotfTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5z
ZXRBdHRyaWJ1dGUoInJvbGUiLCByb2xlIHx8ICJncm91cCIpOworICAgICAgICB0aGlzLl9lbGVt
ZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1sYWJlbCIsIGxhYmVsIHx8IGRpc3BsYXlOYW1lKTsKIAot
V2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJwYW5lbCI7Ci1XZWJJ
bnNwZWN0b3IuU2lkZWJhclBhbmVsLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUgPSAic2VsZWN0ZWQi
OwotV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5Db250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1l
ID0gImNvbnRlbnQiOwotCi1XZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbCwKLSAgICBfX3Byb3Rv
X186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9jb250ZW50
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9j
b250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAiY29udGVudCI7CisgICAgICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudEVsZW1lbnQpOworICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGlkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2lkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdG9vbGJhckl0ZW0oKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2xiYXJJdGVtOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29udGVudEVsZW1lbnQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2NvbnRlbnRFbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHZp
c2libGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQgJiYgdGhpcy5fcGFy
ZW50U2lkZWJhciAmJiAhdGhpcy5fcGFyZW50U2lkZWJhci5jb2xsYXBzZWQ7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc2VsZWN0ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwuU2VsZWN0
ZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0ZWQoZmxh
ZykKICAgICB7CkBAIC05Miw3NSArODUsNzcgQEAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLlNpZGViYXJQYW5lbC5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5TaWRlYmFyUGFuZWwuU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgcGFyZW50U2lkZWJhcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
cGFyZW50U2lkZWJhcjsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3c6IGZ1bmN0aW9uKCkKKyAg
ICBzaG93KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcGFyZW50U2lkZWJhcikKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9wYXJlbnRTaWRlYmFyLmNvbGxhcHNlZCA9
IGZhbHNlOwogICAgICAgICB0aGlzLl9wYXJlbnRTaWRlYmFyLnNlbGVjdGVkU2lkZWJhclBhbmVs
ID0gdGhpczsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGU6IGZ1bmN0aW9uKCkKKyAgICBoaWRl
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcGFyZW50U2lkZWJhcikKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICB0aGlzLl9wYXJlbnRTaWRlYmFyLmNvbGxhcHNlZCA9IHRydWU7
CiAgICAgICAgIHRoaXMuX3BhcmVudFNpZGViYXIuc2VsZWN0ZWRTaWRlYmFyUGFuZWwgPSBudWxs
OwotICAgIH0sCisgICAgfQogCi0gICAgdG9nZ2xlOiBmdW5jdGlvbigpCisgICAgdG9nZ2xlKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLnZpc2libGUpCiAgICAgICAgICAgICB0aGlzLmhpZGUo
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5zaG93KCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBhZGRlZDogZnVuY3Rpb24oKQorICAgIGFkZGVkKCkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX3BhcmVudFNpZGViYXIpOwogICAgICAgICB0aGlzLl90b29sYmFy
SXRlbS5lbmFibGVkID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0uYWN0aXZhdGVk
ID0gdGhpcy52aXNpYmxlOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlZDogZnVuY3Rpb24o
KQorICAgIHJlbW92ZWQoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3Bh
cmVudFNpZGViYXIpOwogICAgICAgICB0aGlzLl90b29sYmFySXRlbS5lbmFibGVkID0gZmFsc2U7
CiAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmFjdGl2YXRlZCA9IGZhbHNlOwotICAgIH0sCisg
ICAgfQogCi0gICAgd2lsbFJlbW92ZTogZnVuY3Rpb24oKQorICAgIHdpbGxSZW1vdmUoKQogICAg
IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0K
IAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgLy8g
SW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjog
ZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBi
eSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgd2lkdGhEaWRDaGFuZ2U6IGZ1bmN0
aW9uKCkKKyAgICB3aWR0aERpZENoYW5nZSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRl
ZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgdmlzaWJpbGl0eURpZENoYW5n
ZTogZnVuY3Rpb24oKQorICAgIHZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAg
dGhpcy5fdG9vbGJhckl0ZW0uYWN0aXZhdGVkID0gdGhpcy52aXNpYmxlOwogICAgIH0KIH07CisK
K1dlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwuU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSA9ICJzZWxl
Y3RlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TbGlkZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TbGlkZXIuanMKaW5kZXggZjQ1YTBiMC4uMTU0NzcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2xpZGVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NsaWRlci5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzcgKzIzLDM1
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlNsaWRlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5TbGlkZXIgPSBjbGFzcyBTbGlk
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgdGhpcy5fZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1l
ID0gInNsaWRlciI7Ci0KLSAgICB0aGlzLl9rbm9iID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CisgICAgY29uc3RydWN0b3IoKQorICAg
IHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRoaXMuX3ZhbHVlID0gMDsKLSAgICB0aGlzLl9r
bm9iWCA9IDA7Ci0gICAgdGhpcy5fX21heFggPSAwOworICAgICAgICB0aGlzLl9lbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NOYW1lID0gInNsaWRlciI7CiAKLSAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
Im1vdXNlZG93biIsIHRoaXMpOwotfTsKKyAgICAgICAgdGhpcy5fa25vYiA9IHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpOwogCi1XZWJJbnNw
ZWN0b3IuU2xpZGVyLktub2JXaWR0aCA9IDEzOworICAgICAgICB0aGlzLl92YWx1ZSA9IDA7Cisg
ICAgICAgIHRoaXMuX2tub2JYID0gMDsKKyAgICAgICAgdGhpcy5fX21heFggPSAwOwogCi1XZWJJ
bnNwZWN0b3IuU2xpZGVyLnByb3RvdHlwZSA9IHsKLSAgICBjb250cnVjdG9yOiBXZWJJbnNwZWN0
b3IuU2xpZGVyLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUs
CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhp
cyk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB2
YWx1ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBzZXQgdmFsdWUodmFsdWUpCiAgICAgewpAQCAtNjksMTEgKzY3LDExIEBAIFdlYklu
c3BlY3Rvci5TbGlkZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLmRlbGVnYXRl
ICYmIHR5cGVvZiB0aGlzLmRlbGVnYXRlLnNsaWRlclZhbHVlRGlkQ2hhbmdlID09PSAiZnVuY3Rp
b24iKQogICAgICAgICAgICAgdGhpcy5kZWxlZ2F0ZS5zbGlkZXJWYWx1ZURpZENoYW5nZSh0aGlz
LCB2YWx1ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGhhbmRs
ZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVFdmVudChldmVudCkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewogICAgICAgICBjYXNlICJtb3VzZWRvd24iOgpA
QCAtODYsMTEgKzg0LDExIEBAIFdlYkluc3BlY3Rvci5TbGlkZXIucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5faGFuZGxlTW91c2V1cChldmVudCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2hhbmRs
ZU1vdXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlZG93bihldmVudCkK
ICAgICB7CiAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuX2tub2IpCiAgICAgICAg
ICAgICB0aGlzLnZhbHVlID0gKHRoaXMuX2xvY2FsUG9pbnRGb3JFdmVudChldmVudCkueCAtIDMp
IC8gdGhpcy5fbWF4WDsKQEAgLTEwMiwzMCArMTAwLDMwIEBAIFdlYkluc3BlY3Rvci5TbGlkZXIu
cHJvdG90eXBlID0gewogCiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1v
dmUiLCB0aGlzLCB0cnVlKTsKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
dXAiLCB0aGlzLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZW1vdmU6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVNb3VzZW1vdmUoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgZHggPSB0aGlzLl9sb2NhbFBvaW50Rm9yRXZlbnQoZXZlbnQpLnggLSB0aGlzLl9z
dGFydE1vdXNlWDsKICAgICAgICAgdmFyIHggPSBNYXRoLm1heChNYXRoLm1pbih0aGlzLl9zdGFy
dEtub2JYICsgZHgsIHRoaXMuX21heFgpLCAwKTsKIAogICAgICAgICB0aGlzLnZhbHVlID0geCAv
IHRoaXMuX21heFg7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTW91c2V1cDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNldXAoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImRyYWdnaW5nIik7CiAKICAgICAgICAgd2luZG93
LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMsIHRydWUpOwogICAgICAgICB3
aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMsIHRydWUpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2xvY2FsUG9pbnRGb3JFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2xvY2FsUG9pbnRGb3JFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIC8vIFdlIGNvbnZlcnQg
YWxsIGV2ZW50IGNvb3JkaW5hdGVzIGZyb20gcGFnZSBjb29yZGluYXRlcyB0byBsb2NhbCBjb29y
ZGluYXRlcyBzdWNoIHRoYXQgdGhlIHNsaWRlcgogICAgICAgICAvLyBtYXkgYmUgdHJhbnNmb3Jt
ZWQgdXNpbmcgQ1NTIFRyYW5zZm9ybXMgYW5kIGludGVyYWN0aW9uIHdvcmtzIGFzIGV4cGVjdGVk
LgogICAgICAgICByZXR1cm4gd2luZG93LndlYmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2Rl
KHRoaXMuX2VsZW1lbnQsIG5ldyBXZWJLaXRQb2ludChldmVudC5wYWdlWCwgZXZlbnQucGFnZVkp
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBfbWF4WCgpCiAgICAgewpAQCAtMTM1LDMgKzEz
Myw1IEBAIFdlYkluc3BlY3Rvci5TbGlkZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
dGhpcy5fX21heFg7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlNsaWRlci5Lbm9iV2lkdGgg
PSAxMzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggNTk4NWYxNy4uMGY3
NDg4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTIzLDk0ICsyMyw3
NiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGZ1bmN0aW9uKHNvdXJjZUNvZGUpCitXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yCiB7Ci0gICAgY29uc29sZS5hc3NlcnQoc291
cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlKTsKLQotICAgIHRoaXMu
X3NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlOwotICAgIHRoaXMuX2JyZWFrcG9pbnRNYXAgPSB7fTsK
LSAgICB0aGlzLl9pc3N1ZXNMaW5lTnVtYmVyTWFwID0gbmV3IE1hcDsKLSAgICB0aGlzLl93aWRn
ZXRNYXAgPSBuZXcgTWFwOwotICAgIHRoaXMuX2NvbnRlbnRQb3B1bGF0ZWQgPSBmYWxzZTsKLSAg
ICB0aGlzLl9pbnZhbGlkTGluZU51bWJlcnMgPSB7MDogdHJ1ZX07Ci0gICAgdGhpcy5faWdub3Jl
Q29udGVudERpZENoYW5nZSA9IDA7Ci0KLSAgICBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5jYWxs
KHRoaXMsIG51bGwsIG51bGwsIHRoaXMpOwotCi0gICAgdGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFu
ZGxlciA9IG51bGw7Ci0gICAgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yID0gbnVsbDsKLSAgICB0
aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yID0gbnVsbDsKLSAgICAKLSAgICB0aGlzLl9pc1Byb2Jh
Ymx5TWluaWZpZWQgPSBmYWxzZTsKLQotICAgIC8vIEZJWE1FOiBDdXJyZW50bHkgdGhpcyBqdXN0
IGp1bXBzIGJldHdlZW4gcmVzb3VyY2VzIGFuZCByZWxhdGVkIHNvdXJjZSBtYXAgcmVzb3VyY2Vz
LiBJdCBkb2Vzbid0ICJqdW1wIHRvIHN5bWJvbCIgeWV0LgotICAgIHRoaXMuX3VwZGF0ZVRva2Vu
VHJhY2tpbmdDb250cm9sbGVyU3RhdGUoKTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5TdHlsZUNsYXNzTmFtZSk7Cisg
ICAgY29uc3RydWN0b3Ioc291cmNlQ29kZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSk7CiAKLSAgICBp
ZiAodGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcpIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5EaXNh
YmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlz
KTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMuX2Jy
ZWFrcG9pbnRTdGF0dXNEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LlJl
c29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRTdGF0dXNEaWRDaGFuZ2UsIHRo
aXMpOwotICAgICAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl91cGRh
dGVCcmVha3BvaW50TG9jYXRpb24sIHRoaXMpOworICAgICAgICBzdXBlcigpOwogCi0gICAgICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhp
cy5fYnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVkLCB0aGlzLl9icmVha3BvaW50QWRkZWQsIHRo
aXMpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50UmVtb3ZlZCwg
dGhpcy5fYnJlYWtwb2ludFJlbW92ZWQsIHRoaXMpOwotICAgICAgICBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5BY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX2FjdGl2ZUNhbGxGcmFtZURp
ZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuZGVsZWdhdGUgPSB0aGlzOwogCi0gICAgICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgdGhpcy5fZGVidWdnZXJEaWRQYXVzZSwg
dGhpcyk7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIHRoaXMuX2Rl
YnVnZ2VyRGlkUmVzdW1lLCB0aGlzKTsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lKQotICAgICAgICAgICAgdGhpcy5fZGVidWdnZXJEaWRQ
YXVzZSgpOworICAgICAgICB0aGlzLl9zb3VyY2VDb2RlID0gc291cmNlQ29kZTsKKyAgICAgICAg
dGhpcy5fYnJlYWtwb2ludE1hcCA9IHt9OworICAgICAgICB0aGlzLl9pc3N1ZXNMaW5lTnVtYmVy
TWFwID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fd2lkZ2V0TWFwID0gbmV3IE1hcDsKKyAgICAg
ICAgdGhpcy5fY29udGVudFBvcHVsYXRlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9pbnZhbGlk
TGluZU51bWJlcnMgPSB7MDogdHJ1ZX07CisgICAgICAgIHRoaXMuX2lnbm9yZUNvbnRlbnREaWRD
aGFuZ2UgPSAwOwogCi0gICAgICAgIHRoaXMuX2FjdGl2ZUNhbGxGcmFtZURpZENoYW5nZSgpOwot
ICAgIH0KKyAgICAgICAgdGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlciA9IG51bGw7CisgICAg
ICAgIHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciA9IG51bGw7CisgICAgICAgIHRoaXMuX2Jhc2lj
QmxvY2tBbm5vdGF0b3IgPSBudWxsOwogCi0gICAgV2ViSW5zcGVjdG9yLmlzc3VlTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Jc3N1ZU1hbmFnZXIuRXZlbnQuSXNzdWVXYXNB
ZGRlZCwgdGhpcy5faXNzdWVXYXNBZGRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2lzUHJvYmFi
bHlNaW5pZmllZCA9IGZhbHNlOwogCi0gICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2UgfHwgdGhpcy5fc291cmNlQ29kZS5zb3Vy
Y2VNYXBzLmxlbmd0aCA+IDApCi0gICAgICAgIFdlYkluc3BlY3Rvci5ub3RpZmljYXRpb25zLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLk5vdGlmaWNhdGlvbi5HbG9iYWxNb2RpZmllcktl
eXNEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVRva2VuVHJhY2tpbmdDb250cm9sbGVyU3RhdGUsIHRo
aXMpOwotICAgIGVsc2UKLSAgICAgICAgdGhpcy5fc291cmNlQ29kZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LlNvdXJjZU1hcEFkZGVkLCB0aGlzLl9zb3Vy
Y2VDb2RlU291cmNlTWFwQWRkZWQsIHRoaXMpOworICAgICAgICAvLyBGSVhNRTogQ3VycmVudGx5
IHRoaXMganVzdCBqdW1wcyBiZXR3ZWVuIHJlc291cmNlcyBhbmQgcmVsYXRlZCBzb3VyY2UgbWFw
IHJlc291cmNlcy4gSXQgZG9lc24ndCAianVtcCB0byBzeW1ib2wiIHlldC4KKyAgICAgICAgdGhp
cy5fdXBkYXRlVG9rZW5UcmFja2luZ0NvbnRyb2xsZXJTdGF0ZSgpOwogCi0gICAgc291cmNlQ29k
ZS5yZXF1ZXN0Q29udGVudCgpLnRoZW4odGhpcy5fY29udGVudEF2YWlsYWJsZS5iaW5kKHRoaXMp
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNvdXJjZS1jb2RlIik7CiAK
LSAgICAvLyBGSVhNRTogQ21kK0wgc2hvcmN1dCBkb2Vzbid0IGFjdHVhbGx5IHdvcmsuCi0gICAg
bmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmQsICJMIiwgdGhpcy5zaG93R29Ub0xpbmVEaWFsb2cuYmlu
ZCh0aGlzKSwgdGhpcy5lbGVtZW50KTsKLSAgICBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwgIkci
LCB0aGlzLnNob3dHb1RvTGluZURpYWxvZy5iaW5kKHRoaXMpLCB0aGlzLmVsZW1lbnQpOwotfTsK
KyAgICAgICAgaWYgKHRoaXMuX3N1cHBvcnRzRGVidWdnaW5nKSB7CisgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRTdGF0dXNE
aWRDaGFuZ2UsIHRoaXMpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVE
aWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRTdGF0dXNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3Bv
aW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuTG9j
YXRpb25EaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRMb2NhdGlvbiwgdGhpcyk7CisK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERp
ZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRBZGRlZCwgdGhpcy5fYnJl
YWtwb2ludEFkZGVkLCB0aGlzKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1h
bmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LkJyZWFrcG9pbnRSZW1vdmVkLCB0aGlzLl9icmVha3BvaW50UmVtb3ZlZCwgdGhpcyk7CisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2Us
IHRoaXMuX2FjdGl2ZUNhbGxGcmFtZURpZENoYW5nZSwgdGhpcyk7CisKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgdGhpcy5fZGVidWdnZXJEaWRQYXVzZSwgdGhp
cyk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCB0aGlzLl9k
ZWJ1Z2dlckRpZFJlc3VtZSwgdGhpcyk7CisgICAgICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgdGhpcy5fZGVi
dWdnZXJEaWRQYXVzZSgpOworCisgICAgICAgICAgICB0aGlzLl9hY3RpdmVDYWxsRnJhbWVEaWRD
aGFuZ2UoKTsKKyAgICAgICAgfQogCi0vLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5P
YmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYkluc3BlY3Rvci5PYmpl
Y3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dEVkaXRvcik7CisgICAgICAgIFdlYkluc3BlY3Rvci5pc3N1ZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSXNzdWVNYW5hZ2VyLkV2ZW50Lklzc3VlV2FzQWRkZWQs
IHRoaXMuX2lzc3VlV2FzQWRkZWQsIHRoaXMpOwogCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRl
eHRFZGl0b3IuU3R5bGVDbGFzc05hbWUgPSAic291cmNlLWNvZGUiOwotV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yLkxpbmVFcnJvclN0eWxlQ2xhc3NOYW1lID0gImVycm9yIjsKLVdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5MaW5lV2FybmluZ1N0eWxlQ2xhc3NOYW1l
ID0gIndhcm5pbmciOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLlBvcG92ZXJE
ZWJ1Z2dlckNvbnRlbnRTdHlsZUNsYXNzTmFtZSA9ICJkZWJ1Z2dlci1wb3BvdmVyLWNvbnRlbnQi
OwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkhvdmVyZWRFeHByZXNzaW9uSGln
aGxpZ2h0U3R5bGVDbGFzc05hbWUgPSAiaG92ZXJlZC1leHByZXNzaW9uLWhpZ2hsaWdodCI7Ci1X
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRHVyYXRpb25Ub01vdXNlT3ZlclRva2Vu
VG9NYWtlSG92ZXJlZFRva2VuID0gNTAwOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLkR1cmF0aW9uVG9Nb3VzZU91dE9mSG92ZXJlZFRva2VuVG9SZWxlYXNlID0gMTAwMDsKLVdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5EdXJhdGlvblRvVXBkYXRlVHlwZVRva2Vu
c0FmdGVyU2Nyb2xsaW5nID0gMTAwOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
LkF1dG9Gb3JtYXRNaW5pbXVtTGluZUxlbmd0aCA9IDUwMDsKLVdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dEVkaXRvci5XaWRnZXRDb250YWluc011bHRpcGxlSXNzdWVzU3ltYm9sID0gU3ltYm9s
KCJzb3VyY2UtY29kZS13aWRnZXQtY29udGFpbnMtbXVsdGlwbGUtaXNzdWVzIik7CisgICAgICAg
IGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJl
c291cmNlIHx8IHRoaXMuX3NvdXJjZUNvZGUuc291cmNlTWFwcy5sZW5ndGggPiAwKQorICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuTm90aWZpY2F0aW9uLkdsb2JhbE1vZGlmaWVyS2V5c0RpZENoYW5nZSwgdGhpcy5fdXBk
YXRlVG9rZW5UcmFja2luZ0NvbnRyb2xsZXJTdGF0ZSwgdGhpcyk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZS5FdmVudC5Tb3VyY2VNYXBBZGRlZCwgdGhpcy5fc291cmNlQ29kZVNvdXJjZU1h
cEFkZGVkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkV2ZW50
ID0gewotICAgIENvbnRlbnRXaWxsUG9wdWxhdGU6ICJzb3VyY2UtY29kZS10ZXh0LWVkaXRvci1j
b250ZW50LXdpbGwtcG9wdWxhdGUiLAotICAgIENvbnRlbnREaWRQb3B1bGF0ZTogInNvdXJjZS1j
b2RlLXRleHQtZWRpdG9yLWNvbnRlbnQtZGlkLXBvcHVsYXRlIgotfTsKKyAgICAgICAgc291cmNl
Q29kZS5yZXF1ZXN0Q29udGVudCgpLnRoZW4odGhpcy5fY29udGVudEF2YWlsYWJsZS5iaW5kKHRo
aXMpKTsKIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLAorICAg
ICAgICAvLyBGSVhNRTogQ21kK0wgc2hvcmN1dCBkb2Vzbid0IGFjdHVhbGx5IHdvcmsuCisgICAg
ICAgIG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9h
cmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kLCAiTCIsIHRoaXMuc2hvd0dvVG9MaW5lRGlhbG9n
LmJpbmQodGhpcyksIHRoaXMuZWxlbWVudCk7CisgICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250
cm9sLCAiRyIsIHRoaXMuc2hvd0dvVG9MaW5lRGlhbG9nLmJpbmQodGhpcyksIHRoaXMuZWxlbWVu
dCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgc291cmNlQ29kZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZTsKLSAgICB9LAorICAgIH0KIAotICAg
IHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3IucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7CiAKQEAgLTEyNSw5ICsx
MDcsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciB8fCB0aGlzLl9iYXNpY0Js
b2NrQW5ub3RhdG9yKQogICAgICAgICAgICAgICAgIHRoaXMuX3NldFR5cGVUb2tlbkFubm90YXRv
ckVuYWJsZWRTdGF0ZShmYWxzZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGhp
ZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IuVGV4dEVkaXRvci5wcm90b3R5cGUuaGlkZGVuLmNhbGwodGhpcyk7CiAKQEAgLTE0MSw5ICsx
MjMsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yLnBhdXNlKCk7CiAgICAgICAgIGlm
ICh0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yKQogICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9j
a0Fubm90YXRvci5wYXVzZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgY2xvc2U6IGZ1bmN0aW9u
KCkKKyAgICBjbG9zZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc3VwcG9ydHNEZWJ1Z2dp
bmcpIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5CcmVha3BvaW50LnJlbW92ZUV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5n
ZSwgdGhpcy5fYnJlYWtwb2ludFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7CkBAIC0xNjYsOSArMTQ4
LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICBXZWJJbnNwZWN0b3Iubm90aWZpY2F0aW9ucy5yZW1vdmVFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Ob3RpZmljYXRpb24uR2xvYmFsTW9kaWZpZXJLZXlzRGlkQ2hhbmdlLCB0aGlz
Ll91cGRhdGVUb2tlblRyYWNraW5nQ29udHJvbGxlclN0YXRlLCB0aGlzKTsKICAgICAgICAgdGhp
cy5fc291cmNlQ29kZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
LkV2ZW50LlNvdXJjZU1hcEFkZGVkLCB0aGlzLl9zb3VyY2VDb2RlU291cmNlTWFwQWRkZWQsIHRo
aXMpOwotICAgIH0sCisgICAgfQogCi0gICAgY2FuQmVGb3JtYXR0ZWQ6IGZ1bmN0aW9uKCkKKyAg
ICBjYW5CZUZvcm1hdHRlZCgpCiAgICAgewogICAgICAgICAvLyBDdXJyZW50bHkgd2UgYXNzdW1l
IHRoYXQgc291cmNlIG1hcCByZXNvdXJjZXMgYXJlIGZvcm1hdHRlZCBob3cgdGhlIGF1dGhvciB3
YW50cyBpdC4KICAgICAgICAgLy8gV2UgY291bGQgYWxsb3cgc291cmNlIG1hcCByZXNvdXJjZXMg
dG8gYmUgZm9ybWF0dGVkLCB3ZSB3b3VsZCB0aGVuIG5lZWQgdG8gbWFrZQpAQCAtMTc4LDE0ICsx
NjAsMTQgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3IucHJvdG90eXBlLmNhbkJlRm9ybWF0dGVkLmNhbGwodGhpcyk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBjYW5TaG93VHlwZUFubm90YXRpb25zOiBmdW5jdGlvbigpCisgICAgY2Fu
U2hvd1R5cGVBbm5vdGF0aW9ucygpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl90eXBl
VG9rZW5Bbm5vdGF0b3I7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjdXN0b21QZXJmb3JtU2VhcmNo
OiBmdW5jdGlvbihxdWVyeSkKKyAgICBjdXN0b21QZXJmb3JtU2VhcmNoKHF1ZXJ5KQogICAgIHsK
ICAgICAgICAgZnVuY3Rpb24gc2VhcmNoUmVzdWx0Q2FsbGJhY2soZXJyb3IsIG1hdGNoZXMpCiAg
ICAgICAgIHsKQEAgLTIzMyw5ICsyMTUsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICBlbHNlIGlmICh0aGlzLl9zb3VyY2VDb2RlIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKICAgICAgICAgICAgIERlYnVnZ2VyQWdlbnQu
c2VhcmNoSW5Db250ZW50KHRoaXMuX3NvdXJjZUNvZGUuaWQsIHF1ZXJ5LCBmYWxzZSwgZmFsc2Us
IHNlYXJjaFJlc3VsdENhbGxiYWNrLmJpbmQodGhpcykpOwogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9LAorICAgIH0KIAotICAgIHNob3dHb1RvTGluZURpYWxvZzogZnVuY3Rpb24oKQorICAg
IHNob3dHb1RvTGluZURpYWxvZygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2dvVG9MaW5l
RGlhbG9nKSB7CiAgICAgICAgICAgICB0aGlzLl9nb1RvTGluZURpYWxvZyA9IG5ldyBXZWJJbnNw
ZWN0b3IuR29Ub0xpbmVEaWFsb2c7CkBAIC0yNDMsMjYgKzIyNSwyNiBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
dGhpcy5fZ29Ub0xpbmVEaWFsb2cucHJlc2VudCh0aGlzLmVsZW1lbnQpOwotICAgIH0sCisgICAg
fQogCi0gICAgaXNHb1RvTGluZURpYWxvZ1ZhbHVlVmFsaWQ6IGZ1bmN0aW9uKGdvVG9MaW5lRGlh
bG9nLCBsaW5lTnVtYmVyKQorICAgIGlzR29Ub0xpbmVEaWFsb2dWYWx1ZVZhbGlkKGdvVG9MaW5l
RGlhbG9nLCBsaW5lTnVtYmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuICFpc05hTihsaW5lTnVt
YmVyKSAmJiBsaW5lTnVtYmVyID4gMCAmJiBsaW5lTnVtYmVyIDw9IHRoaXMubGluZUNvdW50Owot
ICAgIH0sCisgICAgfQogCi0gICAgZ29Ub0xpbmVEaWFsb2dWYWx1ZVdhc1ZhbGlkYXRlZDogZnVu
Y3Rpb24oZ29Ub0xpbmVEaWFsb2csIGxpbmVOdW1iZXIpCisgICAgZ29Ub0xpbmVEaWFsb2dWYWx1
ZVdhc1ZhbGlkYXRlZChnb1RvTGluZURpYWxvZywgbGluZU51bWJlcikKICAgICB7CiAgICAgICAg
IHZhciBwb3NpdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKGxpbmVO
dW1iZXIgLSAxLCAwKTsKICAgICAgICAgdmFyIHJhbmdlID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0
UmFuZ2UobGluZU51bWJlciAtIDEsIDAsIGxpbmVOdW1iZXIsIDApOwogICAgICAgICB0aGlzLnJl
dmVhbFBvc2l0aW9uKHBvc2l0aW9uLCByYW5nZSwgZmFsc2UsIHRydWUpOwotICAgIH0sCisgICAg
fQogCi0gICAgZ29Ub0xpbmVEaWFsb2dXYXNEaXNtaXNzZWQ6IGZ1bmN0aW9uKCkKKyAgICBnb1Rv
TGluZURpYWxvZ1dhc0Rpc21pc3NlZCgpCiAgICAgewogICAgICAgICB0aGlzLmZvY3VzKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjb250ZW50RGlkQ2hhbmdlOiBmdW5jdGlvbihyZXBsYWNlZFJh
bmdlcywgbmV3UmFuZ2VzKQorICAgIGNvbnRlbnREaWRDaGFuZ2UocmVwbGFjZWRSYW5nZXMsIG5l
d1JhbmdlcykKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlw
ZS5jb250ZW50RGlkQ2hhbmdlLmNhbGwodGhpcywgcmVwbGFjZWRSYW5nZXMsIG5ld1Jhbmdlcyk7
CiAKQEAgLTI3Nyw5ICsyNTksOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yID0gbnVs
bDsKICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IgPSBudWxsOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0b2dnbGVUeXBlQW5ub3RhdGlvbnM6IGZ1bmN0aW9u
KCkKKyAgICB0b2dnbGVUeXBlQW5ub3RhdGlvbnMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll90eXBlVG9rZW5Bbm5vdGF0b3IpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yOTAs
OSArMjcyLDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUobmV3
QWN0aXZhdGVkU3RhdGUpOwogICAgICAgICByZXR1cm4gbmV3QWN0aXZhdGVkU3RhdGU7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBzaG93UG9wb3ZlckZvclR5cGVzOiBmdW5jdGlvbih0eXBlcywgYm91
bmRzLCB0aXRsZSkKKyAgICBzaG93UG9wb3ZlckZvclR5cGVzKHR5cGVzLCBib3VuZHMsIHRpdGxl
KQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKICAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAib2JqZWN0IGV4cGFuZGFibGUiOwpA
QCAtMzA4LDExICsyOTAsMTEgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChzZWN0aW9uLmVsZW1lbnQp
OwogCiAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyKGNvbnRlbnQsIGJvdW5kcyk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHByZXR0eVByaW50OiBmdW5jdGlvbihw
cmV0dHkpCisgICAgcHJldHR5UHJpbnQocHJldHR5KQogICAgIHsKICAgICAgICAgLy8gVGhlIGFu
bm90YXRvcnMgbXVzdCBiZSBjbGVhcmVkIGJlZm9yZSBwcmV0dHkgcHJpbnRpbmcgdGFrZXMgcGxh
Y2UgYW5kIHJlc3VtZWQgCiAgICAgICAgIC8vIGFmdGVyIHNvIHRoYXQgdGhleSBjbGVhciB0aGVp
ciBhbm5vdGF0aW9ucyBpbiBhIGtub3duIHN0YXRlIGFuZCBpbnNlcnQgbmV3IGFubm90YXRpb25z
IApAQCAtMzMyLDQ3ICszMTQsNDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9y
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3Ig
fHwgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKICAgICAgICAgICAgICAgICB0aGlzLl9zZXRU
eXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFsc2UpOwogICAgICAgICB9Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdW5mb3JtYXR0ZWRMaW5lSW5mb0ZvckVk
aXRvckxpbmVJbmZvOiBmdW5jdGlvbihsaW5lSW5mbykKKyAgICBfdW5mb3JtYXR0ZWRMaW5lSW5m
b0ZvckVkaXRvckxpbmVJbmZvKGxpbmVJbmZvKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZm9y
bWF0dGVyU291cmNlTWFwKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0dGVyU291cmNl
TWFwLmZvcm1hdHRlZFRvT3JpZ2luYWwobGluZUluZm8ubGluZU51bWJlciwgbGluZUluZm8uY29s
dW1uTnVtYmVyKTsKICAgICAgICAgcmV0dXJuIGxpbmVJbmZvOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3NvdXJjZUNvZGVMb2NhdGlvbkZvckVkaXRvclBvc2l0aW9uOiBmdW5jdGlvbihwb3NpdGlv
bikKKyAgICBfc291cmNlQ29kZUxvY2F0aW9uRm9yRWRpdG9yUG9zaXRpb24ocG9zaXRpb24pCiAg
ICAgewogICAgICAgICB2YXIgbGluZUluZm8gPSB7bGluZU51bWJlcjogcG9zaXRpb24ubGluZSwg
Y29sdW1uTnVtYmVyOiBwb3NpdGlvbi5jaH07CiAgICAgICAgIHZhciB1bmZvcm1hdHRlZExpbmVJ
bmZvID0gdGhpcy5fdW5mb3JtYXR0ZWRMaW5lSW5mb0ZvckVkaXRvckxpbmVJbmZvKGxpbmVJbmZv
KTsKICAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRp
b24odW5mb3JtYXR0ZWRMaW5lSW5mby5saW5lTnVtYmVyLCB1bmZvcm1hdHRlZExpbmVJbmZvLmNv
bHVtbk51bWJlcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZWRpdG9yTGluZUluZm9Gb3JTb3Vy
Y2VDb2RlTG9jYXRpb246IGZ1bmN0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICBfZWRpdG9y
TGluZUluZm9Gb3JTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291
cmNlTWFwUmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4ge2xpbmVOdW1iZXI6IHNvdXJjZUNv
ZGVMb2NhdGlvbi5kaXNwbGF5TGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBzb3VyY2VDb2RlTG9j
YXRpb24uZGlzcGxheUNvbHVtbk51bWJlcn07CiAgICAgICAgIHJldHVybiB7bGluZU51bWJlcjog
c291cmNlQ29kZUxvY2F0aW9uLmZvcm1hdHRlZExpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogc291
cmNlQ29kZUxvY2F0aW9uLmZvcm1hdHRlZENvbHVtbk51bWJlcn07Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfYnJlYWtwb2ludEZvckVkaXRvckxpbmVJbmZvOiBmdW5jdGlvbihsaW5lSW5mbykKKyAg
ICBfYnJlYWtwb2ludEZvckVkaXRvckxpbmVJbmZvKGxpbmVJbmZvKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9icmVha3BvaW50TWFwW2xpbmVJbmZvLmxpbmVOdW1iZXJdKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50TWFwW2xpbmVJ
bmZvLmxpbmVOdW1iZXJdW2xpbmVJbmZvLmNvbHVtbk51bWJlcl07Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfYWRkQnJlYWtwb2ludFdpdGhFZGl0b3JMaW5lSW5mbzogZnVuY3Rpb24oYnJlYWtwb2lu
dCwgbGluZUluZm8pCisgICAgX2FkZEJyZWFrcG9pbnRXaXRoRWRpdG9yTGluZUluZm8oYnJlYWtw
b2ludCwgbGluZUluZm8pCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2JyZWFrcG9pbnRNYXBb
bGluZUluZm8ubGluZU51bWJlcl0pCiAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50TWFwW2xp
bmVJbmZvLmxpbmVOdW1iZXJdID0ge307CiAKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hcFts
aW5lSW5mby5saW5lTnVtYmVyXVtsaW5lSW5mby5jb2x1bW5OdW1iZXJdID0gYnJlYWtwb2ludDsK
LSAgICB9LAorICAgIH0KIAotICAgIF9yZW1vdmVCcmVha3BvaW50V2l0aEVkaXRvckxpbmVJbmZv
OiBmdW5jdGlvbihicmVha3BvaW50LCBsaW5lSW5mbykKKyAgICBfcmVtb3ZlQnJlYWtwb2ludFdp
dGhFZGl0b3JMaW5lSW5mbyhicmVha3BvaW50LCBsaW5lSW5mbykKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgPT09IHRoaXMuX2JyZWFrcG9pbnRNYXBbbGluZUluZm8u
bGluZU51bWJlcl1bbGluZUluZm8uY29sdW1uTnVtYmVyXSk7CiAKQEAgLTM4MCw5ICszNjIsOSBA
QCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGlmIChpc0VtcHR5T2JqZWN0KHRoaXMuX2JyZWFrcG9pbnRNYXBbbGluZUluZm8ubGluZU51
bWJlcl0pKQogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2JyZWFrcG9pbnRNYXBbbGluZUluZm8u
bGluZU51bWJlcl07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudFdpbGxQb3B1bGF0ZTog
ZnVuY3Rpb24oY29udGVudCkKKyAgICBfY29udGVudFdpbGxQb3B1bGF0ZShjb250ZW50KQogICAg
IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnRXaWxsUG9wdWxhdGUpOwogCkBAIC00MzEs
OSArNDEzLDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICBsYXN0TmV3bGluZUluZGV4ID0gbmV4dE5ld2xpbmVJbmRleCAr
IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9jb250
ZW50RGlkUG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBfY29udGVudERpZFBvcHVsYXRlKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRQb3B1bGF0ZWQgPSB0cnVlOwogCkBAIC00NDYsOSAr
NDI4LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fcmVpbnNlcnRBbGxJc3N1ZXMoKTsKIAogICAgICAgICB0aGlzLl91cGRh
dGVFZGl0YWJsZU1hcmtlcnMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3B1bGF0ZVdpdGhD
b250ZW50OiBmdW5jdGlvbihjb250ZW50KQorICAgIF9wb3B1bGF0ZVdpdGhDb250ZW50KGNvbnRl
bnQpCiAgICAgewogICAgICAgICBjb250ZW50ID0gY29udGVudCB8fCAiIjsKIApAQCAtNDY0LDkg
KzQ0Niw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9jb250ZW50RGlkUG9wdWxhdGUoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9jb250ZW50QXZhaWxhYmxlOiBmdW5jdGlvbihwYXJhbWV0ZXJzKQor
ICAgIF9jb250ZW50QXZhaWxhYmxlKHBhcmFtZXRlcnMpCiAgICAgewogICAgICAgICAvLyBSZXR1
cm4gaWYgcmVzb3VyY2UgaXMgbm90IGF2YWlsYWJsZS4KICAgICAgICAgaWYgKHBhcmFtZXRlcnMu
ZXJyb3IpCkBAIC00ODcsMjMgKzQ2OSwyMyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pbnZhbGlkTGluZU51bWJlcnMgPSB7
fTsKIAogICAgICAgICB0aGlzLl9wb3B1bGF0ZVdpdGhDb250ZW50KGNvbnRlbnQpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2JyZWFrcG9pbnRTdGF0dXNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAg
dGhpcy5fdXBkYXRlQnJlYWtwb2ludFN0YXR1cyhldmVudC50YXJnZXQpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2JyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIF9i
cmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcpOwogCiAgICAgICAgIHZhciBicmVha3BvaW50cyA9
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNGb3JTb3VyY2VDb2RlKHRo
aXMuX3NvdXJjZUNvZGUpOwogICAgICAgICBmb3IgKHZhciBicmVha3BvaW50IG9mIGJyZWFrcG9p
bnRzKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlQnJlYWtwb2ludFN0YXR1cyhicmVha3BvaW50
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVCcmVha3BvaW50U3RhdHVzOiBmdW5jdGlv
bihicmVha3BvaW50KQorICAgIF91cGRhdGVCcmVha3BvaW50U3RhdHVzKGJyZWFrcG9pbnQpCiAg
ICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zdXBwb3J0c0RlYnVnZ2luZyk7CiAK
QEAgLTUxNSw5ICs0OTcsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJv
dG90eXBlID0gewogCiAgICAgICAgIHZhciBsaW5lSW5mbyA9IHRoaXMuX2VkaXRvckxpbmVJbmZv
Rm9yU291cmNlQ29kZUxvY2F0aW9uKGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uKTsKICAg
ICAgICAgdGhpcy5zZXRCcmVha3BvaW50SW5mb0ZvckxpbmVBbmRDb2x1bW4obGluZUluZm8ubGlu
ZU51bWJlciwgbGluZUluZm8uY29sdW1uTnVtYmVyLCB0aGlzLl9icmVha3BvaW50SW5mb0ZvckJy
ZWFrcG9pbnQoYnJlYWtwb2ludCkpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUJyZWFr
cG9pbnRMb2NhdGlvbjogZnVuY3Rpb24oZXZlbnQpCisgICAgX3VwZGF0ZUJyZWFrcG9pbnRMb2Nh
dGlvbihldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3N1cHBvcnRz
RGVidWdnaW5nKTsKIApAQCAtNTYxLDkgKzU0Myw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2lu
dFdpdGhFZGl0b3JMaW5lSW5mbyhicmVha3BvaW50LCBvbGRMaW5lSW5mbyk7CiAgICAgICAgIHRo
aXMuX2FkZEJyZWFrcG9pbnRXaXRoRWRpdG9yTGluZUluZm8oYnJlYWtwb2ludCwgbmV3TGluZUlu
Zm8pOwotICAgIH0sCisgICAgfQogCi0gICAgX2JyZWFrcG9pbnRBZGRlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2JyZWFrcG9pbnRBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX3N1cHBvcnRzRGVidWdnaW5nKTsKIApAQCAtNTgwLDkgKzU2Miw5IEBAIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZh
ciBsaW5lSW5mbyA9IHRoaXMuX2VkaXRvckxpbmVJbmZvRm9yU291cmNlQ29kZUxvY2F0aW9uKGJy
ZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uKTsKICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2lu
dFdpdGhFZGl0b3JMaW5lSW5mbyhicmVha3BvaW50LCBsaW5lSW5mbyk7CiAgICAgICAgIHRoaXMu
c2V0QnJlYWtwb2ludEluZm9Gb3JMaW5lQW5kQ29sdW1uKGxpbmVJbmZvLmxpbmVOdW1iZXIsIGxp
bmVJbmZvLmNvbHVtbk51bWJlciwgdGhpcy5fYnJlYWtwb2ludEluZm9Gb3JCcmVha3BvaW50KGJy
ZWFrcG9pbnQpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9icmVha3BvaW50UmVtb3ZlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX2JyZWFrcG9pbnRSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcpOwogCkBAIC01OTksOSAr
NTgxLDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdmFyIGxpbmVJbmZvID0gdGhpcy5fZWRpdG9yTGluZUluZm9Gb3JTb3VyY2VDb2Rl
TG9jYXRpb24oYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24pOwogICAgICAgICB0aGlzLl9y
ZW1vdmVCcmVha3BvaW50V2l0aEVkaXRvckxpbmVJbmZvKGJyZWFrcG9pbnQsIGxpbmVJbmZvKTsK
ICAgICAgICAgdGhpcy5zZXRCcmVha3BvaW50SW5mb0ZvckxpbmVBbmRDb2x1bW4obGluZUluZm8u
bGluZU51bWJlciwgbGluZUluZm8uY29sdW1uTnVtYmVyLCBudWxsKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9hY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBfYWN0aXZl
Q2FsbEZyYW1lRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X3N1cHBvcnRzRGVidWdnaW5nKTsKIApAQCAtNjQyLDkgKzYyNCw5IEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9wb3B1
bGF0ZVdpdGhJbmxpbmVTY3JpcHRDb250ZW50KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHRoaXMuX3BvcHVsYXRlV2l0aFNjcmlwdENvbnRlbnQoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9hY3RpdmVDYWxsRnJhbWVTb3VyY2VDb2RlTG9jYXRpb25DaGFuZ2VkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfYWN0aXZlQ2FsbEZyYW1lU291cmNlQ29kZUxvY2F0aW9uQ2hhbmdlZChldmVudCkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFpc05hTih0aGlzLmV4ZWN1dGlvbkxpbmVO
dW1iZXIpKTsKICAgICAgICAgaWYgKGlzTmFOKHRoaXMuZXhlY3V0aW9uTGluZU51bWJlcikpCkBA
IC02NTYsOSArNjM4LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdmFyIGxpbmVJbmZvID0gdGhpcy5fZWRpdG9yTGluZUluZm9Gb3JT
b3VyY2VDb2RlTG9jYXRpb24odGhpcy5fYWN0aXZlQ2FsbEZyYW1lU291cmNlQ29kZUxvY2F0aW9u
KTsKICAgICAgICAgdGhpcy5leGVjdXRpb25MaW5lTnVtYmVyID0gbGluZUluZm8ubGluZU51bWJl
cjsKICAgICAgICAgdGhpcy5leGVjdXRpb25Db2x1bW5OdW1iZXIgPSBsaW5lSW5mby5jb2x1bW5O
dW1iZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVXaXRoSW5saW5lU2NyaXB0Q29u
dGVudDogZnVuY3Rpb24oKQorICAgIF9wb3B1bGF0ZVdpdGhJbmxpbmVTY3JpcHRDb250ZW50KCkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5f
ZnVsbENvbnRlbnRQb3B1bGF0ZWQpOwpAQCAtNjg5LDggKzY3MSw4IEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5f
ZnVsbENvbnRlbnRQb3B1bGF0ZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
ICAgICBjb25zdCBzY3JpcHRPcGVuVGFnID0gIjxzY3JpcHQ+IjsKLSAgICAgICAgICAgIGNvbnN0
IHNjcmlwdENsb3NlVGFnID0gIjwvc2NyaXB0PiI7CisgICAgICAgICAgICB2YXIgc2NyaXB0T3Bl
blRhZyA9ICI8c2NyaXB0PiI7CisgICAgICAgICAgICB2YXIgc2NyaXB0Q2xvc2VUYWcgPSAiPC9z
Y3JpcHQ+IjsKIAogICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSAiIjsKICAgICAgICAgICAgIHZh
ciBsaW5lTnVtYmVyID0gMDsKQEAgLTcyOCw5ICs3MTAsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB2YXIgYm91bmRTY3JpcHRDb250
ZW50QXZhaWxhYmxlID0gc2NyaXB0Q29udGVudEF2YWlsYWJsZS5iaW5kKHRoaXMpOwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBz
Y3JpcHRzW2ldLnJlcXVlc3RDb250ZW50KCkudGhlbihib3VuZFNjcmlwdENvbnRlbnRBdmFpbGFi
bGUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BvcHVsYXRlV2l0aFNjcmlwdENvbnRlbnQ6IGZ1
bmN0aW9uKCkKKyAgICBfcG9wdWxhdGVXaXRoU2NyaXB0Q29udGVudCgpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlJlc291cmNlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2Z1bGxDb250ZW50UG9w
dWxhdGVkKTsKQEAgLTc2Myw5ICs3NDUsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXF1ZXN0aW5nU2NyaXB0Q29udGVu
dCA9IHRydWU7CiAKICAgICAgICAgc2NyaXB0c1swXS5yZXF1ZXN0Q29udGVudCgpLnRoZW4oc2Ny
aXB0Q29udGVudEF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9t
YXRjaGVzU291cmNlQ29kZUxvY2F0aW9uOiBmdW5jdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pCisg
ICAgX21hdGNoZXNTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291
cmNlTWFwUmVzb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gc291cmNlQ29kZUxvY2F0aW9uLmRp
c3BsYXlTb3VyY2VDb2RlID09PSB0aGlzLl9zb3VyY2VDb2RlOwpAQCAtNzc0LDkgKzc1Niw5IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKICAg
ICAgICAgICAgIHJldHVybiBzb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0gdGhpcy5f
c291cmNlQ29kZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAg
X21hdGNoZXNCcmVha3BvaW50OiBmdW5jdGlvbihicmVha3BvaW50KQorICAgIF9tYXRjaGVzQnJl
YWtwb2ludChicmVha3BvaW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5f
c3VwcG9ydHNEZWJ1Z2dpbmcpOwogICAgICAgICBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZSkKQEAgLTc4Niw5ICs3NjgsOSBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpCiAgICAg
ICAgICAgICByZXR1cm4gYnJlYWtwb2ludC51cmwgPT09IHRoaXMuX3NvdXJjZUNvZGUudXJsIHx8
IGJyZWFrcG9pbnQuc2NyaXB0SWRlbnRpZmllciA9PT0gdGhpcy5fc291cmNlQ29kZS5pZDsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX21hdGNoZXNJc3N1ZTog
ZnVuY3Rpb24oaXNzdWUpCisgICAgX21hdGNoZXNJc3N1ZShpc3N1ZSkKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlKQog
ICAgICAgICAgICAgcmV0dXJuIGlzc3VlLnVybCA9PT0gdGhpcy5fc291cmNlQ29kZS51cmw7CkBA
IC03OTYsMTggKzc3OCwxOCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJv
dG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5TY3JpcHQpCiAgICAgICAgICAgICByZXR1cm4gaXNzdWUudXJsID09PSB0aGlzLl9z
b3VyY2VDb2RlLnVybDsKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2lzc3VlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9pc3N1ZVdhc0FkZGVkKGV2
ZW50KQogICAgIHsKICAgICAgICAgdmFyIGlzc3VlID0gZXZlbnQuZGF0YS5pc3N1ZTsKICAgICAg
ICAgaWYgKCF0aGlzLl9tYXRjaGVzSXNzdWUoaXNzdWUpKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHRoaXMuX2FkZElzc3VlKGlzc3VlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9h
ZGRJc3N1ZTogZnVuY3Rpb24oaXNzdWUpCisgICAgX2FkZElzc3VlKGlzc3VlKQogICAgIHsKICAg
ICAgICAgLy8gRklYTUU6IElzc3VlIHNob3VsZCBoYXZlIGEgU291cmNlQ29kZUxvY2F0aW9uLgog
ICAgICAgICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fc291cmNlQ29kZS5jcmVhdGVT
b3VyY2VDb2RlTG9jYXRpb24oaXNzdWUubGluZU51bWJlciwgaXNzdWUuY29sdW1uTnVtYmVyKTsK
QEAgLTg0Myw5ICs4MjUsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJv
dG90eXBlID0gewogCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVJc3N1ZVdpZGdldEZvcklzc3Vl
cyh3aWRnZXQsIGxpbmVOdW1iZXJJc3N1ZXMpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaXNzdWVXaWRnZXRGb3JMaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIF9pc3N1
ZVdpZGdldEZvckxpbmUobGluZU51bWJlcikKICAgICB7CiAgICAgICAgIHZhciB3aWRnZXQgPSB0
aGlzLl93aWRnZXRNYXAuZ2V0KGxpbmVOdW1iZXIpOwogICAgICAgICBpZiAod2lkZ2V0KQpAQCAt
ODYzLDE4ICs4NDUsMTggQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fd2lkZ2V0TWFwLnNldChsaW5lTnVtYmVyLCB3aWRnZXQp
OwogCiAgICAgICAgIHJldHVybiB3aWRnZXQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaWNvbkNs
YXNzTmFtZUZvcklzc3VlTGV2ZWw6IGZ1bmN0aW9uKGxldmVsKQorICAgIF9pY29uQ2xhc3NOYW1l
Rm9ySXNzdWVMZXZlbChsZXZlbCkKICAgICB7CiAgICAgICAgIGlmIChsZXZlbCA9PT0gV2ViSW5z
cGVjdG9yLklzc3VlTWVzc2FnZS5MZXZlbC5XYXJuaW5nKQogICAgICAgICAgICAgcmV0dXJuICJp
Y29uLXdhcm5pbmciOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxldmVsID09PSBXZWJJbnNw
ZWN0b3IuSXNzdWVNZXNzYWdlLkxldmVsLkVycm9yKTsKICAgICAgICAgcmV0dXJuICJpY29uLWVy
cm9yIjsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVJc3N1ZVdpZGdldEZvcklzc3Vlczog
ZnVuY3Rpb24od2lkZ2V0LCBpc3N1ZXMpCisgICAgX3VwZGF0ZUlzc3VlV2lkZ2V0Rm9ySXNzdWVz
KHdpZGdldCwgaXNzdWVzKQogICAgIHsKICAgICAgICAgdmFyIHdpZGdldEVsZW1lbnQgPSB3aWRn
ZXQud2lkZ2V0RWxlbWVudDsKICAgICAgICAgd2lkZ2V0RWxlbWVudC5yZW1vdmVDaGlsZHJlbigp
OwpAQCAtOTMwLDkgKzkxMiw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB3aWRnZXQudXBkYXRlKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfaXNXaWRnZXRUb2dnbGVhYmxlOiBmdW5jdGlvbih3aWRnZXQpCisg
ICAgX2lzV2lkZ2V0VG9nZ2xlYWJsZSh3aWRnZXQpCiAgICAgewogICAgICAgICBpZiAod2lkZ2V0
W1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5XaWRnZXRDb250YWluc011bHRpcGxl
SXNzdWVzU3ltYm9sXSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTQ1LDkgKzkyNyw5
IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVXaWRnZXRDbGljazogZnVuY3Rpb24od2lkZ2V0LCBs
aW5lTnVtYmVyLCBldmVudCkKKyAgICBfaGFuZGxlV2lkZ2V0Q2xpY2sod2lkZ2V0LCBsaW5lTnVt
YmVyLCBldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5faXNXaWRnZXRUb2dnbGVhYmxl
KHdpZGdldCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC05NTYsMTIgKzkzOCwxMiBAQCBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogCiAgICAgICAgIHZh
ciBsaW5lTnVtYmVySXNzdWVzID0gdGhpcy5faXNzdWVzTGluZU51bWJlck1hcC5nZXQobGluZU51
bWJlcik7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUlzc3VlV2lkZ2V0Rm9ySXNzdWVzKHdpZGdldCwg
bGluZU51bWJlcklzc3Vlcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludEluZm9G
b3JCcmVha3BvaW50OiBmdW5jdGlvbihicmVha3BvaW50KQorICAgIF9icmVha3BvaW50SW5mb0Zv
ckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7CiAgICAgICAgIHJldHVybiB7cmVzb2x2ZWQ6
IGJyZWFrcG9pbnQucmVzb2x2ZWQsIGRpc2FibGVkOiBicmVha3BvaW50LmRpc2FibGVkLCBhdXRv
Q29udGludWU6IGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlfTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBfc3VwcG9ydHNEZWJ1Z2dpbmcoKQogICAgIHsKQEAgLTk3MCwyNyArOTUyLDQ2IEBAIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
ICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBUZXh0RWRpdG9yIERlbGVnYXRlCiAKLSAgICB0ZXh0RWRpdG9yQmFzZVVSTDog
ZnVuY3Rpb24odGV4dEVkaXRvcikKKyAgICB0ZXh0RWRpdG9yQmFzZVVSTCh0ZXh0RWRpdG9yKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGUudXJsOwotICAgIH0sCisgICAg
fQogCi0gICAgdGV4dEVkaXRvclNob3VsZEhpZGVMaW5lTnVtYmVyOiBmdW5jdGlvbih0ZXh0RWRp
dG9yLCBsaW5lTnVtYmVyKQorICAgIHRleHRFZGl0b3JTaG91bGRIaWRlTGluZU51bWJlcih0ZXh0
RWRpdG9yLCBsaW5lTnVtYmVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGxpbmVOdW1iZXIgaW4g
dGhpcy5faW52YWxpZExpbmVOdW1iZXJzOwotICAgIH0sCisgICAgfQogCi0gICAgdGV4dEVkaXRv
ckd1dHRlckNvbnRleHRNZW51OiBmdW5jdGlvbih0ZXh0RWRpdG9yLCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGVkaXRvckJyZWFrcG9pbnRzLCBldmVudCkKKyAgICB0ZXh0RWRpdG9yR3V0dGVy
Q29udGV4dE1lbnUodGV4dEVkaXRvciwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBlZGl0b3JC
cmVha3BvaW50cywgZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3N1cHBvcnRzRGVi
dWdnaW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CiAKKyAgICAgICAgZnVuY3Rpb24gY29udGludWVUb0xvY2F0aW9uKCkKKyAgICAgICAg
eworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5jb250aW51ZVRvTG9j
YXRpb24oc2NyaXB0LmlkLCBzb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlciwgc291cmNlQ29k
ZUxvY2F0aW9uLmNvbHVtbk51bWJlcik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBh
ZGRCcmVha3BvaW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLnRl
eHRFZGl0b3JCcmVha3BvaW50QWRkZWQodGhpcywgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsK
KyAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludEluZm9Gb3JMaW5lQW5kQ29sdW1uKGRhdGEu
bGluZU51bWJlciwgZGF0YS5jb2x1bW5OdW1iZXIsIGRhdGEuYnJlYWtwb2ludEluZm8pOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcmV2ZWFsSW5TaWRlYmFyKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyU2lkZWJhclBhbmVsLnNob3coKTsKKyAg
ICAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclNpZGViYXJQ
YW5lbC50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KGJyZWFrcG9pbnQpOworICAgICAg
ICAgICAgaWYgKHRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50LnJldmVh
bEFuZFNlbGVjdCgpOworICAgICAgICB9CisKICAgICAgICAgdmFyIGNvbnRleHRNZW51ID0gbmV3
IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAKICAgICAgICAgLy8gUGF1c2VkLiBB
ZGQgQ29udGludWUgdG8gSGVyZSBvcHRpb24gb25seSBpZiB3ZSBoYXZlIGEgc2NyaXB0IGlkZW50
aWZpZXIgZm9yIHRoZSBsb2NhdGlvbi4KQEAgLTEwMDUsMTAgKzEwMDYsNiBAQCBXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHZh
ciBzY3JpcHQgPSBzb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZS5zY3JpcHRGb3JMb2NhdGlv
bihzb3VyY2VDb2RlTG9jYXRpb24pOwogCiAgICAgICAgICAgICBpZiAoc2NyaXB0KSB7Ci0gICAg
ICAgICAgICAgICAgZnVuY3Rpb24gY29udGludWVUb0xvY2F0aW9uKCkKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuY29u
dGludWVUb0xvY2F0aW9uKHNjcmlwdC5pZCwgc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIs
IHNvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXIpOwotICAgICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJDb250aW51ZSB0byBIZXJlIiksIGNvbnRpbnVlVG9Mb2NhdGlvbik7CiAgICAgICAgICAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CkBAIC0xMDI2LDExICsxMDIzLDYg
QEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICAvLyBObyBicmVha3BvaW50cy4KICAgICAgICAgaWYgKCFicmVha3BvaW50cy5sZW5ndGgp
IHsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGFkZEJyZWFrcG9pbnQoKQotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy50ZXh0RWRpdG9yQnJlYWtwb2ludEFkZGVk
KHRoaXMsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Ci0gICAgICAgICAgICAgICAgdGhpcy5z
ZXRCcmVha3BvaW50SW5mb0ZvckxpbmVBbmRDb2x1bW4oZGF0YS5saW5lTnVtYmVyLCBkYXRhLmNv
bHVtbk51bWJlciwgZGF0YS5icmVha3BvaW50SW5mbyk7Ci0gICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBZGQg
QnJlYWtwb2ludCIpLCBhZGRCcmVha3BvaW50LmJpbmQodGhpcykpOwogICAgICAgICAgICAgY29u
dGV4dE1lbnUuc2hvdygpOwpAQCAtMTA0MCwxMyArMTAzMiw2IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFNpbmdsZSBicmVha3Bv
aW50LgogICAgICAgICBpZiAoYnJlYWtwb2ludHMubGVuZ3RoID09PSAxKSB7CiAgICAgICAgICAg
ICB2YXIgYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRzWzBdOwotICAgICAgICAgICAgZnVuY3Rpb24g
cmV2ZWFsSW5TaWRlYmFyKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJTaWRlYmFyUGFuZWwuc2hvdygpOwotICAgICAgICAgICAgICAgIHZhciB0
cmVlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlclNpZGViYXJQYW5lbC50cmVlRWxlbWVu
dEZvclJlcHJlc2VudGVkT2JqZWN0KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgIGlmICh0
cmVlRWxlbWVudCkKLSAgICAgICAgICAgICAgICAgICAgdHJlZUVsZW1lbnQucmV2ZWFsQW5kU2Vs
ZWN0KCk7Ci0gICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGJyZWFrcG9pbnQuYXBwZW5kQ29u
dGV4dE1lbnVJdGVtcyhjb250ZXh0TWVudSwgZXZlbnQudGFyZ2V0KTsKICAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwpAQCAtMTA4NSw5ICsxMDcwLDkgQEAgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFbmFibGUgQnJlYWtw
b2ludHMiKSwgdG9nZ2xlQnJlYWtwb2ludHMuYmluZCh0aGlzKSk7CiAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtwb2ludHMi
KSwgcmVtb3ZlQnJlYWtwb2ludHMuYmluZCh0aGlzKSk7CiAgICAgICAgIGNvbnRleHRNZW51LnNo
b3coKTsKLSAgICB9LAorICAgIH0KIAotICAgIHRleHRFZGl0b3JCcmVha3BvaW50QWRkZWQ6IGZ1
bmN0aW9uKHRleHRFZGl0b3IsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICB0ZXh0RWRp
dG9yQnJlYWtwb2ludEFkZGVkKHRleHRFZGl0b3IsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKQEAgLTExMTMsOSArMTA5OCw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5l
SW5mby5saW5lTnVtYmVyLAogICAgICAgICAgICAgY29sdW1uTnVtYmVyOiBsaW5lSW5mby5jb2x1
bW5OdW1iZXIKICAgICAgICAgfTsKLSAgICB9LAorICAgIH0KIAotICAgIHRleHRFZGl0b3JCcmVh
a3BvaW50UmVtb3ZlZDogZnVuY3Rpb24odGV4dEVkaXRvciwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQorICAgIHRleHRFZGl0b3JCcmVha3BvaW50UmVtb3ZlZCh0ZXh0RWRpdG9yLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9z
dXBwb3J0c0RlYnVnZ2luZyk7CiAgICAgICAgIGlmICghdGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcp
CkBAIC0xMTMyLDkgKzExMTcsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pZ25vcmVCcmVha3BvaW50UmVtb3ZlZEJyZWFr
cG9pbnQgPSBicmVha3BvaW50OwogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2Vy
LnJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9pZ25v
cmVCcmVha3BvaW50QWRkZWRCcmVha3BvaW50OwotICAgIH0sCisgICAgfQogCi0gICAgdGV4dEVk
aXRvckJyZWFrcG9pbnRNb3ZlZDogZnVuY3Rpb24odGV4dEVkaXRvciwgb2xkTGluZU51bWJlciwg
b2xkQ29sdW1uTnVtYmVyLCBuZXdMaW5lTnVtYmVyLCBuZXdDb2x1bW5OdW1iZXIpCisgICAgdGV4
dEVkaXRvckJyZWFrcG9pbnRNb3ZlZCh0ZXh0RWRpdG9yLCBvbGRMaW5lTnVtYmVyLCBvbGRDb2x1
bW5OdW1iZXIsIG5ld0xpbmVOdW1iZXIsIG5ld0NvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3N1cHBvcnRzRGVidWdnaW5nKTsKICAgICAgICAgaWYgKCF0
aGlzLl9zdXBwb3J0c0RlYnVnZ2luZykKQEAgLTExNTksOSArMTE0NCw5IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKGFjY3Vy
YXRlTmV3TGluZUluZm8ubGluZU51bWJlciAhPT0gbmV3TGluZUluZm8ubGluZU51bWJlciB8fCBh
Y2N1cmF0ZU5ld0xpbmVJbmZvLmNvbHVtbk51bWJlciAhPT0gbmV3TGluZUluZm8uY29sdW1uTnVt
YmVyKQogICAgICAgICAgICAgdGhpcy51cGRhdGVCcmVha3BvaW50TGluZUFuZENvbHVtbihuZXdM
aW5lSW5mby5saW5lTnVtYmVyLCBuZXdMaW5lSW5mby5jb2x1bW5OdW1iZXIsIGFjY3VyYXRlTmV3
TGluZUluZm8ubGluZU51bWJlciwgYWNjdXJhdGVOZXdMaW5lSW5mby5jb2x1bW5OdW1iZXIpOwot
ICAgIH0sCisgICAgfQogCi0gICAgdGV4dEVkaXRvckJyZWFrcG9pbnRDbGlja2VkOiBmdW5jdGlv
bih0ZXh0RWRpdG9yLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgdGV4dEVkaXRvckJy
ZWFrcG9pbnRDbGlja2VkKHRleHRFZGl0b3IsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3N1cHBvcnRzRGVidWdnaW5nKTsKICAg
ICAgICAgaWYgKCF0aGlzLl9zdXBwb3J0c0RlYnVnZ2luZykKQEAgLTExNzMsOSArMTE1OCw5IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgYnJlYWtwb2ludC5jeWNsZVRvTmV4dE1vZGUoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHRleHRFZGl0b3JVcGRhdGVkRm9ybWF0dGluZzogZnVuY3Rpb24o
dGV4dEVkaXRvcikKKyAgICB0ZXh0RWRpdG9yVXBkYXRlZEZvcm1hdHRpbmcodGV4dEVkaXRvcikK
ICAgICB7CiAgICAgICAgIHRoaXMuX2lnbm9yZUFsbEJyZWFrcG9pbnRMb2NhdGlvblVwZGF0ZXMg
PSB0cnVlOwogICAgICAgICB0aGlzLl9zb3VyY2VDb2RlLmZvcm1hdHRlclNvdXJjZU1hcCA9IHRo
aXMuZm9ybWF0dGVyU291cmNlTWFwOwpAQCAtMTIxMSwxNyArMTE5NiwxNyBAQCBXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgdGhpcy5fcmVpbnNlcnRBbGxJc3N1ZXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jbGVh
cldpZGdldHM6IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXJXaWRnZXRzKCkKICAgICB7CiAgICAgICAg
IGZvciAodmFyIHdpZGdldCBvZiB0aGlzLl93aWRnZXRNYXAudmFsdWVzKCkpCiAgICAgICAgICAg
ICB3aWRnZXQuY2xlYXIoKTsKIAogICAgICAgICB0aGlzLl93aWRnZXRNYXAuY2xlYXIoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9yZWluc2VydEFsbElzc3VlczogZnVuY3Rpb24oKQorICAgIF9y
ZWluc2VydEFsbElzc3VlcygpCiAgICAgewogICAgICAgICB0aGlzLl9pc3N1ZXNMaW5lTnVtYmVy
TWFwLmNsZWFyKCk7CiAgICAgICAgIHRoaXMuX2NsZWFyV2lkZ2V0cygpOwpAQCAtMTIzMSwxOCAr
MTIxNiwxOCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fbWF0Y2hlc0lzc3VlKGlzc3VlKSk7
CiAgICAgICAgICAgICB0aGlzLl9hZGRJc3N1ZShpc3N1ZSk7CiAgICAgICAgIH0KLSAgICB9LAor
ICAgIH0KIAotICAgIF9kZWJ1Z2dlckRpZFBhdXNlOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGVi
dWdnZXJEaWRQYXVzZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRva2VuVHJh
Y2tpbmdDb250cm9sbGVyU3RhdGUoKTsKICAgICAgICAgaWYgKHRoaXMuX3R5cGVUb2tlbkFubm90
YXRvciAmJiB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IuaXNBY3RpdmUoKSkKICAgICAgICAgICAg
IHRoaXMuX3R5cGVUb2tlbkFubm90YXRvci5yZWZyZXNoKCk7CiAgICAgICAgIGlmICh0aGlzLl9i
YXNpY0Jsb2NrQW5ub3RhdG9yICYmIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IuaXNBY3RpdmUo
KSkKICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IucmVmcmVzaCgpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2RlYnVnZ2VyRGlkUmVzdW1lOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfZGVidWdnZXJEaWRSZXN1bWUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVU
b2tlblRyYWNraW5nQ29udHJvbGxlclN0YXRlKCk7CiAgICAgICAgIHRoaXMuX2Rpc21pc3NQb3Bv
dmVyKCk7CkBAIC0xMjUwLDE3ICsxMjM1LDE3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4
dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0
b3IucmVmcmVzaCgpOwogICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvciAmJiB0
aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICB0aGlzLl9i
YXNpY0Jsb2NrQW5ub3RhdG9yLnJlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zb3Vy
Y2VDb2RlU291cmNlTWFwQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zb3VyY2VDb2RlU291
cmNlTWFwQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iubm90aWZpY2F0
aW9ucy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRpb24uR2xvYmFsTW9k
aWZpZXJLZXlzRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVUb2tlblRyYWNraW5nQ29udHJvbGxlclN0
YXRlLCB0aGlzKTsKICAgICAgICAgdGhpcy5fc291cmNlQ29kZS5yZW1vdmVFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LlNvdXJjZU1hcEFkZGVkLCB0aGlzLl9zb3Vy
Y2VDb2RlU291cmNlTWFwQWRkZWQsIHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZVRva2Vu
VHJhY2tpbmdDb250cm9sbGVyU3RhdGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVU
b2tlblRyYWNraW5nQ29udHJvbGxlclN0YXRlOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVRva2Vu
VHJhY2tpbmdDb250cm9sbGVyU3RhdGUoKQogICAgIHsKICAgICAgICAgdmFyIG1vZGUgPSBXZWJJ
bnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyLk1vZGUuTm9uZTsKICAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucGF1c2VkKQpAQCAtMTI5Nywy
MCArMTI4MiwyMCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5t
b2RlID0gbW9kZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYXNDb2xvck1hcmtlcnM6IGZ1bmN0
aW9uKCkKKyAgICBfaGFzQ29sb3JNYXJrZXJzKCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIG1h
cmtlciBvZiB0aGlzLm1hcmtlcnMpIHsKICAgICAgICAgICAgIGlmIChtYXJrZXIudHlwZSA9PT0g
V2ViSW5zcGVjdG9yLlRleHRNYXJrZXIuVHlwZS5Db2xvcikKICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBDb2RlTWlycm9yVG9rZW5UcmFja2luZ0NvbnRyb2xsZXIgRGVsZWdhdGUKIAot
ICAgIHRva2VuVHJhY2tpbmdDb250cm9sbGVyQ2FuUmVsZWFzZUhpZ2hsaWdodGVkUmFuZ2U6IGZ1
bmN0aW9uKHRva2VuVHJhY2tpbmdDb250cm9sbGVyLCBlbGVtZW50KQorICAgIHRva2VuVHJhY2tp
bmdDb250cm9sbGVyQ2FuUmVsZWFzZUhpZ2hsaWdodGVkUmFuZ2UodG9rZW5UcmFja2luZ0NvbnRy
b2xsZXIsIGVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3BvcG92ZXIpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTEzMTksMTUgKzEzMDQsMTUgQEAgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHRva2Vu
VHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0ZWRSYW5nZVJlbGVhc2VkOiBmdW5jdGlvbih0b2tl
blRyYWNraW5nQ29udHJvbGxlcikKKyAgICB0b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdo
dGVkUmFuZ2VSZWxlYXNlZCh0b2tlblRyYWNraW5nQ29udHJvbGxlcikKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5fbW91c2VJc092ZXJQb3BvdmVyKQogICAgICAgICAgICAgdGhpcy5fZGlzbWlz
c1BvcG92ZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHRva2VuVHJhY2tpbmdDb250cm9sbGVy
SGlnaGxpZ2h0ZWRSYW5nZVdhc0NsaWNrZWQ6IGZ1bmN0aW9uKHRva2VuVHJhY2tpbmdDb250cm9s
bGVyKQorICAgIHRva2VuVHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0ZWRSYW5nZVdhc0NsaWNr
ZWQodG9rZW5UcmFja2luZ0NvbnRyb2xsZXIpCiAgICAgewogICAgICAgICBpZiAodGhpcy50b2tl
blRyYWNraW5nQ29udHJvbGxlci5tb2RlICE9PSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2Vu
VHJhY2tpbmdDb250cm9sbGVyLk1vZGUuTm9uU3ltYm9sVG9rZW5zKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMTM0MSw5ICsxMzI2LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGVi
YXJQYW5lbC5zaG93T3JpZ2luYWxPckZvcm1hdHRlZFNvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VD
b2RlTG9jYXRpb24pOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVz
b3VyY2VTaWRlYmFyUGFuZWwuc2hvd1NvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlTG9jYXRp
b24pOwotICAgIH0sCisgICAgfQogCi0gICAgdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJOZXdIaWdo
bGlnaHRDYW5kaWRhdGU6IGZ1bmN0aW9uKHRva2VuVHJhY2tpbmdDb250cm9sbGVyLCBjYW5kaWRh
dGUpCisgICAgdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJOZXdIaWdobGlnaHRDYW5kaWRhdGUodG9r
ZW5UcmFja2luZ0NvbnRyb2xsZXIsIGNhbmRpZGF0ZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
LnRva2VuVHJhY2tpbmdDb250cm9sbGVyLm1vZGUgPT09IFdlYkluc3BlY3Rvci5Db2RlTWlycm9y
VG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuTW9kZS5Ob25TeW1ib2xUb2tlbnMpIHsKICAgICAgICAg
ICAgIHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuaGlnaGxpZ2h0UmFuZ2UoY2FuZGlkYXRl
LmhvdmVyZWRUb2tlblJhbmdlKTsKQEAgLTEzNjcsMTQgKzEzNTIsMTQgQEAgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICB0aGlzLl9kaXNtaXNzRWRpdGluZ0NvbnRyb2xsZXIoKTsKICAgICAgICAg
fQotICAgIH0sCisgICAgfQogCi0gICAgdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJNb3VzZU91dE9m
SG92ZXJlZE1hcmtlcjogZnVuY3Rpb24odG9rZW5UcmFja2luZ0NvbnRyb2xsZXIsIGhvdmVyZWRN
YXJrZXIpCisgICAgdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJNb3VzZU91dE9mSG92ZXJlZE1hcmtl
cih0b2tlblRyYWNraW5nQ29udHJvbGxlciwgaG92ZXJlZE1hcmtlcikKICAgICB7CiAgICAgICAg
IHRoaXMuX2Rpc21pc3NFZGl0aW5nQ29udHJvbGxlcigpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3Rva2VuVHJhY2tpbmdDb250cm9sbGVySGlnaGxpZ2h0ZWRKYXZhU2NyaXB0RXhwcmVzc2lvbjog
ZnVuY3Rpb24oY2FuZGlkYXRlKQorICAgIF90b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdo
dGVkSmF2YVNjcmlwdEV4cHJlc3Npb24oY2FuZGlkYXRlKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoY2FuZGlkYXRlLmV4cHJlc3Npb24pOwogCkBAIC0xNDE0LDkgKzEzOTksOSBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogCiAgICAgICAg
IC8vIE5vIGNhbGwgZnJhbWUgYXZhaWxhYmxlLiBVc2UgdGhlIG1haW4gcGFnZSdzIGNvbnRleHQu
CiAgICAgICAgIFJ1bnRpbWVBZ2VudC5ldmFsdWF0ZS5pbnZva2Uoe2V4cHJlc3Npb246IGNhbmRp
ZGF0ZS5leHByZXNzaW9uLCBvYmplY3RHcm91cDogInBvcG92ZXIiLCBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGU6IHRydWV9LCBwb3B1bGF0ZS5iaW5kKHRoaXMpKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF90b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdodGVkSmF2YVNj
cmlwdFR5cGVJbmZvcm1hdGlvbjogZnVuY3Rpb24oY2FuZGlkYXRlKQorICAgIF90b2tlblRyYWNr
aW5nQ29udHJvbGxlckhpZ2hsaWdodGVkSmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvbihjYW5kaWRh
dGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjYW5kaWRhdGUuZXhwcmVzc2lvbik7
CiAKQEAgLTE0NDksOSArMTQzNCw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBSdW50aW1lQWdlbnQuZ2V0UnVu
dGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKGFsbFJlcXVlc3RzLCBoYW5kbGVyLmJpbmQo
dGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dQb3BvdmVyOiBmdW5jdGlvbihjb250
ZW50LCBib3VuZHMpCisgICAgX3Nob3dQb3BvdmVyKGNvbnRlbnQsIGJvdW5kcykKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuY2FuZGlk
YXRlIHx8IGJvdW5kcyk7CiAKQEAgLTE0NzcsOSArMTQ2Miw5IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnRva2VuVHJh
Y2tpbmdDb250cm9sbGVyLmhpZ2hsaWdodFJhbmdlKGNhbmRpZGF0ZS5leHByZXNzaW9uUmFuZ2Up
OwogCiAgICAgICAgIHRoaXMuX3RyYWNrUG9wb3ZlckV2ZW50cygpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3Nob3dQb3BvdmVyRm9yRnVuY3Rpb246IGZ1bmN0aW9uKGRhdGEpCisgICAgX3Nob3dQ
b3BvdmVyRm9yRnVuY3Rpb24oZGF0YSkKICAgICB7CiAgICAgICAgIHZhciBjYW5kaWRhdGUgPSB0
aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLmNhbmRpZGF0ZTsKIApAQCAtMTUxMiw5ICsxNDk3
LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyKGNvbnRlbnQpOwogICAgICAgICB9CiAgICAgICAg
IERlYnVnZ2VyQWdlbnQuZ2V0RnVuY3Rpb25EZXRhaWxzKGRhdGEub2JqZWN0SWQsIGRpZEdldERl
dGFpbHMuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd1BvcG92ZXJGb3JP
YmplY3Q6IGZ1bmN0aW9uKGRhdGEpCisgICAgX3Nob3dQb3BvdmVyRm9yT2JqZWN0KGRhdGEpCiAg
ICAgewogICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwogICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJvYmplY3QgZXhwYW5kYWJsZSI7CkBAIC0x
NTM0LDIyICsxNTE5LDIyIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGJvZHlFbGVtZW50LmFwcGVuZENoaWxkKG9iamVjdFRyZWUuZWxl
bWVudCk7CiAKICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXIoY29udGVudCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc2hvd1BvcG92ZXJXaXRoRm9ybWF0dGVkVmFsdWU6IGZ1bmN0aW9uKHJlbW90
ZU9iamVjdCkKKyAgICBfc2hvd1BvcG92ZXJXaXRoRm9ybWF0dGVkVmFsdWUocmVtb3RlT2JqZWN0
KQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnQgPSBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFs
dWUuY3JlYXRlRWxlbWVudEZvclJlbW90ZU9iamVjdChyZW1vdGVPYmplY3QpOwogICAgICAgICB0
aGlzLl9zaG93UG9wb3Zlcihjb250ZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIHdpbGxEaXNt
aXNzUG9wb3ZlcjogZnVuY3Rpb24ocG9wb3ZlcikKKyAgICB3aWxsRGlzbWlzc1BvcG92ZXIocG9w
b3ZlcikKICAgICB7CiAgICAgICAgIHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIucmVtb3Zl
SGlnaGxpZ2h0ZWRSYW5nZSgpOwogCiAgICAgICAgIFJ1bnRpbWVBZ2VudC5yZWxlYXNlT2JqZWN0
R3JvdXAoInBvcG92ZXIiKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kaXNtaXNzUG9wb3Zlcjog
ZnVuY3Rpb24oKQorICAgIF9kaXNtaXNzUG9wb3ZlcigpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuX3BvcG92ZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTYwLDkgKzE1NDUsOSBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdGhpcy5fcG9wb3ZlckV2ZW50TGlzdGVuZXJzQXJlUmVnaXN0ZXJlZCA9IGZhbHNlOwogICAg
ICAgICAgICAgdGhpcy5fcG9wb3ZlckV2ZW50TGlzdGVuZXJzLnVucmVnaXN0ZXIoKTsKICAgICAg
ICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3RyYWNrUG9wb3ZlckV2ZW50czogZnVuY3Rpb24o
KQorICAgIF90cmFja1BvcG92ZXJFdmVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9w
b3BvdmVyRXZlbnRMaXN0ZW5lcnMpIAogICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckV2ZW50TGlz
dGVuZXJzID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2V0KHRoaXMsICJQb3BvdmVy
IGxpc3RlbmVycyIpOwpAQCAtMTU3MiwyNyArMTU1NywyNyBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckV2
ZW50TGlzdGVuZXJzLnJlZ2lzdGVyKHRoaXMuX3BvcG92ZXIuZWxlbWVudCwgIm1vdXNlb3V0Iiwg
dGhpcy5fcG9wb3Zlck1vdXNlb3V0KTsKICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJFdmVudExp
c3RlbmVycy5pbnN0YWxsKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9wb3Bv
dmVyTW91c2VvdmVyOiBmdW5jdGlvbihldmVudCkKKyAgICBfcG9wb3Zlck1vdXNlb3ZlcihldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMuX21vdXNlSXNPdmVyUG9wb3ZlciA9IHRydWU7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcG9wb3Zlck1vdXNlb3V0OiBmdW5jdGlvbihldmVudCkKKyAgICBf
cG9wb3Zlck1vdXNlb3V0KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fbW91c2VJc092ZXJQ
b3BvdmVyID0gdGhpcy5fcG9wb3Zlci5lbGVtZW50LmNvbnRhaW5zKGV2ZW50LnJlbGF0ZWRUYXJn
ZXQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUVkaXRhYmxlTWFya2VyczogZnVuY3Rp
b24ocmFuZ2UpCisgICAgX3VwZGF0ZUVkaXRhYmxlTWFya2VycyhyYW5nZSkKICAgICB7CiAgICAg
ICAgIHRoaXMuY3JlYXRlQ29sb3JNYXJrZXJzKHJhbmdlKTsKICAgICAgICAgdGhpcy5jcmVhdGVH
cmFkaWVudE1hcmtlcnMocmFuZ2UpOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZVRva2VuVHJhY2tp
bmdDb250cm9sbGVyU3RhdGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90b2tlblRyYWNraW5n
Q29udHJvbGxlckhpZ2hsaWdodGVkTWFya2VkRXhwcmVzc2lvbjogZnVuY3Rpb24oY2FuZGlkYXRl
LCBtYXJrZXJzKQorICAgIF90b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdodGVkTWFya2Vk
RXhwcmVzc2lvbihjYW5kaWRhdGUsIG1hcmtlcnMpCiAgICAgewogICAgICAgICAvLyBMb29rIGZv
ciB0aGUgb3V0ZXJtb3N0IGVkaXRhYmxlIG1hcmtlci4KICAgICAgICAgdmFyIGVkaXRhYmxlTWFy
a2VyOwpAQCAtMTYyOSwyMCArMTYxNCwyMCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2VkaXRpbmdDb250cm9sbGVyLmRl
bGVnYXRlID0gdGhpczsKICAgICAgICAgdGhpcy5fZWRpdGluZ0NvbnRyb2xsZXIucHJlc2VudEhv
dmVyTWVudSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rpc21pc3NFZGl0aW5nQ29udHJvbGxl
cjogZnVuY3Rpb24oZGlzY3JldGUpCisgICAgX2Rpc21pc3NFZGl0aW5nQ29udHJvbGxlcihkaXNj
cmV0ZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lZGl0aW5nQ29udHJvbGxlcikKICAgICAg
ICAgICAgIHRoaXMuX2VkaXRpbmdDb250cm9sbGVyLmRpc21pc3NIb3Zlck1lbnUoZGlzY3JldGUp
OwogICAgICAgICAKICAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5ob3ZlcmVk
TWFya2VyID0gbnVsbDsKICAgICAgICAgZGVsZXRlIHRoaXMuX2VkaXRpbmdDb250cm9sbGVyOwot
ICAgIH0sCisgICAgfQogCiAgICAgLy8gQ29kZU1pcnJvckVkaXRpbmdDb250cm9sbGVyIERlbGVn
YXRlCiAgICAgCi0gICAgZWRpdGluZ0NvbnRyb2xsZXJEaWRTdGFydEVkaXRpbmc6IGZ1bmN0aW9u
KGVkaXRpbmdDb250cm9sbGVyKQorICAgIGVkaXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5n
KGVkaXRpbmdDb250cm9sbGVyKQogICAgIHsKICAgICAgICAgLy8gV2UgY2FuIHBhdXNlIHRoZSB0
b2tlbiB0cmFja2luZyBjb250cm9sbGVyIGR1cmluZyBlZGl0aW5nLCBpdCB3aWxsIGJlIHJlc2V0
CiAgICAgICAgIC8vIHRvIHRoZSBleHBlY3RlZCBzdGF0ZSBieSBjYWxsaW5nIF91cGRhdGVFZGl0
YWJsZU1hcmtlcnMoKSBpbiB0aGUKQEAgLTE2NTQsMTggKzE2MzksMTggQEAgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgCiAgICAgICAgIC8v
IFdlIGlnbm9yZSBjb250ZW50IGNoYW5nZXMgbWFkZSBhcyBhIHJlc3VsdCBvZiBjb2xvciBlZGl0
aW5nLgogICAgICAgICB0aGlzLl9pZ25vcmVDb250ZW50RGlkQ2hhbmdlKys7Ci0gICAgfSwKKyAg
ICB9CiAgICAgCi0gICAgZWRpdGluZ0NvbnRyb2xsZXJEaWRGaW5pc2hFZGl0aW5nOiBmdW5jdGlv
bihlZGl0aW5nQ29udHJvbGxlcikKKyAgICBlZGl0aW5nQ29udHJvbGxlckRpZEZpbmlzaEVkaXRp
bmcoZWRpdGluZ0NvbnRyb2xsZXIpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVFZGl0YWJs
ZU1hcmtlcnMoZWRpdGluZ0NvbnRyb2xsZXIucmFuZ2UpOwogCiAgICAgICAgIHRoaXMuX2lnbm9y
ZUNvbnRlbnREaWRDaGFuZ2UtLTsKIAogICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGluZ0NvbnRy
b2xsZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxl
ZFN0YXRlOiBmdW5jdGlvbihzaG91bGRBY3RpdmF0ZSkKKyAgICBfc2V0VHlwZVRva2VuQW5ub3Rh
dG9yRW5hYmxlZFN0YXRlKHNob3VsZEFjdGl2YXRlKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKTsKICAgICAgICAgaWYgKCF0aGlzLl90eXBl
VG9rZW5Bbm5vdGF0b3IpCkBAIC0xNzAwLDkgKzE2ODUsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd0ph
dmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZhbHVlID0gc2hvdWxkQWN0aXZhdGU7CiAK
ICAgICAgICAgdGhpcy5fdXBkYXRlVG9rZW5UcmFja2luZ0NvbnRyb2xsZXJTdGF0ZSgpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2dldEFzc29jaWF0ZWRTY3JpcHQ6IGZ1bmN0aW9uKCkKKyAgICBf
Z2V0QXNzb2NpYXRlZFNjcmlwdCgpCiAgICAgewogICAgICAgICB2YXIgc2NyaXB0ID0gbnVsbDsK
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgdG8gbWUgbW9kaWZpZWQgdG8gd29yayB3aXRo
IEhUTUwgZmlsZXMgd2l0aCBpbmxpbmUgc2NyaXB0IHRhZ3MuCkBAIC0xNzExLDkgKzE2OTYsOSBA
QCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAg
ICBlbHNlIGlmICh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291
cmNlICYmIHRoaXMuX3NvdXJjZUNvZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlJlc291cmNlLlR5
cGUuU2NyaXB0ICYmIHRoaXMuX3NvdXJjZUNvZGUuc2NyaXB0cy5sZW5ndGgpCiAgICAgICAgICAg
ICBzY3JpcHQgPSB0aGlzLl9zb3VyY2VDb2RlLnNjcmlwdHNbMF07CiAgICAgICAgIHJldHVybiBz
Y3JpcHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWFrZVR5cGVUb2tlbkFubm90YXRvcjogZnVu
Y3Rpb24oKQorICAgIF9tYWtlVHlwZVRva2VuQW5ub3RhdG9yKCkKICAgICB7CiAgICAgICAgIGlm
ICghUnVudGltZUFnZW50LmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxlc0F0T2Zmc2V0cykKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTE3MjMsOSArMTcwOCw5IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5UeXBlVG9r
ZW5Bbm5vdGF0b3IodGhpcywgc2NyaXB0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tYWtlQmFz
aWNCbG9ja0Fubm90YXRvcjogZnVuY3Rpb24oKQorICAgIF9tYWtlQmFzaWNCbG9ja0Fubm90YXRv
cigpCiAgICAgewogICAgICAgICBpZiAoIVJ1bnRpbWVBZ2VudC5nZXRCYXNpY0Jsb2NrcykKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTE3MzUsMjQgKzE3MjAsMjQgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5CYXNp
Y0Jsb2NrQW5ub3RhdG9yKHRoaXMsIHNjcmlwdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZW5h
YmxlU2Nyb2xsRXZlbnRzRm9yVHlwZVRva2VuQW5ub3RhdG9yOiBmdW5jdGlvbigpCisgICAgX2Vu
YWJsZVNjcm9sbEV2ZW50c0ZvclR5cGVUb2tlbkFubm90YXRvcigpCiAgICAgewogICAgICAgICAv
LyBQYXVzZSB1cGRhdGluZyB0eXBlIHRva2VucyB3aGlsZSBzY3JvbGxpbmcgdG8gcHJldmVudCBm
cmFtZSBsb3NzLgogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdHlwZVRva2VuU2Nyb2xs
SGFuZGxlcik7CiAgICAgICAgIHRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIgPSB0aGlzLl9t
YWtlVHlwZVRva2VuU2Nyb2xsRXZlbnRIYW5kbGVyKCk7CiAgICAgICAgIHRoaXMuYWRkU2Nyb2xs
SGFuZGxlcih0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9kaXNhYmxlU2Nyb2xsRXZlbnRzRm9yVHlwZVRva2VuQW5ub3RhdG9yOiBmdW5jdGlvbigp
CisgICAgX2Rpc2FibGVTY3JvbGxFdmVudHNGb3JUeXBlVG9rZW5Bbm5vdGF0b3IoKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlcik7CiAg
ICAgICAgIHRoaXMucmVtb3ZlU2Nyb2xsSGFuZGxlcih0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5k
bGVyKTsKICAgICAgICAgdGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlciA9IG51bGw7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfbWFrZVR5cGVUb2tlblNjcm9sbEV2ZW50SGFuZGxlcjogZnVuY3Rp
b24oKQorICAgIF9tYWtlVHlwZVRva2VuU2Nyb2xsRXZlbnRIYW5kbGVyKCkKICAgICB7CiAgICAg
ICAgIHZhciB0aW1lb3V0SWRlbnRpZmllciA9IG51bGw7CiAgICAgICAgIGZ1bmN0aW9uIHNjcm9s
bEhhbmRsZXIoKQpAQCAtMTc3OSw0ICsxNzY0LDE3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvci5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuTGluZUVy
cm9yU3R5bGVDbGFzc05hbWUgPSAiZXJyb3IiOworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0
RWRpdG9yLkxpbmVXYXJuaW5nU3R5bGVDbGFzc05hbWUgPSAid2FybmluZyI7CitXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IuUG9wb3ZlckRlYnVnZ2VyQ29udGVudFN0eWxlQ2xhc3NO
YW1lID0gImRlYnVnZ2VyLXBvcG92ZXItY29udGVudCI7CitXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRleHRFZGl0b3IuSG92ZXJlZEV4cHJlc3Npb25IaWdobGlnaHRTdHlsZUNsYXNzTmFtZSA9ICJo
b3ZlcmVkLWV4cHJlc3Npb24taGlnaGxpZ2h0IjsKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4
dEVkaXRvci5EdXJhdGlvblRvTW91c2VPdmVyVG9rZW5Ub01ha2VIb3ZlcmVkVG9rZW4gPSA1MDA7
CitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRHVyYXRpb25Ub01vdXNlT3V0T2ZI
b3ZlcmVkVG9rZW5Ub1JlbGVhc2UgPSAxMDAwOworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0
RWRpdG9yLkR1cmF0aW9uVG9VcGRhdGVUeXBlVG9rZW5zQWZ0ZXJTY3JvbGxpbmcgPSAxMDA7CitX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuQXV0b0Zvcm1hdE1pbmltdW1MaW5lTGVu
Z3RoID0gNTAwOworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLldpZGdldENvbnRh
aW5zTXVsdGlwbGVJc3N1ZXNTeW1ib2wgPSBTeW1ib2woInNvdXJjZS1jb2RlLXdpZGdldC1jb250
YWlucy1tdWx0aXBsZS1pc3N1ZXMiKTsKKworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLkV2ZW50ID0geworICAgIENvbnRlbnRXaWxsUG9wdWxhdGU6ICJzb3VyY2UtY29kZS10ZXh0
LWVkaXRvci1jb250ZW50LXdpbGwtcG9wdWxhdGUiLAorICAgIENvbnRlbnREaWRQb3B1bGF0ZTog
InNvdXJjZS1jb2RlLXRleHQtZWRpdG9yLWNvbnRlbnQtZGlkLXBvcHVsYXRlIgorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNv
ZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5v
ZGUuanMKaW5kZXggYTAyMTIzMC4uZDJkYTU5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRh
R3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDEgKzIzLDM2
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlID0gZnVuY3Rpb24oc291
cmNlQ29kZVRpbWVsaW5lLCBncmFwaERhdGFTb3VyY2UpCitXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUgPSBjbGFzcyBTb3VyY2VDb2RlVGltZWxpbmVU
aW1lbGluZURhdGFHcmlkTm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlk
Tm9kZQogewotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5jYWxsKHRoaXMs
IHRydWUsIGdyYXBoRGF0YVNvdXJjZSk7Ci0KLSAgICB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmUg
PSBzb3VyY2VDb2RlVGltZWxpbmU7Ci0gICAgdGhpcy5fc291cmNlQ29kZVRpbWVsaW5lLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlz
Ll90aW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKLX07Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEg
V2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2Vi
SW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlKTsKKyAgICBjb25z
dHJ1Y3Rvcihzb3VyY2VDb2RlVGltZWxpbmUsIGdyYXBoRGF0YVNvdXJjZSkKKyAgICB7CisgICAg
ICAgIHN1cGVyKHRydWUsIGdyYXBoRGF0YVNvdXJjZSk7CiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVGltZWxpbmVUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUaW1lbGluZURhdGFHcmlkTm9k
ZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5wcm90
b3R5cGUsCisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVUaW1lbGluZSA9IHNvdXJjZUNvZGVUaW1l
bGluZTsKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZVRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl90aW1lbGluZVJl
Y29yZEFkZGVkLCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCByZWNv
cmRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmUucmVj
b3JkczsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzb3VyY2VDb2RlVGltZWxpbmUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVUaW1lbGluZTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBkYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7Z3JhcGg6IHRoaXMu
X3NvdXJjZUNvZGVUaW1lbGluZS5zdGFydFRpbWV9OwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQogCi0gICAgX3RpbWVsaW5lUmVjb3JkQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF90aW1lbGluZVJlY29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuaXNS
ZWNvcmRWaXNpYmxlKGV2ZW50LmRhdGEucmVjb3JkKSkKICAgICAgICAgICAgIHRoaXMubmVlZHNH
cmFwaFJlZnJlc2goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVHJlZUVs
ZW1lbnQuanMKaW5kZXggMGM2MzU1Ni4uMWQzNTgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRpbWVsaW5lVHJlZUVsZW1l
bnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291
cmNlQ29kZVRpbWVsaW5lVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI0ICsyMywyNSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGltZWxpbmVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHNvdXJjZUNvZGVUaW1lbGluZSwgc3VidGl0
bGVOYW1lU3R5bGUsIGluY2x1ZGVUaW1lcklkZW50aWZpZXJJbk1haW5UaXRsZSkKK1dlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudCA9IGNsYXNzIFNvdXJjZUNvZGVUaW1l
bGluZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVs
ZW1lbnQKIHsKLSAgICBjb25zb2xlLmFzc2VydChzb3VyY2VDb2RlVGltZWxpbmUpOwotCi0gICAg
dGhpcy5fc291cmNlQ29kZVRpbWVsaW5lID0gc291cmNlQ29kZVRpbWVsaW5lOworICAgIGNvbnN0
cnVjdG9yKHNvdXJjZUNvZGVUaW1lbGluZSwgc3VidGl0bGVOYW1lU3R5bGUsIGluY2x1ZGVUaW1l
cklkZW50aWZpZXJJbk1haW5UaXRsZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNv
dXJjZUNvZGVUaW1lbGluZSk7CiAKLSAgICBzdWJ0aXRsZU5hbWVTdHlsZSA9IHN1YnRpdGxlTmFt
ZVN0eWxlIHx8IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uTmFtZVN0eWxlLk5vbmU7
CisgICAgICAgIHN1YnRpdGxlTmFtZVN0eWxlID0gc3VidGl0bGVOYW1lU3R5bGUgfHwgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVMb2NhdGlvbi5OYW1lU3R5bGUuTm9uZTsKIAotICAgIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LmNhbGwodGhpcywgc291cmNlQ29kZVRpbWVs
aW5lLnJlY29yZHNbMF0sIHN1YnRpdGxlTmFtZVN0eWxlLCBpbmNsdWRlVGltZXJJZGVudGlmaWVy
SW5NYWluVGl0bGUsIHNvdXJjZUNvZGVUaW1lbGluZS5zb3VyY2VDb2RlTG9jYXRpb24sIHNvdXJj
ZUNvZGVUaW1lbGluZSk7Ci19OworICAgICAgICBzdXBlcihzb3VyY2VDb2RlVGltZWxpbmUucmVj
b3Jkc1swXSwgc3VidGl0bGVOYW1lU3R5bGUsIGluY2x1ZGVUaW1lcklkZW50aWZpZXJJbk1haW5U
aXRsZSwgc291cmNlQ29kZVRpbWVsaW5lLnNvdXJjZUNvZGVMb2NhdGlvbiwgc291cmNlQ29kZVRp
bWVsaW5lKTsKIAotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1l
bGluZVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9zb3VyY2VDb2RlVGltZWxp
bmUgPSBzb3VyY2VDb2RlVGltZWxpbmU7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBy
ZWNvcmQ6IHVuZGVmaW5lZCwKKyAgICBnZXQgcmVjb3JkKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB1bmRlZmluZWQ7CisgICAgfQogCiAgICAgZ2V0IHNvdXJjZUNvZGVUaW1lbGluZSgpCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U291cmNlQ29kZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU291cmNlQ29kZVRyZWVFbGVtZW50LmpzCmluZGV4IDg3MDNkN2IuLjM1NzM0
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NvdXJjZUNvZGVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI0ICsyMywyMiBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzb3VyY2VDb2RlLCBjbGFzc05hbWVz
LCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKK1dlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQgPSBjbGFzcyBTb3VyY2VDb2RlVHJlZUVsZW1l
bnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50CiB7Ci0gICAgY29u
c29sZS5hc3NlcnQoc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
KTsKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VDb2RlLCBjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0
bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZSk7
CiAKLSAgICBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50LmNhbGwodGhpcywgY2xh
c3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCB8fCBzb3VyY2VDb2Rl
LCBoYXNDaGlsZHJlbik7CisgICAgICAgIHN1cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRs
ZSwgcmVwcmVzZW50ZWRPYmplY3QgfHwgc291cmNlQ29kZSwgaGFzQ2hpbGRyZW4pOwogCi0gICAg
dGhpcy5zbWFsbCA9IHRydWU7CisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwogCi0gICAgdGhp
cy5fdXBkYXRlU291cmNlQ29kZShzb3VyY2VDb2RlKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
LkZvbGRlcml6ZWRUcmVlRWxlbWVudC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX3VwZGF0ZVNv
dXJjZUNvZGUoc291cmNlQ29kZSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICB1cGRh
dGVTb3VyY2VNYXBSZXNvdXJjZXM6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVTb3VyY2VNYXBSZXNv
dXJjZXMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lIHx8ICF0aGlzLnRy
ZWVPdXRsaW5lLmluY2x1ZGVTb3VyY2VNYXBSZXNvdXJjZUNoaWxkcmVuKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNTAsMTggKzQ4LDE4IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbikKICAg
ICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IE92ZXJyaWRlcyBmcm9tIFRyZWVFbGVtZW50CiAKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQor
ICAgIG9uYXR0YWNoKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVs
ZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoLmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy51cGRh
dGVTb3VyY2VNYXBSZXNvdXJjZXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIG9ucG9wdWxhdGU6
IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy50
cmVlT3V0bGluZSB8fCAhdGhpcy50cmVlT3V0bGluZS5pbmNsdWRlU291cmNlTWFwUmVzb3VyY2VD
aGlsZHJlbikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCwxMSArMTI4LDExIEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkKICAgICAgICAgICAg
IGZpbmRBbmRDb21iaW5lRm9sZGVyQ2hhaW5zKHRoaXMuY2hpbGRyZW5baV0sIG51bGwpOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBjcmVhdGVGb2xkZXJzQXNOZWVk
ZWRGb3JTdWJwYXRoOiBmdW5jdGlvbihzdWJwYXRoKQorICAgIGNyZWF0ZUZvbGRlcnNBc05lZWRl
ZEZvclN1YnBhdGgoc3VicGF0aCkKICAgICB7CiAgICAgICAgIGlmICghc3VicGF0aCkKICAgICAg
ICAgICAgIHJldHVybiB0aGlzOwpAQCAtMTY5LDkgKzE2Nyw5IEBAIFdlYkluc3BlY3Rvci5Tb3Vy
Y2VDb2RlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIGN1cnJlbnRGb2xkZXJUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIGRlc2Nl
bmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50VHlwZURpZENoYW5nZTogZnVuY3Rpb24oY2hpbGRUcmVl
RWxlbWVudCwgb2xkVHlwZSkKKyAgICBkZXNjZW5kYW50UmVzb3VyY2VUcmVlRWxlbWVudFR5cGVE
aWRDaGFuZ2UoY2hpbGRUcmVlRWxlbWVudCwgb2xkVHlwZSkKICAgICB7CiAgICAgICAgIC8vIENh
bGxlZCBieSBkZXNjZW5kYW50IFNvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnRzLgogCkBAIC0x
ODUsMTEgKzE4MywxMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBpZiAod2FzU2VsZWN0ZWQpCiAgICAgICAgICAgICBjaGlsZFRy
ZWVFbGVtZW50LnJldmVhbEFuZFNlbGVjdCh0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQgKFJlc291cmNlVHJlZUVsZW1lbnQgY2FsbHMg
dGhpcyB3aGVuIGl0cyBSZXNvdXJjZSBjaGFuZ2VzIGR5bmFtaWNhbGx5IGZvciBGcmFtZXMpCiAK
LSAgICBfdXBkYXRlU291cmNlQ29kZTogZnVuY3Rpb24oc291cmNlQ29kZSkKKyAgICBfdXBkYXRl
U291cmNlQ29kZShzb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc291
cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlTWFwUmVz
b3VyY2VUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQuanMKaW5kZXggNWQxYjQ4NC4uMDg3
MjJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50Lmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMywyNSArMjMsMjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudCA9IGZ1bmN0aW9u
KHNvdXJjZU1hcFJlc291cmNlLCByZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5Tb3Vy
Y2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50ID0gY2xhc3MgU291cmNlTWFwUmVzb3VyY2VUcmVlRWxl
bWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50CiB7Ci0gICAgY29u
c29sZS5hc3NlcnQoc291cmNlTWFwUmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291
cmNlTWFwUmVzb3VyY2UpOwotCi0gICAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQu
Y2FsbCh0aGlzLCBzb3VyY2VNYXBSZXNvdXJjZSk7Ci0KLSAgICBjb25zb2xlLmFzc2VydCh0aGlz
LnJlc291cmNlID09PSBzb3VyY2VNYXBSZXNvdXJjZSk7CisgICAgY29uc3RydWN0b3Ioc291cmNl
TWFwUmVzb3VyY2UsIHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoc291cmNlTWFwUmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlTWFw
UmVzb3VyY2UpOwogCi0gICAgdGhpcy5hZGRDbGFzc05hbWUoV2ViSW5zcGVjdG9yLlNvdXJjZU1h
cFJlc291cmNlVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUpOwotfTsKKyAgICAgICAgc3VwZXIo
c291cmNlTWFwUmVzb3VyY2UpOwogCi1XZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2VUcmVl
RWxlbWVudC5TdHlsZUNsYXNzTmFtZSA9ICJzb3VyY2UtbWFwLXJlc291cmNlIjsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQodGhpcy5yZXNvdXJjZSA9PT0gc291cmNlTWFwUmVzb3VyY2UpOwogCi1X
ZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50
LAorICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgic291cmNlLW1hcC1yZXNvdXJjZSIpOworICAg
IH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgX3VwZGF0ZVRpdGxlczogZnVuY3Rpb24oKQor
ICAgIF91cGRhdGVUaXRsZXMoKQogICAgIHsKICAgICAgICAgdmFyIG9sZE1haW5UaXRsZSA9IHRo
aXMubWFpblRpdGxlOwogICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMucmVzb3VyY2UuZGlz
cGxheU5hbWU7CkBAIC01Niw1ICs1MywzIEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJj
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuY2FsbEZpcnN0QW5j
ZXN0b3JGdW5jdGlvbigiZGVzY2VuZGFudFJlc291cmNlVHJlZUVsZW1lbnRNYWluVGl0bGVEaWRD
aGFuZ2UiLCBbdGhpcywgb2xkTWFpblRpdGxlXSk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9y
LlNvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUcmVlRWxlbWVudC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUcmVl
RWxlbWVudC5qcwppbmRleCBkYzcyZThiLi42Mjg2YTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVHJlZUVsZW1lbnQuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3RvcmFnZVRyZWVF
bGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMywyMyArMjMsMjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24o
Y2xhc3NOYW1lcywgdGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLlN0b3Jh
Z2VUcmVlRWxlbWVudCA9IGNsYXNzIFN0b3JhZ2VUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKIHsKLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50LmNhbGwodGhpcywgY2xhc3NOYW1lcywgdGl0bGUsIG51bGwsIHJlcHJlc2VudGVkT2Jq
ZWN0LCBmYWxzZSk7Ci0KLSAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKLSAgICB0aGlzLmZsYXR0ZW5l
ZCA9IGZhbHNlOwotfTsKKyAgICBjb25zdHJ1Y3RvcihjbGFzc05hbWVzLCB0aXRsZSwgcmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihjbGFzc05hbWVzLCB0aXRsZSwgbnVs
bCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKIAotV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TdG9y
YWdlVHJlZUVsZW1lbnQsCisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOworICAgICAgICB0aGlz
LmZsYXR0ZW5lZCA9IGZhbHNlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGZs
YXR0ZW5lZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZmxhdHRlbmVkOwotICAgIH0s
CisgICAgfQogCiAgICAgc2V0IGZsYXR0ZW5lZChmbGF0dGVuZWQpCiAgICAgewpAQCAtNTcsMTEg
KzU2LDExIEBAIFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLm1haW5UaXRsZSA9IHRoaXMuY2F0ZWdvcnlOYW1lOwogICAgICAgICB0aGlz
LnN1YnRpdGxlID0gdGhpcy5uYW1lOwogICAgICAgICB0aGlzLl91cGRhdGVDaGlsZHJlblRpdGxl
cygpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZUNoaWxk
cmVuVGl0bGVzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUNoaWxkcmVuVGl0bGVzKCkKICAgICB7
CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNoaWxkcmVuW2ldLnVwZGF0ZVRpdGxlcyA9
PT0gImZ1bmN0aW9uIikKQEAgLTY5LDUgKzY4LDMgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9CiB9OwotCi1XZWJJbnNwZWN0
b3IuU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanMK
aW5kZXggNDFmNjM1Ny4uMGRhZTFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3R5bGVEZXRhaWxzUGFuZWwuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDQzICsyMyw0MiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbCA9IGZ1bmN0aW9uKGNsYXNzTmFtZSwgaWRl
bnRpZmllciwgbGFiZWwpCitXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBT
dHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0aGlz
Ll9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxl
bWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7Ci0KLSAgICAvLyBBZGQgdGhpcyBvZmZzZXQtc2Vj
dGlvbnMgY2xhc3MgbmFtZSBzbyB0aGUgc3RpY2t5IGhlYWRlcnMgZG9uJ3Qgb3ZlcmxhcCB0aGUg
bmF2aWdhdGlvbiBiYXIuCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLlN0eWxlRGV0YWlsc1BhbmVsLk9mZnNldFNlY3Rpb25zU3R5bGVDbGFzc05hbWUpOworICAg
IGNvbnN0cnVjdG9yKGNsYXNzTmFtZSwgaWRlbnRpZmllciwgbGFiZWwpCisgICAgeworICAgICAg
ICBzdXBlcigpOwogCi0gICAgdGhpcy5fbmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
LlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0oaWRlbnRpZmllciwgbGFiZWwpOworICAgICAgICB0
aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwogCi0gICAgdGhpcy5fbm9kZVN0eWxl
cyA9IG51bGw7Ci0gICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlOwotfTsKKyAgICAgICAgLy8gQWRk
IHRoaXMgb2Zmc2V0LXNlY3Rpb25zIGNsYXNzIG5hbWUgc28gdGhlIHN0aWNreSBoZWFkZXJzIGRv
bid0IG92ZXJsYXAgdGhlIG5hdmlnYXRpb24gYmFyLgorICAgICAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgib2Zmc2V0LXNlY3Rpb25zIik7CiAKLVdlYkluc3BlY3Rvci5TdHlsZURldGFp
bHNQYW5lbC5PZmZzZXRTZWN0aW9uc1N0eWxlQ2xhc3NOYW1lID0gIm9mZnNldC1zZWN0aW9ucyI7
CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5SYWRpb0J1
dHRvbk5hdmlnYXRpb25JdGVtKGlkZW50aWZpZXIsIGxhYmVsKTsKIAotV2ViSW5zcGVjdG9yLlN0
eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLlN0eWxlRGV0YWlsc1BhbmVsLAorICAgICAgICB0aGlzLl9ub2RlU3R5bGVzID0gbnVsbDsK
KyAgICAgICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlOworICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF2aWdhdGlvbkl0ZW0oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25JdGVtOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IG5vZGVTdHlsZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVTdHlsZXM7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl92aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjcs
MTkgKzY2LDE5IEBAIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3Zpc2libGUgPSB0cnVlOwogCiAgICAgICAgIHRoaXMuX3JlZnJlc2hO
b2RlU3R5bGVzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAg
ICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlOwotICAgIH0s
CisgICAgfQogCi0gICAgd2lkdGhEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB3aWR0aERpZENo
YW5nZSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAg
IH0sCisgICAgfQogCi0gICAgbWFya0FzTmVlZHNSZWZyZXNoOiBmdW5jdGlvbihkb21Ob2RlKQor
ICAgIG1hcmtBc05lZWRzUmVmcmVzaChkb21Ob2RlKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoZG9tTm9kZSk7CiAgICAgICAgIGlmICghZG9tTm9kZSkKQEAgLTEwNSwxMiArMTA0LDEy
IEBAIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgaWYgKHRoaXMuX3Zpc2libGUpCiAgICAgICAgICAgICB0aGlzLl9yZWZyZXNoTm9kZVN0eWxl
cygpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oc2lnbmlmaWNhbnRD
aGFuZ2UpCisgICAgcmVmcmVzaChzaWduaWZpY2FudENoYW5nZSkKICAgICB7CiAgICAgICAgIC8v
IEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2
YXRlCiAKQEAgLTExOSwxNiArMTE4LDE2IEBAIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdl
ci5jYW5Gb3JjZVBzZXVkb0NsYXNzZXMoKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAg
ICByZXR1cm4gdGhpcy5ub2RlU3R5bGVzLm5vZGUuZW5hYmxlZFBzZXVkb0NsYXNzZXMubGVuZ3Ro
ID8gMCA6IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwuTm9Gb3JjZWRQ
c2V1ZG9DbGFzc2VzU2Nyb2xsT2Zmc2V0OwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hO
b2RlU3R5bGVzOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hOb2RlU3R5bGVzKCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5fbm9kZVN0eWxlcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgdGhpcy5fbm9kZVN0eWxlcy5yZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVm
cmVzaFByZXNlcnZpbmdTY3JvbGxQb3NpdGlvbjogZnVuY3Rpb24oc2lnbmlmaWNhbnRDaGFuZ2Up
CisgICAgX3JlZnJlc2hQcmVzZXJ2aW5nU2Nyb2xsUG9zaXRpb24oc2lnbmlmaWNhbnRDaGFuZ2Up
CiAgICAgewogICAgICAgICBzaWduaWZpY2FudENoYW5nZSA9IHRoaXMuX2ZvcmNlU2lnbmlmaWNh
bnRDaGFuZ2UgfHwgc2lnbmlmaWNhbnRDaGFuZ2UgfHwgZmFsc2U7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLl9mb3JjZVNpZ25pZmljYW50Q2hhbmdlOwpAQCAtMTQ1LDE5ICsxNDQsMTcgQEAgV2ViSW5z
cGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhp
cy5lbGVtZW50LnBhcmVudE5vZGUpCiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucGFyZW50Tm9k
ZS5zY3JvbGxUb3AgPSBwcmV2aW91c1Njcm9sbFRvcDsKLSAgICB9LAorICAgIH0KIAotICAgIF9u
b2RlU3R5bGVzUmVmcmVzaGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbm9kZVN0eWxlc1JlZnJl
c2hlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl92aXNpYmxlKQogICAgICAgICAg
ICAgdGhpcy5fcmVmcmVzaFByZXNlcnZpbmdTY3JvbGxQb3NpdGlvbihldmVudC5kYXRhLnNpZ25p
ZmljYW50Q2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9ub2RlU3R5bGVzTmVlZHNSZWZy
ZXNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9ub2RlU3R5bGVzTmVlZHNSZWZyZXNoZWQoZXZl
bnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMu
X3JlZnJlc2hOb2RlU3R5bGVzKCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlN0eWxlRGV0
YWlsc1BhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RleHRDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RleHRDb250ZW50Vmlldy5qcwppbmRleCBkMWM1NjI3Li41ODJjODc4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0Q29u
dGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGV4dENvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNjEgKzIzLDE1NiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcg
PSBmdW5jdGlvbihzdHJpbmcsIG1pbWVUeXBlKQorV2ViSW5zcGVjdG9yLlRleHRDb250ZW50Vmll
dyA9IGNsYXNzIFRleHRDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dwogewotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIHN0cmluZyk7Ci0K
LSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRW
aWV3LlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHRoaXMuX3RleHRFZGl0b3IgPSBuZXcgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3I7Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50Lk51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENo
YW5nZSwgdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0
aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3Iu
RXZlbnQuRm9ybWF0dGluZ0RpZENoYW5nZSwgdGhpcy5fdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRD
aGFuZ2UsIHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHN0cmluZywgbWltZVR5cGUpCisgICAgewor
ICAgICAgICBzdXBlcihzdHJpbmcpOwogCi0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX3RleHRFZGl0b3IuZWxlbWVudCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJ0ZXh0Iik7CiAKLSAgICB0aGlzLl90ZXh0RWRpdG9yLnJlYWRPbmx5ID0gdHJ1ZTsKLSAg
ICB0aGlzLl90ZXh0RWRpdG9yLm1pbWVUeXBlID0gbWltZVR5cGU7Ci0gICAgdGhpcy5fdGV4dEVk
aXRvci5zdHJpbmcgPSBzdHJpbmc7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRleHRFZGl0b3I7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3Vs
dHNEaWRDaGFuZ2UsIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcyk7
CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvci5FdmVudC5Gb3JtYXR0aW5nRGlkQ2hhbmdlLCB0aGlzLl90ZXh0RWRpdG9yRm9y
bWF0dGluZ0RpZENoYW5nZSwgdGhpcyk7CiAKLSAgICB2YXIgY3VybGV5QnJhY2VzSW1hZ2U7Ci0g
ICAgaWYgKFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TKQotICAgICAgICBjdXJs
ZXlCcmFjZXNJbWFnZSA9IHtzcmM6ICJJbWFnZXMvTGVnYWN5L05hdmlnYXRpb25JdGVtQ3VybGV5
QnJhY2VzLnN2ZyIsIHdpZHRoOiAxNiwgaGVpZ2h0OiAxNn07Ci0gICAgZWxzZQotICAgICAgICBj
dXJsZXlCcmFjZXNJbWFnZSA9IHtzcmM6ICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1DdXJsZXlCcmFj
ZXMuc3ZnIiwgd2lkdGg6IDEzLCBoZWlnaHQ6IDEzfTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX3RleHRFZGl0b3IuZWxlbWVudCk7CiAKLSAgICB2YXIgdG9vbFRpcCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJldHR5IHByaW50Iik7Ci0gICAgdmFyIGFjdGl2YXRl
ZFRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9yaWdpbmFsIGZvcm1hdHRpbmciKTsK
LSAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3Bl
Y3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJwcmV0dHktcHJpbnQiLCB0b29sVGlw
LCBhY3RpdmF0ZWRUb29sVGlwLCBjdXJsZXlCcmFjZXNJbWFnZS5zcmMsIGN1cmxleUJyYWNlc0lt
YWdlLndpZHRoLCBjdXJsZXlCcmFjZXNJbWFnZS5oZWlnaHQpOwotICAgIHRoaXMuX3ByZXR0eVBy
aW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlUHJldHR5UHJpbnQs
IHRoaXMpOwotICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxl
ZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuQmVGb3JtYXR0ZWQoKTsKKyAgICAgICAgdGhpcy5fdGV4
dEVkaXRvci5yZWFkT25seSA9IHRydWU7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IubWltZVR5
cGUgPSBtaW1lVHlwZTsKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zdHJpbmcgPSBzdHJpbmc7
CiAKLSAgICB2YXIgdG9vbFRpcFR5cGVzID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHR5
cGUgaW5mb3JtYXRpb24iKTsKLSAgICB2YXIgYWN0aXZhdGVkVG9vbFRpcFR5cGVzID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJIaWRlIHR5cGUgaW5mb3JtYXRpb24iKTsKLSAgICB0aGlzLl9zaG93
VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0
b25OYXZpZ2F0aW9uSXRlbSgic2hvdy10eXBlcyIsIHRvb2xUaXBUeXBlcywgYWN0aXZhdGVkVG9v
bFRpcFR5cGVzLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtVHlwZXMuc3ZnIiwgMTMsIDE0KTsKLSAg
ICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7Ci19
OworICAgICAgICB2YXIgY3VybGV5QnJhY2VzSW1hZ2U7CisgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUykKKyAgICAgICAgICAgIGN1cmxleUJyYWNlc0ltYWdl
ID0ge3NyYzogIkltYWdlcy9MZWdhY3kvTmF2aWdhdGlvbkl0ZW1DdXJsZXlCcmFjZXMuc3ZnIiwg
d2lkdGg6IDE2LCBoZWlnaHQ6IDE2fTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3VybGV5
QnJhY2VzSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQ3VybGV5QnJhY2VzLnN2
ZyIsIHdpZHRoOiAxMywgaGVpZ2h0OiAxM307CiAKLVdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZp
ZXcuU3R5bGVDbGFzc05hbWUgPSAidGV4dCI7CisgICAgICAgIHZhciB0b29sVGlwID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJQcmV0dHkgcHJpbnQiKTsKKyAgICAgICAgdmFyIGFjdGl2YXRlZFRv
b2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk9yaWdpbmFsIGZvcm1hdHRpbmciKTsKKyAg
ICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgicHJldHR5LXByaW50IiwgdG9vbFRp
cCwgYWN0aXZhdGVkVG9vbFRpcCwgY3VybGV5QnJhY2VzSW1hZ2Uuc3JjLCBjdXJsZXlCcmFjZXNJ
bWFnZS53aWR0aCwgY3VybGV5QnJhY2VzSW1hZ2UuaGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fcHJl
dHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVQcmV0dHlQ
cmludCwgdGhpcyk7CisgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0
ZW0uZW5hYmxlZCA9IHRoaXMuX3RleHRFZGl0b3IuY2FuQmVGb3JtYXR0ZWQoKTsKIAotV2ViSW5z
cGVjdG9yLlRleHRDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcsCisgICAgICAgIHZhciB0b29sVGlwVHlwZXMgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdHlwZSBpbmZvcm1hdGlvbiIpOworICAgICAgICB2
YXIgYWN0aXZhdGVkVG9vbFRpcFR5cGVzID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIaWRlIHR5
cGUgaW5mb3JtYXRpb24iKTsKKyAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlv
bkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNo
b3ctdHlwZXMiLCB0b29sVGlwVHlwZXMsIGFjdGl2YXRlZFRvb2xUaXBUeXBlcywgIkltYWdlcy9O
YXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIsIDEzLCAxNCk7CisgICAgICAgIHRoaXMuX3Nob3dUeXBl
c0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCB0ZXh0RWRpdG9yKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll90ZXh0RWRpdG9yOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygp
CiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlv
bkl0ZW0sIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtXTsKLSAgICB9LAorICAg
IH0KIAotICAgIHJldmVhbFBvc2l0aW9uOiBmdW5jdGlvbihwb3NpdGlvbiwgdGV4dFJhbmdlVG9T
ZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQpCisgICAgcmV2ZWFsUG9zaXRpb24ocG9zaXRpb24sIHRl
eHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQogICAgIHsKICAgICAgICAgdGhpcy5f
dGV4dEVkaXRvci5yZXZlYWxQb3NpdGlvbihwb3NpdGlvbiwgdGV4dFJhbmdlVG9TZWxlY3QsIGZv
cmNlVW5mb3JtYXR0ZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkK
KyAgICBzaG93bigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJv
dG90eXBlLnNob3duLmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zaG93
bigpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVu
KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUuaGlk
ZGVuLmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5oaWRkZW4oKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAg
ewogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZC5jYWxs
KHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuY2xvc2UoKTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBzdXBwb3J0c1NhdmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2F2ZURhdGEoKQogICAgIHsKICAgICAgICAgdmFy
IHVybCA9ICJ3ZWItaW5zcGVjdG9yOi8vLyIgKyBlbmNvZGVVUkkoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJVbnRpdGxlZCIpKSArICIudHh0IjsKICAgICAgICAgcmV0dXJuIHt1cmwsIGNvbnRlbnQ6
IHRoaXMuX3RleHRFZGl0b3Iuc3RyaW5nLCBmb3JjZVNhdmVBczogdHJ1ZX07Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc3VwcG9ydHNTZWFyY2goKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbnVtYmVyT2ZTZWFyY2hSZXN1bHRzKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWRpdG9yLm51bWJlck9mU2VhcmNoUmVzdWx0
czsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoYXNQZXJmb3JtZWRTZWFyY2goKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFZGl0b3IuY3VycmVudFNlYXJjaFF1ZXJ5ICE9PSBu
dWxsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNl
YXJjaFJlc3VsdChyZXZlYWwpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmF1dG9t
YXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdCA9IHJldmVhbDsKLSAgICB9LAorICAgIH0K
IAotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5KQorICAgIHBlcmZvcm1TZWFyY2go
cXVlcnkpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnBlcmZvcm1TZWFyY2gocXVl
cnkpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VhcmNoQ2xlYXJlZDogZnVuY3Rpb24oKQorICAg
IHNlYXJjaENsZWFyZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zZWFyY2hD
bGVhcmVkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb246
IGZ1bmN0aW9uKCkKKyAgICBzZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb24oKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3RleHRFZGl0b3Iuc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdDogZnVuY3Rpb24o
Y2hhbmdlRm9jdXMpCisgICAgcmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMp
CiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnJldmVhbFByZXZpb3VzU2VhcmNoUmVz
dWx0KGNoYW5nZUZvY3VzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbE5leHRTZWFyY2hS
ZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQorICAgIHJldmVhbE5leHRTZWFyY2hSZXN1bHQo
Y2hhbmdlRm9jdXMpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnJldmVhbE5leHRT
ZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5
b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRoaXMu
X3RleHRFZGl0b3IudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2
YXRlCiAKLSAgICBfdG9nZ2xlUHJldHR5UHJpbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90b2dn
bGVQcmV0dHlQcmludChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBhY3RpdmF0ZWQgPSAhdGhp
cy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQ7CiAgICAgICAgIHRo
aXMuX3RleHRFZGl0b3IuZm9ybWF0dGVkID0gYWN0aXZhdGVkOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3RleHRFZGl0b3JGb3JtYXR0aW5nRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBf
dGV4dEVkaXRvckZvcm1hdHRpbmdEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlz
Ll9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IHRoaXMuX3RleHRF
ZGl0b3IuZm9ybWF0dGVkOwotICAgIH0sCisgICAgfQogCi0gICAgX251bWJlck9mU2VhcmNoUmVz
dWx0c0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX251bWJlck9mU2VhcmNoUmVzdWx0
c0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3Vs
dHNEaWRDaGFuZ2UpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
ZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGV4dEVkaXRvci5qcwppbmRleCAzZWYzOGI5Li4xNjg0OTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9yLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDkwICsyMyw2NSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5UZXh0RWRpdG9yID0gZnVuY3Rpb24oZWxlbWVudCwgbWltZVR5cGUsIGRl
bGVnYXRlKQorV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IgPSBjbGFzcyBUZXh0RWRpdG9yIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8v
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHZhciB0ZXh0ID0gKGVsZW1l
bnQgPyBlbGVtZW50LnRleHRDb250ZW50IDogIiIpOwotICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVt
ZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5TdHlsZUNsYXNzTmFtZSk7Ci0g
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGln
aHRlZFN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHRoaXMuX2NvZGVNaXJyb3IgPSBDb2RlTWlycm9y
KHRoaXMuZWxlbWVudCwgewotICAgICAgICByZWFkT25seTogdHJ1ZSwKLSAgICAgICAgaW5kZW50
V2l0aFRhYnM6IHRydWUsCi0gICAgICAgIGluZGVudFVuaXQ6IDQsCi0gICAgICAgIGxpbmVOdW1i
ZXJzOiB0cnVlLAotICAgICAgICBsaW5lV3JhcHBpbmc6IHRydWUsCi0gICAgICAgIG1hdGNoQnJh
Y2tldHM6IHRydWUsCi0gICAgICAgIGF1dG9DbG9zZUJyYWNrZXRzOiB0cnVlCi0gICAgfSk7Ci0K
LSAgICB0aGlzLl9jb2RlTWlycm9yLm9uKCJjaGFuZ2UiLCB0aGlzLl9jb250ZW50Q2hhbmdlZC5i
aW5kKHRoaXMpKTsKLSAgICB0aGlzLl9jb2RlTWlycm9yLm9uKCJndXR0ZXJDbGljayIsIHRoaXMu
X2d1dHRlck1vdXNlRG93bi5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9jb2RlTWlycm9yLm9uKCJn
dXR0ZXJDb250ZXh0TWVudSIsIHRoaXMuX2d1dHRlckNvbnRleHRNZW51LmJpbmQodGhpcykpOwot
ICAgIHRoaXMuX2NvZGVNaXJyb3IuZ2V0U2Nyb2xsZXJFbGVtZW50KCkuYWRkRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9vcGVuQ2xpY2tlZExpbmtzLmJpbmQodGhpcyksIHRydWUpOwotCi0g
ICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvZGVNaXJy
b3JDb21wbGV0aW9uQ29udHJvbGxlcih0aGlzLl9jb2RlTWlycm9yLCB0aGlzKTsKLSAgICB0aGlz
Ll90b2tlblRyYWNraW5nQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRv
a2VuVHJhY2tpbmdDb250cm9sbGVyKHRoaXMuX2NvZGVNaXJyb3IsIHRoaXMpOwotCi0gICAgdGhp
cy5faW5pdGlhbFN0cmluZ05vdFNldCA9IHRydWU7Ci0KLSAgICB0aGlzLm1pbWVUeXBlID0gbWlt
ZVR5cGU7CisgICAgY29uc3RydWN0b3IoZWxlbWVudCwgbWltZVR5cGUsIGRlbGVnYXRlKQorICAg
IHsKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB2YXIgdGV4dCA9IChlbGVtZW50ID8gZWxl
bWVudC50ZXh0Q29udGVudCA6ICIiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQg
fHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgidGV4dC1lZGl0b3IiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsK
KworICAgICAgICB0aGlzLl9jb2RlTWlycm9yID0gQ29kZU1pcnJvcih0aGlzLmVsZW1lbnQsIHsK
KyAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLAorICAgICAgICAgICAgaW5kZW50V2l0aFRhYnM6
IHRydWUsCisgICAgICAgICAgICBpbmRlbnRVbml0OiA0LAorICAgICAgICAgICAgbGluZU51bWJl
cnM6IHRydWUsCisgICAgICAgICAgICBsaW5lV3JhcHBpbmc6IHRydWUsCisgICAgICAgICAgICBt
YXRjaEJyYWNrZXRzOiB0cnVlLAorICAgICAgICAgICAgYXV0b0Nsb3NlQnJhY2tldHM6IHRydWUK
KyAgICAgICAgfSk7CiAKLSAgICB0aGlzLl9icmVha3BvaW50cyA9IHt9OwotICAgIHRoaXMuX2V4
ZWN1dGlvbkxpbmVOdW1iZXIgPSBOYU47Ci0gICAgdGhpcy5fZXhlY3V0aW9uQ29sdW1uTnVtYmVy
ID0gTmFOOworICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm9uKCJjaGFuZ2UiLCB0aGlzLl9jb250
ZW50Q2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5vbigiZ3V0
dGVyQ2xpY2siLCB0aGlzLl9ndXR0ZXJNb3VzZURvd24uYmluZCh0aGlzKSk7CisgICAgICAgIHRo
aXMuX2NvZGVNaXJyb3Iub24oImd1dHRlckNvbnRleHRNZW51IiwgdGhpcy5fZ3V0dGVyQ29udGV4
dE1lbnUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IuZ2V0U2Nyb2xsZXJF
bGVtZW50KCkuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9vcGVuQ2xpY2tlZExpbmtz
LmJpbmQodGhpcyksIHRydWUpOwogCi0gICAgdGhpcy5fc2VhcmNoUXVlcnkgPSBudWxsOwotICAg
IHRoaXMuX3NlYXJjaFJlc3VsdHMgPSBbXTsKLSAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0
SW5kZXggPSAtMTsKLSAgICB0aGlzLl9pZ25vcmVDb2RlTWlycm9yQ29udGVudERpZENoYW5nZUV2
ZW50ID0gMDsKKyAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRyb2xsZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JDb21wbGV0aW9uQ29udHJvbGxlcih0aGlzLl9jb2RlTWlycm9yLCB0
aGlzKTsKKyAgICAgICAgdGhpcy5fdG9rZW5UcmFja2luZ0NvbnRyb2xsZXIgPSBuZXcgV2ViSW5z
cGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxlcih0aGlzLl9jb2RlTWlycm9y
LCB0aGlzKTsKIAotICAgIHRoaXMuX2Zvcm1hdHRlZCA9IGZhbHNlOwotICAgIHRoaXMuX2Zvcm1h
dHRlclNvdXJjZU1hcCA9IG51bGw7CisgICAgICAgIHRoaXMuX2luaXRpYWxTdHJpbmdOb3RTZXQg
PSB0cnVlOwogCi0gICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwotfTsKKyAg
ICAgICAgdGhpcy5taW1lVHlwZSA9IG1pbWVUeXBlOwogCi0vLyBGSVhNRTogTW92ZSB0byBhIFdl
Ykluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYklu
c3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yKTsKKyAgICAgICAgdGhpcy5fYnJlYWtwb2ludHMgPSB7fTsKKyAgICAg
ICAgdGhpcy5fZXhlY3V0aW9uTGluZU51bWJlciA9IE5hTjsKKyAgICAgICAgdGhpcy5fZXhlY3V0
aW9uQ29sdW1uTnVtYmVyID0gTmFOOwogCi1XZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5TdHlsZUNs
YXNzTmFtZSA9ICJ0ZXh0LWVkaXRvciI7Ci1XZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5IaWdobGln
aHRlZFN0eWxlQ2xhc3NOYW1lID0gImhpZ2hsaWdodGVkIjsKLVdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yLlNlYXJjaFJlc3VsdFN0eWxlQ2xhc3NOYW1lID0gInNlYXJjaC1yZXN1bHQiOwotV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3IuSGFzQnJlYWtwb2ludFN0eWxlQ2xhc3NOYW1lID0gImhhcy1icmVh
a3BvaW50IjsKLVdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkJyZWFrcG9pbnRSZXNvbHZlZFN0eWxl
Q2xhc3NOYW1lID0gImJyZWFrcG9pbnQtcmVzb2x2ZWQiOwotV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3IuQnJlYWtwb2ludEF1dG9Db250aW51ZVN0eWxlQ2xhc3NOYW1lID0gImJyZWFrcG9pbnQtYXV0
by1jb250aW51ZSI7Ci1XZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5CcmVha3BvaW50RGlzYWJsZWRT
dHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LWRpc2FibGVkIjsKLVdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yLk11bHRpcGxlQnJlYWtwb2ludHNTdHlsZUNsYXNzTmFtZSA9ICJtdWx0aXBsZS1icmVh
a3BvaW50cyI7Ci1XZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FeGVjdXRpb25MaW5lU3R5bGVDbGFz
c05hbWUgPSAiZXhlY3V0aW9uLWxpbmUiOwotV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuQm91bmN5
SGlnaGxpZ2h0U3R5bGVDbGFzc05hbWUgPSAiYm91bmN5LWhpZ2hsaWdodCI7Ci1XZWJJbnNwZWN0
b3IuVGV4dEVkaXRvci5OdW1iZXJPZkZpbmRzUGVyU2VhcmNoQmF0Y2ggPSAxMDsKLVdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yLkhpZ2hsaWdodEFuaW1hdGlvbkR1cmF0aW9uID0gMjAwMDsKKyAgICAg
ICAgdGhpcy5fc2VhcmNoUXVlcnkgPSBudWxsOworICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRz
ID0gW107CisgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IC0xOworICAg
ICAgICB0aGlzLl9pZ25vcmVDb2RlTWlycm9yQ29udGVudERpZENoYW5nZUV2ZW50ID0gMDsKIAot
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQgPSB7Ci0gICAgRXhlY3V0aW9uTGluZU51bWJl
ckRpZENoYW5nZTogInRleHQtZWRpdG9yLWV4ZWN1dGlvbi1saW5lLW51bWJlci1kaWQtY2hhbmdl
IiwKLSAgICBOdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2U6ICJ0ZXh0LWVkaXRvci1udW1i
ZXItb2Ytc2VhcmNoLXJlc3VsdHMtZGlkLWNoYW5nZSIsCi0gICAgQ29udGVudERpZENoYW5nZTog
InRleHQtZWRpdG9yLWNvbnRlbnQtZGlkLWNoYW5nZSIsCi0gICAgRm9ybWF0dGluZ0RpZENoYW5n
ZTogInRleHQtZWRpdG9yLWZvcm1hdHRpbmctZGlkLWNoYW5nZSIKLX07CisgICAgICAgIHRoaXMu
X2Zvcm1hdHRlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9mb3JtYXR0ZXJTb3VyY2VNYXAgPSBu
dWxsOwogCi1XZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLAorICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9
IGRlbGVnYXRlIHx8IG51bGw7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxl
bWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBzdHJpbmcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVN
aXJyb3IuZ2V0VmFsdWUoKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdHJpbmcobmV3U3Ry
aW5nKQogICAgIHsKQEAgLTE0NiwyMiArMTIxLDIyIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5vcGVyYXRpb24odXBkYXRl
LmJpbmQodGhpcykpOwogICAgICAgICB0aGlzLl9pZ25vcmVDb2RlTWlycm9yQ29udGVudERpZENo
YW5nZUV2ZW50LS07CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2lnbm9yZUNvZGVNaXJy
b3JDb250ZW50RGlkQ2hhbmdlRXZlbnQgPj0gMCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
cmVhZE9ubHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0T3B0
aW9uKCJyZWFkT25seSIpIHx8IGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJlYWRP
bmx5KHJlYWRPbmx5KQogICAgIHsKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRPcHRpb24o
InJlYWRPbmx5IiwgcmVhZE9ubHkpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZvcm1hdHRl
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZm9ybWF0dGVkOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGZvcm1hdHRlZChmb3JtYXR0ZWQpCiAgICAgewpAQCAtMTgwLDUyICsxNTUs
NTIgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9mb3JtYXR0ZWQgPSBmb3JtYXR0ZWQ7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuRm9ybWF0dGluZ0RpZENoYW5n
ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgYXV0b0Zvcm1hdChhdXRvKQogICAgIHsKICAg
ICAgICAgdGhpcy5fYXV0b0Zvcm1hdCA9IGF1dG87Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYXNG
b3JtYXR0ZXI6IGZ1bmN0aW9uKCkKKyAgICBoYXNGb3JtYXR0ZXIoKQogICAgIHsKLSAgICAgICAg
Y29uc3Qgc3VwcG9ydGVkTW9kZXMgPSB7CisgICAgICAgIHZhciBzdXBwb3J0ZWRNb2RlcyA9IHsK
ICAgICAgICAgICAgICJqYXZhc2NyaXB0IjogdHJ1ZSwKICAgICAgICAgICAgICJjc3MiOiB0cnVl
LAogICAgICAgICB9OwogCiAgICAgICAgIHZhciBtb2RlID0gdGhpcy5fY29kZU1pcnJvci5nZXRN
b2RlKCk7CiAgICAgICAgIHJldHVybiBtb2RlLm5hbWUgaW4gc3VwcG9ydGVkTW9kZXM7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBjYW5CZUZvcm1hdHRlZDogZnVuY3Rpb24oKQorICAgIGNhbkJlRm9y
bWF0dGVkKCkKICAgICB7CiAgICAgICAgIC8vIENhbiBiZSBvdmVycmlkZW4gYnkgc3ViY2xhc3Nl
cy4KICAgICAgICAgcmV0dXJuIHRoaXMuaGFzRm9ybWF0dGVyKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBjYW5TaG93VHlwZUFubm90YXRpb25zOiBmdW5jdGlvbigpCisgICAgY2FuU2hvd1R5cGVB
bm5vdGF0aW9ucygpCiAgICAgewogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgc2VsZWN0ZWRUZXh0UmFuZ2UoKQogICAgIHsKICAgICAgICAgdmFyIHN0YXJ0
ID0gdGhpcy5fY29kZU1pcnJvci5nZXRDdXJzb3IodHJ1ZSk7CiAgICAgICAgIHZhciBlbmQgPSB0
aGlzLl9jb2RlTWlycm9yLmdldEN1cnNvcihmYWxzZSk7CiAgICAgICAgIHJldHVybiB0aGlzLl90
ZXh0UmFuZ2VGcm9tQ29kZU1pcnJvclBvc2l0aW9uKHN0YXJ0LCBlbmQpOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IHNlbGVjdGVkVGV4dFJhbmdlKHRleHRSYW5nZSkKICAgICB7CiAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHRoaXMuX2NvZGVNaXJyb3JQb3NpdGlvbkZyb21UZXh0UmFuZ2UodGV4
dFJhbmdlKTsKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRTZWxlY3Rpb24ocG9zaXRpb24u
c3RhcnQsIHBvc2l0aW9uLmVuZCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbWltZVR5cGUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21pbWVUeXBlOwotICAgIH0sCisgICAgfQog
CiAgICAgc2V0IG1pbWVUeXBlKG5ld01JTUVUeXBlKQogICAgIHsKQEAgLTIzMywxMiArMjA4LDEy
IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlz
Ll9taW1lVHlwZSA9IG5ld01JTUVUeXBlOwogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldE9w
dGlvbigibW9kZSIsIG5ld01JTUVUeXBlKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBleGVj
dXRpb25MaW5lTnVtYmVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9leGVjdXRpb25M
aW5lTnVtYmVyOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGV4ZWN1dGlvbkxpbmVOdW1iZXIo
bGluZU51bWJlcikKICAgICB7CkBAIC0yNTIsNDcgKzIyNyw0NyBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFN0aWxsIGRpc3BhdGNoIHRoZSBldmVu
dCBldmVuIGlmIHRoZSBudW1iZXIgZGlkbid0IGNoYW5nZS4gVGhlIGV4ZWN1dGlvbiBzdGF0ZSBz
dGlsbAogICAgICAgICAvLyBjb3VsZCBoYXZlIGNoYW5nZWQgKGUuZy4gY29udGludWluZyBpbiBh
IGxvb3Agd2l0aCBhIGJyZWFrcG9pbnQgaW5zaWRlKS4KICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuRXhlY3V0aW9uTGlu
ZU51bWJlckRpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZXhlY3V0aW9uQ29s
dW1uTnVtYmVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9leGVjdXRpb25Db2x1bW5O
dW1iZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZXhlY3V0aW9uQ29sdW1uTnVtYmVyKGNv
bHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIHRoaXMuX2V4ZWN1dGlvbkNvbHVtbk51bWJlciA9
IGNvbHVtbk51bWJlcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmb3JtYXR0ZXJTb3VyY2VN
YXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlclNvdXJjZU1hcDsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCB0b2tlblRyYWNraW5nQ29udHJvbGxlcigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fdG9rZW5UcmFja2luZ0NvbnRyb2xsZXI7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZGVsZWdhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rl
bGVnYXRlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRlbGVnYXRlKG5ld0RlbGVnYXRlKQog
ICAgIHsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBuZXdEZWxlZ2F0ZSB8fCBudWxsOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IG51bWJlck9mU2VhcmNoUmVzdWx0cygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGg7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgY3VycmVudFNlYXJjaFF1ZXJ5KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9zZWFyY2hRdWVyeTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhdXRvbWF0aWNhbGx5UmV2
ZWFsRmlyc3RTZWFyY2hSZXN1bHQocmV2ZWFsKQogICAgIHsKQEAgLTMwMyw5ICsyNzgsOSBAQCBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhp
cy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID09PSAtMSkKICAgICAgICAgICAgICAgICB0aGlz
Ll9yZXZlYWxGaXJzdFNlYXJjaFJlc3VsdEFmdGVyQ3Vyc29yKCk7CiAgICAgICAgIH0KLSAgICB9
LAorICAgIH0KIAotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5KQorICAgIHBlcmZv
cm1TZWFyY2gocXVlcnkpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VhcmNoUXVlcnkgPT09
IHF1ZXJ5KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzY3LDkgKzM0Miw5IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBTdGFydCB0aGUgc2Vh
cmNoLgogICAgICAgICBib3VuZEJhdGNoU2VhcmNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBh
ZGRTZWFyY2hSZXN1bHRzOiBmdW5jdGlvbih0ZXh0UmFuZ2VzKQorICAgIGFkZFNlYXJjaFJlc3Vs
dHModGV4dFJhbmdlcykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRSYW5nZXMp
OwogICAgICAgICBpZiAoIXRleHRSYW5nZXMgfHwgIXRleHRSYW5nZXMubGVuZ3RoKQpAQCAtMzkx
LDkgKzM2Niw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub3BlcmF0aW9uKG1hcmtSYW5nZXMuYmlu
ZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWFyY2hDbGVhcmVkOiBmdW5jdGlvbigp
CisgICAgc2VhcmNoQ2xlYXJlZCgpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBjbGVhclJlc3Vs
dHMoKSB7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlYXJjaFJlc3Vs
dHMubGVuZ3RoOyArK2kpCkBAIC00MDUsMTcgKzM4MCwxNyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gbnVsbDsKICAg
ICAgICAgdGhpcy5fc2VhcmNoUmVzdWx0cyA9IFtdOwogICAgICAgICB0aGlzLl9jdXJyZW50U2Vh
cmNoUmVzdWx0SW5kZXggPSAtMTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlYXJjaFF1ZXJ5V2l0
aFNlbGVjdGlvbjogZnVuY3Rpb24oKQorICAgIHNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX2NvZGVNaXJyb3Iuc29tZXRoaW5nU2VsZWN0ZWQoKSkK
ICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWly
cm9yLmdldFNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsUHJldmlvdXNT
ZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQorICAgIHJldmVhbFByZXZpb3VzU2Vh
cmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hS
ZXN1bHRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQzMSw5ICs0MDYsOSBAQCBX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9j
dXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCAtIDE7
CiAKICAgICAgICAgdGhpcy5fcmV2ZWFsU2VhcmNoUmVzdWx0KHRoaXMuX3NlYXJjaFJlc3VsdHNb
dGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4XSwgY2hhbmdlRm9jdXMsIC0xKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHJldmVhbE5leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZv
Y3VzKQorICAgIHJldmVhbE5leHRTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNDQ5LDI1ICs0MjQsMjUgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gMDsKIAog
ICAgICAgICB0aGlzLl9yZXZlYWxTZWFyY2hSZXN1bHQodGhpcy5fc2VhcmNoUmVzdWx0c1t0aGlz
Ll9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXhdLCBjaGFuZ2VGb2N1cywgMSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBsaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAgIGxpbmUobGluZU51bWJl
cikKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdldExpbmUobGluZU51
bWJlcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRUZXh0SW5SYW5nZTogZnVuY3Rpb24oc3Rh
cnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pCisgICAgZ2V0VGV4dEluUmFuZ2Uoc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5n
ZXRSYW5nZShzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbik7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBhZGRTdHlsZVRvVGV4dFJhbmdlOiBmdW5jdGlvbihzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlv
biwgc3R5bGVDbGFzc05hbWUpCisgICAgYWRkU3R5bGVUb1RleHRSYW5nZShzdGFydFBvc2l0aW9u
LCBlbmRQb3NpdGlvbiwgc3R5bGVDbGFzc05hbWUpCiAgICAgewogICAgICAgICBlbmRQb3NpdGlv
bi5jaCArPSAxOwogICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5nZXREb2MoKS5tYXJr
VGV4dChzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwge2NsYXNzTmFtZTogc3R5bGVDbGFzc05h
bWUsIGluY2x1c2l2ZUxlZnQ6IHRydWUsIGluY2x1c2l2ZVJpZ2h0OiB0cnVlfSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICByZXZlYWxQb3NpdGlvbjogZnVuY3Rpb24ocG9zaXRpb24sIHRleHRSYW5n
ZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkLCBub0hpZ2hsaWdodCkKKyAgICByZXZlYWxQb3Np
dGlvbihwb3NpdGlvbiwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQsIG5vSGln
aGxpZ2h0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocG9zaXRpb24gPT09IHVuZGVm
aW5lZCB8fCBwb3NpdGlvbiBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRp
b24sICJyZXZlYWxQb3NpdGlvbiBjYWxsZWQgd2l0aG91dCBhIFNvdXJjZUNvZGVQb3NpdGlvbiIp
OwogICAgICAgICBpZiAoIShwb3NpdGlvbiBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlUG9zaXRpb24pKQpAQCAtNTI0LDE0ICs0OTksMTQgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3IucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5v
cGVyYXRpb24ocmV2ZWFsQW5kSGlnaGxpZ2h0TGluZS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oZm9yY2UpCisgICAgdXBkYXRlTGF5b3V0
KGZvcmNlKQogICAgIHsKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5yZWZyZXNoKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX3Zpc2libGUgPSB0cnVlOwogCkBAIC01NDIsMTQgKzUxNywxNCBAQCBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFRoaXMgbmVlZHMg
dG8gYmUgZG9uZSBhcyBhIHNlcGFyYXRlIG9wZXJhdGlvbiBmcm9tIHRoZSByZWZyZXNoCiAgICAg
ICAgIC8vIHNvIHRoYXQgdGhlIHNjcm9sbEluZm8gY29vcmRpbmF0ZXMgYXJlIGNvcnJlY3QuCiAg
ICAgICAgIHRoaXMuX3JldmVhbFBlbmRpbmdQb3NpdGlvbklmUG9zc2libGUoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAg
ICAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXRCcmVh
a3BvaW50SW5mb0ZvckxpbmVBbmRDb2x1bW46IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgYnJlYWtwb2ludEluZm8pCisgICAgc2V0QnJlYWtwb2ludEluZm9Gb3JMaW5lQW5kQ29s
dW1uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYnJlYWtwb2ludEluZm8pCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5faWdub3JlU2V0QnJlYWtwb2ludEluZm9DYWxscykKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTU1OCw5ICs1MzMsOSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50VG9MaW5lQW5kQ29sdW1u
V2l0aEluZm8obGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBicmVha3BvaW50SW5mbyk7CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnRGcm9tTGluZUFuZENv
bHVtbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBk
YXRlQnJlYWtwb2ludExpbmVBbmRDb2x1bW46IGZ1bmN0aW9uKG9sZExpbmVOdW1iZXIsIG9sZENv
bHVtbk51bWJlciwgbmV3TGluZU51bWJlciwgbmV3Q29sdW1uTnVtYmVyKQorICAgIHVwZGF0ZUJy
ZWFrcG9pbnRMaW5lQW5kQ29sdW1uKG9sZExpbmVOdW1iZXIsIG9sZENvbHVtbk51bWJlciwgbmV3
TGluZU51bWJlciwgbmV3Q29sdW1uTnVtYmVyKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fYnJlYWtwb2ludHNbb2xkTGluZU51bWJlcl0pOwogICAgICAgICBpZiAoIXRoaXMu
X2JyZWFrcG9pbnRzW29sZExpbmVOdW1iZXJdKQpAQCAtNTczLDE4ICs1NDgsMTggQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB2YXIgYnJlYWtwb2ludElu
Zm8gPSB0aGlzLl9icmVha3BvaW50c1tvbGRMaW5lTnVtYmVyXVtvbGRDb2x1bW5OdW1iZXJdOwog
ICAgICAgICB0aGlzLl9yZW1vdmVCcmVha3BvaW50RnJvbUxpbmVBbmRDb2x1bW4ob2xkTGluZU51
bWJlciwgb2xkQ29sdW1uTnVtYmVyKTsKICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludFRvTGlu
ZUFuZENvbHVtbldpdGhJbmZvKG5ld0xpbmVOdW1iZXIsIG5ld0NvbHVtbk51bWJlciwgYnJlYWtw
b2ludEluZm8pOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkU3R5bGVDbGFzc1RvTGluZTogZnVu
Y3Rpb24obGluZU51bWJlciwgc3R5bGVDbGFzc05hbWUpCisgICAgYWRkU3R5bGVDbGFzc1RvTGlu
ZShsaW5lTnVtYmVyLCBzdHlsZUNsYXNzTmFtZSkKICAgICB7CiAgICAgICAgIHZhciBsaW5lSGFu
ZGxlID0gdGhpcy5fY29kZU1pcnJvci5nZXRMaW5lSGFuZGxlKGxpbmVOdW1iZXIpOwogICAgICAg
ICBpZiAoIWxpbmVIYW5kbGUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICBy
ZXR1cm4gdGhpcy5fY29kZU1pcnJvci5hZGRMaW5lQ2xhc3MobGluZUhhbmRsZSwgIndyYXAiLCBz
dHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVTdHlsZUNsYXNzRnJv
bUxpbmU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIHN0eWxlQ2xhc3NOYW1lKQorICAgIHJlbW92ZVN0
eWxlQ2xhc3NGcm9tTGluZShsaW5lTnVtYmVyLCBzdHlsZUNsYXNzTmFtZSkKICAgICB7CiAgICAg
ICAgIHZhciBsaW5lSGFuZGxlID0gdGhpcy5fY29kZU1pcnJvci5nZXRMaW5lSGFuZGxlKGxpbmVO
dW1iZXIpOwogICAgICAgICBjb25zb2xlLmFzc2VydChsaW5lSGFuZGxlKTsKQEAgLTU5Miw5ICs1
NjcsOSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKIAogICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5yZW1vdmVM
aW5lQ2xhc3MobGluZUhhbmRsZSwgIndyYXAiLCBzdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICB0b2dnbGVTdHlsZUNsYXNzRm9yTGluZTogZnVuY3Rpb24obGluZU51bWJlciwg
c3R5bGVDbGFzc05hbWUpCisgICAgdG9nZ2xlU3R5bGVDbGFzc0ZvckxpbmUobGluZU51bWJlciwg
c3R5bGVDbGFzc05hbWUpCiAgICAgewogICAgICAgICB2YXIgbGluZUhhbmRsZSA9IHRoaXMuX2Nv
ZGVNaXJyb3IuZ2V0TGluZUhhbmRsZShsaW5lTnVtYmVyKTsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQobGluZUhhbmRsZSk7CkBAIC02MDIsOSArNTc3LDkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHJl
dHVybiB0aGlzLl9jb2RlTWlycm9yLnRvZ2dsZUxpbmVDbGFzcyhsaW5lSGFuZGxlLCAid3JhcCIs
IHN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZVdpZGdldEZvckxp
bmU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIpCisgICAgY3JlYXRlV2lkZ2V0Rm9yTGluZShsaW5lTnVt
YmVyKQogICAgIHsKICAgICAgICAgdmFyIGxpbmVIYW5kbGUgPSB0aGlzLl9jb2RlTWlycm9yLmdl
dExpbmVIYW5kbGUobGluZU51bWJlcik7CiAgICAgICAgIGlmICghbGluZUhhbmRsZSkKQEAgLTYx
Myw1MyArNTg4LDUzIEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdmFyIHdpZGdldEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
ICAgICAgICAgdmFyIGxpbmVXaWRnZXQgPSB0aGlzLl9jb2RlTWlycm9yLmFkZExpbmVXaWRnZXQo
bGluZUhhbmRsZSwgd2lkZ2V0RWxlbWVudCwge2NvdmVyR3V0dGVyOiBmYWxzZSwgbm9IU2Nyb2xs
OiB0cnVlLCBoYW5kbGVNb3VzZUV2ZW50czogdHJ1ZX0pOwogICAgICAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5MaW5lV2lkZ2V0KGxpbmVXaWRnZXQsIHdpZGdldEVsZW1lbnQpOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGxpbmVDb3VudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY29kZU1pcnJvci5saW5lQ291bnQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZvY3VzOiBm
dW5jdGlvbigpCisgICAgZm9jdXMoKQogICAgIHsKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5m
b2N1cygpOwotICAgIH0sCisgICAgfQogCi0gICAgY29udGVudERpZENoYW5nZTogZnVuY3Rpb24o
cmVwbGFjZWRSYW5nZXMsIG5ld1JhbmdlcykKKyAgICBjb250ZW50RGlkQ2hhbmdlKHJlcGxhY2Vk
UmFuZ2VzLCBuZXdSYW5nZXMpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJj
bGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgcmVjdHNGb3JSYW5nZTogZnVuY3Rpb24ocmFu
Z2UpCisgICAgcmVjdHNGb3JSYW5nZShyYW5nZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9jb2RlTWlycm9yLnJlY3RzRm9yUmFuZ2UocmFuZ2UpOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IG1hcmtlcnMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0
QWxsTWFya3MoKS5tYXAoZnVuY3Rpb24oY29kZU1pcnJvclRleHRNYXJrZXIpIHsKICAgICAgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci50ZXh0TWFya2VyRm9yQ29kZU1pcnJv
clRleHRNYXJrZXIoY29kZU1pcnJvclRleHRNYXJrZXIpOwogICAgICAgICB9KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIG1hcmtlcnNBdFBvc2l0aW9uOiBmdW5jdGlvbihwb3NpdGlvbikKKyAgICBt
YXJrZXJzQXRQb3NpdGlvbihwb3NpdGlvbikKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
b2RlTWlycm9yLmZpbmRNYXJrc0F0KHBvc2l0aW9uKS5tYXAoZnVuY3Rpb24oY29kZU1pcnJvclRl
eHRNYXJrZXIpIHsKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGV4dE1hcmtlci50
ZXh0TWFya2VyRm9yQ29kZU1pcnJvclRleHRNYXJrZXIoY29kZU1pcnJvclRleHRNYXJrZXIpOwog
ICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZUNvbG9yTWFya2VyczogZnVu
Y3Rpb24ocmFuZ2UpCisgICAgY3JlYXRlQ29sb3JNYXJrZXJzKHJhbmdlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuY3JlYXRlQ29sb3JNYXJrZXJzKHJhbmdlKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGNyZWF0ZUdyYWRpZW50TWFya2VyczogZnVuY3Rpb24ocmFuZ2Up
CisgICAgY3JlYXRlR3JhZGllbnRNYXJrZXJzKHJhbmdlKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2NvZGVNaXJyb3IuY3JlYXRlR3JhZGllbnRNYXJrZXJzKHJhbmdlKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGVkaXRpbmdDb250cm9sbGVyRm9yTWFya2VyOiBmdW5jdGlvbihlZGl0YWJs
ZU1hcmtlcikKKyAgICBlZGl0aW5nQ29udHJvbGxlckZvck1hcmtlcihlZGl0YWJsZU1hcmtlcikK
ICAgICB7CiAgICAgICAgIHN3aXRjaCAoZWRpdGFibGVNYXJrZXIudHlwZSkgewogICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5UZXh0TWFya2VyLlR5cGUuQ29sb3I6CkBAIC02NjksOSArNjQ0LDkg
QEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvckVkaXRpbmdD
b250cm9sbGVyKHRoaXMuX2NvZGVNaXJyb3IsIGVkaXRhYmxlTWFya2VyKTsKICAgICAgICAgfQot
ICAgIH0sCisgICAgfQogCi0gICAgdmlzaWJsZVJhbmdlT2Zmc2V0czogZnVuY3Rpb24oKQorICAg
IHZpc2libGVSYW5nZU9mZnNldHMoKQogICAgIHsKICAgICAgICAgdmFyIHN0YXJ0T2Zmc2V0ID0g
bnVsbDsKICAgICAgICAgdmFyIGVuZE9mZnNldCA9IG51bGw7CkBAIC02ODYsOSArNjYxLDkgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgcmV0dXJuIHtzdGFydE9mZnNldCwgZW5kT2Zmc2V0fTsKLSAgICB9LAorICAgIH0KIAotICAg
IG9yaWdpbmFsT2Zmc2V0VG9DdXJyZW50UG9zaXRpb246IGZ1bmN0aW9uKG9mZnNldCkKKyAgICBv
cmlnaW5hbE9mZnNldFRvQ3VycmVudFBvc2l0aW9uKG9mZnNldCkKICAgICB7CiAgICAgICAgIHZh
ciBwb3NpdGlvbiA9IG51bGw7CiAgICAgICAgIGlmICh0aGlzLl9mb3JtYXR0ZXJTb3VyY2VNYXAp
IHsKQEAgLTY5OCwxNCArNjczLDE0IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHBvc2l0aW9uID0gdGhpcy5fY29kZU1pcnJvci5nZXREb2MoKS5w
b3NGcm9tSW5kZXgob2Zmc2V0KTsKIAogICAgICAgICByZXR1cm4gcG9zaXRpb247Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBjdXJyZW50T2Zmc2V0VG9DdXJyZW50UG9zaXRpb246IGZ1bmN0aW9uKG9m
ZnNldCkKKyAgICBjdXJyZW50T2Zmc2V0VG9DdXJyZW50UG9zaXRpb24ob2Zmc2V0KQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0RG9jKCkucG9zRnJvbUluZGV4KG9m
ZnNldCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjdXJyZW50UG9zaXRpb25Ub09yaWdpbmFsT2Zm
c2V0OiBmdW5jdGlvbihwb3NpdGlvbikKKyAgICBjdXJyZW50UG9zaXRpb25Ub09yaWdpbmFsT2Zm
c2V0KHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgdmFyIG9mZnNldCA9IG51bGw7CiAgICAgICAg
IGlmICh0aGlzLl9mb3JtYXR0ZXJTb3VyY2VNYXApCkBAIC03MTQsMzYgKzY4OSwzNiBAQCBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBvZmZzZXQgPSB0
aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLl9jb2RlTWlycm9yLmdldERvYygpLmluZGV4RnJv
bVBvcyhwb3NpdGlvbik7CiAKICAgICAgICAgcmV0dXJuIG9mZnNldDsKLSAgICB9LAorICAgIH0K
IAotICAgIGN1cnJlbnRQb3NpdGlvblRvQ3VycmVudE9mZnNldDogZnVuY3Rpb24ocG9zaXRpb24p
CisgICAgY3VycmVudFBvc2l0aW9uVG9DdXJyZW50T2Zmc2V0KHBvc2l0aW9uKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0RG9jKCkuaW5kZXhGcm9tUG9zKHBvc2l0
aW9uKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNldElubGluZVdpZGdldDogZnVuY3Rpb24ocG9z
aXRpb24sIGlubGluZUVsZW1lbnQpCisgICAgc2V0SW5saW5lV2lkZ2V0KHBvc2l0aW9uLCBpbmxp
bmVFbGVtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3Iuc2V0VW5p
cXVlQm9va21hcmsocG9zaXRpb24sIHt3aWRnZXQ6IGlubGluZUVsZW1lbnR9KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGFkZFNjcm9sbEhhbmRsZXI6IGZ1bmN0aW9uKGhhbmRsZXIpCisgICAgYWRk
U2Nyb2xsSGFuZGxlcihoYW5kbGVyKQogICAgIHsKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5v
bigic2Nyb2xsIiwgaGFuZGxlcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVTY3JvbGxI
YW5kbGVyOiBmdW5jdGlvbihoYW5kbGVyKQorICAgIHJlbW92ZVNjcm9sbEhhbmRsZXIoaGFuZGxl
cikKICAgICB7CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub2ZmKCJzY3JvbGwiLCBoYW5kbGVy
KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgcHJldHR5UHJpbnQ6
IGZ1bmN0aW9uKHByZXR0eSkKKyAgICBwcmV0dHlQcmludChwcmV0dHkpCiAgICAgewogICAgICAg
ICBmdW5jdGlvbiBwcmV0dHlQcmludEFuZFVwZGF0ZUVkaXRvcigpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGNvbnN0IHN0YXJ0ID0ge2xpbmU6IDAsIGNoOiAwfTsKLSAgICAgICAgICAgIGNvbnN0
IGVuZCA9IHtsaW5lOiB0aGlzLl9jb2RlTWlycm9yLmxpbmVDb3VudCgpIC0gMX07CisgICAgICAg
ICAgICB2YXIgc3RhcnQgPSB7bGluZTogMCwgY2g6IDB9OworICAgICAgICAgICAgdmFyIGVuZCA9
IHtsaW5lOiB0aGlzLl9jb2RlTWlycm9yLmxpbmVDb3VudCgpIC0gMX07CiAKICAgICAgICAgICAg
IHZhciBvbGRTZWxlY3Rpb25BbmNob3IgPSB0aGlzLl9jb2RlTWlycm9yLmdldEN1cnNvcigiYW5j
aG9yIik7CiAgICAgICAgICAgICB2YXIgb2xkU2VsZWN0aW9uSGVhZCA9IHRoaXMuX2NvZGVNaXJy
b3IuZ2V0Q3Vyc29yKCJoZWFkIik7CkBAIC03NTIsNyArNzI3LDcgQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3IucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBpZiAocHJldHR5KSB7CiAgICAg
ICAgICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEwNTkzOTQ4PiBQcm92aWRlIGEgd2F5IHRv
IGNoYW5nZSB0aGUgdGFiIHdpZHRoIGluIHRoZSBXZWIgSW5zcGVjdG9yCi0gICAgICAgICAgICAg
ICAgY29uc3QgaW5kZW50U3RyaW5nID0gIiAgICAiOworICAgICAgICAgICAgICAgIHZhciBpbmRl
bnRTdHJpbmcgPSAiICAgICI7CiAgICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsTGluZUVuZGlu
Z3MgPSBbXTsKICAgICAgICAgICAgICAgICB2YXIgZm9ybWF0dGVkTGluZUVuZGluZ3MgPSBbXTsK
ICAgICAgICAgICAgICAgICB2YXIgbWFwcGluZyA9IHtvcmlnaW5hbDogWzBdLCBmb3JtYXR0ZWQ6
IFswXX07CkBAIC04MzYsMTYgKzgxMSwxNiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm9wZXJhdGlv
bihwcmV0dHlQcmludEFuZFVwZGF0ZUVkaXRvci5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIGhhc0VkaXRzOiBmdW5jdGlvbigpCisgICAgaGFzRWRp
dHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuICF0aGlzLl9jb2RlTWlycm9yLmlzQ2xlYW4oKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50Q2hhbmdlZDogZnVuY3Rpb24oY29kZU1pcnJv
ciwgY2hhbmdlKQorICAgIF9jb250ZW50Q2hhbmdlZChjb2RlTWlycm9yLCBjaGFuZ2UpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5faWdub3JlQ29kZU1pcnJvckNvbnRlbnREaWRDaGFuZ2VFdmVu
dCA+IDApCiAgICAgICAgICAgICByZXR1cm47CkBAIC04ODAsMjYgKzg1NSwyNiBAQCBXZWJJbnNw
ZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5D
b250ZW50RGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90ZXh0UmFuZ2VGcm9tQ29k
ZU1pcnJvclBvc2l0aW9uOiBmdW5jdGlvbihzdGFydCwgZW5kKQorICAgIF90ZXh0UmFuZ2VGcm9t
Q29kZU1pcnJvclBvc2l0aW9uKHN0YXJ0LCBlbmQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChzdGFydCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGVuZCk7CiAKICAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKHN0YXJ0LmxpbmUsIHN0YXJ0LmNoLCBlbmQu
bGluZSwgZW5kLmNoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb2RlTWlycm9yUG9zaXRpb25G
cm9tVGV4dFJhbmdlOiBmdW5jdGlvbih0ZXh0UmFuZ2UpCisgICAgX2NvZGVNaXJyb3JQb3NpdGlv
bkZyb21UZXh0UmFuZ2UodGV4dFJhbmdlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGV4dFJhbmdlKTsKIAogICAgICAgICB2YXIgc3RhcnQgPSB7bGluZTogdGV4dFJhbmdlLnN0YXJ0
TGluZSwgY2g6IHRleHRSYW5nZS5zdGFydENvbHVtbn07CiAgICAgICAgIHZhciBlbmQgPSB7bGlu
ZTogdGV4dFJhbmdlLmVuZExpbmUsIGNoOiB0ZXh0UmFuZ2UuZW5kQ29sdW1ufTsKICAgICAgICAg
cmV0dXJuIHtzdGFydCwgZW5kfTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXZlYWxQZW5kaW5n
UG9zaXRpb25JZlBvc3NpYmxlOiBmdW5jdGlvbigpCisgICAgX3JldmVhbFBlbmRpbmdQb3NpdGlv
bklmUG9zc2libGUoKQogICAgIHsKICAgICAgICAgLy8gTm90aGluZyB0byBkbyBpZiB3ZSBkb24n
dCBoYXZlIGEgcGVuZGluZyBwb3NpdGlvbi4KICAgICAgICAgaWYgKCF0aGlzLl9wb3NpdGlvblRv
UmV2ZWFsKQpAQCAtOTEwLDkgKzg4NSw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLnJldmVhbFBvc2l0
aW9uKHRoaXMuX3Bvc2l0aW9uVG9SZXZlYWwsIHRoaXMuX3RleHRSYW5nZVRvU2VsZWN0LCB0aGlz
Ll9mb3JjZVVuZm9ybWF0dGVkKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXZlYWxTZWFyY2hS
ZXN1bHQ6IGZ1bmN0aW9uKHJlc3VsdCwgY2hhbmdlRm9jdXMsIGRpcmVjdGlvbkluQ2FzZU9mUmV2
YWxpZGF0aW9uKQorICAgIF9yZXZlYWxTZWFyY2hSZXN1bHQocmVzdWx0LCBjaGFuZ2VGb2N1cywg
ZGlyZWN0aW9uSW5DYXNlT2ZSZXZhbGlkYXRpb24pCiAgICAgewogICAgICAgICB2YXIgcG9zaXRp
b24gPSByZXN1bHQuZmluZCgpOwogCkBAIC05NzIsOSArOTQ3LDkgQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3IucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIExpc3RlbiBmb3IgdGhlIGVuZCBv
ZiB0aGUgYW5pbWF0aW9uIHNvIHdlIGNhbiByZW1vdmUgdGhlIGVsZW1lbnQuCiAgICAgICAgIHRo
aXMuX2JvdW5jeUhpZ2hsaWdodEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2Via2l0QW5pbWF0
aW9uRW5kIiwgYW5pbWF0aW9uRW5kZWQuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfYmluYXJ5U2VhcmNoSW5zZXJ0aW9uSW5kZXhJblNlYXJjaFJlc3VsdHM6IGZ1bmN0aW9uKG9i
amVjdCwgY29tcGFyYXRvcikKKyAgICBfYmluYXJ5U2VhcmNoSW5zZXJ0aW9uSW5kZXhJblNlYXJj
aFJlc3VsdHMob2JqZWN0LCBjb21wYXJhdG9yKQogICAgIHsKICAgICAgICAgLy8gSXQgaXMgcG9z
c2libGUgdGhhdCBtYXJrZXJzIGluIHRoZSBzZWFyY2ggcmVzdWx0cyBhcnJheSBtYXkgaGF2ZSBi
ZWVuIGRlbGV0ZWQuCiAgICAgICAgIC8vIEluIHRob3NlIGNhc2VzIHRoZSBjb21wYXJhdG9yIHdp
bGwgcmV0dXJuICJudWxsIiBhbmQgd2UgaW1tZWRpYXRlbHkgc3RvcApAQCAtOTk4LDkgKzk3Myw5
IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiBmaXJzdCAtIDE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmV2ZWFsRmly
c3RTZWFyY2hSZXN1bHRCZWZvcmVDdXJzb3I6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQorICAgIF9y
ZXZlYWxGaXJzdFNlYXJjaFJlc3VsdEJlZm9yZUN1cnNvcihjaGFuZ2VGb2N1cykKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoKTsKIApAQCAt
MTAyNSw5ICsxMDAwLDkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewog
CiAgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IGluZGV4OwogICAgICAg
ICB0aGlzLl9yZXZlYWxTZWFyY2hSZXN1bHQodGhpcy5fc2VhcmNoUmVzdWx0c1t0aGlzLl9jdXJy
ZW50U2VhcmNoUmVzdWx0SW5kZXhdLCBjaGFuZ2VGb2N1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHRBZnRlckN1cnNvcjogZnVuY3Rpb24oY2hhbmdlRm9j
dXMpCisgICAgX3JldmVhbEZpcnN0U2VhcmNoUmVzdWx0QWZ0ZXJDdXJzb3IoY2hhbmdlRm9jdXMp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0
aCk7CiAKQEAgLTEwNTcsOSArMTAzMiw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSBpbmRl
eDsKICAgICAgICAgdGhpcy5fcmV2ZWFsU2VhcmNoUmVzdWx0KHRoaXMuX3NlYXJjaFJlc3VsdHNb
dGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4XSwgY2hhbmdlRm9jdXMpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2N1cnNvckRvZXNOb3RNYXRjaExhc3RSZXZlYWxlZFNlYXJjaFJlc3VsdDog
ZnVuY3Rpb24oKQorICAgIF9jdXJzb3JEb2VzTm90TWF0Y2hMYXN0UmV2ZWFsZWRTZWFyY2hSZXN1
bHQoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY3VycmVudFNlYXJjaFJl
c3VsdEluZGV4ICE9PSAtMSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3NlYXJjaFJl
c3VsdHMubGVuZ3RoKTsKQEAgLTEwNzIsOSArMTA0Nyw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGxhc3RSZXZlYWxlZFNlYXJjaFJlc3VsdFBv
c2l0aW9uID0gbGFzdFJldmVhbGVkU2VhcmNoUmVzdWx0TWFya2VyLmZyb207CiAKICAgICAgICAg
cmV0dXJuIFdlYkluc3BlY3Rvci5jb21wYXJlQ29kZU1pcnJvclBvc2l0aW9ucyhjdXJyZW50Q3Vy
c29yUG9zaXRpb24sIGxhc3RSZXZlYWxlZFNlYXJjaFJlc3VsdFBvc2l0aW9uKSAhPT0gMDsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9yZXZhbGlkYXRlU2VhcmNoUmVzdWx0czogZnVuY3Rpb24oZGly
ZWN0aW9uKQorICAgIF9yZXZhbGlkYXRlU2VhcmNoUmVzdWx0cyhkaXJlY3Rpb24pCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChkaXJlY3Rpb24gIT09IHVuZGVmaW5lZCk7CiAKQEAgLTEw
OTcsOSArMTA3Miw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB0aGlzLl9yZXZlYWxGaXJzdFNlYXJjaFJl
c3VsdEJlZm9yZUN1cnNvcigpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBk
YXRlRXhlY3V0aW9uTGluZTogZnVuY3Rpb24oKQorICAgIF91cGRhdGVFeGVjdXRpb25MaW5lKCkK
ICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZSgpCiAgICAgICAgIHsKQEAgLTExMTMsOSAr
MTA4OCw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAg
fQogCiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub3BlcmF0aW9uKHVwZGF0ZS5iaW5kKHRoaXMp
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZXRCcmVha3BvaW50U3R5bGVzT25MaW5lOiBmdW5j
dGlvbihsaW5lTnVtYmVyKQorICAgIF9zZXRCcmVha3BvaW50U3R5bGVzT25MaW5lKGxpbmVOdW1i
ZXIpCiAgICAgewogICAgICAgICB2YXIgY29sdW1uQnJlYWtwb2ludHMgPSB0aGlzLl9icmVha3Bv
aW50c1tsaW5lTnVtYmVyXTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29sdW1uQnJlYWtwb2lu
dHMpOwpAQCAtMTE3MCwxOCArMTE0NSwxOCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm9wZXJhdGlv
bih1cGRhdGVTdHlsZXMuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWRkQnJl
YWtwb2ludFRvTGluZUFuZENvbHVtbldpdGhJbmZvOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGJyZWFrcG9pbnRJbmZvKQorICAgIF9hZGRCcmVha3BvaW50VG9MaW5lQW5kQ29s
dW1uV2l0aEluZm8obGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBicmVha3BvaW50SW5mbykKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fYnJlYWtwb2ludHNbbGluZU51bWJlcl0pCiAgICAgICAg
ICAgICB0aGlzLl9icmVha3BvaW50c1tsaW5lTnVtYmVyXSA9IHt9OwogICAgICAgICB0aGlzLl9i
cmVha3BvaW50c1tsaW5lTnVtYmVyXVtjb2x1bW5OdW1iZXJdID0gYnJlYWtwb2ludEluZm87CiAK
ICAgICAgICAgdGhpcy5fc2V0QnJlYWtwb2ludFN0eWxlc09uTGluZShsaW5lTnVtYmVyKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9yZW1vdmVCcmVha3BvaW50RnJvbUxpbmVBbmRDb2x1bW46IGZ1
bmN0aW9uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICBfcmVtb3ZlQnJlYWtwb2ludEZy
b21MaW5lQW5kQ29sdW1uKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGNvbHVtbk51bWJlciBpbiB0aGlzLl9icmVha3BvaW50c1tsaW5lTnVt
YmVyXSk7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9icmVha3BvaW50c1tsaW5lTnVtYmVyXVtjb2x1
bW5OdW1iZXJdOwpAQCAtMTIwOCwyMSArMTE4MywyMSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm9w
ZXJhdGlvbih1cGRhdGVTdHlsZXMuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
YWxsQ29sdW1uQnJlYWtwb2ludEluZm9Gb3JMaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyKQorICAg
IF9hbGxDb2x1bW5CcmVha3BvaW50SW5mb0ZvckxpbmUobGluZU51bWJlcikKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50c1tsaW5lTnVtYmVyXTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9zZXRDb2x1bW5CcmVha3BvaW50SW5mb0ZvckxpbmU6IGZ1bmN0aW9uKGxpbmVOdW1i
ZXIsIGNvbHVtbkJyZWFrcG9pbnRJbmZvKQorICAgIF9zZXRDb2x1bW5CcmVha3BvaW50SW5mb0Zv
ckxpbmUobGluZU51bWJlciwgY29sdW1uQnJlYWtwb2ludEluZm8pCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChjb2x1bW5CcmVha3BvaW50SW5mbyk7CiAgICAgICAgIHRoaXMuX2JyZWFr
cG9pbnRzW2xpbmVOdW1iZXJdID0gY29sdW1uQnJlYWtwb2ludEluZm87CiAgICAgICAgIHRoaXMu
X3NldEJyZWFrcG9pbnRTdHlsZXNPbkxpbmUobGluZU51bWJlcik7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZ3V0dGVyTW91c2VEb3duOiBmdW5jdGlvbihjb2RlTWlycm9yLCBsaW5lTnVtYmVyLCBn
dXR0ZXJFbGVtZW50LCBldmVudCkKKyAgICBfZ3V0dGVyTW91c2VEb3duKGNvZGVNaXJyb3IsIGxp
bmVOdW1iZXIsIGd1dHRlckVsZW1lbnQsIGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50
LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MTI2NSw5ICsxMjQwLDkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewog
ICAgICAgICAvLyBSZWdpc3RlciB0aGVzZSBsaXN0ZW5lcnMgb24gdGhlIGRvY3VtZW50IHNvIHdl
IGNhbiB0cmFjayB0aGUgbW91c2UgaWYgaXQgbGVhdmVzIHRoZSBndXR0ZXIuCiAgICAgICAgIGRv
Y3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX2RvY3VtZW50TW91c2VN
b3ZlZEV2ZW50TGlzdGVuZXIsIHRydWUpOwogICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3Rl
bmVyKCJtb3VzZXVwIiwgdGhpcy5fZG9jdW1lbnRNb3VzZVVwRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ3V0dGVyQ29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvZGVN
aXJyb3IsIGxpbmVOdW1iZXIsIGd1dHRlckVsZW1lbnQsIGV2ZW50KQorICAgIF9ndXR0ZXJDb250
ZXh0TWVudShjb2RlTWlycm9yLCBsaW5lTnVtYmVyLCBndXR0ZXJFbGVtZW50LCBldmVudCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUu
dGV4dEVkaXRvckd1dHRlckNvbnRleHRNZW51ID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAg
ICB2YXIgYnJlYWtwb2ludHMgPSBbXTsKQEAgLTEyNzYsOSArMTI1MSw5IEBAIFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUu
dGV4dEVkaXRvckd1dHRlckNvbnRleHRNZW51KHRoaXMsIGxpbmVOdW1iZXIsIDAsIGJyZWFrcG9p
bnRzLCBldmVudCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9kb2N1bWVudE1v
dXNlTW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kb2N1bWVudE1vdXNlTW92ZWQoZXZlbnQp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCgiX2xpbmVOdW1iZXJXaXRoTW91c2VkRG93
bkJyZWFrcG9pbnQiIGluIHRoaXMpOwogICAgICAgICBpZiAoISgiX2xpbmVOdW1iZXJXaXRoTW91
c2VkRG93bkJyZWFrcG9pbnQiIGluIHRoaXMpKQpAQCAtMTMzMiw5ICsxMzA3LDkgQEAgV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbGluZU51
bWJlcldpdGhEcmFnZ2VkQnJlYWtwb2ludCA9IGxpbmVOdW1iZXI7CiAgICAgICAgICAgICB0aGlz
Ll9jb2x1bW5OdW1iZXJXaXRoRHJhZ2dlZEJyZWFrcG9pbnQgPSBjb2x1bW5OdW1iZXI7CiAgICAg
ICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9kb2N1bWVudE1vdXNlVXA6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9kb2N1bWVudE1vdXNlVXAoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCgiX2xpbmVOdW1iZXJXaXRoTW91c2VkRG93bkJyZWFrcG9pbnQiIGluIHRoaXMpOwog
ICAgICAgICBpZiAoISgiX2xpbmVOdW1iZXJXaXRoTW91c2VkRG93bkJyZWFrcG9pbnQiIGluIHRo
aXMpKQpAQCAtMTM0NSw5ICsxMzIwLDkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90
eXBlID0gewogICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUi
LCB0aGlzLl9kb2N1bWVudE1vdXNlTW92ZWRFdmVudExpc3RlbmVyLCB0cnVlKTsKICAgICAgICAg
ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMuX2RvY3VtZW50TW91
c2VVcEV2ZW50TGlzdGVuZXIsIHRydWUpOwogCi0gICAgICAgIGNvbnN0IGRlbGVnYXRlSW1wbGVt
ZW50c0JyZWFrcG9pbnRDbGlja2VkID0gdGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2Rl
bGVnYXRlLnRleHRFZGl0b3JCcmVha3BvaW50Q2xpY2tlZCA9PT0gImZ1bmN0aW9uIjsKLSAgICAg
ICAgY29uc3QgZGVsZWdhdGVJbXBsZW1lbnRzQnJlYWtwb2ludFJlbW92ZWQgPSB0aGlzLl9kZWxl
Z2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUudGV4dEVkaXRvckJyZWFrcG9pbnRSZW1vdmVk
ID09PSAiZnVuY3Rpb24iOwotICAgICAgICBjb25zdCBkZWxlZ2F0ZUltcGxlbWVudHNCcmVha3Bv
aW50TW92ZWQgPSB0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUudGV4dEVk
aXRvckJyZWFrcG9pbnRNb3ZlZCA9PT0gImZ1bmN0aW9uIjsKKyAgICAgICAgdmFyIGRlbGVnYXRl
SW1wbGVtZW50c0JyZWFrcG9pbnRDbGlja2VkID0gdGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRo
aXMuX2RlbGVnYXRlLnRleHRFZGl0b3JCcmVha3BvaW50Q2xpY2tlZCA9PT0gImZ1bmN0aW9uIjsK
KyAgICAgICAgdmFyIGRlbGVnYXRlSW1wbGVtZW50c0JyZWFrcG9pbnRSZW1vdmVkID0gdGhpcy5f
ZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLnRleHRFZGl0b3JCcmVha3BvaW50UmVt
b3ZlZCA9PT0gImZ1bmN0aW9uIjsKKyAgICAgICAgdmFyIGRlbGVnYXRlSW1wbGVtZW50c0JyZWFr
cG9pbnRNb3ZlZCA9IHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS50ZXh0
RWRpdG9yQnJlYWtwb2ludE1vdmVkID09PSAiZnVuY3Rpb24iOwogCiAgICAgICAgIGlmICh0aGlz
Ll9tb3VzZURyYWdnZWQpIHsKICAgICAgICAgICAgIGlmICghKCJfbGluZU51bWJlcldpdGhEcmFn
Z2VkQnJlYWtwb2ludCIgaW4gdGhpcykpIHsKQEAgLTEzOTMsOSArMTM2OCw5IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2NvbHVt
bk51bWJlcldpdGhEcmFnZ2VkQnJlYWtwb2ludDsKICAgICAgICAgZGVsZXRlIHRoaXMuX3ByZXZp
b3VzQ29sdW1uQnJlYWtwb2ludEluZm87CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9tb3VzZURyYWdn
ZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfb3BlbkNsaWNrZWRMaW5rczogZnVuY3Rpb24oZXZl
bnQpCisgICAgX29wZW5DbGlja2VkTGlua3MoZXZlbnQpCiAgICAgewogICAgICAgICAvLyBHZXQg
dGhlIHBvc2l0aW9uIGluIHRoZSB0ZXh0IGFuZCB0aGUgdG9rZW4gYXQgdGhhdCBwb3NpdGlvbi4K
ICAgICAgICAgdmFyIHBvc2l0aW9uID0gdGhpcy5fY29kZU1pcnJvci5jb29yZHNDaGFyKHtsZWZ0
OiBldmVudC5wYWdlWCwgdG9wOiBldmVudC5wYWdlWX0pOwpAQCAtMTQyMSw5ICsxMzk2LDkgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAvLyBTdG9wIHBy
b2Nlc3NpbmcgdGhlIGV2ZW50LgogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pc1Bv
c2l0aW9uVmlzaWJsZTogZnVuY3Rpb24ocG9zaXRpb24pCisgICAgX2lzUG9zaXRpb25WaXNpYmxl
KHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgdmFyIHNjcm9sbEluZm8gPSB0aGlzLl9jb2RlTWly
cm9yLmdldFNjcm9sbEluZm8oKTsKICAgICAgICAgdmFyIHZpc2libGVSYW5nZVN0YXJ0ID0gc2Ny
b2xsSW5mby50b3A7CkBAIC0xNDMxLDkgKzE0MDYsOSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjb29yZHMgPSB0aGlzLl9jb2RlTWlycm9yLmNo
YXJDb29yZHMocG9zaXRpb24sICJsb2NhbCIpOwogCiAgICAgICAgIHJldHVybiBjb29yZHMudG9w
ID49IHZpc2libGVSYW5nZVN0YXJ0ICYmIGNvb3Jkcy5ib3R0b20gPD0gdmlzaWJsZVJhbmdlRW5k
OwotICAgIH0sCisgICAgfQogCi0gICAgX3Njcm9sbEludG9WaWV3Q2VudGVyZWQ6IGZ1bmN0aW9u
KHBvc2l0aW9uKQorICAgIF9zY3JvbGxJbnRvVmlld0NlbnRlcmVkKHBvc2l0aW9uKQogICAgIHsK
ICAgICAgICAgdmFyIHNjcm9sbEluZm8gPSB0aGlzLl9jb2RlTWlycm9yLmdldFNjcm9sbEluZm8o
KTsKICAgICAgICAgdmFyIGxpbmVIZWlnaHQgPSBNYXRoLmNlaWwodGhpcy5fY29kZU1pcnJvci5k
ZWZhdWx0VGV4dEhlaWdodCgpKTsKQEAgLTE0NDIsNCArMTQxNywyMSBAQCBXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlRleHRF
ZGl0b3IucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBl
OworV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuSGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSA9ICJo
aWdobGlnaHRlZCI7CitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5TZWFyY2hSZXN1bHRTdHlsZUNs
YXNzTmFtZSA9ICJzZWFyY2gtcmVzdWx0IjsKK1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkhhc0Jy
ZWFrcG9pbnRTdHlsZUNsYXNzTmFtZSA9ICJoYXMtYnJlYWtwb2ludCI7CitXZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvci5CcmVha3BvaW50UmVzb2x2ZWRTdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50
LXJlc29sdmVkIjsKK1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkJyZWFrcG9pbnRBdXRvQ29udGlu
dWVTdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LWF1dG8tY29udGludWUiOworV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3IuQnJlYWtwb2ludERpc2FibGVkU3R5bGVDbGFzc05hbWUgPSAiYnJlYWtw
b2ludC1kaXNhYmxlZCI7CitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5NdWx0aXBsZUJyZWFrcG9p
bnRzU3R5bGVDbGFzc05hbWUgPSAibXVsdGlwbGUtYnJlYWtwb2ludHMiOworV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3IuRXhlY3V0aW9uTGluZVN0eWxlQ2xhc3NOYW1lID0gImV4ZWN1dGlvbi1saW5l
IjsKK1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkJvdW5jeUhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1l
ID0gImJvdW5jeS1oaWdobGlnaHQiOworV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuTnVtYmVyT2ZG
aW5kc1BlclNlYXJjaEJhdGNoID0gMTA7CitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5IaWdobGln
aHRBbmltYXRpb25EdXJhdGlvbiA9IDIwMDA7CisKK1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkV2
ZW50ID0geworICAgIEV4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2U6ICJ0ZXh0LWVkaXRvci1l
eGVjdXRpb24tbGluZS1udW1iZXItZGlkLWNoYW5nZSIsCisgICAgTnVtYmVyT2ZTZWFyY2hSZXN1
bHRzRGlkQ2hhbmdlOiAidGV4dC1lZGl0b3ItbnVtYmVyLW9mLXNlYXJjaC1yZXN1bHRzLWRpZC1j
aGFuZ2UiLAorICAgIENvbnRlbnREaWRDaGFuZ2U6ICJ0ZXh0LWVkaXRvci1jb250ZW50LWRpZC1j
aGFuZ2UiLAorICAgIEZvcm1hdHRpbmdEaWRDaGFuZ2U6ICJ0ZXh0LWVkaXRvci1mb3JtYXR0aW5n
LWRpZC1jaGFuZ2UiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcwpp
bmRleCAxNzI4NzM0Li41MDA2YTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50
Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsNjYgKzIzLDYzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gZnVuY3Rp
b24ocmVzb3VyY2UpCitXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFz
cyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNv
bnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcuY2FsbCh0
aGlzLCByZXNvdXJjZSwgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LlN0eWxl
Q2xhc3NOYW1lKTsKLQotICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGUuRXZlbnQuQ29udGVudERpZENoYW5nZSwgdGhpcy5fc291cmNlQ29kZUNvbnRl
bnREaWRDaGFuZ2UsIHRoaXMpOwotCi0gICAgdGhpcy5fdGV4dEVkaXRvciA9IG5ldyBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IocmVzb3VyY2UpOwotICAgIHRoaXMuX3RleHRFZGl0
b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5FeGVjdXRp
b25MaW5lTnVtYmVyRGlkQ2hhbmdlLCB0aGlzLl9leGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hhbmdl
LCB0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3IuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlz
Ll9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMpOwotICAgIHRoaXMuX3RleHRF
ZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5Db250
ZW50RGlkQ2hhbmdlLCB0aGlzLl90ZXh0RWRpdG9yQ29udGVudERpZENoYW5nZSwgdGhpcyk7Ci0g
ICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yLkV2ZW50LkZvcm1hdHRpbmdEaWRDaGFuZ2UsIHRoaXMuX3RleHRFZGl0b3JGb3JtYXR0aW5n
RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnRXaWxsUG9wdWxh
dGUsIHRoaXMuX2NvbnRlbnRXaWxsUG9wdWxhdGUsIHRoaXMpOwotICAgIHRoaXMuX3RleHRFZGl0
b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRXZl
bnQuQ29udGVudERpZFBvcHVsYXRlLCB0aGlzLl9jb250ZW50RGlkUG9wdWxhdGUsIHRoaXMpOwot
Ci0gICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRBZGRlZCwgdGhpcy5fcHJvYmVTZXRzQ2hh
bmdlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRSZW1vdmVkLCB0aGlz
Ll9wcm9iZVNldHNDaGFuZ2VkLCB0aGlzKTsKLQotICAgIHZhciBjdXJsZXlCcmFjZXNJbWFnZTsK
LSAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MpCi0gICAgICAgIGN1
cmxleUJyYWNlc0ltYWdlID0ge3NyYzogIkltYWdlcy9MZWdhY3kvTmF2aWdhdGlvbkl0ZW1DdXJs
ZXlCcmFjZXMuc3ZnIiwgd2lkdGg6IDE2LCBoZWlnaHQ6IDE2fTsKLSAgICBlbHNlCi0gICAgICAg
IGN1cmxleUJyYWNlc0ltYWdlID0ge3NyYzogIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUN1cmxleUJy
YWNlcy5zdmciLCB3aWR0aDogMTMsIGhlaWdodDogMTN9OwotCi0gICAgdmFyIHRvb2xUaXAgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByZXR0eSBwcmludCIpOwotICAgIHZhciBhY3RpdmF0ZWRU
b29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcmlnaW5hbCBmb3JtYXR0aW5nIik7Ci0g
ICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0
b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgicHJldHR5LXByaW50IiwgdG9vbFRpcCwg
YWN0aXZhdGVkVG9vbFRpcCwgY3VybGV5QnJhY2VzSW1hZ2Uuc3JjLCBjdXJsZXlCcmFjZXNJbWFn
ZS53aWR0aCwgY3VybGV5QnJhY2VzSW1hZ2UuaGVpZ2h0KTsKLSAgICB0aGlzLl9wcmV0dHlQcmlu
dEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVByZXR0eVByaW50LCB0
aGlzKTsKLSAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQg
PSBmYWxzZTsgLy8gRW5hYmxlZCB3aGVuIHRoZSB0ZXh0IGVkaXRvciBpcyBwb3B1bGF0ZWQgd2l0
aCBjb250ZW50LgotCi0gICAgdmFyIHRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2hvdyB0eXBlIGluZm9ybWF0aW9uIik7Ci0gICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBUeXBl
cyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0eXBlIGluZm9ybWF0aW9uIik7Ci0gICAg
dGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFj
dGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlwVHlwZXMsIGFj
dGl2YXRlZFRvb2xUaXBUeXBlcywgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIsIDEz
LCAxNCk7Ci0gICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwg
dGhpcy5fdG9nZ2xlVHlwZUFubm90YXRpb25zLCB0aGlzKTsKLSAgICB0aGlzLl9zaG93VHlwZXNC
dXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7Ci0KLSAgICBXZWJJbnNwZWN0b3Iu
c2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvd0phdmFTY3JpcHRUeXBl
SW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGV4
dFJlc291cmNlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAidGV4dCI7Ci0KLVdlYkluc3Bl
Y3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50VmlldywKKyAgICBjb25zdHJ1Y3Rv
cihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlc291cmNlLCAidGV4dCIpOworCisg
ICAgICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUu
RXZlbnQuQ29udGVudERpZENoYW5nZSwgdGhpcy5fc291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2Us
IHRoaXMpOworCisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yKHJlc291cmNlKTsKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50LkV4ZWN1dGlvbkxp
bmVOdW1iZXJEaWRDaGFuZ2UsIHRoaXMuX2V4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2UsIHRo
aXMpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3IuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlz
Ll9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLl90
ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQu
Q29udGVudERpZENoYW5nZSwgdGhpcy5fdGV4dEVkaXRvckNvbnRlbnREaWRDaGFuZ2UsIHRoaXMp
OworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3IuRXZlbnQuRm9ybWF0dGluZ0RpZENoYW5nZSwgdGhpcy5fdGV4dEVkaXRvckZv
cm1hdHRpbmdEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkV2ZW50LkNvbnRl
bnRXaWxsUG9wdWxhdGUsIHRoaXMuX2NvbnRlbnRXaWxsUG9wdWxhdGUsIHRoaXMpOworICAgICAg
ICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVUZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnREaWRQb3B1bGF0ZSwgdGhpcy5fY29udGVudERpZFBv
cHVsYXRlLCB0aGlzKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlTWFuYWdlci5FdmVudC5Qcm9iZVNldEFkZGVk
LCB0aGlzLl9wcm9iZVNldHNDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBy
b2JlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZl
bnQuUHJvYmVTZXRSZW1vdmVkLCB0aGlzLl9wcm9iZVNldHNDaGFuZ2VkLCB0aGlzKTsKKworICAg
ICAgICB2YXIgY3VybGV5QnJhY2VzSW1hZ2U7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUGxh
dGZvcm0uaXNMZWdhY3lNYWNPUykKKyAgICAgICAgICAgIGN1cmxleUJyYWNlc0ltYWdlID0ge3Ny
YzogIkltYWdlcy9MZWdhY3kvTmF2aWdhdGlvbkl0ZW1DdXJsZXlCcmFjZXMuc3ZnIiwgd2lkdGg6
IDE2LCBoZWlnaHQ6IDE2fTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3VybGV5QnJhY2Vz
SW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQ3VybGV5QnJhY2VzLnN2ZyIsIHdp
ZHRoOiAxMywgaGVpZ2h0OiAxM307CisKKyAgICAgICAgdmFyIHRvb2xUaXAgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlByZXR0eSBwcmludCIpOworICAgICAgICB2YXIgYWN0aXZhdGVkVG9vbFRp
cCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3JpZ2luYWwgZm9ybWF0dGluZyIpOworICAgICAg
ICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rv
ci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJwcmV0dHktcHJpbnQiLCB0b29sVGlwLCBh
Y3RpdmF0ZWRUb29sVGlwLCBjdXJsZXlCcmFjZXNJbWFnZS5zcmMsIGN1cmxleUJyYWNlc0ltYWdl
LndpZHRoLCBjdXJsZXlCcmFjZXNJbWFnZS5oZWlnaHQpOworICAgICAgICB0aGlzLl9wcmV0dHlQ
cmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVByZXR0eVByaW50
LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5l
bmFibGVkID0gZmFsc2U7IC8vIEVuYWJsZWQgd2hlbiB0aGUgdGV4dCBlZGl0b3IgaXMgcG9wdWxh
dGVkIHdpdGggY29udGVudC4KKworICAgICAgICB2YXIgdG9vbFRpcFR5cGVzID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTaG93IHR5cGUgaW5mb3JtYXRpb24iKTsKKyAgICAgICAgdmFyIGFjdGl2
YXRlZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0eXBlIGluZm9y
bWF0aW9uIik7CisgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtID0g
bmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJzaG93LXR5cGVz
IiwgdG9vbFRpcFR5cGVzLCBhY3RpdmF0ZWRUb29sVGlwVHlwZXMsICJJbWFnZXMvTmF2aWdhdGlv
bkl0ZW1UeXBlcy5zdmciLCAxMywgMTQpOworICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25O
YXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVUeXBlQW5ub3RhdGlvbnMsIHRoaXMp
OworICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0g
ZmFsc2U7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0
aW9uU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNo
YW5nZWQsIHRoaXMuX3Nob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZ0NoYW5nZWQs
IHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVt
cygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdh
dGlvbkl0ZW0sIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtXTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBtYW5hZ2VzT3duSXNzdWVzKCkKICAgICB7CiAgICAgICAgIC8vIFNv
dXJjZUNvZGVUZXh0RWRpdG9yIG1hbmFnZXMgdGhlIGlzc3Vlcywgd2UgZG9uJ3QgbmVlZCBSZXNv
dXJjZUNvbnRlbnRWaWV3IGRvaW5nIGl0LgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCB0ZXh0RWRpdG9yKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll90ZXh0RWRpdG9yOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBsZW1lbnRhbFJlcHJl
c2VudGVkT2JqZWN0cygpCiAgICAgewpAQCAtOTYsOTkgKzkzLDk5IEBAIFdlYkluc3BlY3Rvci5U
ZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBvYmplY3Rz
LnB1c2goV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUpOwogCiAg
ICAgICAgIHJldHVybiBvYmplY3RzOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsUG9zaXRp
b246IGZ1bmN0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRl
ZCkKKyAgICByZXZlYWxQb3NpdGlvbihwb3NpdGlvbiwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNl
VW5mb3JtYXR0ZWQpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnJldmVhbFBvc2l0
aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5j
YWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2hvd24oKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAg
ICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuaGlkZGVuLmNh
bGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5oaWRkZW4oKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewogICAg
ICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2VkLmNh
bGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5yZXNvdXJjZS5yZW1vdmVFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LkNvbnRlbnREaWRDaGFuZ2UsIHRoaXMuX3NvdXJj
ZUNvZGVDb250ZW50RGlkQ2hhbmdlLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl90ZXh0RWRpdG9y
LmNsb3NlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNTYXZlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNhdmVEYXRh
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB7dXJsOiB0aGlzLnJlc291cmNlLnVybCwgY29udGVu
dDogdGhpcy5fdGV4dEVkaXRvci5zdHJpbmd9OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1
cHBvcnRzU2VhcmNoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IG51bWJlck9mU2VhcmNoUmVzdWx0cygpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fdGV4dEVkaXRvci5udW1iZXJPZlNlYXJjaFJlc3VsdHM7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgaGFzUGVyZm9ybWVkU2VhcmNoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl90ZXh0RWRpdG9yLmN1cnJlbnRTZWFyY2hRdWVyeSAhPT0gbnVsbDsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCBhdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQocmV2ZWFs
KQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5hdXRvbWF0aWNhbGx5UmV2ZWFsRmly
c3RTZWFyY2hSZXN1bHQgPSByZXZlYWw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwZXJmb3JtU2Vh
cmNoOiBmdW5jdGlvbihxdWVyeSkKKyAgICBwZXJmb3JtU2VhcmNoKHF1ZXJ5KQogICAgIHsKICAg
ICAgICAgdGhpcy5fdGV4dEVkaXRvci5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTsKLSAgICB9LAorICAg
IH0KIAotICAgIHNlYXJjaENsZWFyZWQ6IGZ1bmN0aW9uKCkKKyAgICBzZWFyY2hDbGVhcmVkKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2VhcmNoQ2xlYXJlZCgpOwotICAgIH0s
CisgICAgfQogCi0gICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uOiBmdW5jdGlvbigpCisgICAg
c2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90
ZXh0RWRpdG9yLnNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0g
ICAgcmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQorICAg
IHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAgICAg
dGhpcy5fdGV4dEVkaXRvci5yZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cyk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbihj
aGFuZ2VGb2N1cykKKyAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAg
IHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5n
ZUZvY3VzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQor
ICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnVwZGF0
ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2NvbnRl
bnRXaWxsUG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50V2lsbFBvcHVsYXRl
KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3RleHRFZGl0b3IuZWxlbWVudC5wYXJl
bnROb2RlID09PSB0aGlzLmVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDMsNjcg
KzIwMCw2NSBAQCBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGV4dEVkaXRvci5lbGVtZW50KTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9jb250ZW50RGlkUG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9jb250ZW50RGlkUG9wdWxhdGUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQ
cmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhbkJl
Rm9ybWF0dGVkKCk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVt
LmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhblNob3dUeXBlQW5ub3RhdGlvbnMoKTsKICAg
ICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2Vi
SW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF90b2dnbGVQcmV0dHlQcmludDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX3RvZ2dsZVByZXR0eVByaW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGFjdGl2YXRl
ZCA9ICF0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZDsKICAg
ICAgICAgdGhpcy5fdGV4dEVkaXRvci5mb3JtYXR0ZWQgPSBhY3RpdmF0ZWQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdG9nZ2xlVHlwZUFubm90YXRpb25zOiBmdW5jdGlvbihldmVudCkKKyAgICBf
dG9nZ2xlVHlwZUFubm90YXRpb25zKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVk
aXRvci50b2dnbGVUeXBlQW5ub3RhdGlvbnMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93
SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZChldmVudCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2
YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcu
dmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRDaGFu
Z2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZShl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0
ZW0uYWN0aXZhdGVkID0gdGhpcy5fdGV4dEVkaXRvci5mb3JtYXR0ZWQ7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfc291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9zb3VyY2VDb2RlQ29udGVudERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9pZ25vcmVTb3VyY2VDb2RlQ29udGVudERpZENoYW5nZUV2ZW50KQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc3RyaW5nID0gdGhpcy5yZXNvdXJj
ZS5jdXJyZW50UmV2aXNpb24uY29udGVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF90ZXh0RWRp
dG9yQ29udGVudERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RleHRFZGl0b3JDb250
ZW50RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5faWdub3JlU291cmNlQ29k
ZUNvbnRlbnREaWRDaGFuZ2VFdmVudCA9IHRydWU7CiAgICAgICAgIFdlYkluc3BlY3Rvci5icmFu
Y2hNYW5hZ2VyLmN1cnJlbnRCcmFuY2gucmV2aXNpb25Gb3JSZXByZXNlbnRlZE9iamVjdCh0aGlz
LnJlc291cmNlKS5jb250ZW50ID0gdGhpcy5fdGV4dEVkaXRvci5zdHJpbmc7CiAgICAgICAgIGRl
bGV0ZSB0aGlzLl9pZ25vcmVTb3VyY2VDb2RlQ29udGVudERpZENoYW5nZUV2ZW50OwotICAgIH0s
CisgICAgfQogCi0gICAgX2V4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9leGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3LkV2ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfbnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlOiBmdW5jdGlv
bihldmVudCkKKyAgICBfbnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlKGV2ZW50KQogICAg
IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LkV2ZW50Lk51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfcHJvYmVTZXRzQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3By
b2JlU2V0c0NoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2
ZW50LmRhdGEucHJvYmVTZXQuYnJlYWtwb2ludDsKICAgICAgICAgaWYgKGJyZWFrcG9pbnQuc291
cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPT09IHRoaXMucmVzb3VyY2UpCiAgICAgICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcu
RXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKICAgICB9CiB9
OwotCi1XZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
RGF0YUdyaWQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
aW1lbGluZURhdGFHcmlkLmpzCmluZGV4IDc0Y2EzZDUuLmQ0YjM2MzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lRGF0YUdyaWQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxp
bmVEYXRhR3JpZC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsMTI1ICsyMywxMTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZCA9IGZ1bmN0
aW9uKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVD
YWxsYmFjaykKK1dlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkID0gY2xhc3MgVGltZWxpbmVE
YXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXRhR3JpZAogewotICAgIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJh
Y2spOwotCi0gICAgdGhpcy5fdHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplciA9IG5ldyBX
ZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplcih0cmVlT3V0bGluZSwg
dGhpcywgZGVsZWdhdGUpOworICAgIGNvbnN0cnVjdG9yKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBk
ZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHN1
cGVyKGNvbHVtbnMsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spOwogCi0gICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuU3R5bGVD
bGFzc05hbWUpOworICAgICAgICB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVy
ID0gbmV3IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyKHRyZWVP
dXRsaW5lLCB0aGlzLCBkZWxlZ2F0ZSk7CiAKLSAgICB0aGlzLl9maWx0ZXJhYmxlQ29sdW1ucyA9
IFtdOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUiKTsKIAot
ICAgIC8vIENoZWNrIGlmIGFueSBvZiB0aGUgY2VsbHMgY2FuIGJlIGZpbHRlcmVkLgotICAgIGZv
ciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1ucykgewotICAgICAgICB2
YXIgc2NvcGVCYXIgPSBjb2x1bW4uc2NvcGVCYXI7Ci0gICAgICAgIGlmICghc2NvcGVCYXIpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgdGhpcy5fZmlsdGVyYWJsZUNvbHVtbnMucHVz
aChpZGVudGlmaWVyKTsKLSAgICAgICAgc2NvcGVCYXIuY29sdW1uSWRlbnRpZmllciA9IGlkZW50
aWZpZXI7Ci0gICAgICAgIHNjb3BlQmFyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNj
b3BlQmFyLkV2ZW50LlNlbGVjdGlvbkNoYW5nZWQsIHRoaXMuX3Njb3BlQmFyU2VsZWN0ZWRJdGVt
c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgfQorICAgICAgICB0aGlzLl9maWx0ZXJhYmxlQ29sdW1u
cyA9IFtdOwogCi0gICAgaWYgKHRoaXMuX2ZpbHRlcmFibGVDb2x1bW5zLmxlbmd0aCA+IDEpIHsK
LSAgICAgICAgY29uc29sZS5lcnJvcigiQ3JlYXRpbmcgYSBUaW1lbGluZURhdGFHcmlkIHdpdGgg
bW9yZSB0aGFuIG9uZSBmaWx0ZXJhYmxlIGNvbHVtbiBpcyBub3QgeWV0IHN1cHBvcnRlZC4iKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICh0aGlzLl9maWx0ZXJhYmxlQ29sdW1u
cy5sZW5ndGgpIHsKLSAgICAgICAgdmFyIGl0ZW1zID0gW25ldyBXZWJJbnNwZWN0b3IuRmxleGli
bGVTcGFjZU5hdmlnYXRpb25JdGVtLCB0aGlzLmNvbHVtbnMuZ2V0KHRoaXMuX2ZpbHRlcmFibGVD
b2x1bW5zWzBdKS5zY29wZUJhciwgbmV3IFdlYkluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdh
dGlvbkl0ZW1dOwotICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uQmFyKG51bGwsIGl0ZW1zKTsKLSAgICAgICAgdmFyIGNvbnRhaW5lciA9IHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0g
ICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSAibmF2aWdhdGlvbi1iYXItY29udGFpbmVyIjsK
LSAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVu
dCk7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU2NvcGVCYXJGb3JjZWRWaXNpYmlsaXR5KCk7Ci0g
ICAgfQorICAgICAgICAvLyBDaGVjayBpZiBhbnkgb2YgdGhlIGNlbGxzIGNhbiBiZSBmaWx0ZXJl
ZC4KKyAgICAgICAgZm9yICh2YXIgW2lkZW50aWZpZXIsIGNvbHVtbl0gb2YgdGhpcy5jb2x1bW5z
KSB7CisgICAgICAgICAgICB2YXIgc2NvcGVCYXIgPSBjb2x1bW4uc2NvcGVCYXI7CisgICAgICAg
ICAgICBpZiAoIXNjb3BlQmFyKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgdGhpcy5fZmlsdGVyYWJsZUNvbHVtbnMucHVzaChpZGVudGlmaWVyKTsKKyAgICAgICAgICAg
IHNjb3BlQmFyLmNvbHVtbklkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgICAgICAgICAgc2Nv
cGVCYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NvcGVCYXIuRXZlbnQuU2VsZWN0
aW9uQ2hhbmdlZCwgdGhpcy5fc2NvcGVCYXJTZWxlY3RlZEl0ZW1zRGlkQ2hhbmdlLCB0aGlzKTsK
KyAgICAgICAgfQogCi0gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5FdmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZFNlbGVjdGVkTm9k
ZUNoYW5nZWQsIHRoaXMpOwotICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQsIHRoaXMuX3NvcnQsIHRoaXMpOworICAgICAgICBp
ZiAodGhpcy5fZmlsdGVyYWJsZUNvbHVtbnMubGVuZ3RoID4gMSkgeworICAgICAgICAgICAgY29u
c29sZS5lcnJvcigiQ3JlYXRpbmcgYSBUaW1lbGluZURhdGFHcmlkIHdpdGggbW9yZSB0aGFuIG9u
ZSBmaWx0ZXJhYmxlIGNvbHVtbiBpcyBub3QgeWV0IHN1cHBvcnRlZC4iKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6
ZSIsIHRoaXMuX3dpbmRvd1Jlc2l6ZWQuYmluZCh0aGlzKSk7Ci19CisgICAgICAgIGlmICh0aGlz
Ll9maWx0ZXJhYmxlQ29sdW1ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBpdGVtcyA9IFtu
ZXcgV2ViSW5zcGVjdG9yLkZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbSwgdGhpcy5jb2x1bW5z
LmdldCh0aGlzLl9maWx0ZXJhYmxlQ29sdW1uc1swXSkuc2NvcGVCYXIsIG5ldyBXZWJJbnNwZWN0
b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtXTsKKyAgICAgICAgICAgIHRoaXMuX25hdmln
YXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIobnVsbCwgaXRlbXMpOwor
ICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgICAgICAgICBjb250YWluZXIuY2xhc3NO
YW1lID0gIm5hdmlnYXRpb24tYmFyLWNvbnRhaW5lciI7CisgICAgICAgICAgICBjb250YWluZXIu
YXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKIAotV2ViSW5zcGVjdG9y
LlRpbWVsaW5lRGF0YUdyaWQuU3R5bGVDbGFzc05hbWUgPSAidGltZWxpbmUiOwotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lRGF0YUdyaWQuSGFzTm9uRGVmYXVsdEZpbHRlclN0eWxlQ2xhc3NOYW1lID0g
Imhhcy1ub24tZGVmYXVsdC1maWx0ZXIiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQu
RGVsYXllZFBvcG92ZXJTaG93VGltZW91dCA9IDI1MDsKLVdlYkluc3BlY3Rvci5UaW1lbGluZURh
dGFHcmlkLkRlbGF5ZWRQb3BvdmVySGlkZUNvbnRlbnRDbGVhclRpbWVvdXQgPSA1MDA7CisgICAg
ICAgICAgICB0aGlzLl91cGRhdGVTY29wZUJhckZvcmNlZFZpc2liaWxpdHkoKTsKKyAgICAgICAg
fQogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5FdmVudCA9IHsKLSAgICBGaWx0ZXJz
RGlkQ2hhbmdlOiAidGltZWxpbmVkYXRhZ3JpZC1maWx0ZXJzLWRpZC1jaGFuZ2UiCi19OworICAg
ICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNl
bGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX2RhdGFHcmlkU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhp
cyk7CisgICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
RXZlbnQuU29ydENoYW5nZWQsIHRoaXMuX3NvcnQsIHRoaXMpOwogCi1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmVEYXRhR3JpZC5jcmVhdGVDb2x1bW5TY29wZUJhciA9IGZ1bmN0aW9uKHByZWZpeCwgbWFw
KQotewotICAgIHByZWZpeCA9IHByZWZpeCArICItdGltZWxpbmUtZGF0YS1ncmlkLSI7Ci0KLSAg
ICB2YXIgc2NvcGVCYXJJdGVtcyA9IFtdOwotICAgIGZvciAodmFyIFtrZXksIHZhbHVlXSBvZiBt
YXApIHsKLSAgICAgICAgdmFyIGlkID0gcHJlZml4ICsga2V5OwotICAgICAgICB2YXIgaXRlbSA9
IG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtKGlkLCB2YWx1ZSk7Ci0gICAgICAgIGl0ZW0u
dmFsdWUgPSBrZXk7Ci0gICAgICAgIHNjb3BlQmFySXRlbXMucHVzaChpdGVtKTsKKyAgICAgICAg
d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX3dpbmRvd1Jlc2l6ZWQuYmlu
ZCh0aGlzKSk7CiAgICAgfQogCi0gICAgc2NvcGVCYXJJdGVtcy51bnNoaWZ0KG5ldyBXZWJJbnNw
ZWN0b3IuU2NvcGVCYXJJdGVtKHByZWZpeCArICJ0eXBlLWFsbCIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiQWxsIiksIHRydWUpKTsKKyAgICAvLyBTdGF0aWMKIAotICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLlNjb3BlQmFyKHByZWZpeCArICJzY29wZS1iYXIiLCBzY29wZUJhckl0ZW1zLCBz
Y29wZUJhckl0ZW1zWzBdKTsKLX07CisgICAgc3RhdGljIGNyZWF0ZUNvbHVtblNjb3BlQmFyKHBy
ZWZpeCwgbWFwKQorICAgIHsKKyAgICAgICAgcHJlZml4ID0gcHJlZml4ICsgIi10aW1lbGluZS1k
YXRhLWdyaWQtIjsKKworICAgICAgICB2YXIgc2NvcGVCYXJJdGVtcyA9IFtdOworICAgICAgICBm
b3IgKHZhciBba2V5LCB2YWx1ZV0gb2YgbWFwKSB7CisgICAgICAgICAgICB2YXIgaWQgPSBwcmVm
aXggKyBrZXk7CisgICAgICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVC
YXJJdGVtKGlkLCB2YWx1ZSk7CisgICAgICAgICAgICBpdGVtLnZhbHVlID0ga2V5OworICAgICAg
ICAgICAgc2NvcGVCYXJJdGVtcy5wdXNoKGl0ZW0pOworICAgICAgICB9CiAKLVdlYkluc3BlY3Rv
ci5UaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQucHJvdG90eXBlLAorICAgICAgICBzY29wZUJhckl0ZW1zLnVuc2hpZnQobmV3IFdlYklu
c3BlY3Rvci5TY29wZUJhckl0ZW0ocHJlZml4ICsgInR5cGUtYWxsIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJBbGwiKSwgdHJ1ZSkpOworCisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9y
LlNjb3BlQmFyKHByZWZpeCArICJzY29wZS1iYXIiLCBzY29wZUJhckl0ZW1zLCBzY29wZUJhckl0
ZW1zWzBdKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHJlc2V0OiBmdW5jdGlvbigp
CisgICAgcmVzZXQoKQogICAgIHsKICAgICAgICAgLy8gTWF5IGJlIG92ZXJyaWRkZW4gYnkgc3Vi
Y2xhc3Nlcy4gSWYgc28sIHRoZXkgc2hvdWxkIGNhbGwgdGhlIHN1cGVyY2xhc3MuCiAKICAgICAg
ICAgdGhpcy5faGlkZVBvcG92ZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5j
dGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgLy8gTWF5IGJlIG92ZXJyaWRkZW4g
Ynkgc3ViY2xhc3Nlcy4gSWYgc28sIHRoZXkgc2hvdWxkIGNhbGwgdGhlIHN1cGVyY2xhc3MuCiAK
ICAgICAgICAgdGhpcy5fdHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5zeW5jaHJvbml6
ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVu
KCkKICAgICB7CiAgICAgICAgIC8vIE1heSBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMuIElm
IHNvLCB0aGV5IHNob3VsZCBjYWxsIHRoZSBzdXBlcmNsYXNzLgogCiAgICAgICAgIHRoaXMuX2hp
ZGVQb3BvdmVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmVlRWxlbWVudEZvckRhdGFHcmlk
Tm9kZTogZnVuY3Rpb24oZGF0YUdyaWROb2RlKQorICAgIHRyZWVFbGVtZW50Rm9yRGF0YUdyaWRO
b2RlKGRhdGFHcmlkTm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90cmVlT3V0bGlu
ZURhdGFHcmlkU3luY2hyb25pemVyLnRyZWVFbGVtZW50Rm9yRGF0YUdyaWROb2RlKGRhdGFHcmlk
Tm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudDog
ZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgZGF0YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQodHJl
ZUVsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHJlZU91dGxpbmVEYXRhR3Jp
ZFN5bmNocm9uaXplci5kYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjYWxsRnJhbWVQb3BvdmVyQW5jaG9yRWxlbWVudDogZnVuY3Rp
b24oKQorICAgIGNhbGxGcmFtZVBvcG92ZXJBbmNob3JFbGVtZW50KCkKICAgICB7CiAgICAgICAg
IC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBudWxsOwotICAg
IH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5
b3V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUudXBk
YXRlTGF5b3V0LmNhbGwodGhpcyk7CiAKICAgICAgICAgaWYgKHRoaXMuX25hdmlnYXRpb25CYXIp
CiAgICAgICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dCgpOwotICAgIH0s
CisgICAgfQogCi0gICAgdHJlZUVsZW1lbnRNYXRjaGVzQWN0aXZlU2NvcGVGaWx0ZXJzOiBmdW5j
dGlvbih0cmVlRWxlbWVudCkKKyAgICB0cmVlRWxlbWVudE1hdGNoZXNBY3RpdmVTY29wZUZpbHRl
cnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5f
dHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5kYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVu
dCh0cmVlRWxlbWVudCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFHcmlkTm9kZSk7CkBA
IC0xNjEsOSArMTUyLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBhZGRSb3dJblNvcnRPcmRlcjogZnVuY3Rpb24odHJlZUVsZW1lbnQsIGRhdGFHcmlkTm9k
ZSwgcGFyZW50RWxlbWVudCkKKyAgICBhZGRSb3dJblNvcnRPcmRlcih0cmVlRWxlbWVudCwgZGF0
YUdyaWROb2RlLCBwYXJlbnRFbGVtZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdHJlZU91dGxp
bmVEYXRhR3JpZFN5bmNocm9uaXplci5hc3NvY2lhdGUodHJlZUVsZW1lbnQsIGRhdGFHcmlkTm9k
ZSk7CiAKQEAgLTE4MSwxNiArMTcyLDE2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlk
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIC8vIEFwcGVuZCB0byB0aGUgcGFyZW50LCB3aGlj
aCB3aWxsIGNhdXNlIHRoZSBzeW5jaHJvbml6ZXIgdG8gYXBwZW5kIHRvIHRoZSBkYXRhIGdyaWQu
CiAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRyZWVFbGVtZW50KTsKICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgc2hvdWxkSWdub3JlU2VsZWN0aW9uRXZlbnQ6
IGZ1bmN0aW9uKCkKKyAgICBzaG91bGRJZ25vcmVTZWxlY3Rpb25FdmVudCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5faWdub3JlU2VsZWN0aW9uRXZlbnQgfHwgZmFsc2U7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGRhdGFHcmlkTm9kZU5lZWRzUmVmcmVz
aDogZnVuY3Rpb24oZGF0YUdyaWROb2RlKQorICAgIGRhdGFHcmlkTm9kZU5lZWRzUmVmcmVzaChk
YXRhR3JpZE5vZGUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2RpcnR5RGF0YUdyaWROb2Rl
cykKICAgICAgICAgICAgIHRoaXMuX2RpcnR5RGF0YUdyaWROb2RlcyA9IG5ldyBTZXQ7CkBAIC0y
MDAsMTEgKzE5MSwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2NoZWR1bGVkRGF0YUdy
aWROb2RlUmVmcmVzaElkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fcmVm
cmVzaERpcnR5RGF0YUdyaWROb2Rlcy5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAogICAg
IC8vIFByaXZhdGUKIAotICAgIF9yZWZyZXNoRGlydHlEYXRhR3JpZE5vZGVzOiBmdW5jdGlvbigp
CisgICAgX3JlZnJlc2hEaXJ0eURhdGFHcmlkTm9kZXMoKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX3NjaGVkdWxlZERhdGFHcmlkTm9kZVJlZnJlc2hJZGVudGlmaWVyKSB7CiAgICAgICAgICAg
ICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWREYXRhR3JpZE5vZGVSZWZyZXNo
SWRlbnRpZmllcik7CkBAIC0yNTIsOSArMjQzLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0
YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlkU3lu
Y2hyb25pemVyLmVuYWJsZWQgPSB0cnVlOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9kaXJ0eURh
dGFHcmlkTm9kZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc29ydDogZnVuY3Rpb24oKQorICAg
IF9zb3J0KCkKICAgICB7CiAgICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmllciA9IHRoaXMu
c29ydENvbHVtbklkZW50aWZpZXI7CiAgICAgICAgIGlmICghc29ydENvbHVtbklkZW50aWZpZXIp
CkBAIC0zMTAsOSArMzAxLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90
eXBlID0gewogICAgICAgICAgICAgc2VsZWN0ZWROb2RlLnJldmVhbEFuZFNlbGVjdCgpOwogCiAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9pZ25vcmVTZWxlY3Rpb25FdmVudDsKLSAgICB9LAorICAgIH0K
IAotICAgIF9zb3J0Q29tcGFyYXRvcjogZnVuY3Rpb24obm9kZTEsIG5vZGUyKQorICAgIF9zb3J0
Q29tcGFyYXRvcihub2RlMSwgbm9kZTIpCiAgICAgewogICAgICAgICB2YXIgc29ydENvbHVtbklk
ZW50aWZpZXIgPSB0aGlzLnNvcnRDb2x1bW5JZGVudGlmaWVyOwogICAgICAgICBpZiAoIXNvcnRD
b2x1bW5JZGVudGlmaWVyKQpAQCAtMzQ5LDkgKzM0MCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBGb3IgZXZlcnl0aGluZyBlbHNl
IChtb3N0bHkgYm9vbGVhbnMpLgogICAgICAgICByZXR1cm4gKHZhbHVlMSA8IHZhbHVlMiA/IC0x
IDogKHZhbHVlMSA+IHZhbHVlMiA/IDEgOiAwKSkgKiBzb3J0RGlyZWN0aW9uOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3VwZGF0ZVNjb3BlQmFyRm9yY2VkVmlzaWJpbGl0eTogZnVuY3Rpb24oKQor
ICAgIF91cGRhdGVTY29wZUJhckZvcmNlZFZpc2liaWxpdHkoKQogICAgIHsKICAgICAgICAgZm9y
ICh2YXIgaWRlbnRpZmllciBvZiB0aGlzLl9maWx0ZXJhYmxlQ29sdW1ucykgewogICAgICAgICAg
ICAgdmFyIHNjb3BlQmFyID0gdGhpcy5jb2x1bW5zLmdldChpZGVudGlmaWVyKS5zY29wZUJhcjsK
QEAgLTM2MCwxNyArMzUxLDE3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgIH0sCisgICAgfQogCi0gICAgX3Njb3BlQmFyU2VsZWN0ZWRJdGVtc0RpZENoYW5nZTog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX3Njb3BlQmFyU2VsZWN0ZWRJdGVtc0RpZENoYW5nZShldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNjb3BlQmFyRm9yY2VkVmlzaWJpbGl0eSgp
OwogCiAgICAgICAgIHZhciBjb2x1bW5JZGVudGlmaWVyID0gZXZlbnQudGFyZ2V0LmNvbHVtbklk
ZW50aWZpZXI7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZURhdGFHcmlkLkV2ZW50LkZpbHRlcnNEaWRDaGFuZ2UsIHtjb2x1bW5JZGVu
dGlmaWVyfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWRTZWxlY3RlZE5vZGVDaGFu
Z2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWRTZWxlY3RlZE5vZGVDaGFuZ2VkKGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkTm9kZSkgewogICAgICAgICAg
ICAgdGhpcy5faGlkZVBvcG92ZXIoKTsKQEAgLTM4NCwxNSArMzc1LDE1IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRo
aXMuX3Nob3dQb3BvdmVyRm9yU2VsZWN0ZWROb2RlU29vbigpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3dpbmRvd1Jlc2l6ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF93aW5kb3dSZXNpemVkKGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXIgJiYgdGhpcy5fcG9wb3Zlci52
aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlUG9wb3ZlckZvclNlbGVjdGVkTm9kZShm
YWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd1BvcG92ZXJGb3JTZWxlY3RlZE5vZGVT
b29uOiBmdW5jdGlvbigpCisgICAgX3Nob3dQb3BvdmVyRm9yU2VsZWN0ZWROb2RlU29vbigpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fc2hvd1BvcG92ZXJUaW1lb3V0KQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNDA2LDkgKzM5Nyw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlk
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyVGlt
ZW91dCA9IHNldFRpbWVvdXQoZGVsYXllZFdvcmsuYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lRGF0YUdyaWQuRGVsYXllZFBvcG92ZXJTaG93VGltZW91dCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfaGlkZVBvcG92ZXI6IGZ1bmN0aW9uKCkKKyAgICBfaGlkZVBvcG92ZXIoKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX3Nob3dQb3BvdmVyVGltZW91dCkgewogICAgICAgICAgICAg
Y2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dQb3BvdmVyVGltZW91dCk7CkBAIC00MjcsOSArNDE4LDkg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBp
ZiAodGhpcy5faGlkZVBvcG92ZXJDb250ZW50Q2xlYXJUaW1lb3V0KQogICAgICAgICAgICAgY2xl
YXJUaW1lb3V0KHRoaXMuX2hpZGVQb3BvdmVyQ29udGVudENsZWFyVGltZW91dCk7CiAgICAgICAg
IHRoaXMuX2hpZGVQb3BvdmVyQ29udGVudENsZWFyVGltZW91dCA9IHNldFRpbWVvdXQoZGVsYXll
ZFdvcmsuYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuRGVsYXllZFBv
cG92ZXJIaWRlQ29udGVudENsZWFyVGltZW91dCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBk
YXRlUG9wb3ZlckZvclNlbGVjdGVkTm9kZTogZnVuY3Rpb24odXBkYXRlQ29udGVudCkKKyAgICBf
dXBkYXRlUG9wb3ZlckZvclNlbGVjdGVkTm9kZSh1cGRhdGVDb250ZW50KQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9wb3BvdmVyIHx8ICF0aGlzLnNlbGVjdGVkTm9kZSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTQ1NCwxNCArNDQ1LDE0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFH
cmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIuY29udGVudCA9IHRo
aXMuX2NyZWF0ZVBvcG92ZXJDb250ZW50KCk7CiAKICAgICAgICAgdGhpcy5fcG9wb3Zlci5wcmVz
ZW50KHRhcmdldEZyYW1lLnBhZCgyKSwgW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5NQVhfWSwgV2Vi
SW5zcGVjdG9yLlJlY3RFZGdlLk1JTl9ZLCBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1hdKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9jcmVhdGVQb3BvdmVyQ29udGVudDogZnVuY3Rpb24oKQor
ICAgIF9jcmVhdGVQb3BvdmVyQ29udGVudCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3Bv
cG92ZXJDYWxsU3RhY2tUcmVlT3V0bGluZSkgewogICAgICAgICAgICAgdmFyIGNvbnRlbnRFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKICAgICAgICAgICAgIGNvbnRlbnRF
bGVtZW50LmNsYXNzTGlzdC5hZGQoInRpbWVsaW5lLWRhdGEtZ3JpZC10cmVlLW91dGxpbmUiKTsK
LSAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJDYWxsU3RhY2tUcmVlT3V0bGluZSA9IG5ldyBUcmVl
T3V0bGluZShjb250ZW50RWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLl9wb3BvdmVyQ2FsbFN0
YWNrVHJlZU91dGxpbmUgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKGNvbnRlbnRFbGVt
ZW50KTsKICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJDYWxsU3RhY2tUcmVlT3V0bGluZS5vbnNl
bGVjdCA9IHRoaXMuX3BvcG92ZXJDYWxsU3RhY2tUcmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhp
cyk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5fcG9wb3ZlckNhbGxTdGFja1Ry
ZWVPdXRsaW5lLnJlbW92ZUNoaWxkcmVuKCk7CkBAIC00NzYsOSArNDY3LDkgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBjb250ZW50LmNsYXNz
TmFtZSA9ICJ0aW1lbGluZS1kYXRhLWdyaWQtcG9wb3ZlciI7CiAgICAgICAgIGNvbnRlbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fcG9wb3ZlckNhbGxTdGFja1RyZWVPdXRsaW5lLmVsZW1lbnQpOwogICAg
ICAgICByZXR1cm4gY29udGVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3BvdmVyQ2FsbFN0
YWNrVHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlV
c2VyKQorICAgIF9wb3BvdmVyQ2FsbFN0YWNrVHJlZUVsZW1lbnRTZWxlY3RlZCh0cmVlRWxlbWVu
dCwgc2VsZWN0ZWRCeVVzZXIpCiAgICAgewogICAgICAgICB0aGlzLl9wb3BvdmVyLmRpc21pc3Mo
KTsKIApAQCAtNDkwLDMgKzQ4MSwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5z
aG93U291cmNlQ29kZUxvY2F0aW9uKGNhbGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRpb24pOwogICAg
IH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLkhhc05vbkRlZmF1bHRGaWx0
ZXJTdHlsZUNsYXNzTmFtZSA9ICJoYXMtbm9uLWRlZmF1bHQtZmlsdGVyIjsKK1dlYkluc3BlY3Rv
ci5UaW1lbGluZURhdGFHcmlkLkRlbGF5ZWRQb3BvdmVyU2hvd1RpbWVvdXQgPSAyNTA7CitXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5EZWxheWVkUG9wb3ZlckhpZGVDb250ZW50Q2xlYXJU
aW1lb3V0ID0gNTAwOworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5FdmVudCA9IHsK
KyAgICBGaWx0ZXJzRGlkQ2hhbmdlOiAidGltZWxpbmVkYXRhZ3JpZC1maWx0ZXJzLWRpZC1jaGFu
Z2UiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkTm9kZS5qcwppbmRleCAyMmUzYmIzLi5i
M2VhN2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UaW1lbGluZURhdGFHcmlkTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkTm9kZS5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyNyArMjMsMjIg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihncmFwaE9ubHksIGdyYXBoRGF0YVNv
dXJjZSwgaGFzQ2hpbGRyZW4pCitXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUgPSBj
bGFzcyBUaW1lbGluZURhdGFHcmlkTm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5v
ZGUKIHsKLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcywge30sIGhhc0No
aWxkcmVuKTsKKyAgICBjb25zdHJ1Y3RvcihncmFwaE9ubHksIGdyYXBoRGF0YVNvdXJjZSwgaGFz
Q2hpbGRyZW4pCisgICAgeworICAgICAgICBzdXBlcih7fSwgaGFzQ2hpbGRyZW4pOwogCi0gICAg
dGhpcy5jb3B5YWJsZSA9IGZhbHNlOworICAgICAgICB0aGlzLmNvcHlhYmxlID0gZmFsc2U7CiAK
LSAgICB0aGlzLl9ncmFwaE9ubHkgPSBncmFwaE9ubHkgfHwgZmFsc2U7Ci0gICAgdGhpcy5fZ3Jh
cGhEYXRhU291cmNlID0gZ3JhcGhEYXRhU291cmNlIHx8IG51bGw7CisgICAgICAgIHRoaXMuX2dy
YXBoT25seSA9IGdyYXBoT25seSB8fCBmYWxzZTsKKyAgICAgICAgdGhpcy5fZ3JhcGhEYXRhU291
cmNlID0gZ3JhcGhEYXRhU291cmNlIHx8IG51bGw7CiAKLSAgICBpZiAoZ3JhcGhEYXRhU291cmNl
KSB7Ci0gICAgICAgIHRoaXMuX2dyYXBoQ29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnMgPSBbXTsK
KyAgICAgICAgaWYgKGdyYXBoRGF0YVNvdXJjZSkgeworICAgICAgICAgICAgdGhpcy5fZ3JhcGhD
b250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
ICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnMgPSBbXTsKKyAgICAgICAgfQogICAgIH0KLX07
Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQg
d2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29u
c3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlKTsKLQot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLAotICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUsCiAKICAgICAvLyBQdWJsaWMK
IApAQCAtNTEsMTIgKzQ2LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5w
cm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2Vz
LgogICAgICAgICByZXR1cm4gW107Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZ3JhcGhEYXRh
U291cmNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ncmFwaERhdGFTb3VyY2U7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAgICAgewpAQCAtNjUsOSArNjAsOSBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAg
IHZhciByZWNvcmRzID0gdGhpcy5yZWNvcmRzIHx8IFtdOwogICAgICAgICByZXR1cm4ge2dyYXBo
OiByZWNvcmRzLmxlbmd0aCA/IHJlY29yZHNbMF0uc3RhcnRUaW1lIDogMH07Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBjb2xsYXBzZTogZnVuY3Rpb24oKQorICAgIGNvbGxhcHNlKCkKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmNvbGxhcHNlLmNhbGwo
dGhpcyk7CiAKQEAgLTc2LDkgKzcxLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWRO
b2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBSZWZyZXNoIHRvIHNob3cgY2hpbGQgYmFy
cyBpbiBvdXIgZ3JhcGggbm93IHRoYXQgd2UgY29sbGFwc2VkLgogICAgICAgICB0aGlzLnJlZnJl
c2hHcmFwaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgZXhwYW5kOiBmdW5jdGlvbigpCisgICAg
ZXhwYW5kKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90
eXBlLmV4cGFuZC5jYWxsKHRoaXMpOwogCkBAIC05NSw5ICs5MCw5IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgY2hpbGRO
b2RlLnJlZnJlc2hHcmFwaCgpOwogICAgICAgICAgICAgY2hpbGROb2RlID0gY2hpbGROb2RlLnRy
YXZlcnNlTmV4dE5vZGUodHJ1ZSwgdGhpcyk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAot
ICAgIGNyZWF0ZUNlbGxDb250ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQor
ICAgIGNyZWF0ZUNlbGxDb250ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCiAgICAgewogICAg
ICAgICBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gImdyYXBoIiAmJiB0aGlzLl9ncmFwaERhdGFT
b3VyY2UpIHsKICAgICAgICAgICAgIHRoaXMubmVlZHNHcmFwaFJlZnJlc2goKTsKQEAgLTEzMCw3
ICsxMjUsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZ29Ub0Fycm93QnV0dG9uTGluayk7
CiAKICAgICAgICAgICAgIHZhciBpY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0gICAgICAgICAgICBpY29uLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGlu
ZURhdGFHcmlkTm9kZS5JY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBpY29uLmNsYXNz
TmFtZSA9ICJpY29uIjsKICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGljb24pOwog
CiAgICAgICAgICAgICB2YXIgdGl0bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOwpAQCAtMjA5LDkgKzIwNCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlk
Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbENvbnRlbnQuY2FsbCh0aGlzLCBj
b2x1bW5JZGVudGlmaWVyLCBjZWxsKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2g6IGZ1
bmN0aW9uKCkKKyAgICByZWZyZXNoKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9ncmFwaERh
dGFTb3VyY2UgJiYgdGhpcy5fZ3JhcGhPbmx5KSB7CiAgICAgICAgICAgICB0aGlzLm5lZWRzR3Jh
cGhSZWZyZXNoKCk7CkBAIC0yMTksOSArMjE0LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0
YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLnJlZnJlc2guY2FsbCh0aGlzKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHJlZnJlc2hHcmFwaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2hHcmFwaCgpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX2dyYXBoRGF0YVNvdXJjZSkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTI1OSw2ICsyNTQsMTkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWRO
b2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgYm91bmRDcmVhdGVCYXIgPSBjcmVhdGVC
YXIuYmluZCh0aGlzKTsKIAorICAgICAgICBmdW5jdGlvbiBjb2xsZWN0UmVjb3Jkc0J5VHlwZShy
ZWNvcmRzKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHZhciByZWNvcmQgb2YgcmVjb3Jk
cykgeworICAgICAgICAgICAgICAgIHZhciB0eXBlZFJlY29yZHMgPSByZWNvcmRUeXBlTWFwLmdl
dChyZWNvcmQudHlwZSk7CisgICAgICAgICAgICAgICAgaWYgKCF0eXBlZFJlY29yZHMpIHsKKyAg
ICAgICAgICAgICAgICAgICAgdHlwZWRSZWNvcmRzID0gW107CisgICAgICAgICAgICAgICAgICAg
IHJlY29yZFR5cGVNYXAuc2V0KHJlY29yZC50eXBlLCB0eXBlZFJlY29yZHMpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIHR5cGVkUmVjb3Jkcy5wdXNoKHJlY29yZCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAodGhpcy5leHBhbmRlZCkgewog
ICAgICAgICAgICAgLy8gV2hlbiBleHBhbmRlZCBqdXN0IHVzZSB0aGUgcmVjb3JkcyBmb3IgdGhp
cyBub2RlLgogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLmNyZWF0
ZUNvbWJpbmVkQmFycyh0aGlzLnJlY29yZHMsIHNlY29uZHNQZXJQaXhlbCwgdGhpcy5fZ3JhcGhE
YXRhU291cmNlLCBib3VuZENyZWF0ZUJhcik7CkBAIC0yNjgsMTkgKzI3Niw2IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIHZh
ciByZWNvcmRUeXBlTWFwID0gbmV3IE1hcDsKIAotICAgICAgICAgICAgZnVuY3Rpb24gY29sbGVj
dFJlY29yZHNCeVR5cGUocmVjb3JkcykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBm
b3IgKHZhciByZWNvcmQgb2YgcmVjb3JkcykgewotICAgICAgICAgICAgICAgICAgICB2YXIgdHlw
ZWRSZWNvcmRzID0gcmVjb3JkVHlwZU1hcC5nZXQocmVjb3JkLnR5cGUpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIXR5cGVkUmVjb3JkcykgewotICAgICAgICAgICAgICAgICAgICAgICAgdHlw
ZWRSZWNvcmRzID0gW107Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWNvcmRUeXBlTWFwLnNl
dChyZWNvcmQudHlwZSwgdHlwZWRSZWNvcmRzKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgIHR5cGVkUmVjb3Jkcy5wdXNoKHJlY29yZCk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotCiAgICAgICAgICAgICBjb2xsZWN0UmVjb3Jkc0J5VHlw
ZSh0aGlzLnJlY29yZHMpOwogCiAgICAgICAgICAgICB2YXIgY2hpbGROb2RlID0gdGhpcy5jaGls
ZHJlblswXTsKQEAgLTI5OSw5ICsyOTQsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVSZWNvcmRCYXJz
W3JlY29yZEJhckluZGV4XS5yZWNvcmRzID0gbnVsbDsKICAgICAgICAgICAgIHRoaXMuX3RpbWVs
aW5lUmVjb3JkQmFyc1tyZWNvcmRCYXJJbmRleF0uZWxlbWVudC5yZW1vdmUoKTsKICAgICAgICAg
fQotICAgIH0sCisgICAgfQogCi0gICAgbmVlZHNHcmFwaFJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAg
ICBuZWVkc0dyYXBoUmVmcmVzaCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMucmV2ZWFsZWQp
IHsKICAgICAgICAgICAgIC8vIFdlIGFyZSBub3QgdmlzaWJsZSwgYnV0IGFuIGFuY2VzdG9yIHdp
bGwgYmUgZHJhd2luZyBvdXIgZ3JhcGguCkBAIC0zMjMsMTEgKzMxOCwxMSBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIHRoaXMuX3NjaGVkdWxlZEdyYXBoUmVmcmVzaElkZW50aWZpZXIgPSByZXF1
ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5yZWZyZXNoR3JhcGguYmluZCh0aGlzKSk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGlzUmVjb3JkVmlzaWJsZTogZnVuY3Rp
b24ocmVjb3JkKQorICAgIGlzUmVjb3JkVmlzaWJsZShyZWNvcmQpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuX2dyYXBoRGF0YVNvdXJjZSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lT3ZlcnZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZU92ZXJ2aWV3LmpzCmluZGV4IDU4MmJlOGYuLmRkZTA0YzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVPdmVydmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsODcgKzIzLDczIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcgPSBmdW5j
dGlvbih0aW1lbGluZVJlY29yZGluZykKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3ID0g
Y2xhc3MgVGltZWxpbmVPdmVydmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAg
ICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7Ci0KLSAgICB0aGlzLl9yZWNvcmRpbmcgPSB0aW1lbGluZVJlY29yZGluZzsKLSAgICB0aGlz
Ll9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRp
bmcuRXZlbnQuVGltZWxpbmVBZGRlZCwgdGhpcy5fdGltZWxpbmVBZGRlZCwgdGhpcyk7Ci0gICAg
dGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkaW5nLkV2ZW50LlRpbWVsaW5lUmVtb3ZlZCwgdGhpcy5fdGltZWxpbmVSZW1vdmVkLCB0aGlz
KTsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2
aWV3LlN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
d2hlZWwiLCB0aGlzLl9oYW5kbGVXaGVlbEV2ZW50LmJpbmQodGhpcykpOworICAgIGNvbnN0cnVj
dG9yKHRpbWVsaW5lUmVjb3JkaW5nKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotICAgIHRo
aXMuX2dyYXBoc0NvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLl9ncmFwaHNDb250YWluZXJFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU92ZXJ2aWV3LkdyYXBoc0NvbnRhaW5lclN0eWxlQ2xhc3NOYW1lOwotICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZ3JhcGhzQ29udGFpbmVyRWxlbWVudCk7
CisgICAgICAgIHRoaXMuX3JlY29yZGluZyA9IHRpbWVsaW5lUmVjb3JkaW5nOworICAgICAgICB0
aGlzLl9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRpbmcuRXZlbnQuVGltZWxpbmVBZGRlZCwgdGhpcy5fdGltZWxpbmVBZGRlZCwgdGhpcyk7Cisg
ICAgICAgIHRoaXMuX3JlY29yZGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZGluZy5FdmVudC5UaW1lbGluZVJlbW92ZWQsIHRoaXMuX3RpbWVsaW5lUmVtb3Zl
ZCwgdGhpcyk7CiAKLSAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3R3JhcGhzTWFwID0gbmV3IE1h
cDsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1vdmVydmlldyI7
CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigid2hlZWwiLCB0aGlzLl9o
YW5kbGVXaGVlbEV2ZW50LmJpbmQodGhpcykpOwogCi0gICAgdGhpcy5fdGltZWxpbmVSdWxlciA9
IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlcjsKLSAgICB0aGlzLl90aW1lbGluZVJ1bGVy
LmFsbG93c0NsaXBwZWRMYWJlbHMgPSB0cnVlOwotICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWxs
b3dzVGltZVJhbmdlU2VsZWN0aW9uID0gdHJ1ZTsKLSAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRXZlbnQuVGltZVJhbmdl
U2VsZWN0aW9uQ2hhbmdlZCwgdGhpcy5fdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZCwgdGhpcyk7
Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90aW1lbGluZVJ1bGVyLmVsZW1l
bnQpOworICAgICAgICB0aGlzLl9ncmFwaHNDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2dyYXBoc0NvbnRhaW5lckVsZW1lbnQu
Y2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuR3JhcGhzQ29udGFpbmVy
U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
Z3JhcGhzQ29udGFpbmVyRWxlbWVudCk7CiAKLSAgICB0aGlzLl9jdXJyZW50VGltZU1hcmtlciA9
IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIoMCwgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
TWFya2VyLlR5cGUuQ3VycmVudFRpbWUpOwotICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWRkTWFy
a2VyKHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVy
dmlld0dyYXBoc01hcCA9IG5ldyBNYXA7CiAKLSAgICB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fc2Nyb2xsQ29u
dGFpbmVyRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5T
Y3JvbGxDb250YWluZXJTdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9zY3JvbGxDb250YWluZXJF
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX2hhbmRsZVNjcm9sbEV2ZW50
LmJpbmQodGhpcykpOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2Nyb2xs
Q29udGFpbmVyRWxlbWVudCk7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXI7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWxs
b3dzQ2xpcHBlZExhYmVscyA9IHRydWU7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWxs
b3dzVGltZVJhbmdlU2VsZWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkV2ZW50LlRpbWVS
YW5nZVNlbGVjdGlvbkNoYW5nZWQsIHRoaXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQsIHRo
aXMpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RpbWVsaW5lUnVs
ZXIuZWxlbWVudCk7CiAKLSAgICB0aGlzLl9zY3JvbGxXaWR0aFNpemVyID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fc2Nyb2xsV2lkdGhTaXplci5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5TY3JvbGxXaWR0aFNpemVyU3R5bGVDbGFz
c05hbWU7Ci0gICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9zY3JvbGxXaWR0aFNpemVyKTsKKyAgICAgICAgdGhpcy5fY3VycmVudFRpbWVNYXJrZXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyKDAsIFdlYkluc3BlY3Rvci5UaW1lbGluZU1h
cmtlci5UeXBlLkN1cnJlbnRUaW1lKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5hZGRN
YXJrZXIodGhpcy5fY3VycmVudFRpbWVNYXJrZXIpOwogCi0gICAgdGhpcy5fc2Vjb25kc1BlclBp
eGVsU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygidGltZWxpbmUtb3ZlcnZpZXct
c2Vjb25kcy1wZXItcGl4ZWwiLCAwLjAxKTsKLSAgICB0aGlzLl9zZWxlY3Rpb25TdGFydFRpbWVT
ZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJ0aW1lbGluZS1vdmVydmlldy1zZWxl
Y3Rpb24tc3RhcnQtdGltZSIsIDApOwotICAgIHRoaXMuX3NlbGVjdGlvbkR1cmF0aW9uU2V0dGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygidGltZWxpbmUtb3ZlcnZpZXctc2VsZWN0aW9u
LWR1cmF0aW9uIiwgNSk7CisgICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fc2Nyb2xsQ29udGFp
bmVyRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5TY3Jv
bGxDb250YWluZXJTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVy
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9oYW5kbGVTY3JvbGxFdmVu
dC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9z
Y3JvbGxDb250YWluZXJFbGVtZW50KTsKIAotICAgIHRoaXMuX3N0YXJ0VGltZSA9IDA7Ci0gICAg
dGhpcy5fY3VycmVudFRpbWUgPSAwOwotICAgIHRoaXMuX2VuZFRpbWUgPSAwOwotICAgIHRoaXMu
X3NlY29uZHNQZXJQaXhlbCA9IHRoaXMuX3NlY29uZHNQZXJQaXhlbFNldHRpbmcudmFsdWU7Ci0g
ICAgdGhpcy5fc2Nyb2xsU3RhcnRUaW1lID0gMDsKLSAgICB0aGlzLl9jYWNoZWRTY3JvbGxDb250
YWluZXJXaWR0aCA9IE5hTjsKKyAgICAgICAgdGhpcy5fc2Nyb2xsV2lkdGhTaXplciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9zY3JvbGxXaWR0aFNpemVy
LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LlNjcm9sbFdpZHRoU2l6
ZXJTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9zY3JvbGxXaWR0aFNpemVyKTsKIAotICAgIHRoaXMuc2VsZWN0aW9u
U3RhcnRUaW1lID0gdGhpcy5fc2VsZWN0aW9uU3RhcnRUaW1lU2V0dGluZy52YWx1ZTsKLSAgICB0
aGlzLnNlbGVjdGlvbkR1cmF0aW9uID0gdGhpcy5fc2VsZWN0aW9uRHVyYXRpb25TZXR0aW5nLnZh
bHVlOworICAgICAgICB0aGlzLl9zZWNvbmRzUGVyUGl4ZWxTZXR0aW5nID0gbmV3IFdlYkluc3Bl
Y3Rvci5TZXR0aW5nKCJ0aW1lbGluZS1vdmVydmlldy1zZWNvbmRzLXBlci1waXhlbCIsIDAuMDEp
OworICAgICAgICB0aGlzLl9zZWxlY3Rpb25TdGFydFRpbWVTZXR0aW5nID0gbmV3IFdlYkluc3Bl
Y3Rvci5TZXR0aW5nKCJ0aW1lbGluZS1vdmVydmlldy1zZWxlY3Rpb24tc3RhcnQtdGltZSIsIDAp
OworICAgICAgICB0aGlzLl9zZWxlY3Rpb25EdXJhdGlvblNldHRpbmcgPSBuZXcgV2ViSW5zcGVj
dG9yLlNldHRpbmcoInRpbWVsaW5lLW92ZXJ2aWV3LXNlbGVjdGlvbi1kdXJhdGlvbiIsIDUpOwog
Ci0gICAgZm9yICh2YXIgdGltZWxpbmUgb2YgdGhpcy5fcmVjb3JkaW5nLnRpbWVsaW5lcy52YWx1
ZXMoKSkKLSAgICAgICAgdGhpcy5fdGltZWxpbmVBZGRlZCh0aW1lbGluZSk7Ci19OwotCi1XZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5TdHlsZUNsYXNzTmFtZSA9ICJ0aW1lbGluZS1vdmVy
dmlldyI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5HcmFwaHNDb250YWluZXJTdHls
ZUNsYXNzTmFtZSA9ICJncmFwaHMtY29udGFpbmVyIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZU92
ZXJ2aWV3LlNjcm9sbENvbnRhaW5lclN0eWxlQ2xhc3NOYW1lID0gInNjcm9sbC1jb250YWluZXIi
OwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuU2Nyb2xsV2lkdGhTaXplclN0eWxlQ2xh
c3NOYW1lID0gInNjcm9sbC13aWR0aC1zaXplciI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVy
dmlldy5NaW5pbXVtU2Vjb25kc1BlclBpeGVsID0gMC4wMDE7Ci1XZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlldy5TY3JvbGxEZWx0YURlbm9taW5hdG9yID0gNTAwOworICAgICAgICB0aGlzLl9z
dGFydFRpbWUgPSAwOworICAgICAgICB0aGlzLl9jdXJyZW50VGltZSA9IDA7CisgICAgICAgIHRo
aXMuX2VuZFRpbWUgPSAwOworICAgICAgICB0aGlzLl9zZWNvbmRzUGVyUGl4ZWwgPSB0aGlzLl9z
ZWNvbmRzUGVyUGl4ZWxTZXR0aW5nLnZhbHVlOworICAgICAgICB0aGlzLl9zY3JvbGxTdGFydFRp
bWUgPSAwOworICAgICAgICB0aGlzLl9jYWNoZWRTY3JvbGxDb250YWluZXJXaWR0aCA9IE5hTjsK
IAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuRXZlbnQgPSB7Ci0gICAgVGltZVJhbmdl
U2VsZWN0aW9uQ2hhbmdlZDogInRpbWVsaW5lLW92ZXJ2aWV3LXRpbWUtcmFuZ2Utc2VsZWN0aW9u
LWNoYW5nZWQiCi19OworICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0VGltZSA9IHRoaXMuX3Nl
bGVjdGlvblN0YXJ0VGltZVNldHRpbmcudmFsdWU7CisgICAgICAgIHRoaXMuc2VsZWN0aW9uRHVy
YXRpb24gPSB0aGlzLl9zZWxlY3Rpb25EdXJhdGlvblNldHRpbmcudmFsdWU7CiAKLVdlYkluc3Bl
Y3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZSwKKyAgICAgICAgZm9yICh2YXIgdGltZWxpbmUgb2YgdGhpcy5fcmVj
b3JkaW5nLnRpbWVsaW5lcy52YWx1ZXMoKSkKKyAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lQWRk
ZWQodGltZWxpbmUpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgc3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydFRp
bWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc3RhcnRUaW1lKHgpCiAgICAgewpAQCAtMTEz
LDEyICs5OSwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IHggfHwgMDsKIAogICAgICAgICB0aGlzLl9uZWVk
c0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGN1cnJlbnRUaW1lKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50VGltZTsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCBjdXJyZW50VGltZSh4KQogICAgIHsKQEAgLTEyOSwxMiArMTE1LDEyIEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmV2ZWFs
Q3VycmVudFRpbWUgPSB0cnVlOwogCiAgICAgICAgIHRoaXMuX25lZWRzTGF5b3V0KCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgc2Vjb25kc1BlclBpeGVsKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zZWNvbmRzUGVyUGl4ZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2Vj
b25kc1BlclBpeGVsKHgpCiAgICAgewpAQCAtMTQ3LDEyICsxMzMsMTIgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zZWNvbmRzUGVy
UGl4ZWxTZXR0aW5nLnZhbHVlID0geDsKIAogICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVuZFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2VuZFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZW5kVGltZSh4KQogICAg
IHsKQEAgLTE2MiwxMiArMTQ4LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZW5kVGltZSA9IHggfHwgMDsKIAogICAgICAgICB0
aGlzLl9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjcm9sbFN0YXJ0
VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsU3RhcnRUaW1lOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IHNjcm9sbFN0YXJ0VGltZSh4KQogICAgIHsKQEAgLTE3Nyw3
ICsxNjMsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX3Njcm9sbFN0YXJ0VGltZSA9IHggfHwgMDsKIAogICAgICAgICB0aGlzLl9u
ZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHZpc2libGVEdXJhdGlvbigp
CiAgICAgewpAQCAtMTg3LDEyICsxNzMsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hl
ZFNjcm9sbENvbnRhaW5lcldpZHRoICogdGhpcy5fc2Vjb25kc1BlclBpeGVsOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHNlbGVjdGlvblN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fdGltZWxpbmVSdWxlci5zZWxlY3Rpb25TdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBzZXQgc2VsZWN0aW9uU3RhcnRUaW1lKHgpCiAgICAgewpAQCAtMjAxLDI1ICsxODcs
MjUgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB2YXIgc2VsZWN0aW9uRHVyYXRpb24gPSB0aGlzLnNlbGVjdGlvbkR1cmF0aW9uOwogICAgICAg
ICB0aGlzLl90aW1lbGluZVJ1bGVyLnNlbGVjdGlvblN0YXJ0VGltZSA9IHg7CiAgICAgICAgIHRo
aXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uRW5kVGltZSA9IHggKyBzZWxlY3Rpb25EdXJhdGlv
bjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rpb25EdXJhdGlvbigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fdGltZWxpbmVSdWxlci5zZWxlY3Rpb25FbmRUaW1lIC0gdGhp
cy5fdGltZWxpbmVSdWxlci5zZWxlY3Rpb25TdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBzZXQgc2VsZWN0aW9uRHVyYXRpb24oeCkKICAgICB7CiAgICAgICAgIHggPSBNYXRoLm1heChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5NaW5pbXVtU2VsZWN0aW9uVGltZVJhbmdlLCB4KTsK
ICAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5zZWxlY3Rpb25FbmRUaW1lID0gdGhpcy5fdGlt
ZWxpbmVSdWxlci5zZWxlY3Rpb25TdGFydFRpbWUgKyB4OwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHZpc2libGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGU7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX3Zpc2libGUgPSB0cnVlOwogCkBAIC0yMjcsMzkgKzIxMywzOSBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aW1l
bGluZU92ZXJ2aWV3R3JhcGguc2hvd24oKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgp
OwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Zpc2libGUgPSBmYWxzZTsKIAogICAgICAgICBmb3IgKHZh
ciB0aW1lbGluZU92ZXJ2aWV3R3JhcGggb2YgdGhpcy5fdGltZWxpbmVPdmVydmlld0dyYXBoc01h
cC52YWx1ZXMoKSkKICAgICAgICAgICAgIHRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5oaWRkZW4oKTsK
LSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgcmVzZXQoKQogICAg
IHsKICAgICAgICAgZm9yICh2YXIgdGltZWxpbmVPdmVydmlld0dyYXBoIG9mIHRoaXMuX3RpbWVs
aW5lT3ZlcnZpZXdHcmFwaHNNYXAudmFsdWVzKCkpCiAgICAgICAgICAgICB0aW1lbGluZU92ZXJ2
aWV3R3JhcGgucmVzZXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZE1hcmtlcjogZnVuY3Rp
b24obWFya2VyKQorICAgIGFkZE1hcmtlcihtYXJrZXIpCiAgICAgewogICAgICAgICB0aGlzLl90
aW1lbGluZVJ1bGVyLmFkZE1hcmtlcihtYXJrZXIpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2
ZWFsTWFya2VyOiBmdW5jdGlvbihtYXJrZXIpCisgICAgcmV2ZWFsTWFya2VyKG1hcmtlcikKICAg
ICB7CiAgICAgICAgIHRoaXMuc2Nyb2xsU3RhcnRUaW1lID0gbWFya2VyLnRpbWUgLSAodGhpcy52
aXNpYmxlRHVyYXRpb24gLyAyKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dEZv
clJlc2l6ZTogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dEZvclJlc2l6ZSgpCiAgICAgewog
ICAgICAgICB0aGlzLl9jYWNoZWRTY3JvbGxDb250YWluZXJXaWR0aCA9IE5hTjsKICAgICAgICAg
dGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDog
ZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
c2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2VsQW5p
bWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CkBAIC0y
ODAsNyArMjY2LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3JldmVhbEN1cnJlbnRUaW1lOwogICAgICAgICB9
CiAKLSAgICAgICAgY29uc3QgdmlzaWJsZUR1cmF0aW9uID0gdGhpcy52aXNpYmxlRHVyYXRpb247
CisgICAgICAgIHZhciB2aXNpYmxlRHVyYXRpb24gPSB0aGlzLnZpc2libGVEdXJhdGlvbjsKIAog
ICAgICAgICAvLyBDbGFtcCB0aGUgc2Nyb2xsIHN0YXJ0IHRpbWUgdG8gbWF0Y2ggd2hhdCB0aGUg
c2Nyb2xsIGJhciB3b3VsZCBhbGxvdy4KICAgICAgICAgdmFyIHNjcm9sbFN0YXJ0VGltZSA9IE1h
dGgubWluKHRoaXMuX3Njcm9sbFN0YXJ0VGltZSwgdGhpcy5fZW5kVGltZSAtIHZpc2libGVEdXJh
dGlvbik7CkBAIC0zMDQsOSArMjkwLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGltZWxpbmVPdmVydmlld0dyYXBoLmVuZFRpbWUg
PSBzY3JvbGxTdGFydFRpbWUgKyB2aXNpYmxlRHVyYXRpb247CiAgICAgICAgICAgICB0aW1lbGlu
ZU92ZXJ2aWV3R3JhcGgudXBkYXRlTGF5b3V0KCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAotICAgIHVwZGF0ZUxheW91dElmTmVlZGVkOiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0
SWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0
ZUlkZW50aWZpZXIpIHsKICAgICAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CkBAIC0zMTcs
MTggKzMwMywxOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgZm9yICh2YXIgdGltZWxpbmVPdmVydmlld0dyYXBoIG9mIHRoaXMuX3RpbWVs
aW5lT3ZlcnZpZXdHcmFwaHNNYXAudmFsdWVzKCkpCiAgICAgICAgICAgICB0aW1lbGluZU92ZXJ2
aWV3R3JhcGgudXBkYXRlTGF5b3V0SWZOZWVkZWQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF91cGRhdGVFbGVtZW50V2lkdGg6IGZ1bmN0aW9uKGVsZW1lbnQsIG5l
d1dpZHRoKQorICAgIF91cGRhdGVFbGVtZW50V2lkdGgoZWxlbWVudCwgbmV3V2lkdGgpCiAgICAg
ewogICAgICAgICB2YXIgY3VycmVudFdpZHRoID0gcGFyc2VJbnQoZWxlbWVudC5zdHlsZS53aWR0
aCk7CiAgICAgICAgIGlmIChjdXJyZW50V2lkdGggIT09IG5ld1dpZHRoKQogICAgICAgICAgICAg
ZWxlbWVudC5zdHlsZS53aWR0aCA9IG5ld1dpZHRoICsgInB4IjsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9uZWVkc0xheW91dDogZnVuY3Rpb24oKQorICAgIF9uZWVkc0xheW91dCgpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX3Zpc2libGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMzcs
OSArMzIzLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0
ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy51cGRhdGVMYXlvdXQuYmlu
ZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlU2Nyb2xsRXZlbnQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9oYW5kbGVTY3JvbGxFdmVudChldmVudCkKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLl9pZ25vcmVOZXh0U2Nyb2xsRXZlbnQpIHsKICAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl9pZ25vcmVOZXh0U2Nyb2xsRXZlbnQ7CkBAIC0zNTUsOSArMzQxLDkgQEAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnVwZGF0ZUxh
eW91dElmTmVlZGVkKCk7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2RvbnRVcGRhdGVTY3JvbGxM
ZWZ0OwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZVdoZWVsRXZlbnQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9oYW5kbGVXaGVlbEV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gSWdu
b3JlIGNsb25lZCBldmVudHMgdGhhdCBjb21lIG91ciB3YXksIHdlIGFscmVhZHkgaGFuZGxlZCB0
aGUgb3JpZ2luYWwuCiAgICAgICAgIGlmIChldmVudC5fX2Nsb25lZCkKQEAgLTM4Niw5ICszNzIs
OSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9u
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVBZGRlZDogZnVuY3Rpb24odGltZWxp
bmVPckV2ZW50KQorICAgIF90aW1lbGluZUFkZGVkKHRpbWVsaW5lT3JFdmVudCkKICAgICB7CiAg
ICAgICAgIHZhciB0aW1lbGluZSA9IHRpbWVsaW5lT3JFdmVudDsKICAgICAgICAgaWYgKCEodGlt
ZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpKQpAQCAtMzk3LDEzICszODMs
MTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aW1lbGluZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZSwgdGltZWxpbmUpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdGltZWxpbmVPdmVy
dmlld0dyYXBoc01hcC5oYXModGltZWxpbmUpLCB0aW1lbGluZSk7CiAKLSAgICAgICAgdmFyIG92
ZXJ2aWV3R3JhcGggPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaCh0aW1l
bGluZSk7CisgICAgICAgIHZhciBvdmVydmlld0dyYXBoID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
T3ZlcnZpZXdHcmFwaC5jcmVhdGUodGltZWxpbmUpOwogICAgICAgICBvdmVydmlld0dyYXBoLnRp
bWVsaW5lT3ZlcnZpZXcgPSB0aGlzOwogICAgICAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3R3Jh
cGhzTWFwLnNldCh0aW1lbGluZSwgb3ZlcnZpZXdHcmFwaCk7CiAgICAgICAgIHRoaXMuX2dyYXBo
c0NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQob3ZlcnZpZXdHcmFwaC5lbGVtZW50KTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF90aW1lbGluZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF90aW1lbGluZVJlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdGltZWxpbmUgPSBl
dmVudC5kYXRhLnRpbWVsaW5lOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZSBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSwgdGltZWxpbmUpOwpAQCAtNDEyLDkgKzM5OCw5
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dmFyIG92ZXJ2aWV3R3JhcGggPSB0aGlzLl90aW1lbGluZU92ZXJ2aWV3R3JhcGhzTWFwLnRha2Uo
dGltZWxpbmUpOwogICAgICAgICBvdmVydmlld0dyYXBoLnRpbWVsaW5lT3ZlcnZpZXcgPSBudWxs
OwogICAgICAgICB0aGlzLl9ncmFwaHNDb250YWluZXJFbGVtZW50LnJlbW92ZUNoaWxkKG92ZXJ2
aWV3R3JhcGguZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZVJhbmdlU2VsZWN0
aW9uQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5n
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9zZWxlY3Rpb25TdGFydFRpbWVTZXR0aW5n
LnZhbHVlID0gdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgLSB0aGlzLl9zdGFydFRpbWU7CiAgICAg
ICAgIHRoaXMuX3NlbGVjdGlvbkR1cmF0aW9uU2V0dGluZy52YWx1ZSA9IHRoaXMuc2VsZWN0aW9u
RHVyYXRpb247CkBAIC00MjIsMyArNDA4LDEzIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuRXZlbnQuVGltZVJhbmdlU2VsZWN0aW9uQ2hh
bmdlZCk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuR3JhcGhz
Q29udGFpbmVyU3R5bGVDbGFzc05hbWUgPSAiZ3JhcGhzLWNvbnRhaW5lciI7CitXZWJJbnNwZWN0
b3IuVGltZWxpbmVPdmVydmlldy5TY3JvbGxDb250YWluZXJTdHlsZUNsYXNzTmFtZSA9ICJzY3Jv
bGwtY29udGFpbmVyIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LlNjcm9sbFdpZHRo
U2l6ZXJTdHlsZUNsYXNzTmFtZSA9ICJzY3JvbGwtd2lkdGgtc2l6ZXIiOworV2ViSW5zcGVjdG9y
LlRpbWVsaW5lT3ZlcnZpZXcuTWluaW11bVNlY29uZHNQZXJQaXhlbCA9IDAuMDAxOworV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuU2Nyb2xsRGVsdGFEZW5vbWluYXRvciA9IDUwMDsKKwor
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuRXZlbnQgPSB7CisgICAgVGltZVJhbmdlU2Vs
ZWN0aW9uQ2hhbmdlZDogInRpbWVsaW5lLW92ZXJ2aWV3LXRpbWUtcmFuZ2Utc2VsZWN0aW9uLWNo
YW5nZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGltZWxpbmVPdmVydmlld0dyYXBoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlld0dyYXBoLmpzCmluZGV4IDcxOWQ5
ZGYuLjIyN2I2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2aWV3R3JhcGguanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTEg
KzIzLDI2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGZ1bmN0aW9uKHRpbWVsaW5lKQorV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGNsYXNzIFRpbWVsaW5lT3ZlcnZpZXdH
cmFwaCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICBpZiAodGhpcy5jb25zdHJ1
Y3RvciA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaCkgewotICAgICAgICAv
LyBXaGVuIGluc3RhbnRpYXRlZCBkaXJlY3RseSByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSB0eXBl
LWJhc2VkIGNvbmNyZXRlIHN1YmNsYXNzLgorICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0aW1lbGlu
ZS1vdmVydmlldy1ncmFwaCIpOworCisgICAgICAgIHRoaXMuX3plcm9UaW1lID0gMDsKKyAgICAg
ICAgdGhpcy5fc3RhcnRUaW1lID0gMDsKKyAgICAgICAgdGhpcy5fZW5kVGltZSA9IDU7CisgICAg
ICAgIHRoaXMuX2N1cnJlbnRUaW1lID0gMDsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmll
dyA9IG51bGw7CisgICAgfQogCisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgY3JlYXRlKHRp
bWVsaW5lKQorICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUgJiYgdGltZWxp
bmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpOwogCiAgICAgICAgIHZhciB0aW1l
bGluZVR5cGUgPSB0aW1lbGluZS50eXBlOwpAQCAtNDYsMzQgKzYxLDEyIEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZSkKICAgICAgICAgdGhy
b3cgRXJyb3IoIkNhbid0IG1ha2UgYSBncmFwaCBmb3IgYW4gdW5rbm93biB0aW1lbGluZS4iKTsK
ICAgICB9CiAKLSAgICAvLyBDb25jcmV0ZSBvYmplY3QgaW5zdGFudGlhdGlvbi4KLSAgICBjb25z
b2xlLmFzc2VydCh0aGlzLmNvbnN0cnVjdG9yICE9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVy
dmlld0dyYXBoICYmIHRoaXMgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmll
d0dyYXBoKTsKLQotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3Iu
T2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3R3JhcGguU3R5bGVDbGFzc05hbWUpOwotCi0gICAgdGhpcy5femVy
b1RpbWUgPSAwOwotICAgIHRoaXMuX3N0YXJ0VGltZSA9IDA7Ci0gICAgdGhpcy5fZW5kVGltZSA9
IDU7Ci0gICAgdGhpcy5fY3VycmVudFRpbWUgPSAwOwotICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZp
ZXcgPSBudWxsOwotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5TdHls
ZUNsYXNzTmFtZSA9ICJ0aW1lbGluZS1vdmVydmlldy1ncmFwaCI7Ci0KLVdlYkluc3BlY3Rvci5U
aW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGUsCi0KICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB6ZXJvVGlt
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5femVyb1RpbWU7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBzZXQgemVyb1RpbWUoeCkKICAgICB7CkBAIC04MywxMiArNzYsMTIgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3plcm9UaW1lID0geCB8fCAwOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBzdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3N0YXJ0VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdGFydFRpbWUoeCkKICAg
ICB7CkBAIC05OCwxMiArOTEsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFw
aC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IHggfHwgMDsKIAogICAg
ICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5kVGlt
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZW5kVGltZTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBlbmRUaW1lKHgpCiAgICAgewpAQCAtMTEzLDEyICsxMDYsMTIgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X2VuZFRpbWUgPSB4IHx8IDA7CiAKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGN1cnJlbnRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9jdXJyZW50VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBjdXJyZW50VGltZSh4
KQogICAgIHsKQEAgLTEzMSw0MCArMTI0LDQwIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2
aWV3R3JhcGgucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICgodGhpcy5fc3RhcnRUaW1lIDw9
IG9sZEN1cnJlbnRUaW1lICYmIG9sZEN1cnJlbnRUaW1lIDw9IHRoaXMuX2VuZFRpbWUpIHx8ICh0
aGlzLl9zdGFydFRpbWUgPD0gdGhpcy5fY3VycmVudFRpbWUgJiYgdGhpcy5fY3VycmVudFRpbWUg
PD0gdGhpcy5fZW5kVGltZSkpCiAgICAgICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgdGltZWxpbmVPdmVydmlldygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fdGltZWxpbmVPdmVydmlldzsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB0
aW1lbGluZU92ZXJ2aWV3KHgpCiAgICAgewogICAgICAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3
ID0geDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB2aXNpYmxlKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl92aXNpYmxlOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0
aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICB0aGlzLl92aXNpYmxlID0gdHJ1ZTsK
ICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRl
bjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICB0aGlzLl92aXNpYmxl
ID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHJl
c2V0KCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlmIG5l
ZWRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAg
IHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0
VXBkYXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhp
cy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CkBAIC0xNzIsMTggKzE2NSwxOCBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlmIG5lZWRlZC4K
LSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dElmTmVlZGVkOiBmdW5jdGlvbigpCisg
ICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zY2hl
ZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVk
CiAKLSAgICBuZWVkc0xheW91dDogZnVuY3Rpb24oKQorICAgIG5lZWRzTGF5b3V0KCkKICAgICB7
CiAgICAgICAgIGlmICghdGhpcy5fdmlzaWJsZSkKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
UmVjb3JkQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGltZWxpbmVSZWNvcmRCYXIuanMKaW5kZXggNTdmYzg3Mi4uOGQ4Yjg3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRC
YXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVSZWNvcmRCYXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMTg2ICsyMywxNjggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIgPSBm
dW5jdGlvbihyZWNvcmRzLCByZW5kZXJNb2RlKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
QmFyID0gY2xhc3MgVGltZWxpbmVSZWNvcmRCYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qg
c3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHJlY29yZHMsIHJlbmRlck1vZGUpCisgICAgewor
ICAgICAgICBzdXBlcigpOwogCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRCYXIuU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9lbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUtcmVjb3JkLWJhciIpOwogCi0gICAgdGhpcy5yZW5k
ZXJNb2RlID0gcmVuZGVyTW9kZTsKLSAgICB0aGlzLnJlY29yZHMgPSByZWNvcmRzOwotfTsKKyAg
ICAgICAgdGhpcy5yZW5kZXJNb2RlID0gcmVuZGVyTW9kZTsKKyAgICAgICAgdGhpcy5yZWNvcmRz
ID0gcmVjb3JkczsKKyAgICB9CiAKLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9i
amVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVj
dC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkQmFyKTsKKyAgICAvLyBTdGF0aWMKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
QmFyLlN0eWxlQ2xhc3NOYW1lID0gInRpbWVsaW5lLXJlY29yZC1iYXIiOwotV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkQmFyLkJhclNlZ21lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZWdtZW50IjsK
LVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5JbmFjdGl2ZVN0eWxlQ2xhc3NOYW1lID0g
ImluYWN0aXZlIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5VbmZpbmlzaGVkU3R5
bGVDbGFzc05hbWUgPSAidW5maW5pc2hlZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRC
YXIuSGFzSW5hY3RpdmVTZWdtZW50U3R5bGVDbGFzc05hbWUgPSAiaGFzLWluYWN0aXZlLXNlZ21l
bnQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLk1pbmltdW1XaWR0aFBpeGVscyA9
IDQ7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuTWluaW11bU1hcmdpblBpeGVscyA9
IDE7CisgICAgc3RhdGljIGNyZWF0ZUNvbWJpbmVkQmFycyhyZWNvcmRzLCBzZWNvbmRzUGVyUGl4
ZWwsIGdyYXBoRGF0YVNvdXJjZSwgY3JlYXRlQmFyQ2FsbGJhY2spCisgICAgeworICAgICAgICBp
ZiAoIXJlY29yZHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOwogCi1XZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRCYXIuUmVuZGVyTW9kZSA9IHsKLSAgICBOb3JtYWw6ICJ0aW1lbGluZS1y
ZWNvcmQtYmFyLW5vcm1hbC1yZW5kZXItbW9kZSIsCi0gICAgSW5hY3RpdmVPbmx5OiAidGltZWxp
bmUtcmVjb3JkLWJhci1pbmFjdGl2ZS1vbmx5LXJlbmRlci1tb2RlIiwKLSAgICBBY3RpdmVPbmx5
OiAidGltZWxpbmUtcmVjb3JkLWJhci1hY3RpdmUtb25seS1yZW5kZXItbW9kZSIKLX07CisgICAg
ICAgIHZhciBzdGFydFRpbWUgPSBncmFwaERhdGFTb3VyY2Uuc3RhcnRUaW1lOworICAgICAgICB2
YXIgY3VycmVudFRpbWUgPSBncmFwaERhdGFTb3VyY2UuY3VycmVudFRpbWU7CisgICAgICAgIHZh
ciBlbmRUaW1lID0gZ3JhcGhEYXRhU291cmNlLmVuZFRpbWU7CiAKLVdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZEJhci5jcmVhdGVDb21iaW5lZEJhcnMgPSBmdW5jdGlvbihyZWNvcmRzLCBzZWNv
bmRzUGVyUGl4ZWwsIGdyYXBoRGF0YVNvdXJjZSwgY3JlYXRlQmFyQ2FsbGJhY2spCi17Ci0gICAg
aWYgKCFyZWNvcmRzLmxlbmd0aCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICB2YXIgdmlzaWJs
ZVJlY29yZHMgPSBbXTsKKyAgICAgICAgdmFyIHVzZXNBY3RpdmVTdGFydFRpbWUgPSBmYWxzZTsK
KyAgICAgICAgdmFyIGxhc3RSZWNvcmRUeXBlID0gbnVsbDsKIAotICAgIHZhciBzdGFydFRpbWUg
PSBncmFwaERhdGFTb3VyY2Uuc3RhcnRUaW1lOwotICAgIHZhciBjdXJyZW50VGltZSA9IGdyYXBo
RGF0YVNvdXJjZS5jdXJyZW50VGltZTsKLSAgICB2YXIgZW5kVGltZSA9IGdyYXBoRGF0YVNvdXJj
ZS5lbmRUaW1lOworICAgICAgICAvLyBGSVhNRTogRG8gYSBiaW5hcnkgc2VhcmNoIGZvciByZWNv
cmRzIHRoYXQgZmFsbCBpbnNpZGUgc3RhcnQgYW5kIGN1cnJlbnQgdGltZS4KIAotICAgIHZhciB2
aXNpYmxlUmVjb3JkcyA9IFtdOwotICAgIHZhciB1c2VzQWN0aXZlU3RhcnRUaW1lID0gZmFsc2U7
Ci0gICAgdmFyIGxhc3RSZWNvcmRUeXBlID0gbnVsbDsKKyAgICAgICAgZm9yICh2YXIgcmVjb3Jk
IG9mIHJlY29yZHMpIHsKKyAgICAgICAgICAgIGlmIChpc05hTihyZWNvcmQuc3RhcnRUaW1lKSkK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgIC8vIEZJWE1FOiBEbyBhIGJpbmFyeSBz
ZWFyY2ggZm9yIHJlY29yZHMgdGhhdCBmYWxsIGluc2lkZSBzdGFydCBhbmQgY3VycmVudCB0aW1l
LgorICAgICAgICAgICAgLy8gSWYgdGhpcyBiYXIgaXMgY29tcGxldGVseSBiZWZvcmUgdGhlIGJv
dW5kcyBvZiB0aGUgZ3JhcGgsIHNraXAgdGhpcyByZWNvcmQuCisgICAgICAgICAgICBpZiAocmVj
b3JkLmVuZFRpbWUgPCBzdGFydFRpbWUpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICBmb3IgKHZhciByZWNvcmQgb2YgcmVjb3JkcykgewotICAgICAgICBpZiAoaXNOYU4ocmVjb3Jk
LnN0YXJ0VGltZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIC8vIElmIHRo
aXMgcmVjb3JkIGlzIGNvbXBsZXRlbHkgYWZ0ZXIgdGhlIGN1cnJlbnQgdGltZSBvciBlbmQgdGlt
ZSwgYnJlYWsgb3V0IG5vdy4KKyAgICAgICAgICAgIC8vIFJlY29yZHMgYXJlIHNvcnRlZCwgc28g
YWxsIHJlY29yZHMgYWZ0ZXIgdGhpcyB3aWxsIGJlIGJleW9uZCB0aGUgY3VycmVudCBvciBlbmQg
dGltZSB0b28uCisgICAgICAgICAgICBpZiAocmVjb3JkLnN0YXJ0VGltZSA+IGN1cnJlbnRUaW1l
IHx8IHJlY29yZC5zdGFydFRpbWUgPiBlbmRUaW1lKQorICAgICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgIC8vIElmIHRoaXMgYmFyIGlzIGNvbXBsZXRlbHkgYmVmb3JlIHRoZSBib3VuZHMg
b2YgdGhlIGdyYXBoLCBza2lwIHRoaXMgcmVjb3JkLgotICAgICAgICBpZiAocmVjb3JkLmVuZFRp
bWUgPCBzdGFydFRpbWUpCi0gICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmIChy
ZWNvcmQudXNlc0FjdGl2ZVN0YXJ0VGltZSkKKyAgICAgICAgICAgICAgICB1c2VzQWN0aXZlU3Rh
cnRUaW1lID0gdHJ1ZTsKIAotICAgICAgICAvLyBJZiB0aGlzIHJlY29yZCBpcyBjb21wbGV0ZWx5
IGFmdGVyIHRoZSBjdXJyZW50IHRpbWUgb3IgZW5kIHRpbWUsIGJyZWFrIG91dCBub3cuCi0gICAg
ICAgIC8vIFJlY29yZHMgYXJlIHNvcnRlZCwgc28gYWxsIHJlY29yZHMgYWZ0ZXIgdGhpcyB3aWxs
IGJlIGJleW9uZCB0aGUgY3VycmVudCBvciBlbmQgdGltZSB0b28uCi0gICAgICAgIGlmIChyZWNv
cmQuc3RhcnRUaW1lID4gY3VycmVudFRpbWUgfHwgcmVjb3JkLnN0YXJ0VGltZSA+IGVuZFRpbWUp
Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIElmIG9uZSByZWNvcmQgdXNlcyBh
Y3RpdmUgdGltZSB0aGUgcmVzdCBhcmUgYXNzdW1lZCB0byB1c2UgaXQuCisgICAgICAgICAgICBj
b25zb2xlLmFzc2VydChyZWNvcmQudXNlc0FjdGl2ZVN0YXJ0VGltZSA9PT0gdXNlc0FjdGl2ZVN0
YXJ0VGltZSk7CiAKLSAgICAgICAgaWYgKHJlY29yZC51c2VzQWN0aXZlU3RhcnRUaW1lKQotICAg
ICAgICAgICAgdXNlc0FjdGl2ZVN0YXJ0VGltZSA9IHRydWU7CisgICAgICAgICAgICAvLyBPbmx5
IGEgc2luZ2xlIHJlY29yZCB0eXBlIGlzIHN1cHBvcnRlZCByaWdodCBub3cuCisgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydCghbGFzdFJlY29yZFR5cGUgfHwgcmVjb3JkLnR5cGUgPT09IGxhc3RS
ZWNvcmRUeXBlKTsKIAotICAgICAgICAvLyBJZiBvbmUgcmVjb3JkIHVzZXMgYWN0aXZlIHRpbWUg
dGhlIHJlc3QgYXJlIGFzc3VtZWQgdG8gdXNlIGl0LgotICAgICAgICBjb25zb2xlLmFzc2VydChy
ZWNvcmQudXNlc0FjdGl2ZVN0YXJ0VGltZSA9PT0gdXNlc0FjdGl2ZVN0YXJ0VGltZSk7CisgICAg
ICAgICAgICB2aXNpYmxlUmVjb3Jkcy5wdXNoKHJlY29yZCk7CiAKLSAgICAgICAgLy8gT25seSBh
IHNpbmdsZSByZWNvcmQgdHlwZSBpcyBzdXBwb3J0ZWQgcmlnaHQgbm93LgotICAgICAgICBjb25z
b2xlLmFzc2VydCghbGFzdFJlY29yZFR5cGUgfHwgcmVjb3JkLnR5cGUgPT09IGxhc3RSZWNvcmRU
eXBlKTsKKyAgICAgICAgICAgIGxhc3RSZWNvcmRUeXBlID0gcmVjb3JkLnR5cGU7CisgICAgICAg
IH0KIAotICAgICAgICB2aXNpYmxlUmVjb3Jkcy5wdXNoKHJlY29yZCk7CisgICAgICAgIGlmICgh
dmlzaWJsZVJlY29yZHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxh
c3RSZWNvcmRUeXBlID0gcmVjb3JkLnR5cGU7Ci0gICAgfQorICAgICAgICBpZiAodmlzaWJsZVJl
Y29yZHMubGVuZ3RoID09PSAxKSB7CisgICAgICAgICAgICBjcmVhdGVCYXJDYWxsYmFjayh2aXNp
YmxlUmVjb3JkcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLlJlbmRlck1vZGUuTm9y
bWFsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgaWYgKCF2aXNpYmxl
UmVjb3Jkcy5sZW5ndGgpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgZnVuY3Rpb24gY29tcGFy
ZUJ5QWN0aXZlU3RhcnRUaW1lKGEsIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBh
LmFjdGl2ZVN0YXJ0VGltZSAtIGIuYWN0aXZlU3RhcnRUaW1lOworICAgICAgICB9CiAKLSAgICBp
ZiAodmlzaWJsZVJlY29yZHMubGVuZ3RoID09PSAxKSB7Ci0gICAgICAgIGNyZWF0ZUJhckNhbGxi
YWNrKHZpc2libGVSZWNvcmRzLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuUmVuZGVy
TW9kZS5Ob3JtYWwpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgICAgICB2YXIgbWluaW11
bUR1cmF0aW9uID0gc2Vjb25kc1BlclBpeGVsICogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
QmFyLk1pbmltdW1XaWR0aFBpeGVsczsKKyAgICAgICAgdmFyIG1pbmltdW1NYXJnaW4gPSBzZWNv
bmRzUGVyUGl4ZWwgKiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuTWluaW11bU1hcmdp
blBpeGVsczsKIAotICAgIGZ1bmN0aW9uIGNvbXBhcmVCeUFjdGl2ZVN0YXJ0VGltZShhLCBiKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGEuYWN0aXZlU3RhcnRUaW1lIC0gYi5hY3RpdmVTdGFydFRp
bWU7Ci0gICAgfQorICAgICAgICBpZiAodXNlc0FjdGl2ZVN0YXJ0VGltZSkgeworICAgICAgICAg
ICAgdmFyIGluYWN0aXZlU3RhcnRUaW1lID0gTmFOOworICAgICAgICAgICAgdmFyIGluYWN0aXZl
RW5kVGltZSA9IE5hTjsKKyAgICAgICAgICAgIHZhciBpbmFjdGl2ZVJlY29yZHMgPSBbXTsKIAot
ICAgIHZhciBtaW5pbXVtRHVyYXRpb24gPSBzZWNvbmRzUGVyUGl4ZWwgKiBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRCYXIuTWluaW11bVdpZHRoUGl4ZWxzOwotICAgIHZhciBtaW5pbXVtTWFy
Z2luID0gc2Vjb25kc1BlclBpeGVsICogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLk1p
bmltdW1NYXJnaW5QaXhlbHM7CisgICAgICAgICAgICBmb3IgKHZhciByZWNvcmQgb2YgdmlzaWJs
ZVJlY29yZHMpIHsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgcHJldmlvdXMgcmVj
b3JkIGlzIGZhciBlbm91Z2ggYXdheSB0byBjcmVhdGUgdGhlIGluYWN0aXZlIGJhci4KKyAgICAg
ICAgICAgICAgICBpZiAoIWlzTmFOKGluYWN0aXZlU3RhcnRUaW1lKSAmJiBpbmFjdGl2ZVN0YXJ0
VGltZSArIE1hdGgubWF4KGluYWN0aXZlRW5kVGltZSAtIGluYWN0aXZlU3RhcnRUaW1lLCBtaW5p
bXVtRHVyYXRpb24pICsgbWluaW11bU1hcmdpbiA8PSByZWNvcmQuc3RhcnRUaW1lKSB7CisgICAg
ICAgICAgICAgICAgICAgIGNyZWF0ZUJhckNhbGxiYWNrKGluYWN0aXZlUmVjb3JkcywgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLlJlbmRlck1vZGUuSW5hY3RpdmVPbmx5KTsKKyAgICAg
ICAgICAgICAgICAgICAgaW5hY3RpdmVSZWNvcmRzID0gW107CisgICAgICAgICAgICAgICAgICAg
IGluYWN0aXZlU3RhcnRUaW1lID0gTmFOOworICAgICAgICAgICAgICAgICAgICBpbmFjdGl2ZUVu
ZFRpbWUgPSBOYU47CisgICAgICAgICAgICAgICAgfQogCi0gICAgaWYgKHVzZXNBY3RpdmVTdGFy
dFRpbWUpIHsKLSAgICAgICAgdmFyIGluYWN0aXZlU3RhcnRUaW1lID0gTmFOOwotICAgICAgICB2
YXIgaW5hY3RpdmVFbmRUaW1lID0gTmFOOwotICAgICAgICB2YXIgaW5hY3RpdmVSZWNvcmRzID0g
W107CisgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG5ldyBiYXIsIHBlZyB0aGUgc3Rh
cnQgdGltZS4KKyAgICAgICAgICAgICAgICBpZiAoaXNOYU4oaW5hY3RpdmVTdGFydFRpbWUpKQor
ICAgICAgICAgICAgICAgICAgICBpbmFjdGl2ZVN0YXJ0VGltZSA9IHJlY29yZC5zdGFydFRpbWU7
CiAKLSAgICAgICAgZm9yICh2YXIgcmVjb3JkIG9mIHZpc2libGVSZWNvcmRzKSB7Ci0gICAgICAg
ICAgICAvLyBDaGVjayBpZiB0aGUgcHJldmlvdXMgcmVjb3JkIGlzIGZhciBlbm91Z2ggYXdheSB0
byBjcmVhdGUgdGhlIGluYWN0aXZlIGJhci4KLSAgICAgICAgICAgIGlmICghaXNOYU4oaW5hY3Rp
dmVTdGFydFRpbWUpICYmIGluYWN0aXZlU3RhcnRUaW1lICsgTWF0aC5tYXgoaW5hY3RpdmVFbmRU
aW1lIC0gaW5hY3RpdmVTdGFydFRpbWUsIG1pbmltdW1EdXJhdGlvbikgKyBtaW5pbXVtTWFyZ2lu
IDw9IHJlY29yZC5zdGFydFRpbWUpIHsKLSAgICAgICAgICAgICAgICBjcmVhdGVCYXJDYWxsYmFj
ayhpbmFjdGl2ZVJlY29yZHMsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJN
b2RlLkluYWN0aXZlT25seSk7Ci0gICAgICAgICAgICAgICAgaW5hY3RpdmVSZWNvcmRzID0gW107
Ci0gICAgICAgICAgICAgICAgaW5hY3RpdmVTdGFydFRpbWUgPSBOYU47Ci0gICAgICAgICAgICAg
ICAgaW5hY3RpdmVFbmRUaW1lID0gTmFOOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IC8vIFVwZGF0ZSB0aGUgZW5kIHRpbWUgdG8gYmUgdGhlIG1heGltdW0gd2UgZW5jb3VudGVyLiBp
bmFjdGl2ZUVuZFRpbWUgbWlnaHQgYmUgTmFOLCBzbyAifHwgMCIgdG8gcHJldmVudCBNYXRoLm1h
eCBmcm9tIHJldHVybmluZyBOYU4uCisgICAgICAgICAgICAgICAgaW5hY3RpdmVFbmRUaW1lID0g
TWF0aC5tYXgoaW5hY3RpdmVFbmRUaW1lIHx8IDAsIHJlY29yZC5hY3RpdmVTdGFydFRpbWUpOwog
Ci0gICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbmV3IGJhciwgcGVnIHRoZSBzdGFydCB0aW1l
LgotICAgICAgICAgICAgaWYgKGlzTmFOKGluYWN0aXZlU3RhcnRUaW1lKSkKLSAgICAgICAgICAg
ICAgICBpbmFjdGl2ZVN0YXJ0VGltZSA9IHJlY29yZC5zdGFydFRpbWU7CisgICAgICAgICAgICAg
ICAgaW5hY3RpdmVSZWNvcmRzLnB1c2gocmVjb3JkKTsKKyAgICAgICAgICAgIH0KIAotICAgICAg
ICAgICAgLy8gVXBkYXRlIHRoZSBlbmQgdGltZSB0byBiZSB0aGUgbWF4aW11bSB3ZSBlbmNvdW50
ZXIuIGluYWN0aXZlRW5kVGltZSBtaWdodCBiZSBOYU4sIHNvICJ8fCAwIiB0byBwcmV2ZW50IE1h
dGgubWF4IGZyb20gcmV0dXJuaW5nIE5hTi4KLSAgICAgICAgICAgIGluYWN0aXZlRW5kVGltZSA9
IE1hdGgubWF4KGluYWN0aXZlRW5kVGltZSB8fCAwLCByZWNvcmQuYWN0aXZlU3RhcnRUaW1lKTsK
KyAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgaW5hY3RpdmUgYmFyIGZvciB0aGUgbGFzdCByZWNv
cmQgaWYgbmVlZGVkLgorICAgICAgICAgICAgaWYgKCFpc05hTihpbmFjdGl2ZVN0YXJ0VGltZSkp
CisgICAgICAgICAgICAgICAgY3JlYXRlQmFyQ2FsbGJhY2soaW5hY3RpdmVSZWNvcmRzLCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuUmVuZGVyTW9kZS5JbmFjdGl2ZU9ubHkpOwogCi0g
ICAgICAgICAgICBpbmFjdGl2ZVJlY29yZHMucHVzaChyZWNvcmQpOworICAgICAgICAgICAgdmlz
aWJsZVJlY29yZHMuc29ydChjb21wYXJlQnlBY3RpdmVTdGFydFRpbWUpOwogICAgICAgICB9CiAK
LSAgICAgICAgLy8gQ3JlYXRlIHRoZSBpbmFjdGl2ZSBiYXIgZm9yIHRoZSBsYXN0IHJlY29yZCBp
ZiBuZWVkZWQuCi0gICAgICAgIGlmICghaXNOYU4oaW5hY3RpdmVTdGFydFRpbWUpKQotICAgICAg
ICAgICAgY3JlYXRlQmFyQ2FsbGJhY2soaW5hY3RpdmVSZWNvcmRzLCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRCYXIuUmVuZGVyTW9kZS5JbmFjdGl2ZU9ubHkpOwotCi0gICAgICAgIHZpc2li
bGVSZWNvcmRzLnNvcnQoY29tcGFyZUJ5QWN0aXZlU3RhcnRUaW1lKTsKLSAgICB9CisgICAgICAg
IGxhc3RSZWNvcmRUeXBlID0gbnVsbDsKIAotICAgIGxhc3RSZWNvcmRUeXBlID0gbnVsbDsKKyAg
ICAgICAgdmFyIGFjdGl2ZVN0YXJ0VGltZSA9IE5hTjsKKyAgICAgICAgdmFyIGFjdGl2ZUVuZFRp
bWUgPSBOYU47CisgICAgICAgIHZhciBhY3RpdmVSZWNvcmRzID0gW107CiAKLSAgICB2YXIgYWN0
aXZlU3RhcnRUaW1lID0gTmFOOwotICAgIHZhciBhY3RpdmVFbmRUaW1lID0gTmFOOwotICAgIHZh
ciBhY3RpdmVSZWNvcmRzID0gW107CisgICAgICAgIHZhciBzdGFydFRpbWVQcm9wZXJ0eSA9IHVz
ZXNBY3RpdmVTdGFydFRpbWUgPyAiYWN0aXZlU3RhcnRUaW1lIiA6ICJzdGFydFRpbWUiOwogCi0g
ICAgdmFyIHN0YXJ0VGltZVByb3BlcnR5ID0gdXNlc0FjdGl2ZVN0YXJ0VGltZSA/ICJhY3RpdmVT
dGFydFRpbWUiIDogInN0YXJ0VGltZSI7CisgICAgICAgIGZvciAodmFyIHJlY29yZCBvZiB2aXNp
YmxlUmVjb3JkcykgeworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHByZXZpb3VzIHJlY29y
ZCBpcyBmYXIgZW5vdWdoIGF3YXkgdG8gY3JlYXRlIHRoZSBhY3RpdmUgYmFyLiBXZSBhbHNvIGNy
ZWF0ZSBpdCBub3cgaWYgdGhlIGN1cnJlbnQgcmVjb3JkIGhhcyBubyBhY3RpdmUgc3RhdGUgdGlt
ZS4KKyAgICAgICAgICAgIGlmICghaXNOYU4oYWN0aXZlU3RhcnRUaW1lKSAmJiAoYWN0aXZlU3Rh
cnRUaW1lICsgTWF0aC5tYXgoYWN0aXZlRW5kVGltZSAtIGFjdGl2ZVN0YXJ0VGltZSwgbWluaW11
bUR1cmF0aW9uKSArIG1pbmltdW1NYXJnaW4gPD0gcmVjb3JkW3N0YXJ0VGltZVByb3BlcnR5XQor
ICAgICAgICAgICAgICAgIHx8IChpc05hTihyZWNvcmRbc3RhcnRUaW1lUHJvcGVydHldKSAmJiAh
aXNOYU4oYWN0aXZlRW5kVGltZSkpKSkgeworICAgICAgICAgICAgICAgIGNyZWF0ZUJhckNhbGxi
YWNrKGFjdGl2ZVJlY29yZHMsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJN
b2RlLkFjdGl2ZU9ubHkpOworICAgICAgICAgICAgICAgIGFjdGl2ZVJlY29yZHMgPSBbXTsKKyAg
ICAgICAgICAgICAgICBhY3RpdmVTdGFydFRpbWUgPSBOYU47CisgICAgICAgICAgICAgICAgYWN0
aXZlRW5kVGltZSA9IE5hTjsKKyAgICAgICAgICAgIH0KIAotICAgIGZvciAodmFyIHJlY29yZCBv
ZiB2aXNpYmxlUmVjb3JkcykgewotICAgICAgICAvLyBDaGVjayBpZiB0aGUgcHJldmlvdXMgcmVj
b3JkIGlzIGZhciBlbm91Z2ggYXdheSB0byBjcmVhdGUgdGhlIGFjdGl2ZSBiYXIuIFdlIGFsc28g
Y3JlYXRlIGl0IG5vdyBpZiB0aGUgY3VycmVudCByZWNvcmQgaGFzIG5vIGFjdGl2ZSBzdGF0ZSB0
aW1lLgotICAgICAgICBpZiAoIWlzTmFOKGFjdGl2ZVN0YXJ0VGltZSkgJiYgKGFjdGl2ZVN0YXJ0
VGltZSArIE1hdGgubWF4KGFjdGl2ZUVuZFRpbWUgLSBhY3RpdmVTdGFydFRpbWUsIG1pbmltdW1E
dXJhdGlvbikgKyBtaW5pbXVtTWFyZ2luIDw9IHJlY29yZFtzdGFydFRpbWVQcm9wZXJ0eV0KLSAg
ICAgICAgICAgIHx8IChpc05hTihyZWNvcmRbc3RhcnRUaW1lUHJvcGVydHldKSAmJiAhaXNOYU4o
YWN0aXZlRW5kVGltZSkpKSkgewotICAgICAgICAgICAgY3JlYXRlQmFyQ2FsbGJhY2soYWN0aXZl
UmVjb3JkcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLlJlbmRlck1vZGUuQWN0aXZl
T25seSk7Ci0gICAgICAgICAgICBhY3RpdmVSZWNvcmRzID0gW107Ci0gICAgICAgICAgICBhY3Rp
dmVTdGFydFRpbWUgPSBOYU47Ci0gICAgICAgICAgICBhY3RpdmVFbmRUaW1lID0gTmFOOwotICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoaXNOYU4ocmVjb3JkW3N0YXJ0VGltZVByb3BlcnR5XSkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgaWYgKGlzTmFOKHJlY29yZFtz
dGFydFRpbWVQcm9wZXJ0eV0pKQotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAv
LyBJZiB0aGlzIGlzIGEgbmV3IGJhciwgcGVnIHRoZSBzdGFydCB0aW1lLgorICAgICAgICAgICAg
aWYgKGlzTmFOKGFjdGl2ZVN0YXJ0VGltZSkpCisgICAgICAgICAgICAgICAgYWN0aXZlU3RhcnRU
aW1lID0gcmVjb3JkW3N0YXJ0VGltZVByb3BlcnR5XTsKIAotICAgICAgICAvLyBJZiB0aGlzIGlz
IGEgbmV3IGJhciwgcGVnIHRoZSBzdGFydCB0aW1lLgotICAgICAgICBpZiAoaXNOYU4oYWN0aXZl
U3RhcnRUaW1lKSkKLSAgICAgICAgICAgIGFjdGl2ZVN0YXJ0VGltZSA9IHJlY29yZFtzdGFydFRp
bWVQcm9wZXJ0eV07CisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGVuZCB0aW1lIHRvIGJlIHRo
ZSBtYXhpbXVtIHdlIGVuY291bnRlci4gYWN0aXZlRW5kVGltZSBtaWdodCBiZSBOYU4sIHNvICJ8
fCAwIiB0byBwcmV2ZW50IE1hdGgubWF4IGZyb20gcmV0dXJuaW5nIE5hTi4KKyAgICAgICAgICAg
IGlmICghaXNOYU4ocmVjb3JkLmVuZFRpbWUpKQorICAgICAgICAgICAgICAgIGFjdGl2ZUVuZFRp
bWUgPSBNYXRoLm1heChhY3RpdmVFbmRUaW1lIHx8IDAsIHJlY29yZC5lbmRUaW1lKTsKIAotICAg
ICAgICAvLyBVcGRhdGUgdGhlIGVuZCB0aW1lIHRvIGJlIHRoZSBtYXhpbXVtIHdlIGVuY291bnRl
ci4gYWN0aXZlRW5kVGltZSBtaWdodCBiZSBOYU4sIHNvICJ8fCAwIiB0byBwcmV2ZW50IE1hdGgu
bWF4IGZyb20gcmV0dXJuaW5nIE5hTi4KLSAgICAgICAgaWYgKCFpc05hTihyZWNvcmQuZW5kVGlt
ZSkpCi0gICAgICAgICAgICBhY3RpdmVFbmRUaW1lID0gTWF0aC5tYXgoYWN0aXZlRW5kVGltZSB8
fCAwLCByZWNvcmQuZW5kVGltZSk7CisgICAgICAgICAgICBhY3RpdmVSZWNvcmRzLnB1c2gocmVj
b3JkKTsKKyAgICAgICAgfQogCi0gICAgICAgIGFjdGl2ZVJlY29yZHMucHVzaChyZWNvcmQpOwor
ICAgICAgICAvLyBDcmVhdGUgdGhlIGFjdGl2ZSBiYXIgZm9yIHRoZSBsYXN0IHJlY29yZCBpZiBu
ZWVkZWQuCisgICAgICAgIGlmICghaXNOYU4oYWN0aXZlU3RhcnRUaW1lKSkKKyAgICAgICAgICAg
IGNyZWF0ZUJhckNhbGxiYWNrKGFjdGl2ZVJlY29yZHMsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZEJhci5SZW5kZXJNb2RlLkFjdGl2ZU9ubHkpOwogICAgIH0KIAotICAgIC8vIENyZWF0ZSB0
aGUgYWN0aXZlIGJhciBmb3IgdGhlIGxhc3QgcmVjb3JkIGlmIG5lZWRlZC4KLSAgICBpZiAoIWlz
TmFOKGFjdGl2ZVN0YXJ0VGltZSkpCi0gICAgICAgIGNyZWF0ZUJhckNhbGxiYWNrKGFjdGl2ZVJl
Y29yZHMsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJNb2RlLkFjdGl2ZU9u
bHkpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLAotICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCi0KICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlbmRlck1vZGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3JlbmRlck1vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcmVuZGVy
TW9kZShyZW5kZXJNb2RlKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVuZGVyTW9kZSA9IHJlbmRl
ck1vZGUgfHwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLlJlbmRlck1vZGUuTm9ybWFs
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlY29yZHMoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3JlY29yZHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcmVjb3JkcyhyZWNv
cmRzKQogICAgIHsKQEAgLTIxOSw5ICsyMDEsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRCYXIucHJvdG90eXBlID0gewogICAgICAgICAvLyBBc3N1bWUgYWxsIHJlY29yZHMgYXJlIHRo
ZSBzYW1lIHR5cGUuCiAgICAgICAgIGlmICh0aGlzLl9yZWNvcmRzLmxlbmd0aCkKICAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLl9yZWNvcmRzWzBdLnR5cGUpOwot
ICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oZ3JhcGhEYXRhU291cmNlKQor
ICAgIHJlZnJlc2goZ3JhcGhEYXRhU291cmNlKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9y
ZWNvcmRzIHx8ICF0aGlzLl9yZWNvcmRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTMzMiwxMSArMzE0LDExIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9hY3RpdmVCYXJFbGVtZW50LnJlbW92ZSgp
OwogCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX3VwZGF0ZUVsZW1lbnRQb3NpdGlvbjogZnVuY3Rpb24oZWxlbWVudCwgbmV3UG9z
aXRpb24sIHByb3BlcnR5KQorICAgIF91cGRhdGVFbGVtZW50UG9zaXRpb24oZWxlbWVudCwgbmV3
UG9zaXRpb24sIHByb3BlcnR5KQogICAgIHsKICAgICAgICAgbmV3UG9zaXRpb24gKj0gMTAwOwog
ICAgICAgICBuZXdQb3NpdGlvbiA9IG5ld1Bvc2l0aW9uLnRvRml4ZWQoMik7CkBAIC0zNDYsMyAr
MzI4LDE2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBlbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IG5ld1Bvc2l0aW9uICsgIiUiOwog
ICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5CYXJTZWdtZW50U3R5
bGVDbGFzc05hbWUgPSAic2VnbWVudCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIu
SW5hY3RpdmVTdHlsZUNsYXNzTmFtZSA9ICJpbmFjdGl2ZSI7CitXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRCYXIuVW5maW5pc2hlZFN0eWxlQ2xhc3NOYW1lID0gInVuZmluaXNoZWQiOworV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLkhhc0luYWN0aXZlU2VnbWVudFN0eWxlQ2xhc3NO
YW1lID0gImhhcy1pbmFjdGl2ZS1zZWdtZW50IjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZEJhci5NaW5pbXVtV2lkdGhQaXhlbHMgPSA0OworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
QmFyLk1pbmltdW1NYXJnaW5QaXhlbHMgPSAxOworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRCYXIuUmVuZGVyTW9kZSA9IHsKKyAgICBOb3JtYWw6IFN5bWJvbCgidGltZWxpbmUtcmVjb3Jk
LWJhci1ub3JtYWwtcmVuZGVyLW1vZGUiKSwKKyAgICBJbmFjdGl2ZU9ubHk6IFN5bWJvbCgidGlt
ZWxpbmUtcmVjb3JkLWJhci1pbmFjdGl2ZS1vbmx5LXJlbmRlci1tb2RlIiksCisgICAgQWN0aXZl
T25seTogU3ltYm9sKCJ0aW1lbGluZS1yZWNvcmQtYmFyLWFjdGl2ZS1vbmx5LXJlbmRlci1tb2Rl
IikKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UaW1lbGluZVJlY29yZEZyYW1lLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFtZS5qcwppbmRleCA4MDI3OTI2Li40OTUy
NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZVJlY29yZEZyYW1lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkRnJhbWUuanMKQEAgLTIzLDk4ICsyMyw5MCBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZEZyYW1lID0gZnVuY3Rpb24oZ3JhcGhEYXRhU291cmNlLCByZWNvcmRz
KQorCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZSA9IGNsYXNzIFRpbWVsaW5lUmVj
b3JkRnJhbWUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENv
bnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1
cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0
cnVjdG9yKGdyYXBoRGF0YVNvdXJjZSwgcmVjb3JkcykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CiAKLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0g
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZEZyYW1lLlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoInRpbWVsaW5lLXJlY29yZC1mcmFtZSIpOwogCi0gICAgdGhpcy5fZ3JhcGhEYXRhU291cmNl
ID0gZ3JhcGhEYXRhU291cmNlOwotICAgIHRoaXMucmVjb3JkcyA9IHJlY29yZHMgfHwgW107Ci19
OworICAgICAgICB0aGlzLl9ncmFwaERhdGFTb3VyY2UgPSBncmFwaERhdGFTb3VyY2U7CisgICAg
ICAgIHRoaXMucmVjb3JkcyA9IHJlY29yZHMgfHwgW107CisgICAgfQogCi0vLyBGSVhNRTogTW92
ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhp
cy4KLVdlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25z
KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lKTsKKyAgICAvLyBTdGF0aWMKIAotV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUuU3R5bGVDbGFzc05hbWUgPSAidGltZWxpbmUt
cmVjb3JkLWZyYW1lIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLlNpeHR5RnBz
RnJhbWVCdWRnZXQgPSAwLjAxNjY7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5N
aW5pbXVtV2lkdGhQaXhlbHMgPSA2OwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUu
TWluaW11bU1hcmdpblBpeGVscyA9IDE7CisgICAgc3RhdGljIGNyZWF0ZUNvbWJpbmVkRnJhbWVz
KHJlY29yZHMsIHNlY29uZHNQZXJQaXhlbCwgZ3JhcGhEYXRhU291cmNlLCBjcmVhdGVGcmFtZUNh
bGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKCFyZWNvcmRzLmxlbmd0aCkKKyAgICAgICAgICAg
IHJldHVybjsKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUuY3JlYXRlQ29tYmlu
ZWRGcmFtZXMgPSBmdW5jdGlvbihyZWNvcmRzLCBzZWNvbmRzUGVyUGl4ZWwsIGdyYXBoRGF0YVNv
dXJjZSwgY3JlYXRlRnJhbWVDYWxsYmFjaykKLXsKLSAgICBpZiAoIXJlY29yZHMubGVuZ3RoKQot
ICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBzdGFydFRpbWUgPSBncmFwaERhdGFTb3VyY2Uu
c3RhcnRUaW1lOworICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBncmFwaERhdGFTb3VyY2UuY3Vy
cmVudFRpbWU7CisgICAgICAgIHZhciBlbmRUaW1lID0gZ3JhcGhEYXRhU291cmNlLmVuZFRpbWU7
CiAKLSAgICB2YXIgc3RhcnRUaW1lID0gZ3JhcGhEYXRhU291cmNlLnN0YXJ0VGltZTsKLSAgICB2
YXIgY3VycmVudFRpbWUgPSBncmFwaERhdGFTb3VyY2UuY3VycmVudFRpbWU7Ci0gICAgdmFyIGVu
ZFRpbWUgPSBncmFwaERhdGFTb3VyY2UuZW5kVGltZTsKKyAgICAgICAgdmFyIHZpc2libGVSZWNv
cmRzID0gW107CiAKLSAgICB2YXIgdmlzaWJsZVJlY29yZHMgPSBbXTsKKyAgICAgICAgZm9yICh2
YXIgcmVjb3JkIG9mIHJlY29yZHMpIHsKKyAgICAgICAgICAgIGlmIChpc05hTihyZWNvcmQuc3Rh
cnRUaW1lKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgIGZvciAodmFyIHJlY29y
ZCBvZiByZWNvcmRzKSB7Ci0gICAgICAgIGlmIChpc05hTihyZWNvcmQuc3RhcnRUaW1lKSkKLSAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgLy8gSWYgdGhpcyBmcmFtZSBpcyBjb21w
bGV0ZWx5IGJlZm9yZSB0aGUgYm91bmRzIG9mIHRoZSBncmFwaCwgc2tpcCB0aGlzIHJlY29yZC4K
KyAgICAgICAgICAgIGlmIChyZWNvcmQuZW5kVGltZSA8IHN0YXJ0VGltZSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICAvLyBJZiB0aGlzIGZyYW1lIGlzIGNvbXBsZXRlbHkg
YmVmb3JlIHRoZSBib3VuZHMgb2YgdGhlIGdyYXBoLCBza2lwIHRoaXMgcmVjb3JkLgotICAgICAg
ICBpZiAocmVjb3JkLmVuZFRpbWUgPCBzdGFydFRpbWUpCi0gICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgICAgIC8vIElmIHRoaXMgcmVjb3JkIGlzIGNvbXBsZXRlbHkgYWZ0ZXIgdGhlIGN1
cnJlbnQgdGltZSBvciBlbmQgdGltZSwgYnJlYWsgb3V0IG5vdy4KKyAgICAgICAgICAgIC8vIFJl
Y29yZHMgYXJlIHNvcnRlZCwgc28gYWxsIHJlY29yZHMgYWZ0ZXIgdGhpcyB3aWxsIGJlIGJleW9u
ZCB0aGUgY3VycmVudCBvciBlbmQgdGltZSB0b28uCisgICAgICAgICAgICBpZiAocmVjb3JkLnN0
YXJ0VGltZSA+IGN1cnJlbnRUaW1lIHx8IHJlY29yZC5zdGFydFRpbWUgPiBlbmRUaW1lKQorICAg
ICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIC8vIElmIHRoaXMgcmVjb3JkIGlzIGNvbXBs
ZXRlbHkgYWZ0ZXIgdGhlIGN1cnJlbnQgdGltZSBvciBlbmQgdGltZSwgYnJlYWsgb3V0IG5vdy4K
LSAgICAgICAgLy8gUmVjb3JkcyBhcmUgc29ydGVkLCBzbyBhbGwgcmVjb3JkcyBhZnRlciB0aGlz
IHdpbGwgYmUgYmV5b25kIHRoZSBjdXJyZW50IG9yIGVuZCB0aW1lIHRvby4KLSAgICAgICAgaWYg
KHJlY29yZC5zdGFydFRpbWUgPiBjdXJyZW50VGltZSB8fCByZWNvcmQuc3RhcnRUaW1lID4gZW5k
VGltZSkKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdmlzaWJsZVJlY29yZHMucHVz
aChyZWNvcmQpOworICAgICAgICB9CiAKLSAgICAgICAgdmlzaWJsZVJlY29yZHMucHVzaChyZWNv
cmQpOwotICAgIH0KKyAgICAgICAgaWYgKCF2aXNpYmxlUmVjb3Jkcy5sZW5ndGgpCisgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIXZpc2libGVSZWNvcmRzLmxlbmd0aCkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICB2YXIgbWluaW11bUZyYW1lRHVyYXRpb24gPSBzZWNvbmRzUGVyUGl4
ZWwgKiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5NaW5pbXVtV2lkdGhQaXhlbHM7
CisgICAgICAgIHZhciBtaW5pbXVtTWFyZ2luID0gc2Vjb25kc1BlclBpeGVsICogV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUuTWluaW11bU1hcmdpblBpeGVsczsKIAotICAgIHZhciBt
aW5pbXVtRnJhbWVEdXJhdGlvbiA9IHNlY29uZHNQZXJQaXhlbCAqIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZEZyYW1lLk1pbmltdW1XaWR0aFBpeGVsczsKLSAgICB2YXIgbWluaW11bU1hcmdp
biA9IHNlY29uZHNQZXJQaXhlbCAqIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLk1p
bmltdW1NYXJnaW5QaXhlbHM7CisgICAgICAgIHZhciBhY3RpdmVTdGFydFRpbWUgPSBOYU47Cisg
ICAgICAgIHZhciBhY3RpdmVFbmRUaW1lID0gTmFOOworICAgICAgICB2YXIgYWN0aXZlUmVjb3Jk
cyA9IFtdOwogCi0gICAgdmFyIGFjdGl2ZVN0YXJ0VGltZSA9IE5hTjsKLSAgICB2YXIgYWN0aXZl
RW5kVGltZSA9IE5hTjsKLSAgICB2YXIgYWN0aXZlUmVjb3JkcyA9IFtdOworICAgICAgICBmb3Ig
KHZhciByZWNvcmQgb2YgdmlzaWJsZVJlY29yZHMpIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGlm
IHRoZSBwcmV2aW91cyByZWNvcmQgaXMgZmFyIGVub3VnaCBhd2F5IHRvIGNyZWF0ZSB0aGUgZnJh
bWUuCisgICAgICAgICAgICBpZiAoIWlzTmFOKGFjdGl2ZVN0YXJ0VGltZSkgJiYgKGFjdGl2ZVN0
YXJ0VGltZSArIE1hdGgubWF4KGFjdGl2ZUVuZFRpbWUgLSBhY3RpdmVTdGFydFRpbWUsIG1pbmlt
dW1GcmFtZUR1cmF0aW9uKSArIG1pbmltdW1NYXJnaW4gPD0gcmVjb3JkLnN0YXJ0VGltZSkpIHsK
KyAgICAgICAgICAgICAgICBjcmVhdGVGcmFtZUNhbGxiYWNrKGFjdGl2ZVJlY29yZHMpOworICAg
ICAgICAgICAgICAgIGFjdGl2ZVJlY29yZHMgPSBbXTsKKyAgICAgICAgICAgICAgICBhY3RpdmVT
dGFydFRpbWUgPSBOYU47CisgICAgICAgICAgICAgICAgYWN0aXZlRW5kVGltZSA9IE5hTjsKKyAg
ICAgICAgICAgIH0KIAotICAgIGZvciAodmFyIHJlY29yZCBvZiB2aXNpYmxlUmVjb3Jkcykgewot
ICAgICAgICAvLyBDaGVjayBpZiB0aGUgcHJldmlvdXMgcmVjb3JkIGlzIGZhciBlbm91Z2ggYXdh
eSB0byBjcmVhdGUgdGhlIGZyYW1lLgotICAgICAgICBpZiAoIWlzTmFOKGFjdGl2ZVN0YXJ0VGlt
ZSkgJiYgKGFjdGl2ZVN0YXJ0VGltZSArIE1hdGgubWF4KGFjdGl2ZUVuZFRpbWUgLSBhY3RpdmVT
dGFydFRpbWUsIG1pbmltdW1GcmFtZUR1cmF0aW9uKSArIG1pbmltdW1NYXJnaW4gPD0gcmVjb3Jk
LnN0YXJ0VGltZSkpIHsKLSAgICAgICAgICAgIGNyZWF0ZUZyYW1lQ2FsbGJhY2soYWN0aXZlUmVj
b3Jkcyk7Ci0gICAgICAgICAgICBhY3RpdmVSZWNvcmRzID0gW107Ci0gICAgICAgICAgICBhY3Rp
dmVTdGFydFRpbWUgPSBOYU47Ci0gICAgICAgICAgICBhY3RpdmVFbmRUaW1lID0gTmFOOwotICAg
ICAgICB9CisgICAgICAgICAgICAvLyBJZiB0aGlzIGlzIGEgbmV3IGZyYW1lLCBwZWcgdGhlIHN0
YXJ0IHRpbWUuCisgICAgICAgICAgICBpZiAoaXNOYU4oYWN0aXZlU3RhcnRUaW1lKSkKKyAgICAg
ICAgICAgICAgICBhY3RpdmVTdGFydFRpbWUgPSByZWNvcmQuc3RhcnRUaW1lOwogCi0gICAgICAg
IC8vIElmIHRoaXMgaXMgYSBuZXcgZnJhbWUsIHBlZyB0aGUgc3RhcnQgdGltZS4KLSAgICAgICAg
aWYgKGlzTmFOKGFjdGl2ZVN0YXJ0VGltZSkpCi0gICAgICAgICAgICBhY3RpdmVTdGFydFRpbWUg
PSByZWNvcmQuc3RhcnRUaW1lOworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBlbmQgdGltZSB0
byBiZSB0aGUgbWF4aW11bSB3ZSBlbmNvdW50ZXIuIGVuZFRpbWUgbWlnaHQgYmUgTmFOLCBzbyAi
fHwgMCIgdG8gcHJldmVudCBNYXRoLm1heCBmcm9tIHJldHVybmluZyBOYU4uCisgICAgICAgICAg
ICBpZiAoIWlzTmFOKHJlY29yZC5lbmRUaW1lKSkKKyAgICAgICAgICAgICAgICBhY3RpdmVFbmRU
aW1lID0gTWF0aC5tYXgoYWN0aXZlRW5kVGltZSB8fCAwLCByZWNvcmQuZW5kVGltZSk7CiAKLSAg
ICAgICAgLy8gVXBkYXRlIHRoZSBlbmQgdGltZSB0byBiZSB0aGUgbWF4aW11bSB3ZSBlbmNvdW50
ZXIuIGVuZFRpbWUgbWlnaHQgYmUgTmFOLCBzbyAifHwgMCIgdG8gcHJldmVudCBNYXRoLm1heCBm
cm9tIHJldHVybmluZyBOYU4uCi0gICAgICAgIGlmICghaXNOYU4ocmVjb3JkLmVuZFRpbWUpKQot
ICAgICAgICAgICAgYWN0aXZlRW5kVGltZSA9IE1hdGgubWF4KGFjdGl2ZUVuZFRpbWUgfHwgMCwg
cmVjb3JkLmVuZFRpbWUpOworICAgICAgICAgICAgYWN0aXZlUmVjb3Jkcy5wdXNoKHJlY29yZCk7
CisgICAgICAgIH0KIAotICAgICAgICBhY3RpdmVSZWNvcmRzLnB1c2gocmVjb3JkKTsKKyAgICAg
ICAgLy8gQ3JlYXRlIHRoZSBhY3RpdmUgZnJhbWUgZm9yIHRoZSBsYXN0IHJlY29yZCBpZiBuZWVk
ZWQuCisgICAgICAgIGlmICghaXNOYU4oYWN0aXZlU3RhcnRUaW1lKSkKKyAgICAgICAgICAgIGNy
ZWF0ZUZyYW1lQ2FsbGJhY2soYWN0aXZlUmVjb3Jkcyk7CiAgICAgfQogCi0gICAgLy8gQ3JlYXRl
IHRoZSBhY3RpdmUgZnJhbWUgZm9yIHRoZSBsYXN0IHJlY29yZCBpZiBuZWVkZWQuCi0gICAgaWYg
KCFpc05hTihhY3RpdmVTdGFydFRpbWUpKQotICAgICAgICBjcmVhdGVGcmFtZUNhbGxiYWNrKGFj
dGl2ZVJlY29yZHMpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRG
cmFtZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAotCiAg
ICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkdXJhdGlvbigpCiAgICAg
ewpAQCAtMTIyLDEyICsxMTQsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgcmV0dXJuIHRo
aXMucmVjb3Jkcy5sYXN0VmFsdWUuZW5kVGltZSAtIHRoaXMucmVjb3Jkc1swXS5zdGFydFRpbWU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVjb3JkcygpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcmVjb3JkczsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCByZWNvcmRzKHJlY29y
ZHMpCiAgICAgewpAQCAtMTM3LDcgKzEyOSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZEZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJlY29yZHMgPSBbcmVjb3Jkc107CiAK
ICAgICAgICAgdGhpcy5fcmVjb3JkcyA9IHJlY29yZHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBy
ZWZyZXNoKGdyYXBoRGF0YVNvdXJjZSkKICAgICB7CkBAIC0xNzUsNyArMTY3LDcgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91
cGRhdGVDaGlsZEVsZW1lbnRzKGdyYXBoRGF0YVNvdXJjZSk7CiAKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKQEAgLTI0OSw3ICsyNDEsNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICB0aGlzLl91cGRhdGVFbGVtZW50UG9zaXRpb24oZnJhbWVFbGVtZW50LCBm
cmFtZVdpZHRoLCAid2lkdGgiKTsKLSAgICB9LAorICAgIH0KIAogICAgIF91cGRhdGVFbGVtZW50
UG9zaXRpb24oZWxlbWVudCwgbmV3UG9zaXRpb24sIHByb3BlcnR5KQogICAgIHsKQEAgLTI2MSwz
ICsyNTMsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBlbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IG5ld1Bvc2l0aW9uICsgIiUi
OwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLlNpeHR5RnBz
RnJhbWVCdWRnZXQgPSAwLjAxNjY7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5N
aW5pbXVtV2lkdGhQaXhlbHMgPSA2OworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUu
TWluaW11bU1hcmdpblBpeGVscyA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRUcmVl
RWxlbWVudC5qcwppbmRleCAwN2Q2ZmU5Li45ODVlYWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lUmVjb3JkVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTMwICsyMywxMTkgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKHRpbWVsaW5lUmVjb3JkLCBzdWJ0aXRsZU5hbWVTdHlsZSwg
aW5jbHVkZVRpbWVySWRlbnRpZmllckluTWFpblRpdGxlLCBzb3VyY2VDb2RlTG9jYXRpb24sIHJl
cHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQg
PSBjbGFzcyBUaW1lbGluZVJlY29yZFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lUmVjb3JkKTsK
LQotICAgIHRoaXMuX3JlY29yZCA9IHRpbWVsaW5lUmVjb3JkOwotICAgIHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlvbiB8fCB0aW1lbGluZVJlY29yZC5zb3VyY2VD
b2RlTG9jYXRpb24gfHwgbnVsbDsKKyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZVJlY29yZCwgc3Vi
dGl0bGVOYW1lU3R5bGUsIGluY2x1ZGVUaW1lcklkZW50aWZpZXJJbk1haW5UaXRsZSwgc291cmNl
Q29kZUxvY2F0aW9uLCByZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRpbWVsaW5lUmVjb3JkKTsKIAotICAgIHZhciB0aXRsZSA9ICIiOwotICAgIHZhciBz
dWJ0aXRsZSA9ICIiOworICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlTG9j
YXRpb24gfHwgdGltZWxpbmVSZWNvcmQuc291cmNlQ29kZUxvY2F0aW9uIHx8IG51bGw7CiAKLSAg
ICBpZiAodGhpcy5fc291cmNlQ29kZUxvY2F0aW9uKSB7Ci0gICAgICAgIHN1YnRpdGxlID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgICAgICB2YXIgdGl0bGUgPSAiIjsKKyAg
ICAgICAgdmFyIHN1YnRpdGxlID0gIiI7CiAKLSAgICAgICAgaWYgKHN1YnRpdGxlTmFtZVN0eWxl
ICE9PSBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLk5hbWVTdHlsZS5Ob25lKQotICAg
ICAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLnBvcHVsYXRlTGl2ZURpc3BsYXlMb2Nh
dGlvblN0cmluZyhzdWJ0aXRsZSwgInRleHRDb250ZW50IiwgbnVsbCwgc3VidGl0bGVOYW1lU3R5
bGUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24u
cG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uU3RyaW5nKHN1YnRpdGxlLCAidGV4dENvbnRlbnQi
LCBudWxsLCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxvY2F0aW9uLk5hbWVTdHlsZS5Ob25lLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoImxpbmUgIikpOwotICAgIH0KKyAgICAgICAgaWYgKHNvdXJj
ZUNvZGVMb2NhdGlvbikgeworICAgICAgICAgICAgc3VidGl0bGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzcGFuIik7CiAKLSAgICB2YXIgaWNvblN0eWxlQ2xhc3MgPSBudWxsOworICAgICAg
ICAgICAgaWYgKHN1YnRpdGxlTmFtZVN0eWxlICE9PSBXZWJJbnNwZWN0b3IuU291cmNlQ29kZUxv
Y2F0aW9uLk5hbWVTdHlsZS5Ob25lKQorICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVMb2NhdGlv
bi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25TdHJpbmcoc3VidGl0bGUsICJ0ZXh0Q29udGVu
dCIsIG51bGwsIHN1YnRpdGxlTmFtZVN0eWxlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24ucG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uU3Ry
aW5nKHN1YnRpdGxlLCAidGV4dENvbnRlbnQiLCBudWxsLCBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZUxvY2F0aW9uLk5hbWVTdHlsZS5Ob25lLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoImxpbmUgIikp
OworICAgICAgICB9CiAKLSAgICBzd2l0Y2ggKHRpbWVsaW5lUmVjb3JkLnR5cGUpIHsKLSAgICBj
YXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLkxheW91dDoKLSAgICAgICAgdGl0
bGUgPSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuZGlzcGxheU5hbWVGb3JFdmVu
dFR5cGUodGltZWxpbmVSZWNvcmQuZXZlbnRUeXBlKTsKKyAgICAgICAgdmFyIGljb25TdHlsZUNs
YXNzID0gbnVsbDsKKworICAgICAgICBzd2l0Y2ggKHRpbWVsaW5lUmVjb3JkLnR5cGUpIHsKKyAg
ICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQ6CisgICAg
ICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5kaXNwbGF5
TmFtZUZvckV2ZW50VHlwZSh0aW1lbGluZVJlY29yZC5ldmVudFR5cGUpOworCisgICAgICAgICAg
ICBzd2l0Y2ggKHRpbWVsaW5lUmVjb3JkLmV2ZW50VHlwZSkgeworICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkludmFsaWRhdGVTdHls
ZXM6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUuUmVjYWxjdWxhdGVTdHlsZXM6CisgICAgICAgICAgICAgICAgaWNvblN0eWxlQ2xh
c3MgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5TdHlsZVJlY29yZElj
b25TdHlsZUNsYXNzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkludmFsaWRhdGVMYXlv
dXQ6CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5F
dmVudFR5cGUuRm9yY2VkTGF5b3V0OgorICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5
b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLkxheW91dDoKKyAgICAgICAgICAgICAgICBpY29u
U3R5bGVDbGFzcyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LkxheW91
dFJlY29yZEljb25TdHlsZUNsYXNzOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlBhaW50
OgorICAgICAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkVHJlZUVsZW1lbnQuUGFpbnRSZWNvcmRJY29uU3R5bGVDbGFzczsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgY29uc29s
ZS5lcnJvcigiVW5rbm93biBMYXlvdXRUaW1lbGluZVJlY29yZCBldmVudFR5cGU6ICIgKyB0aW1l
bGluZVJlY29yZC5ldmVudFR5cGUsIHRpbWVsaW5lUmVjb3JkKTsKKyAgICAgICAgICAgIH0KIAot
ICAgICAgICBzd2l0Y2ggKHRpbWVsaW5lUmVjb3JkLmV2ZW50VHlwZSkgewotICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuSW52YWxpZGF0ZVN0
eWxlczoKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZl
bnRUeXBlLlJlY2FsY3VsYXRlU3R5bGVzOgotICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5TdHlsZVJlY29yZEljb25TdHls
ZUNsYXNzOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLkxh
eW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5JbnZhbGlkYXRlTGF5b3V0OgotICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuRm9yY2VkTGF5
b3V0OgotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVu
dFR5cGUuTGF5b3V0OgotICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5MYXlvdXRSZWNvcmRJY29uU3R5bGVDbGFzczsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGlu
ZVJlY29yZC5FdmVudFR5cGUuUGFpbnQ6Ci0gICAgICAgICAgICBpY29uU3R5bGVDbGFzcyA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlBhaW50UmVjb3JkSWNvblN0eWxl
Q2xhc3M7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGNvbnNvbGUuZXJyb3IoIlVua25vd24gTGF5b3V0VGltZWxpbmVSZWNvcmQgZXZlbnRUeXBlOiAi
ICsgdGltZWxpbmVSZWNvcmQuZXZlbnRUeXBlLCB0aW1lbGluZVJlY29yZCk7Ci0gICAgICAgIH0K
LQotICAgICAgICBicmVhazsKIAotICAgIGNhc2UgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
LlR5cGUuU2NyaXB0OgotICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGlu
ZVJlY29yZC5FdmVudFR5cGUuZGlzcGxheU5hbWUodGltZWxpbmVSZWNvcmQuZXZlbnRUeXBlLCB0
aW1lbGluZVJlY29yZC5kZXRhaWxzLCBpbmNsdWRlVGltZXJJZGVudGlmaWVySW5NYWluVGl0bGUp
OworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlNjcmlwdDoK
KyAgICAgICAgICAgIHRpdGxlID0gV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2
ZW50VHlwZS5kaXNwbGF5TmFtZSh0aW1lbGluZVJlY29yZC5ldmVudFR5cGUsIHRpbWVsaW5lUmVj
b3JkLmRldGFpbHMsIGluY2x1ZGVUaW1lcklkZW50aWZpZXJJbk1haW5UaXRsZSk7CisKKyAgICAg
ICAgICAgIHN3aXRjaCAodGltZWxpbmVSZWNvcmQuZXZlbnRUeXBlKSB7CisgICAgICAgICAgICBj
YXNlIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuU2NyaXB0RXZh
bHVhdGVkOgorICAgICAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuRXZhbHVhdGVkUmVjb3JkSWNvblN0eWxlQ2xhc3M7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3Jp
cHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuRXZlbnREaXNwYXRjaGVkOgorICAgICAgICAgICAg
ICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1l
bnQuRXZlbnRSZWNvcmRJY29uU3R5bGVDbGFzczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlw
ZS5Qcm9iZVNhbXBsZVJlY29yZGVkOgorICAgICAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0g
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuUHJvYmVSZWNvcmRJY29uU3R5
bGVDbGFzczsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5z
cGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5Db25zb2xlUHJvZmlsZVJlY29y
ZGVkOgorICAgICAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkVHJlZUVsZW1lbnQuQ29uc29sZVByb2ZpbGVJY29uU3R5bGVDbGFzczsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5UaW1lckZpcmVkOgorICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVySW5zdGFsbGVkOgor
ICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRU
eXBlLlRpbWVyUmVtb3ZlZDoKKyAgICAgICAgICAgICAgICBpY29uU3R5bGVDbGFzcyA9IFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlRpbWVyUmVjb3JkSWNvblN0eWxlQ2xh
c3M7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuQW5pbWF0aW9uRnJhbWVGaXJlZDoKKyAg
ICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlw
ZS5BbmltYXRpb25GcmFtZVJlcXVlc3RlZDoKKyAgICAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5BbmltYXRpb25GcmFtZUNhbmNlbGVkOgor
ICAgICAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkVHJlZUVsZW1lbnQuQW5pbWF0aW9uUmVjb3JkSWNvblN0eWxlQ2xhc3M7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IoIlVua25vd24gU2NyaXB0VGltZWxpbmVSZWNvcmQgZXZlbnRUeXBlOiAiICsgdGlt
ZWxpbmVSZWNvcmQuZXZlbnRUeXBlLCB0aW1lbGluZVJlY29yZCk7CisgICAgICAgICAgICB9CiAK
LSAgICAgICAgc3dpdGNoICh0aW1lbGluZVJlY29yZC5ldmVudFR5cGUpIHsKLSAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlNjcmlwdEV2YWx1
YXRlZDoKLSAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkVHJlZUVsZW1lbnQuRXZhbHVhdGVkUmVjb3JkSWNvblN0eWxlQ2xhc3M7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNv
cmQuRXZlbnRUeXBlLkV2ZW50RGlzcGF0Y2hlZDoKLSAgICAgICAgICAgIGljb25TdHlsZUNsYXNz
ID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuRXZlbnRSZWNvcmRJY29u
U3R5bGVDbGFzczsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rv
ci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuUHJvYmVTYW1wbGVSZWNvcmRlZDoKLSAg
ICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJl
ZUVsZW1lbnQuUHJvYmVSZWNvcmRJY29uU3R5bGVDbGFzczsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUu
Q29uc29sZVByb2ZpbGVSZWNvcmRlZDoKLSAgICAgICAgICAgIGljb25TdHlsZUNsYXNzID0gV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuQ29uc29sZVByb2ZpbGVJY29uU3R5
bGVDbGFzczsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5T
Y3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuVGltZXJGaXJlZDoKLSAgICAgICAgY2FzZSBX
ZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlRpbWVySW5zdGFsbGVk
OgotICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5
cGUuVGltZXJSZW1vdmVkOgotICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3MgPSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5UaW1lclJlY29yZEljb25TdHlsZUNsYXNzOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVs
aW5lUmVjb3JkLkV2ZW50VHlwZS5BbmltYXRpb25GcmFtZUZpcmVkOgotICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUuQW5pbWF0aW9uRnJhbWVS
ZXF1ZXN0ZWQ6Ci0gICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lUmVjb3Jk
LkV2ZW50VHlwZS5BbmltYXRpb25GcmFtZUNhbmNlbGVkOgotICAgICAgICAgICAgaWNvblN0eWxl
Q2xhc3MgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5BbmltYXRpb25S
ZWNvcmRJY29uU3R5bGVDbGFzczsKKworICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZC5UeXBlLlJ1bkxvb3A6CisgICAgICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiUnVubG9vcCBFeGVjdXRlZCIpOworICAgICAgICAgICAgaWNvblN0eWxlQ2xhc3Mg
PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5SdW5Mb29wUmVjb3JkSWNv
blN0eWxlQ2xhc3M7CiAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBkZWZhdWx0OgotICAg
ICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBTY3JpcHRUaW1lbGluZVJlY29yZCBldmVu
dFR5cGU6ICIgKyB0aW1lbGluZVJlY29yZC5ldmVudFR5cGUsIHRpbWVsaW5lUmVjb3JkKTsKKyAg
ICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gVGltZWxpbmVSZWNvcmQgdHlwZTogIiAr
IHRpbWVsaW5lUmVjb3JkLnR5cGUsIHRpbWVsaW5lUmVjb3JkKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGJyZWFrOwotCi0gICAgY2FzZSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5S
dW5Mb29wOgotICAgICAgICB0aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUnVubG9vcCBF
eGVjdXRlZCIpOwotICAgICAgICBpY29uU3R5bGVDbGFzcyA9IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZFRyZWVFbGVtZW50LlJ1bkxvb3BSZWNvcmRJY29uU3R5bGVDbGFzczsKLSAgICAgICAg
YnJlYWs7Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIFRp
bWVsaW5lUmVjb3JkIHR5cGU6ICIgKyB0aW1lbGluZVJlY29yZC50eXBlLCB0aW1lbGluZVJlY29y
ZCk7Ci0gICAgfQorICAgICAgICBzdXBlcihbaWNvblN0eWxlQ2xhc3NdLCB0aXRsZSwgc3VidGl0
bGUsIHJlcHJlc2VudGVkT2JqZWN0IHx8IHRpbWVsaW5lUmVjb3JkLCBmYWxzZSk7CiAKLSAgICBX
ZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgW2ljb25TdHlsZUNsYXNz
XSwgdGl0bGUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCB8fCB0aW1lbGluZVJlY29yZCwg
ZmFsc2UpOworICAgICAgICB0aGlzLl9yZWNvcmQgPSB0aW1lbGluZVJlY29yZDsKKyAgICAgICAg
dGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uOwogCi0gICAgdGhp
cy5zbWFsbCA9IHRydWU7CisgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwogCi0gICAgaWYgKHRo
aXMuX3NvdXJjZUNvZGVMb2NhdGlvbikKLSAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFy
YXRlbHkgPSB0cnVlOwotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1l
bnQuU3R5bGVSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJzdHlsZS1yZWNvcmQiOwotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuTGF5b3V0UmVjb3JkSWNvblN0eWxlQ2xhc3Mg
PSAibGF5b3V0LXJlY29yZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVu
dC5QYWludFJlY29yZEljb25TdHlsZUNsYXNzID0gInBhaW50LXJlY29yZCI7Ci1XZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5SdW5Mb29wUmVjb3JkSWNvblN0eWxlQ2xhc3Mg
PSAicnVubG9vcC1yZWNvcmQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1l
bnQuRXZhbHVhdGVkUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAiZXZhbHVhdGVkLXJlY29yZCI7Ci1X
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5FdmVudFJlY29yZEljb25TdHls
ZUNsYXNzID0gImV2ZW50LXJlY29yZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVl
RWxlbWVudC5UaW1lclJlY29yZEljb25TdHlsZUNsYXNzID0gInRpbWVyLXJlY29yZCI7Ci1XZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5BbmltYXRpb25SZWNvcmRJY29uU3R5
bGVDbGFzcyA9ICJhbmltYXRpb24tcmVjb3JkIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZFRyZWVFbGVtZW50LlByb2JlUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAicHJvYmUtcmVjb3JkIjsK
LVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LkNvbnNvbGVQcm9maWxlSWNv
blN0eWxlQ2xhc3MgPSAiY29uc29sZS1wcm9maWxlLXJlY29yZCI7Ci0KLVdlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBX
ZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgaWYgKHRo
aXMuX3NvdXJjZUNvZGVMb2NhdGlvbikKKyAgICAgICAgICAgIHRoaXMudG9vbHRpcEhhbmRsZWRT
ZXBhcmF0ZWx5ID0gdHJ1ZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCByZWNv
cmQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZDsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBmaWx0ZXJhYmxlRGF0YSgpCiAgICAgewogICAgICAgICB2YXIgdXJsID0gdGhp
cy5fc291cmNlQ29kZUxvY2F0aW9uID8gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNv
ZGUudXJsIDogIiI7CiAgICAgICAgIHJldHVybiB7dGV4dDogW3RoaXMubWFpblRpdGxlLCB1cmwg
fHwgIiIsIHRoaXMuX3JlY29yZC5kZXRhaWxzIHx8ICIiXX07Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcm90ZWN0ZWQKIAotICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgb25hdHRhY2go
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5
cGUub25hdHRhY2guY2FsbCh0aGlzKTsKIApAQCAtMTU5LDMgKzE0OCwxNCBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3NvdXJjZUNvZGVMb2NhdGlvbi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25Ub29sdGlwKHRo
aXMuZWxlbWVudCwgdG9vbHRpcFByZWZpeCk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuU3R5bGVSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJzdHls
ZS1yZWNvcmQiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuTGF5b3V0
UmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAibGF5b3V0LXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5QYWludFJlY29yZEljb25TdHlsZUNsYXNzID0gInBhaW50
LXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5SdW5Mb29w
UmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAicnVubG9vcC1yZWNvcmQiOworV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuRXZhbHVhdGVkUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAi
ZXZhbHVhdGVkLXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVu
dC5FdmVudFJlY29yZEljb25TdHlsZUNsYXNzID0gImV2ZW50LXJlY29yZCI7CitXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5UaW1lclJlY29yZEljb25TdHlsZUNsYXNzID0g
InRpbWVyLXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5B
bmltYXRpb25SZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJhbmltYXRpb24tcmVjb3JkIjsKK1dlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlByb2JlUmVjb3JkSWNvblN0eWxlQ2xh
c3MgPSAicHJvYmUtcmVjb3JkIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVt
ZW50LkNvbnNvbGVQcm9maWxlSWNvblN0eWxlQ2xhc3MgPSAiY29uc29sZS1wcm9maWxlLXJlY29y
ZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5qcwppbmRl
eCAxNDE5NzU1Li41MGU2NTU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkaW5n
Q29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTUgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjQsNzkg
KzI0LDcyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZWNvcmRp
bmcpCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyA9IGNsYXNzIFRp
bWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0aGlzLCByZWNvcmRpbmcp
OwotCi0gICAgdGhpcy5fcmVjb3JkaW5nID0gcmVjb3JkaW5nOwotCi0gICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcu
U3R5bGVDbGFzc05hbWUpOwotCi0gICAgdGhpcy5fdGltZWxpbmVPdmVydmlldyA9IG5ldyBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlldyh0aGlzLl9yZWNvcmRpbmcpOwotICAgIHRoaXMuX3Rp
bWVsaW5lT3ZlcnZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVy
dmlldy5FdmVudC5UaW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkLCB0aGlzLl90aW1lUmFuZ2VTZWxl
Y3Rpb25DaGFuZ2VkLCB0aGlzKTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
dGltZWxpbmVPdmVydmlldy5lbGVtZW50KTsKKyAgICBjb25zdHJ1Y3RvcihyZWNvcmRpbmcpCisg
ICAgeworICAgICAgICBzdXBlcihyZWNvcmRpbmcpOwogCi0gICAgdGhpcy5fY29udGVudFZpZXdD
b250YWluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyKCk7Ci0gICAg
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0
aGlzLl9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMpOwotICAgIHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5lbGVtZW50KTsKKyAgICAg
ICAgdGhpcy5fcmVjb3JkaW5nID0gcmVjb3JkaW5nOwogCi0gICAgdmFyIHRyYXNoSW1hZ2U7Ci0g
ICAgaWYgKFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TKQotICAgICAgICB0cmFz
aEltYWdlID0ge3NyYzogIkltYWdlcy9MZWdhY3kvTmF2aWdhdGlvbkl0ZW1UcmFzaC5zdmciLCB3
aWR0aDogMTYsIGhlaWdodDogMTZ9OwotICAgIGVsc2UKLSAgICAgICAgdHJhc2hJbWFnZSA9IHtz
cmM6ICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UcmFzaC5zdmciLCB3aWR0aDogMTUsIGhlaWdodDog
MTV9OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUtcmVjb3Jk
aW5nIik7CiAKLSAgICB0aGlzLl9jbGVhclRpbWVsaW5lTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2Vi
SW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjbGVhci10aW1lbGluZSIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiQ2xlYXIgVGltZWxpbmUiKSwgdHJhc2hJbWFnZS5zcmMsIHRyYXNoSW1h
Z2Uud2lkdGgsIHRyYXNoSW1hZ2UuaGVpZ2h0KTsKLSAgICB0aGlzLl9jbGVhclRpbWVsaW5lTmF2
aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fY2xlYXJUaW1lbGluZSwgdGhpcyk7CisgICAgICAg
IHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZp
ZXcodGhpcy5fcmVjb3JkaW5nKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LkV2ZW50LlRpbWVSYW5n
ZVNlbGVjdGlvbkNoYW5nZWQsIHRoaXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQsIHRoaXMp
OworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGltZWxpbmVPdmVydmll
dy5lbGVtZW50KTsKIAotICAgIHRoaXMuX292ZXJ2aWV3VGltZWxpbmVWaWV3ID0gbmV3IFdlYklu
c3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldyhyZWNvcmRpbmcpOwotICAgIHRoaXMuX292ZXJ2
aWV3VGltZWxpbmVWaWV3LnNlY29uZHNQZXJQaXhlbCA9IHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcu
c2Vjb25kc1BlclBpeGVsOworICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lciA9IG5l
dyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIoKTsKKyAgICAgICAgdGhpcy5fY29u
dGVudFZpZXdDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlzLl9jdXJy
ZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fY29udGVudFZpZXdDb250YWluZXIuZWxlbWVudCk7CiAKLSAgICB0aGlz
Ll90aW1lbGluZVZpZXdNYXAgPSBuZXcgTWFwOwotICAgIHRoaXMuX3BhdGhDb21wb25lbnRNYXAg
PSBuZXcgTWFwOworICAgICAgICB2YXIgdHJhc2hJbWFnZTsKKyAgICAgICAgaWYgKFdlYkluc3Bl
Y3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TKQorICAgICAgICAgICAgdHJhc2hJbWFnZSA9IHtz
cmM6ICJJbWFnZXMvTGVnYWN5L05hdmlnYXRpb25JdGVtVHJhc2guc3ZnIiwgd2lkdGg6IDE2LCBo
ZWlnaHQ6IDE2fTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdHJhc2hJbWFnZSA9IHtzcmM6
ICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UcmFzaC5zdmciLCB3aWR0aDogMTUsIGhlaWdodDogMTV9
OwogCi0gICAgdGhpcy5fdXBkYXRpbmcgPSBmYWxzZTsKLSAgICB0aGlzLl9jdXJyZW50VGltZSA9
IE5hTjsKLSAgICB0aGlzLl9sYXN0VXBkYXRlVGltZXN0YW1wID0gTmFOOwotICAgIHRoaXMuX3N0
YXJ0VGltZU5lZWRzUmVzZXQgPSB0cnVlOworICAgICAgICB0aGlzLl9jbGVhclRpbWVsaW5lTmF2
aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJjbGVh
ci10aW1lbGluZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIgVGltZWxpbmUiKSwgdHJh
c2hJbWFnZS5zcmMsIHRyYXNoSW1hZ2Uud2lkdGgsIHRyYXNoSW1hZ2UuaGVpZ2h0KTsKKyAgICAg
ICAgdGhpcy5fY2xlYXJUaW1lbGluZU5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX2NsZWFy
VGltZWxpbmUsIHRoaXMpOwogCi0gICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlRpbWVsaW5lQWRkZWQsIHRoaXMu
X3RpbWVsaW5lQWRkZWQsIHRoaXMpOwotICAgIHRoaXMuX3JlY29yZGluZy5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5UaW1lbGluZVJlbW92ZWQs
IHRoaXMuX3RpbWVsaW5lUmVtb3ZlZCwgdGhpcyk7Ci0gICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlJlc2V0LCB0
aGlzLl9yZWNvcmRpbmdSZXNldCwgdGhpcyk7Ci0gICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlVubG9hZGVkLCB0
aGlzLl9yZWNvcmRpbmdVbmxvYWRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX292ZXJ2aWV3VGlt
ZWxpbmVWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldyhyZWNvcmRp
bmcpOworICAgICAgICB0aGlzLl9vdmVydmlld1RpbWVsaW5lVmlldy5zZWNvbmRzUGVyUGl4ZWwg
PSB0aGlzLl90aW1lbGluZU92ZXJ2aWV3LnNlY29uZHNQZXJQaXhlbDsKIAotICAgIFdlYkluc3Bl
Y3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxp
bmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0YXJ0ZWQsIHRoaXMuX2NhcHR1cmluZ1N0YXJ0ZWQs
IHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0b3BwZWQsIHRo
aXMuX2NhcHR1cmluZ1N0b3BwZWQsIHRoaXMpOworICAgICAgICB0aGlzLl90aW1lbGluZVZpZXdN
YXAgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9wYXRoQ29tcG9uZW50TWFwID0gbmV3IE1hcDsK
IAotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgdGhpcy5fZGVidWdnZXJQYXVz
ZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlJlc3VtZWQsIHRoaXMuX2Rl
YnVnZ2VyUmVzdW1lZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX3VwZGF0aW5nID0gZmFsc2U7Cisg
ICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lID0gTmFOOworICAgICAgICB0aGlzLl9sYXN0VXBkYXRl
VGltZXN0YW1wID0gTmFOOworICAgICAgICB0aGlzLl9zdGFydFRpbWVOZWVkc1Jlc2V0ID0gdHJ1
ZTsKIAotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5n
ZSwgdGhpcy5fY29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlLCB0aGlz
KTsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlk
Q2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0Rp
ZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3JlY29yZGluZy5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5UaW1lbGluZUFkZGVkLCB0aGlz
Ll90aW1lbGluZUFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlRpbWVsaW5lUmVt
b3ZlZCwgdGhpcy5fdGltZWxpbmVSZW1vdmVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVjb3Jk
aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50
LlJlc2V0LCB0aGlzLl9yZWNvcmRpbmdSZXNldCwgdGhpcyk7CisgICAgICAgIHRoaXMuX3JlY29y
ZGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVu
dC5VbmxvYWRlZCwgdGhpcy5fcmVjb3JkaW5nVW5sb2FkZWQsIHRoaXMpOwogCi0gICAgZm9yICh2
YXIgdGltZWxpbmUgb2YgdGhpcy5fcmVjb3JkaW5nLnRpbWVsaW5lcy52YWx1ZXMoKSkKLSAgICAg
ICAgdGhpcy5fdGltZWxpbmVBZGRlZCh0aW1lbGluZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci50
aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5h
Z2VyLkV2ZW50LkNhcHR1cmluZ1N0YXJ0ZWQsIHRoaXMuX2NhcHR1cmluZ1N0YXJ0ZWQsIHRoaXMp
OworICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudC5DYXB0dXJpbmdTdG9wcGVkLCB0aGlz
Ll9jYXB0dXJpbmdTdG9wcGVkLCB0aGlzKTsKIAotICAgIHRoaXMuc2hvd092ZXJ2aWV3VGltZWxp
bmVWaWV3KCk7Ci19OworICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIHRo
aXMuX2RlYnVnZ2VyUGF1c2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuUmVzdW1lZCwgdGhpcy5fZGVidWdnZXJSZXN1bWVkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAidGltZWxpbmUt
cmVjb3JkaW5nIjsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25l
bnRzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRD
aGFuZ2UsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVz
ZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJl
c2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZGluZ0NvbnRlbnRWaWV3LlNlbGVjdGVkVGltZWxpbmVUeXBlQ29va2llS2V5ID0gInRpbWVs
aW5lLXJlY29yZGluZy1jb250ZW50LXZpZXctc2VsZWN0ZWQtdGltZWxpbmUtdHlwZSI7Ci1XZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5PdmVydmlld1RpbWVsaW5lVmll
d0Nvb2tpZVZhbHVlID0gInRpbWVsaW5lLXJlY29yZGluZy1jb250ZW50LXZpZXctb3ZlcnZpZXct
dGltZWxpbmUtdmlldyI7CisgICAgICAgIGZvciAodmFyIHRpbWVsaW5lIG9mIHRoaXMuX3JlY29y
ZGluZy50aW1lbGluZXMudmFsdWVzKCkpCisgICAgICAgICAgICB0aGlzLl90aW1lbGluZUFkZGVk
KHRpbWVsaW5lKTsKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRpbmdDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuc2hvd092ZXJ2aWV3VGltZWxpbmVWaWV3KCk7Cisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBzaG93T3ZlcnZpZXdUaW1lbGluZVZpZXc6IGZ1
bmN0aW9uKCkKKyAgICBzaG93T3ZlcnZpZXdUaW1lbGluZVZpZXcoKQogICAgIHsKICAgICAgICAg
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMuX292ZXJ2aWV3
VGltZWxpbmVWaWV3KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dUaW1lbGluZVZpZXdGb3JU
aW1lbGluZTogZnVuY3Rpb24odGltZWxpbmUpCisgICAgc2hvd1RpbWVsaW5lVmlld0ZvclRpbWVs
aW5lKHRpbWVsaW5lKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUsIHRpbWVsaW5lKTsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fdGltZWxpbmVWaWV3TWFwLmhhcyh0aW1lbGluZSksIHRpbWVsaW5lKTsK
QEAgLTEwNCwxOCArOTcsMTggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
X2NvbnRlbnRWaWV3Q29udGFpbmVyLnNob3dDb250ZW50Vmlldyh0aGlzLl90aW1lbGluZVZpZXdN
YXAuZ2V0KHRpbWVsaW5lKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYWxsb3dlZE5hdmln
YXRpb25TaWRlYmFyUGFuZWxzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbV2ViSW5zcGVjdG9y
LnRpbWVsaW5lU2lkZWJhclBhbmVsLmlkZW50aWZpZXJdOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHN1cHBvcnRzU3BsaXRDb250ZW50QnJvd3NlcigpCiAgICAgewogICAgICAgICAvLyBUaGUg
bGF5b3V0IG9mIHRoZSBvdmVydmlldyBhbmQgc3BsaXQgY29udGVudCBicm93c2VyIGRvbid0IHdv
cmsgd2VsbC4KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CkBAIC0xMjcsNDUgKzEyMCw0NSBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1l
bGluZSkKICAgICAgICAgICAgIHBhdGhDb21wb25lbnRzLnVuc2hpZnQodGhpcy5fcGF0aENvbXBv
bmVudE1hcC5nZXQocmVwcmVzZW50ZWRPYmplY3QpKTsKICAgICAgICAgcmV0dXJuIHBhdGhDb21w
b25lbnRzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBsZW1lbnRhbFJlcHJlc2VudGVk
T2JqZWN0cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVy
LmN1cnJlbnRDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50Vmlldy5zdXBwbGVt
ZW50YWxSZXByZXNlbnRlZE9iamVjdHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF2aWdh
dGlvbkl0ZW1zKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbdGhpcy5fY2xlYXJUaW1lbGluZU5h
dmlnYXRpb25JdGVtXTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoYW5kbGVDb3B5RXZlbnQo
KQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRW
aWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRD
b250ZW50VmlldyAmJiB0eXBlb2YgY3VycmVudENvbnRlbnRWaWV3LmhhbmRsZUNvcHlFdmVudCA9
PT0gImZ1bmN0aW9uIiA/IGN1cnJlbnRDb250ZW50Vmlldy5oYW5kbGVDb3B5RXZlbnQuYmluZChj
dXJyZW50Q29udGVudFZpZXcpIDogbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBw
b3J0c1NhdmUoKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMu
X2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgcmV0dXJu
IGN1cnJlbnRDb250ZW50VmlldyAmJiBjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTYXZlOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNhdmVEYXRhKCkKICAgICB7CiAgICAgICAgIHZhciBj
dXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29u
dGVudFZpZXc7CiAgICAgICAgIHJldHVybiBjdXJyZW50Q29udGVudFZpZXcgJiYgY3VycmVudENv
bnRlbnRWaWV3LnNhdmVEYXRhIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY3Vy
cmVudFRpbWVsaW5lVmlldygpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0aGlz
Ll9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIHJldHVy
biAoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3KSA/IGNv
bnRlbnRWaWV3IDogbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigp
CisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy5zaG93
bigpOwogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5zaG93bigpOwpAQCAtMTcz
LDU1ICsxNjYsNTUgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghdGhpcy5fdXBkYXRpbmcgJiYgV2ViSW5zcGVj
dG9yLnRpbWVsaW5lTWFuYWdlci5hY3RpdmVSZWNvcmRpbmcgPT09IHRoaXMuX3JlY29yZGluZyAm
JiBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmlzQ2FwdHVyaW5nKCkpCiAgICAgICAgICAg
ICB0aGlzLl9zdGFydFVwZGF0aW5nQ3VycmVudFRpbWUoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICB0aGlzLl90
aW1lbGluZU92ZXJ2aWV3LmhpZGRlbigpOwogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRh
aW5lci5oaWRkZW4oKTsKIAogICAgICAgICBpZiAodGhpcy5fdXBkYXRpbmcpCiAgICAgICAgICAg
ICB0aGlzLl9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgpOwotICAgIH0sCisgICAgfQogCi0gICAg
Y2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Nv
bnRlbnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzKCk7CiAKICAgICAgICAgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlLCB0aGlzLl9j
b250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRDaGFuZ2UsIHRoaXMpOwogICAgICAg
ICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hh
bmdlLCB0aGlzLl9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENo
YW5nZSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5Hb0JhY2s6IGZ1bmN0aW9uKCkK
KyAgICBjYW5Hb0JhY2soKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3
Q29udGFpbmVyLmNhbkdvQmFjaygpOwotICAgIH0sCisgICAgfQogCi0gICAgY2FuR29Gb3J3YXJk
OiBmdW5jdGlvbigpCisgICAgY2FuR29Gb3J3YXJkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jYW5Hb0ZvcndhcmQoKTsKLSAgICB9LAorICAgIH0K
IAotICAgIGdvQmFjazogZnVuY3Rpb24oKQorICAgIGdvQmFjaygpCiAgICAgewogICAgICAgICB0
aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5nb0JhY2soKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGdvRm9yd2FyZCgpCiAgICAgewogICAgICAgICB0
aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5nb0ZvcndhcmQoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewog
ICAgICAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3LnVwZGF0ZUxheW91dEZvclJlc2l6ZSgpOwog
CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmlld0NvbnRh
aW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmIChjdXJyZW50Q29udGVudFZpZXcp
CiAgICAgICAgICAgICBjdXJyZW50Q29udGVudFZpZXcudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBzYXZlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlVG9D
b29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXdDb29raWVUeXBlLlRpbWVsaW5lczsKIApAQCAtMjMwLDkgKzIyMyw5IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmll
dy5TZWxlY3RlZFRpbWVsaW5lVHlwZUNvb2tpZUtleV0gPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRpbmdDb250ZW50Vmlldy5PdmVydmlld1RpbWVsaW5lVmlld0Nvb2tpZVZhbHVlOwogICAg
ICAgICBlbHNlIGlmIChjdXJyZW50Q29udGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpCiAgICAgICAgICAgICBjb29raWVbV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuU2VsZWN0ZWRUaW1lbGluZVR5cGVDb29r
aWVLZXldID0gdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3LnJlcHJlc2VudGVkT2JqZWN0LnR5cGU7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2ll
KQorICAgIHJlc3RvcmVGcm9tQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIHZhciB0aW1l
bGluZVR5cGUgPSBjb29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZp
ZXcuU2VsZWN0ZWRUaW1lbGluZVR5cGVDb29raWVLZXldOwogCkBAIC0yNDAsMTcgKzIzMywxNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLnNob3dPdmVydmlld1RpbWVsaW5lVmlldygpOwogICAgICAgICBl
bHNlCiAgICAgICAgICAgICB0aGlzLnNob3dUaW1lbGluZVZpZXdGb3JUaW1lbGluZSh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LnRpbWVsaW5lcy5nZXQodGltZWxpbmVUeXBlKSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBmaWx0ZXJEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBmaWx0ZXJEaWRDaGFu
Z2UoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3LmZpbHRl
ckRpZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgbWF0Y2hUcmVlRWxlbWVudEFnYWlu
c3RDdXN0b21GaWx0ZXJzOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVt
ZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5jdXJyZW50VGltZWxpbmVWaWV3ICYmICF0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcubWF0
Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVtZW50KSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTMwNCwxMSArMjk3LDExIEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBjb25zb2xl
LmVycm9yKCJVbmtub3duIFRyZWVFbGVtZW50LCBjYW4ndCBmaWx0ZXIgYnkgdGltZS4iKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAg
ICBfY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY3Vy
cmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHRpbWVs
aW5lVmlldyA9IHRoaXMuY3VycmVudFRpbWVsaW5lVmlldzsKICAgICAgICAgaWYgKHRpbWVsaW5l
VmlldykgewpAQCAtMzIyLDI4ICszMTUsMjggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
aW5nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRo
Q29tcG9uZW50c0RpZENoYW5nZSk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5OYXZpZ2F0aW9uSXRlbXNEaWRDaGFu
Z2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZChldmVudCkKICAgICB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC5zaG93VGltZWxpbmVWaWV3Rm9y
VGltZWxpbmUoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRD
aGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21w
b25lbnREaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9
PSB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5n
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNl
bnRlZE9iamVjdHNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50Vmlld1N1
cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAg
ICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJl
bnRDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlN1cHBsZW1l
bnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
dXBkYXRlOiBmdW5jdGlvbih0aW1lc3RhbXApCisgICAgX3VwZGF0ZSh0aW1lc3RhbXApCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fd2FpdGluZ1RvUmVzZXRDdXJyZW50VGltZSkgewogICAgICAg
ICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3VwZGF0ZUNhbGxiYWNrKTsKQEAgLTM2
OCw5ICszNjEsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2xhc3RVcGRhdGVUaW1lc3RhbXAgPSB0aW1lc3Rh
bXA7CiAKICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3VwZGF0ZUNhbGxiYWNr
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVUaW1lczogZnVuY3Rpb24oc3RhcnRUaW1l
LCBjdXJyZW50VGltZSwgZW5kVGltZSkKKyAgICBfdXBkYXRlVGltZXMoc3RhcnRUaW1lLCBjdXJy
ZW50VGltZSwgZW5kVGltZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zdGFydFRpbWVOZWVk
c1Jlc2V0ICYmICFpc05hTihzdGFydFRpbWUpKSB7CiAgICAgICAgICAgICB2YXIgc2VsZWN0aW9u
T2Zmc2V0ID0gdGhpcy5fdGltZWxpbmVPdmVydmlldy5zZWxlY3Rpb25TdGFydFRpbWUgLSB0aGlz
Ll90aW1lbGluZU92ZXJ2aWV3LnN0YXJ0VGltZTsKQEAgLTM5OCw5ICszOTEsOSBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcudXBkYXRlTGF5b3V0SWZOZWVkZWQoKTsKICAgICAgICAg
aWYgKHRoaXMuY3VycmVudFRpbWVsaW5lVmlldykKICAgICAgICAgICAgIHRoaXMuY3VycmVudFRp
bWVsaW5lVmlldy51cGRhdGVMYXlvdXRJZk5lZWRlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3N0YXJ0VXBkYXRpbmdDdXJyZW50VGltZTogZnVuY3Rpb24oKQorICAgIF9zdGFydFVwZGF0aW5n
Q3VycmVudFRpbWUoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3VwZGF0
aW5nKTsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0aW5nKQpAQCAtNDIwLDkgKzQxMyw5IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUNhbGxiYWNrID0gdGhpcy5fdXBkYXRlLmJpbmQodGhpcyk7
CiAKICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMuX3VwZGF0ZUNhbGxiYWNrKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9zdG9wVXBkYXRpbmdDdXJyZW50VGltZTogZnVuY3Rpb24o
KQorICAgIF9zdG9wVXBkYXRpbmdDdXJyZW50VGltZSgpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl91cGRhdGluZyk7CiAgICAgICAgIHRoaXMuX3VwZGF0aW5nID0gZmFsc2U7
CkBAIC00MzIsMzYgKzQyNSwzNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250
ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmcucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuVGltZXNV
cGRhdGVkLCB0aGlzLl9yZWNvcmRpbmdUaW1lc1VwZGF0ZWQsIHRoaXMpOwogICAgICAgICAgICAg
dGhpcy5fd2FpdGluZ1RvUmVzZXRDdXJyZW50VGltZSA9IGZhbHNlOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfY2FwdHVyaW5nU3RhcnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2NhcHR1cmluZ1N0YXJ0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9zdGFydFVwZGF0
aW5nQ3VycmVudFRpbWUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jYXB0dXJpbmdTdG9wcGVk
OiBmdW5jdGlvbihldmVudCkKKyAgICBfY2FwdHVyaW5nU3RvcHBlZChldmVudCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl91cGRhdGluZykKICAgICAgICAgICAgIHRoaXMuX3N0b3BVcGRhdGlu
Z0N1cnJlbnRUaW1lKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVidWdnZXJQYXVzZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9kZWJ1Z2dlclBhdXNlZChldmVudCkKICAgICB7CiAgICAgICAg
IGlmIChXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgPT09IFdlYkluc3Bl
Y3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5SZXBsYXlpbmcpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgdGhpcy5fc3RvcFVwZGF0aW5nQ3VycmVudFRpbWUoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9kZWJ1Z2dlclJlc3VtZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9k
ZWJ1Z2dlclJlc3VtZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLnJl
cGxheU1hbmFnZXIuc2Vzc2lvblN0YXRlID09PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5T
ZXNzaW9uU3RhdGUuUmVwbGF5aW5nKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRo
aXMuX3N0YXJ0VXBkYXRpbmdDdXJyZW50VGltZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
Y29yZGluZ1RpbWVzVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3JlY29yZGluZ1RpbWVz
VXBkYXRlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fd2FpdGluZ1RvUmVzZXRD
dXJyZW50VGltZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ4MCwxNCArNDczLDE0IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICB0aGlzLl9yZWNvcmRpbmcucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRpbmcuRXZlbnQuVGltZXNVcGRhdGVkLCB0aGlzLl9yZWNvcmRpbmdUaW1l
c1VwZGF0ZWQsIHRoaXMpOwogICAgICAgICB0aGlzLl93YWl0aW5nVG9SZXNldEN1cnJlbnRUaW1l
ID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXJUaW1lbGluZTogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX2NsZWFyVGltZWxpbmUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9y
ZWNvcmRpbmcucmVzZXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90aW1lbGluZUFkZGVkOiBm
dW5jdGlvbih0aW1lbGluZU9yRXZlbnQpCisgICAgX3RpbWVsaW5lQWRkZWQodGltZWxpbmVPckV2
ZW50KQogICAgIHsKICAgICAgICAgdmFyIHRpbWVsaW5lID0gdGltZWxpbmVPckV2ZW50OwogICAg
ICAgICBpZiAoISh0aW1lbGluZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSkpCkBA
IC00OTYsMTYgKzQ4OSwxNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLCB0aW1lbGluZSk7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF0aGlzLl90aW1lbGluZVZpZXdNYXAuaGFzKHRpbWVsaW5lKSwgdGltZWxpbmUpOwog
Ci0gICAgICAgIHRoaXMuX3RpbWVsaW5lVmlld01hcC5zZXQodGltZWxpbmUsIG5ldyBXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXcodGltZWxpbmUpKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVWaWV3
TWFwLnNldCh0aW1lbGluZSwgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNyZWF0ZSh0aW1lbGlu
ZSkpOwogCiAgICAgICAgIHZhciBwYXRoQ29tcG9uZW50ID0gbmV3IFdlYkluc3BlY3Rvci5IaWVy
YXJjaGljYWxQYXRoQ29tcG9uZW50KHRpbWVsaW5lLmRpc3BsYXlOYW1lLCB0aW1lbGluZS5pY29u
Q2xhc3NOYW1lLCB0aW1lbGluZSk7CiAgICAgICAgIHBhdGhDb21wb25lbnQuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5FdmVudC5TaWJsaW5n
V2FzU2VsZWN0ZWQsIHRoaXMuX3BhdGhDb21wb25lbnRTZWxlY3RlZCwgdGhpcyk7CiAgICAgICAg
IHRoaXMuX3BhdGhDb21wb25lbnRNYXAuc2V0KHRpbWVsaW5lLCBwYXRoQ29tcG9uZW50KTsKIAog
ICAgICAgICB0aGlzLl90aW1lbGluZUNvdW50Q2hhbmdlZCgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3RpbWVsaW5lUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RpbWVsaW5lUmVtb3Zl
ZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciB0aW1lbGluZSA9IGV2ZW50LmRhdGEudGltZWxp
bmU7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lLCB0aW1lbGluZSk7CkBAIC01MTgsOSArNTExLDkgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9wYXRoQ29tcG9uZW50TWFwLmRlbGV0ZSh0aW1lbGluZSk7CiAKICAgICAgICAgdGhpcy5fdGlt
ZWxpbmVDb3VudENoYW5nZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90aW1lbGluZUNvdW50
Q2hhbmdlZDogZnVuY3Rpb24oKQorICAgIF90aW1lbGluZUNvdW50Q2hhbmdlZCgpCiAgICAgewog
ICAgICAgICB2YXIgcHJldmlvdXNQYXRoQ29tcG9uZW50ID0gbnVsbDsKICAgICAgICAgZm9yICh2
YXIgcGF0aENvbXBvbmVudCBvZiB0aGlzLl9wYXRoQ29tcG9uZW50TWFwLnZhbHVlcygpKSB7CkBA
IC01MzMsMTMgKzUyNiwxMyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgdGltZWxpbmVDb3Vu
dCA9IHRoaXMuX3JlY29yZGluZy50aW1lbGluZXMuc2l6ZTsKLSAgICAgICAgY29uc3QgdGltZWxp
bmVIZWlnaHQgPSAzNjsKLSAgICAgICAgY29uc3QgZXh0cmFPZmZzZXQgPSAyMjsKKyAgICAgICAg
dmFyIHRpbWVsaW5lSGVpZ2h0ID0gMzY7CisgICAgICAgIHZhciBleHRyYU9mZnNldCA9IDIyOwog
ICAgICAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3LmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gKHRp
bWVsaW5lQ291bnQgKiB0aW1lbGluZUhlaWdodCArIGV4dHJhT2Zmc2V0KSArICJweCI7CiAgICAg
ICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmVsZW1lbnQuc3R5bGUudG9wID0gKHRpbWVs
aW5lQ291bnQgKiB0aW1lbGluZUhlaWdodCArIGV4dHJhT2Zmc2V0KSArICJweCI7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfcmVjb3JkaW5nUmVzZXQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZWNv
cmRpbmdSZXNldChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lID0gTmFO
OwogCkBAIC01NTksMTcgKzU1MiwxNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX292ZXJ2aWV3VGltZWxpbmVW
aWV3LnJlc2V0KCk7CiAgICAgICAgIGZvciAodmFyIHRpbWVsaW5lVmlldyBvZiB0aGlzLl90aW1l
bGluZVZpZXdNYXAudmFsdWVzKCkpCiAgICAgICAgICAgICB0aW1lbGluZVZpZXcucmVzZXQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9yZWNvcmRpbmdVbmxvYWRlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3JlY29yZGluZ1VubG9hZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoIXRoaXMuX3VwZGF0aW5nKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVN
YW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5F
dmVudC5DYXB0dXJpbmdTdGFydGVkLCB0aGlzLl9jYXB0dXJpbmdTdGFydGVkLCB0aGlzKTsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RvcHBlZCwgdGhpcy5f
Y2FwdHVyaW5nU3RvcHBlZCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZVJhbmdl
U2VsZWN0aW9uQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RpbWVSYW5nZVNlbGVjdGlv
bkNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5jdXJyZW50VGltZWxpbmVW
aWV3KSB7CiAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcuc3RhcnRUaW1lID0g
dGhpcy5fdGltZWxpbmVPdmVydmlldy5zZWxlY3Rpb25TdGFydFRpbWU7CkBAIC01ODgsMyArNTgx
LDYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB9LmJpbmQodGhpcykpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LlNlbGVjdGVkVGltZWxpbmVUeXBlQ29va2llS2V5
ID0gInRpbWVsaW5lLXJlY29yZGluZy1jb250ZW50LXZpZXctc2VsZWN0ZWQtdGltZWxpbmUtdHlw
ZSI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5PdmVydmlld1Rp
bWVsaW5lVmlld0Nvb2tpZVZhbHVlID0gInRpbWVsaW5lLXJlY29yZGluZy1jb250ZW50LXZpZXct
b3ZlcnZpZXctdGltZWxpbmUtdmlldyI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcwppbmRleCBiZTEyMGY0
Li5iOGVlYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDcyICsyMyw0OCBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJ1bGVyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBU
aW1lbGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2Fs
bCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAg
IHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlN0eWxlQ2xh
c3NOYW1lOwotCi0gICAgdGhpcy5faGVhZGVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIuSGVhZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMu
X2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVudCk7Ci0KLSAgICB0aGlzLl9t
YXJrZXJzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMu
X21hcmtlcnNFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLk1h
cmtlcnNFbGVtZW50U3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9tYXJrZXJzRWxlbWVudCk7Ci0KLSAgICB0aGlzLl96ZXJvVGltZSA9IDA7Ci0gICAg
dGhpcy5fc3RhcnRUaW1lID0gMDsKLSAgICB0aGlzLl9lbmRUaW1lID0gMDsKLSAgICB0aGlzLl9k
dXJhdGlvbiA9IE5hTjsKLSAgICB0aGlzLl9zZWNvbmRzUGVyUGl4ZWwgPSAwOwotICAgIHRoaXMu
X3NlbGVjdGlvblN0YXJ0VGltZSA9IDA7Ci0gICAgdGhpcy5fc2VsZWN0aW9uRW5kVGltZSA9IElu
ZmluaXR5OwotICAgIHRoaXMuX2VuZFRpbWVQaW5uZWQgPSBmYWxzZTsKLSAgICB0aGlzLl9hbGxv
d3NDbGlwcGVkTGFiZWxzID0gZmFsc2U7Ci0gICAgdGhpcy5fYWxsb3dzVGltZVJhbmdlU2VsZWN0
aW9uID0gZmFsc2U7Ci0KLSAgICB0aGlzLl9tYXJrZXJFbGVtZW50TWFwID0gbmV3IE1hcDsKLX07
CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bUxlZnREaXZpZGVyU3BhY2luZyA9IDQ4OwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bURpdmlkZXJTcGFjaW5nID0gNjQ7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAidGltZWxpbmUtcnVsZXIiOwogCi1XZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5TdHlsZUNsYXNzTmFtZSA9ICJ0aW1lbGluZS1ydWxlciI7Ci1XZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5BbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb25TdHlsZUNsYXNz
TmFtZSA9ICJhbGxvd3MtdGltZS1yYW5nZS1zZWxlY3Rpb24iOwotV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIuSGVhZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImhlYWRlciI7Ci1XZWJJbnNw
ZWN0b3IuVGltZWxpbmVSdWxlci5EaXZpZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImRpdmlk
ZXIiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRGl2aWRlckxhYmVsRWxlbWVudFN0eWxl
Q2xhc3NOYW1lID0gImxhYmVsIjsKKyAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNs
YXNzTmFtZSA9ICJoZWFkZXIiOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2hlYWRlckVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5NYXJrZXJz
RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm1hcmtlcnMiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIuQmFzZU1hcmtlckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJtYXJrZXIiOwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIuU2hhZGVkQXJlYUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJz
aGFkZWQtYXJlYSI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5TZWxlY3Rpb25EcmFnRWxl
bWVudFN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdGlvbi1kcmFnIjsKLVdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLlNlbGVjdGlvbkhhbmRsZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3Rp
b24taGFuZGxlIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkxlZnRTZWxlY3Rpb25FbGVt
ZW50U3R5bGVDbGFzc05hbWUgPSAibGVmdCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5S
aWdodFNlbGVjdGlvbkVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJyaWdodCI7Ci1XZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5NaW5pbXVtU2VsZWN0aW9uVGltZVJhbmdlID0gMC4wMTsKKyAgICAg
ICAgdGhpcy5fbWFya2Vyc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
KyAgICAgICAgdGhpcy5fbWFya2Vyc0VsZW1lbnQuY2xhc3NOYW1lID0gIm1hcmtlcnMiOworICAg
ICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX21hcmtlcnNFbGVtZW50KTsKIAot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRXZlbnQgPSB7Ci0gICAgVGltZVJhbmdlU2VsZWN0
aW9uQ2hhbmdlZDogInRpbWUtcnVsZXItdGltZS1yYW5nZS1zZWxlY3Rpb24tY2hhbmdlZCIKLX07
CisgICAgICAgIHRoaXMuX3plcm9UaW1lID0gMDsKKyAgICAgICAgdGhpcy5fc3RhcnRUaW1lID0g
MDsKKyAgICAgICAgdGhpcy5fZW5kVGltZSA9IDA7CisgICAgICAgIHRoaXMuX2R1cmF0aW9uID0g
TmFOOworICAgICAgICB0aGlzLl9zZWNvbmRzUGVyUGl4ZWwgPSAwOworICAgICAgICB0aGlzLl9z
ZWxlY3Rpb25TdGFydFRpbWUgPSAwOworICAgICAgICB0aGlzLl9zZWxlY3Rpb25FbmRUaW1lID0g
SW5maW5pdHk7CisgICAgICAgIHRoaXMuX2VuZFRpbWVQaW5uZWQgPSBmYWxzZTsKKyAgICAgICAg
dGhpcy5fYWxsb3dzQ2xpcHBlZExhYmVscyA9IGZhbHNlOworICAgICAgICB0aGlzLl9hbGxvd3NU
aW1lUmFuZ2VTZWxlY3Rpb24gPSBmYWxzZTsKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ciwKKyAgICAgICAgdGhpcy5fbWFya2VyRWxlbWVudE1hcCA9IG5ldyBNYXA7CisgICAgfQogCiAg
ICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBhbGxvd3NDbGlwcGVkTGFi
ZWxzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9hbGxvd3NDbGlwcGVkTGFiZWxzOwot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IGFsbG93c0NsaXBwZWRMYWJlbHMoeCkKICAgICB7CkBA
IC05OCwxMiArNzQsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9hbGxvd3NDbGlwcGVkTGFiZWxzID0geCB8fCBmYWxzZTsKIAogICAg
ICAgICB0aGlzLl9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFsbG93
c1RpbWVSYW5nZVNlbGVjdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWxsb3dz
VGltZVJhbmdlU2VsZWN0aW9uOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGFsbG93c1RpbWVS
YW5nZVNlbGVjdGlvbih4KQogICAgIHsKQEAgLTE1NCwxMiArMTMwLDEyIEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9y
aWdodFNlbGVjdGlvbkhhbmRsZUVsZW1lbnQ7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2Vs
ZWN0aW9uRHJhZ0VsZW1lbnQ7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCB6
ZXJvVGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5femVyb1RpbWU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBzZXQgemVyb1RpbWUoeCkKICAgICB7CkBAIC0xNjksMTIgKzE0NSwxMiBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3plcm9UaW1lID0geCB8fCAwOwogCiAgICAgICAgIHRoaXMuX25lZWRzTGF5b3V0KCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgc3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc3RhcnRUaW1lKHgpCiAg
ICAgewpAQCAtMTg3LDE0ICsxNjMsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZW5kVGltZSA9IHRoaXMuX3N0YXJ0VGltZSAr
IHRoaXMuX2R1cmF0aW9uOwogCiAgICAgICAgIHRoaXMuX25lZWRzTGF5b3V0KCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgZHVyYXRpb24oKQogICAgIHsKICAgICAgICAgaWYgKCFpc05hTih0
aGlzLl9kdXJhdGlvbikpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZHVyYXRpb247CiAgICAg
ICAgIHJldHVybiB0aGlzLmVuZFRpbWUgLSB0aGlzLnN0YXJ0VGltZTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBkdXJhdGlvbih4KQogICAgIHsKQEAgLTIxMCwxNCArMTg2LDE0IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2Vu
ZFRpbWVQaW5uZWQgPSBmYWxzZTsKIAogICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGVuZFRpbWUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9lbmRUaW1lUGlubmVkICYmIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIp
CiAgICAgICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZSgpOwogICAgICAgICByZXR1cm4gdGhpcy5f
ZW5kVGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBlbmRUaW1lKHgpCiAgICAgewpAQCAt
MjI4LDE0ICsyMDQsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9lbmRUaW1lUGlubmVkID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl9u
ZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlY29uZHNQZXJQaXhlbCgp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmll
cikKICAgICAgICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlKCk7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9zZWNvbmRzUGVyUGl4ZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2Vjb25kc1BlclBp
eGVsKHgpCiAgICAgewpAQCAtMjQ3LDEyICsyMjMsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jdXJyZW50U2xpY2VUaW1lID0gMDsK
IAogICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHNlbGVjdGlvblN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0
aW9uU3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlbGVjdGlvblN0YXJ0VGlt
ZSh4KQogICAgIHsKQEAgLTI2MywxMiArMjM5LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdl
ZCA9IHRydWU7CiAKICAgICAgICAgdGhpcy5fbmVlZHNTZWxlY3Rpb25MYXlvdXQoKTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rpb25FbmRUaW1lKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zZWxlY3Rpb25FbmRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNl
bGVjdGlvbkVuZFRpbWUoeCkKICAgICB7CkBAIC0yNzksOSArMjU1LDkgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90aW1lUmFuZ2VTZWxl
Y3Rpb25DaGFuZ2VkID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl9uZWVkc1NlbGVjdGlvbkxheW91
dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkTWFya2VyOiBmdW5jdGlvbihtYXJrZXIpCisg
ICAgYWRkTWFya2VyKG1hcmtlcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hcmtl
ciBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hcmtlcik7CiAKQEAgLTI5NywxNCAr
MjczLDE0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5fbWFya2VyRWxlbWVudE1hcC5zZXQobWFya2VyLCBtYXJrZXJFbGVtZW50KTsKIAog
ICAgICAgICB0aGlzLl9uZWVkc01hcmtlckxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
ZWxlbWVudEZvck1hcmtlcjogZnVuY3Rpb24obWFya2VyKQorICAgIGVsZW1lbnRGb3JNYXJrZXIo
bWFya2VyKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21hcmtlckVsZW1lbnRNYXAuZ2V0
KG1hcmtlcikgfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVu
Y3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2No
ZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2VsQW5pbWF0
aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CkBAIC00MTks
OSArMzk1LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHRoaXMuX3VwZGF0ZU1hcmtlcnModmlzaWJsZVdpZHRoLCBkdXJhdGlvbik7CiAgICAg
ICAgIHRoaXMuX3VwZGF0ZVNlbGVjdGlvbih2aXNpYmxlV2lkdGgsIGR1cmF0aW9uKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dElmTmVlZGVkOiBmdW5jdGlvbigpCisgICAgdXBk
YXRlTGF5b3V0SWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBtYWlu
IGxheW91dCBzY2hlZHVsZWQgd2UgY2FuIGp1c3QgdXBkYXRlIGxheW91dCBhbmQgcmV0dXJuLCBz
aW5jZSB0aGF0CiAgICAgICAgIC8vIHdpbGwgdXBkYXRlIG1hcmtlcnMgYW5kIHRoZSBzZWxlY3Rp
b24gYXQgdGhlIHNhbWUgdGltZS4KQEAgLTQzOSwxMSArNDE1LDExIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVk
U2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZVNlbGVjdGlvbih2aXNpYmxlV2lkdGgsIHRoaXMuZHVyYXRpb24pOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX25lZWRzTGF5b3V0OiBmdW5jdGlvbigpCisgICAgX25l
ZWRzTGF5b3V0KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRh
dGVJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDU5LDkgKzQzNSw5IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUodGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfbmVlZHNNYXJrZXJMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICBfbmVlZHNNYXJrZXJMYXlv
dXQoKQogICAgIHsKICAgICAgICAgLy8gSWYgbGF5b3V0IGlzIHNjaGVkdWxlZCwgYWJvcnQgc2lu
Y2UgbWFya2VycyB3aWxsIGJlIHVwZGF0ZWQgd2hlbiBsYXlvdXQgaGFwcGVucy4KICAgICAgICAg
aWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCkBAIC00ODIsOSArNDU4
LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgdGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9
IHJlcXVlc3RBbmltYXRpb25GcmFtZSh1cGRhdGUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfbmVlZHNTZWxlY3Rpb25MYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICBfbmVlZHNTZWxl
Y3Rpb25MYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9hbGxvd3NUaW1lUmFuZ2VT
ZWxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CkBAIC01MDgsOSArNDg0LDkgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
dGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RB
bmltYXRpb25GcmFtZSh1cGRhdGUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
cmVjYWxjdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBfcmVjYWxjdWxhdGUoKQogICAgIHsKICAgICAg
ICAgdmFyIHZpc2libGVXaWR0aCA9IHRoaXMuX2VsZW1lbnQuY2xpZW50V2lkdGg7CiAgICAgICAg
IGlmICh2aXNpYmxlV2lkdGggPD0gMCkKQEAgLTUyNyw5ICs1MDMsOSBAQCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbmRUaW1lID0g
dGhpcy5fc3RhcnRUaW1lICsgKHZpc2libGVXaWR0aCAqIHRoaXMuX3NlY29uZHNQZXJQaXhlbCk7
CiAKICAgICAgICAgcmV0dXJuIHZpc2libGVXaWR0aDsKLSAgICB9LAorICAgIH0KIAotICAgIF91
cGRhdGVQb3NpdGlvbk9mRWxlbWVudDogZnVuY3Rpb24oZWxlbWVudCwgbmV3UG9zaXRpb24sIHZp
c2libGVXaWR0aCwgcHJvcGVydHkpCisgICAgX3VwZGF0ZVBvc2l0aW9uT2ZFbGVtZW50KGVsZW1l
bnQsIG5ld1Bvc2l0aW9uLCB2aXNpYmxlV2lkdGgsIHByb3BlcnR5KQogICAgIHsKICAgICAgICAg
cHJvcGVydHkgPSBwcm9wZXJ0eSB8fCAibGVmdCI7CiAKQEAgLTUzOSw5ICs1MTUsOSBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBjdXJyZW50
UG9zaXRpb24gPSBwYXJzZUZsb2F0KGVsZW1lbnQuc3R5bGVbcHJvcGVydHldKS50b0ZpeGVkKDIp
OwogICAgICAgICBpZiAoY3VycmVudFBvc2l0aW9uICE9PSBuZXdQb3NpdGlvbikKICAgICAgICAg
ICAgIGVsZW1lbnQuc3R5bGVbcHJvcGVydHldID0gbmV3UG9zaXRpb24gKyAodGhpcy5fZW5kVGlt
ZVBpbm5lZCA/ICIlIiA6ICJweCIpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU1hcmtl
cnM6IGZ1bmN0aW9uKHZpc2libGVXaWR0aCwgZHVyYXRpb24pCisgICAgX3VwZGF0ZU1hcmtlcnMo
dmlzaWJsZVdpZHRoLCBkdXJhdGlvbikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVs
ZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjYW5jZWxBbmlt
YXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsK
QEAgLTU1Niw5ICs1MzIsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBpZiAoIW1hcmtlckVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgICAg
ICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudC5hcHBlbmRDaGlsZChtYXJrZXJFbGVtZW50KTsK
ICAgICAgICAgfSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU2VsZWN0aW9u
OiBmdW5jdGlvbih2aXNpYmxlV2lkdGgsIGR1cmF0aW9uKQorICAgIF91cGRhdGVTZWxlY3Rpb24o
dmlzaWJsZVdpZHRoLCBkdXJhdGlvbikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVs
ZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjYW5jZWxB
bmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlm
aWVyKTsKQEAgLTU5MCw5ICs1NjYsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQp
CiAgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaFRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWRFdmVu
dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rpc3BhdGNoVGltZVJhbmdlU2VsZWN0aW9uQ2hh
bmdlZEV2ZW50OiBmdW5jdGlvbigpCisgICAgX2Rpc3BhdGNoVGltZVJhbmdlU2VsZWN0aW9uQ2hh
bmdlZEV2ZW50KCkKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl90aW1lUmFuZ2VTZWxlY3Rp
b25DaGFuZ2VkOwogCkBAIC02MDAsMTQgKzU3NiwxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
dWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRXZlbnQu
VGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxp
bmVNYXJrZXJUaW1lQ2hhbmdlZDogZnVuY3Rpb24oKQorICAgIF90aW1lbGluZU1hcmtlclRpbWVD
aGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX25lZWRzTWFya2VyTGF5b3V0KCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTW91c2VEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBf
aGFuZGxlTW91c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gT25seSBoYW5kbGUgbGVm
dCBtb3VzZSBjbGlja3MuCiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQu
Y3RybEtleSkKQEAgLTYzNCw5ICs2MTAsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAg
ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTW91
c2VNb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlTW91c2VNb3ZlKGV2ZW50KQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKIApAQCAtNjYx
LDkgKzYzNyw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZVVwOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfaGFuZGxlTW91c2VVcChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CiAKQEAgLTY5Nyw5ICs2NzMsOSBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfaGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VEb3duOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfaGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VEb3duKGV2ZW50KQogICAgIHsKICAg
ICAgICAgLy8gT25seSBoYW5kbGUgbGVmdCBtb3VzZSBjbGlja3MuCiAgICAgICAgIGlmIChldmVu
dC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtleSkKQEAgLTcxNyw5ICs2OTMsOSBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfaGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VNb3ZlOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfaGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VNb3ZlKGV2ZW50KQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKIApAQCAtNzQ5LDkg
KzcyNSw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRp
b24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVTZWxlY3Rpb25IYW5kbGVNb3VzZVVw
OiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VVcChldmVu
dCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CiAK
QEAgLTc2OCw0ICs3NDQsMjEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBl
ID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyLk1pbmltdW1MZWZ0RGl2aWRlclNwYWNpbmcgPSA0ODsKK1dlYkluc3BlY3Rv
ci5UaW1lbGluZVJ1bGVyLk1pbmltdW1EaXZpZGVyU3BhY2luZyA9IDY0OworCitXZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5BbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb25TdHlsZUNsYXNzTmFtZSA9
ICJhbGxvd3MtdGltZS1yYW5nZS1zZWxlY3Rpb24iOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVs
ZXIuRGl2aWRlckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJkaXZpZGVyIjsKK1dlYkluc3BlY3Rv
ci5UaW1lbGluZVJ1bGVyLkRpdmlkZXJMYWJlbEVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJsYWJl
bCI7CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkJhc2VNYXJrZXJFbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAibWFya2VyIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlNoYWRlZEFy
ZWFFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAic2hhZGVkLWFyZWEiOworV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIuU2VsZWN0aW9uRHJhZ0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3Rp
b24tZHJhZyI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5TZWxlY3Rpb25IYW5kbGVFbGVt
ZW50U3R5bGVDbGFzc05hbWUgPSAic2VsZWN0aW9uLWhhbmRsZSI7CitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlci5MZWZ0U2VsZWN0aW9uRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImxlZnQiOwor
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmlnaHRTZWxlY3Rpb25FbGVtZW50U3R5bGVDbGFz
c05hbWUgPSAicmlnaHQiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bVNlbGVj
dGlvblRpbWVSYW5nZSA9IDAuMDE7CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkV2ZW50
ID0geworICAgIFRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQ6ICJ0aW1lLXJ1bGVyLXRpbWUtcmFu
Z2Utc2VsZWN0aW9uLWNoYW5nZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVNpZGViYXJQYW5lbC5q
cwppbmRleCA1YjhjNzNkLi44OWEzMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVNpZGViYXJQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVNpZGViYXJQYW5l
bC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsMTU1ICsyMywxMzAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbigp
CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwgPSBjbGFzcyBUaW1lbGluZVNpZGVi
YXJQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsCiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCAidGltZWxp
bmUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lcyIpLCAiSW1hZ2VzL05hdmlnYXRp
b25JdGVtU3RvcHdhdGNoLnN2ZyIsICIyIik7Ci0KLSAgICB0aGlzLl90aW1lbGluZUV2ZW50c1Rp
dGxlQmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMu
X3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpdGxlQmFyU3R5bGVDbGFzcyk7Ci0gICAgdGhpcy5fdGlt
ZWxpbmVFdmVudHNUaXRsZUJhckVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVFdmVudHNUaXRsZUJhclN0eWxlQ2xhc3MpOwotICAg
IHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fdGltZWxpbmVFdmVudHNUaXRsZUJhckVs
ZW1lbnQsIHRoaXMuZWxlbWVudC5maXJzdENoaWxkKTsKLQotICAgIHRoaXMuY29udGVudFRyZWVP
dXRsaW5lTGFiZWwgPSAiIjsKLQotICAgIHRoaXMuX3RpbWVsaW5lc0NvbnRlbnRDb250YWluZXJF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fdGltZWxp
bmVzQ29udGVudENvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVzQ29udGVudENvbnRhaW5lclN0eWxlQ2xhc3MpOwot
ICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5fdGltZWxpbmVzQ29udGVudENvbnRh
aW5lckVsZW1lbnQsIHRoaXMuZWxlbWVudC5maXJzdENoaWxkKTsKLQotICAgIHRoaXMuX2Rpc3Bs
YXllZFJlY29yZGluZyA9IG51bGw7Ci0gICAgdGhpcy5fZGlzcGxheWVkQ29udGVudFZpZXcgPSBu
dWxsOwotCi0gICAgLy8gTWFpbnRhaW4gYW4gaW52aXNpYmxlIHRyZWUgb3V0bGluZSBjb250YWlu
aW5nIHRyZWUgZWxlbWVudHMgZm9yIGFsbCByZWNvcmRpbmdzLgotICAgIC8vIFRoZSB2aXNpYmxl
IHJlY29yZGluZydzIHRyZWUgZWxlbWVudCBpcyBzZWxlY3RlZCB3aGVuIHRoZSBjb250ZW50IHZp
ZXcgY2hhbmdlcy4KLSAgICB0aGlzLl9yZWNvcmRpbmdUcmVlRWxlbWVudE1hcCA9IG5ldyBNYXA7
Ci0gICAgdGhpcy5fcmVjb3JkaW5nc1RyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJl
ZU91dGxpbmUodHJ1ZSwgdHJ1ZSk7Ci0gICAgdGhpcy5fcmVjb3JkaW5nc1RyZWVPdXRsaW5lLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5I
aWRlRGlzY2xvc3VyZUJ1dHRvbnNTdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5fcmVjb3JkaW5n
c1RyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5Db250ZW50VHJlZU91dGxpbmVFbGVtZW50SGlkZGVuU3R5bGVDbGFzc05h
bWUpOwotICAgIHRoaXMuX3JlY29yZGluZ3NUcmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMuX3Jl
Y29yZGluZ3NUcmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7Ci0gICAgdGhpcy5fdGltZWxp
bmVzQ29udGVudENvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVjb3JkaW5nc1Ry
ZWVPdXRsaW5lLmVsZW1lbnQpOwotCi0gICAgLy8gTWFpbnRhaW4gYSB0cmVlIG91dGxpbmUgd2l0
aCB0cmVlIGVsZW1lbnRzIGZvciBlYWNoIHRpbWVsaW5lIG9mIHRoZSBzZWxlY3RlZCByZWNvcmRp
bmcuCi0gICAgdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRU
cmVlT3V0bGluZSh0cnVlLCB0cnVlKTsKLSAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwu
SGlkZURpc2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuX3RpbWVsaW5l
c1RyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fdGltZWxpbmVzVHJlZUVsZW1lbnRTZWxlY3Rl
ZC5iaW5kKHRoaXMpOwotICAgIHRoaXMuX3RpbWVsaW5lc0NvbnRlbnRDb250YWluZXJFbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLmVsZW1lbnQpOwotCi0gICAg
dGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcCA9IG5ldyBNYXA7Ci0KLSAgICB2YXIgdGltZWxp
bmVzVGl0bGVCYXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
dGltZWxpbmVzVGl0bGVCYXJFbGVtZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJUaW1lbGluZXMiKTsKLSAgICB0aW1lbGluZXNUaXRsZUJhckVsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGl0bGVCYXJTdHlsZUNsYXNz
KTsKLSAgICB0aW1lbGluZXNUaXRsZUJhckVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVzVGl0bGVCYXJTdHlsZUNsYXNzKTsKLSAg
ICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRpbWVsaW5lc1RpdGxlQmFyRWxlbWVudCwgdGhp
cy5lbGVtZW50LmZpcnN0Q2hpbGQpOwotCi0gICAgdmFyIHN0YXR1c0JhckVsZW1lbnQgPSB0aGlz
Ll9zdGF0dXNCYXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
c3RhdHVzQmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5TdGF0dXNCYXJTdHlsZUNsYXNzKTsKLSAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0QmVm
b3JlKHN0YXR1c0JhckVsZW1lbnQsIHRoaXMuZWxlbWVudC5maXJzdENoaWxkKTsKLQotICAgIHRo
aXMuX3JlY29yZEdseXBoRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgIHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhTdHlsZUNsYXNzOwotICAgIHRoaXMuX3JlY29y
ZEdseXBoRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl9yZWNvcmRH
bHlwaE1vdXNlZE92ZXIuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5fcmVjb3JkR2x5cGhNb3VzZWRPdXQu
YmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5fcmVjb3JkR2x5cGhDbGlja2VkLmJpbmQodGhpcykpOwotICAgIHN0
YXR1c0JhckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50KTsKLQot
ICAgIHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SZWNvcmRTdGF0dXNTdHlsZUNsYXNzOwotICAgIHN0
YXR1c0JhckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVjb3JkU3RhdHVzRWxlbWVudCk7Ci0K
LSAgICBXZWJJbnNwZWN0b3Iuc2hvd1JlcGxheUludGVyZmFjZVNldHRpbmcuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl91cGRhdGVSZXBs
YXlJbnRlcmZhY2VWaXNpYmlsaXR5LCB0aGlzKTsKLQotICAgIC8vIFdlIGFsd2F5cyBjcmVhdGUg
YSBuYXZpZ2F0aW9uIGJhcjsgaXRzIHZpc2liaWxpdHkgaXMgY29udHJvbGxlZCBieSBXZWJJbnNw
ZWN0b3Iuc2hvd1JlcGxheUludGVyZmFjZVNldHRpbmcuCi0gICAgdGhpcy5fbmF2aWdhdGlvbkJh
ciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsKLSAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKLQotICAgIHZhciB0b29sVGlw
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJCZWdpbiBDYXB0dXJpbmciKTsKLSAgICB2YXIgYWx0
VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW5kIENhcHR1cmluZyIpOwotICAgIHRo
aXMuX3JlcGxheUNhcHR1cmVCdXR0b25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1
dHRvbk5hdmlnYXRpb25JdGVtKCJyZXBsYXktY2FwdHVyZSIsIHRvb2xUaXAsIGFsdFRvb2xUaXAs
ICJJbWFnZXMvQ2lyY2xlLnN2ZyIsIDE2LCAxNik7Ci0gICAgdGhpcy5fcmVwbGF5Q2FwdHVyZUJ1
dHRvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fcmVwbGF5Q2FwdHVyZUJ1dHRvbkNsaWNrZWQsIHRoaXMp
OwotICAgIHRoaXMuX3JlcGxheUNhcHR1cmVCdXR0b25JdGVtLmVuYWJsZWQgPSB0cnVlOwotICAg
IHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fcmVwbGF5Q2FwdHVy
ZUJ1dHRvbkl0ZW0pOwotCi0gICAgdmFyIHBhdXNlSW1hZ2UsIHJlc3VtZUltYWdlOwotICAgIGlm
IChXZWJJbnNwZWN0b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUykgewotICAgICAgICBwYXVzZUlt
YWdlID0ge3NyYzogIkltYWdlcy9MZWdhY3kvUGF1c2Uuc3ZnIiwgd2lkdGg6IDE2LCBoZWlnaHQ6
IDE2fTsKLSAgICAgICAgcmVzdW1lSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL0xlZ2FjeS9SZXN1bWUu
c3ZnIiwgd2lkdGg6IDE2LCBoZWlnaHQ6IDE2fTsKLSAgICB9IGVsc2UgewotICAgICAgICBwYXVz
ZUltYWdlID0ge3NyYzogIkltYWdlcy9QYXVzZS5zdmciLCB3aWR0aDogMTUsIGhlaWdodDogMTV9
OwotICAgICAgICByZXN1bWVJbWFnZSA9IHtzcmM6ICJJbWFnZXMvUmVzdW1lLnN2ZyIsIHdpZHRo
OiAxNSwgaGVpZ2h0OiAxNX07Ci0gICAgfQotCi0gICAgdG9vbFRpcCA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiU3RhcnQgUGxheWJhY2siKTsKLSAgICBhbHRUb29sVGlwID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJQYXVzZSBQbGF5YmFjayIpOwotICAgIHRoaXMuX3JlcGxheVBhdXNlUmVzdW1l
QnV0dG9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0o
InJlcGxheS1wYXVzZS1yZXN1bWUiLCB0b29sVGlwLCBhbHRUb29sVGlwLCByZXN1bWVJbWFnZS5z
cmMsIHBhdXNlSW1hZ2Uuc3JjLCBwYXVzZUltYWdlLndpZHRoLCBwYXVzZUltYWdlLmhlaWdodCwg
dHJ1ZSk7Ci0gICAgdGhpcy5fcmVwbGF5UGF1c2VSZXN1bWVCdXR0b25JdGVtLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRo
aXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9uQ2xpY2tlZCwgdGhpcyk7Ci0gICAgdGhpcy5fcmVw
bGF5UGF1c2VSZXN1bWVCdXR0b25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKLSAgICB0aGlzLl9uYXZp
Z2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVtKHRoaXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9u
SXRlbSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2ZW50LkNhcHR1cmVTdGFydGVkLCB0aGlzLl9j
YXB0dXJlU3RhcnRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5FdmVudC5DYXB0dXJlU3Rv
cHBlZCwgdGhpcy5fY2FwdHVyZVN0b3BwZWQsIHRoaXMpOwotCi0gICAgdGhpcy5fc3RhdHVzQmFy
RWxlbWVudC5vbmNvbnRleHRtZW51ID0gdGhpcy5fY29udGV4dE1lbnVOYXZpZ2F0aW9uQmFyT3JT
dGF0dXNCYXIuYmluZCh0aGlzKTsKLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQub25j
b250ZXh0bWVudSA9IHRoaXMuX2NvbnRleHRNZW51TmF2aWdhdGlvbkJhck9yU3RhdHVzQmFyLmJp
bmQodGhpcyk7Ci0gICAgdGhpcy5fdXBkYXRlUmVwbGF5SW50ZXJmYWNlVmlzaWJpbGl0eSgpOwot
Ci0gICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuUmVjb3JkaW5nQ3JlYXRlZCwgdGhpcy5fcmVj
b3JkaW5nQ3JlYXRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuUmVjb3Jk
aW5nTG9hZGVkLCB0aGlzLl9yZWNvcmRpbmdMb2FkZWQsIHRoaXMpOwotCi0gICAgV2ViSW5zcGVj
dG9yLmNvbnRlbnRCcm93c2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRC
cm93c2VyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcy5fY29udGVudEJy
b3dzZXJDdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rv
ci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVN
YW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0YXJ0ZWQsIHRoaXMuX2NhcHR1cmluZ1N0YXJ0ZWQsIHRo
aXMpOwotICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0b3BwZWQsIHRoaXMu
X2NhcHR1cmluZ1N0b3BwZWQsIHRoaXMpOwotfTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgewor
ICAgICAgICBzdXBlcigidGltZWxpbmUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5l
cyIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtU3RvcHdhdGNoLnN2ZyIsICIyIik7CisKKyAgICAg
ICAgdGhpcy5fdGltZWxpbmVFdmVudHNUaXRsZUJhckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVFdmVudHNUaXRsZUJhckVsZW1l
bnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGl0bGVC
YXJTdHlsZUNsYXNzKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVFdmVudHNUaXRsZUJhckVsZW1l
bnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxp
bmVFdmVudHNUaXRsZUJhclN0eWxlQ2xhc3MpOworICAgICAgICB0aGlzLmVsZW1lbnQuaW5zZXJ0
QmVmb3JlKHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJFbGVtZW50LCB0aGlzLmVsZW1lbnQu
Zmlyc3RDaGlsZCk7CisKKyAgICAgICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmVMYWJlbCA9ICIi
OworCisgICAgICAgIHRoaXMuX3RpbWVsaW5lc0NvbnRlbnRDb250YWluZXJFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lc0NvbnRl
bnRDb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lk
ZWJhclBhbmVsLlRpbWVsaW5lc0NvbnRlbnRDb250YWluZXJTdHlsZUNsYXNzKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLl90aW1lbGluZXNDb250ZW50Q29udGFpbmVy
RWxlbWVudCwgdGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQpOworCisgICAgICAgIHRoaXMuX2Rpc3Bs
YXllZFJlY29yZGluZyA9IG51bGw7CisgICAgICAgIHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3
ID0gbnVsbDsKKworICAgICAgICAvLyBNYWludGFpbiBhbiBpbnZpc2libGUgdHJlZSBvdXRsaW5l
IGNvbnRhaW5pbmcgdHJlZSBlbGVtZW50cyBmb3IgYWxsIHJlY29yZGluZ3MuCisgICAgICAgIC8v
IFRoZSB2aXNpYmxlIHJlY29yZGluZydzIHRyZWUgZWxlbWVudCBpcyBzZWxlY3RlZCB3aGVuIHRo
ZSBjb250ZW50IHZpZXcgY2hhbmdlcy4KKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nVHJlZUVsZW1l
bnRNYXAgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9yZWNvcmRpbmdzVHJlZU91dGxpbmUgPSB0
aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh0cnVlLCB0cnVlKTsKKyAgICAgICAgdGhpcy5f
cmVjb3JkaW5nc1RyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5IaWRlRGlzY2xvc3VyZUJ1dHRvbnNTdHlsZUNsYXNzTmFt
ZSk7CisgICAgICAgIHRoaXMuX3JlY29yZGluZ3NUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuQ29udGVudFRyZWVPdXRs
aW5lRWxlbWVudEhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5n
c1RyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fcmVjb3JkaW5nc1RyZWVFbGVtZW50U2VsZWN0
ZWQuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVzQ29udGVudENvbnRhaW5lckVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVjb3JkaW5nc1RyZWVPdXRsaW5lLmVsZW1lbnQpOwor
CisgICAgICAgIC8vIE1haW50YWluIGEgdHJlZSBvdXRsaW5lIHdpdGggdHJlZSBlbGVtZW50cyBm
b3IgZWFjaCB0aW1lbGluZSBvZiB0aGUgc2VsZWN0ZWQgcmVjb3JkaW5nLgorICAgICAgICB0aGlz
Ll90aW1lbGluZXNUcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHRy
dWUsIHRydWUpOworICAgICAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuSGlkZURpc2Ns
b3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl90aW1lbGluZXNUcmVl
T3V0bGluZS5vbnNlbGVjdCA9IHRoaXMuX3RpbWVsaW5lc1RyZWVFbGVtZW50U2VsZWN0ZWQuYmlu
ZCh0aGlzKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVzQ29udGVudENvbnRhaW5lckVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUuZWxlbWVudCk7CisKKyAgICAg
ICAgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcCA9IG5ldyBNYXA7CisKKyAgICAgICAgdmFy
IHRpbWVsaW5lc1RpdGxlQmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworICAgICAgICB0aW1lbGluZXNUaXRsZUJhckVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lcyIpOworICAgICAgICB0aW1lbGluZXNUaXRsZUJhckVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGl0
bGVCYXJTdHlsZUNsYXNzKTsKKyAgICAgICAgdGltZWxpbmVzVGl0bGVCYXJFbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpbWVsaW5lc1RpdGxl
QmFyU3R5bGVDbGFzcyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUodGltZWxp
bmVzVGl0bGVCYXJFbGVtZW50LCB0aGlzLmVsZW1lbnQuZmlyc3RDaGlsZCk7CisKKyAgICAgICAg
dmFyIHN0YXR1c0JhckVsZW1lbnQgPSB0aGlzLl9zdGF0dXNCYXJFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHN0YXR1c0JhckVsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU3RhdHVzQmFyU3R5bGVDbGFz
cyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5pbnNlcnRCZWZvcmUoc3RhdHVzQmFyRWxlbWVudCwg
dGhpcy5lbGVtZW50LmZpcnN0Q2hpbGQpOworCisgICAgICAgIHRoaXMuX3JlY29yZEdseXBoRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9yZWNv
cmRHbHlwaEVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBh
bmVsLlJlY29yZEdseXBoU3R5bGVDbGFzczsKKyAgICAgICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIHRoaXMuX3JlY29yZEdseXBoTW91c2Vk
T3Zlci5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5fcmVjb3JkR2x5cGhNb3VzZWRPdXQuYmluZCh0
aGlzKSk7CisgICAgICAgIHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHRoaXMuX3JlY29yZEdseXBoQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAg
c3RhdHVzQmFyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yZWNvcmRHbHlwaEVsZW1lbnQpOwor
CisgICAgICAgIHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fcmVjb3JkU3RhdHVzRWxlbWVudC5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkU3RhdHVzU3R5bGVDbGFz
czsKKyAgICAgICAgc3RhdHVzQmFyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yZWNvcmRTdGF0
dXNFbGVtZW50KTsKKworICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd1JlcGxheUludGVyZmFjZVNl
dHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2Vk
LCB0aGlzLl91cGRhdGVSZXBsYXlJbnRlcmZhY2VWaXNpYmlsaXR5LCB0aGlzKTsKKworICAgICAg
ICAvLyBXZSBhbHdheXMgY3JlYXRlIGEgbmF2aWdhdGlvbiBiYXI7IGl0cyB2aXNpYmlsaXR5IGlz
IGNvbnRyb2xsZWQgYnkgV2ViSW5zcGVjdG9yLnNob3dSZXBsYXlJbnRlcmZhY2VTZXR0aW5nLgor
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
QmFyOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJh
ci5lbGVtZW50KTsKKworICAgICAgICB2YXIgdG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQmVnaW4gQ2FwdHVyaW5nIik7CisgICAgICAgIHZhciBhbHRUb29sVGlwID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJFbmQgQ2FwdHVyaW5nIik7CisgICAgICAgIHRoaXMuX3JlcGxheUNhcHR1
cmVCdXR0b25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25J
dGVtKCJyZXBsYXktY2FwdHVyZSIsIHRvb2xUaXAsIGFsdFRvb2xUaXAsICJJbWFnZXMvQ2lyY2xl
LnN2ZyIsIDE2LCAxNik7CisgICAgICAgIHRoaXMuX3JlcGxheUNhcHR1cmVCdXR0b25JdGVtLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNs
aWNrZWQsIHRoaXMuX3JlcGxheUNhcHR1cmVCdXR0b25DbGlja2VkLCB0aGlzKTsKKyAgICAgICAg
dGhpcy5fcmVwbGF5Q2FwdHVyZUJ1dHRvbkl0ZW0uZW5hYmxlZCA9IHRydWU7CisgICAgICAgIHRo
aXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fcmVwbGF5Q2FwdHVyZUJ1
dHRvbkl0ZW0pOwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuSGlkZGVuU3R5
bGVDbGFzc05hbWUgPSAiaGlkZGVuIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5l
bC5TdGF0dXNCYXJTdHlsZUNsYXNzID0gInN0YXR1cy1iYXIiOwotV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsLlJlY29yZEdseXBoU3R5bGVDbGFzcyA9ICJyZWNvcmQtZ2x5cGgiOwot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJlY29yZEdseXBoUmVjb3JkaW5nU3R5
bGVDbGFzcyA9ICJyZWNvcmRpbmciOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVs
LlJlY29yZEdseXBoUmVjb3JkaW5nRm9yY2VkU3R5bGVDbGFzcyA9ICJmb3JjZWQiOwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJlY29yZFN0YXR1c1N0eWxlQ2xhc3MgPSAicmVj
b3JkLXN0YXR1cyI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGl0bGVCYXJT
dHlsZUNsYXNzID0gInRpdGxlLWJhciI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFu
ZWwuVGltZWxpbmVzVGl0bGVCYXJTdHlsZUNsYXNzID0gInRpbWVsaW5lcyI7Ci1XZWJJbnNwZWN0
b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVFdmVudHNUaXRsZUJhclN0eWxlQ2xhc3Mg
PSAidGltZWxpbmUtZXZlbnRzIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5U
aW1lbGluZXNDb250ZW50Q29udGFpbmVyU3R5bGVDbGFzcyA9ICJ0aW1lbGluZXMtY29udGVudCI7
Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuQ2xvc2VCdXR0b25TdHlsZUNsYXNz
ID0gImNsb3NlLWJ1dHRvbiI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuTGFy
Z2VJY29uU3R5bGVDbGFzcyA9ICJsYXJnZSI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFy
UGFuZWwuU3RvcHdhdGNoSWNvblN0eWxlQ2xhc3MgPSAic3RvcHdhdGNoLWljb24iOwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLk5ldHdvcmtJY29uU3R5bGVDbGFzcyA9ICJuZXR3
b3JrLWljb24iOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkNvbG9yc0ljb25T
dHlsZUNsYXNzID0gImNvbG9ycy1pY29uIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQ
YW5lbC5TY3JpcHRJY29uU3R5bGVDbGFzcyA9ICJzY3JpcHQtaWNvbiI7Ci1XZWJJbnNwZWN0b3Iu
VGltZWxpbmVTaWRlYmFyUGFuZWwuUnVuTG9vcEljb25TdHlsZUNsYXNzID0gInJ1bmxvb3AtaWNv
biI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVSZWNvcmRpbmdD
b250ZW50Vmlld1Nob3dpbmdTdHlsZUNsYXNzID0gInRpbWVsaW5lLXJlY29yZGluZy1jb250ZW50
LXZpZXctc2hvd2luZyI7CisgICAgICAgIHZhciBwYXVzZUltYWdlLCByZXN1bWVJbWFnZTsKKyAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TKSB7CisgICAgICAg
ICAgICBwYXVzZUltYWdlID0ge3NyYzogIkltYWdlcy9MZWdhY3kvUGF1c2Uuc3ZnIiwgd2lkdGg6
IDE2LCBoZWlnaHQ6IDE2fTsKKyAgICAgICAgICAgIHJlc3VtZUltYWdlID0ge3NyYzogIkltYWdl
cy9MZWdhY3kvUmVzdW1lLnN2ZyIsIHdpZHRoOiAxNiwgaGVpZ2h0OiAxNn07CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBwYXVzZUltYWdlID0ge3NyYzogIkltYWdlcy9QYXVzZS5zdmci
LCB3aWR0aDogMTUsIGhlaWdodDogMTV9OworICAgICAgICAgICAgcmVzdW1lSW1hZ2UgPSB7c3Jj
OiAiSW1hZ2VzL1Jlc3VtZS5zdmciLCB3aWR0aDogMTUsIGhlaWdodDogMTV9OworICAgICAgICB9
CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5TaG93aW5nVGltZWxpbmVSZWNv
cmRpbmdDb250ZW50Vmlld0Nvb2tpZUtleSA9ICJ0aW1lbGluZS1zaWRlYmFyLXBhbmVsLXNob3dp
bmctdGltZWxpbmUtcmVjb3JkaW5nLWNvbnRlbnQtdmlldyI7Ci1XZWJJbnNwZWN0b3IuVGltZWxp
bmVTaWRlYmFyUGFuZWwuU2VsZWN0ZWRUaW1lbGluZVZpZXdJZGVudGlmaWVyQ29va2llS2V5ID0g
InRpbWVsaW5lLXNpZGViYXItcGFuZWwtc2VsZWN0ZWQtdGltZWxpbmUtdmlldy1pZGVudGlmaWVy
IjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5PdmVydmlld1RpbWVsaW5lSWRl
bnRpZmllckNvb2tpZVZhbHVlID0gIm92ZXJ2aWV3IjsKKyAgICAgICAgdG9vbFRpcCA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU3RhcnQgUGxheWJhY2siKTsKKyAgICAgICAgYWx0VG9vbFRpcCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUGF1c2UgUGxheWJhY2siKTsKKyAgICAgICAgdGhpcy5f
cmVwbGF5UGF1c2VSZXN1bWVCdXR0b25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5Ub2dnbGVCdXR0
b25OYXZpZ2F0aW9uSXRlbSgicmVwbGF5LXBhdXNlLXJlc3VtZSIsIHRvb2xUaXAsIGFsdFRvb2xU
aXAsIHJlc3VtZUltYWdlLnNyYywgcGF1c2VJbWFnZS5zcmMsIHBhdXNlSW1hZ2Uud2lkdGgsIHBh
dXNlSW1hZ2UuaGVpZ2h0LCB0cnVlKTsKKyAgICAgICAgdGhpcy5fcmVwbGF5UGF1c2VSZXN1bWVC
dXR0b25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25J
dGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9uQ2xpY2tlZCwg
dGhpcyk7CisgICAgICAgIHRoaXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9uSXRlbS5lbmFibGVk
ID0gZmFsc2U7CisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0o
dGhpcy5fcmVwbGF5UGF1c2VSZXN1bWVCdXR0b25JdGVtKTsKIAotV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLAorICAgICAgICBXZWJJbnNwZWN0b3IucmVw
bGF5TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXBsYXlNYW5hZ2VyLkV2
ZW50LkNhcHR1cmVTdGFydGVkLCB0aGlzLl9jYXB0dXJlU3RhcnRlZCwgdGhpcyk7CisgICAgICAg
IFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlJlcGxheU1hbmFnZXIuRXZlbnQuQ2FwdHVyZVN0b3BwZWQsIHRoaXMuX2NhcHR1cmVTdG9wcGVk
LCB0aGlzKTsKKworICAgICAgICB0aGlzLl9zdGF0dXNCYXJFbGVtZW50Lm9uY29udGV4dG1lbnUg
PSB0aGlzLl9jb250ZXh0TWVudU5hdmlnYXRpb25CYXJPclN0YXR1c0Jhci5iaW5kKHRoaXMpOwor
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQub25jb250ZXh0bWVudSA9IHRoaXMu
X2NvbnRleHRNZW51TmF2aWdhdGlvbkJhck9yU3RhdHVzQmFyLmJpbmQodGhpcyk7CisgICAgICAg
IHRoaXMuX3VwZGF0ZVJlcGxheUludGVyZmFjZVZpc2liaWxpdHkoKTsKKworICAgICAgICBXZWJJ
bnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lTWFuYWdlci5FdmVudC5SZWNvcmRpbmdDcmVhdGVkLCB0aGlzLl9yZWNvcmRpbmdDcmVh
dGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuUmVjb3JkaW5nTG9h
ZGVkLCB0aGlzLl9yZWNvcmRpbmdMb2FkZWQsIHRoaXMpOworCisgICAgICAgIFdlYkluc3BlY3Rv
ci5jb250ZW50QnJvd3Nlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50QnJv
d3Nlci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRCcm93
c2VyQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RhcnRlZCwgdGhpcy5fY2FwdHVyaW5nU3RhcnRlZCwg
dGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0b3BwZWQs
IHRoaXMuX2NhcHR1cmluZ1N0b3BwZWQsIHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwog
Ci0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2hvd24uY2FsbCh0aGlz
KTsKIAogICAgICAgICBpZiAodGhpcy5fZGlzcGxheWVkQ29udGVudFZpZXcpCiAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMuX2Rpc3Bs
YXllZENvbnRlbnRWaWV3KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dEZWZhdWx0Q29udGVu
dFZpZXc6IGZ1bmN0aW9uKCkKKyAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3KCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldykKICAgICAgICAgICAgIHRoaXMu
c2hvd1RpbWVsaW5lT3ZlcnZpZXcoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoYXNTZWxl
Y3RlZEVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuICEhdGhpcy5fY29udGVudFRyZWVP
dXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQgfHwgISF0aGlzLl9yZWNvcmRpbmdzVHJlZU91dGxp
bmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIHRyZWVFbGVtZW50
Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHRy
ZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewog
ICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRpbmcpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkaW5nVHJlZUVs
ZW1lbnRNYXAuZ2V0KHJlcHJlc2VudGVkT2JqZWN0KTsKQEAgLTI0MCwxMiArMjE1LDEyIEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
IAogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb250ZW50
VHJlZU91dGxpbmVMYWJlbCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGltZWxpbmVF
dmVudHNUaXRsZUJhckVsZW1lbnQudGV4dENvbnRlbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgY29udGVudFRyZWVPdXRsaW5lTGFiZWwobGFiZWwpCiAgICAgewpAQCAtMjUzLDU2ICsyMjgs
NTYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICB0aGlzLl90aW1lbGluZUV2ZW50c1RpdGxlQmFyRWxlbWVudC50ZXh0Q29udGVudCA9
IGxhYmVsOwogICAgICAgICB0aGlzLmZpbHRlckJhci5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRmlsdGVyICVzIikuZm9ybWF0KGxhYmVsKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNob3dUaW1lbGluZU92ZXJ2aWV3OiBmdW5jdGlvbigpCisgICAgc2hvd1RpbWVsaW5lT3Zl
cnZpZXcoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLnNl
bGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGlu
ZS5zZWxlY3RlZFRyZWVFbGVtZW50LmRlc2VsZWN0KCk7CiAKICAgICAgICAgdGhpcy5fZGlzcGxh
eWVkQ29udGVudFZpZXcuc2hvd092ZXJ2aWV3VGltZWxpbmVWaWV3KCk7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcodGhpcy5fZGlzcGxheWVkQ29u
dGVudFZpZXcpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd1RpbWVsaW5lVmlld0ZvclRpbWVs
aW5lOiBmdW5jdGlvbih0aW1lbGluZSkKKyAgICBzaG93VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUo
dGltZWxpbmUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZSBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSwgdGltZWxpbmUpOwogICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLmhhcyh0aW1lbGluZSksICJDYW5ub3Qg
c2hvdyB0aW1lbGluZSBiZWNhdXNlIGl0IGRvZXMgbm90IGJlbG9uZyB0byB0aGUgc2hvd24gcmVj
b3JkaW5nLiIsIHRpbWVsaW5lKTsKIAogICAgICAgICAvLyBEZWZlciBzaG93aW5nIHRoZSByZWxl
dmFudCB0aW1lbGluZSB0byB0aGUgb25zZWxlY3QgaGFuZGxlciBvZiB0aGUgdGltZWxpbmVzIHRy
ZWUgZWxlbWVudC4KLSAgICAgICAgY29uc3Qgd2FzU2VsZWN0ZWRCeVVzZXIgPSB0cnVlOwotICAg
ICAgICBjb25zdCBzaG91bGRTdXBwcmVzc09uU2VsZWN0ID0gZmFsc2U7CisgICAgICAgIHZhciB3
YXNTZWxlY3RlZEJ5VXNlciA9IHRydWU7CisgICAgICAgIHZhciBzaG91bGRTdXBwcmVzc09uU2Vs
ZWN0ID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAuZ2V0KHRp
bWVsaW5lKS5zZWxlY3QodHJ1ZSwgd2FzU2VsZWN0ZWRCeVVzZXIsIHNob3VsZFN1cHByZXNzT25T
ZWxlY3QsIHRydWUpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICB1
cGRhdGVGaWx0ZXI6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVGaWx0ZXIoKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnVwZGF0ZUZp
bHRlci5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3LmZp
bHRlckRpZENoYW5nZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgaGFzQ3VzdG9tRmlsdGVyczog
ZnVuY3Rpb24oKQorICAgIGhhc0N1c3RvbUZpbHRlcnMoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3Rv
bUZpbHRlcnM6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2Fp
bnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
ZGlzcGxheWVkQ29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAg
ICByZXR1cm4gdGhpcy5fZGlzcGxheWVkQ29udGVudFZpZXcubWF0Y2hUcmVlRWxlbWVudEFnYWlu
c3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhblNo
b3dEaWZmZXJlbnRDb250ZW50VmlldzogZnVuY3Rpb24oKQorICAgIGNhblNob3dEaWZmZXJlbnRD
b250ZW50VmlldygpCiAgICAgewogICAgICAgICByZXR1cm4gIXRoaXMucmVzdG9yaW5nU3RhdGUg
fHwgIXRoaXMuX3Jlc3RvcmVkU2hvd2luZ1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXc7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzYXZlU3RhdGVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQor
ICAgIHNhdmVTdGF0ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGNvb2tpZSk7CiAKQEAgLTMxNSw5ICsyOTAsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVT
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29va2llW1dlYkluc3BlY3Rv
ci5UaW1lbGluZVNpZGViYXJQYW5lbC5TZWxlY3RlZFRpbWVsaW5lVmlld0lkZW50aWZpZXJDb29r
aWVLZXldID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLk92ZXJ2aWV3VGltZWxp
bmVJZGVudGlmaWVyQ29va2llVmFsdWU7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNhdmVTdGF0ZVRvQ29va2llLmNhbGwodGhpcywgY29v
a2llKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc3RvcmVTdGF0ZUZyb21Db29raWU6IGZ1bmN0
aW9uKGNvb2tpZSwgcmVsYXhlZE1hdGNoRGVsYXkpCisgICAgcmVzdG9yZVN0YXRlRnJvbUNvb2tp
ZShjb29raWUsIHJlbGF4ZWRNYXRjaERlbGF5KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoY29va2llKTsKIApAQCAtMzQwLDExICszMTUsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBEb24ndCBjYWxsIE5hdmln
YXRpb25TaWRlYmFyUGFuZWwucmVzdG9yZVN0YXRlRnJvbUNvb2tpZSwgYmVjYXVzZSBpdCB0cmll
cyB0byBtYXRjaCBiYXNlZAogICAgICAgICAvLyBvbiB0eXBlIG9ubHkgYXMgYSBsYXN0IHJlc29y
dC4gVGhpcyB3b3VsZCBjYXVzZSB0aGUgZmlyc3QgcmVjb3JkaW5nIHRvIGJlIHJlc2VsZWN0ZWQg
b24gcmVsb2FkLgotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3JlY29y
ZGluZ3NUcmVlRWxlbWVudFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRC
eVVzZXIpCisgICAgX3JlY29yZGluZ3NUcmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBz
ZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyZWVFbGVtZW50
LnJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
aW5nKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXNlbGVjdGVkQnlVc2VyLCAiUmVjb3JkaW5n
IHRyZWUgZWxlbWVudHMgc2hvdWxkIGJlIGhpZGRlbiBhbmQgb25seSBwcm9ncmFtbWF0aWNhbGx5
IHNlbGVjdGFibGUuIik7CkBAIC0zNTQsMTYgKzMyOSwxNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAvLyBEZXNlbGVjdCBvciByZS1z
ZWxlY3QgdGhlIHRpbWVsaW5lIHRyZWUgZWxlbWVudCBmb3IgdGhlIHRpbWVsaW5lIHZpZXcgYmVp
bmcgZGlzcGxheWVkLgogICAgICAgICB2YXIgY3VycmVudFRpbWVsaW5lVmlldyA9IHRoaXMuX2Rp
c3BsYXllZENvbnRlbnRWaWV3LmN1cnJlbnRUaW1lbGluZVZpZXc7CiAgICAgICAgIGlmIChjdXJy
ZW50VGltZWxpbmVWaWV3ICYmIGN1cnJlbnRUaW1lbGluZVZpZXcucmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpIHsKLSAgICAgICAgICAgIGNvbnN0IHdh
c1NlbGVjdGVkQnlVc2VyID0gZmFsc2U7IC8vIFRoaXMgaXMgYSBzaW11bGF0ZWQgc2VsZWN0aW9u
LgotICAgICAgICAgICAgY29uc3Qgc2hvdWxkU3VwcHJlc3NPblNlbGVjdCA9IGZhbHNlOworICAg
ICAgICAgICAgdmFyIHdhc1NlbGVjdGVkQnlVc2VyID0gZmFsc2U7IC8vIFRoaXMgaXMgYSBzaW11
bGF0ZWQgc2VsZWN0aW9uLgorICAgICAgICAgICAgdmFyIHNob3VsZFN1cHByZXNzT25TZWxlY3Qg
PSBmYWxzZTsKICAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAuZ2V0KGN1
cnJlbnRUaW1lbGluZVZpZXcucmVwcmVzZW50ZWRPYmplY3QpLnNlbGVjdCh0cnVlLCB3YXNTZWxl
Y3RlZEJ5VXNlciwgc2hvdWxkU3VwcHJlc3NPblNlbGVjdCwgdHJ1ZSk7CiAgICAgICAgIH0gZWxz
ZSBpZiAodGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCkKICAg
ICAgICAgICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQu
ZGVzZWxlY3QoKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZUZpbHRlcigpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3RpbWVsaW5lc1RyZWVFbGVtZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVt
ZW50LCBzZWxlY3RlZEJ5VXNlcikKKyAgICBfdGltZWxpbmVzVHJlZUVsZW1lbnRTZWxlY3RlZCh0
cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLmdldCh0cmVlRWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdCkgPT09IHRyZWVFbGVtZW50LCB0cmVlRWxlbWVudCk7CiAKQEAgLTM3OSwyNyArMzU0
LDI3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgdGhpcy5fZGlzcGxheWVkQ29udGVudFZpZXcuc2hvd1RpbWVsaW5lVmlld0ZvclRp
bWVsaW5lKHRpbWVsaW5lKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNo
b3dDb250ZW50Vmlldyh0aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmlldyk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfY29udGVudEJyb3dzZXJDdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2U6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9jb250ZW50QnJvd3NlckN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5n
ZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBkaWRTaG93VGltZWxpbmVSZWNvcmRpbmdDb250
ZW50VmlldyA9IFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5jdXJyZW50Q29udGVudFZpZXcg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldzsKICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLlRpbWVsaW5l
U2lkZWJhclBhbmVsLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXdTaG93aW5nU3R5bGVDbGFz
cywgZGlkU2hvd1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2NhcHR1cmluZ1N0YXJ0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jYXB0dXJpbmdT
dGFydGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVjb3JkU3RhdHVzRWxlbWVudC50
ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjb3JkaW5nIik7CiAgICAgICAg
IHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1l
bGluZVNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGluZ1N0eWxlQ2xhc3MpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2NhcHR1cmluZ1N0b3BwZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9j
YXB0dXJpbmdTdG9wcGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVjb3JkU3RhdHVz
RWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwogICAgICAgICB0aGlzLl9yZWNvcmRHbHlwaEVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVj
b3JkR2x5cGhSZWNvcmRpbmdTdHlsZUNsYXNzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWNv
cmRpbmdDcmVhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVjb3JkaW5nQ3JlYXRlZChldmVu
dCkKICAgICB7CiAgICAgICAgIHZhciByZWNvcmRpbmcgPSBldmVudC5kYXRhLnJlY29yZGluZzsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQocmVjb3JkaW5nIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkaW5nLCByZWNvcmRpbmcpOwpAQCAtNDA5LDkgKzM4NCw5IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
X3JlY29yZGluZ3NUcmVlT3V0bGluZS5hcHBlbmRDaGlsZChyZWNvcmRpbmdUcmVlRWxlbWVudCk7
CiAKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nQ291bnRDaGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcmVjb3JkaW5nQ291bnRDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgX3JlY29yZGlu
Z0NvdW50Q2hhbmdlZCgpCiAgICAgewogICAgICAgICB2YXIgcHJldmlvdXNUcmVlRWxlbWVudCA9
IG51bGw7CiAgICAgICAgIGZvciAodmFyIHRyZWVFbGVtZW50IG9mIHRoaXMuX3JlY29yZGluZ1Ry
ZWVFbGVtZW50TWFwLnZhbHVlcygpKSB7CkBAIC00MjIsOSArMzk3LDkgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgcHJldmlv
dXNUcmVlRWxlbWVudCA9IHRyZWVFbGVtZW50OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfcmVjb3JkaW5nU2VsZWN0ZWQ6IGZ1bmN0aW9uKHJlY29yZGluZykKKyAgICBfcmVjb3Jk
aW5nU2VsZWN0ZWQocmVjb3JkaW5nKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVj
b3JkaW5nIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLCByZWNvcmRp
bmcpOwogCkBAIC00NDgsMTQgKzQyMywxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFy
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldyA9
IFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2Jq
ZWN0KHRoaXMuX2Rpc3BsYXllZFJlY29yZGluZyk7CiAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVk
KQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmll
dyh0aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmlldyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVj
b3JkaW5nTG9hZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVjb3JkaW5nTG9hZGVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nU2VsZWN0ZWQoV2ViSW5zcGVjdG9yLnRp
bWVsaW5lTWFuYWdlci5hY3RpdmVSZWNvcmRpbmcpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Rp
bWVsaW5lQWRkZWQ6IGZ1bmN0aW9uKHRpbWVsaW5lT3JFdmVudCkKKyAgICBfdGltZWxpbmVBZGRl
ZCh0aW1lbGluZU9yRXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdGltZWxpbmUgPSB0aW1lbGlu
ZU9yRXZlbnQ7CiAgICAgICAgIGlmICghKHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lKSkKQEAgLTQ2NSw3ICs0NDAsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdGlt
ZWxpbmVUcmVlRWxlbWVudE1hcC5oYXModGltZWxpbmUpLCB0aW1lbGluZSk7CiAKICAgICAgICAg
dmFyIHRpbWVsaW5lVHJlZUVsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxl
bWVudChbdGltZWxpbmUuaWNvbkNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJh
clBhbmVsLkxhcmdlSWNvblN0eWxlQ2xhc3NdLCB0aW1lbGluZS5kaXNwbGF5TmFtZSwgbnVsbCwg
dGltZWxpbmUpOwotICAgICAgICBjb25zdCB0b29sdGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJDbG9zZSAlcyB0aW1lbGluZSB2aWV3IikuZm9ybWF0KHRpbWVsaW5lLmRpc3BsYXlOYW1lKTsK
KyAgICAgICAgdmFyIHRvb2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNsb3NlICVzIHRp
bWVsaW5lIHZpZXciKS5mb3JtYXQodGltZWxpbmUuZGlzcGxheU5hbWUpOwogICAgICAgICB3cmFw
cGVkU1ZHRG9jdW1lbnQocGxhdGZvcm1JbWFnZVBhdGgoIkNsb3NlTGFyZ2Uuc3ZnIiksIFdlYklu
c3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5DbG9zZUJ1dHRvblN0eWxlQ2xhc3MsIHRvb2x0
aXAsIGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgICAgIHZhciBidXR0b24gPSBuZXcgV2Vi
SW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uKGVsZW1lbnQpOwogICAgICAgICAgICAg
YnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0
dG9uLkV2ZW50LkNsaWNrZWQsIHRoaXMuc2hvd1RpbWVsaW5lT3ZlcnZpZXcsIHRoaXMpOwpAQCAt
NDc1LDI0ICs0NTAsMjQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5zZXQodGltZWxp
bmUsIHRpbWVsaW5lVHJlZUVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3RpbWVsaW5lQ291bnRD
aGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVSZW1vdmVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfdGltZWxpbmVSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IHRpbWVsaW5lID0gZXZlbnQuZGF0YS50aW1lbGluZTsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUsIHRpbWVsaW5lKTsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5oYXModGlt
ZWxpbmUpLCB0aW1lbGluZSk7CiAKICAgICAgICAgdmFyIHRpbWVsaW5lVHJlZUVsZW1lbnQgPSB0
aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLnRha2UodGltZWxpbmUpOwotICAgICAgICBjb25z
dCBzaG91bGRTdXBwcmVzc09uRGVzZWxlY3QgPSBmYWxzZTsKLSAgICAgICAgY29uc3Qgc2hvdWxk
U3VwcHJlc3NTZWxlY3RTaWJsaW5nID0gdHJ1ZTsKKyAgICAgICAgdmFyIHNob3VsZFN1cHByZXNz
T25EZXNlbGVjdCA9IGZhbHNlOworICAgICAgICB2YXIgc2hvdWxkU3VwcHJlc3NTZWxlY3RTaWJs
aW5nID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUucmVtb3ZlQ2hp
bGQodGltZWxpbmVUcmVlRWxlbWVudCwgc2hvdWxkU3VwcHJlc3NPbkRlc2VsZWN0LCBzaG91bGRT
dXBwcmVzc1NlbGVjdFNpYmxpbmcpOwogICAgICAgICB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50
TWFwLmRlbGV0ZSh0aW1lbGluZSk7CiAKICAgICAgICAgdGhpcy5fdGltZWxpbmVDb3VudENoYW5n
ZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90aW1lbGluZUNvdW50Q2hhbmdlZDogZnVuY3Rp
b24oKQorICAgIF90aW1lbGluZUNvdW50Q2hhbmdlZCgpCiAgICAgewogICAgICAgICB2YXIgcHJl
dmlvdXNUcmVlRWxlbWVudCA9IG51bGw7CiAgICAgICAgIGZvciAodmFyIHRyZWVFbGVtZW50IG9m
IHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAudmFsdWVzKCkpIHsKQEAgLTUwNCwxNiArNDc5
LDE2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBwcmV2aW91c1RyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7CiAgICAgICAgIH0K
IAotICAgICAgICBjb25zdCB0aW1lbGluZUhlaWdodCA9IDM2OwotICAgICAgICBjb25zdCBldmVu
dFRpdGxlQmFyT2Zmc2V0ID0gNTE7Ci0gICAgICAgIGNvbnN0IGNvbnRlbnRFbGVtZW50T2Zmc2V0
ID0gNzQ7CisgICAgICAgIHZhciB0aW1lbGluZUhlaWdodCA9IDM2OworICAgICAgICB2YXIgZXZl
bnRUaXRsZUJhck9mZnNldCA9IDUxOworICAgICAgICB2YXIgY29udGVudEVsZW1lbnRPZmZzZXQg
PSA3NDsKICAgICAgICAgdmFyIHRpbWVsaW5lQ291bnQgPSB0aGlzLl9kaXNwbGF5ZWRSZWNvcmRp
bmcudGltZWxpbmVzLnNpemU7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lc0NvbnRlbnRDb250YWlu
ZXJFbGVtZW50LnN0eWxlLmhlaWdodCA9ICh0aW1lbGluZUhlaWdodCAqIHRpbWVsaW5lQ291bnQp
ICsgInB4IjsKICAgICAgICAgdGhpcy5fdGltZWxpbmVFdmVudHNUaXRsZUJhckVsZW1lbnQuc3R5
bGUudG9wID0gKHRpbWVsaW5lSGVpZ2h0ICogdGltZWxpbmVDb3VudCArIGV2ZW50VGl0bGVCYXJP
ZmZzZXQpICsgInB4IjsKICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5zdHlsZS50b3AgPSAo
dGltZWxpbmVIZWlnaHQgKiB0aW1lbGluZUNvdW50ICsgY29udGVudEVsZW1lbnRPZmZzZXQpICsg
InB4IjsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWNvcmRHbHlwaE1vdXNlZE92ZXI6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9yZWNvcmRHbHlwaE1vdXNlZE92ZXIoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9yZWNvcmRHbHlwaEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0
b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdGb3JjZWRTdHlsZUNs
YXNzKTsKIApAQCAtNTIxLDkgKzQ5Niw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50
LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdG9wIFJlY29yZGluZyIpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50LnRleHRD
b250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFydCBSZWNvcmRpbmciKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9yZWNvcmRHbHlwaE1vdXNlZE91dDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX3JlY29yZEdseXBoTW91c2VkT3V0KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVj
b3JkR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lk
ZWJhclBhbmVsLlJlY29yZEdseXBoUmVjb3JkaW5nRm9yY2VkU3R5bGVDbGFzcyk7CiAKQEAgLTUz
MSw5ICs1MDYsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3RhdHVzRWxlbWVudC50ZXh0Q29udGVudCA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjb3JkaW5nIik7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQudGV4dENvbnRlbnQgPSAiIjsKLSAgICB9
LAorICAgIH0KIAotICAgIF9yZWNvcmRHbHlwaENsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9yZWNvcmRHbHlwaENsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICAvLyBBZGQgZm9yY2Vk
IGNsYXNzIHRvIHByZXZlbnQgdGhlIGdseXBoIGZyb20gc2hvd2luZyBhIGNvbmZ1c2luZyBzdGF0
dXMgYWZ0ZXIgY2xpY2suCiAgICAgICAgIHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29y
ZGluZ0ZvcmNlZFN0eWxlQ2xhc3MpOwpAQCAtNTQ3LDE5ICs1MjIsMTkgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIC8vIFNob3cg
dGhlIHRpbWVsaW5lIHRvIHdoaWNoIGV2ZW50cyB3aWxsIGJlIGFwcGVuZGVkLgogICAgICAgICAg
ICAgdGhpcy5fcmVjb3JkaW5nTG9hZGVkKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG9ubHkgdXNlZCB3aGVuIFJlcGxheUFnZW50IGlzIGF2
YWlsYWJsZS4KIAotICAgIF91cGRhdGVSZXBsYXlJbnRlcmZhY2VWaXNpYmlsaXR5OiBmdW5jdGlv
bigpCisgICAgX3VwZGF0ZVJlcGxheUludGVyZmFjZVZpc2liaWxpdHkoKQogICAgIHsKICAgICAg
ICAgdmFyIHNob3VsZFNob3dSZXBsYXlJbnRlcmZhY2UgPSB3aW5kb3cuUmVwbGF5QWdlbnQgJiYg
V2ViSW5zcGVjdG9yLnNob3dSZXBsYXlJbnRlcmZhY2VTZXR0aW5nLnZhbHVlOwogCiAgICAgICAg
IHRoaXMuX3N0YXR1c0JhckVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuSGlkZGVuU3R5bGVDbGFzc05hbWUsIHNob3VsZFNob3dSZXBsYXlJ
bnRlcmZhY2UpOwogICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmVsZW1lbnQuY2xhc3NMaXN0
LnRvZ2dsZShXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuSGlkZGVuU3R5bGVDbGFz
c05hbWUsICFzaG91bGRTaG93UmVwbGF5SW50ZXJmYWNlKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9jb250ZXh0TWVudU5hdmlnYXRpb25CYXJPclN0YXR1c0JhcjogZnVuY3Rpb24oKQorICAgIF9j
b250ZXh0TWVudU5hdmlnYXRpb25CYXJPclN0YXR1c0JhcigpCiAgICAgewogICAgICAgICBpZiAo
IXdpbmRvdy5SZXBsYXlBZ2VudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU3NCw5ICs1NDks
OSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2hvdyBSZXBsYXkgQ29udHJvbHMiKSwgdG9nZ2xlUmVwbGF5SW50ZXJmYWNl
KTsKICAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
cGxheUNhcHR1cmVCdXR0b25DbGlja2VkOiBmdW5jdGlvbigpCisgICAgX3JlcGxheUNhcHR1cmVC
dXR0b25DbGlja2VkKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVwbGF5Q2FwdHVyZUJ1
dHRvbkl0ZW0uYWN0aXZhdGVkKSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFu
YWdlci5zdGFydENhcHR1cmluZygpOwpAQCAtNTkxLDM0ICs1NjYsNTcgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgdGhpcy5f
cmVwbGF5Q2FwdHVyZUJ1dHRvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcmVwbGF5UGF1c2VSZXN1bWVCdXR0b25DbGlja2VkOiBmdW5jdGlv
bigpCisgICAgX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9uQ2xpY2tlZCgpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fcmVwbGF5UGF1c2VSZXN1bWVCdXR0b25JdGVtLnRvZ2dsZWQpCiAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5wYXVzZVBsYXliYWNrKCk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnJlcGxheVRvQ29t
cGxldGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NhcHR1cmVTdGFydGVkOiBmdW5jdGlv
bigpCisgICAgX2NhcHR1cmVTdGFydGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlcGxheUNh
cHR1cmVCdXR0b25JdGVtLmVuYWJsZWQgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nh
cHR1cmVTdG9wcGVkOiBmdW5jdGlvbigpCisgICAgX2NhcHR1cmVTdG9wcGVkKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX3JlcGxheUNhcHR1cmVCdXR0b25JdGVtLmFjdGl2YXRlZCA9IGZhbHNlOwog
ICAgICAgICB0aGlzLl9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0uZW5hYmxlZCA9IHRydWU7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGxheWJhY2tTdGFydGVkOiBmdW5jdGlvbigpCisgICAg
X3BsYXliYWNrU3RhcnRlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9yZXBsYXlQYXVzZVJlc3Vt
ZUJ1dHRvbkl0ZW0udG9nZ2xlZCA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGxheWJh
Y2tQYXVzZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcGxheWJhY2tQYXVzZWQoKQogICAgIHsKICAgICAg
ICAgdGhpcy5fcmVwbGF5UGF1c2VSZXN1bWVCdXR0b25JdGVtLnRvZ2dsZWQgPSBmYWxzZTsKICAg
ICB9CiB9OworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuSGlkZGVuU3R5bGVD
bGFzc05hbWUgPSAiaGlkZGVuIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5T
dGF0dXNCYXJTdHlsZUNsYXNzID0gInN0YXR1cy1iYXIiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5l
U2lkZWJhclBhbmVsLlJlY29yZEdseXBoU3R5bGVDbGFzcyA9ICJyZWNvcmQtZ2x5cGgiOworV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJlY29yZEdseXBoUmVjb3JkaW5nU3R5bGVD
bGFzcyA9ICJyZWNvcmRpbmciOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJl
Y29yZEdseXBoUmVjb3JkaW5nRm9yY2VkU3R5bGVDbGFzcyA9ICJmb3JjZWQiOworV2ViSW5zcGVj
dG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJlY29yZFN0YXR1c1N0eWxlQ2xhc3MgPSAicmVjb3Jk
LXN0YXR1cyI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGl0bGVCYXJTdHls
ZUNsYXNzID0gInRpdGxlLWJhciI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwu
VGltZWxpbmVzVGl0bGVCYXJTdHlsZUNsYXNzID0gInRpbWVsaW5lcyI7CitXZWJJbnNwZWN0b3Iu
VGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVFdmVudHNUaXRsZUJhclN0eWxlQ2xhc3MgPSAi
dGltZWxpbmUtZXZlbnRzIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1l
bGluZXNDb250ZW50Q29udGFpbmVyU3R5bGVDbGFzcyA9ICJ0aW1lbGluZXMtY29udGVudCI7CitX
ZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuQ2xvc2VCdXR0b25TdHlsZUNsYXNzID0g
ImNsb3NlLWJ1dHRvbiI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuTGFyZ2VJ
Y29uU3R5bGVDbGFzcyA9ICJsYXJnZSI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFu
ZWwuU3RvcHdhdGNoSWNvblN0eWxlQ2xhc3MgPSAic3RvcHdhdGNoLWljb24iOworV2ViSW5zcGVj
dG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLk5ldHdvcmtJY29uU3R5bGVDbGFzcyA9ICJuZXR3b3Jr
LWljb24iOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkNvbG9yc0ljb25TdHls
ZUNsYXNzID0gImNvbG9ycy1pY29uIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5l
bC5TY3JpcHRJY29uU3R5bGVDbGFzcyA9ICJzY3JpcHQtaWNvbiI7CitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuUnVuTG9vcEljb25TdHlsZUNsYXNzID0gInJ1bmxvb3AtaWNvbiI7
CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVSZWNvcmRpbmdDb250
ZW50Vmlld1Nob3dpbmdTdHlsZUNsYXNzID0gInRpbWVsaW5lLXJlY29yZGluZy1jb250ZW50LXZp
ZXctc2hvd2luZyI7CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5TaG93aW5n
VGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlld0Nvb2tpZUtleSA9ICJ0aW1lbGluZS1zaWRlYmFy
LXBhbmVsLXNob3dpbmctdGltZWxpbmUtcmVjb3JkaW5nLWNvbnRlbnQtdmlldyI7CitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuU2VsZWN0ZWRUaW1lbGluZVZpZXdJZGVudGlmaWVy
Q29va2llS2V5ID0gInRpbWVsaW5lLXNpZGViYXItcGFuZWwtc2VsZWN0ZWQtdGltZWxpbmUtdmll
dy1pZGVudGlmaWVyIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5PdmVydmll
d1RpbWVsaW5lSWRlbnRpZmllckNvb2tpZVZhbHVlID0gIm92ZXJ2aWV3IjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmll
dy5qcwppbmRleCBlN2RiY2FlLi5jNDdhY2FiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1IFVuaXZlcnNpdHkgb2YgV2FzaGlu
Z3Rvbi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDQwICsyNCwzNiBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcg
PSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcg
PSBjbGFzcyBUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIHsK
LSAgICAvLyBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LiBD
cmVhdGUgYSBjb25jcmV0ZSBzdWJjbGFzcyBpbnN0ZWFkLgotICAgIGNvbnNvbGUuYXNzZXJ0KHRo
aXMuY29uc3RydWN0b3IgIT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcgJiYgdGhpcyBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcpOwotCi0gICAgV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOwotCi0gICAgdGhpcy5fY29u
dGVudFRyZWVPdXRsaW5lID0gV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVsLmNyZWF0
ZUNvbnRlbnRUcmVlT3V0bGluZSgpOwotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUpOworICAgIGNvbnN0cnVjdG9y
KHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmpl
Y3QpOwogCi0gICAgdGhpcy5femVyb1RpbWUgPSAwOwotICAgIHRoaXMuX3N0YXJ0VGltZSA9IDA7
Ci0gICAgdGhpcy5fZW5kVGltZSA9IDU7Ci0gICAgdGhpcy5fY3VycmVudFRpbWUgPSAwOwotfTsK
KyAgICAgICAgLy8gVGhpcyBjbGFzcyBzaG91bGQgbm90IGJlIGluc3RhbnRpYXRlZCBkaXJlY3Rs
eS4gQ3JlYXRlIGEgY29uY3JldGUgc3ViY2xhc3MgaW5zdGVhZC4KKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5jb25zdHJ1Y3RvciAhPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldyAmJiB0
aGlzIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldyk7CiAKLVdlYkluc3BlY3Rv
ci5UaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUgPSAidGltZWxpbmUtdmlldyI7CisgICAgICAg
IHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZSA9IFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQ
YW5lbC5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUoKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoInRpbWVsaW5lLXZpZXciKTsKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmll
dy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZVZp
ZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLAor
ICAgICAgICB0aGlzLl96ZXJvVGltZSA9IDA7CisgICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IDA7
CisgICAgICAgIHRoaXMuX2VuZFRpbWUgPSA1OworICAgICAgICB0aGlzLl9jdXJyZW50VGltZSA9
IDA7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmF2aWdhdGlvblNpZGViYXJU
cmVlT3V0bGluZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFRyZWVPdXRs
aW5lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxp
bmVMYWJlbCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWItY2xhc3NlcyBp
ZiBuZWVkZWQuCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CkBAIC02NywxMiArNjMsMTIgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBwYXRoQ29t
cG9uZW50ID0gbmV3IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50
KHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KTsKICAgICAgICAg
cGF0aENvbXBvbmVudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQ
YXRoQ29tcG9uZW50LkV2ZW50LlNpYmxpbmdXYXNTZWxlY3RlZCwgdGhpcy50cmVlRWxlbWVudFBh
dGhDb21wb25lbnRTZWxlY3RlZCwgdGhpcyk7CiAgICAgICAgIHJldHVybiBbcGF0aENvbXBvbmVu
dF07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgemVyb1RpbWUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3plcm9UaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHplcm9UaW1l
KHgpCiAgICAgewpAQCAtODIsMTIgKzc4LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl96ZXJvVGltZSA9IHggfHwgMDsKIAogICAgICAg
ICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3RhcnRUaW1l
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBzZXQgc3RhcnRUaW1lKHgpCiAgICAgewpAQCAtOTcsMTIgKzkzLDEyIEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zdGFydFRp
bWUgPSB4IHx8IDA7CiAKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGVuZFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuZFRp
bWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZW5kVGltZSh4KQogICAgIHsKQEAgLTExMiwx
MiArMTA4LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9lbmRUaW1lID0geCB8fCAwOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQo
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjdXJyZW50VGltZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY3Vy
cmVudFRpbWUoeCkKICAgICB7CkBAIC0xMzEsMzIgKzEyNywzMiBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rpb24gY2hlY2tJZkxheW91dElz
TmVlZGVkKGN1cnJlbnRUaW1lKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBJbmNsdWRlIHNv
bWUgd2lnZ2xlIHJvb20gc2luY2UgdGhlIGN1cnJlbnQgdGltZSBtYXJrZXJzIGNhbiBiZSBjbGlw
cGVkIG9mZiB0aGUgZW5kcyBhIGJpdCBhbmQgc3RpbGwgcGFydGlhbGx5IHZpc2libGUuCi0gICAg
ICAgICAgICBjb25zdCB3aWdnbGVUaW1lID0gMC4wNTsgLy8gNTBtcworICAgICAgICAgICAgdmFy
IHdpZ2dsZVRpbWUgPSAwLjA1OyAvLyA1MG1zCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3Rh
cnRUaW1lIC0gd2lnZ2xlVGltZSA8PSBjdXJyZW50VGltZSAmJiBjdXJyZW50VGltZSA8PSB0aGlz
Ll9lbmRUaW1lICsgd2lnZ2xlVGltZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjaGVja0lm
TGF5b3V0SXNOZWVkZWQuY2FsbCh0aGlzLCBvbGRDdXJyZW50VGltZSkgfHwgY2hlY2tJZkxheW91
dElzTmVlZGVkLmNhbGwodGhpcywgdGhpcy5fY3VycmVudFRpbWUpKQogICAgICAgICAgICAgdGhp
cy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkK
KyAgICByZXNldCgpCiAgICAgewogICAgICAgICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUucmVt
b3ZlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAogCi0gICAgZmlsdGVyRGlkQ2hhbmdlOiBm
dW5jdGlvbigpCisgICAgZmlsdGVyRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxl
bWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlmIG5lZWRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIG1h
dGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVyczogZnVuY3Rpb24odHJlZUVsZW1lbnQp
CisgICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVtZW50KQog
ICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViLWNsYXNzZXMgaWYgbmVlZGVkLgog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDog
ZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
c2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2VsQW5p
bWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CkBAIC0x
NjQsMjggKzE2MCwyOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfQogCiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlmIG5l
ZWRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dElmTmVlZGVkOiBmdW5jdGlv
bigpCisgICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgZmlsdGVy
VXBkYXRlZDogZnVuY3Rpb24oKQorICAgIGZpbHRlclVwZGF0ZWQoKQogICAgIHsKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2
ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFByb3RlY3RlZAogCi0gICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIHRyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVkKGV2
ZW50KQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViLWNsYXNzZXMgaWYgbmVl
ZGVkLgotICAgIH0sCisgICAgfQogCi0gICAgbmVlZHNMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICBu
ZWVkc0xheW91dCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKICAgICAgICAg
ICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMK
aW5kZXggZmQ0NGE2ZS4uNjk4YmFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9nZ2xlQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDMyICsyMywzMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Ub2dnbGVCdXR0b25OYXZpZ2F0aW9uSXRl
bSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhbHRlcm5hdGVUb29sVGlw
LCBkZWZhdWx0SW1hZ2UsIGFsdGVybmF0ZUltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwg
c3VwcHJlc3NFbWJvc3MpIHsKLSAgICBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
Y2FsbCh0aGlzLCBpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgZGVmYXVsdEltYWdlLCBpbWFn
ZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MpOwotCi0gICAgdGhpcy5fdG9nZ2xl
ZCA9IGZhbHNlOwotICAgIHRoaXMuX2RlZmF1bHRJbWFnZSA9IGRlZmF1bHRJbWFnZTsKLSAgICB0
aGlzLl9hbHRlcm5hdGVJbWFnZSA9IGFsdGVybmF0ZUltYWdlOwotICAgIHRoaXMuX2RlZmF1bHRU
b29sVGlwID0gZGVmYXVsdFRvb2xUaXA7Ci0gICAgdGhpcy5fYWx0ZXJuYXRlVG9vbFRpcCA9IGFs
dGVybmF0ZVRvb2xUaXAgfHwgZGVmYXVsdFRvb2xUaXA7Ci19OwotCi1XZWJJbnNwZWN0b3IuVG9n
Z2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUgPSAidG9nZ2xlIjsKK1dlYklu
c3BlY3Rvci5Ub2dnbGVCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIFRvZ2dsZUJ1dHRvbk5h
dmlnYXRpb25JdGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtCit7
CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAsIGFsdGVybmF0ZVRv
b2xUaXAsIGRlZmF1bHRJbWFnZSwgYWx0ZXJuYXRlSW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVp
Z2h0LCBzdXBwcmVzc0VtYm9zcykKKyAgICB7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIsIGRl
ZmF1bHRUb29sVGlwLCBkZWZhdWx0SW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBw
cmVzc0VtYm9zcyk7CiAKLVdlYkluc3BlY3Rvci5Ub2dnbGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Ub2dnbGVCdXR0b25O
YXZpZ2F0aW9uSXRlbSwKKyAgICAgICAgdGhpcy5fdG9nZ2xlZCA9IGZhbHNlOworICAgICAgICB0
aGlzLl9kZWZhdWx0SW1hZ2UgPSBkZWZhdWx0SW1hZ2U7CisgICAgICAgIHRoaXMuX2FsdGVybmF0
ZUltYWdlID0gYWx0ZXJuYXRlSW1hZ2U7CisgICAgICAgIHRoaXMuX2RlZmF1bHRUb29sVGlwID0g
ZGVmYXVsdFRvb2xUaXA7CisgICAgICAgIHRoaXMuX2FsdGVybmF0ZVRvb2xUaXAgPSBhbHRlcm5h
dGVUb29sVGlwIHx8IGRlZmF1bHRUb29sVGlwOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAg
ICAgZ2V0IGRlZmF1bHRUb29sVGlwKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWZh
dWx0VG9vbFRpcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBhbHRlcm5hdGVUb29sVGlwKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9hbHRlcm5hdGVUb29sVGlwOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IGFsdGVybmF0ZVRvb2xUaXAodG9vbFRpcCkKICAgICB7CkBAIC01Niwx
NyArNTQsMTcgQEAgV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5fdG9nZ2xlZCkKICAgICAgICAgICAgIHRoaXMu
dG9vbFRpcCA9IHRoaXMuX2FsdGVybmF0ZVRvb2xUaXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgZGVmYXVsdEltYWdlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWZhdWx0SW1h
Z2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYWx0ZXJuYXRlSW1hZ2UoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2FsdGVybmF0ZUltYWdlOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IGFsdGVybmF0ZUltYWdlKGltYWdlKQogICAgIHsKQEAgLTc0LDEyICs3MiwxMiBAQCBXZWJJ
bnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGlmICh0aGlzLl90b2dnbGVkKQogICAgICAgICAgICAgdGhpcy5pbWFnZSA9IHRoaXMuX2Fs
dGVybmF0ZUltYWdlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRvZ2dsZWQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3RvZ2dsZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
dG9nZ2xlZChmbGFnKQogICAgIHsKQEAgLTk3LDE2ICs5NSwyMCBAQCBXZWJJbnNwZWN0b3IuVG9n
Z2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy50
b29sVGlwID0gdGhpcy5fZGVmYXVsdFRvb2xUaXA7CiAgICAgICAgICAgICB0aGlzLmltYWdlID0g
dGhpcy5fZGVmYXVsdEltYWdlOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICAvLyBQ
cml2YXRlCisgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBfYWRkaXRpb25hbENsYXNzTmFtZXM6IFtX
ZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUsIFdl
Ykluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZV0sCisgICAgZ2V0
IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdXBlci5hZGRp
dGlvbmFsQ2xhc3NOYW1lcy51bnNoaWZ0KCJ0b2dnbGUiKTsKKyAgICB9CiAKLSAgICAvLyBUaGUg
aW1hZ2UgaXNuJ3QgY2FjaGVhYmxlIGJlY2F1c2UgaXQgZHluYW1pY2FsbHkgY2hhbmdlcyBhbmQg
dGhlIHNhbWUgY2FudmFzIGlkZW50aWZpZXIgaXMgcmV1c2VkLgotICAgIC8vIEZJWE1FOiBXZSBj
b3VsZCB0cnkgb3ZlcnJpZGluZyBfY2FudmFzSWRlbnRpZmllcigpIHRvIHJldHVybiBkaWZmZXJl
bnQgaWRlbnRpZmllcnMuIElmIHdlIGRpZCB0aGF0Ci0gICAgLy8gd2Ugd291bGQgYWxzbyBuZWVk
IHRvIG92ZXJyaWRlIGdlbmVyYXRlU3R5bGVUZXh0KCkgdG8gdXNlIHRoZSBkaWZmZXJlbnQgaWRl
bnRpZmllcnMuCi0gICAgX2ltYWdlQ2FjaGVhYmxlOiBmYWxzZQorICAgIGdldCBpbWFnZUNhY2hl
YWJsZSgpCisgICAgeworICAgICAgICAvLyBUaGUgaW1hZ2UgaXNuJ3QgY2FjaGVhYmxlIGJlY2F1
c2UgaXQgZHluYW1pY2FsbHkgY2hhbmdlcyBhbmQgdGhlIHNhbWUgY2FudmFzIGlkZW50aWZpZXIg
aXMgcmV1c2VkLgorICAgICAgICAvLyBGSVhNRTogV2UgY291bGQgdHJ5IG92ZXJyaWRpbmcgX2Nh
bnZhc0lkZW50aWZpZXIoKSB0byByZXR1cm4gZGlmZmVyZW50IGlkZW50aWZpZXJzLiBJZiB3ZSBk
aWQgdGhhdAorICAgICAgICAvLyB3ZSB3b3VsZCBhbHNvIG5lZWQgdG8gb3ZlcnJpZGUgZ2VuZXJh
dGVTdHlsZVRleHQoKSB0byB1c2UgdGhlIGRpZmZlcmVudCBpZGVudGlmaWVycy4KKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5Ub2dnbGVCdXR0b25OYXZp
Z2F0aW9uSXRlbS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmln
YXRpb25JdGVtLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RvZ2dsZUNvbnRyb2xUb29sYmFySXRlbS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RvZ2dsZUNvbnRyb2xUb29sYmFySXRl
bS5qcwppbmRleCBiOWEzYmRiLi43YTY4ZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub2dnbGVDb250cm9sVG9vbGJhckl0ZW0uanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9nZ2xlQ29udHJv
bFRvb2xiYXJJdGVtLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywxOCArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVG9nZ2xlQ29udHJvbFRvb2xiYXJJdGVt
ID0gZnVuY3Rpb24oaWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAsIGFsdGVybmF0ZVRvb2xUaXAs
IGRlZmF1bHRJbWFnZSwgYWx0ZXJuYXRlSW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KSB7
Ci0gICAgV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmNhbGwodGhpcywg
aWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAsIGFsdGVybmF0ZVRvb2xUaXAsIGRlZmF1bHRJbWFn
ZSwgYWx0ZXJuYXRlSW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBmYWxzZSk7Ci19Owot
Ci1XZWJJbnNwZWN0b3IuVG9nZ2xlQ29udHJvbFRvb2xiYXJJdGVtLlN0eWxlQ2xhc3NOYW1lID0g
InRvZ2dsZSI7CitXZWJJbnNwZWN0b3IuVG9nZ2xlQ29udHJvbFRvb2xiYXJJdGVtID0gY2xhc3Mg
VG9nZ2xlQ29udHJvbFRvb2xiYXJJdGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRv
bk5hdmlnYXRpb25JdGVtCit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgZGVmYXVsdFRv
b2xUaXAsIGFsdGVybmF0ZVRvb2xUaXAsIGRlZmF1bHRJbWFnZSwgYWx0ZXJuYXRlSW1hZ2UsIGlt
YWdlV2lkdGgsIGltYWdlSGVpZ2h0KQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciwg
ZGVmYXVsdFRvb2xUaXAsIGFsdGVybmF0ZVRvb2xUaXAsIGRlZmF1bHRJbWFnZSwgYWx0ZXJuYXRl
SW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBmYWxzZSk7CisgICAgfQogCi1XZWJJbnNw
ZWN0b3IuVG9nZ2xlQ29udHJvbFRvb2xiYXJJdGVtLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLlRvZ2dsZUNvbnRyb2xUb29sYmFySXRlbSwKKyAgICAvLyBQcm90
ZWN0ZWQKIAotICAgIC8vIFByaXZhdGUKLQotICAgIF9hZGRpdGlvbmFsQ2xhc3NOYW1lczogW1dl
Ykluc3BlY3Rvci5Ub2dnbGVDb250cm9sVG9vbGJhckl0ZW0uU3R5bGVDbGFzc05hbWUsIFdlYklu
c3BlY3Rvci5Db250cm9sVG9vbGJhckl0ZW0uU3R5bGVDbGFzc05hbWVdCisgICAgZ2V0IGFkZGl0
aW9uYWxDbGFzc05hbWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBbInRvZ2dsZSIsICJjb250
cm9sIl07CisgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlRvZ2dsZUNvbnRyb2xUb29sYmFySXRl
bS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRp
b25JdGVtLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzCmluZGV4IGU2ZmU3MGEuLjY0NzE0ZTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsNzcgKzIzLDQyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBmdW5jdGlvbihlbGVtZW50LCBuYXZpZ2F0aW9u
SXRlbXMpIHsKLSAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5jYWxsKHRoaXMsIGVsZW1l
bnQsIG5hdmlnYXRpb25JdGVtcywgInRvb2xiYXIiKTsKLQotICAgIHRoaXMuZGlzcGxheU1vZGUg
PSBXZWJJbnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5kTGFiZWxWZXJ0aWNhbDsK
LSAgICB0aGlzLnNpemVNb2RlID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2l6ZU1vZGUuTm9ybWFs
OwotCi0gICAgdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9
IFdlYkluc3BlY3Rvci5Ub29sYmFyLkNvbnRyb2xTZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAg
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1lbnQpOwot
Ci0gICAgdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3Bl
Y3Rvci5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0
b3IuVG9vbGJhci5MZWZ0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9sZWZ0
U2VjdGlvbkVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgInRhYmxpc3QiKTsKLSAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCk7Ci0KLSAgICB0
aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgIHRoaXMuX2NlbnRlclNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rv
ci5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3Iu
VG9vbGJhci5DZW50ZXJJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQpOwotCi0gICAgdGhpcy5f
cmlnaHRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
IHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xi
YXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFy
LlJpZ2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9yaWdodFNlY3Rpb25F
bGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsICJ0YWJsaXN0Iik7Ci0gICAgdGhpcy5fZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50KTsKLQotICAgIHRoaXMuX2Vs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5kbGVDb250ZXh0
TWVudUV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKLX07CitXZWJJbnNwZWN0b3IuVG9vbGJhciA9
IGNsYXNzIFRvb2xiYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcgoreworICAg
IGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcykKKyAgICB7CisgICAgICAgIHN1
cGVyKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcywgInRvb2xiYXIiKTsKIAotLy8gRklYTUU6IE1v
dmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRo
aXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9u
cyhXZWJJbnNwZWN0b3IuVG9vbGJhcik7CisgICAgICAgIHRoaXMuZGlzcGxheU1vZGUgPSBXZWJJ
bnNwZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZS5JY29uQW5kTGFiZWxWZXJ0aWNhbDsKKyAgICAg
ICAgdGhpcy5zaXplTW9kZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLlNpemVNb2RlLk5vcm1hbDsK
IAotV2ViSW5zcGVjdG9yLlRvb2xiYXIuU3R5bGVDbGFzc05hbWUgPSAidG9vbGJhciI7Ci1XZWJJ
bnNwZWN0b3IuVG9vbGJhci5Db250cm9sU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gImNvbnRyb2wt
c2VjdGlvbiI7Ci1XZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1l
ID0gIml0ZW0tc2VjdGlvbiI7Ci1XZWJJbnNwZWN0b3IuVG9vbGJhci5MZWZ0SXRlbVNlY3Rpb25T
dHlsZUNsYXNzTmFtZSA9ICJsZWZ0IjsKLVdlYkluc3BlY3Rvci5Ub29sYmFyLkNlbnRlckl0ZW1T
ZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiY2VudGVyIjsKLVdlYkluc3BlY3Rvci5Ub29sYmFyLlJp
Z2h0SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJyaWdodCI7Ci1XZWJJbnNwZWN0b3IuVG9v
bGJhci5Ub3RhbFNlY3Rpb25NYXJnaW5zID0gMTIgKiAzOwotCi1XZWJJbnNwZWN0b3IuVG9vbGJh
ci5FdmVudCA9IHsKLSAgICBEaXNwbGF5TW9kZURpZENoYW5nZTogInRvb2xiYXItZGlzcGxheS1t
b2RlLWRpZC1jaGFuZ2UiLAotICAgIFNpemVNb2RlRGlkQ2hhbmdlOiAidG9vbGJhci1zaXplLW1v
ZGUtZGlkLWNoYW5nZSIKLX07CisgICAgICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9jb250cm9sU2Vj
dGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ29udHJvbFNlY3Rp
b25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9jb250cm9sU2VjdGlvbkVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuVG9vbGJhci5TZWN0aW9u
ID0gewotICAgIENvbnRyb2w6ICJjb250cm9sIiwKLSAgICBMZWZ0OiAibGVmdCIsCi0gICAgQ2Vu
dGVyOiAiY2VudGVyIiwKLSAgICBSaWdodDogInJpZ2h0IgotfTsKKyAgICAgICAgdGhpcy5fbGVm
dFNlY3Rpb25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAg
IHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJh
ci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIu
TGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2xlZnRTZWN0aW9u
RWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAidGFibGlzdCIpOworICAgICAgICB0aGlzLl9l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCk7CiAKLVdlYkluc3Bl
Y3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlID0gewotICAgIEljb25BbmRMYWJlbFZlcnRpY2FsOiAi
aWNvbi1hbmQtbGFiZWwtdmVydGljYWwiLAotICAgIEljb25BbmRMYWJlbEhvcml6b250YWw6ICJp
Y29uLWFuZC1sYWJlbC1ob3Jpem9udGFsIiwKLSAgICBJY29uT25seTogImljb24tb25seSIsCi0g
ICAgTGFiZWxPbmx5OiAibGFiZWwtb25seSIKLX07CisgICAgICAgIHRoaXMuX2NlbnRlclNlY3Rp
b25FbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMu
X2NlbnRlclNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkl0
ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJhci5DZW50
ZXJJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX2NlbnRlclNlY3Rpb25FbGVtZW50KTsKIAotV2ViSW5zcGVjdG9yLlRvb2xi
YXIuU2l6ZU1vZGUgPSB7Ci0gICAgTm9ybWFsOiAibm9ybWFsLXNpemUiLAotICAgIFNtYWxsOiAi
c21hbGwtc2l6ZSIKLX07CisgICAgICAgIHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fcmlnaHRTZWN0aW9uRWxl
bWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xh
c3NOYW1lICsgIiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuUmlnaHRJdGVtU2VjdGlvblN0eWxl
Q2xhc3NOYW1lOworICAgICAgICB0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50LnNldEF0dHJpYnV0
ZSgicm9sZSIsICJ0YWJsaXN0Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRvb2xiYXIsCisgICAgICAg
IHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9oYW5k
bGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCBkaXNwbGF5TW9kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fZGlzcGxheU1vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZGlzcGxheU1vZGUobW9k
ZSkKICAgICB7CkBAIC0xMTQsMTIgKzc5LDEyIEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKIAogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVG9vbGJhci5FdmVudC5EaXNwbGF5
TW9kZURpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2l6ZU1vZGUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NpemVNb2RlOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IHNpemVNb2RlKG1vZGUpCiAgICAgewpAQCAtMTM2LDkgKzEwMSw5IEBAIFdlYkluc3BlY3Rv
ci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKIAog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuVG9vbGJh
ci5FdmVudC5TaXplTW9kZURpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjdXN0b21V
cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICBjdXN0b21VcGRhdGVMYXlvdXQoKQogICAgIHsK
ICAgICAgICAgLy8gQmFpbCBlYXJseSBpZiBvdXIgc2VjdGlvbnMgYXJlIG5vdCBjcmVhdGVkIHll
dC4gVGhpcyBtZWFucyB3ZSBhcmUgYmVpbmcgY2FsbGVkIGR1cmluZyBjb25zdHJ1Y3Rpb24uCiAg
ICAgICAgIGlmICghdGhpcy5fbGVmdFNlY3Rpb25FbGVtZW50IHx8ICF0aGlzLl9jZW50ZXJTZWN0
aW9uRWxlbWVudCB8fCAhdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCkKQEAgLTE4NCw5ICsxNDks
OSBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGFkZFRvb2xiYXJJdGVtOiBmdW5jdGlvbih0b29sYmFySXRlbSwgc2VjdGlvbklkZW50aWZp
ZXIpCisgICAgYWRkVG9vbGJhckl0ZW0odG9vbGJhckl0ZW0sIHNlY3Rpb25JZGVudGlmaWVyKQog
ICAgIHsKICAgICAgICAgdmFyIHNlY3Rpb25FbGVtZW50OwogCkBAIC0yMTIsMTEgKzE3NywxMSBA
QCBXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHNlY3Rpb25FbGVtZW50KTsKIAogICAgICAgICB0aGlzLmFkZE5hdmlnYXRpb25JdGVtKHRv
b2xiYXJJdGVtLCBzZWN0aW9uRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2
YXRlCiAKLSAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2hhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY29udGV4
dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51KGV2ZW50KTsKIApAQCAtMjMxLDE3
ICsxOTYsNDcgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgY29udGV4dE1lbnUuc2hvdygpOwotICAgIH0sCisgICAgfQogCi0gICAgX2No
YW5nZURpc3BsYXlNb2RlOiBmdW5jdGlvbihkaXNwbGF5TW9kZSkKKyAgICBfY2hhbmdlRGlzcGxh
eU1vZGUoZGlzcGxheU1vZGUpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BsYXlNb2RlID0gZGlz
cGxheU1vZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlU21hbGxJY29uczogZnVuY3Rp
b24oKQorICAgIF90b2dnbGVTbWFsbEljb25zKCkKICAgICB7CiAgICAgICAgIHRoaXMuc2l6ZU1v
ZGUgPSB0aGlzLl9zaXplTW9kZSA9PT0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2l6ZU1vZGUuTm9y
bWFsID8gV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2l6ZU1vZGUuU21hbGwgOiBXZWJJbnNwZWN0b3Iu
VG9vbGJhci5TaXplTW9kZS5Ob3JtYWw7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlRvb2xi
YXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3Rv
dHlwZTsKK1dlYkluc3BlY3Rvci5Ub29sYmFyLlN0eWxlQ2xhc3NOYW1lID0gInRvb2xiYXIiOwor
V2ViSW5zcGVjdG9yLlRvb2xiYXIuQ29udHJvbFNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJjb250
cm9sLXNlY3Rpb24iOworV2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNz
TmFtZSA9ICJpdGVtLXNlY3Rpb24iOworV2ViSW5zcGVjdG9yLlRvb2xiYXIuTGVmdEl0ZW1TZWN0
aW9uU3R5bGVDbGFzc05hbWUgPSAibGVmdCI7CitXZWJJbnNwZWN0b3IuVG9vbGJhci5DZW50ZXJJ
dGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gImNlbnRlciI7CitXZWJJbnNwZWN0b3IuVG9vbGJh
ci5SaWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAicmlnaHQiOworV2ViSW5zcGVjdG9y
LlRvb2xiYXIuVG90YWxTZWN0aW9uTWFyZ2lucyA9IDEyICogMzsKKworV2ViSW5zcGVjdG9yLlRv
b2xiYXIuRXZlbnQgPSB7CisgICAgRGlzcGxheU1vZGVEaWRDaGFuZ2U6ICJ0b29sYmFyLWRpc3Bs
YXktbW9kZS1kaWQtY2hhbmdlIiwKKyAgICBTaXplTW9kZURpZENoYW5nZTogInRvb2xiYXItc2l6
ZS1tb2RlLWRpZC1jaGFuZ2UiCit9OworCitXZWJJbnNwZWN0b3IuVG9vbGJhci5TZWN0aW9uID0g
eworICAgIENvbnRyb2w6ICJjb250cm9sIiwKKyAgICBMZWZ0OiAibGVmdCIsCisgICAgQ2VudGVy
OiAiY2VudGVyIiwKKyAgICBSaWdodDogInJpZ2h0IgorfTsKKworV2ViSW5zcGVjdG9yLlRvb2xi
YXIuRGlzcGxheU1vZGUgPSB7CisgICAgSWNvbkFuZExhYmVsVmVydGljYWw6ICJpY29uLWFuZC1s
YWJlbC12ZXJ0aWNhbCIsCisgICAgSWNvbkFuZExhYmVsSG9yaXpvbnRhbDogImljb24tYW5kLWxh
YmVsLWhvcml6b250YWwiLAorICAgIEljb25Pbmx5OiAiaWNvbi1vbmx5IiwKKyAgICBMYWJlbE9u
bHk6ICJsYWJlbC1vbmx5IgorfTsKKworV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2l6ZU1vZGUgPSB7
CisgICAgTm9ybWFsOiAibm9ybWFsLXNpemUiLAorICAgIFNtYWxsOiAic21hbGwtc2l6ZSIKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
cmVlRWxlbWVudFN0YXR1c0J1dHRvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzCmluZGV4IDU2YzE0NGMuLjJl
ZTNhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVFbGVtZW50U3RhdHVzQnV0dG9uLmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0OCAr
MjMsNDAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24gPSBmdW5jdGlvbihlbGVtZW50KSB7Ci0g
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQoZWxlbWVudCk7Ci0KLSAgICB0aGlzLl9lbGVtZW50
ID0gZWxlbWVudDsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLlN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLl9lbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fY2xpY2tlZC5iaW5kKHRoaXMpKTsK
LX07Ci0KLVdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5TdHlsZUNsYXNzTmFt
ZSA9ICJzdGF0dXMtYnV0dG9uIjsKLVdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRv
bi5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2FibGVkIjsKK1dlYkluc3BlY3Rvci5UcmVl
RWxlbWVudFN0YXR1c0J1dHRvbiA9IGNsYXNzIFRyZWVFbGVtZW50U3RhdHVzQnV0dG9uIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQpCisgICAg
eworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0
b24uRXZlbnQgPSB7Ci0gICAgQ2xpY2tlZDogInN0YXR1cy1idXR0b24tY2xpY2tlZCIKLX07Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuVHJlZUVsZW1l
bnRTdGF0dXNCdXR0b24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24sCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVt
ZW50OworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0YXR1cy1idXR0b24i
KTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMu
X2NsaWNrZWQuYmluZCh0aGlzKSk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
ZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBoaWRkZW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuICF0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNC
dXR0b24uRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
aGlkZGVuKGZsYWcpCiAgICAgewogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dn
bGUoImhpZGRlbiIsIGZsYWcpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVuYWJsZWQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuICF0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhX
ZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uRGlzYWJsZWRTdHlsZUNsYXNzTmFt
ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZW5hYmxlZChmbGFnKQogICAgIHsKQEAgLTcy
LDExICs2NCwxMSBAQCBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24ucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYklu
c3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1l
KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jbGlja2VkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfY2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODcsNCArNzksOCBAQCBXZWJJbnNw
ZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24ucHJvdG90eXBlID0gewogICAgIH0KIH07CiAK
LVdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuVHJlZUVsZW1l
bnRTdGF0dXNCdXR0b24uRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSA9ICJkaXNhYmxlZCI7CisKK1dl
Ykluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5FdmVudCA9IHsKKyAgICBDbGlja2Vk
OiAic3RhdHVzLWJ1dHRvbi1jbGlja2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKaW5kZXggMjdjYjA1
OC4uN2MzNzEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVHJlZU91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmUuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDEzIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsMTg3ICsyNiwx
NDcgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotZnVuY3Rpb24gVHJlZU91dGxpbmUobGlzdE5vZGUp
CitXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUgPSBjbGFzcyBUcmVlT3V0bGluZSBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2Vi
SW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJ
bnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQgPSBsaXN0Tm9k
ZTsKLQotICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQgPSBudWxsOwotICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUgPSBsaXN0Tm9kZTsKLSAgICB0
aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgdGhpcy5fa25vd25U
cmVlRWxlbWVudHMgPSBbXTsKLSAgICB0aGlzLl90cmVlRWxlbWVudHNFeHBhbmRlZFN0YXRlID0g
W107Ci0gICAgdGhpcy5leHBhbmRUcmVlRWxlbWVudHNXaGVuQXJyb3dpbmcgPSBmYWxzZTsKLSAg
ICB0aGlzLmFsbG93c1JlcGVhdFNlbGVjdGlvbiA9IGZhbHNlOwotICAgIHRoaXMucm9vdCA9IHRy
dWU7Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNlOwotICAgIHRoaXMuZXhwYW5kZWQgPSB0
cnVlOwotICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKLSAgICB0aGlzLnRyZWVPdXRsaW5lID0g
dGhpczsKLQotICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUudGFiSW5kZXggPSAwOwotICAgIHRo
aXMuX2NoaWxkcmVuTGlzdE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX3Ry
ZWVLZXlEb3duLmJpbmQodGhpcyksIHRydWUpOwotfQotCi1UcmVlT3V0bGluZS5fa25vd25UcmVl
RWxlbWVudE5leHRJZGVudGlmaWVyID0gMTsKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciA9IFRyZWVPdXRsaW5lOwotCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuYXBwZW5kQ2hpbGQg
PSBmdW5jdGlvbihjaGlsZCkKLXsKLSAgICBpZiAoIWNoaWxkKQotICAgICAgICB0aHJvdyAiY2hp
bGQgY2FuJ3QgYmUgdW5kZWZpbmVkIG9yIG51bGwiOwotCi0gICAgdmFyIGxhc3RDaGlsZCA9IHRo
aXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXTsKLSAgICBpZiAobGFzdENoaWxk
KSB7Ci0gICAgICAgIGxhc3RDaGlsZC5uZXh0U2libGluZyA9IGNoaWxkOwotICAgICAgICBjaGls
ZC5wcmV2aW91c1NpYmxpbmcgPSBsYXN0Q2hpbGQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgY2hp
bGQucHJldmlvdXNTaWJsaW5nID0gbnVsbDsKLSAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcgPSBu
dWxsOwotICAgIH0KKyAgICBjb25zdHJ1Y3RvcihsaXN0Tm9kZSkKKyAgICB7CisgICAgICAgIHN1
cGVyKCk7CiAKLSAgICB2YXIgaXNGaXJzdENoaWxkID0gIXRoaXMuY2hpbGRyZW4ubGVuZ3RoOwor
ICAgICAgICB0aGlzLmVsZW1lbnQgPSBsaXN0Tm9kZTsKIAotICAgIHRoaXMuY2hpbGRyZW4ucHVz
aChjaGlsZCk7Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IHRydWU7Ci0gICAgY2hpbGQucGFyZW50
ID0gdGhpczsKLSAgICBjaGlsZC50cmVlT3V0bGluZSA9IHRoaXMudHJlZU91dGxpbmU7Ci0gICAg
Y2hpbGQudHJlZU91dGxpbmUuX3JlbWVtYmVyVHJlZUVsZW1lbnQoY2hpbGQpOworICAgICAgICB0
aGlzLmNoaWxkcmVuID0gW107CisgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IG51
bGw7CisgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUgPSBsaXN0Tm9kZTsKKyAgICAgICAg
dGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5yZW1vdmVDaGlsZHJlbigpOworICAgICAgICB0aGlzLl9r
bm93blRyZWVFbGVtZW50cyA9IFtdOworICAgICAgICB0aGlzLl90cmVlRWxlbWVudHNFeHBhbmRl
ZFN0YXRlID0gW107CisgICAgICAgIHRoaXMuZXhwYW5kVHJlZUVsZW1lbnRzV2hlbkFycm93aW5n
ID0gZmFsc2U7CisgICAgICAgIHRoaXMuYWxsb3dzUmVwZWF0U2VsZWN0aW9uID0gZmFsc2U7Cisg
ICAgICAgIHRoaXMucm9vdCA9IHRydWU7CisgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5leHBhbmRlZCA9IHRydWU7CisgICAgICAgIHRoaXMuc2VsZWN0ZWQg
PSBmYWxzZTsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZSA9IHRoaXM7CiAKLSAgICB2YXIgY3Vy
cmVudCA9IGNoaWxkLmNoaWxkcmVuWzBdOwotICAgIHdoaWxlIChjdXJyZW50KSB7Ci0gICAgICAg
IGN1cnJlbnQudHJlZU91dGxpbmUgPSB0aGlzLnRyZWVPdXRsaW5lOwotICAgICAgICBjdXJyZW50
LnRyZWVPdXRsaW5lLl9yZW1lbWJlclRyZWVFbGVtZW50KGN1cnJlbnQpOwotICAgICAgICBjdXJy
ZW50ID0gY3VycmVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxzZSwgY2hpbGQsIHRydWUp
OworICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnRhYkluZGV4ID0gMDsKKyAgICAgICAg
dGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5f
dHJlZUtleURvd24uYmluZCh0aGlzKSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgaWYgKGNoaWxkLmhh
c0NoaWxkcmVuICYmIGNoaWxkLnRyZWVPdXRsaW5lLl90cmVlRWxlbWVudHNFeHBhbmRlZFN0YXRl
W2NoaWxkLmlkZW50aWZpZXJdICE9PSB1bmRlZmluZWQpCi0gICAgICAgIGNoaWxkLmV4cGFuZGVk
ID0gY2hpbGQudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0V4cGFuZGVkU3RhdGVbY2hpbGQuaWRl
bnRpZmllcl07Ci0KLSAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKLSAgICAgICAgY2hp
bGQuX2F0dGFjaCgpOwotCi0gICAgaWYgKHRoaXMudHJlZU91dGxpbmUub25hZGQpCi0gICAgICAg
IHRoaXMudHJlZU91dGxpbmUub25hZGQoY2hpbGQpOworICAgIC8vIE1ldGhvZHMKIAotICAgIGlm
IChpc0ZpcnN0Q2hpbGQgJiYgdGhpcy5leHBhbmRlZCkKLSAgICAgICAgdGhpcy5leHBhbmQoKTsK
LX07CisgICAgYXBwZW5kQ2hpbGQoY2hpbGQpCisgICAgeworICAgICAgICBpZiAoIWNoaWxkKQor
ICAgICAgICAgICAgdGhyb3cgImNoaWxkIGNhbid0IGJlIHVuZGVmaW5lZCBvciBudWxsIjsKIAot
VHJlZU91dGxpbmUucHJvdG90eXBlLmluc2VydENoaWxkID0gZnVuY3Rpb24oY2hpbGQsIGluZGV4
KQotewotICAgIGlmICghY2hpbGQpCi0gICAgICAgIHRocm93ICJjaGlsZCBjYW4ndCBiZSB1bmRl
ZmluZWQgb3IgbnVsbCI7Ci0KLSAgICB2YXIgcHJldmlvdXNDaGlsZCA9IChpbmRleCA+IDAgPyB0
aGlzLmNoaWxkcmVuW2luZGV4IC0gMV0gOiBudWxsKTsKLSAgICBpZiAocHJldmlvdXNDaGlsZCkg
ewotICAgICAgICBwcmV2aW91c0NoaWxkLm5leHRTaWJsaW5nID0gY2hpbGQ7Ci0gICAgICAgIGNo
aWxkLnByZXZpb3VzU2libGluZyA9IHByZXZpb3VzQ2hpbGQ7Ci0gICAgfSBlbHNlIHsKLSAgICAg
ICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0gbnVsbDsKLSAgICB9CisgICAgICAgIHZhciBsYXN0
Q2hpbGQgPSB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV07CisgICAgICAg
IGlmIChsYXN0Q2hpbGQpIHsKKyAgICAgICAgICAgIGxhc3RDaGlsZC5uZXh0U2libGluZyA9IGNo
aWxkOworICAgICAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0gbGFzdENoaWxkOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0gbnVsbDsK
KyAgICAgICAgICAgIGNoaWxkLm5leHRTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgfQogCi0gICAg
dmFyIG5leHRDaGlsZCA9IHRoaXMuY2hpbGRyZW5baW5kZXhdOwotICAgIGlmIChuZXh0Q2hpbGQp
IHsKLSAgICAgICAgbmV4dENoaWxkLnByZXZpb3VzU2libGluZyA9IGNoaWxkOwotICAgICAgICBj
aGlsZC5uZXh0U2libGluZyA9IG5leHRDaGlsZDsKLSAgICB9IGVsc2UgewotICAgICAgICBjaGls
ZC5uZXh0U2libGluZyA9IG51bGw7Ci0gICAgfQorICAgICAgICB2YXIgaXNGaXJzdENoaWxkID0g
IXRoaXMuY2hpbGRyZW4ubGVuZ3RoOwogCi0gICAgdmFyIGlzRmlyc3RDaGlsZCA9ICF0aGlzLmNo
aWxkcmVuLmxlbmd0aDsKKyAgICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKGNoaWxkKTsKKyAgICAg
ICAgdGhpcy5oYXNDaGlsZHJlbiA9IHRydWU7CisgICAgICAgIGNoaWxkLnBhcmVudCA9IHRoaXM7
CisgICAgICAgIGNoaWxkLnRyZWVPdXRsaW5lID0gdGhpcy50cmVlT3V0bGluZTsKKyAgICAgICAg
Y2hpbGQudHJlZU91dGxpbmUuX3JlbWVtYmVyVHJlZUVsZW1lbnQoY2hpbGQpOwogCi0gICAgdGhp
cy5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDAsIGNoaWxkKTsKLSAgICB0aGlzLmhhc0NoaWxkcmVu
ID0gdHJ1ZTsKLSAgICBjaGlsZC5wYXJlbnQgPSB0aGlzOwotICAgIGNoaWxkLnRyZWVPdXRsaW5l
ID0gdGhpcy50cmVlT3V0bGluZTsKLSAgICBjaGlsZC50cmVlT3V0bGluZS5fcmVtZW1iZXJUcmVl
RWxlbWVudChjaGlsZCk7CisgICAgICAgIHZhciBjdXJyZW50ID0gY2hpbGQuY2hpbGRyZW5bMF07
CisgICAgICAgIHdoaWxlIChjdXJyZW50KSB7CisgICAgICAgICAgICBjdXJyZW50LnRyZWVPdXRs
aW5lID0gdGhpcy50cmVlT3V0bGluZTsKKyAgICAgICAgICAgIGN1cnJlbnQudHJlZU91dGxpbmUu
X3JlbWVtYmVyVHJlZUVsZW1lbnQoY3VycmVudCk7CisgICAgICAgICAgICBjdXJyZW50ID0gY3Vy
cmVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxzZSwgY2hpbGQsIHRydWUpOworICAgICAg
ICB9CiAKLSAgICB2YXIgY3VycmVudCA9IGNoaWxkLmNoaWxkcmVuWzBdOwotICAgIHdoaWxlIChj
dXJyZW50KSB7Ci0gICAgICAgIGN1cnJlbnQudHJlZU91dGxpbmUgPSB0aGlzLnRyZWVPdXRsaW5l
OwotICAgICAgICBjdXJyZW50LnRyZWVPdXRsaW5lLl9yZW1lbWJlclRyZWVFbGVtZW50KGN1cnJl
bnQpOwotICAgICAgICBjdXJyZW50ID0gY3VycmVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChm
YWxzZSwgY2hpbGQsIHRydWUpOwotICAgIH0KKyAgICAgICAgaWYgKGNoaWxkLmhhc0NoaWxkcmVu
ICYmIGNoaWxkLnRyZWVPdXRsaW5lLl90cmVlRWxlbWVudHNFeHBhbmRlZFN0YXRlW2NoaWxkLmlk
ZW50aWZpZXJdICE9PSB1bmRlZmluZWQpCisgICAgICAgICAgICBjaGlsZC5leHBhbmRlZCA9IGNo
aWxkLnRyZWVPdXRsaW5lLl90cmVlRWxlbWVudHNFeHBhbmRlZFN0YXRlW2NoaWxkLmlkZW50aWZp
ZXJdOwogCi0gICAgaWYgKGNoaWxkLmhhc0NoaWxkcmVuICYmIGNoaWxkLnRyZWVPdXRsaW5lLl90
cmVlRWxlbWVudHNFeHBhbmRlZFN0YXRlW2NoaWxkLmlkZW50aWZpZXJdICE9PSB1bmRlZmluZWQp
Ci0gICAgICAgIGNoaWxkLmV4cGFuZGVkID0gY2hpbGQudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50
c0V4cGFuZGVkU3RhdGVbY2hpbGQuaWRlbnRpZmllcl07CisgICAgICAgIGlmICh0aGlzLl9jaGls
ZHJlbkxpc3ROb2RlKQorICAgICAgICAgICAgY2hpbGQuX2F0dGFjaCgpOwogCi0gICAgaWYgKHRo
aXMuX2NoaWxkcmVuTGlzdE5vZGUpCi0gICAgICAgIGNoaWxkLl9hdHRhY2goKTsKKyAgICAgICAg
aWYgKHRoaXMudHJlZU91dGxpbmUub25hZGQpCisgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
Lm9uYWRkKGNoaWxkKTsKIAotICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLm9uYWRkKQotICAgICAg
ICB0aGlzLnRyZWVPdXRsaW5lLm9uYWRkKGNoaWxkKTsKKyAgICAgICAgaWYgKGlzRmlyc3RDaGls
ZCAmJiB0aGlzLmV4cGFuZGVkKQorICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKKyAgICB9CiAK
LSAgICBpZiAoaXNGaXJzdENoaWxkICYmIHRoaXMuZXhwYW5kZWQpCi0gICAgICAgIHRoaXMuZXhw
YW5kKCk7Ci19OworICAgIGluc2VydENoaWxkKGNoaWxkLCBpbmRleCkKKyAgICB7CisgICAgICAg
IGlmICghY2hpbGQpCisgICAgICAgICAgICB0aHJvdyAiY2hpbGQgY2FuJ3QgYmUgdW5kZWZpbmVk
IG9yIG51bGwiOwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRBdEluZGV4ID0g
ZnVuY3Rpb24oY2hpbGRJbmRleCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNp
YmxpbmcpCi17Ci0gICAgaWYgKGNoaWxkSW5kZXggPCAwIHx8IGNoaWxkSW5kZXggPj0gdGhpcy5j
aGlsZHJlbi5sZW5ndGgpCi0gICAgICAgIHRocm93ICJjaGlsZEluZGV4IG91dCBvZiByYW5nZSI7
Ci0KLSAgICB2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2NoaWxkSW5kZXhdOwotICAgIHRoaXMu
Y2hpbGRyZW4uc3BsaWNlKGNoaWxkSW5kZXgsIDEpOwotCi0gICAgdmFyIHBhcmVudCA9IGNoaWxk
LnBhcmVudDsKLSAgICBpZiAoY2hpbGQuZGVzZWxlY3Qoc3VwcHJlc3NPbkRlc2VsZWN0KSkgewot
ICAgICAgICBpZiAoY2hpbGQucHJldmlvdXNTaWJsaW5nICYmICFzdXBwcmVzc1NlbGVjdFNpYmxp
bmcpCi0gICAgICAgICAgICBjaGlsZC5wcmV2aW91c1NpYmxpbmcuc2VsZWN0KHRydWUsIGZhbHNl
KTsKLSAgICAgICAgZWxzZSBpZiAoY2hpbGQubmV4dFNpYmxpbmcgJiYgIXN1cHByZXNzU2VsZWN0
U2libGluZykKLSAgICAgICAgICAgIGNoaWxkLm5leHRTaWJsaW5nLnNlbGVjdCh0cnVlLCBmYWxz
ZSk7Ci0gICAgICAgIGVsc2UgaWYgKCFzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCi0gICAgICAgICAg
ICBwYXJlbnQuc2VsZWN0KHRydWUsIGZhbHNlKTsKLSAgICB9CisgICAgICAgIHZhciBwcmV2aW91
c0NoaWxkID0gKGluZGV4ID4gMCA/IHRoaXMuY2hpbGRyZW5baW5kZXggLSAxXSA6IG51bGwpOwor
ICAgICAgICBpZiAocHJldmlvdXNDaGlsZCkgeworICAgICAgICAgICAgcHJldmlvdXNDaGlsZC5u
ZXh0U2libGluZyA9IGNoaWxkOworICAgICAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0g
cHJldmlvdXNDaGlsZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNoaWxkLnByZXZp
b3VzU2libGluZyA9IG51bGw7CisgICAgICAgIH0KIAotICAgIGlmIChjaGlsZC5wcmV2aW91c1Np
YmxpbmcpCi0gICAgICAgIGNoaWxkLnByZXZpb3VzU2libGluZy5uZXh0U2libGluZyA9IGNoaWxk
Lm5leHRTaWJsaW5nOwotICAgIGlmIChjaGlsZC5uZXh0U2libGluZykKLSAgICAgICAgY2hpbGQu
bmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nID0gY2hpbGQucHJldmlvdXNTaWJsaW5nOworICAg
ICAgICB2YXIgbmV4dENoaWxkID0gdGhpcy5jaGlsZHJlbltpbmRleF07CisgICAgICAgIGlmIChu
ZXh0Q2hpbGQpIHsKKyAgICAgICAgICAgIG5leHRDaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBjaGls
ZDsKKyAgICAgICAgICAgIGNoaWxkLm5leHRTaWJsaW5nID0gbmV4dENoaWxkOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcgPSBudWxsOworICAgICAgICB9
CiAKLSAgICBpZiAoY2hpbGQudHJlZU91dGxpbmUpIHsKLSAgICAgICAgY2hpbGQudHJlZU91dGxp
bmUuX2ZvcmdldFRyZWVFbGVtZW50KGNoaWxkKTsKLSAgICAgICAgY2hpbGQudHJlZU91dGxpbmUu
X2ZvcmdldENoaWxkcmVuUmVjdXJzaXZlKGNoaWxkKTsKLSAgICB9CisgICAgICAgIHZhciBpc0Zp
cnN0Q2hpbGQgPSAhdGhpcy5jaGlsZHJlbi5sZW5ndGg7CiAKLSAgICBjaGlsZC5fZGV0YWNoKCk7
Ci0gICAgY2hpbGQudHJlZU91dGxpbmUgPSBudWxsOwotICAgIGNoaWxkLnBhcmVudCA9IG51bGw7
Ci0gICAgY2hpbGQubmV4dFNpYmxpbmcgPSBudWxsOwotICAgIGNoaWxkLnByZXZpb3VzU2libGlu
ZyA9IG51bGw7CisgICAgICAgIHRoaXMuY2hpbGRyZW4uc3BsaWNlKGluZGV4LCAwLCBjaGlsZCk7
CisgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlOworICAgICAgICBjaGlsZC5wYXJlbnQg
PSB0aGlzOworICAgICAgICBjaGlsZC50cmVlT3V0bGluZSA9IHRoaXMudHJlZU91dGxpbmU7Cisg
ICAgICAgIGNoaWxkLnRyZWVPdXRsaW5lLl9yZW1lbWJlclRyZWVFbGVtZW50KGNoaWxkKTsKIAot
ICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUub25yZW1vdmUpCi0g
ICAgICAgIHRoaXMudHJlZU91dGxpbmUub25yZW1vdmUoY2hpbGQpOwotfTsKKyAgICAgICAgdmFy
IGN1cnJlbnQgPSBjaGlsZC5jaGlsZHJlblswXTsKKyAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHsK
KyAgICAgICAgICAgIGN1cnJlbnQudHJlZU91dGxpbmUgPSB0aGlzLnRyZWVPdXRsaW5lOworICAg
ICAgICAgICAgY3VycmVudC50cmVlT3V0bGluZS5fcmVtZW1iZXJUcmVlRWxlbWVudChjdXJyZW50
KTsKKyAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50
KGZhbHNlLCBjaGlsZCwgdHJ1ZSk7CisgICAgICAgIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBl
LnJlbW92ZUNoaWxkID0gZnVuY3Rpb24oY2hpbGQsIHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJl
c3NTZWxlY3RTaWJsaW5nKQotewotICAgIGlmICghY2hpbGQpCi0gICAgICAgIHRocm93ICJjaGls
ZCBjYW4ndCBiZSB1bmRlZmluZWQgb3IgbnVsbCI7CisgICAgICAgIGlmIChjaGlsZC5oYXNDaGls
ZHJlbiAmJiBjaGlsZC50cmVlT3V0bGluZS5fdHJlZUVsZW1lbnRzRXhwYW5kZWRTdGF0ZVtjaGls
ZC5pZGVudGlmaWVyXSAhPT0gdW5kZWZpbmVkKQorICAgICAgICAgICAgY2hpbGQuZXhwYW5kZWQg
PSBjaGlsZC50cmVlT3V0bGluZS5fdHJlZUVsZW1lbnRzRXhwYW5kZWRTdGF0ZVtjaGlsZC5pZGVu
dGlmaWVyXTsKIAotICAgIHZhciBjaGlsZEluZGV4ID0gdGhpcy5jaGlsZHJlbi5pbmRleE9mKGNo
aWxkKTsKLSAgICBpZiAoY2hpbGRJbmRleCA9PT0gLTEpCi0gICAgICAgIHRocm93ICJjaGlsZCBu
b3QgZm91bmQgaW4gdGhpcyBub2RlJ3MgY2hpbGRyZW4iOworICAgICAgICBpZiAodGhpcy5fY2hp
bGRyZW5MaXN0Tm9kZSkKKyAgICAgICAgICAgIGNoaWxkLl9hdHRhY2goKTsKIAotICAgIHRoaXMu
cmVtb3ZlQ2hpbGRBdEluZGV4KGNoaWxkSW5kZXgsIHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJl
c3NTZWxlY3RTaWJsaW5nKTsKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUub25hZGQpCisg
ICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uYWRkKGNoaWxkKTsKIAotICAgIGlmICghdGhp
cy5jaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlz
dC5yZW1vdmUoInBhcmVudCIpOwotICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7Cisg
ICAgICAgIGlmIChpc0ZpcnN0Q2hpbGQgJiYgdGhpcy5leHBhbmRlZCkKKyAgICAgICAgICAgIHRo
aXMuZXhwYW5kKCk7CiAgICAgfQotfTsKIAotVHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNo
aWxkcmVuID0gZnVuY3Rpb24oc3VwcHJlc3NPbkRlc2VsZWN0KQotewotICAgIHZhciB0cmVlT3V0
bGluZSA9IHRoaXMudHJlZU91dGxpbmU7CisgICAgcmVtb3ZlQ2hpbGRBdEluZGV4KGNoaWxkSW5k
ZXgsIHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NTZWxlY3RTaWJsaW5nKQorICAgIHsKKyAg
ICAgICAgaWYgKGNoaWxkSW5kZXggPCAwIHx8IGNoaWxkSW5kZXggPj0gdGhpcy5jaGlsZHJlbi5s
ZW5ndGgpCisgICAgICAgICAgICB0aHJvdyAiY2hpbGRJbmRleCBvdXQgb2YgcmFuZ2UiOworCisg
ICAgICAgIHZhciBjaGlsZCA9IHRoaXMuY2hpbGRyZW5bY2hpbGRJbmRleF07CisgICAgICAgIHRo
aXMuY2hpbGRyZW4uc3BsaWNlKGNoaWxkSW5kZXgsIDEpOworCisgICAgICAgIHZhciBwYXJlbnQg
PSBjaGlsZC5wYXJlbnQ7CisgICAgICAgIGlmIChjaGlsZC5kZXNlbGVjdChzdXBwcmVzc09uRGVz
ZWxlY3QpKSB7CisgICAgICAgICAgICBpZiAoY2hpbGQucHJldmlvdXNTaWJsaW5nICYmICFzdXBw
cmVzc1NlbGVjdFNpYmxpbmcpCisgICAgICAgICAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5n
LnNlbGVjdCh0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICBlbHNlIGlmIChjaGlsZC5uZXh0U2li
bGluZyAmJiAhc3VwcHJlc3NTZWxlY3RTaWJsaW5nKQorICAgICAgICAgICAgICAgIGNoaWxkLm5l
eHRTaWJsaW5nLnNlbGVjdCh0cnVlLCBmYWxzZSk7CisgICAgICAgICAgICBlbHNlIGlmICghc3Vw
cHJlc3NTZWxlY3RTaWJsaW5nKQorICAgICAgICAgICAgICAgIHBhcmVudC5zZWxlY3QodHJ1ZSwg
ZmFsc2UpOworICAgICAgICB9CiAKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRy
ZW4ubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXTsK
LSAgICAgICAgY2hpbGQuZGVzZWxlY3Qoc3VwcHJlc3NPbkRlc2VsZWN0KTsKKyAgICAgICAgaWYg
KGNoaWxkLnByZXZpb3VzU2libGluZykKKyAgICAgICAgICAgIGNoaWxkLnByZXZpb3VzU2libGlu
Zy5uZXh0U2libGluZyA9IGNoaWxkLm5leHRTaWJsaW5nOworICAgICAgICBpZiAoY2hpbGQubmV4
dFNpYmxpbmcpCisgICAgICAgICAgICBjaGlsZC5uZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcg
PSBjaGlsZC5wcmV2aW91c1NpYmxpbmc7CiAKICAgICAgICAgaWYgKGNoaWxkLnRyZWVPdXRsaW5l
KSB7CiAgICAgICAgICAgICBjaGlsZC50cmVlT3V0bGluZS5fZm9yZ2V0VHJlZUVsZW1lbnQoY2hp
bGQpOwpAQCAtMjE5LDM3NiArMTc5LDQzOSBAQCBUcmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3Zl
Q2hpbGRyZW4gPSBmdW5jdGlvbihzdXBwcmVzc09uRGVzZWxlY3QpCiAgICAgICAgIGNoaWxkLm5l
eHRTaWJsaW5nID0gbnVsbDsKICAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0gbnVsbDsK
IAotICAgICAgICBpZiAodHJlZU91dGxpbmUgJiYgdHJlZU91dGxpbmUub25yZW1vdmUpCi0gICAg
ICAgICAgICB0cmVlT3V0bGluZS5vbnJlbW92ZShjaGlsZCk7CisgICAgICAgIGlmICh0aGlzLnRy
ZWVPdXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUub25yZW1vdmUpCisgICAgICAgICAgICB0aGlz
LnRyZWVPdXRsaW5lLm9ucmVtb3ZlKGNoaWxkKTsKICAgICB9CiAKLSAgICB0aGlzLmNoaWxkcmVu
ID0gW107Ci19OworICAgIHJlbW92ZUNoaWxkKGNoaWxkLCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1
cHByZXNzU2VsZWN0U2libGluZykKKyAgICB7CisgICAgICAgIGlmICghY2hpbGQpCisgICAgICAg
ICAgICB0aHJvdyAiY2hpbGQgY2FuJ3QgYmUgdW5kZWZpbmVkIG9yIG51bGwiOwogCi1UcmVlT3V0
bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUgPSBmdW5jdGlvbihzdXBwcmVz
c09uRGVzZWxlY3QpCi17Ci0gICAgdmFyIGNoaWxkcmVuVG9SZW1vdmUgPSB0aGlzLmNoaWxkcmVu
OworICAgICAgICB2YXIgY2hpbGRJbmRleCA9IHRoaXMuY2hpbGRyZW4uaW5kZXhPZihjaGlsZCk7
CisgICAgICAgIGlmIChjaGlsZEluZGV4ID09PSAtMSkKKyAgICAgICAgICAgIHRocm93ICJjaGls
ZCBub3QgZm91bmQgaW4gdGhpcyBub2RlJ3MgY2hpbGRyZW4iOwogCi0gICAgdmFyIHRyZWVPdXRs
aW5lID0gdGhpcy50cmVlT3V0bGluZTsKKyAgICAgICAgdGhpcy5yZW1vdmVDaGlsZEF0SW5kZXgo
Y2hpbGRJbmRleCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpOwog
Ci0gICAgdmFyIGNoaWxkID0gdGhpcy5jaGlsZHJlblswXTsKLSAgICB3aGlsZSAoY2hpbGQpIHsK
LSAgICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuLmxlbmd0aCkKLSAgICAgICAgICAgIGNoaWxkcmVu
VG9SZW1vdmUgPSBjaGlsZHJlblRvUmVtb3ZlLmNvbmNhdChjaGlsZC5jaGlsZHJlbik7Ci0gICAg
ICAgIGNoaWxkID0gY2hpbGQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2UsIHRoaXMsIHRy
dWUpOworICAgICAgICBpZiAoIXRoaXMuY2hpbGRyZW4ubGVuZ3RoKSB7CisgICAgICAgICAgICB0
aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZSgicGFyZW50Iik7CisgICAgICAgICAg
ICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNoaWxkcmVuVG9SZW1vdmUubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
Y2hpbGQgPSBjaGlsZHJlblRvUmVtb3ZlW2ldOwotICAgICAgICBjaGlsZC5kZXNlbGVjdChzdXBw
cmVzc09uRGVzZWxlY3QpOworICAgIHJlbW92ZUNoaWxkcmVuKHN1cHByZXNzT25EZXNlbGVjdCkK
KyAgICB7CisgICAgICAgIHZhciB0cmVlT3V0bGluZSA9IHRoaXMudHJlZU91dGxpbmU7CiAKLSAg
ICAgICAgaWYgKGNoaWxkLnRyZWVPdXRsaW5lKQotICAgICAgICAgICAgY2hpbGQudHJlZU91dGxp
bmUuX2ZvcmdldFRyZWVFbGVtZW50KGNoaWxkKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB2YXIgY2hpbGQgPSB0
aGlzLmNoaWxkcmVuW2ldOworICAgICAgICAgICAgY2hpbGQuZGVzZWxlY3Qoc3VwcHJlc3NPbkRl
c2VsZWN0KTsKIAotICAgICAgICBjaGlsZC5fZGV0YWNoKCk7Ci0gICAgICAgIGNoaWxkLmNoaWxk
cmVuID0gW107Ci0gICAgICAgIGNoaWxkLnRyZWVPdXRsaW5lID0gbnVsbDsKLSAgICAgICAgY2hp
bGQucGFyZW50ID0gbnVsbDsKLSAgICAgICAgY2hpbGQubmV4dFNpYmxpbmcgPSBudWxsOwotICAg
ICAgICBjaGlsZC5wcmV2aW91c1NpYmxpbmcgPSBudWxsOworICAgICAgICAgICAgaWYgKGNoaWxk
LnRyZWVPdXRsaW5lKSB7CisgICAgICAgICAgICAgICAgY2hpbGQudHJlZU91dGxpbmUuX2Zvcmdl
dFRyZWVFbGVtZW50KGNoaWxkKTsKKyAgICAgICAgICAgICAgICBjaGlsZC50cmVlT3V0bGluZS5f
Zm9yZ2V0Q2hpbGRyZW5SZWN1cnNpdmUoY2hpbGQpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBjaGlsZC5fZGV0YWNoKCk7CisgICAgICAgICAgICBjaGlsZC50cmVlT3V0bGluZSA9IG51
bGw7CisgICAgICAgICAgICBjaGlsZC5wYXJlbnQgPSBudWxsOworICAgICAgICAgICAgY2hpbGQu
bmV4dFNpYmxpbmcgPSBudWxsOworICAgICAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0g
bnVsbDsKKworICAgICAgICAgICAgaWYgKHRyZWVPdXRsaW5lICYmIHRyZWVPdXRsaW5lLm9ucmVt
b3ZlKQorICAgICAgICAgICAgICAgIHRyZWVPdXRsaW5lLm9ucmVtb3ZlKGNoaWxkKTsKKyAgICAg
ICAgfQogCi0gICAgICAgIGlmICh0cmVlT3V0bGluZSAmJiB0cmVlT3V0bGluZS5vbnJlbW92ZSkK
LSAgICAgICAgICAgIHRyZWVPdXRsaW5lLm9ucmVtb3ZlKGNoaWxkKTsKKyAgICAgICAgdGhpcy5j
aGlsZHJlbiA9IFtdOwogICAgIH0KIAotICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLX07CisgICAg
cmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUoc3VwcHJlc3NPbkRlc2VsZWN0KQorICAgIHsKKyAgICAg
ICAgdmFyIGNoaWxkcmVuVG9SZW1vdmUgPSB0aGlzLmNoaWxkcmVuOwogCi1UcmVlT3V0bGluZS5w
cm90b3R5cGUuX3JlbWVtYmVyVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50KQotewotICAg
IGlmICghdGhpcy5fa25vd25UcmVlRWxlbWVudHNbZWxlbWVudC5pZGVudGlmaWVyXSkKLSAgICAg
ICAgdGhpcy5fa25vd25UcmVlRWxlbWVudHNbZWxlbWVudC5pZGVudGlmaWVyXSA9IFtdOworICAg
ICAgICB2YXIgdHJlZU91dGxpbmUgPSB0aGlzLnRyZWVPdXRsaW5lOwogCi0gICAgLy8gY2hlY2sg
aWYgdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSBrbm93bgotICAgIHZhciBlbGVtZW50cyA9IHRoaXMu
X2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl07Ci0gICAgaWYgKGVsZW1lbnRz
LmluZGV4T2YoZWxlbWVudCkgIT09IC0xKQotICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBj
aGlsZCA9IHRoaXMuY2hpbGRyZW5bMF07CisgICAgICAgIHdoaWxlIChjaGlsZCkgeworICAgICAg
ICAgICAgaWYgKGNoaWxkLmNoaWxkcmVuLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBjaGlsZHJl
blRvUmVtb3ZlID0gY2hpbGRyZW5Ub1JlbW92ZS5jb25jYXQoY2hpbGQuY2hpbGRyZW4pOworICAg
ICAgICAgICAgY2hpbGQgPSBjaGlsZC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxzZSwgdGhp
cywgdHJ1ZSk7CisgICAgICAgIH0KIAotICAgIC8vIGFkZCB0aGUgZWxlbWVudAotICAgIGVsZW1l
bnRzLnB1c2goZWxlbWVudCk7Ci19OworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxk
cmVuVG9SZW1vdmUubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGNoaWxkID0gY2hpbGRyZW5U
b1JlbW92ZVtpXTsKKyAgICAgICAgICAgIGNoaWxkLmRlc2VsZWN0KHN1cHByZXNzT25EZXNlbGVj
dCk7CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5fZm9yZ2V0VHJlZUVsZW1lbnQgPSBmdW5jdGlv
bihlbGVtZW50KQotewotICAgIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgPT09IGVsZW1l
bnQpCi0gICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IG51bGw7Ci0gICAgaWYgKHRo
aXMuX2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0pCi0gICAgICAgIHRoaXMu
X2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0ucmVtb3ZlKGVsZW1lbnQsIHRy
dWUpOwotfTsKKyAgICAgICAgICAgIGlmIChjaGlsZC50cmVlT3V0bGluZSkKKyAgICAgICAgICAg
ICAgICBjaGlsZC50cmVlT3V0bGluZS5fZm9yZ2V0VHJlZUVsZW1lbnQoY2hpbGQpOwogCi1UcmVl
T3V0bGluZS5wcm90b3R5cGUuX2ZvcmdldENoaWxkcmVuUmVjdXJzaXZlID0gZnVuY3Rpb24ocGFy
ZW50RWxlbWVudCkKLXsKLSAgICB2YXIgY2hpbGQgPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuWzBd
OwotICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICB0aGlzLl9mb3JnZXRUcmVlRWxlbWVudChj
aGlsZCk7Ci0gICAgICAgIGNoaWxkID0gY2hpbGQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFs
c2UsIHBhcmVudEVsZW1lbnQsIHRydWUpOworICAgICAgICAgICAgY2hpbGQuX2RldGFjaCgpOwor
ICAgICAgICAgICAgY2hpbGQuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgICAgIGNoaWxkLnRyZWVP
dXRsaW5lID0gbnVsbDsKKyAgICAgICAgICAgIGNoaWxkLnBhcmVudCA9IG51bGw7CisgICAgICAg
ICAgICBjaGlsZC5uZXh0U2libGluZyA9IG51bGw7CisgICAgICAgICAgICBjaGlsZC5wcmV2aW91
c1NpYmxpbmcgPSBudWxsOworCisgICAgICAgICAgICBpZiAodHJlZU91dGxpbmUgJiYgdHJlZU91
dGxpbmUub25yZW1vdmUpCisgICAgICAgICAgICAgICAgdHJlZU91dGxpbmUub25yZW1vdmUoY2hp
bGQpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOwogICAgIH0KLX07
CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5nZXRDYWNoZWRUcmVlRWxlbWVudCA9IGZ1bmN0aW9u
KHJlcHJlc2VudGVkT2JqZWN0KQotewotICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3QpCi0gICAg
ICAgIHJldHVybiBudWxsOworICAgIF9yZW1lbWJlclRyZWVFbGVtZW50KGVsZW1lbnQpCisgICAg
eworICAgICAgICBpZiAoIXRoaXMuX2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmll
cl0pCisgICAgICAgICAgICB0aGlzLl9rbm93blRyZWVFbGVtZW50c1tlbGVtZW50LmlkZW50aWZp
ZXJdID0gW107CiAKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QuX190cmVlRWxlbWVudElkZW50
aWZpZXIpIHsKLSAgICAgICAgLy8gSWYgdGhpcyByZXByZXNlbnRlZE9iamVjdCBoYXMgYSB0cmVl
IGVsZW1lbnQgaWRlbnRpZmllciwgYW5kIGl0IGlzIGEga25vd24gVHJlZUVsZW1lbnQKLSAgICAg
ICAgLy8gaW4gb3VyIHRyZWUgd2UgY2FuIGp1c3QgcmV0dXJuIHRoYXQgdHJlZSBlbGVtZW50Lgot
ICAgICAgICB2YXIgZWxlbWVudHMgPSB0aGlzLl9rbm93blRyZWVFbGVtZW50c1tyZXByZXNlbnRl
ZE9iamVjdC5fX3RyZWVFbGVtZW50SWRlbnRpZmllcl07Ci0gICAgICAgIGlmIChlbGVtZW50cykg
ewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkK
LSAgICAgICAgICAgICAgICBpZiAoZWxlbWVudHNbaV0ucmVwcmVzZW50ZWRPYmplY3QgPT09IHJl
cHJlc2VudGVkT2JqZWN0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudHNbaV07
Ci0gICAgICAgIH0KKyAgICAgICAgLy8gY2hlY2sgaWYgdGhlIGVsZW1lbnQgaXMgYWxyZWFkeSBr
bm93bgorICAgICAgICB2YXIgZWxlbWVudHMgPSB0aGlzLl9rbm93blRyZWVFbGVtZW50c1tlbGVt
ZW50LmlkZW50aWZpZXJdOworICAgICAgICBpZiAoZWxlbWVudHMuaW5kZXhPZihlbGVtZW50KSAh
PT0gLTEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gYWRkIHRoZSBlbGVtZW50
CisgICAgICAgIGVsZW1lbnRzLnB1c2goZWxlbWVudCk7CiAgICAgfQotICAgIHJldHVybiBudWxs
OwotfTsKIAotVHJlZU91dGxpbmUucHJvdG90eXBlLmZpbmRUcmVlRWxlbWVudCA9IGZ1bmN0aW9u
KHJlcHJlc2VudGVkT2JqZWN0LCBpc0FuY2VzdG9yLCBnZXRQYXJlbnQpCi17Ci0gICAgaWYgKCFy
ZXByZXNlbnRlZE9iamVjdCkKLSAgICAgICAgcmV0dXJuIG51bGw7CisgICAgX2ZvcmdldFRyZWVF
bGVtZW50KGVsZW1lbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVt
ZW50ID09PSBlbGVtZW50KQorICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID0g
bnVsbDsKKyAgICAgICAgaWYgKHRoaXMuX2tub3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRp
Zmllcl0pCisgICAgICAgICAgICB0aGlzLl9rbm93blRyZWVFbGVtZW50c1tlbGVtZW50LmlkZW50
aWZpZXJdLnJlbW92ZShlbGVtZW50LCB0cnVlKTsKKyAgICB9CiAKLSAgICB2YXIgY2FjaGVkRWxl
bWVudCA9IHRoaXMuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpOwotICAg
IGlmIChjYWNoZWRFbGVtZW50KQotICAgICAgICByZXR1cm4gY2FjaGVkRWxlbWVudDsKLQotICAg
IC8vIFRoZSByZXByZXNlbnRlZE9iamVjdCBpc24ndCBrbm93biwgc28gd2Ugc3RhcnQgYXQgdGhl
IHRvcCBvZiB0aGUgdHJlZSBhbmQgd29yayBkb3duIHRvIGZpbmQgdGhlIGZpcnN0Ci0gICAgLy8g
dHJlZSBlbGVtZW50IHRoYXQgcmVwcmVzZW50cyByZXByZXNlbnRlZE9iamVjdCBvciBvbmUgb2Yg
aXRzIGFuY2VzdG9ycy4KLSAgICB2YXIgaXRlbTsKLSAgICB2YXIgZm91bmQgPSBmYWxzZTsKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgaXRlbSA9IHRoaXMuY2hpbGRyZW5baV07Ci0gICAgICAgIGlmIChpdGVtLnJlcHJlc2VudGVk
T2JqZWN0ID09PSByZXByZXNlbnRlZE9iamVjdCB8fCAoaXNBbmNlc3RvciAmJiBpc0FuY2VzdG9y
KGl0ZW0ucmVwcmVzZW50ZWRPYmplY3QsIHJlcHJlc2VudGVkT2JqZWN0KSkpIHsKLSAgICAgICAg
ICAgIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOworICAgIF9mb3JnZXRDaGlsZHJl
blJlY3Vyc2l2ZShwYXJlbnRFbGVtZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNoaWxkID0gcGFy
ZW50RWxlbWVudC5jaGlsZHJlblswXTsKKyAgICAgICAgd2hpbGUgKGNoaWxkKSB7CisgICAgICAg
ICAgICB0aGlzLl9mb3JnZXRUcmVlRWxlbWVudChjaGlsZCk7CisgICAgICAgICAgICBjaGlsZCA9
IGNoaWxkLnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCBwYXJlbnRFbGVtZW50LCB0cnVl
KTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghZm91bmQpCisgICAgZ2V0Q2FjaGVkVHJl
ZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBpZiAoIXJlcHJlc2Vu
dGVkT2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICAgICAgaWYgKHJlcHJl
c2VudGVkT2JqZWN0Ll9fdHJlZUVsZW1lbnRJZGVudGlmaWVyKSB7CisgICAgICAgICAgICAvLyBJ
ZiB0aGlzIHJlcHJlc2VudGVkT2JqZWN0IGhhcyBhIHRyZWUgZWxlbWVudCBpZGVudGlmaWVyLCBh
bmQgaXQgaXMgYSBrbm93biBUcmVlRWxlbWVudAorICAgICAgICAgICAgLy8gaW4gb3VyIHRyZWUg
d2UgY2FuIGp1c3QgcmV0dXJuIHRoYXQgdHJlZSBlbGVtZW50LgorICAgICAgICAgICAgdmFyIGVs
ZW1lbnRzID0gdGhpcy5fa25vd25UcmVlRWxlbWVudHNbcmVwcmVzZW50ZWRPYmplY3QuX190cmVl
RWxlbWVudElkZW50aWZpZXJdOworICAgICAgICAgICAgaWYgKGVsZW1lbnRzKSB7CisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7ICsraSkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRzW2ldLnJlcHJlc2VudGVkT2JqZWN0ID09PSByZXBy
ZXNlbnRlZE9iamVjdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlbGVtZW50c1tp
XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICByZXR1cm4gbnVsbDsKLQotICAg
IC8vIE1ha2Ugc3VyZSB0aGUgaXRlbSB0aGF0IHdlIGZvdW5kIGlzIGNvbm5lY3RlZCB0byB0aGUg
cm9vdCBvZiB0aGUgdHJlZS4KLSAgICAvLyBCdWlsZCB1cCBhIGxpc3Qgb2YgcmVwcmVzZW50ZWRP
YmplY3QncyBhbmNlc3RvcnMgdGhhdCBhcmVuJ3QgYWxyZWFkeSBpbiBvdXIgdHJlZS4KLSAgICB2
YXIgYW5jZXN0b3JzID0gW107Ci0gICAgdmFyIGN1cnJlbnRPYmplY3QgPSByZXByZXNlbnRlZE9i
amVjdDsKLSAgICB3aGlsZSAoY3VycmVudE9iamVjdCkgewotICAgICAgICBhbmNlc3RvcnMudW5z
aGlmdChjdXJyZW50T2JqZWN0KTsKLSAgICAgICAgaWYgKGN1cnJlbnRPYmplY3QgPT09IGl0ZW0u
cmVwcmVzZW50ZWRPYmplY3QpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY3VycmVudE9i
amVjdCA9IGdldFBhcmVudChjdXJyZW50T2JqZWN0KTsKICAgICB9CiAKLSAgICAvLyBGb3IgZWFj
aCBvZiB0aG9zZSBhbmNlc3RvcnMgd2UgcG9wdWxhdGUgdGhlbSB0byBmaWxsIGluIHRoZSB0cmVl
LgotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5jZXN0b3JzLmxlbmd0aDsgKytpKSB7Ci0gICAg
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBkb24ndCBjYWxsIGZpbmRUcmVlRWxlbWVudCB3aXRoIHRoZSBz
YW1lIHJlcHJlc2VudGVkT2JqZWN0Ci0gICAgICAgIC8vIGFnYWluLCB0byBwcmV2ZW50IGluZmlu
aXRlIHJlY3Vyc2lvbi4KLSAgICAgICAgaWYgKGFuY2VzdG9yc1tpXSA9PT0gcmVwcmVzZW50ZWRP
YmplY3QpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAvLyBGSVhNRTogd2UgY291
bGQgZG8gc29tZXRoaW5nIGZhc3RlciB0aGFuIGZpbmRUcmVlRWxlbWVudCBzaW5jZSB3ZSB3aWxs
IGtub3cgdGhlIG5leHQKLSAgICAgICAgLy8gYW5jZXN0b3IgZXhpc3RzIGluIHRoZSB0cmVlLgot
ICAgICAgICBpdGVtID0gdGhpcy5maW5kVHJlZUVsZW1lbnQoYW5jZXN0b3JzW2ldLCBpc0FuY2Vz
dG9yLCBnZXRQYXJlbnQpOwotICAgICAgICBpZiAoaXRlbSkKLSAgICAgICAgICAgIGl0ZW0ub25w
b3B1bGF0ZSgpOwotICAgIH0KKyAgICBmaW5kVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3Qs
IGlzQW5jZXN0b3IsIGdldFBhcmVudCkKKyAgICB7CisgICAgICAgIGlmICghcmVwcmVzZW50ZWRP
YmplY3QpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICB2YXIgY2FjaGVkRWxl
bWVudCA9IHRoaXMuZ2V0Q2FjaGVkVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpOworICAg
ICAgICBpZiAoY2FjaGVkRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybiBjYWNoZWRFbGVtZW50
OworCisgICAgICAgIC8vIFRoZSByZXByZXNlbnRlZE9iamVjdCBpc24ndCBrbm93biwgc28gd2Ug
c3RhcnQgYXQgdGhlIHRvcCBvZiB0aGUgdHJlZSBhbmQgd29yayBkb3duIHRvIGZpbmQgdGhlIGZp
cnN0CisgICAgICAgIC8vIHRyZWUgZWxlbWVudCB0aGF0IHJlcHJlc2VudHMgcmVwcmVzZW50ZWRP
YmplY3Qgb3Igb25lIG9mIGl0cyBhbmNlc3RvcnMuCisgICAgICAgIHZhciBpdGVtOworICAgICAg
ICB2YXIgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNo
aWxkcmVuLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpdGVtID0gdGhpcy5jaGlsZHJlbltp
XTsKKyAgICAgICAgICAgIGlmIChpdGVtLnJlcHJlc2VudGVkT2JqZWN0ID09PSByZXByZXNlbnRl
ZE9iamVjdCB8fCAoaXNBbmNlc3RvciAmJiBpc0FuY2VzdG9yKGl0ZW0ucmVwcmVzZW50ZWRPYmpl
Y3QsIHJlcHJlc2VudGVkT2JqZWN0KSkpIHsKKyAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAotICAg
IHJldHVybiB0aGlzLmdldENhY2hlZFRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKLX07
CisgICAgICAgIGlmICghZm91bmQpCisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKworICAgICAg
ICAvLyBNYWtlIHN1cmUgdGhlIGl0ZW0gdGhhdCB3ZSBmb3VuZCBpcyBjb25uZWN0ZWQgdG8gdGhl
IHJvb3Qgb2YgdGhlIHRyZWUuCisgICAgICAgIC8vIEJ1aWxkIHVwIGEgbGlzdCBvZiByZXByZXNl
bnRlZE9iamVjdCdzIGFuY2VzdG9ycyB0aGF0IGFyZW4ndCBhbHJlYWR5IGluIG91ciB0cmVlLgor
ICAgICAgICB2YXIgYW5jZXN0b3JzID0gW107CisgICAgICAgIHZhciBjdXJyZW50T2JqZWN0ID0g
cmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIHdoaWxlIChjdXJyZW50T2JqZWN0KSB7CisgICAg
ICAgICAgICBhbmNlc3RvcnMudW5zaGlmdChjdXJyZW50T2JqZWN0KTsKKyAgICAgICAgICAgIGlm
IChjdXJyZW50T2JqZWN0ID09PSBpdGVtLnJlcHJlc2VudGVkT2JqZWN0KQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY3VycmVudE9iamVjdCA9IGdldFBhcmVudChjdXJyZW50
T2JqZWN0KTsKKyAgICAgICAgfQogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuX3RyZWVFbGVtZW50
RGlkQ2hhbmdlID0gZnVuY3Rpb24odHJlZUVsZW1lbnQpCi17Ci0gICAgaWYgKHRyZWVFbGVtZW50
LnRyZWVPdXRsaW5lICE9PSB0aGlzKQotICAgICAgICByZXR1cm47CisgICAgICAgIC8vIEZvciBl
YWNoIG9mIHRob3NlIGFuY2VzdG9ycyB3ZSBwb3B1bGF0ZSB0aGVtIHRvIGZpbGwgaW4gdGhlIHRy
ZWUuCisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYW5jZXN0b3JzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgZG9uJ3QgY2FsbCBmaW5kVHJlZUVsZW1lbnQg
d2l0aCB0aGUgc2FtZSByZXByZXNlbnRlZE9iamVjdAorICAgICAgICAgICAgLy8gYWdhaW4sIHRv
IHByZXZlbnQgaW5maW5pdGUgcmVjdXJzaW9uLgorICAgICAgICAgICAgaWYgKGFuY2VzdG9yc1tp
XSA9PT0gcmVwcmVzZW50ZWRPYmplY3QpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgZmFzdGVyIHRoYW4gZmlu
ZFRyZWVFbGVtZW50IHNpbmNlIHdlIHdpbGwga25vdyB0aGUgbmV4dAorICAgICAgICAgICAgLy8g
YW5jZXN0b3IgZXhpc3RzIGluIHRoZSB0cmVlLgorICAgICAgICAgICAgaXRlbSA9IHRoaXMuZmlu
ZFRyZWVFbGVtZW50KGFuY2VzdG9yc1tpXSwgaXNBbmNlc3RvciwgZ2V0UGFyZW50KTsKKyAgICAg
ICAgICAgIGlmIChpdGVtKQorICAgICAgICAgICAgICAgIGl0ZW0ub25wb3B1bGF0ZSgpOworICAg
ICAgICB9CiAKLSAgICBpZiAodGhpcy5vbmNoYW5nZSkKLSAgICAgICAgdGhpcy5vbmNoYW5nZSh0
cmVlRWxlbWVudCk7Ci19OworICAgICAgICByZXR1cm4gdGhpcy5nZXRDYWNoZWRUcmVlRWxlbWVu
dChyZXByZXNlbnRlZE9iamVjdCk7CisgICAgfQogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUudHJl
ZUVsZW1lbnRGcm9tTm9kZSA9IGZ1bmN0aW9uKG5vZGUpCi17Ci0gICAgdmFyIGxpc3ROb2RlID0g
bm9kZS5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lSW5BcnJheShbIm9sIiwgImxpIl0p
OwotICAgIGlmIChsaXN0Tm9kZSkKLSAgICAgICAgcmV0dXJuIGxpc3ROb2RlLnBhcmVudFRyZWVF
bGVtZW50IHx8IGxpc3ROb2RlLnRyZWVFbGVtZW50OwotICAgIHJldHVybiBudWxsOwotfTsKKyAg
ICBfdHJlZUVsZW1lbnREaWRDaGFuZ2UodHJlZUVsZW1lbnQpCisgICAgeworICAgICAgICBpZiAo
dHJlZUVsZW1lbnQudHJlZU91dGxpbmUgIT09IHRoaXMpCisgICAgICAgICAgICByZXR1cm47CiAK
LVRyZWVPdXRsaW5lLnByb3RvdHlwZS50cmVlRWxlbWVudEZyb21Qb2ludCA9IGZ1bmN0aW9uKHgs
IHkpCi17Ci0gICAgdmFyIG5vZGUgPSB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLm93bmVyRG9jdW1l
bnQuZWxlbWVudEZyb21Qb2ludCh4LCB5KTsKLSAgICBpZiAoIW5vZGUpCisgICAgICAgIGlmICh0
aGlzLm9uY2hhbmdlKQorICAgICAgICAgICAgdGhpcy5vbmNoYW5nZSh0cmVlRWxlbWVudCk7Cisg
ICAgfQorCisgICAgdHJlZUVsZW1lbnRGcm9tTm9kZShub2RlKQorICAgIHsKKyAgICAgICAgdmFy
IGxpc3ROb2RlID0gbm9kZS5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lSW5BcnJheShb
Im9sIiwgImxpIl0pOworICAgICAgICBpZiAobGlzdE5vZGUpCisgICAgICAgICAgICByZXR1cm4g
bGlzdE5vZGUucGFyZW50VHJlZUVsZW1lbnQgfHwgbGlzdE5vZGUudHJlZUVsZW1lbnQ7CiAgICAg
ICAgIHJldHVybiBudWxsOworICAgIH0KIAotICAgIHJldHVybiB0aGlzLnRyZWVFbGVtZW50RnJv
bU5vZGUobm9kZSk7Ci19OworICAgIHRyZWVFbGVtZW50RnJvbVBvaW50KHgsIHkpCisgICAgewor
ICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUub3duZXJEb2N1bWVudC5l
bGVtZW50RnJvbVBvaW50KHgsIHkpOworICAgICAgICBpZiAoIW5vZGUpCisgICAgICAgICAgICBy
ZXR1cm4gbnVsbDsKIAotVHJlZU91dGxpbmUucHJvdG90eXBlLl90cmVlS2V5RG93biA9IGZ1bmN0
aW9uKGV2ZW50KQotewotICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuX2NoaWxkcmVuTGlz
dE5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICghdGhpcy5zZWxlY3RlZFRyZWVFbGVt
ZW50IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50Lm1ldGFLZXkgfHwgZXZlbnQuY3RybEtleSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgdmFyIGhhbmRsZWQgPSBmYWxzZTsKLSAgICB2YXIgbmV4
dFNlbGVjdGVkRWxlbWVudDsKLSAgICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlVwIiAm
JiAhZXZlbnQuYWx0S2V5KSB7Ci0gICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSB0aGlzLnNl
bGVjdGVkVHJlZUVsZW1lbnQudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50KHRydWUpOwotICAg
ICAgICB3aGlsZSAobmV4dFNlbGVjdGVkRWxlbWVudCAmJiAhbmV4dFNlbGVjdGVkRWxlbWVudC5z
ZWxlY3RhYmxlKQotICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3Rl
ZEVsZW1lbnQudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50KCF0aGlzLmV4cGFuZFRyZWVFbGVt
ZW50c1doZW5BcnJvd2luZyk7Ci0gICAgICAgIGhhbmRsZWQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50
ID8gdHJ1ZSA6IGZhbHNlOwotICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0g
IkRvd24iICYmICFldmVudC5hbHRLZXkpIHsKLSAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9
IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudCh0cnVlKTsK
LSAgICAgICAgd2hpbGUgKG5leHRTZWxlY3RlZEVsZW1lbnQgJiYgIW5leHRTZWxlY3RlZEVsZW1l
bnQuc2VsZWN0YWJsZSkKLSAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQgPSBuZXh0U2Vs
ZWN0ZWRFbGVtZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KCF0aGlzLmV4cGFuZFRyZWVFbGVt
ZW50c1doZW5BcnJvd2luZyk7Ci0gICAgICAgIGhhbmRsZWQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50
ID8gdHJ1ZSA6IGZhbHNlOwotICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0g
IkxlZnQiKSB7Ci0gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuZXhwYW5kZWQp
IHsKLSAgICAgICAgICAgIGlmIChldmVudC5hbHRLZXkpCi0gICAgICAgICAgICAgICAgdGhpcy5z
ZWxlY3RlZFRyZWVFbGVtZW50LmNvbGxhcHNlUmVjdXJzaXZlbHkoKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuY29sbGFwc2UoKTsK
LSAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOwotICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2Vs
ZWN0ZWRUcmVlRWxlbWVudC5wYXJlbnQgJiYgIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5wYXJl
bnQucm9vdCkgewotICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAgICAgICAgICBpZiAo
dGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnBhcmVudC5zZWxlY3RhYmxlKSB7Ci0gICAgICAgICAg
ICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5wYXJl
bnQ7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKG5leHRTZWxlY3RlZEVsZW1lbnQgJiYgIW5leHRT
ZWxlY3RlZEVsZW1lbnQuc2VsZWN0YWJsZSkKLSAgICAgICAgICAgICAgICAgICAgbmV4dFNlbGVj
dGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQucGFyZW50OwotICAgICAgICAgICAgICAg
IGhhbmRsZWQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50ID8gdHJ1ZSA6IGZhbHNlOwotICAgICAgICAg
ICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucGFyZW50KQotICAgICAgICAg
ICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5wYXJlbnQuY29sbGFwc2UoKTsKLSAgICAg
ICAgfQotICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlJpZ2h0Iikgewot
ICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXZlYWxlZCgpKSB7Ci0gICAg
ICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucmV2ZWFsKCk7Ci0gICAgICAgICAgICBo
YW5kbGVkID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQuaGFzQ2hpbGRyZW4pIHsKLSAgICAgICAgICAgIGhhbmRsZWQgPSB0cnVlOworICAgICAgICBy
ZXR1cm4gdGhpcy50cmVlRWxlbWVudEZyb21Ob2RlKG5vZGUpOworICAgIH0KKworICAgIF90cmVl
S2V5RG93bihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMu
X2NoaWxkcmVuTGlzdE5vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0
aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtl
eSB8fCBldmVudC5jdHJsS2V5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBo
YW5kbGVkID0gZmFsc2U7CisgICAgICAgIHZhciBuZXh0U2VsZWN0ZWRFbGVtZW50OworICAgICAg
ICBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlVwIiAmJiAhZXZlbnQuYWx0S2V5KSB7Cisg
ICAgICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50ID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50
LnRyYXZlcnNlUHJldmlvdXNUcmVlRWxlbWVudCh0cnVlKTsKKyAgICAgICAgICAgIHdoaWxlIChu
ZXh0U2VsZWN0ZWRFbGVtZW50ICYmICFuZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdGFibGUpCisg
ICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQu
dHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50KCF0aGlzLmV4cGFuZFRyZWVFbGVtZW50c1doZW5B
cnJvd2luZyk7CisgICAgICAgICAgICBoYW5kbGVkID0gbmV4dFNlbGVjdGVkRWxlbWVudCA/IHRy
dWUgOiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAi
RG93biIgJiYgIWV2ZW50LmFsdEtleSkgeworICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVu
dCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudCh0cnVl
KTsKKyAgICAgICAgICAgIHdoaWxlIChuZXh0U2VsZWN0ZWRFbGVtZW50ICYmICFuZXh0U2VsZWN0
ZWRFbGVtZW50LnNlbGVjdGFibGUpCisgICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVu
dCA9IG5leHRTZWxlY3RlZEVsZW1lbnQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoIXRoaXMuZXhw
YW5kVHJlZUVsZW1lbnRzV2hlbkFycm93aW5nKTsKKyAgICAgICAgICAgIGhhbmRsZWQgPSBuZXh0
U2VsZWN0ZWRFbGVtZW50ID8gdHJ1ZSA6IGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKGV2ZW50
LmtleUlkZW50aWZpZXIgPT09ICJMZWZ0IikgewogICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0
ZWRUcmVlRWxlbWVudC5leHBhbmRlZCkgewotICAgICAgICAgICAgICAgIG5leHRTZWxlY3RlZEVs
ZW1lbnQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuY2hpbGRyZW5bMF07Ci0gICAgICAgICAg
ICAgICAgd2hpbGUgKG5leHRTZWxlY3RlZEVsZW1lbnQgJiYgIW5leHRTZWxlY3RlZEVsZW1lbnQu
c2VsZWN0YWJsZSkKLSAgICAgICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVkRWxlbWVudCA9IG5l
eHRTZWxlY3RlZEVsZW1lbnQubmV4dFNpYmxpbmc7Ci0gICAgICAgICAgICAgICAgaGFuZGxlZCA9
IG5leHRTZWxlY3RlZEVsZW1lbnQgPyB0cnVlIDogZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIGlmIChldmVudC5hbHRLZXkpCi0gICAgICAgICAgICAgICAgICAg
IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5leHBhbmRSZWN1cnNpdmVseSgpOworICAgICAgICAg
ICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuY29sbGFwc2VSZWN1cnNpdmVseSgp
OwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rl
ZFRyZWVFbGVtZW50LmV4cGFuZCgpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVk
VHJlZUVsZW1lbnQuY29sbGFwc2UoKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsK
KyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnBhcmVudCAm
JiAhdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnBhcmVudC5yb290KSB7CisgICAgICAgICAgICAg
ICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVl
RWxlbWVudC5wYXJlbnQuc2VsZWN0YWJsZSkgeworICAgICAgICAgICAgICAgICAgICBuZXh0U2Vs
ZWN0ZWRFbGVtZW50ID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LnBhcmVudDsKKyAgICAgICAg
ICAgICAgICAgICAgd2hpbGUgKG5leHRTZWxlY3RlZEVsZW1lbnQgJiYgIW5leHRTZWxlY3RlZEVs
ZW1lbnQuc2VsZWN0YWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRTZWxlY3RlZEVs
ZW1lbnQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50LnBhcmVudDsKKyAgICAgICAgICAgICAgICAgICAg
aGFuZGxlZCA9IG5leHRTZWxlY3RlZEVsZW1lbnQgPyB0cnVlIDogZmFsc2U7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucGFyZW50KQorICAgICAg
ICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQucGFyZW50LmNvbGxhcHNlKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmllciA9
PT0gIlJpZ2h0IikgeworICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQu
cmV2ZWFsZWQoKSkgeworICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5y
ZXZlYWwoKTsKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0g
ZWxzZSBpZiAodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50Lmhhc0NoaWxkcmVuKSB7CisgICAgICAg
ICAgICAgICAgaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0
ZWRUcmVlRWxlbWVudC5leHBhbmRlZCkgeworICAgICAgICAgICAgICAgICAgICBuZXh0U2VsZWN0
ZWRFbGVtZW50ID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmNoaWxkcmVuWzBdOworICAgICAg
ICAgICAgICAgICAgICB3aGlsZSAobmV4dFNlbGVjdGVkRWxlbWVudCAmJiAhbmV4dFNlbGVjdGVk
RWxlbWVudC5zZWxlY3RhYmxlKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dFNlbGVjdGVk
RWxlbWVudCA9IG5leHRTZWxlY3RlZEVsZW1lbnQubmV4dFNpYmxpbmc7CisgICAgICAgICAgICAg
ICAgICAgIGhhbmRsZWQgPSBuZXh0U2VsZWN0ZWRFbGVtZW50ID8gdHJ1ZSA6IGZhbHNlOworICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5hbHRL
ZXkpCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQuZXhw
YW5kUmVjdXJzaXZlbHkoKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50LmV4cGFuZCgpOworICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChldmVudC5rZXlDb2Rl
ID09PSA4IC8qIEJhY2tzcGFjZSAqLyB8fCBldmVudC5rZXlDb2RlID09PSA0NiAvKiBEZWxldGUg
Ki8pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQub25kZWxldGUp
CisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5vbmRl
bGV0ZSgpOworICAgICAgICAgICAgaWYgKCFoYW5kbGVkICYmIHRoaXMudHJlZU91dGxpbmUub25k
ZWxldGUpCisgICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMudHJlZU91dGxpbmUub25kZWxl
dGUodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50KTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0VudGVy
S2V5KGV2ZW50KSkgeworICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5v
bmVudGVyKQorICAgICAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnNlbGVjdGVkVHJlZUVsZW1l
bnQub25lbnRlcigpOworICAgICAgICAgICAgaWYgKCFoYW5kbGVkICYmIHRoaXMudHJlZU91dGxp
bmUub25lbnRlcikKKyAgICAgICAgICAgICAgICBoYW5kbGVkID0gdGhpcy50cmVlT3V0bGluZS5v
bmVudGVyKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCk7CisgICAgICAgIH0gZWxzZSBpZiAoZXZl
bnQua2V5SWRlbnRpZmllciA9PT0gIlUrMDAyMCIgLyogU3BhY2UgKi8pIHsKKyAgICAgICAgICAg
IGlmICh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQub25zcGFjZSkKKyAgICAgICAgICAgICAgICBo
YW5kbGVkID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50Lm9uc3BhY2UoKTsKKyAgICAgICAgICAg
IGlmICghaGFuZGxlZCAmJiB0aGlzLnRyZWVPdXRsaW5lLm9uc3BhY2UpCisgICAgICAgICAgICAg
ICAgaGFuZGxlZCA9IHRoaXMudHJlZU91dGxpbmUub25zcGFjZSh0aGlzLnNlbGVjdGVkVHJlZUVs
ZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG5leHRTZWxlY3RlZEVsZW1lbnQpIHsK
KyAgICAgICAgICAgIG5leHRTZWxlY3RlZEVsZW1lbnQucmV2ZWFsKCk7CisgICAgICAgICAgICBu
ZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdChmYWxzZSwgdHJ1ZSk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoaGFuZGxlZCkgeworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
KyAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICB9Ci0gICAgfSBl
bHNlIGlmIChldmVudC5rZXlDb2RlID09PSA4IC8qIEJhY2tzcGFjZSAqLyB8fCBldmVudC5rZXlD
b2RlID09PSA0NiAvKiBEZWxldGUgKi8pIHsKLSAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVl
RWxlbWVudC5vbmRlbGV0ZSkKLSAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnNlbGVjdGVkVHJl
ZUVsZW1lbnQub25kZWxldGUoKTsKLSAgICAgICAgaWYgKCFoYW5kbGVkICYmIHRoaXMudHJlZU91
dGxpbmUub25kZWxldGUpCi0gICAgICAgICAgICBoYW5kbGVkID0gdGhpcy50cmVlT3V0bGluZS5v
bmRlbGV0ZSh0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQpOwotICAgIH0gZWxzZSBpZiAoaXNFbnRl
cktleShldmVudCkpIHsKLSAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5vbmVu
dGVyKQotICAgICAgICAgICAgaGFuZGxlZCA9IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5vbmVu
dGVyKCk7Ci0gICAgICAgIGlmICghaGFuZGxlZCAmJiB0aGlzLnRyZWVPdXRsaW5lLm9uZW50ZXIp
Ci0gICAgICAgICAgICBoYW5kbGVkID0gdGhpcy50cmVlT3V0bGluZS5vbmVudGVyKHRoaXMuc2Vs
ZWN0ZWRUcmVlRWxlbWVudCk7Ci0gICAgfSBlbHNlIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09
PSAiVSswMDIwIiAvKiBTcGFjZSAqLykgewotICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFRyZWVF
bGVtZW50Lm9uc3BhY2UpCi0gICAgICAgICAgICBoYW5kbGVkID0gdGhpcy5zZWxlY3RlZFRyZWVF
bGVtZW50Lm9uc3BhY2UoKTsKLSAgICAgICAgaWYgKCFoYW5kbGVkICYmIHRoaXMudHJlZU91dGxp
bmUub25zcGFjZSkKLSAgICAgICAgICAgIGhhbmRsZWQgPSB0aGlzLnRyZWVPdXRsaW5lLm9uc3Bh
Y2UodGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50KTsKICAgICB9CiAKLSAgICBpZiAobmV4dFNlbGVj
dGVkRWxlbWVudCkgewotICAgICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50LnJldmVhbCgpOwotICAg
ICAgICBuZXh0U2VsZWN0ZWRFbGVtZW50LnNlbGVjdChmYWxzZSwgdHJ1ZSk7CisgICAgZXhwYW5k
KCkKKyAgICB7CisgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKICAgICB9
CiAKLSAgICBpZiAoaGFuZGxlZCkgewotICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwot
ICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKKyAgICBjb2xsYXBzZSgpCisgICAgewor
ICAgICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCiAgICAgfQotfTsKIAotVHJl
ZU91dGxpbmUucHJvdG90eXBlLmV4cGFuZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICAvLyB0aGlzIGlz
IHRoZSByb290LCBkbyBub3RoaW5nCi19OworICAgIHJldmVhbGVkKCkKKyAgICB7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBlLmNvbGxhcHNlID0g
ZnVuY3Rpb24oKQotewotICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKLX07Cisg
ICAgcmV2ZWFsKCkKKyAgICB7CisgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhp
bmcKKyAgICB9CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZXZlYWxlZCA9IGZ1bmN0aW9uKCkK
LXsKLSAgICByZXR1cm4gdHJ1ZTsKLX07CisgICAgc2VsZWN0KCkKKyAgICB7CisgICAgICAgIC8v
IHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKKyAgICB9CiAKLVRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5yZXZlYWwgPSBmdW5jdGlvbigpCi17Ci0gICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8g
bm90aGluZworICAgIHJldmVhbEFuZFNlbGVjdChvbWl0Rm9jdXMpCisgICAgeworICAgICAgICAv
LyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCisgICAgfQogfTsKIAotVHJlZU91dGxpbmUu
cHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uKCkKLXsKLSAgICAvLyB0aGlzIGlzIHRoZSByb290
LCBkbyBub3RoaW5nCi19OworV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lLl9rbm93blRyZWVFbGVt
ZW50TmV4dElkZW50aWZpZXIgPSAxOwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUucmV2ZWFsQW5k
U2VsZWN0ID0gZnVuY3Rpb24ob21pdEZvY3VzKQorV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50ID0g
Y2xhc3MgVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8g
dGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZwotfTsKKyAgICBjb25zdHJ1Y3Rvcih0aXRsZSwg
cmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
IAotVHJlZU91dGxpbmUucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOworICAgICAgICB0aGlzLl90aXRsZSA9IHRpdGxlOworICAgICAgICB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0ID0gKHJlcHJlc2VudGVkT2JqZWN0IHx8IHt9KTsKIAotZnVuY3Rpb24g
VHJlZUVsZW1lbnQodGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKLXsKLSAg
ICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7CisgICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Ll9fdHJlZUVsZW1lbnRJZGVu
dGlmaWVyKQorICAgICAgICAgICAgdGhpcy5pZGVudGlmaWVyID0gdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5fX3RyZWVFbGVtZW50SWRlbnRpZmllcjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICB0aGlzLmlkZW50aWZpZXIgPSBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUuX2tub3duVHJlZUVs
ZW1lbnROZXh0SWRlbnRpZmllcisrOworICAgICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVj
dC5fX3RyZWVFbGVtZW50SWRlbnRpZmllciA9IHRoaXMuaWRlbnRpZmllcjsKKyAgICAgICAgfQog
Ci0gICAgdGhpcy5fdGl0bGUgPSB0aXRsZTsKLSAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0ID0g
KHJlcHJlc2VudGVkT2JqZWN0IHx8IHt9KTsKKyAgICAgICAgdGhpcy5faGlkZGVuID0gZmFsc2U7
CisgICAgICAgIHRoaXMuX3NlbGVjdGFibGUgPSB0cnVlOworICAgICAgICB0aGlzLmV4cGFuZGVk
ID0gZmFsc2U7CisgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5o
YXNDaGlsZHJlbiA9IGhhc0NoaWxkcmVuOworICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107Cisg
ICAgICAgIHRoaXMudHJlZU91dGxpbmUgPSBudWxsOworICAgICAgICB0aGlzLnBhcmVudCA9IG51
bGw7CisgICAgICAgIHRoaXMucHJldmlvdXNTaWJsaW5nID0gbnVsbDsKKyAgICAgICAgdGhpcy5u
ZXh0U2libGluZyA9IG51bGw7CisgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZSA9IG51bGw7Cisg
ICAgfQorCisgICAgLy8gTWV0aG9kcworCisgICAgYXBwZW5kQ2hpbGQoKSB7IHJldHVybiBXZWJJ
bnNwZWN0b3IuVHJlZU91dGxpbmUucHJvdG90eXBlLmFwcGVuZENoaWxkLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cyk7IH0KKyAgICBpbnNlcnRDaGlsZCgpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5UcmVl
T3V0bGluZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQor
ICAgIHJlbW92ZUNoaWxkKCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5yZW1vdmVDaGlsZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9CisgICAgcmVtb3ZlQ2hp
bGRBdEluZGV4KCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5y
ZW1vdmVDaGlsZEF0SW5kZXguYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQorICAgIHJlbW92ZUNo
aWxkcmVuKCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1v
dmVDaGlsZHJlbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9CisgICAgcmVtb3ZlQ2hpbGRyZW5S
ZWN1cnNpdmUoKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUucHJvdG90eXBlLnJl
bW92ZUNoaWxkcmVuUmVjdXJzaXZlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KIAotICAgIGlm
ICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Ll9fdHJlZUVsZW1lbnRJZGVudGlmaWVyKQotICAgICAg
ICB0aGlzLmlkZW50aWZpZXIgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Ll9fdHJlZUVsZW1lbnRJ
ZGVudGlmaWVyOwotICAgIGVsc2UgewotICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSBUcmVlT3V0
bGluZS5fa25vd25UcmVlRWxlbWVudE5leHRJZGVudGlmaWVyKys7Ci0gICAgICAgIHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuX190cmVlRWxlbWVudElkZW50aWZpZXIgPSB0aGlzLmlkZW50aWZpZXI7
CisgICAgZ2V0IGFycm93VG9nZ2xlV2lkdGgoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIDEwOwog
ICAgIH0KIAotICAgIHRoaXMuX2hpZGRlbiA9IGZhbHNlOwotICAgIHRoaXMuX3NlbGVjdGFibGUg
PSB0cnVlOwotICAgIHRoaXMuZXhwYW5kZWQgPSBmYWxzZTsKLSAgICB0aGlzLnNlbGVjdGVkID0g
ZmFsc2U7Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IGhhc0NoaWxkcmVuOwotICAgIHRoaXMuY2hp
bGRyZW4gPSBbXTsKLSAgICB0aGlzLnRyZWVPdXRsaW5lID0gbnVsbDsKLSAgICB0aGlzLnBhcmVu
dCA9IG51bGw7Ci0gICAgdGhpcy5wcmV2aW91c1NpYmxpbmcgPSBudWxsOwotICAgIHRoaXMubmV4
dFNpYmxpbmcgPSBudWxsOwotICAgIHRoaXMuX2xpc3RJdGVtTm9kZSA9IG51bGw7Ci19Ci0KLVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogVHJlZUVsZW1lbnQsCi0K
LSAgICBhcnJvd1RvZ2dsZVdpZHRoOiAxMCwKLQotICAgIGdldCBzZWxlY3RhYmxlKCkgeworICAg
IGdldCBzZWxlY3RhYmxlKCkKKyAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oaWRkZW4pCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RhYmxlOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2V0IHNlbGVjdGFibGUoeCkgeworICAgIHNldCBzZWxlY3Rh
YmxlKHgpCisgICAgewogICAgICAgICB0aGlzLl9zZWxlY3RhYmxlID0geDsKLSAgICB9LAorICAg
IH0KIAotICAgIGdldCBsaXN0SXRlbUVsZW1lbnQoKSB7CisgICAgZ2V0IGxpc3RJdGVtRWxlbWVu
dCgpCisgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbGlzdEl0ZW1Ob2RlOwotICAgIH0sCisg
ICAgfQogCi0gICAgZ2V0IGNoaWxkcmVuTGlzdEVsZW1lbnQoKSB7CisgICAgZ2V0IGNoaWxkcmVu
TGlzdEVsZW1lbnQoKQorICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuTGlzdE5v
ZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXQgdGl0bGUoKSB7CisgICAgZ2V0IHRpdGxlKCkK
KyAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90aXRsZTsKLSAgICB9LAorICAgIH0KIAotICAg
IHNldCB0aXRsZSh4KSB7CisgICAgc2V0IHRpdGxlKHgpCisgICAgewogICAgICAgICB0aGlzLl90
aXRsZSA9IHg7CiAgICAgICAgIHRoaXMuX3NldExpc3RJdGVtTm9kZUNvbnRlbnQoKTsKICAgICAg
ICAgdGhpcy5kaWRDaGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdldCB0aXRsZUhUTUwo
KSB7CisgICAgZ2V0IHRpdGxlSFRNTCgpCisgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGl0
bGVIVE1MOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0IHRpdGxlSFRNTCh4KSB7CisgICAgc2V0
IHRpdGxlSFRNTCh4KQorICAgIHsKICAgICAgICAgdGhpcy5fdGl0bGVIVE1MID0geDsKICAgICAg
ICAgdGhpcy5fc2V0TGlzdEl0ZW1Ob2RlQ29udGVudCgpOwogICAgICAgICB0aGlzLmRpZENoYW5n
ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0IHRvb2x0aXAoKSB7CisgICAgZ2V0IHRvb2x0
aXAoKQorICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXA7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzZXQgdG9vbHRpcCh4KSB7CisgICAgc2V0IHRvb2x0aXAoeCkKKyAgICB7CiAgICAg
ICAgIHRoaXMuX3Rvb2x0aXAgPSB4OwogICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlKQog
ICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLnRpdGxlID0geCA/IHggOiAiIjsKICAgICAg
ICAgdGhpcy5kaWRDaGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdldCBoYXNDaGlsZHJl
bigpIHsKKyAgICBnZXQgaGFzQ2hpbGRyZW4oKQorICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2hhc0NoaWxkcmVuOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0IGhhc0NoaWxkcmVuKHgpIHsK
KyAgICBzZXQgaGFzQ2hpbGRyZW4oeCkKKyAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oYXNDaGls
ZHJlbiA9PT0geCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjA1LDEzICs2MjgsMTUgQEAg
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaWRD
aGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdldCBoaWRkZW4oKSB7CisgICAgZ2V0IGhp
ZGRlbigpCisgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faGlkZGVuOwotICAgIH0sCisgICAg
fQogCi0gICAgc2V0IGhpZGRlbih4KSB7CisgICAgc2V0IGhpZGRlbih4KQorICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2hpZGRlbiA9PT0geCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjMx
LDI3ICs2NTYsMjkgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0
aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUub25oaWRkZW4pCiAgICAgICAgICAg
ICB0aGlzLnRyZWVPdXRsaW5lLm9uaGlkZGVuKHRoaXMsIHgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgZ2V0IHNob3VsZFJlZnJlc2hDaGlsZHJlbigpIHsKKyAgICBnZXQgc2hvdWxkUmVmcmVzaENo
aWxkcmVuKCkKKyAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRy
ZW47Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXQgc2hvdWxkUmVmcmVzaENoaWxkcmVuKHgpIHsK
KyAgICBzZXQgc2hvdWxkUmVmcmVzaENoaWxkcmVuKHgpCisgICAgewogICAgICAgICB0aGlzLl9z
aG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB4OwogICAgICAgICBpZiAoeCAmJiB0aGlzLmV4cGFuZGVk
KQogICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9maXJl
RGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgX2ZpcmVEaWRDaGFuZ2UoKQogICAgIHsKICAgICAg
ICAgZGVsZXRlIHRoaXMuX2RpZENoYW5nZVRpbWVvdXRJZGVudGlmaWVyOwogCiAgICAgICAgIGlm
ICh0aGlzLnRyZWVPdXRsaW5lKQogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5fdHJlZUVs
ZW1lbnREaWRDaGFuZ2UodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkaWRDaGFuZ2U6IGZ1
bmN0aW9uKCkKKyAgICBkaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnRyZWVP
dXRsaW5lKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjU5LDkgKzY4Niw5IEBAIFRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gUHJldmVudCB0ZWxsaW5nIHRoZSBUcmVlT3V0
bGluZSBtdWx0aXBsZSB0aW1lcyBpbiBhIHJvdyBieSBkZWxheWluZyBpdCB3aXRoIGEgdGltZW91
dC4KICAgICAgICAgaWYgKCF0aGlzLl9kaWRDaGFuZ2VUaW1lb3V0SWRlbnRpZmllcikKICAgICAg
ICAgICAgIHRoaXMuX2RpZENoYW5nZVRpbWVvdXRJZGVudGlmaWVyID0gc2V0VGltZW91dCh0aGlz
Ll9maXJlRGlkQ2hhbmdlLmJpbmQodGhpcyksIDApOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nl
dExpc3RJdGVtTm9kZUNvbnRlbnQ6IGZ1bmN0aW9uKCkKKyAgICBfc2V0TGlzdEl0ZW1Ob2RlQ29u
dGVudCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2xpc3RJdGVtTm9kZSkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTY3OSw0MDEgKzcwNiwzOTMgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFwcGVuZENoaWxkKHRoaXMuX3Rp
dGxlKTsKICAgICAgICAgfQogICAgIH0KLX07CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5hcHBl
bmRDaGlsZCA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5hcHBlbmRDaGlsZDsKLVRyZWVFbGVtZW50
LnByb3RvdHlwZS5pbnNlcnRDaGlsZCA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5pbnNlcnRDaGls
ZDsKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IFRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5yZW1vdmVDaGlsZDsKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZEF0SW5k
ZXggPSBUcmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRBdEluZGV4OwotVHJlZUVsZW1l
bnQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuID0gVHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92
ZUNoaWxkcmVuOwotVHJlZUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZl
ID0gVHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlOworICAgIF9h
dHRhY2goKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9saXN0SXRlbU5vZGUgfHwgdGhpcy5w
YXJlbnQuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbikgeworICAgICAgICAgICAgaWYgKHRoaXMuX2xp
c3RJdGVtTm9kZSAmJiB0aGlzLl9saXN0SXRlbU5vZGUucGFyZW50Tm9kZSkKKyAgICAgICAgICAg
ICAgICB0aGlzLl9saXN0SXRlbU5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9saXN0
SXRlbU5vZGUpOwogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUuX2F0dGFjaCA9IGZ1bmN0aW9uKCkK
LXsKLSAgICBpZiAoIXRoaXMuX2xpc3RJdGVtTm9kZSB8fCB0aGlzLnBhcmVudC5fc2hvdWxkUmVm
cmVzaENoaWxkcmVuKSB7Ci0gICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUgJiYgdGhpcy5f
bGlzdEl0ZW1Ob2RlLnBhcmVudE5vZGUpCi0gICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUu
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9saXN0SXRlbU5vZGUpOworICAgICAgICAgICAg
dGhpcy5fbGlzdEl0ZW1Ob2RlID0gdGhpcy50cmVlT3V0bGluZS5fY2hpbGRyZW5MaXN0Tm9kZS5v
d25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CisgICAgICAgICAgICB0aGlzLl9saXN0
SXRlbU5vZGUudHJlZUVsZW1lbnQgPSB0aGlzOworICAgICAgICAgICAgdGhpcy5fc2V0TGlzdEl0
ZW1Ob2RlQ29udGVudCgpOworICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLnRpdGxlID0g
dGhpcy5fdG9vbHRpcCA/IHRoaXMuX3Rvb2x0aXAgOiAiIjsKIAotICAgICAgICB0aGlzLl9saXN0
SXRlbU5vZGUgPSB0aGlzLnRyZWVPdXRsaW5lLl9jaGlsZHJlbkxpc3ROb2RlLm93bmVyRG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGkiKTsKLSAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLnRyZWVF
bGVtZW50ID0gdGhpczsKLSAgICAgICAgdGhpcy5fc2V0TGlzdEl0ZW1Ob2RlQ29udGVudCgpOwot
ICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUudGl0bGUgPSB0aGlzLl90b29sdGlwID8gdGhpcy5f
dG9vbHRpcCA6ICIiOworICAgICAgICAgICAgaWYgKHRoaXMuaGlkZGVuKQorICAgICAgICAgICAg
ICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsKKyAgICAgICAg
ICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuKQorICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVt
Tm9kZS5jbGFzc0xpc3QuYWRkKCJwYXJlbnQiKTsKKyAgICAgICAgICAgIGlmICh0aGlzLmV4cGFu
ZGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJl
eHBhbmRlZCIpOworICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpCisgICAgICAgICAgICAg
ICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik7CisKKyAgICAg
ICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBX
ZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRNb3VzZURvd24sIGZhbHNlKTsKKyAg
ICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIFdl
Ykluc3BlY3Rvci5UcmVlRWxlbWVudC50cmVlRWxlbWVudFRvZ2dsZWQsIGZhbHNlKTsKKyAgICAg
ICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIFdl
Ykluc3BlY3Rvci5UcmVlRWxlbWVudC50cmVlRWxlbWVudERvdWJsZUNsaWNrZWQsIGZhbHNlKTsK
KworICAgICAgICAgICAgaWYgKHRoaXMub25hdHRhY2gpCisgICAgICAgICAgICAgICAgdGhpcy5v
bmF0dGFjaCh0aGlzKTsKKyAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLmhpZGRlbikKLSAg
ICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsKLSAg
ICAgICAgaWYgKHRoaXMuaGFzQ2hpbGRyZW4pCi0gICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5v
ZGUuY2xhc3NMaXN0LmFkZCgicGFyZW50Iik7Ci0gICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKQot
ICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoImV4cGFuZGVkIik7
CisgICAgICAgIHZhciBuZXh0U2libGluZyA9IG51bGw7CisgICAgICAgIGlmICh0aGlzLm5leHRT
aWJsaW5nICYmIHRoaXMubmV4dFNpYmxpbmcuX2xpc3RJdGVtTm9kZSAmJiB0aGlzLm5leHRTaWJs
aW5nLl9saXN0SXRlbU5vZGUucGFyZW50Tm9kZSA9PT0gdGhpcy5wYXJlbnQuX2NoaWxkcmVuTGlz
dE5vZGUpCisgICAgICAgICAgICBuZXh0U2libGluZyA9IHRoaXMubmV4dFNpYmxpbmcuX2xpc3RJ
dGVtTm9kZTsKKyAgICAgICAgdGhpcy5wYXJlbnQuX2NoaWxkcmVuTGlzdE5vZGUuaW5zZXJ0QmVm
b3JlKHRoaXMuX2xpc3RJdGVtTm9kZSwgbmV4dFNpYmxpbmcpOworICAgICAgICBpZiAodGhpcy5f
Y2hpbGRyZW5MaXN0Tm9kZSkKKyAgICAgICAgICAgIHRoaXMucGFyZW50Ll9jaGlsZHJlbkxpc3RO
b2RlLmluc2VydEJlZm9yZSh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLCB0aGlzLl9saXN0SXRlbU5v
ZGUubmV4dFNpYmxpbmcpOwogICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkKLSAgICAgICAgICAg
IHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOwotCi0gICAgICAg
IHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBUcmVlRWxl
bWVudC50cmVlRWxlbWVudE1vdXNlRG93biwgZmFsc2UpOwotICAgICAgICB0aGlzLl9saXN0SXRl
bU5vZGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBUcmVlRWxlbWVudC50cmVlRWxlbWVudFRv
Z2dsZWQsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVu
ZXIoImRibGNsaWNrIiwgVHJlZUVsZW1lbnQudHJlZUVsZW1lbnREb3VibGVDbGlja2VkLCBmYWxz
ZSk7Ci0KLSAgICAgICAgaWYgKHRoaXMub25hdHRhY2gpCi0gICAgICAgICAgICB0aGlzLm9uYXR0
YWNoKHRoaXMpOworICAgICAgICAgICAgdGhpcy5zZWxlY3QoKTsKKyAgICAgICAgaWYgKHRoaXMu
ZXhwYW5kZWQpCisgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOwogICAgIH0KIAotICAgIHZhciBu
ZXh0U2libGluZyA9IG51bGw7Ci0gICAgaWYgKHRoaXMubmV4dFNpYmxpbmcgJiYgdGhpcy5uZXh0
U2libGluZy5fbGlzdEl0ZW1Ob2RlICYmIHRoaXMubmV4dFNpYmxpbmcuX2xpc3RJdGVtTm9kZS5w
YXJlbnROb2RlID09PSB0aGlzLnBhcmVudC5fY2hpbGRyZW5MaXN0Tm9kZSkKLSAgICAgICAgbmV4
dFNpYmxpbmcgPSB0aGlzLm5leHRTaWJsaW5nLl9saXN0SXRlbU5vZGU7Ci0gICAgdGhpcy5wYXJl
bnQuX2NoaWxkcmVuTGlzdE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX2xpc3RJdGVtTm9kZSwgbmV4
dFNpYmxpbmcpOwotICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKQotICAgICAgICB0aGlz
LnBhcmVudC5fY2hpbGRyZW5MaXN0Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5fY2hpbGRyZW5MaXN0
Tm9kZSwgdGhpcy5fbGlzdEl0ZW1Ob2RlLm5leHRTaWJsaW5nKTsKLSAgICBpZiAodGhpcy5zZWxl
Y3RlZCkKLSAgICAgICAgdGhpcy5zZWxlY3QoKTsKLSAgICBpZiAodGhpcy5leHBhbmRlZCkKLSAg
ICAgICAgdGhpcy5leHBhbmQoKTsKLX07CisgICAgX2RldGFjaCgpCisgICAgeworICAgICAgICBp
ZiAodGhpcy5vbmRldGFjaCkKKyAgICAgICAgICAgIHRoaXMub25kZXRhY2godGhpcyk7CisgICAg
ICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUgJiYgdGhpcy5fbGlzdEl0ZW1Ob2RlLnBhcmVudE5v
ZGUpCisgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZCh0aGlzLl9saXN0SXRlbU5vZGUpOworICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9k
ZSAmJiB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLnBhcmVudE5vZGUpCisgICAgICAgICAgICB0aGlz
Ll9jaGlsZHJlbkxpc3ROb2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fY2hpbGRyZW5M
aXN0Tm9kZSk7CisgICAgfQogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUuX2RldGFjaCA9IGZ1bmN0
aW9uKCkKLXsKLSAgICBpZiAodGhpcy5vbmRldGFjaCkKLSAgICAgICAgdGhpcy5vbmRldGFjaCh0
aGlzKTsKLSAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlICYmIHRoaXMuX2xpc3RJdGVtTm9kZS5w
YXJlbnROb2RlKQotICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZCh0aGlzLl9saXN0SXRlbU5vZGUpOwotICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2Rl
ICYmIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZSkKLSAgICAgICAgdGhpcy5fY2hp
bGRyZW5MaXN0Tm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2NoaWxkcmVuTGlzdE5v
ZGUpOwotfTsKKyAgICBzdGF0aWMgdHJlZUVsZW1lbnRNb3VzZURvd24oZXZlbnQpCisgICAgewor
ICAgICAgICB2YXIgZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7CisgICAgICAgIGlmICgh
ZWxlbWVudCB8fCAhZWxlbWVudC50cmVlRWxlbWVudCB8fCAhZWxlbWVudC50cmVlRWxlbWVudC5z
ZWxlY3RhYmxlKQorICAgICAgICAgICAgcmV0dXJuOwogCi1UcmVlRWxlbWVudC50cmVlRWxlbWVu
dE1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIHZhciBlbGVtZW50ID0gZXZlbnQu
Y3VycmVudFRhcmdldDsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQudHJlZUVsZW1lbnQg
fHwgIWVsZW1lbnQudHJlZUVsZW1lbnQuc2VsZWN0YWJsZSkKLSAgICAgICAgcmV0dXJuOworICAg
ICAgICBpZiAoZWxlbWVudC50cmVlRWxlbWVudC5pc0V2ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFu
Z2xlKGV2ZW50KSkgeworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgaWYgKGVsZW1lbnQudHJlZUVsZW1lbnQu
aXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCkpIHsKLSAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBlbGVtZW50LnRyZWVF
bGVtZW50LnNlbGVjdE9uTW91c2VEb3duKGV2ZW50KTsKICAgICB9CiAKLSAgICBlbGVtZW50LnRy
ZWVFbGVtZW50LnNlbGVjdE9uTW91c2VEb3duKGV2ZW50KTsKLX07CisgICAgc3RhdGljIHRyZWVF
bGVtZW50VG9nZ2xlZChldmVudCkKKyAgICB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZXZlbnQu
Y3VycmVudFRhcmdldDsKKyAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LnRyZWVFbGVt
ZW50KQorICAgICAgICAgICAgcmV0dXJuOwogCi1UcmVlRWxlbWVudC50cmVlRWxlbWVudFRvZ2ds
ZWQgPSBmdW5jdGlvbihldmVudCkKLXsKLSAgICB2YXIgZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRU
YXJnZXQ7Ci0gICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LnRyZWVFbGVtZW50KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICB2YXIgdG9nZ2xlT25DbGljayA9IGVsZW1lbnQudHJlZUVsZW1lbnQu
dG9nZ2xlT25DbGljayAmJiAhZWxlbWVudC50cmVlRWxlbWVudC5zZWxlY3RhYmxlOwotICAgIHZh
ciBpc0luVHJpYW5nbGUgPSBlbGVtZW50LnRyZWVFbGVtZW50LmlzRXZlbnRXaXRoaW5EaXNjbG9z
dXJlVHJpYW5nbGUoZXZlbnQpOwotICAgIGlmICghdG9nZ2xlT25DbGljayAmJiAhaXNJblRyaWFu
Z2xlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZWxlbWVudC50cmVlRWxlbWVudC5leHBh
bmRlZCkgewotICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KQotICAgICAgICAgICAgZWxlbWVudC50
cmVlRWxlbWVudC5jb2xsYXBzZVJlY3Vyc2l2ZWx5KCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuY29sbGFwc2UoKTsKLSAgICB9IGVsc2UgewotICAgICAg
ICBpZiAoZXZlbnQuYWx0S2V5KQotICAgICAgICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5leHBh
bmRSZWN1cnNpdmVseSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbGVtZW50LnRyZWVF
bGVtZW50LmV4cGFuZCgpOwotICAgIH0KLSAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLX07
CisgICAgICAgIHZhciB0b2dnbGVPbkNsaWNrID0gZWxlbWVudC50cmVlRWxlbWVudC50b2dnbGVP
bkNsaWNrICYmICFlbGVtZW50LnRyZWVFbGVtZW50LnNlbGVjdGFibGU7CisgICAgICAgIHZhciBp
c0luVHJpYW5nbGUgPSBlbGVtZW50LnRyZWVFbGVtZW50LmlzRXZlbnRXaXRoaW5EaXNjbG9zdXJl
VHJpYW5nbGUoZXZlbnQpOworICAgICAgICBpZiAoIXRvZ2dsZU9uQ2xpY2sgJiYgIWlzSW5Ucmlh
bmdsZSkKKyAgICAgICAgICAgIHJldHVybjsKIAotVHJlZUVsZW1lbnQudHJlZUVsZW1lbnREb3Vi
bGVDbGlja2VkID0gZnVuY3Rpb24oZXZlbnQpCi17Ci0gICAgdmFyIGVsZW1lbnQgPSBldmVudC5j
dXJyZW50VGFyZ2V0OwotICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC50cmVlRWxlbWVudCkK
LSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoZWxlbWVudC50cmVlRWxlbWVudC5leHBhbmRl
ZCkgeworICAgICAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkKKyAgICAgICAgICAgICAgICBlbGVt
ZW50LnRyZWVFbGVtZW50LmNvbGxhcHNlUmVjdXJzaXZlbHkoKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50LmNvbGxhcHNlKCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KQorICAgICAgICAgICAgICAg
IGVsZW1lbnQudHJlZUVsZW1lbnQuZXhwYW5kUmVjdXJzaXZlbHkoKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50LmV4cGFuZCgpOworICAgICAg
ICB9CisgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0KIAotICAgIGlmIChl
bGVtZW50LnRyZWVFbGVtZW50LmlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQp
KQotICAgICAgICByZXR1cm47CisgICAgc3RhdGljIHRyZWVFbGVtZW50RG91YmxlQ2xpY2tlZChl
dmVudCkKKyAgICB7CisgICAgICAgIHZhciBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDsK
KyAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFlbGVtZW50LnRyZWVFbGVtZW50KQorICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKGVsZW1lbnQudHJlZUVsZW1lbnQub25kYmxjbGljaykKLSAg
ICAgICAgZWxlbWVudC50cmVlRWxlbWVudC5vbmRibGNsaWNrLmNhbGwoZWxlbWVudC50cmVlRWxl
bWVudCwgZXZlbnQpOwotICAgIGVsc2UgaWYgKGVsZW1lbnQudHJlZUVsZW1lbnQuaGFzQ2hpbGRy
ZW4gJiYgIWVsZW1lbnQudHJlZUVsZW1lbnQuZXhwYW5kZWQpCi0gICAgICAgIGVsZW1lbnQudHJl
ZUVsZW1lbnQuZXhwYW5kKCk7Ci19OworICAgICAgICBpZiAoZWxlbWVudC50cmVlRWxlbWVudC5p
c0V2ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlKGV2ZW50KSkKKyAgICAgICAgICAgIHJldHVy
bjsKIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLmNvbGxhcHNlID0gZnVuY3Rpb24oKQotewotICAg
IGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCi0gICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFz
c0xpc3QucmVtb3ZlKCJleHBhbmRlZCIpOwotICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2Rl
KQotICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLmNsYXNzTGlzdC5yZW1vdmUoImV4cGFu
ZGVkIik7CisgICAgICAgIGlmIChlbGVtZW50LnRyZWVFbGVtZW50Lm9uZGJsY2xpY2spCisgICAg
ICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50Lm9uZGJsY2xpY2suY2FsbChlbGVtZW50LnRyZWVF
bGVtZW50LCBldmVudCk7CisgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQudHJlZUVsZW1lbnQuaGFz
Q2hpbGRyZW4gJiYgIWVsZW1lbnQudHJlZUVsZW1lbnQuZXhwYW5kZWQpCisgICAgICAgICAgICBl
bGVtZW50LnRyZWVFbGVtZW50LmV4cGFuZCgpOworICAgIH0KIAotICAgIHRoaXMuZXhwYW5kZWQg
PSBmYWxzZTsKLSAgICBpZiAodGhpcy50cmVlT3V0bGluZSkKLSAgICAgICAgdGhpcy50cmVlT3V0
bGluZS5fdHJlZUVsZW1lbnRzRXhwYW5kZWRTdGF0ZVt0aGlzLmlkZW50aWZpZXJdID0gZmFsc2U7
CisgICAgY29sbGFwc2UoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2xpc3RJdGVtTm9kZSkK
KyAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRl
ZCIpOworICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKKyAgICAgICAgICAgIHRo
aXMuX2NoaWxkcmVuTGlzdE5vZGUuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kZWQiKTsKIAotICAg
IGlmICh0aGlzLm9uY29sbGFwc2UpCi0gICAgICAgIHRoaXMub25jb2xsYXBzZSh0aGlzKTsKKyAg
ICAgICAgdGhpcy5leHBhbmRlZCA9IGZhbHNlOworICAgICAgICBpZiAodGhpcy50cmVlT3V0bGlu
ZSkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0V4cGFuZGVkU3Rh
dGVbdGhpcy5pZGVudGlmaWVyXSA9IGZhbHNlOwogCi0gICAgaWYgKHRoaXMudHJlZU91dGxpbmUg
JiYgdGhpcy50cmVlT3V0bGluZS5vbmNvbGxhcHNlKQotICAgICAgICB0aGlzLnRyZWVPdXRsaW5l
Lm9uY29sbGFwc2UodGhpcyk7Ci19OworICAgICAgICBpZiAodGhpcy5vbmNvbGxhcHNlKQorICAg
ICAgICAgICAgdGhpcy5vbmNvbGxhcHNlKHRoaXMpOwogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUu
Y29sbGFwc2VSZWN1cnNpdmVseSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgaXRlbSA9IHRoaXM7
Ci0gICAgd2hpbGUgKGl0ZW0pIHsKLSAgICAgICAgaWYgKGl0ZW0uZXhwYW5kZWQpCi0gICAgICAg
ICAgICBpdGVtLmNvbGxhcHNlKCk7Ci0gICAgICAgIGl0ZW0gPSBpdGVtLnRyYXZlcnNlTmV4dFRy
ZWVFbGVtZW50KGZhbHNlLCB0aGlzLCB0cnVlKTsKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxp
bmUgJiYgdGhpcy50cmVlT3V0bGluZS5vbmNvbGxhcHNlKQorICAgICAgICAgICAgdGhpcy50cmVl
T3V0bGluZS5vbmNvbGxhcHNlKHRoaXMpOwogICAgIH0KLX07CiAKLVRyZWVFbGVtZW50LnByb3Rv
dHlwZS5leHBhbmQgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKHRoaXMuZXhwYW5kZWQgJiYgIXRo
aXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiAmJiB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKQotICAg
ICAgICByZXR1cm47CisgICAgY29sbGFwc2VSZWN1cnNpdmVseSgpCisgICAgeworICAgICAgICB2
YXIgaXRlbSA9IHRoaXM7CisgICAgICAgIHdoaWxlIChpdGVtKSB7CisgICAgICAgICAgICBpZiAo
aXRlbS5leHBhbmRlZCkKKyAgICAgICAgICAgICAgICBpdGVtLmNvbGxhcHNlKCk7CisgICAgICAg
ICAgICBpdGVtID0gaXRlbS50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxzZSwgdGhpcywgdHJ1
ZSk7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICAvLyBTZXQgdGhpcyBiZWZvcmUgb25wb3B1bGF0
ZS4gU2luY2Ugb25wb3B1bGF0ZSBjYW4gYWRkIGVsZW1lbnRzIGFuZCBjYWxsIG9uYWRkLCB0aGlz
IG1ha2VzCi0gICAgLy8gc3VyZSB0aGUgZXhwYW5kZWQgZmxhZyBpcyB0cnVlIGJlZm9yZSBjYWxs
aW5nIHRob3NlIGZ1bmN0aW9ucy4gVGhpcyBwcmV2ZW50cyB0aGUgcG9zc2liaWxpdHkKLSAgICAv
LyBvZiBhbiBpbmZpbml0ZSBsb29wIGlmIG9ucG9wdWxhdGUgb3Igb25hZGQgd2VyZSB0byBjYWxs
IGV4cGFuZC4KKyAgICBleHBhbmQoKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQg
JiYgIXRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiAmJiB0aGlzLl9jaGlsZHJlbkxpc3ROb2Rl
KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgdGhpcy5leHBhbmRlZCA9IHRydWU7Ci0gICAg
aWYgKHRoaXMudHJlZU91dGxpbmUpCi0gICAgICAgIHRoaXMudHJlZU91dGxpbmUuX3RyZWVFbGVt
ZW50c0V4cGFuZGVkU3RhdGVbdGhpcy5pZGVudGlmaWVyXSA9IHRydWU7CisgICAgICAgIC8vIFNl
dCB0aGlzIGJlZm9yZSBvbnBvcHVsYXRlLiBTaW5jZSBvbnBvcHVsYXRlIGNhbiBhZGQgZWxlbWVu
dHMgYW5kIGNhbGwgb25hZGQsIHRoaXMgbWFrZXMKKyAgICAgICAgLy8gc3VyZSB0aGUgZXhwYW5k
ZWQgZmxhZyBpcyB0cnVlIGJlZm9yZSBjYWxsaW5nIHRob3NlIGZ1bmN0aW9ucy4gVGhpcyBwcmV2
ZW50cyB0aGUgcG9zc2liaWxpdHkKKyAgICAgICAgLy8gb2YgYW4gaW5maW5pdGUgbG9vcCBpZiBv
bnBvcHVsYXRlIG9yIG9uYWRkIHdlcmUgdG8gY2FsbCBleHBhbmQuCiAKLSAgICAvLyBJZiB0aGVy
ZSBhcmUgbm8gY2hpbGRyZW4sIHJldHVybi4gV2Ugd2lsbCBiZSBleHBhbmRlZCBvbmNlIHdlIGhh
dmUgY2hpbGRyZW4uCi0gICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuKQotICAgICAgICByZXR1cm47
CisgICAgICAgIHRoaXMuZXhwYW5kZWQgPSB0cnVlOworICAgICAgICBpZiAodGhpcy50cmVlT3V0
bGluZSkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0V4cGFuZGVk
U3RhdGVbdGhpcy5pZGVudGlmaWVyXSA9IHRydWU7CiAKLSAgICBpZiAodGhpcy50cmVlT3V0bGlu
ZSAmJiAoIXRoaXMuX2NoaWxkcmVuTGlzdE5vZGUgfHwgdGhpcy5fc2hvdWxkUmVmcmVzaENoaWxk
cmVuKSkgewotICAgICAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSAmJiB0aGlzLl9jaGls
ZHJlbkxpc3ROb2RlLnBhcmVudE5vZGUpCi0gICAgICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3RO
b2RlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSk7CisgICAg
ICAgIC8vIElmIHRoZXJlIGFyZSBubyBjaGlsZHJlbiwgcmV0dXJuLiBXZSB3aWxsIGJlIGV4cGFu
ZGVkIG9uY2Ugd2UgaGF2ZSBjaGlsZHJlbi4KKyAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVu
KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUg
PSB0aGlzLnRyZWVPdXRsaW5lLl9jaGlsZHJlbkxpc3ROb2RlLm93bmVyRG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgib2wiKTsKLSAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5wYXJlbnRUcmVl
RWxlbWVudCA9IHRoaXM7Ci0gICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUuY2xhc3NMaXN0
LmFkZCgiY2hpbGRyZW4iKTsKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgKCF0aGlz
Ll9jaGlsZHJlbkxpc3ROb2RlIHx8IHRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbikpIHsKKyAg
ICAgICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlICYmIHRoaXMuX2NoaWxkcmVuTGlz
dE5vZGUucGFyZW50Tm9kZSkKKyAgICAgICAgICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2Rl
LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSk7CiAKLSAgICAg
ICAgaWYgKHRoaXMuaGlkZGVuKQotICAgICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5j
bGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsKKyAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5v
ZGUgPSB0aGlzLnRyZWVPdXRsaW5lLl9jaGlsZHJlbkxpc3ROb2RlLm93bmVyRG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgib2wiKTsKKyAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFy
ZW50VHJlZUVsZW1lbnQgPSB0aGlzOworICAgICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9k
ZS5jbGFzc0xpc3QuYWRkKCJjaGlsZHJlbiIpOwogCi0gICAgICAgIHRoaXMub25wb3B1bGF0ZSgp
OworICAgICAgICAgICAgaWYgKHRoaXMuaGlkZGVuKQorICAgICAgICAgICAgICAgIHRoaXMuX2No
aWxkcmVuTGlzdE5vZGUuY2xhc3NMaXN0LmFkZCgiaGlkZGVuIik7CiAKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhp
cy5jaGlsZHJlbltpXS5fYXR0YWNoKCk7CisgICAgICAgICAgICB0aGlzLm9ucG9wdWxhdGUoKTsK
IAotICAgICAgICBkZWxldGUgdGhpcy5fc2hvdWxkUmVmcmVzaENoaWxkcmVuOwotICAgIH0KKyAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkK
KyAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2ldLl9hdHRhY2goKTsKIAotICAgIGlmICh0
aGlzLl9saXN0SXRlbU5vZGUpIHsKLSAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlz
dC5hZGQoImV4cGFuZGVkIik7Ci0gICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlICYm
IHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9kZSAhPT0gdGhpcy5fbGlzdEl0ZW1Ob2Rl
LnBhcmVudE5vZGUpCi0gICAgICAgICAgICB0aGlzLnBhcmVudC5fY2hpbGRyZW5MaXN0Tm9kZS5p
bnNlcnRCZWZvcmUodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSwgdGhpcy5fbGlzdEl0ZW1Ob2RlLm5l
eHRTaWJsaW5nKTsKLSAgICB9CisgICAgICAgICAgICBkZWxldGUgdGhpcy5fc2hvdWxkUmVmcmVz
aENoaWxkcmVuOworICAgICAgICB9CiAKLSAgICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkK
LSAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZS5jbGFzc0xpc3QuYWRkKCJleHBhbmRlZCIp
OworICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlKSB7CisgICAgICAgICAgICB0aGlzLl9s
aXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgiZXhwYW5kZWQiKTsKKyAgICAgICAgICAgIGlmICh0
aGlzLl9jaGlsZHJlbkxpc3ROb2RlICYmIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFyZW50Tm9k
ZSAhPT0gdGhpcy5fbGlzdEl0ZW1Ob2RlLnBhcmVudE5vZGUpCisgICAgICAgICAgICAgICAgdGhp
cy5wYXJlbnQuX2NoaWxkcmVuTGlzdE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuX2NoaWxkcmVuTGlz
dE5vZGUsIHRoaXMuX2xpc3RJdGVtTm9kZS5uZXh0U2libGluZyk7CisgICAgICAgIH0KIAotICAg
IGlmICh0aGlzLm9uZXhwYW5kKQotICAgICAgICB0aGlzLm9uZXhwYW5kKHRoaXMpOworICAgICAg
ICBpZiAodGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKKyAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVu
TGlzdE5vZGUuY2xhc3NMaXN0LmFkZCgiZXhwYW5kZWQiKTsKIAotICAgIGlmICh0aGlzLnRyZWVP
dXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUub25leHBhbmQpCi0gICAgICAgIHRoaXMudHJlZU91
dGxpbmUub25leHBhbmQodGhpcyk7Ci19OworICAgICAgICBpZiAodGhpcy5vbmV4cGFuZCkKKyAg
ICAgICAgICAgIHRoaXMub25leHBhbmQodGhpcyk7CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5l
eHBhbmRSZWN1cnNpdmVseSA9IGZ1bmN0aW9uKG1heERlcHRoKQotewotICAgIHZhciBpdGVtID0g
dGhpczsKLSAgICB2YXIgaW5mbyA9IHt9OwotICAgIHZhciBkZXB0aCA9IDA7Ci0KLSAgICAvLyBU
aGUgSW5zcGVjdG9yIHVzZXMgVHJlZU91dGxpbmVzIHRvIHJlcHJlc2VudHMgb2JqZWN0IHByb3Bl
cnRpZXMsIHNvIHJlY3Vyc2l2ZSBleHBhbnNpb24KLSAgICAvLyBpbiBzb21lIGNhc2UgY2FuIGJl
IGluZmluaXRlLCBzaW5jZSBKYXZhU2NyaXB0IG9iamVjdHMgY2FuIGhvbGQgY2lyY3VsYXIgcmVm
ZXJlbmNlcy4KLSAgICAvLyBTbyBkZWZhdWx0IHRvIGEgcmVjdXJzaW9uIGNhcCBvZiAzIGxldmVs
cywgc2luY2UgdGhhdCBnaXZlcyBmYWlybHkgZ29vZCByZXN1bHRzLgotICAgIGlmIChtYXhEZXB0
aCA9PT0gdW5kZWZpbmVkKQotICAgICAgICBtYXhEZXB0aCA9IDM7Ci0KLSAgICB3aGlsZSAoaXRl
bSkgewotICAgICAgICBpZiAoZGVwdGggPCBtYXhEZXB0aCkKLSAgICAgICAgICAgIGl0ZW0uZXhw
YW5kKCk7Ci0gICAgICAgIGl0ZW0gPSBpdGVtLnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNl
LCB0aGlzLCAoZGVwdGggPj0gbWF4RGVwdGgpLCBpbmZvKTsKLSAgICAgICAgZGVwdGggKz0gaW5m
by5kZXB0aENoYW5nZTsKKyAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhpcy50cmVl
T3V0bGluZS5vbmV4cGFuZCkKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUub25leHBhbmQo
dGhpcyk7CiAgICAgfQotfTsKLQotVHJlZUVsZW1lbnQucHJvdG90eXBlLmhhc0FuY2VzdG9yID0g
ZnVuY3Rpb24oYW5jZXN0b3IpIHsKLSAgICBpZiAoIWFuY2VzdG9yKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICB2YXIgY3VycmVudE5vZGUgPSB0aGlzLnBhcmVudDsKLSAgICB3aGlsZSAo
Y3VycmVudE5vZGUpIHsKLSAgICAgICAgaWYgKGFuY2VzdG9yID09PSBjdXJyZW50Tm9kZSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2Rl
LnBhcmVudDsKKyAgICBleHBhbmRSZWN1cnNpdmVseShtYXhEZXB0aCkKKyAgICB7CisgICAgICAg
IHZhciBpdGVtID0gdGhpczsKKyAgICAgICAgdmFyIGluZm8gPSB7fTsKKyAgICAgICAgdmFyIGRl
cHRoID0gMDsKKworICAgICAgICAvLyBUaGUgSW5zcGVjdG9yIHVzZXMgVHJlZU91dGxpbmVzIHRv
IHJlcHJlc2VudHMgb2JqZWN0IHByb3BlcnRpZXMsIHNvIHJlY3Vyc2l2ZSBleHBhbnNpb24KKyAg
ICAgICAgLy8gaW4gc29tZSBjYXNlIGNhbiBiZSBpbmZpbml0ZSwgc2luY2UgSmF2YVNjcmlwdCBv
YmplY3RzIGNhbiBob2xkIGNpcmN1bGFyIHJlZmVyZW5jZXMuCisgICAgICAgIC8vIFNvIGRlZmF1
bHQgdG8gYSByZWN1cnNpb24gY2FwIG9mIDMgbGV2ZWxzLCBzaW5jZSB0aGF0IGdpdmVzIGZhaXJs
eSBnb29kIHJlc3VsdHMuCisgICAgICAgIGlmIChtYXhEZXB0aCA9PT0gdW5kZWZpbmVkKQorICAg
ICAgICAgICAgbWF4RGVwdGggPSAzOworCisgICAgICAgIHdoaWxlIChpdGVtKSB7CisgICAgICAg
ICAgICBpZiAoZGVwdGggPCBtYXhEZXB0aCkKKyAgICAgICAgICAgICAgICBpdGVtLmV4cGFuZCgp
OworICAgICAgICAgICAgaXRlbSA9IGl0ZW0udHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2Us
IHRoaXMsIChkZXB0aCA+PSBtYXhEZXB0aCksIGluZm8pOworICAgICAgICAgICAgZGVwdGggKz0g
aW5mby5kZXB0aENoYW5nZTsKKyAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBmYWxzZTsK
LX07CisgICAgaGFzQW5jZXN0b3IoYW5jZXN0b3IpCisgICAgICAgIHsKKyAgICAgICAgaWYgKCFh
bmNlc3RvcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotVHJlZUVsZW1lbnQucHJvdG90
eXBlLnJldmVhbCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgY3VycmVudEFuY2VzdG9yID0gdGhp
cy5wYXJlbnQ7Ci0gICAgd2hpbGUgKGN1cnJlbnRBbmNlc3RvciAmJiAhY3VycmVudEFuY2VzdG9y
LnJvb3QpIHsKLSAgICAgICAgaWYgKCFjdXJyZW50QW5jZXN0b3IuZXhwYW5kZWQpCi0gICAgICAg
ICAgICBjdXJyZW50QW5jZXN0b3IuZXhwYW5kKCk7Ci0gICAgICAgIGN1cnJlbnRBbmNlc3RvciA9
IGN1cnJlbnRBbmNlc3Rvci5wYXJlbnQ7CisgICAgICAgIHZhciBjdXJyZW50Tm9kZSA9IHRoaXMu
cGFyZW50OworICAgICAgICB3aGlsZSAoY3VycmVudE5vZGUpIHsKKyAgICAgICAgICAgIGlmIChh
bmNlc3RvciA9PT0gY3VycmVudE5vZGUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudDsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBpZiAodGhpcy5vbnJldmVhbCkK
LSAgICAgICAgdGhpcy5vbnJldmVhbCh0aGlzKTsKLX07CisgICAgcmV2ZWFsKCkKKyAgICB7Cisg
ICAgICAgIHZhciBjdXJyZW50QW5jZXN0b3IgPSB0aGlzLnBhcmVudDsKKyAgICAgICAgd2hpbGUg
KGN1cnJlbnRBbmNlc3RvciAmJiAhY3VycmVudEFuY2VzdG9yLnJvb3QpIHsKKyAgICAgICAgICAg
IGlmICghY3VycmVudEFuY2VzdG9yLmV4cGFuZGVkKQorICAgICAgICAgICAgICAgIGN1cnJlbnRB
bmNlc3Rvci5leHBhbmQoKTsKKyAgICAgICAgICAgIGN1cnJlbnRBbmNlc3RvciA9IGN1cnJlbnRB
bmNlc3Rvci5wYXJlbnQ7CisgICAgICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLnJldmVh
bGVkID0gZnVuY3Rpb24oKQotewotICAgIGlmICh0aGlzLmhpZGRlbikKLSAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAodGhpcy5vbnJldmVhbCkKKyAgICAgICAgICAgIHRoaXMub25y
ZXZlYWwodGhpcyk7CisgICAgfQogCi0gICAgdmFyIGN1cnJlbnRBbmNlc3RvciA9IHRoaXMucGFy
ZW50OwotICAgIHdoaWxlIChjdXJyZW50QW5jZXN0b3IgJiYgIWN1cnJlbnRBbmNlc3Rvci5yb290
KSB7Ci0gICAgICAgIGlmICghY3VycmVudEFuY2VzdG9yLmV4cGFuZGVkKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoY3VycmVudEFuY2VzdG9yLmhpZGRlbikKKyAgICBy
ZXZlYWxlZCgpCisgICAgeworICAgICAgICBpZiAodGhpcy5oaWRkZW4pCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGN1cnJlbnRBbmNlc3RvciA9IGN1cnJlbnRBbmNlc3Rvci5w
YXJlbnQ7Ci0gICAgfQogCi0gICAgcmV0dXJuIHRydWU7Ci19OworICAgICAgICB2YXIgY3VycmVu
dEFuY2VzdG9yID0gdGhpcy5wYXJlbnQ7CisgICAgICAgIHdoaWxlIChjdXJyZW50QW5jZXN0b3Ig
JiYgIWN1cnJlbnRBbmNlc3Rvci5yb290KSB7CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRBbmNl
c3Rvci5leHBhbmRlZCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoY3VycmVudEFuY2VzdG9yLmhpZGRlbikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBjdXJyZW50QW5jZXN0b3IgPSBjdXJyZW50QW5jZXN0b3IucGFyZW50
OworICAgICAgICB9CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5zZWxlY3RPbk1vdXNlRG93biA9
IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIHRoaXMuc2VsZWN0KGZhbHNlLCB0cnVlKTsKLX07Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVj
dCA9IGZ1bmN0aW9uKG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIsIHN1cHByZXNzT25TZWxlY3Qs
IHN1cHByZXNzT25EZXNlbGVjdCkKLXsKLSAgICBpZiAoIXRoaXMudHJlZU91dGxpbmUgfHwgIXRo
aXMuc2VsZWN0YWJsZSkKLSAgICAgICAgcmV0dXJuOworICAgIHNlbGVjdE9uTW91c2VEb3duKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5zZWxlY3QoZmFsc2UsIHRydWUpOworICAgIH0KIAot
ICAgIGlmICh0aGlzLnNlbGVjdGVkICYmICF0aGlzLnRyZWVPdXRsaW5lLmFsbG93c1JlcGVhdFNl
bGVjdGlvbikKLSAgICAgICAgcmV0dXJuOworICAgIHNlbGVjdChvbWl0Rm9jdXMsIHNlbGVjdGVk
QnlVc2VyLCBzdXBwcmVzc09uU2VsZWN0LCBzdXBwcmVzc09uRGVzZWxlY3QpCisgICAgeworICAg
ICAgICBpZiAoIXRoaXMudHJlZU91dGxpbmUgfHwgIXRoaXMuc2VsZWN0YWJsZSkKKyAgICAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmICghb21pdEZvY3VzKQotICAgICAgICB0aGlzLnRyZWVPdXRs
aW5lLl9jaGlsZHJlbkxpc3ROb2RlLmZvY3VzKCk7CisgICAgICAgIGlmICh0aGlzLnNlbGVjdGVk
ICYmICF0aGlzLnRyZWVPdXRsaW5lLmFsbG93c1JlcGVhdFNlbGVjdGlvbikKKyAgICAgICAgICAg
IHJldHVybjsKIAotICAgIC8vIEZvY3VzaW5nIG9uIGFub3RoZXIgbm9kZSBtYXkgZGV0YWNoICJ0
aGlzIiBmcm9tIHRyZWUuCi0gICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lKQotICAgICAgICByZXR1
cm47CisgICAgICAgIGlmICghb21pdEZvY3VzKQorICAgICAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZS5fY2hpbGRyZW5MaXN0Tm9kZS5mb2N1cygpOwogCi0gICAgdGhpcy50cmVlT3V0bGluZS5wcm9j
ZXNzaW5nU2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKKyAgICAgICAgLy8gRm9jdXNpbmcgb24gYW5v
dGhlciBub2RlIG1heSBkZXRhY2ggInRoaXMiIGZyb20gdHJlZS4KKyAgICAgICAgaWYgKCF0aGlz
LnRyZWVPdXRsaW5lKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCF0aGlzLnNlbGVj
dGVkKSB7Ci0gICAgICAgIGlmICh0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQp
Ci0gICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQuZGVzZWxl
Y3Qoc3VwcHJlc3NPbkRlc2VsZWN0KTsKKyAgICAgICAgdGhpcy50cmVlT3V0bGluZS5wcm9jZXNz
aW5nU2VsZWN0aW9uQ2hhbmdlID0gdHJ1ZTsKIAotICAgICAgICB0aGlzLnNlbGVjdGVkID0gdHJ1
ZTsKLSAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50ID0gdGhpczsK
KyAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkKSB7CisgICAgICAgICAgICBpZiAodGhpcy50cmVl
T3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHRoaXMudHJlZU91
dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudC5kZXNlbGVjdChzdXBwcmVzc09uRGVzZWxlY3QpOwog
Ci0gICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCi0gICAgICAgICAgICB0aGlzLl9saXN0
SXRlbU5vZGUuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKLSAgICB9CisgICAgICAgICAgICB0
aGlzLnNlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2VsZWN0
ZWRUcmVlRWxlbWVudCA9IHRoaXM7CiAKLSAgICBpZiAodGhpcy5vbnNlbGVjdCAmJiAhc3VwcHJl
c3NPblNlbGVjdCkKLSAgICAgICAgdGhpcy5vbnNlbGVjdCh0aGlzLCBzZWxlY3RlZEJ5VXNlcik7
CisgICAgICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlKQorICAgICAgICAgICAgICAgIHRo
aXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOworICAgICAgICB9CiAK
LSAgICBpZiAodGhpcy50cmVlT3V0bGluZS5vbnNlbGVjdCAmJiAhc3VwcHJlc3NPblNlbGVjdCkK
LSAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vbnNlbGVjdCh0aGlzLCBzZWxlY3RlZEJ5VXNlcik7
CisgICAgICAgIGlmICh0aGlzLm9uc2VsZWN0ICYmICFzdXBwcmVzc09uU2VsZWN0KQorICAgICAg
ICAgICAgdGhpcy5vbnNlbGVjdCh0aGlzLCBzZWxlY3RlZEJ5VXNlcik7CiAKLSAgICBkZWxldGUg
dGhpcy50cmVlT3V0bGluZS5wcm9jZXNzaW5nU2VsZWN0aW9uQ2hhbmdlOwotfTsKKyAgICAgICAg
aWYgKHRoaXMudHJlZU91dGxpbmUub25zZWxlY3QgJiYgIXN1cHByZXNzT25TZWxlY3QpCisgICAg
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uc2VsZWN0KHRoaXMsIHNlbGVjdGVkQnlVc2VyKTsK
IAotVHJlZUVsZW1lbnQucHJvdG90eXBlLnJldmVhbEFuZFNlbGVjdCA9IGZ1bmN0aW9uKG9taXRG
b2N1cywgc2VsZWN0ZWRCeVVzZXIsIHN1cHByZXNzT25TZWxlY3QsIHN1cHByZXNzT25EZXNlbGVj
dCkKLXsKLSAgICB0aGlzLnJldmVhbCgpOwotICAgIHRoaXMuc2VsZWN0KG9taXRGb2N1cywgc2Vs
ZWN0ZWRCeVVzZXIsIHN1cHByZXNzT25TZWxlY3QsIHN1cHByZXNzT25EZXNlbGVjdCk7Ci19Owor
ICAgICAgICBkZWxldGUgdGhpcy50cmVlT3V0bGluZS5wcm9jZXNzaW5nU2VsZWN0aW9uQ2hhbmdl
OworICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLmRlc2VsZWN0ID0gZnVuY3Rpb24oc3Vw
cHJlc3NPbkRlc2VsZWN0KQotewotICAgIGlmICghdGhpcy50cmVlT3V0bGluZSB8fCB0aGlzLnRy
ZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQgIT09IHRoaXMgfHwgIXRoaXMuc2VsZWN0ZWQp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXZlYWxBbmRTZWxlY3Qob21pdEZvY3VzLCBz
ZWxlY3RlZEJ5VXNlciwgc3VwcHJlc3NPblNlbGVjdCwgc3VwcHJlc3NPbkRlc2VsZWN0KQorICAg
IHsKKyAgICAgICAgdGhpcy5yZXZlYWwoKTsKKyAgICAgICAgdGhpcy5zZWxlY3Qob21pdEZvY3Vz
LCBzZWxlY3RlZEJ5VXNlciwgc3VwcHJlc3NPblNlbGVjdCwgc3VwcHJlc3NPbkRlc2VsZWN0KTsK
KyAgICB9CiAKLSAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7Ci0gICAgdGhpcy50cmVlT3V0bGlu
ZS5zZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICBkZXNlbGVjdChzdXBwcmVzc09uRGVz
ZWxlY3QpCisgICAgeworICAgICAgICBpZiAoIXRoaXMudHJlZU91dGxpbmUgfHwgdGhpcy50cmVl
T3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50ICE9PSB0aGlzIHx8ICF0aGlzLnNlbGVjdGVkKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKHRoaXMuX2xpc3RJdGVtTm9kZSkK
LSAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIik7
CisgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy50cmVlT3V0bGlu
ZS5zZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKIAotICAgIGlmICh0aGlzLm9uZGVzZWxlY3Qg
JiYgIXN1cHByZXNzT25EZXNlbGVjdCkKLSAgICAgICAgdGhpcy5vbmRlc2VsZWN0KHRoaXMpOwor
ICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlKQorICAgICAgICAgICAgdGhpcy5fbGlzdEl0
ZW1Ob2RlLmNsYXNzTGlzdC5yZW1vdmUoInNlbGVjdGVkIik7CiAKLSAgICBpZiAodGhpcy50cmVl
T3V0bGluZS5vbmRlc2VsZWN0ICYmICFzdXBwcmVzc09uRGVzZWxlY3QpCi0gICAgICAgIHRoaXMu
dHJlZU91dGxpbmUub25kZXNlbGVjdCh0aGlzKTsKKyAgICAgICAgaWYgKHRoaXMub25kZXNlbGVj
dCAmJiAhc3VwcHJlc3NPbkRlc2VsZWN0KQorICAgICAgICAgICAgdGhpcy5vbmRlc2VsZWN0KHRo
aXMpOwogCi0gICAgcmV0dXJuIHRydWU7Ci19OworICAgICAgICBpZiAodGhpcy50cmVlT3V0bGlu
ZS5vbmRlc2VsZWN0ICYmICFzdXBwcmVzc09uRGVzZWxlY3QpCisgICAgICAgICAgICB0aGlzLnRy
ZWVPdXRsaW5lLm9uZGVzZWxlY3QodGhpcyk7CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnBv
cHVsYXRlID0gZnVuY3Rpb24oKQotewotICAgIC8vIE92ZXJyaWRlbiBieSBzdWJjbGFzc2VzLgot
fTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUu
dHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihza2lwVW5yZXZlYWxlZCwgc3RheVdp
dGhpbiwgZG9udFBvcHVsYXRlLCBpbmZvKQotewotICAgIGlmICghZG9udFBvcHVsYXRlICYmIHRo
aXMuaGFzQ2hpbGRyZW4pCi0gICAgICAgIHRoaXMub25wb3B1bGF0ZS5jYWxsKHRoaXMpOyAvLyBG
SVhNRTogVGhpcyBzaG91bGRuJ3QgbmVlZCB0byB1c2UgY2FsbCwgYnV0IHRoaXMgaXMgd29ya2lu
ZyBhcm91bmQgYSBKU0MgYnVnLiBodHRwczovL3dlYmtpdC5vcmcvYi83NDgxMQorICAgIG9ucG9w
dWxhdGUoKQorICAgIHsKKyAgICAgICAgLy8gT3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMuCisgICAg
fQogCi0gICAgaWYgKGluZm8pCi0gICAgICAgIGluZm8uZGVwdGhDaGFuZ2UgPSAwOworICAgIHRy
YXZlcnNlTmV4dFRyZWVFbGVtZW50KHNraXBVbnJldmVhbGVkLCBzdGF5V2l0aGluLCBkb250UG9w
dWxhdGUsIGluZm8pCisgICAgeworICAgICAgICBpZiAoIWRvbnRQb3B1bGF0ZSAmJiB0aGlzLmhh
c0NoaWxkcmVuKQorICAgICAgICAgICAgdGhpcy5vbnBvcHVsYXRlLmNhbGwodGhpcyk7IC8vIEZJ
WE1FOiBUaGlzIHNob3VsZG4ndCBuZWVkIHRvIHVzZSBjYWxsLCBidXQgdGhpcyBpcyB3b3JraW5n
IGFyb3VuZCBhIEpTQyBidWcuIGh0dHBzOi8vd2Via2l0Lm9yZy9iLzc0ODExCiAKLSAgICB2YXIg
ZWxlbWVudCA9IHNraXBVbnJldmVhbGVkID8gKHRoaXMucmV2ZWFsZWQoKSA/IHRoaXMuY2hpbGRy
ZW5bMF0gOiBudWxsKSA6IHRoaXMuY2hpbGRyZW5bMF07Ci0gICAgaWYgKGVsZW1lbnQgJiYgKCFz
a2lwVW5yZXZlYWxlZCB8fCAoc2tpcFVucmV2ZWFsZWQgJiYgdGhpcy5leHBhbmRlZCkpKSB7CiAg
ICAgICAgIGlmIChpbmZvKQotICAgICAgICAgICAgaW5mby5kZXB0aENoYW5nZSA9IDE7Ci0gICAg
ICAgIHJldHVybiBlbGVtZW50OwotICAgIH0KKyAgICAgICAgICAgIGluZm8uZGVwdGhDaGFuZ2Ug
PSAwOwogCi0gICAgaWYgKHRoaXMgPT09IHN0YXlXaXRoaW4pCi0gICAgICAgIHJldHVybiBudWxs
OworICAgICAgICB2YXIgZWxlbWVudCA9IHNraXBVbnJldmVhbGVkID8gKHRoaXMucmV2ZWFsZWQo
KSA/IHRoaXMuY2hpbGRyZW5bMF0gOiBudWxsKSA6IHRoaXMuY2hpbGRyZW5bMF07CisgICAgICAg
IGlmIChlbGVtZW50ICYmICghc2tpcFVucmV2ZWFsZWQgfHwgKHNraXBVbnJldmVhbGVkICYmIHRo
aXMuZXhwYW5kZWQpKSkgeworICAgICAgICAgICAgaWYgKGluZm8pCisgICAgICAgICAgICAgICAg
aW5mby5kZXB0aENoYW5nZSA9IDE7CisgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAg
ICAgfQogCi0gICAgZWxlbWVudCA9IHNraXBVbnJldmVhbGVkID8gKHRoaXMucmV2ZWFsZWQoKSA/
IHRoaXMubmV4dFNpYmxpbmcgOiBudWxsKSA6IHRoaXMubmV4dFNpYmxpbmc7Ci0gICAgaWYgKGVs
ZW1lbnQpCi0gICAgICAgIHJldHVybiBlbGVtZW50OworICAgICAgICBpZiAodGhpcyA9PT0gc3Rh
eVdpdGhpbikKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgZWxlbWVudCA9IHRoaXM7
Ci0gICAgd2hpbGUgKGVsZW1lbnQgJiYgIWVsZW1lbnQucm9vdCAmJiAhKHNraXBVbnJldmVhbGVk
ID8gKGVsZW1lbnQucmV2ZWFsZWQoKSA/IGVsZW1lbnQubmV4dFNpYmxpbmcgOiBudWxsKSA6IGVs
ZW1lbnQubmV4dFNpYmxpbmcpICYmIGVsZW1lbnQucGFyZW50ICE9PSBzdGF5V2l0aGluKSB7Ci0g
ICAgICAgIGlmIChpbmZvKQotICAgICAgICAgICAgaW5mby5kZXB0aENoYW5nZSAtPSAxOwotICAg
ICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnQ7Ci0gICAgfQorICAgICAgICBlbGVtZW50ID0g
c2tpcFVucmV2ZWFsZWQgPyAodGhpcy5yZXZlYWxlZCgpID8gdGhpcy5uZXh0U2libGluZyA6IG51
bGwpIDogdGhpcy5uZXh0U2libGluZzsKKyAgICAgICAgaWYgKGVsZW1lbnQpCisgICAgICAgICAg
ICByZXR1cm4gZWxlbWVudDsKIAotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuIG51
bGw7CisgICAgICAgIGVsZW1lbnQgPSB0aGlzOworICAgICAgICB3aGlsZSAoZWxlbWVudCAmJiAh
ZWxlbWVudC5yb290ICYmICEoc2tpcFVucmV2ZWFsZWQgPyAoZWxlbWVudC5yZXZlYWxlZCgpID8g
ZWxlbWVudC5uZXh0U2libGluZyA6IG51bGwpIDogZWxlbWVudC5uZXh0U2libGluZykgJiYgZWxl
bWVudC5wYXJlbnQgIT09IHN0YXlXaXRoaW4pIHsKKyAgICAgICAgICAgIGlmIChpbmZvKQorICAg
ICAgICAgICAgICAgIGluZm8uZGVwdGhDaGFuZ2UgLT0gMTsKKyAgICAgICAgICAgIGVsZW1lbnQg
PSBlbGVtZW50LnBhcmVudDsKKyAgICAgICAgfQogCi0gICAgcmV0dXJuIChza2lwVW5yZXZlYWxl
ZCA/IChlbGVtZW50LnJldmVhbGVkKCkgPyBlbGVtZW50Lm5leHRTaWJsaW5nIDogbnVsbCkgOiBl
bGVtZW50Lm5leHRTaWJsaW5nKTsKLX07CisgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAg
ICAgIHJldHVybiBudWxsOwogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUudHJhdmVyc2VQcmV2aW91
c1RyZWVFbGVtZW50ID0gZnVuY3Rpb24oc2tpcFVucmV2ZWFsZWQsIGRvbnRQb3B1bGF0ZSkKLXsK
LSAgICB2YXIgZWxlbWVudCA9IHNraXBVbnJldmVhbGVkID8gKHRoaXMucmV2ZWFsZWQoKSA/IHRo
aXMucHJldmlvdXNTaWJsaW5nIDogbnVsbCkgOiB0aGlzLnByZXZpb3VzU2libGluZzsKLSAgICBp
ZiAoIWRvbnRQb3B1bGF0ZSAmJiBlbGVtZW50ICYmIGVsZW1lbnQuaGFzQ2hpbGRyZW4pCi0gICAg
ICAgIGVsZW1lbnQub25wb3B1bGF0ZSgpOworICAgICAgICByZXR1cm4gKHNraXBVbnJldmVhbGVk
ID8gKGVsZW1lbnQucmV2ZWFsZWQoKSA/IGVsZW1lbnQubmV4dFNpYmxpbmcgOiBudWxsKSA6IGVs
ZW1lbnQubmV4dFNpYmxpbmcpOworICAgIH0KIAotICAgIHdoaWxlIChlbGVtZW50ICYmIChza2lw
VW5yZXZlYWxlZCA/IChlbGVtZW50LnJldmVhbGVkKCkgJiYgZWxlbWVudC5leHBhbmRlZCA/IGVs
ZW1lbnQuY2hpbGRyZW5bZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxXSA6IG51bGwpIDogZWxl
bWVudC5jaGlsZHJlbltlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdKSkgewotICAgICAgICBp
ZiAoIWRvbnRQb3B1bGF0ZSAmJiBlbGVtZW50Lmhhc0NoaWxkcmVuKQorICAgIHRyYXZlcnNlUHJl
dmlvdXNUcmVlRWxlbWVudChza2lwVW5yZXZlYWxlZCwgZG9udFBvcHVsYXRlKQorICAgIHsKKyAg
ICAgICAgdmFyIGVsZW1lbnQgPSBza2lwVW5yZXZlYWxlZCA/ICh0aGlzLnJldmVhbGVkKCkgPyB0
aGlzLnByZXZpb3VzU2libGluZyA6IG51bGwpIDogdGhpcy5wcmV2aW91c1NpYmxpbmc7CisgICAg
ICAgIGlmICghZG9udFBvcHVsYXRlICYmIGVsZW1lbnQgJiYgZWxlbWVudC5oYXNDaGlsZHJlbikK
ICAgICAgICAgICAgIGVsZW1lbnQub25wb3B1bGF0ZSgpOwotICAgICAgICBlbGVtZW50ID0gKHNr
aXBVbnJldmVhbGVkID8gKGVsZW1lbnQucmV2ZWFsZWQoKSAmJiBlbGVtZW50LmV4cGFuZGVkID8g
ZWxlbWVudC5jaGlsZHJlbltlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFdIDogbnVsbCkgOiBl
bGVtZW50LmNoaWxkcmVuW2VsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMV0pOwotICAgIH0KIAot
ICAgIGlmIChlbGVtZW50KQotICAgICAgICByZXR1cm4gZWxlbWVudDsKKyAgICAgICAgd2hpbGUg
KGVsZW1lbnQgJiYgKHNraXBVbnJldmVhbGVkID8gKGVsZW1lbnQucmV2ZWFsZWQoKSAmJiBlbGVt
ZW50LmV4cGFuZGVkID8gZWxlbWVudC5jaGlsZHJlbltlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAt
IDFdIDogbnVsbCkgOiBlbGVtZW50LmNoaWxkcmVuW2VsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0g
MV0pKSB7CisgICAgICAgICAgICBpZiAoIWRvbnRQb3B1bGF0ZSAmJiBlbGVtZW50Lmhhc0NoaWxk
cmVuKQorICAgICAgICAgICAgICAgIGVsZW1lbnQub25wb3B1bGF0ZSgpOworICAgICAgICAgICAg
ZWxlbWVudCA9IChza2lwVW5yZXZlYWxlZCA/IChlbGVtZW50LnJldmVhbGVkKCkgJiYgZWxlbWVu
dC5leHBhbmRlZCA/IGVsZW1lbnQuY2hpbGRyZW5bZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAx
XSA6IG51bGwpIDogZWxlbWVudC5jaGlsZHJlbltlbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDFd
KTsKKyAgICAgICAgfQogCi0gICAgaWYgKCF0aGlzLnBhcmVudCB8fCB0aGlzLnBhcmVudC5yb290
KQotICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgaWYgKGVsZW1lbnQpCisgICAgICAgICAg
ICByZXR1cm4gZWxlbWVudDsKIAotICAgIHJldHVybiB0aGlzLnBhcmVudDsKLX07CisgICAgICAg
IGlmICghdGhpcy5wYXJlbnQgfHwgdGhpcy5wYXJlbnQucm9vdCkKKyAgICAgICAgICAgIHJldHVy
biBudWxsOwogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVU
cmlhbmdsZSA9IGZ1bmN0aW9uKGV2ZW50KQotewotICAgIGlmICghZG9jdW1lbnQuY29udGFpbnMo
dGhpcy5fbGlzdEl0ZW1Ob2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1
cm4gdGhpcy5wYXJlbnQ7CisgICAgfQogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgdXNl
IGdldENvbXB1dGVkU3R5bGUoKS4gRm9yIHRoYXQgd2UgbmVlZCB0byBnZXQgcmlkIG9mIHVzaW5n
IDo6YmVmb3JlIGZvciBkaXNjbG9zdXJlIHRyaWFuZ2xlLiAoaHR0cDovL3dlYmsuaXQvNzQ0NDYp
Ci0gICAgdmFyIGNvbXB1dGVkTGVmdFBhZGRpbmcgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0
aGlzLl9saXN0SXRlbU5vZGUpLmdldFByb3BlcnR5Q1NTVmFsdWUoInBhZGRpbmctbGVmdCIpLmdl
dEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX1BYKTsKLSAgICB2YXIgbGVmdCA9IHRo
aXMuX2xpc3RJdGVtTm9kZS50b3RhbE9mZnNldExlZnQgKyBjb21wdXRlZExlZnRQYWRkaW5nOwot
ICAgIHJldHVybiBldmVudC5wYWdlWCA+PSBsZWZ0ICYmIGV2ZW50LnBhZ2VYIDw9IGxlZnQgKyB0
aGlzLmFycm93VG9nZ2xlV2lkdGggJiYgdGhpcy5oYXNDaGlsZHJlbjsKLX07CisgICAgaXNFdmVu
dFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCkKKyAgICB7CisgICAgICAgIGlmICghZG9j
dW1lbnQuY29udGFpbnModGhpcy5fbGlzdEl0ZW1Ob2RlKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlOworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCB1c2UgZ2V0
Q29tcHV0ZWRTdHlsZSgpLiBGb3IgdGhhdCB3ZSBuZWVkIHRvIGdldCByaWQgb2YgdXNpbmcgOjpi
ZWZvcmUgZm9yIGRpc2Nsb3N1cmUgdHJpYW5nbGUuIChodHRwOi8vd2Viay5pdC83NDQ0NikKKyAg
ICAgICAgdmFyIGNvbXB1dGVkTGVmdFBhZGRpbmcgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0
aGlzLl9saXN0SXRlbU5vZGUpLmdldFByb3BlcnR5Q1NTVmFsdWUoInBhZGRpbmctbGVmdCIpLmdl
dEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX1BYKTsKKyAgICAgICAgdmFyIGxlZnQg
PSB0aGlzLl9saXN0SXRlbU5vZGUudG90YWxPZmZzZXRMZWZ0ICsgY29tcHV0ZWRMZWZ0UGFkZGlu
ZzsKKyAgICAgICAgcmV0dXJuIGV2ZW50LnBhZ2VYID49IGxlZnQgJiYgZXZlbnQucGFnZVggPD0g
bGVmdCArIHRoaXMuYXJyb3dUb2dnbGVXaWR0aCAmJiB0aGlzLmhhc0NoaWxkcmVuOworICAgIH0K
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5q
cwppbmRleCBhZTlmODQ0Li43NzQzNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRs
aW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEyNSArMjMsMTIyIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5l
RGF0YUdyaWRTeW5jaHJvbml6ZXIgPSBmdW5jdGlvbih0cmVlT3V0bGluZSwgZGF0YUdyaWQsIGRl
bGVnYXRlKQorV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIgPSBj
bGFzcyBUcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyIGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3Iu
T2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX3RyZWVPdXRsaW5lID0gdHJlZU91dGxpbmU7
Ci0gICAgdGhpcy5fZGF0YUdyaWQgPSBkYXRhR3JpZDsKLSAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRl
bGVnYXRlIHx8IG51bGw7Ci0gICAgdGhpcy5fZW5hYmxlZCA9IHRydWU7Ci0KLSAgICB0aGlzLl90
cmVlT3V0bGluZS5lbGVtZW50LnBhcmVudE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwg
dGhpcy5fdHJlZU91dGxpbmVTY3JvbGxlZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLl9kYXRhR3Jp
ZC5zY3JvbGxDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5fZGF0YUdy
aWRTY3JvbGxlZC5iaW5kKHRoaXMpKTsKLQotICAgIHRoaXMuX3RyZWVPdXRsaW5lLl9fZGF0YUdy
aWROb2RlID0gdGhpcy5fZGF0YUdyaWQ7Ci0KLSAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5FeHBhbmRlZE5vZGUsIHRoaXMuX2Rh
dGFHcmlkTm9kZUV4cGFuZGVkLCB0aGlzKTsKLSAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5Db2xsYXBzZWROb2RlLCB0aGlzLl9k
YXRhR3JpZE5vZGVDb2xsYXBzZWQsIHRoaXMpOwotICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQs
IHRoaXMuX2RhdGFHcmlkTm9kZVNlbGVjdGVkLCB0aGlzKTsKLQotICAgIC8vIEZJWE1FOiBUaGlz
IGlzIGEgaGFjay4gVHJlZU91dGxpbmUgc2hvdWxkIGp1c3QgZGlzcGF0Y2ggZXZlbnRzIHZpYSBX
ZWJJbnNwZWN0b3IuT2JqZWN0LgotICAgIHZhciBleGlzdGluZ09uQWRkID0gdHJlZU91dGxpbmUu
b25hZGQ7Ci0gICAgdmFyIGV4aXN0aW5nT25SZW1vdmUgPSB0cmVlT3V0bGluZS5vbnJlbW92ZTsK
LSAgICB2YXIgZXhpc3RpbmdPbkV4cGFuZCA9IHRyZWVPdXRsaW5lLm9uZXhwYW5kOwotICAgIHZh
ciBleGlzdGluZ09uQ29sbGFwc2UgPSB0cmVlT3V0bGluZS5vbmNvbGxhcHNlOwotICAgIHZhciBl
eGlzdGluZ09uSGlkZGVuID0gdHJlZU91dGxpbmUub25oaWRkZW47Ci0gICAgdmFyIGV4aXN0aW5n
T25TZWxlY3QgPSB0cmVlT3V0bGluZS5vbnNlbGVjdDsKLQotICAgIHRyZWVPdXRsaW5lLm9uYWRk
ID0gZnVuY3Rpb24oZWxlbWVudCkgewotICAgICAgICB0aGlzLl90cmVlRWxlbWVudEFkZGVkKGVs
ZW1lbnQpOwotICAgICAgICBpZiAoZXhpc3RpbmdPbkFkZCkKLSAgICAgICAgICAgIGV4aXN0aW5n
T25BZGQuY2FsbCh0cmVlT3V0bGluZSwgZWxlbWVudCk7Ci0gICAgfS5iaW5kKHRoaXMpOwotCi0g
ICAgdHJlZU91dGxpbmUub25yZW1vdmUgPSBmdW5jdGlvbihlbGVtZW50KSB7Ci0gICAgICAgIHRo
aXMuX3RyZWVFbGVtZW50UmVtb3ZlZChlbGVtZW50KTsKLSAgICAgICAgaWYgKGV4aXN0aW5nT25S
ZW1vdmUpCi0gICAgICAgICAgICBleGlzdGluZ09uUmVtb3ZlLmNhbGwodHJlZU91dGxpbmUsIGVs
ZW1lbnQpOwotICAgIH0uYmluZCh0aGlzKTsKLQotICAgIHRyZWVPdXRsaW5lLm9uZXhwYW5kID0g
ZnVuY3Rpb24oZWxlbWVudCkgewotICAgICAgICB0aGlzLl90cmVlRWxlbWVudEV4cGFuZGVkKGVs
ZW1lbnQpOwotICAgICAgICBpZiAoZXhpc3RpbmdPbkV4cGFuZCkKLSAgICAgICAgICAgIGV4aXN0
aW5nT25FeHBhbmQuY2FsbCh0cmVlT3V0bGluZSwgZWxlbWVudCk7Ci0gICAgfS5iaW5kKHRoaXMp
OwotCi0gICAgdHJlZU91dGxpbmUub25jb2xsYXBzZSA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAg
ICAgICAgdGhpcy5fdHJlZUVsZW1lbnRDb2xsYXBzZWQoZWxlbWVudCk7Ci0gICAgICAgIGlmIChl
eGlzdGluZ09uQ29sbGFwc2UpCi0gICAgICAgICAgICBleGlzdGluZ09uQ29sbGFwc2UuY2FsbCh0
cmVlT3V0bGluZSwgZWxlbWVudCk7Ci0gICAgfS5iaW5kKHRoaXMpOwotCi0gICAgdHJlZU91dGxp
bmUub25oaWRkZW4gPSBmdW5jdGlvbihlbGVtZW50LCBoaWRkZW4pIHsKLSAgICAgICAgdGhpcy5f
dHJlZUVsZW1lbnRIaWRkZW5DaGFuZ2VkKGVsZW1lbnQsIGhpZGRlbik7Ci0gICAgICAgIGlmIChl
eGlzdGluZ09uSGlkZGVuKQotICAgICAgICAgICAgZXhpc3RpbmdPbkhpZGRlbi5jYWxsKHRyZWVP
dXRsaW5lLCBlbGVtZW50LCBoaWRkZW4pOwotICAgIH0uYmluZCh0aGlzKTsKLQotICAgIHRyZWVP
dXRsaW5lLm9uc2VsZWN0ID0gZnVuY3Rpb24oZWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpIHsKLSAg
ICAgICAgdGhpcy5fdHJlZUVsZW1lbnRTZWxlY3RlZChlbGVtZW50LCBzZWxlY3RlZEJ5VXNlcik7
Ci0gICAgICAgIGlmIChleGlzdGluZ09uU2VsZWN0KQotICAgICAgICAgICAgZXhpc3RpbmdPblNl
bGVjdC5jYWxsKHRyZWVPdXRsaW5lLCBlbGVtZW50LCBzZWxlY3RlZEJ5VXNlcik7Ci0gICAgfS5i
aW5kKHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJv
bml6ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVHJlZU91
dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplciwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlLAorICAgIGNvbnN0cnVjdG9yKHRyZWVPdXRsaW5lLCBkYXRhR3JpZCwg
ZGVsZWdhdGUpCisgICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3RyZWVP
dXRsaW5lID0gdHJlZU91dGxpbmU7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkID0gZGF0YUdyaWQ7
CisgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKKyAgICAgICAgdGhp
cy5fZW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgdGhpcy5fdHJlZU91dGxpbmUuZWxlbWVudC5w
YXJlbnROb2RlLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsIHRoaXMuX3RyZWVPdXRsaW5lU2Ny
b2xsZWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNjcm9sbENvbnRhaW5l
ci5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9kYXRhR3JpZFNjcm9sbGVkLmJpbmQo
dGhpcykpOworCisgICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lLl9fZGF0YUdyaWROb2RlID0gdGhp
cy5fZGF0YUdyaWQ7CisKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuRXhwYW5kZWROb2RlLCB0aGlzLl9kYXRhR3JpZE5v
ZGVFeHBhbmRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LkNvbGxhcHNlZE5vZGUsIHRoaXMuX2RhdGFH
cmlkTm9kZUNvbGxhcHNlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQs
IHRoaXMuX2RhdGFHcmlkTm9kZVNlbGVjdGVkLCB0aGlzKTsKKworICAgICAgICAvLyBGSVhNRTog
VGhpcyBpcyBhIGhhY2suIFRyZWVPdXRsaW5lIHNob3VsZCBqdXN0IGRpc3BhdGNoIGV2ZW50cyB2
aWEgV2ViSW5zcGVjdG9yLk9iamVjdC4KKyAgICAgICAgdmFyIGV4aXN0aW5nT25BZGQgPSB0cmVl
T3V0bGluZS5vbmFkZDsKKyAgICAgICAgdmFyIGV4aXN0aW5nT25SZW1vdmUgPSB0cmVlT3V0bGlu
ZS5vbnJlbW92ZTsKKyAgICAgICAgdmFyIGV4aXN0aW5nT25FeHBhbmQgPSB0cmVlT3V0bGluZS5v
bmV4cGFuZDsKKyAgICAgICAgdmFyIGV4aXN0aW5nT25Db2xsYXBzZSA9IHRyZWVPdXRsaW5lLm9u
Y29sbGFwc2U7CisgICAgICAgIHZhciBleGlzdGluZ09uSGlkZGVuID0gdHJlZU91dGxpbmUub25o
aWRkZW47CisgICAgICAgIHZhciBleGlzdGluZ09uU2VsZWN0ID0gdHJlZU91dGxpbmUub25zZWxl
Y3Q7CisKKyAgICAgICAgdHJlZU91dGxpbmUub25hZGQgPSBmdW5jdGlvbihlbGVtZW50KSB7Cisg
ICAgICAgICAgICB0aGlzLl90cmVlRWxlbWVudEFkZGVkKGVsZW1lbnQpOworICAgICAgICAgICAg
aWYgKGV4aXN0aW5nT25BZGQpCisgICAgICAgICAgICAgICAgZXhpc3RpbmdPbkFkZC5jYWxsKHRy
ZWVPdXRsaW5lLCBlbGVtZW50KTsKKyAgICAgICAgfS5iaW5kKHRoaXMpOworCisgICAgICAgIHRy
ZWVPdXRsaW5lLm9ucmVtb3ZlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgICAgICAgICAgdGhp
cy5fdHJlZUVsZW1lbnRSZW1vdmVkKGVsZW1lbnQpOworICAgICAgICAgICAgaWYgKGV4aXN0aW5n
T25SZW1vdmUpCisgICAgICAgICAgICAgICAgZXhpc3RpbmdPblJlbW92ZS5jYWxsKHRyZWVPdXRs
aW5lLCBlbGVtZW50KTsKKyAgICAgICAgfS5iaW5kKHRoaXMpOworCisgICAgICAgIHRyZWVPdXRs
aW5lLm9uZXhwYW5kID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5fdHJl
ZUVsZW1lbnRFeHBhbmRlZChlbGVtZW50KTsKKyAgICAgICAgICAgIGlmIChleGlzdGluZ09uRXhw
YW5kKQorICAgICAgICAgICAgICAgIGV4aXN0aW5nT25FeHBhbmQuY2FsbCh0cmVlT3V0bGluZSwg
ZWxlbWVudCk7CisgICAgICAgIH0uYmluZCh0aGlzKTsKKworICAgICAgICB0cmVlT3V0bGluZS5v
bmNvbGxhcHNlID0gZnVuY3Rpb24oZWxlbWVudCkgeworICAgICAgICAgICAgdGhpcy5fdHJlZUVs
ZW1lbnRDb2xsYXBzZWQoZWxlbWVudCk7CisgICAgICAgICAgICBpZiAoZXhpc3RpbmdPbkNvbGxh
cHNlKQorICAgICAgICAgICAgICAgIGV4aXN0aW5nT25Db2xsYXBzZS5jYWxsKHRyZWVPdXRsaW5l
LCBlbGVtZW50KTsKKyAgICAgICAgfS5iaW5kKHRoaXMpOworCisgICAgICAgIHRyZWVPdXRsaW5l
Lm9uaGlkZGVuID0gZnVuY3Rpb24oZWxlbWVudCwgaGlkZGVuKSB7CisgICAgICAgICAgICB0aGlz
Ll90cmVlRWxlbWVudEhpZGRlbkNoYW5nZWQoZWxlbWVudCwgaGlkZGVuKTsKKyAgICAgICAgICAg
IGlmIChleGlzdGluZ09uSGlkZGVuKQorICAgICAgICAgICAgICAgIGV4aXN0aW5nT25IaWRkZW4u
Y2FsbCh0cmVlT3V0bGluZSwgZWxlbWVudCwgaGlkZGVuKTsKKyAgICAgICAgfS5iaW5kKHRoaXMp
OworCisgICAgICAgIHRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gZnVuY3Rpb24oZWxlbWVudCwgc2Vs
ZWN0ZWRCeVVzZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX3RyZWVFbGVtZW50U2VsZWN0ZWQoZWxl
bWVudCwgc2VsZWN0ZWRCeVVzZXIpOworICAgICAgICAgICAgaWYgKGV4aXN0aW5nT25TZWxlY3Qp
CisgICAgICAgICAgICAgICAgZXhpc3RpbmdPblNlbGVjdC5jYWxsKHRyZWVPdXRsaW5lLCBlbGVt
ZW50LCBzZWxlY3RlZEJ5VXNlcik7CisgICAgICAgIH0uYmluZCh0aGlzKTsKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCB0cmVlT3V0bGluZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fdHJlZU91dGxpbmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YUdyaWQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFHcmlkOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGRlbGVnYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmFibGVkKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9lbmFibGVkOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVuYWJsZWQoeCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX2VuYWJsZWQgPSB4IHx8IGZhbHNlOwotICAgIH0sCisgICAg
fQogCi0gICAgYXNzb2NpYXRlOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgZGF0YUdyaWROb2RlKQor
ICAgIGFzc29jaWF0ZSh0cmVlRWxlbWVudCwgZGF0YUdyaWROb2RlKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQpOwogICAgICAgICBjb25zb2xlLmFzc2VydChkYXRh
R3JpZE5vZGUpOwogCiAgICAgICAgIHRyZWVFbGVtZW50Ll9fZGF0YUdyaWROb2RlID0gZGF0YUdy
aWROb2RlOwogICAgICAgICBkYXRhR3JpZE5vZGUuX190cmVlRWxlbWVudCA9IHRyZWVFbGVtZW50
OwotICAgIH0sCisgICAgfQogCi0gICAgc3luY2hyb25pemU6IGZ1bmN0aW9uKCkKKyAgICBzeW5j
aHJvbml6ZSgpCiAgICAgewogICAgICAgICB0aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250YWluZXIu
c2Nyb2xsVG9wID0gdGhpcy5fdHJlZU91dGxpbmUuZWxlbWVudC5wYXJlbnROb2RlLnNjcm9sbFRv
cDsKICAgICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAg
ICAgICAgICAgICB0aGlzLl90cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50Ll9fZGF0YUdy
aWROb2RlLnNlbGVjdCh0cnVlKTsKICAgICAgICAgZWxzZSBpZiAodGhpcy5fZGF0YUdyaWQuc2Vs
ZWN0ZWROb2RlKQogICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlLmRlc2Vs
ZWN0KHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAgdHJlZUVsZW1lbnRGb3JEYXRhR3JpZE5v
ZGU6IGZ1bmN0aW9uKGRhdGFHcmlkTm9kZSkKKyAgICB0cmVlRWxlbWVudEZvckRhdGFHcmlkTm9k
ZShkYXRhR3JpZE5vZGUpCiAgICAgewogICAgICAgICByZXR1cm4gZGF0YUdyaWROb2RlLl9fdHJl
ZUVsZW1lbnQgfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIGRhdGFHcmlkTm9kZUZvclRy
ZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBkYXRhR3JpZE5vZGVGb3JUcmVl
RWxlbWVudCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICh0cmVlRWxlbWVudC5fX2Rh
dGFHcmlkTm9kZSkKICAgICAgICAgICAgIHJldHVybiB0cmVlRWxlbWVudC5fX2RhdGFHcmlkTm9k
ZTsKQEAgLTE1NCwxMSArMTUxLDExIEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlk
U3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBu
dWxsOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3RyZWVPdXRsaW5l
U2Nyb2xsZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90cmVlT3V0bGluZVNjcm9sbGVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTcwLDkgKzE2Nyw5IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3lu
Y2hyb25pemVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9pZ25vcmVOZXh0RGF0YUdy
aWRTY3JvbGxFdmVudCA9IHRydWU7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNjcm9sbENvbnRh
aW5lci5zY3JvbGxUb3AgPSB0aGlzLl90cmVlT3V0bGluZS5lbGVtZW50LnBhcmVudE5vZGUuc2Ny
b2xsVG9wOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkU2Nyb2xsZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9kYXRhR3JpZFNjcm9sbGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTg0LDkgKzE4MSw5IEBA
IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0aGlzLl9pZ25vcmVOZXh0VHJlZU91dGxpbmVTY3JvbGxFdmVudCA9IHRy
dWU7CiAgICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lLmVsZW1lbnQucGFyZW50Tm9kZS5zY3JvbGxU
b3AgPSB0aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2RhdGFHcmlkTm9kZVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
ZGF0YUdyaWROb2RlU2VsZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2Vu
YWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xOTQsOSArMTkxLDkgQEAgV2ViSW5zcGVj
dG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogICAgICAg
ICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlOwogICAgICAg
ICBpZiAoZGF0YUdyaWROb2RlKQogICAgICAgICAgICAgZGF0YUdyaWROb2RlLl9fdHJlZUVsZW1l
bnQuc2VsZWN0KHRydWUsIHRydWUsIHRydWUsIHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2RhdGFHcmlkTm9kZUV4cGFuZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2Rl
RXhwYW5kZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0yMDYsOSArMjAzLDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRs
aW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghZGF0
YUdyaWROb2RlLl9fdHJlZUVsZW1lbnQuZXhwYW5kZWQpCiAgICAgICAgICAgICBkYXRhR3JpZE5v
ZGUuX190cmVlRWxlbWVudC5leHBhbmQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhR3Jp
ZE5vZGVDb2xsYXBzZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZE5vZGVDb2xsYXBz
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yMTgsOSArMjE1LDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0
YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChkYXRhR3JpZE5v
ZGUuX190cmVlRWxlbWVudC5leHBhbmRlZCkKICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5fX3Ry
ZWVFbGVtZW50LmNvbGxhcHNlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRT
ZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQorICAgIF90cmVl
RWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIyOSw5ICsy
MjYsOSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFHcmlkTm9kZSk7CiAKICAgICAg
ICAgZGF0YUdyaWROb2RlLnNlbGVjdCh0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVl
RWxlbWVudEFkZGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdHJlZUVsZW1lbnRBZGRl
ZCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTI0Niw5ICsyNDMsOSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxp
bmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGNoaWxkSW5kZXggIT09IC0xKTsKIAogICAgICAgICBwYXJlbnREYXRhR3JpZE5vZGUuaW5z
ZXJ0Q2hpbGQoZGF0YUdyaWROb2RlLCBjaGlsZEluZGV4KTsKLSAgICB9LAorICAgIH0KIAotICAg
IF90cmVlRWxlbWVudFJlbW92ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF90cmVlRWxl
bWVudFJlbW92ZWQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VuYWJs
ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNTgsOSArMjU1LDkgQEAgV2ViSW5zcGVjdG9y
LlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlID0gewogCiAgICAgICAg
IGlmIChkYXRhR3JpZE5vZGUucGFyZW50KQogICAgICAgICAgICAgZGF0YUdyaWROb2RlLnBhcmVu
dC5yZW1vdmVDaGlsZChkYXRhR3JpZE5vZGUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVF
bGVtZW50RXhwYW5kZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF90cmVlRWxlbWVudEV4
cGFuZGVkKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjcwLDkgKzI2Nyw5IEBAIFdlYkluc3BlY3Rvci5UcmVl
T3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAo
IWRhdGFHcmlkTm9kZS5leHBhbmRlZCkKICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5leHBhbmQo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudENvbGxhcHNlZDogZnVuY3Rpb24o
dHJlZUVsZW1lbnQpCisgICAgX3RyZWVFbGVtZW50Q29sbGFwc2VkKHRyZWVFbGVtZW50KQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjgyLDkgKzI3OSw5IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25p
emVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoZGF0YUdyaWROb2RlLmV4cGFuZGVkKQog
ICAgICAgICAgICAgZGF0YUdyaWROb2RlLmNvbGxhcHNlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfdHJlZUVsZW1lbnRIaWRkZW5DaGFuZ2VkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgaGlkZGVu
KQorICAgIF90cmVlRWxlbWVudEhpZGRlbkNoYW5nZWQodHJlZUVsZW1lbnQsIGhpZGRlbikKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTI5NSw1ICsyOTIsMyBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9u
aXplci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRhdGFHcmlkTm9kZS5lbGVtZW50LmNsYXNzTGlz
dC50b2dnbGUoImhpZGRlbiIsIGhpZGRlbik7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlRy
ZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHlwZVByb3BlcnRpZXNTZWN0aW9uLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHlwZVByb3BlcnRpZXNTZWN0aW9u
LmpzCmluZGV4IDk0NjA0YzcuLjRiMmRlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1R5cGVQcm9wZXJ0aWVzU2VjdGlvbi5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UeXBlUHJvcGVydGllc1Nl
Y3Rpb24uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsMjAgKzIzLDY5IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlvbiA9IGZ1bmN0aW9u
KHR5cGVzLCB0aXRsZSwgc3VidGl0bGUpCitXZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0
aW9uID0gY2xhc3MgVHlwZVByb3BlcnRpZXNTZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlBy
b3BlcnRpZXNTZWN0aW9uCiB7Ci0gICAgdGhpcy5lbXB0eVBsYWNlaG9sZGVyID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJObyBQcm9wZXJ0aWVzIik7Ci0gICAgdGhpcy50eXBlcyA9IHR5cGVzOwot
ICAgIHRoaXMuX3R5cGVTZXQgPSBXZWJJbnNwZWN0b3IuVHlwZVNldC5mcm9tUGF5bG9hZCh0aGlz
LnR5cGVzKTsKKyAgICBjb25zdHJ1Y3Rvcih0eXBlcywgdGl0bGUsIHN1YnRpdGxlKQorICAgIHsK
KyAgICAgICAgc3VwZXIodGl0bGUsIHN1YnRpdGxlKTsKIAotICAgIFdlYkluc3BlY3Rvci5Qcm9w
ZXJ0aWVzU2VjdGlvbi5jYWxsKHRoaXMsIHRpdGxlLCBzdWJ0aXRsZSk7Ci19OworICAgICAgICB0
aGlzLmVtcHR5UGxhY2Vob2xkZXIgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIFByb3BlcnRp
ZXMiKTsKKyAgICAgICAgdGhpcy50eXBlcyA9IHR5cGVzOworICAgICAgICB0aGlzLl90eXBlU2V0
ID0gV2ViSW5zcGVjdG9yLlR5cGVTZXQuZnJvbVBheWxvYWQodGhpcy50eXBlcyk7CisgICAgfQor
CisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgcHJvcGVydHlDb21wYXJhdG9yKHByb3BlcnR5
QSwgcHJvcGVydHlCKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBpcyBtb3N0bHkgaWRlbnRpY2Fs
IHRvIE9iamVjdFRyZWVWaWV3LmNvbXBhcmVQcm9wZXJ0aWVzLgorICAgICAgICAvLyBCdXQgdGhp
cyBjaGVja3MgZm9yIGVxdWFsaXR5IGJlY2F1c2Ugd2UgY2FuIGhhdmUgdHdvIG9iamVjdHMgbmFt
ZWQgdGhlIHNhbWUgdGhpbmcuCisKKyAgICAgICAgdmFyIGEgPSBwcm9wZXJ0eUEubmFtZTsKKyAg
ICAgICAgdmFyIGIgPSBwcm9wZXJ0eUIubmFtZTsKKyAgICAgICAgaWYgKGEuaW5kZXhPZigiX19w
cm90b19fIikgIT09IC0xKQorICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIGlmIChiLmlu
ZGV4T2YoIl9fcHJvdG9fXyIpICE9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAg
ICAgaWYgKGEgPT09IGIpCisgICAgICAgICAgICByZXR1cm4gMTsKKworICAgICAgICB2YXIgZGlm
ZiA9IDA7CisgICAgICAgIHZhciBjaHVuayA9IC9eXGQrfF5cRCsvOworICAgICAgICB2YXIgY2h1
bmthLCBjaHVua2IsIGFudW0sIGJudW07CisgICAgICAgIHdoaWxlIChkaWZmID09PSAwKSB7Cisg
ICAgICAgICAgICBpZiAoIWEgJiYgYikKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAg
ICAgICAgICBpZiAoIWIgJiYgYSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAg
ICAgIGNodW5rYSA9IGEubWF0Y2goY2h1bmspWzBdOworICAgICAgICAgICAgY2h1bmtiID0gYi5t
YXRjaChjaHVuaylbMF07CisgICAgICAgICAgICBhbnVtID0gIWlzTmFOKGNodW5rYSk7CisgICAg
ICAgICAgICBibnVtID0gIWlzTmFOKGNodW5rYik7CisgICAgICAgICAgICBpZiAoYW51bSAmJiAh
Ym51bSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBpZiAoYm51bSAm
JiAhYW51bSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIGlmIChhbnVt
ICYmIGJudW0pIHsKKyAgICAgICAgICAgICAgICBkaWZmID0gY2h1bmthIC0gY2h1bmtiOworICAg
ICAgICAgICAgICAgIGlmIChkaWZmID09PSAwICYmIGNodW5rYS5sZW5ndGggIT09IGNodW5rYi5s
ZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCErY2h1bmthICYmICErY2h1bmtiKSAv
LyBjaHVua3MgYXJlIHN0cmluZ3Mgb2YgYWxsIDBzIChzcGVjaWFsIGNhc2UpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gY2h1bmthLmxlbmd0aCAtIGNodW5rYi5sZW5ndGg7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjaHVu
a2IubGVuZ3RoIC0gY2h1bmthLmxlbmd0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9IGVsc2UgaWYgKGNodW5rYSAhPT0gY2h1bmtiKQorICAgICAgICAgICAgICAgIHJldHVybiAo
Y2h1bmthIDwgY2h1bmtiKSA/IC0xIDogMTsKKyAgICAgICAgICAgIGEgPSBhLnN1YnN0cmluZyhj
aHVua2EubGVuZ3RoKTsKKyAgICAgICAgICAgIGIgPSBiLnN1YnN0cmluZyhjaHVua2IubGVuZ3Ro
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBkaWZmOworICAgIH0KIAotV2ViSW5zcGVj
dG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydGllc1NlY3Rpb24sCi0gICAgX19wcm90b19fOiBXZWJJ
bnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLAorICAgIC8vIFB1YmxpYwogCi0g
ICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAgICAg
ICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtNTYs
NyArMTA1LDcgQEAgV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCi0gICAgICAgIHByb3BlcnRpZXMuc29y
dChXZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0aW9uLlByb3BlcnR5Q29tcGFyYXRvcik7
CisgICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0
aW9uLnByb3BlcnR5Q29tcGFyYXRvcik7CiAKICAgICAgICAgaWYgKHRoaXMudHlwZXMuaXNUcnVu
Y2F0ZWQpCiAgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goe25hbWU6ICJcdTIwMjYiLCBzdHJ1
Y3R1cmU6IG51bGx9KTsKQEAgLTY4LDcgKzExNyw3IEBAIFdlYkluc3BlY3Rvci5UeXBlUHJvcGVy
dGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHRpdGxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgICAgICB0aXRsZS5jbGFzc05hbWUgPSAi
aW5mbyI7CiAgICAgICAgICAgICB0aXRsZS50ZXh0Q29udGVudCA9IHRoaXMuZW1wdHlQbGFjZWhv
bGRlcjsKLSAgICAgICAgICAgIHZhciBpbmZvRWxlbWVudCA9IG5ldyBUcmVlRWxlbWVudCh0aXRs
ZSwgbnVsbCwgZmFsc2UpOworICAgICAgICAgICAgdmFyIGluZm9FbGVtZW50ID0gbmV3IFdlYklu
c3BlY3Rvci5UcmVlRWxlbWVudCh0aXRsZSwgbnVsbCwgZmFsc2UpOwogICAgICAgICAgICAgdGhp
cy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQoaW5mb0VsZW1lbnQpOwogICAgICAg
ICB9CiAKQEAgLTc5LDcxICsxMjgsMjMgQEAgV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2Vj
dGlvbi5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotLy8gVGhpcyBpcyBtb3N0bHkgaWRlbnRp
Y2FsIHRvIE9iamVjdFRyZWVWaWV3LmNvbXBhcmVQcm9wZXJ0aWVzLgotLy8gQnV0IHRoaXMgY2hl
Y2tzIGZvciBlcXVhbGl0eSBiZWNhdXNlIHdlIGNhbiBoYXZlIHR3byBvYmplY3RzIG5hbWVkIHRo
ZSBzYW1lIHRoaW5nLgotV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlvbi5Qcm9wZXJ0
eUNvbXBhcmF0b3IgPSBmdW5jdGlvbihwcm9wZXJ0eUEsIHByb3BlcnR5QikKK1dlYkluc3BlY3Rv
ci5UeXBlUHJvcGVydHlUcmVlRWxlbWVudCA9IGNsYXNzIFR5cGVQcm9wZXJ0eVRyZWVFbGVtZW50
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50CiB7Ci0gICAgdmFyIGEgPSBwcm9wZXJ0
eUEubmFtZTsKLSAgICB2YXIgYiA9IHByb3BlcnR5Qi5uYW1lOwotICAgIGlmIChhLmluZGV4T2Yo
Il9fcHJvdG9fXyIpICE9PSAtMSkKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgaWYgKGIuaW5kZXhP
ZigiX19wcm90b19fIikgIT09IC0xKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGEgPT09
IGIpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgdmFyIGRpZmYgPSAwOwotICAgIHZhciBjaHVu
ayA9IC9eXGQrfF5cRCsvOwotICAgIHZhciBjaHVua2EsIGNodW5rYiwgYW51bSwgYm51bTsKLSAg
ICB3aGlsZSAoZGlmZiA9PT0gMCkgewotICAgICAgICBpZiAoIWEgJiYgYikKLSAgICAgICAgICAg
IHJldHVybiAtMTsKLSAgICAgICAgaWYgKCFiICYmIGEpCi0gICAgICAgICAgICByZXR1cm4gMTsK
LSAgICAgICAgY2h1bmthID0gYS5tYXRjaChjaHVuaylbMF07Ci0gICAgICAgIGNodW5rYiA9IGIu
bWF0Y2goY2h1bmspWzBdOwotICAgICAgICBhbnVtID0gIWlzTmFOKGNodW5rYSk7Ci0gICAgICAg
IGJudW0gPSAhaXNOYU4oY2h1bmtiKTsKLSAgICAgICAgaWYgKGFudW0gJiYgIWJudW0pCi0gICAg
ICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIGlmIChibnVtICYmICFhbnVtKQotICAgICAgICAg
ICAgcmV0dXJuIDE7Ci0gICAgICAgIGlmIChhbnVtICYmIGJudW0pIHsKLSAgICAgICAgICAgIGRp
ZmYgPSBjaHVua2EgLSBjaHVua2I7Ci0gICAgICAgICAgICBpZiAoZGlmZiA9PT0gMCAmJiBjaHVu
a2EubGVuZ3RoICE9PSBjaHVua2IubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCErY2h1
bmthICYmICErY2h1bmtiKSAvLyBjaHVua3MgYXJlIHN0cmluZ3Mgb2YgYWxsIDBzIChzcGVjaWFs
IGNhc2UpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjaHVua2EubGVuZ3RoIC0gY2h1bmti
Lmxlbmd0aDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBjaHVua2IubGVuZ3RoIC0gY2h1bmthLmxlbmd0aDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSBlbHNlIGlmIChjaHVua2EgIT09IGNodW5rYikKLSAgICAgICAgICAgIHJldHVybiAoY2h1bmth
IDwgY2h1bmtiKSA/IC0xIDogMTsKLSAgICAgICAgYSA9IGEuc3Vic3RyaW5nKGNodW5rYS5sZW5n
dGgpOwotICAgICAgICBiID0gYi5zdWJzdHJpbmcoY2h1bmtiLmxlbmd0aCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGRpZmY7Ci19OwotCi1XZWJJbnNwZWN0b3IuVHlwZVByb3BlcnR5VHJlZUVsZW1l
bnQgPSBmdW5jdGlvbihwcm9wZXJ0eSkKLXsKLSAgICB0aGlzLnByb3BlcnR5ID0gcHJvcGVydHk7
Ci0KLSAgICB0aGlzLm5hbWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
OwotICAgIHRoaXMubmFtZUVsZW1lbnQuY2xhc3NOYW1lID0gIm5hbWUiOwotICAgIHRoaXMubmFt
ZUVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLnByb3BlcnR5Lm5hbWU7CisgICAgY29uc3RydWN0
b3IocHJvcGVydHkpCisgICAgeworICAgICAgICBzdXBlcih0aGlzLm5hbWVFbGVtZW50LCBudWxs
LCBmYWxzZSk7CiAKLSAgICBUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHRoaXMubmFtZUVsZW1lbnQs
IG51bGwsIGZhbHNlKTsKKyAgICAgICAgdGhpcy5wcm9wZXJ0eSA9IHByb3BlcnR5OwogCi0gICAg
dGhpcy50b2dnbGVPbkNsaWNrID0gdHJ1ZTsKLSAgICB0aGlzLmhhc0NoaWxkcmVuID0gISF0aGlz
LnByb3BlcnR5LnN0cnVjdHVyZTsKLX07CisgICAgICAgIHRoaXMubmFtZUVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAgICAgIHRoaXMubmFtZUVsZW1lbnQuY2xh
c3NOYW1lID0gIm5hbWUiOworICAgICAgICB0aGlzLm5hbWVFbGVtZW50LnRleHRDb250ZW50ID0g
dGhpcy5wcm9wZXJ0eS5uYW1lOwogCi1XZWJJbnNwZWN0b3IuVHlwZVByb3BlcnR5VHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVHlwZVByb3Bl
cnR5VHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBUcmVlRWxlbWVudC5wcm90b3R5cGUsCisg
ICAgICAgIHRoaXMudG9nZ2xlT25DbGljayA9IHRydWU7CisgICAgICAgIHRoaXMuaGFzQ2hpbGRy
ZW4gPSAhIXRoaXMucHJvcGVydHkuc3RydWN0dXJlOworICAgIH0KIAotICAgIG9ucG9wdWxhdGU6
IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3Zl
Q2hpbGRyZW4oKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBAIFdlYkluc3BlY3Rvci5UeXBlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQog
Ci0gICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0
aW9uLlByb3BlcnR5Q29tcGFyYXRvcik7CisgICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNw
ZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0aW9uLnByb3BlcnR5Q29tcGFyYXRvcik7CiAKICAgICAg
ICAgZm9yICh2YXIgcHJvcGVydHkgb2YgcHJvcGVydGllcykKICAgICAgICAgICAgIHRoaXMuYXBw
ZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydHlUcmVlRWxlbWVudChwcm9wZXJ0
eSkpOwpAQCAtMTY4LDcgKzE2OSw3IEBAIFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydHlUcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogCi0gICAgICAg
IHByb3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0aW9uLlByb3Bl
cnR5Q29tcGFyYXRvcik7CisgICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3IuVHlw
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3BlcnR5Q29tcGFyYXRvcik7CiAKICAgICAgICAgaWYgKHRo
aXMucHJvcGVydHkuc3RydWN0dXJlLmlzSW1wcmVjaXNlKQogICAgICAgICAgICAgcHJvcGVydGll
cy5wdXNoKHtuYW1lOiAiXHUyMDI2Iiwgc3RydWN0dXJlOiBudWxsfSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UeXBlVG9rZW5WaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHlwZVRva2VuVmll
dy5qcwppbmRleCA0ZGUyODAyLi40MTM3MzY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UeXBlVG9rZW5WaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1R5cGVUb2tlblZpZXcuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNzIg
KzIzLDUyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLlR5cGVUb2tlblZpZXcgPSBmdW5jdGlvbih0b2tlbkFubm90YXRvciwgc2hvdWxk
SGF2ZVJpZ2h0TWFyZ2luLCBzaG91bGRIYXZlTGVmdE1hcmdpbiwgdGl0bGVUeXBlLCBmdW5jdGlv
bk9yVmFyaWFibGVOYW1lKQorV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZpZXcgPSBjbGFzcyBUeXBl
VG9rZW5WaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIGNvbnNvbGUuYXNz
ZXJ0KHRpdGxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZpZXcuVGl0bGVUeXBlLlZh
cmlhYmxlICB8fCB0aXRsZVR5cGUgPT09IFdlYkluc3BlY3Rvci5UeXBlVG9rZW5WaWV3LlRpdGxl
VHlwZS5SZXR1cm5TdGF0ZW1lbnQpOwotCi0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBh
IFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8g
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHRva2VuQW5u
b3RhdG9yLCBzaG91bGRIYXZlUmlnaHRNYXJnaW4sIHNob3VsZEhhdmVMZWZ0TWFyZ2luLCB0aXRs
ZVR5cGUsIGZ1bmN0aW9uT3JWYXJpYWJsZU5hbWUpCisgICAgeworICAgICAgICBjb25zb2xlLmFz
c2VydCh0aXRsZVR5cGUgPT09IFdlYkluc3BlY3Rvci5UeXBlVG9rZW5WaWV3LlRpdGxlVHlwZS5W
YXJpYWJsZSAgfHwgdGl0bGVUeXBlID09PSBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy5UaXRs
ZVR5cGUuUmV0dXJuU3RhdGVtZW50KTsKIAotICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOwotICAgIHNwYW4uY2xhc3NMaXN0LmFkZCgidHlwZS10b2tlbiIpOwot
ICAgIGlmIChzaG91bGRIYXZlUmlnaHRNYXJnaW4pCi0gICAgICAgIHNwYW4uY2xhc3NMaXN0LmFk
ZCgidHlwZS10b2tlbi1yaWdodC1zcGFjaW5nIik7Ci0gICAgaWYgKHNob3VsZEhhdmVMZWZ0TWFy
Z2luKQotICAgICAgICBzcGFuLmNsYXNzTGlzdC5hZGQoInR5cGUtdG9rZW4tbGVmdC1zcGFjaW5n
Iik7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLmVsZW1lbnQgPSBzcGFuOwotICAgIHRo
aXMuX3Rva2VuQW5ub3RhdG9yID0gdG9rZW5Bbm5vdGF0b3I7Ci0gICAgdGhpcy5fdHlwZXMgPSBu
dWxsOwotICAgIHRoaXMuX3R5cGVTZXQgPSBudWxsOwotICAgIHRoaXMuX2NvbG9yQ2xhc3MgPSBu
dWxsOworICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
KyAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCJ0eXBlLXRva2VuIik7CisgICAgICAgIGlmIChz
aG91bGRIYXZlUmlnaHRNYXJnaW4pCisgICAgICAgICAgICBzcGFuLmNsYXNzTGlzdC5hZGQoInR5
cGUtdG9rZW4tcmlnaHQtc3BhY2luZyIpOworICAgICAgICBpZiAoc2hvdWxkSGF2ZUxlZnRNYXJn
aW4pCisgICAgICAgICAgICBzcGFuLmNsYXNzTGlzdC5hZGQoInR5cGUtdG9rZW4tbGVmdC1zcGFj
aW5nIik7CiAKLSAgICB0aGlzLl9wb3BvdmVyVGl0bGUgPSBXZWJJbnNwZWN0b3IuVHlwZVRva2Vu
Vmlldy50aXRsZUZvclBvcG92ZXIodGl0bGVUeXBlLCBmdW5jdGlvbk9yVmFyaWFibGVOYW1lKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50ID0gc3BhbjsKKyAgICAgICAgdGhpcy5fdG9rZW5Bbm5vdGF0
b3IgPSB0b2tlbkFubm90YXRvcjsKKyAgICAgICAgdGhpcy5fdHlwZXMgPSBudWxsOworICAgICAg
ICB0aGlzLl90eXBlU2V0ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fY29sb3JDbGFzcyA9IG51bGw7
CiAKLSAgICB0aGlzLl9zZXRVcE1vdXNlb3ZlckhhbmRsZXJzKCk7Ci19OworICAgICAgICB0aGlz
Ll9wb3BvdmVyVGl0bGUgPSBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy50aXRsZUZvclBvcG92
ZXIodGl0bGVUeXBlLCBmdW5jdGlvbk9yVmFyaWFibGVOYW1lKTsKIAotV2ViSW5zcGVjdG9yLlR5
cGVUb2tlblZpZXcudGl0bGVGb3JQb3BvdmVyID0gZnVuY3Rpb24odGl0bGVUeXBlLCBmdW5jdGlv
bk9yVmFyaWFibGVOYW1lKQotewotICAgIHZhciB0aXRsZVN0cmluZyA9IG51bGw7Ci0gICAgaWYg
KHRpdGxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZpZXcuVGl0bGVUeXBlLlZhcmlh
YmxlKQotICAgICAgICB0aXRsZVN0cmluZyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHlwZSBp
bmZvcm1hdGlvbiBmb3IgdmFyaWFibGU6ICVzIikuZm9ybWF0KGZ1bmN0aW9uT3JWYXJpYWJsZU5h
bWUpOwotICAgIGVsc2UgewotICAgICAgICBpZiAoZnVuY3Rpb25PclZhcmlhYmxlTmFtZSkKLSAg
ICAgICAgICAgIHRpdGxlU3RyaW5nID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXR1cm4gdHlw
ZSBmb3IgZnVuY3Rpb246ICVzIikuZm9ybWF0KGZ1bmN0aW9uT3JWYXJpYWJsZU5hbWUpOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0aXRsZVN0cmluZyA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiUmV0dXJuIHR5cGUgZm9yIGFub255bW91cyBmdW5jdGlvbiIpOworICAgICAgICB0aGlzLl9z
ZXRVcE1vdXNlb3ZlckhhbmRsZXJzKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIHRpdGxlU3RyaW5n
OwotfTsKLQotV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZpZXcuVGl0bGVUeXBlID0gewotICAgIFZh
cmlhYmxlOiAidGl0bGUtdHlwZS12YXJpYWJsZSIsCi0gICAgUmV0dXJuU3RhdGVtZW50OiAidGl0
bGUtdHlwZS1yZXR1cm4tc3RhdGVtZW50IgotfTsKLQotV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZp
ZXcuQ29sb3JDbGFzc0ZvclR5cGUgPSB7Ci0gICAgIlN0cmluZyI6ICJ0eXBlLXRva2VuLXN0cmlu
ZyIsCi0gICAgIkZ1bmN0aW9uIjogInR5cGUtdG9rZW4tZnVuY3Rpb24iLAotICAgICJOdW1iZXIi
OiAidHlwZS10b2tlbi1udW1iZXIiLAotICAgICJJbnRlZ2VyIjogInR5cGUtdG9rZW4tbnVtYmVy
IiwKLSAgICAiVW5kZWZpbmVkIjogInR5cGUtdG9rZW4tZW1wdHkiLAotICAgICJOdWxsIjogInR5
cGUtdG9rZW4tZW1wdHkiLAotICAgICIoPykiOiAidHlwZS10b2tlbi1lbXB0eSIsCi0gICAgIkJv
b2xlYW4iOiAidHlwZS10b2tlbi1ib29sZWFuIiwKLSAgICAiKG1hbnkpIjogInR5cGUtdG9rZW4t
bWFueSIKLX07CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5UeXBlVG9rZW5WaWV3LkRl
bGF5SG92ZXJUaW1lID0gMzUwOworICAgIHN0YXRpYyB0aXRsZUZvclBvcG92ZXIodGl0bGVUeXBl
LCBmdW5jdGlvbk9yVmFyaWFibGVOYW1lKQorICAgIHsKKyAgICAgICAgdmFyIHRpdGxlU3RyaW5n
ID0gbnVsbDsKKyAgICAgICAgaWYgKHRpdGxlVHlwZSA9PT0gV2ViSW5zcGVjdG9yLlR5cGVUb2tl
blZpZXcuVGl0bGVUeXBlLlZhcmlhYmxlKQorICAgICAgICAgICAgdGl0bGVTdHJpbmcgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlR5cGUgaW5mb3JtYXRpb24gZm9yIHZhcmlhYmxlOiAlcyIpLmZv
cm1hdChmdW5jdGlvbk9yVmFyaWFibGVOYW1lKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICBpZiAoZnVuY3Rpb25PclZhcmlhYmxlTmFtZSkKKyAgICAgICAgICAgICAgICB0aXRsZVN0cmlu
ZyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV0dXJuIHR5cGUgZm9yIGZ1bmN0aW9uOiAlcyIp
LmZvcm1hdChmdW5jdGlvbk9yVmFyaWFibGVOYW1lKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICB0aXRsZVN0cmluZyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmV0dXJuIHR5
cGUgZm9yIGFub255bW91cyBmdW5jdGlvbiIpOworICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5U
eXBlVG9rZW5WaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlR5cGVUb2tlblZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZSwKKyAgICAgICAgcmV0dXJuIHRpdGxlU3RyaW5nOworICAgIH0KIAogICAgIC8vIFB1Ymxp
YwogCi0gICAgdXBkYXRlOiBmdW5jdGlvbih0eXBlcykKKyAgICB1cGRhdGUodHlwZXMpCiAgICAg
ewogICAgICAgICB0aGlzLl90eXBlcyA9IHR5cGVzOwogICAgICAgICB0aGlzLl90eXBlU2V0ID0g
V2ViSW5zcGVjdG9yLlR5cGVTZXQuZnJvbVBheWxvYWQodGhpcy5fdHlwZXMpOwpAQCAtMTA1LDEx
ICs4NSwxMSBAQCBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgdGhpcy5fY29sb3JDbGFzcyA9IFdlYkluc3BlY3Rvci5UeXBlVG9rZW5WaWV3LkNvbG9y
Q2xhc3NGb3JUeXBlW2hhc2hTdHJpbmddIHx8ICJ0eXBlLXRva2VuLWRlZmF1bHQiOwogICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLl9jb2xvckNsYXNzKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9zZXRVcE1vdXNlb3ZlckhhbmRsZXJzOiBm
dW5jdGlvbigpCisgICAgX3NldFVwTW91c2VvdmVySGFuZGxlcnMoKQogICAgIHsKICAgICAgICAg
dmFyIHRpbWVvdXRJRCA9IG51bGw7CiAKQEAgLTEzMSw5ICsxMTEsOSBAQCBXZWJJbnNwZWN0b3Iu
VHlwZVRva2VuVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGltZW91dElEKQog
ICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SUQpOwogICAgICAgICB9LmJpbmQo
dGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3VsZFNob3dQb3BvdmVyOiBmdW5jdGlv
bigpCisgICAgX3Nob3VsZFNob3dQb3BvdmVyKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
dHlwZXMuaXNWYWxpZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0NSw5ICsxMjUs
OSBAQCBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZGlzcGxheVR5cGVOYW1lOiBmdW5jdGlvbigpCisgICAgX2Rpc3BsYXlUeXBlTmFtZSgp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3R5cGVzLmlzVmFsaWQpCiAgICAgICAgICAgICBy
ZXR1cm4gIiI7CkBAIC0yMDMsMyArMTgzLDIyIEBAIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5WaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiKG1h
bnkpIik7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZpZXcuVGl0bGVUeXBl
ID0geworICAgIFZhcmlhYmxlOiBTeW1ib2woInRpdGxlLXR5cGUtdmFyaWFibGUiKSwKKyAgICBS
ZXR1cm5TdGF0ZW1lbnQ6IFN5bWJvbCgidGl0bGUtdHlwZS1yZXR1cm4tc3RhdGVtZW50IikKK307
CisKK1dlYkluc3BlY3Rvci5UeXBlVG9rZW5WaWV3LkNvbG9yQ2xhc3NGb3JUeXBlID0geworICAg
ICJTdHJpbmciOiAidHlwZS10b2tlbi1zdHJpbmciLAorICAgICJGdW5jdGlvbiI6ICJ0eXBlLXRv
a2VuLWZ1bmN0aW9uIiwKKyAgICAiTnVtYmVyIjogInR5cGUtdG9rZW4tbnVtYmVyIiwKKyAgICAi
SW50ZWdlciI6ICJ0eXBlLXRva2VuLW51bWJlciIsCisgICAgIlVuZGVmaW5lZCI6ICJ0eXBlLXRv
a2VuLWVtcHR5IiwKKyAgICAiTnVsbCI6ICJ0eXBlLXRva2VuLWVtcHR5IiwKKyAgICAiKD8pIjog
InR5cGUtdG9rZW4tZW1wdHkiLAorICAgICJCb29sZWFuIjogInR5cGUtdG9rZW4tYm9vbGVhbiIs
CisgICAgIihtYW55KSI6ICJ0eXBlLXRva2VuLW1hbnkiCit9OworCitXZWJJbnNwZWN0b3IuVHlw
ZVRva2VuVmlldy5EZWxheUhvdmVyVGltZSA9IDM1MDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249449</attachid>
            <date>2015-03-25 17:13:17 -0700</date>
            <delta_ts>2015-03-27 00:46:04 -0700</delta_ts>
            <desc>WIP (Ignore Space)</desc>
            <filename>142891-ignore-space.patch</filename>
            <type>text/plain</type>
            <size>1079793</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZl
bnRMaXN0ZW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2Uv
RXZlbnRMaXN0ZW5lci5qcwppbmRleCAxMGYxNzU0Li4xMmIzNWRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVy
LmpzCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMTYgKzI0LDE5IEBACiAgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyID0gZnVuY3Rpb24odGhpc09iamVjdCwg
ZmlyZU9uY2UpCitXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lciA9IGNsYXNzIEV2ZW50TGlzdGVu
ZXIKK3sKKyAgICBjb25zdHJ1Y3Rvcih0aGlzT2JqZWN0LCBmaXJlT25jZSkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3RoaXNPYmplY3QgPSB0aGlzT2JqZWN0OwogICAgICAgICB0aGlzLl9lbWl0dGVy
ID0gbnVsbDsKICAgICAgICAgdGhpcy5fY2FsbGJhY2sgPSBudWxsOwogICAgICAgICB0aGlzLl9m
aXJlT25jZSA9IGZpcmVPbmNlOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3Rl
bmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25uZWN0OiBmdW5jdGlvbihlbWl0dGVyLCB0eXBlLCBj
YWxsYmFjaywgdXNlc0NhcHR1cmUpCisgICAgLy8gUHVibGljCisKKyAgICBjb25uZWN0KGVtaXR0
ZXIsIHR5cGUsIGNhbGxiYWNrLCB1c2VzQ2FwdHVyZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF0aGlzLl9lbWl0dGVyICYmICF0aGlzLl9jYWxsYmFjaywgIkV2ZW50TGlzdGVuZXIg
YWxyZWFkeSBib3VuZCB0byBhIGNhbGxiYWNrLiIsIHRoaXMpOwogICAgICAgICBjb25zb2xlLmFz
c2VydChjYWxsYmFjaywgIk1pc3NpbmcgY2FsbGJhY2sgZm9yIGV2ZW50OiAiICsgdHlwZSk7CkBA
IC02NCw5ICs2Nyw5IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHRoaXMuX2VtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl90eXBlLCB0
aGlzLl9jYWxsYmFjaywgdGhpcy5fdXNlc0NhcHR1cmUpOwogICAgICAgICBlbHNlCiAgICAgICAg
ICAgICB0aGlzLl9lbWl0dGVyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fdHlwZSwgdGhpcy5fY2Fs
bGJhY2ssIHRoaXMuX3RoaXNPYmplY3QpOwotICAgIH0sCisgICAgfQogCi0gICAgZGlzY29ubmVj
dDogZnVuY3Rpb24oKQorICAgIGRpc2Nvbm5lY3QoKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fZW1pdHRlciAmJiB0aGlzLl9jYWxsYmFjaywgIkV2ZW50TGlzdGVuZXIgaXMg
bm90IGJvdW5kIHRvIGEgY2FsbGJhY2suIiwgdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lclNldC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lclNldC5q
cwppbmRleCA0MGQyY2RkLi5kMTRiZmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXJTZXQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyU2V0LmpzCkBAIC0x
LDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBVbml2ZXJzaXR5IG9m
IFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjgsNyArMjgsMTAgQEAKIC8vIEFkZCBET00gb3IgSW5zcGVjdG9yIGV2
ZW50IGxpc3RlbmVycyB0byB0aGUgc2V0IHVzaW5nIGByZWdpc3RlcigpYC4KIC8vIFVzZSBgaW5z
dGFsbCgpYCBhbmQgYHVuaW5zdGFsbCgpYCB0byBlbmFibGUgb3IgZGlzYWJsZSBhbGwgbGlzdGVu
ZXJzCiAvLyBpbiB0aGUgc2V0IGF0IG9uY2UuCi1XZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNl
dCA9IGZ1bmN0aW9uKGRlZmF1bHRUaGlzT2JqZWN0LCBuYW1lKQorCitXZWJJbnNwZWN0b3IuRXZl
bnRMaXN0ZW5lclNldCA9IGNsYXNzIEV2ZW50TGlzdGVuZXJTZXQKK3sKKyAgICBjb25zdHJ1Y3Rv
cihkZWZhdWx0VGhpc09iamVjdCwgbmFtZSkKICAgICB7CiAgICAgICAgIHRoaXMubmFtZSA9IG5h
bWU7CiAgICAgICAgIHRoaXMuX2RlZmF1bHRUaGlzT2JqZWN0ID0gZGVmYXVsdFRoaXNPYmplY3Q7
CkBAIC0zNyw4ICs0MCw5IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2V0ID0gZnVuY3Rp
b24oZGVmYXVsdFRoaXNPYmplY3QsIG5hbWUpCiAgICAgICAgIHRoaXMuX2luc3RhbGxlZCA9IGZh
bHNlOwogICAgIH0KIAotV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQucHJvdG90eXBlID0g
ewotICAgIHJlZ2lzdGVyOiBmdW5jdGlvbihlbWl0dGVyLCB0eXBlLCBjYWxsYmFjaywgdGhpc09i
amVjdCwgdXNlc0NhcHR1cmUpCisgICAgLy8gUHVibGljCisKKyAgICByZWdpc3RlcihlbWl0dGVy
LCB0eXBlLCBjYWxsYmFjaywgdGhpc09iamVjdCwgdXNlc0NhcHR1cmUpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChjYWxsYmFjaywgIk1pc3NpbmcgY2FsbGJhY2sgZm9yIGV2ZW50OiAi
ICsgdHlwZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGUsICJUcmllZCB0byByZWdpc3Rl
ciBsaXN0ZW5lciBmb3IgdW5rbm93biBldmVudDogIiArIHR5cGUpOwpAQCAtNDksMTYgKzUzLDE2
IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2V0LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9saXN0ZW5lcnMucHVzaCh7bGlzdGVuZXI6IG5l
dyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcih0aGlzT2JqZWN0IHx8IHRoaXMuX2RlZmF1bHRU
aGlzT2JqZWN0KSwgZW1pdHRlciwgdHlwZSwgY2FsbGJhY2ssIHVzZXNDYXB0dXJlfSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB1bnJlZ2lzdGVyOiBmdW5jdGlvbigpCisgICAgdW5yZWdpc3Rlcigp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5faW5zdGFsbGVkKQogICAgICAgICAgICAgdGhpcy51
bmluc3RhbGwoKTsKICAgICAgICAgdGhpcy5fbGlzdGVuZXJzID0gW107Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBpbnN0YWxsOiBmdW5jdGlvbigpCisgICAgaW5zdGFsbCgpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydCghdGhpcy5faW5zdGFsbGVkLCAiQWxyZWFkeSBpbnN0YWxsZWQgbGlz
dGVuZXIgZ3JvdXA6ICIgKyB0aGlzLm5hbWUpOwogICAgICAgICBpZiAodGhpcy5faW5zdGFsbGVk
KQpAQCAtNjgsOSArNzIsOSBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNldC5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIgZGF0YSBvZiB0aGlzLl9saXN0ZW5lcnMpCiAgICAg
ICAgICAgICBkYXRhLmxpc3RlbmVyLmNvbm5lY3QoZGF0YS5lbWl0dGVyLCBkYXRhLnR5cGUsIGRh
dGEuY2FsbGJhY2ssIGRhdGEudXNlc0NhcHR1cmUpOwotICAgIH0sCisgICAgfQogCi0gICAgdW5p
bnN0YWxsOiBmdW5jdGlvbih1bnJlZ2lzdGVyTGlzdGVuZXJzKQorICAgIHVuaW5zdGFsbCh1bnJl
Z2lzdGVyTGlzdGVuZXJzKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5faW5z
dGFsbGVkLCAiVHJ5aW5nIHRvIHVuaW5zdGFsbCBsaXN0ZW5lciBncm91cCAiICsgdGhpcy5uYW1l
ICsgIiwgYnV0IGl0IGlzbid0IGluc3RhbGxlZC4iKTsKICAgICAgICAgaWYgKCF0aGlzLl9pbnN0
YWxsZWQpCkBAIC04Myw1ICs4Nyw1IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2V0LnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodW5yZWdpc3Rlckxpc3RlbmVycykKICAgICAgICAg
ICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdOwotICAgIH0sCiAgICAgfQorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9LZXlib2FyZFNob3J0
Y3V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0tleWJv
YXJkU2hvcnRjdXQuanMKaW5kZXggZTdhMDM4ZS4uZDg1YTMwNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0tleWJvYXJkU2hvcnRjdXQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0tleWJvYXJk
U2hvcnRjdXQuanMKQEAgLTc4LDYgKzc4LDkgQEAgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRj
dXQgPSBjbGFzcyBLZXlib2FyZFNob3J0Y3V0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamUKICAg
ICAgICAgICAgICAgICBpZiAoIWtleWJvYXJkU2hvcnRjdXQubWF0Y2hlc0V2ZW50KGV2ZW50KSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgICAgICAgICBpZiAoIWtl
eWJvYXJkU2hvcnRjdXQuY2FsbGJhY2spCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
CiAgICAgICAgICAgICAgICAga2V5Ym9hcmRTaG9ydGN1dC5jYWxsYmFjayhldmVudCwga2V5Ym9h
cmRTaG9ydGN1dCk7CiAKICAgICAgICAgICAgICAgICBpZiAoa2V5Ym9hcmRTaG9ydGN1dC5pbXBs
aWNpdGx5UHJldmVudHNEZWZhdWx0KQpAQCAtMTIzLDYgKzEyNiwxMyBAQCBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dCA9IGNsYXNzIEtleWJvYXJkU2hvcnRjdXQgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZQogICAgICAgICByZXR1cm4gdGhpcy5fY2FsbGJhY2s7CiAgICAgfQogCisgICAg
c2V0IGNhbGxiYWNrKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWNh
bGxiYWNrIHx8IHR5cGVvZiBjYWxsYmFjayA9PT0gImZ1bmN0aW9uIik7CisKKyAgICAgICAgdGhp
cy5fY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBudWxsOworICAgIH0KKwogICAgIGdldCBkaXNhYmxl
ZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BY3RpdmF0ZUJ1dHRvbk5h
dmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwppbmRleCA3Zjc4YzM3Li40N2QxODMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9B
Y3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDM3ICsyMywzMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24oaWRl
bnRpZmllciwgZGVmYXVsdFRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGltYWdlLCBpbWFnZVdp
ZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpCitXZWJJbnNwZWN0b3IuQWN0
aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIEFjdGl2YXRlQnV0dG9uTmF2aWdhdGlv
bkl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0KIHsKLSAgICBX
ZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyLCBk
ZWZhdWx0VG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBwcmVzc0Vt
Ym9zcywgcm9sZSk7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAs
IGFjdGl2YXRlZFRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJl
c3NFbWJvc3MsIHJvbGUpCisgICAgeworICAgICAgICBzdXBlcihpZGVudGlmaWVyLCBkZWZhdWx0
VG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBwcmVzc0VtYm9zcywg
cm9sZSk7CiAKICAgICAgICAgdGhpcy5fZGVmYXVsdFRvb2xUaXAgPSBkZWZhdWx0VG9vbFRpcDsK
ICAgICAgICAgdGhpcy5fYWN0aXZhdGVkVG9vbFRpcCA9IGFjdGl2YXRlZFRvb2xUaXAgfHwgZGVm
YXVsdFRvb2xUaXA7CiAgICAgICAgIHRoaXMuX3JvbGUgPSByb2xlOwotfTsKLQotV2ViSW5zcGVj
dG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUgPSAiYWN0aXZh
dGUiOwotV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uQWN0aXZhdGVk
U3R5bGVDbGFzc05hbWUgPSAiYWN0aXZhdGVkIjsKLQotV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0
dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSwKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBkZWZhdWx0VG9vbFRpcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fZGVmYXVsdFRvb2xUaXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYWN0aXZhdGVkVG9v
bFRpcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZhdGVkVG9vbFRpcDsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBhY3RpdmF0ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uQWN0aXZhdGVkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGFjdGl2YXRlZChmbGFnKQogICAgIHsKQEAgLTY4LDkgKzY0LDkgQEAgV2Vi
SW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgaWYgKHRoaXMuX3JvbGUgPT09ICJ0YWIiKQogICAgICAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiKTsKICAgICAgICAgfQotICAg
IH0sCisgICAgfQogCi0gICAgZ2VuZXJhdGVTdHlsZVRleHQ6IGZ1bmN0aW9uKHBhcmVudFNlbGVj
dG9yKQorICAgIGdlbmVyYXRlU3R5bGVUZXh0KHBhcmVudFNlbGVjdG9yKQogICAgIHsKICAgICAg
ICAgdmFyIGNsYXNzTmFtZXMgPSB0aGlzLl9jbGFzc05hbWVzLmpvaW4oIi4iKTsKIApAQCAtOTMs
MTEgKzg5LDE0IEBAIFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBzdHlsZVRleHQ7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICAvLyBQcml2YXRlCisgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBfYWRk
aXRpb25hbENsYXNzTmFtZXM6IFtXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9u
SXRlbS5TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0
eWxlQ2xhc3NOYW1lXQorICAgIGdldCBhZGRpdGlvbmFsQ2xhc3NOYW1lcygpCisgICAgeworICAg
ICAgICByZXR1cm4gc3VwZXIuYWRkaXRpb25hbENsYXNzTmFtZXMudW5zaGlmdCgiYWN0aXZhdGUi
KTsKKyAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRl
bS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVt
LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLkFj
dGl2YXRlZFN0eWxlQ2xhc3NOYW1lID0gImFjdGl2YXRlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJ
dGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQWN0aXZh
dGVCdXR0b25Ub29sYmFySXRlbS5qcwppbmRleCBhZmE0MzI3Li4zNWVkNGYzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BY3RpdmF0ZUJ1dHRv
blRvb2xiYXJJdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0FjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0uanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkFjdGl2
YXRlQnV0dG9uVG9vbGJhckl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRp
cCwgYWN0aXZhdGVkVG9vbFRpcCwgbGFiZWwsIGltYWdlLCBzdXBwcmVzc0VtYm9zcywgcm9sZSkK
K1dlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtID0gY2xhc3MgQWN0aXZhdGVC
dXR0b25Ub29sYmFySXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmln
YXRpb25JdGVtCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRp
cCwgaW1hZ2UsIDMyLCAzMiwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpOworICAgIGNvbnN0cnVjdG9y
KGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBsYWJlbCwgaW1h
Z2UsIHN1cHByZXNzRW1ib3NzLCByb2xlKQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmll
ciwgZGVmYXVsdFRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGltYWdlLCAzMiwgMzIsIHN1cHBy
ZXNzRW1ib3NzLCByb2xlKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChsYWJlbCk7CiAKQEAg
LTM0LDE3ICszNiwxNCBAQCBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbSA9
IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhYwogICAgICAgICB0aGlzLl9l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2xhYmVsRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5s
YWJlbCA9IGxhYmVsOwotfTsKLQotV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uVG9vbGJhckl0
ZW0ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQWN0aXZhdGVC
dXR0b25Ub29sYmFySXRlbSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBsYWJl
bCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbGFiZWxFbGVtZW50LnRleHRDb250ZW50
OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGxhYmVsKG5ld0xhYmVsKQogICAgIHsKQEAgLTU1
LDUgKzU0LDMgQEAgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0ucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9sYWJlbEVsZW1lbnQudGV4dENvbnRlbnQgPSBuZXdMYWJl
bDsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlv
bkl0ZW0ucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hl
RGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCA5MzRkMjY0Li5mY2FhY2ZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNh
Y2hlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwgPSBmdW5j
dGlvbigpCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwg
PSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdlYklu
c3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRldGFpbHNT
aWRlYmFyUGFuZWwuY2FsbCh0aGlzLCAiYXBwbGljYXRpb24tY2FjaGUtZGV0YWlscyIsIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiU3RvcmFnZSIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3Jh
Z2UiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVN0b3JhZ2Uuc3ZnIik7CisgICAgY29uc3RydWN0
b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoImFwcGxpY2F0aW9uLWNhY2hlLWRldGFpbHMiLCBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3JhZ2UiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
dG9yYWdlIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1TdG9yYWdlLnN2ZyIpOwogCiAgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hl
RGV0YWlsc1NpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSk7CiAKQEAgLTUwLDI3ICs1MiwxMSBA
QCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwgPSBmdW5j
dGlvbigpCiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLkV2ZW50
Lk5ldHdvcmtTdGF0ZVVwZGF0ZWQsIHRoaXMuX25ldHdvcmtTdGF0ZVVwZGF0ZWQsIHRoaXMpOwog
ICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuRXZlbnQuRnJhbWVNYW5p
ZmVzdFN0YXR1c0NoYW5nZWQsIHRoaXMuX2ZyYW1lTWFuaWZlc3RTdGF0dXNDaGFuZ2VkLCB0aGlz
KTsKLX07Ci0KLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5l
bC5TdHlsZUNsYXNzTmFtZSA9ICJhcHBsaWNhdGlvbi1jYWNoZSI7Ci0KLS8vIFRoaXMgbmVlZHMg
dG8gYmUga2VwdCBpbiBzeW5jIHdpdGggQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMuCi1XZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwuU3RhdHVzID0gewot
ICAgIDA6ICJVbmNhY2hlZCIsCi0gICAgMTogIklkbGUiLAotICAgIDI6ICJDaGVja2luZyIsCi0g
ICAgMzogIkRvd25sb2FkaW5nIiwKLSAgICA0OiAiVXBkYXRlUmVhZHkiLAotICAgIDU6ICJPYnNv
bGV0ZSIKLX07Ci0KLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAotICAgIGluc3BlY3Q6IGZ1bmN0aW9uKG9iamVjdHMpCisgICAgaW5zcGVjdChvYmplY3RzKQog
ICAgIHsKICAgICAgICAgLy8gQ29udmVydCB0byBhIHNpbmdsZSBpdGVtIGFycmF5IGlmIG5lZWRl
ZC4KICAgICAgICAgaWYgKCEob2JqZWN0cyBpbnN0YW5jZW9mIEFycmF5KSkKQEAgLTg5LDEyICs3
NSwxMiBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmFwcGxpY2F0aW9uQ2FjaGVGcmFtZSA9IGFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZVRvSW5zcGVjdDsKIAogICAgICAgICByZXR1cm4gISF0aGlzLmFwcGxp
Y2F0aW9uQ2FjaGVGcmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBhcHBsaWNhdGlvbkNh
Y2hlRnJhbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVG
cmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhcHBsaWNhdGlvbkNhY2hlRnJhbWUoYXBw
bGljYXRpb25DYWNoZUZyYW1lKQogICAgIHsKQEAgLTEwNCw5ICs5MCw5IEBAIFdlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVGcmFtZSA9IGFwcGxpY2F0aW9uQ2FjaGVGcmFtZTsK
IAogICAgICAgICB0aGlzLm5lZWRzUmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVm
cmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
LmFwcGxpY2F0aW9uQ2FjaGVGcmFtZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTExNiwxOSAr
MTAyLDE5IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fcmVmcmVzaE9ubGluZVJvdygpOwogICAg
ICAgICB0aGlzLl9yZWZyZXNoU3RhdHVzUm93KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cml2YXRlCiAKLSAgICBfbmV0d29ya1N0YXRlVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X25ldHdvcmtTdGF0ZVVwZGF0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuYXBw
bGljYXRpb25DYWNoZUZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
X3JlZnJlc2hPbmxpbmVSb3coKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZU1hbmlmZXN0
U3RhdHVzQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2ZyYW1lTWFuaWZlc3RTdGF0dXND
aGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmFwcGxpY2F0aW9uQ2FjaGVG
cmFtZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzOCwxNSArMTI0LDI3IEBAIFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmVmcmVzaFN0YXR1c1JvdygpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hPbmxpbmVSb3c6IGZ1bmN0aW9uKCkKKyAgICBf
cmVmcmVzaE9ubGluZVJvdygpCiAgICAgewogICAgICAgICB0aGlzLl9vbmxpbmVSb3cudmFsdWUg
PSBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIub25saW5lID8gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJZZXMiKSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8iKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9yZWZyZXNoU3RhdHVzUm93OiBmdW5jdGlvbigpCisgICAgX3JlZnJl
c2hTdGF0dXNSb3coKQogICAgIHsKICAgICAgICAgdGhpcy5fc3RhdHVzUm93LnZhbHVlID0gV2Vi
SW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBhbmVsLlN0YXR1c1t0aGlz
LmFwcGxpY2F0aW9uQ2FjaGVGcmFtZS5zdGF0dXNdOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJh
cHBsaWNhdGlvbi1jYWNoZSI7CisKKy8vIFRoaXMgbmVlZHMgdG8gYmUga2VwdCBpbiBzeW5jIHdp
dGggQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuanMuCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25D
YWNoZURldGFpbHNTaWRlYmFyUGFuZWwuU3RhdHVzID0geworICAgIDA6ICJVbmNhY2hlZCIsCisg
ICAgMTogIklkbGUiLAorICAgIDI6ICJDaGVja2luZyIsCisgICAgMzogIkRvd25sb2FkaW5nIiwK
KyAgICA0OiAiVXBkYXRlUmVhZHkiLAorICAgIDU6ICJPYnNvbGV0ZSIKK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNh
Y2hlRnJhbWVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LmpzCmluZGV4IDc4YTg5
YzMuLjE0MzEwZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFt
ZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MCwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDExICsyMywxMyBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5BcHBsaWNh
dGlvbkNhY2hlRnJhbWVDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQor
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3ID0gY2xhc3MgQXBw
bGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSk7CiAKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCk7CisgICAgICAgIHN1cGVyKHJlcHJlc2Vu
dGVkT2JqZWN0KTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNw
ZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOwog
CkBAIC00OCw2MSArNTAsNTggQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNv
bnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5GcmFtZU1hbmlmZXN0U3RhdHVzQ2hhbmdl
ZCwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsKICAgICB9CiAKLVdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJhcHBsaWNhdGlv
bi1jYWNoZS1mcmFtZSI7Ci0KLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250
ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlRnJhbWVDb250ZW50VmlldywKKyAgICAvLyBQdWJsaWMKIAogICAgIGdldCBh
bGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFtX
ZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuaWRlbnRpZmllcl07Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX21heWJlVXBkYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0
aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0
aW9uQ2FjaGVNYW5hZ2VyLkV2ZW50LkZyYW1lTWFuaWZlc3RTdGF0dXNDaGFuZ2VkLCB0aGlzLl91
cGRhdGVTdGF0dXMsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBm
dW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmRh
dGFHcmlkKQogICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVU
b0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuQXBwbGljYXRpb25DYWNoZTsKICAgICAgICAgY29va2ll
LmZyYW1lID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5mcmFtZS51cmw7CiAgICAgICAgIGNvb2tp
ZS5tYW5pZmVzdCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QubWFuaWZlc3QubWFuaWZlc3RVUkw7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5fZGF0YUdyaWQpCiAgICAgICAgICAgICByZXR1cm4gW107CiAgICAg
ICAgIHJldHVybiBbdGhpcy5fZGF0YUdyaWQuc2Nyb2xsQ29udGFpbmVyXTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9tYXliZVVwZGF0ZTogZnVuY3Rpb24oKQorICAgIF9tYXliZVVwZGF0ZSgpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSB8fCAhdGhpcy5fdmlld0RpcnR5KQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZSgpOwogICAgICAgICB0aGlz
Ll92aWV3RGlydHkgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tYXJrRGlydHk6IGZ1
bmN0aW9uKCkKKyAgICBfbWFya0RpcnR5KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ZpZXdEaXJ0
eSA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3RhdHVzOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfdXBkYXRlU3RhdHVzKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGZyYW1l
TWFuaWZlc3QgPSBldmVudC5kYXRhLmZyYW1lTWFuaWZlc3Q7CiAgICAgICAgIGlmIChmcmFtZU1h
bmlmZXN0ICE9PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0KQpAQCAtMTExLDkgKzExMCw5IEBAIFdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZyYW1lTWFuaWZlc3QgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1
cyhmcmFtZU1hbmlmZXN0LnN0YXR1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVTdGF0
dXM6IGZ1bmN0aW9uKHN0YXR1cykKKyAgICB1cGRhdGVTdGF0dXMoc3RhdHVzKQogICAgIHsKICAg
ICAgICAgdmFyIG9sZFN0YXR1cyA9IHRoaXMuX3N0YXR1czsKICAgICAgICAgdGhpcy5fc3RhdHVz
ID0gc3RhdHVzOwpAQCAtMTIyLDE0ICsxMjEsMTQgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9u
Q2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX21h
cmtEaXJ0eSgpOwogCiAgICAgICAgIHRoaXMuX21heWJlVXBkYXRlKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfdXBkYXRlOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZSgpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIucmVxdWVzdEFwcGxpY2F0aW9u
Q2FjaGUodGhpcy5fZnJhbWUsIHRoaXMuX3VwZGF0ZUNhbGxiYWNrLmJpbmQodGhpcykpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUNhbGxiYWNrOiBmdW5jdGlvbihhcHBsaWNhdGlvbkNh
Y2hlKQorICAgIF91cGRhdGVDYWxsYmFjayhhcHBsaWNhdGlvbkNhY2hlKQogICAgIHsKICAgICAg
ICAgaWYgKCFhcHBsaWNhdGlvbkNhY2hlIHx8ICFhcHBsaWNhdGlvbkNhY2hlLm1hbmlmZXN0VVJM
KSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fbWFuaWZlc3Q7CkBAIC0xNjAsOSArMTU5LDkg
QEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJo
aWRkZW4iKTsKIAogICAgICAgICB0aGlzLl9lbXB0eVZpZXcuY2xhc3NMaXN0LmFkZCgiaGlkZGVu
Iik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY3JlYXRlRGF0YUdyaWQ6IGZ1bmN0aW9uKCkKKyAg
ICBfY3JlYXRlRGF0YUdyaWQoKQogICAgIHsKICAgICAgICAgdmFyIGNvbHVtbnMgPSB7dXJsOiB7
fSwgdHlwZToge30sIHNpemU6IHt9fTsKIApAQCAtMTg0LDE0ICsxODMsMTUgQEAgV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAg
ICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3NvcnREYXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9zb3J0RGF0YUdyaWQoKQogICAgIHsK
ICAgICAgICAgZnVuY3Rpb24gbnVtYmVyQ29tcGFyZShjb2x1bW5JZGVudGlmaWVyLCBub2RlQSwg
bm9kZUIpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBub2RlQS5kYXRhW2NvbHVtbklk
ZW50aWZpZXJdIC0gbm9kZUIuZGF0YVtjb2x1bW5JZGVudGlmaWVyXTsKICAgICAgICAgfQorCiAg
ICAgICAgIGZ1bmN0aW9uIGxvY2FsZUNvbXBhcmUoY29sdW1uSWRlbnRpZmllciwgbm9kZUEsIG5v
ZGVCKQogICAgICAgICB7CiAgICAgICAgICAgICAgcmV0dXJuIChub2RlQS5kYXRhW2NvbHVtbklk
ZW50aWZpZXJdICsgIiIpLmxvY2FsZUNvbXBhcmUobm9kZUIuZGF0YVtjb2x1bW5JZGVudGlmaWVy
XSArICIiKTsKQEAgLTIwNiw5ICsyMDYsOSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNo
ZUZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhp
cy5fZGF0YUdyaWQuc29ydE5vZGVzKGNvbXBhcmF0b3IpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3BvcHVsYXRlRGF0YUdyaWQ6IGZ1bmN0aW9uKCkKKyAgICBfcG9wdWxhdGVEYXRhR3JpZCgpCiAg
ICAgewogICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0yMjIs
MTggKzIyMiwxOCBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKICAg
ICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGUpOwogICAgICAgICB9Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfZGVsZXRlQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2RlbGV0ZUJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuX2RhdGFHcmlkIHx8ICF0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IERlbGV0ZSBCdXR0b24gc2VtYW50aWNzIGFy
ZSBub3QgeWV0IGRlZmluZWQuIChEZWxldGUgYSBzaW5nbGUsIG9yIGFsbD8pCiAgICAgICAgIHRo
aXMuX2RlbGV0ZUNhbGxiYWNrKHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZGVsZXRlQ2FsbGJhY2s6IGZ1bmN0aW9uKG5vZGUpCisgICAgX2RlbGV0
ZUNhbGxiYWNrKG5vZGUpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGRlbGV0
ZSBhIHNpbmdsZSAoc2VsZWN0ZWQpIHJlc291cmNlIG9yIGFsbCByZXNvdXJjZXM/CiAgICAgICAg
IC8vIEluc3BlY3RvckJhY2tlbmQuZGVsZXRlQ2FjaGVkUmVzb3VyY2UoLi4uKQpAQCAtMjQxLDQg
KzI0MSw0IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZy
YW1lQ29udGVudFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250ZW50
Vmlldy5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVu
dFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJhbWUiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRp
b25DYWNoZUZyYW1lVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5qcwppbmRleCA3
YWJjNTRmLi43OTM2OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hl
RnJhbWVUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjMgKzIzLDIwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFt
ZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3Iu
QXBwbGljYXRpb25DYWNoZUZyYW1lVHJlZUVsZW1lbnQgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hl
RnJhbWVUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQK
K3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFw
cGxpY2F0aW9uQ2FjaGVGcmFtZSk7CiAKLSAgICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVt
ZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVt
ZW50LlN0eWxlQ2xhc3NOYW1lLCAiIiwgIiIsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7Cisg
ICAgICAgIHN1cGVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVu
dC5TdHlsZUNsYXNzTmFtZSwgIiIsICIiLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOwogCiAg
ICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwogCiAgICAgICAgIHRoaXMudXBkYXRlVGl0bGVzKCk7
Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVt
ZW50LlN0eWxlQ2xhc3NOYW1lID0gImFwcGxpY2F0aW9uLWNhY2hlLWZyYW1lIjsKLQotV2ViSW5z
cGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVt
ZW50LAotCi0gICAgdXBkYXRlVGl0bGVzOiBmdW5jdGlvbigpCisgICAgdXBkYXRlVGl0bGVzKCkK
ICAgICB7CiAgICAgICAgIHZhciB1cmwgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmZyYW1lLnVy
bDsKICAgICAgICAgdmFyIHBhcnNlZFVSTCA9IHBhcnNlVVJMKHVybCk7CkBAIC01OCw0ICs1NSw0
IEBAIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVUcmVl
RWxlbWVudC5TdHlsZUNsYXNzTmFtZSA9ICJhcHBsaWNhdGlvbi1jYWNoZS1mcmFtZSI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNh
dGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50Lmpz
CmluZGV4IDlmODkzZGUuLjY3OTdlMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNyArMjMsMTQgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQXBwbGlj
YXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVj
dCkKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudCA9IGNs
YXNzIEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlN0b3JhZ2VUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2Jq
ZWN0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KTsKIAotICAgIFdl
Ykluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUsICIiLCByZXBy
ZXNlbnRlZE9iamVjdCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlm
ZXN0VHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAiYXBwbGljYXRpb24tY2FjaGUtbWFuaWZl
c3QiOwotCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQsCisgICAgICAgIHN1cGVyKFdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSwgIiIsIHJlcHJl
c2VudGVkT2JqZWN0KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNDMsNyArNDAsNyBA
QCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZ2VuZXJhdGVUaXRsZXMoKTsKIAogICAgICAgICBy
ZXR1cm4gdGhpcy5fbmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWNvbmRhcnlOYW1l
KCkKICAgICB7CkBAIC01MSwxNCArNDgsMTQgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2Fj
aGVNYW5pZmVzdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2dl
bmVyYXRlVGl0bGVzKCk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlY29uZGFyeU5hbWU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2F0ZWdvcnlOYW1lKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFwcGxpY2F0aW9uIENhY2hlIik7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZ2VuZXJhdGVUaXRsZXM6IGZ1bmN0aW9uKCkKKyAgICBfZ2VuZXJhdGVU
aXRsZXMoKQogICAgIHsKICAgICAgICAgdmFyIHBhcnNlZFVSTCA9IHBhcnNlVVJMKHRoaXMucmVw
cmVzZW50ZWRPYmplY3QubWFuaWZlc3RVUkwpOwogCkBAIC03MSw0ICs2OCw0IEBAIFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFRyZWVFbGVt
ZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50
LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RUcmVlRWxl
bWVudC5TdHlsZUNsYXNzTmFtZSA9ICJhcHBsaWNhdGlvbi1jYWNoZS1tYW5pZmVzdCI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Cb3hNb2Rl
bERldGFpbHNTZWN0aW9uUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5qcwppbmRleCA1YzQ3OGJjLi5mYTQz
YmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDM4
ICsyMywzNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93ID0gZnVuY3Rpb24oKSB7Ci0gICAg
V2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJObyBCb3ggTW9kZWwgSW5mb3JtYXRpb24iKSk7CitXZWJJbnNwZWN0b3IuQm94TW9k
ZWxEZXRhaWxzU2VjdGlvblJvdyA9IGNsYXNzIEJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cKK3sKKyAgICBjb25zdHJ1Y3Rvcigp
CisgICAgeworICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIEJveCBNb2Rl
bCBJbmZvcm1hdGlvbiIpKTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5TdHlsZUNsYXNzTmFtZSk7CiAK
ICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcyA9IG51bGw7Ci19OwotCi1XZWJJbnNwZWN0b3IuQm94
TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5TdHlsZUNsYXNzTmFtZSA9ICJib3gtbW9kZWwiOwotV2Vi
SW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuU3R5bGVWYWx1ZURlbGltaXRlcnMg
PSAiIFx4QTBcdFxuXCInOjssLygpIjsKLVdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0
aW9uUm93LkNTU051bWJlclJlZ2V4ID0gL14oLT8oPzpcZCsoPzpcLlxkKyk/fFwuXGQrKSkkLzsK
LQotV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdywK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBub2RlU3R5bGVzKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9ub2RlU3R5bGVzOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IG5vZGVTdHlsZXMobm9kZVN0eWxlcykKICAgICB7CiAgICAgICAgIHRoaXMuX25vZGVTdHlsZXMg
PSBub2RlU3R5bGVzOwogCiAgICAgICAgIHRoaXMuX3JlZnJlc2goKTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIF9yZWZyZXNoOiBmdW5jdGlvbigpCisgICAgX3JlZnJl
c2goKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2lnbm9yZU5leHRSZWZyZXNoKSB7CiAgICAg
ICAgICAgICBkZWxldGUgdGhpcy5faWdub3JlTmV4dFJlZnJlc2g7CkBAIC02MiwxNCArNTgsMTQg
QEAgV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fdXBkYXRlTWV0cmljcygpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2dldFByb3BlcnR5VmFsdWVBc1B4OiBmdW5jdGlvbihzdHlsZSwgcHJvcGVydHlO
YW1lKQorICAgIF9nZXRQcm9wZXJ0eVZhbHVlQXNQeChzdHlsZSwgcHJvcGVydHlOYW1lKQogICAg
IHsKICAgICAgICAgcmV0dXJuIE51bWJlcihzdHlsZS5wcm9wZXJ0eUZvck5hbWUocHJvcGVydHlO
YW1lKS52YWx1ZS5yZXBsYWNlKC9weCQvLCAiIikgfHwgMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZ2V0Qm94OiBmdW5jdGlvbihjb21wdXRlZFN0eWxlLCBjb21wb25lbnROYW1lKQorICAgIF9n
ZXRCb3goY29tcHV0ZWRTdHlsZSwgY29tcG9uZW50TmFtZSkKICAgICB7CiAgICAgICAgIHZhciBz
dWZmaXggPSBjb21wb25lbnROYW1lID09PSAiYm9yZGVyIiA/ICItd2lkdGgiIDogIiI7CiAgICAg
ICAgIHZhciBsZWZ0ID0gdGhpcy5fZ2V0UHJvcGVydHlWYWx1ZUFzUHgoY29tcHV0ZWRTdHlsZSwg
Y29tcG9uZW50TmFtZSArICItbGVmdCIgKyBzdWZmaXgpOwpAQCAtNzcsOSArNzMsOSBAQCBXZWJJ
bnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciByaWdodCA9IHRoaXMuX2dldFByb3BlcnR5VmFsdWVBc1B4KGNvbXB1dGVkU3R5bGUsIGNv
bXBvbmVudE5hbWUgKyAiLXJpZ2h0IiArIHN1ZmZpeCk7CiAgICAgICAgIHZhciBib3R0b20gPSB0
aGlzLl9nZXRQcm9wZXJ0eVZhbHVlQXNQeChjb21wdXRlZFN0eWxlLCBjb21wb25lbnROYW1lICsg
Ii1ib3R0b20iICsgc3VmZml4KTsKICAgICAgICAgcmV0dXJuIHtsZWZ0LCB0b3AsIHJpZ2h0LCBi
b3R0b219OwotICAgIH0sCisgICAgfQogCi0gICAgX2hpZ2hsaWdodERPTU5vZGU6IGZ1bmN0aW9u
KHNob3dIaWdobGlnaHQsIG1vZGUsIGV2ZW50KQorICAgIF9oaWdobGlnaHRET01Ob2RlKHNob3dI
aWdobGlnaHQsIG1vZGUsIGV2ZW50KQogICAgIHsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0
aW9uKCk7CiAKQEAgLTEwMSw5ICs5Nyw5IEBAIFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNT
ZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg
ICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImFjdGl2ZSIpOwogICAgICAgICB9Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdXBkYXRlTWV0cmljczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVNZXRy
aWNzKCkKICAgICB7CiAgICAgICAgIC8vIFVwZGF0aW5nIHdpdGggY29tcHV0ZWQgc3R5bGUuCiAg
ICAgICAgIHZhciBtZXRyaWNzRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwpAQCAtMjUyLDkgKzI0OCw5IEBAIFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9u
Um93LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmhpZGVFbXB0eU1lc3NhZ2UoKTsKICAg
ICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKG1ldHJpY3NFbGVtZW50KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9zdGFydEVkaXRpbmc6IGZ1bmN0aW9uKHRhcmdldEVsZW1lbnQsIGJveCwg
c3R5bGVQcm9wZXJ0eSwgY29tcHV0ZWRTdHlsZSkKKyAgICBfc3RhcnRFZGl0aW5nKHRhcmdldEVs
ZW1lbnQsIGJveCwgc3R5bGVQcm9wZXJ0eSwgY29tcHV0ZWRTdHlsZSkKICAgICB7CiAgICAgICAg
IGlmIChXZWJJbnNwZWN0b3IuaXNCZWluZ0VkaXRlZCh0YXJnZXRFbGVtZW50KSkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI3NSw5ICsyNzEsOSBAQCBXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRh
aWxzU2VjdGlvblJvdy5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVk
aXRpbmcodGFyZ2V0RWxlbWVudCwgY29uZmlnKTsKIAogICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCkuc2V0QmFzZUFuZEV4dGVudCh0YXJnZXRFbGVtZW50LCAwLCB0YXJnZXRFbGVtZW50LCAx
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hbHRlcmVkRmxvYXROdW1iZXI6IGZ1bmN0aW9uKG51
bWJlciwgZXZlbnQpCisgICAgX2FsdGVyZWRGbG9hdE51bWJlcihudW1iZXIsIGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIGFycm93S2V5UHJlc3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09
PSAiVXAiIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJEb3duIik7CiAKQEAgLTMwMSw5ICsy
OTcsOSBAQCBXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZUtleURvd246IGZ1bmN0aW9uKGNvbnRleHQsIHN0
eWxlUHJvcGVydHksIGV2ZW50KQorICAgIF9oYW5kbGVLZXlEb3duKGNvbnRleHQsIHN0eWxlUHJv
cGVydHksIGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCEvXig/OlBhZ2UpPyg/OlVwfERvd24p
JC8udGVzdChldmVudC5rZXlJZGVudGlmaWVyKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM2
MCwyMyArMzU2LDIzIEBAIFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faWdub3JlTmV4dFJlZnJlc2ggPSB0cnVlOwogCiAg
ICAgICAgIHRoaXMuX2FwcGx5VXNlcklucHV0KGVsZW1lbnQsIHJlcGxhY2VtZW50U3RyaW5nLCBv
cmlnaW5hbFZhbHVlLCBjb250ZXh0LCBmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZWRp
dGluZ0VuZGVkOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZXh0KQorICAgIF9lZGl0aW5nRW5kZWQo
ZWxlbWVudCwgY29udGV4dCkKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLm9yaWdpbmFsUHJv
cGVydHlEYXRhOwogICAgICAgICBkZWxldGUgdGhpcy5wcmV2aW91c1Byb3BlcnR5RGF0YUNhbmRp
ZGF0ZTsKICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgY29u
dGV4dC5rZXlEb3duSGFuZGxlciwgZmFsc2UpOwogICAgICAgICBkZWxldGUgdGhpcy5faXNFZGl0
aW5nTWV0cmljczsKLSAgICB9LAorICAgIH0KIAotICAgIF9lZGl0aW5nQ2FuY2VsbGVkOiBmdW5j
dGlvbihlbGVtZW50LCBjb250ZXh0KQorICAgIF9lZGl0aW5nQ2FuY2VsbGVkKGVsZW1lbnQsIGNv
bnRleHQpCiAgICAgewogICAgICAgICB0aGlzLl9lZGl0aW5nRW5kZWQoZWxlbWVudCwgY29udGV4
dCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hcHBs
eVVzZXJJbnB1dDogZnVuY3Rpb24oZWxlbWVudCwgdXNlcklucHV0LCBwcmV2aW91c0NvbnRlbnQs
IGNvbnRleHQsIGNvbW1pdEVkaXRvcikKKyAgICBfYXBwbHlVc2VySW5wdXQoZWxlbWVudCwgdXNl
cklucHV0LCBwcmV2aW91c0NvbnRlbnQsIGNvbnRleHQsIGNvbW1pdEVkaXRvcikKICAgICB7CiAg
ICAgICAgIGlmIChjb21taXRFZGl0b3IgJiYgdXNlcklucHV0ID09PSBwcmV2aW91c0NvbnRlbnQp
IHsKICAgICAgICAgICAgIC8vIE5vdGhpbmcgY2hhbmdlZCwgc28gY2FuY2VsLgpAQCAtNDE5LDEz
ICs0MTUsMTUgQEAgV2ViSW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90
eXBlID0gewogICAgICAgICB2YXIgcHJvcGVydHkgPSB0aGlzLl9ub2RlU3R5bGVzLmlubGluZVN0
eWxlLnByb3BlcnR5Rm9yTmFtZShjb250ZXh0LnN0eWxlUHJvcGVydHkpOwogICAgICAgICBwcm9w
ZXJ0eS52YWx1ZSA9IHVzZXJJbnB1dDsKICAgICAgICAgcHJvcGVydHkuYWRkKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgdXNlcklu
cHV0LCBwcmV2aW91c0NvbnRlbnQsIGNvbnRleHQpCisgICAgX2VkaXRpbmdDb21taXR0ZWQoZWxl
bWVudCwgdXNlcklucHV0LCBwcmV2aW91c0NvbnRlbnQsIGNvbnRleHQpCiAgICAgewogICAgICAg
ICB0aGlzLl9lZGl0aW5nRW5kZWQoZWxlbWVudCwgY29udGV4dCk7CiAgICAgICAgIHRoaXMuX2Fw
cGx5VXNlcklucHV0KGVsZW1lbnQsIHVzZXJJbnB1dCwgcHJldmlvdXNDb250ZW50LCBjb250ZXh0
LCB0cnVlKTsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2VjdGlv
blJvdy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93
LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93LlN0eWxl
Q2xhc3NOYW1lID0gImJveC1tb2RlbCI7CitXZWJJbnNwZWN0b3IuQm94TW9kZWxEZXRhaWxzU2Vj
dGlvblJvdy5TdHlsZVZhbHVlRGVsaW1pdGVycyA9ICIgXHhBMFx0XG5cIic6OywvKCkiOworV2Vi
SW5zcGVjdG9yLkJveE1vZGVsRGV0YWlsc1NlY3Rpb25Sb3cuQ1NTTnVtYmVyUmVnZXggPSAvXigt
Pyg/OlxkKyg/OlwuXGQrKT98XC5cZCspKSQvOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmll
dy5qcwppbmRleCA0YzFkYjMwLi5lOTkyOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9u
Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsMTAgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3ID0gZnVuY3Rpb24o
YWN0aW9uLCBkZWxlZ2F0ZSwgb21pdEZvY3VzKQorV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rp
b25WaWV3ID0gY2xhc3MgQnJlYWtwb2ludEFjdGlvblZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5P
YmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGFjdGlvbiwgZGVsZWdhdGUsIG9taXRG
b2N1cykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQo
YWN0aW9uKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZGVsZWdhdGUpOwpAQCAtNjcsOSArNjgs
MTEgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rpb25WaWV3ID0gZnVuY3Rpb24oYWN0aW9u
LCBkZWxlZ2F0ZSwgb21pdEZvY3VzKQogICAgICAgICB0aGlzLl9ib2R5RWxlbWVudC5jbGFzc05h
bWUgPSAiYnJlYWtwb2ludC1hY3Rpb24tYmxvY2stYm9keSI7CiAKICAgICAgICAgdGhpcy5fdXBk
YXRlQm9keShvbWl0Rm9jdXMpOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50
QWN0aW9uVmlldy5kaXNwbGF5U3RyaW5nRm9yVHlwZSA9IGZ1bmN0aW9uKHR5cGUpCisgICAgLy8g
U3RhdGljCisKKyAgICBzdGF0aWMgZGlzcGxheVN0cmluZ0ZvclR5cGUodHlwZSkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5CcmVha3Bv
aW50QWN0aW9uLlR5cGUuTG9nOgpAQCAtODQsNDYgKzg3LDQzIEBAIFdlYkluc3BlY3Rvci5CcmVh
a3BvaW50QWN0aW9uVmlldy5kaXNwbGF5U3RyaW5nRm9yVHlwZSA9IGZ1bmN0aW9uKHR5cGUpCiAg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gIiI7
CiAgICAgICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldy5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9u
VmlldywKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBhY3Rpb24oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBl
bGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3BpY2tlckNoYW5nZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9waWNrZXJDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG5ld1R5
cGUgPSBldmVudC50YXJnZXQudmFsdWU7CiAgICAgICAgIHRoaXMuX2FjdGlvbiA9IHRoaXMuX2Fj
dGlvbi5icmVha3BvaW50LnJlY3JlYXRlQWN0aW9uKG5ld1R5cGUsIHRoaXMuX2FjdGlvbik7CiAg
ICAgICAgIHRoaXMuX3VwZGF0ZUJvZHkoKTsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUuYnJlYWtw
b2ludEFjdGlvblZpZXdSZXNpemVkKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FwcGVu
ZEFjdGlvbkJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9hcHBlbmRBY3Rpb25C
dXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG5ld0FjdGlvbiA9IHRoaXMu
X2FjdGlvbi5icmVha3BvaW50LmNyZWF0ZUFjdGlvbihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5E
ZWZhdWx0QnJlYWtwb2ludEFjdGlvblR5cGUsIHRoaXMuX2FjdGlvbik7CiAgICAgICAgIHRoaXMu
X2RlbGVnYXRlLmJyZWFrcG9pbnRBY3Rpb25WaWV3QXBwZW5kQWN0aW9uVmlldyh0aGlzLCBuZXdB
Y3Rpb24pOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZUFjdGlvbjogZnVuY3Rpb24oKQor
ICAgIF9yZW1vdmVBY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fYWN0aW9uLmJyZWFrcG9p
bnQucmVtb3ZlQWN0aW9uKHRoaXMuX2FjdGlvbik7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlLmJy
ZWFrcG9pbnRBY3Rpb25WaWV3UmVtb3ZlQWN0aW9uVmlldyh0aGlzKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF91cGRhdGVCb2R5OiBmdW5jdGlvbihvbWl0Rm9jdXMpCisgICAgX3VwZGF0ZUJvZHko
b21pdEZvY3VzKQogICAgIHsKICAgICAgICAgdGhpcy5fYm9keUVsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKIApAQCAtMTgyLDE0ICsxODIsMTQgQEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRBY3Rp
b25WaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2JvZHlFbGVtZW50LmhpZGRl
biA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQog
Ci0gICAgX2xvZ0lucHV0Q2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2xvZ0lucHV0Q2hh
bmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2FjdGlvbi5kYXRhID0gZXZlbnQudGFy
Z2V0LnZhbHVlOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvZGVNaXJyb3JCbHVycmVkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfY29kZU1pcnJvckJsdXJyZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICAvLyBUaHJvdyBhd2F5IHRoZSBleHByZXNzaW9uIGlmIGl0J3MganVzdCB3aGl0ZXNwYWNlLgog
ICAgICAgICB2YXIgZGF0YSA9ICh0aGlzLl9jb2RlTWlycm9yLmdldFZhbHVlKCkgfHwgIiIpLnRy
aW0oKTsKQEAgLTE5OCwxMiArMTk4LDEwIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9u
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZW1vdmVBY3Rpb24oKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fYWN0aW9uLmRhdGEgPSBkYXRhOwotICAgIH0s
CisgICAgfQogCi0gICAgX2NvZGVNaXJyb3JWaWV3cG9ydENoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9jb2RlTWlycm9yVmlld3BvcnRDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
dGhpcy5fZGVsZWdhdGUuYnJlYWtwb2ludEFjdGlvblZpZXdSZXNpemVkKHRoaXMpOwogICAgIH0K
IH07Ci0KLVdlYkluc3BlY3Rvci5CcmVha3BvaW50QWN0aW9uVmlldy5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50
VHJlZUVsZW1lbnQuanMKaW5kZXggYTA5YWMwOC4uMDg2NmUzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFr
cG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNCArMjMsMTYgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVF
bGVtZW50ID0gZnVuY3Rpb24oYnJlYWtwb2ludCwgY2xhc3NOYW1lLCB0aXRsZSkKK1dlYkluc3Bl
Y3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0
b3IoYnJlYWtwb2ludCwgY2xhc3NOYW1lLCB0aXRsZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludCk7CiAK
ICAgICAgICAgaWYgKCFjbGFzc05hbWUpCiAgICAgICAgICAgICBjbGFzc05hbWUgPSBXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LkdlbmVyaWNMaW5lSWNvblN0eWxlQ2xhc3NOYW1l
OwogCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFtXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lLCBjbGFzc05hbWVd
LCB0aXRsZSwgbnVsbCwgYnJlYWtwb2ludCwgZmFsc2UpOworICAgICAgICBzdXBlcihbImJyZWFr
cG9pbnQiLCBjbGFzc05hbWVdLCB0aXRsZSwgbnVsbCwgYnJlYWtwb2ludCwgZmFsc2UpOwogCiAg
ICAgICAgIHRoaXMuX2JyZWFrcG9pbnQgPSBicmVha3BvaW50OwogCkBAIC01OSw2NCArNjEsNDkg
QEAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKGJyZWFrcG9p
bnQsIGNsYXNzTmFtZSwgdGl0bGUpCiAKICAgICAgICAgdGhpcy5faWNvbkFuaW1hdGlvbkxheWVy
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgdGhpcy5p
Y29uRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9pY29uQW5pbWF0aW9uTGF5ZXJFbGVtZW50KTsK
LX07Ci0KLVdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuR2VuZXJpY0xpbmVJY29u
U3R5bGVDbGFzc05hbWUgPSAiYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiI7Ci1XZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lID0gImJyZWFrcG9pbnQi
OwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1lbnRT
dHlsZUNsYXNzTmFtZSA9ICJzdGF0dXMtaW1hZ2UiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRU
cmVlRWxlbWVudC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFzc05hbWUgPSAicmVzb2x2ZWQi
OwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUF1dG9Db250
aW51ZVN0eWxlQ2xhc3NOYW1lID0gImF1dG8tY29udGludWUiOwotV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVDbGFzc05hbWUgPSAiZGlz
YWJsZWQiOwotV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Gb3JtYXR0ZWRMb2Nh
dGlvblN0eWxlQ2xhc3NOYW1lID0gImZvcm1hdHRlZC1sb2NhdGlvbiI7Ci1XZWJJbnNwZWN0b3Iu
QnJlYWtwb2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVwZGF0ZWRTdHlsZUNsYXNzTmFtZSA9ICJk
YXRhLXVwZGF0ZWQiOwotCi1XZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LlByb2Jl
RGF0YVVwZGF0ZWRBbmltYXRpb25EdXJhdGlvbiA9IDQwMDsgLy8gbWlsbGlzZWNvbmRzCi0KLQot
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQsCisgICAgfQogCiAg
ICAgLy8gUHVibGljCiAKICAgICBnZXQgYnJlYWtwb2ludCgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fYnJlYWtwb2ludDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmaWx0ZXJhYmxl
RGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4ge3RleHQ6IHRoaXMuYnJlYWtwb2ludC51cmx9
OwotICAgIH0sCisgICAgfQogCi0gICAgb25kZWxldGU6IGZ1bmN0aW9uKCkKKyAgICBvbmRlbGV0
ZSgpCiAgICAgewogICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuaXNC
cmVha3BvaW50UmVtb3ZhYmxlKHRoaXMuX2JyZWFrcG9pbnQpKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJl
YWtwb2ludCh0aGlzLl9icmVha3BvaW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBvbmVudGVyOiBmdW5jdGlvbigpCisgICAgb25lbnRlcigpCiAgICAgewog
ICAgICAgICB0aGlzLl9icmVha3BvaW50LmN5Y2xlVG9OZXh0TW9kZSgpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uc3BhY2U6IGZ1bmN0aW9uKCkKKyAgICBv
bnNwYWNlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQuY3ljbGVUb05leHRNb2Rl
KCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgb25jb250ZXh0
bWVudTogZnVuY3Rpb24oZXZlbnQpCisgICAgb25jb250ZXh0bWVudShldmVudCkKICAgICB7CiAg
ICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUoZXZl
bnQpOwogICAgICAgICB0aGlzLl9icmVha3BvaW50LmFwcGVuZENvbnRleHRNZW51SXRlbXMoY29u
dGV4dE1lbnUsIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudCk7CiAgICAgICAgIGNvbnRleHRNZW51
LnNob3coKTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAg
b25hdHRhY2goKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKIApAQCAtMTI1LDkgKzExMiw5IEBAIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBm
b3IgKHZhciBwcm9iZVNldCBvZiBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLnByb2JlU2V0cykK
ICAgICAgICAgICAgIGlmIChwcm9iZVNldC5icmVha3BvaW50ID09PSB0aGlzLl9icmVha3BvaW50
KQogICAgICAgICAgICAgICAgIHRoaXMuX2FkZFByb2JlU2V0KHByb2JlU2V0KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIG9uZGV0YWNoOiBmdW5jdGlvbigpCisgICAgb25kZXRhY2goKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUub25kZXRh
Y2guY2FsbCh0aGlzKTsKIApAQCAtMTM1LDE3ICsxMjIsMTcgQEAgV2ViSW5zcGVjdG9yLkJyZWFr
cG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuX3Byb2Jl
U2V0KQogICAgICAgICAgICAgdGhpcy5fcmVtb3ZlUHJvYmVTZXQodGhpcy5fcHJvYmVTZXQpOwot
ICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlU3RhdHVzSW1hZ2U6IGZ1bmN0aW9uKCkKKyAgICBy
ZW1vdmVTdGF0dXNJbWFnZSgpCiAgICAgewogICAgICAgICB0aGlzLl9zdGF0dXNJbWFnZUVsZW1l
bnQucmVtb3ZlKCk7CiAgICAgICAgIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudCA9IG51bGw7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRlVGl0bGVzOiBmdW5j
dGlvbigpCisgICAgX3VwZGF0ZVRpdGxlcygpCiAgICAgewogICAgICAgICB2YXIgc291cmNlQ29k
ZUxvY2F0aW9uID0gdGhpcy5fYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CiAKQEAgLTE2
Niw5ICsxNTMsOSBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICAgICAgdGhpcy50b29sdGlwID0gdGhpcy5tYWluVGl0bGUgKyAiIFx1
MjAxNCAiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJvcmlnaW5hbGx5ICVzIikuZm9ybWF0KHNv
dXJjZUNvZGVMb2NhdGlvbi5vcmlnaW5hbExvY2F0aW9uU3RyaW5nKCkpOwogICAgICAgICB9Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3RhdHVzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0
ZVN0YXR1cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudCkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4Nyw5ICsxNzQsOSBAQCBXZWJJbnNwZWN0b3IuQnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3N0YXR1
c0ltYWdlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVs
ZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVD
bGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZFByb2JlU2V0OiBmdW5jdGlvbihw
cm9iZVNldCkKKyAgICBfYWRkUHJvYmVTZXQocHJvYmVTZXQpCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCk7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0LmJyZWFrcG9pbnQgPT09IHRoaXMuX2JyZWFr
cG9pbnQpOwpAQCAtMTk4LDkgKzE4NSw5IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wcm9iZVNldCA9IHByb2JlU2V0Owog
ICAgICAgICBwcm9iZVNldC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZVNldC5F
dmVudC5TYW1wbGVzQ2xlYXJlZCwgdGhpcy5fc2FtcGxlc0NsZWFyZWQsIHRoaXMpOwogICAgICAg
ICBwcm9iZVNldC5kYXRhVGFibGUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUHJvYmVT
ZXREYXRhVGFibGUuRXZlbnQuRnJhbWVJbnNlcnRlZCwgdGhpcy5fZGF0YVVwZGF0ZWQsIHRoaXMp
OwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZVByb2JlU2V0OiBmdW5jdGlvbihwcm9iZVNl
dCkKKyAgICBfcmVtb3ZlUHJvYmVTZXQocHJvYmVTZXQpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCk7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0ID09PSB0aGlzLl9wcm9iZVNldCk7CkBAIC0yMDgs
MzIgKzE5NSwzMiBAQCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcHJvYmVTZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
UHJvYmVTZXQuRXZlbnQuU2FtcGxlc0NsZWFyZWQsIHRoaXMuX3NhbXBsZXNDbGVhcmVkLCB0aGlz
KTsKICAgICAgICAgcHJvYmVTZXQuZGF0YVRhYmxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLkV2ZW50LkZyYW1lSW5zZXJ0ZWQsIHRoaXMuX2RhdGFV
cGRhdGVkLCB0aGlzKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX3Byb2JlU2V0OwotICAgIH0sCisg
ICAgfQogCi0gICAgX3Byb2JlU2V0QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wcm9iZVNl
dEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlU2V0ID0gZXZlbnQuZGF0YS5w
cm9iZVNldDsKICAgICAgICAgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQgPT09IHRoaXMuX2JyZWFr
cG9pbnQpCiAgICAgICAgICAgICB0aGlzLl9hZGRQcm9iZVNldChwcm9iZVNldCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfcHJvYmVTZXRSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcHJv
YmVTZXRSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlU2V0ID0gZXZlbnQu
ZGF0YS5wcm9iZVNldDsKICAgICAgICAgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQgPT09IHRoaXMu
X2JyZWFrcG9pbnQpCiAgICAgICAgICAgICB0aGlzLl9yZW1vdmVQcm9iZVNldChwcm9iZVNldCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2FtcGxlc0NsZWFyZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9zYW1wbGVzQ2xlYXJlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuX3Byb2JlU2V0KTsKIAogICAgICAgICB2YXIgb2xkVGFibGUgPSBldmVudC5kYXRhLm9s
ZFRhYmxlOwogICAgICAgICBvbGRUYWJsZS5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5GcmFtZUluc2VydGVkLCB0aGlzLl9kYXRhVXBkYXRl
ZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3Byb2JlU2V0LmRhdGFUYWJsZS5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFUYWJsZS5FdmVudC5GcmFtZUluc2VydGVkLCB0
aGlzLl9kYXRhVXBkYXRlZCwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YVVwZGF0
ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZGF0YVVwZGF0ZWQoKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVl
RWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUpKSB7CiAgICAgICAgICAgICBj
bGVhclRpbWVvdXQodGhpcy5fcmVtb3ZlSWNvbkFuaW1hdGlvblRpbWVvdXRJZGVudGlmaWVyKTsK
QEAgLTI0OCwxMCArMjM1LDEwIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZW1vdmVJY29uQW5pbWF0aW9uVGltZW91dElk
ZW50aWZpZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Q
cm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9LmJpbmQodGhpcyksIFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuUHJvYmVEYXRhVXBkYXRlZEFuaW1hdGlv
bkR1cmF0aW9uKTsKLSAgICB9LAorICAgIH0KIAogCi0gICAgX2JyZWFrcG9pbnRMb2NhdGlvbkRp
ZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5n
ZShldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCA9PT0g
dGhpcy5fYnJlYWtwb2ludCk7CiAKQEAgLTI2MCwxOCArMjQ3LDI2IEBAIFdlYkluc3BlY3Rvci5C
cmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlcygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0
YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX3N0YXR1c0lt
YWdlRWxlbWVudE1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIC8vIFRvIHByZXZlbnQg
dGhlIHRyZWUgZWxlbWVudCBmcm9tIHNlbGVjdGluZy4KICAgICAgICAgZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQoZXZlbnQp
CiAgICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50LmN5Y2xlVG9OZXh0TW9kZSgpOwogICAg
IH0KIH07CiAKLVdlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5lcmljTGluZUljb25TdHlsZUNsYXNz
TmFtZSA9ICJicmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIjsKK1dlYkluc3BlY3Rvci5CcmVh
a3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAic3Rh
dHVzLWltYWdlIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1h
Z2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lID0gInJlc29sdmVkIjsKK1dlYkluc3BlY3Rvci5CcmVh
a3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGludWVTdHlsZUNsYXNzTmFtZSA9
ICJhdXRvLWNvbnRpbnVlIjsKK1dlYkluc3BlY3Rvci5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3Rh
dHVzSW1hZ2VEaXNhYmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2FibGVkIjsKK1dlYkluc3BlY3Rv
ci5CcmVha3BvaW50VHJlZUVsZW1lbnQuRm9ybWF0dGVkTG9jYXRpb25TdHlsZUNsYXNzTmFtZSA9
ICJmb3JtYXR0ZWQtbG9jYXRpb24iOworV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5Qcm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUgPSAiZGF0YS11cGRhdGVkIjsKKworV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkQW5pbWF0aW9u
RHVyYXRpb24gPSA0MDA7IC8vIG1pbGxpc2Vjb25kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9u
SXRlbS5qcwppbmRleCA0OWZiMTI2Li4yNWRkZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0
aW9uSXRlbS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsMTIgKzIzLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtID0gZnVuY3Rp
b24oaWRlbnRpZmllciwgdG9vbFRpcE9yTGFiZWwsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhl
aWdodCwgc3VwcHJlc3NFbWJvc3MsIHJvbGUsIGxhYmVsKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25JdGVtLmNhbGwodGhpcywgaWRlbnRpZmllcik7Ci0KK1dlYkluc3BlY3Rvci5CdXR0
b25OYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIEJ1dHRvbk5hdmlnYXRpb25JdGVtIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtCit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwg
dG9vbFRpcE9yTGFiZWwsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NF
bWJvc3MsIHJvbGUsIGxhYmVsKQorICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaWRlbnRp
Zmllcik7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRvb2xUaXBPckxhYmVsKTsKIAorICAgICAg
ICBzdXBlcihpZGVudGlmaWVyKTsKKwogICAgICAgICB0aGlzLnRvb2xUaXAgPSB0b29sVGlwT3JM
YWJlbDsKIAogICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5fbW91c2VDbGlja2VkLmJpbmQodGhpcykpOwpAQCAtNDksMzMgKzUyLDE0IEBAIFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRvb2xU
aXBPckxhYmVsLCBpbWFnZSwKICAgICAgICAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdGhpcy5sYWJlbCA9IHRvb2xUaXBPckxhYmVsOwotfTsKLQot
V2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lID0gImJ1dHRv
biI7Ci1XZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRGlzYWJsZWRTdHlsZUNsYXNz
TmFtZSA9ICJkaXNhYmxlZCI7Ci1XZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3Vw
cHJlc3NCZXplbFN0eWxlQ2xhc3NOYW1lID0gInN1cHByZXNzLWJlemVsIjsKLVdlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdXBwcmVzc0VtYm9zc1N0eWxlQ2xhc3NOYW1lID0gInN1
cHByZXNzLWVtYm9zcyI7Ci1XZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uVGV4dE9u
bHlDbGFzc05hbWUgPSAidGV4dC1vbmx5IjsKLQotV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLlN0YXRlcyA9IHt9OwotV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0
YXRlcy5Ob3JtYWwgPSAibm9ybWFsIjsKLVdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRl
bS5TdGF0ZXMuQWN0aXZlID0gImFjdGl2ZSI7Ci1XZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uU3RhdGVzLkZvY3VzID0gImZvY3VzIjsKLVdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0
aW9uSXRlbS5TdGF0ZXMuQWN0aXZlRm9jdXMgPSAiYWN0aXZlLWZvY3VzIjsKLQotV2ViSW5zcGVj
dG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50ID0gewotICAgIENsaWNrZWQ6ICJidXR0b24t
bmF2aWdhdGlvbi1pdGVtLWNsaWNrZWQiCi19OwotCi1XZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdh
dGlvbkl0ZW0ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0sCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdG9v
bFRpcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC50aXRsZTsKLSAgICB9
LAorICAgIH0KIAogICAgIHNldCB0b29sVGlwKG5ld1Rvb2xUaXApCiAgICAgewpAQCAtODQsMTIg
KzY4LDEyIEBAIFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fZWxlbWVudC50aXRsZSA9IG5l
d1Rvb2xUaXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGFiZWwoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQudGV4dENvbnRlbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBzZXQgbGFiZWwobmV3TGFiZWwpCiAgICAgewpAQCAtOTcsMTIgKzgxLDEyIEBAIFdlYkluc3Bl
Y3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQudGV4dENvbnRlbnQgPSBuZXdMYWJlbCB8fCAiIjsKICAgICAgICAgaWYgKHRoaXMucGFy
ZW50TmF2aWdhdGlvbkJhcikKICAgICAgICAgICAgIHRoaXMucGFyZW50TmF2aWdhdGlvbkJhci51
cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbWFnZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgaW1h
Z2UobmV3SW1hZ2UpCiAgICAgewpAQCAtMTIxLDEyICsxMDUsMTIgQEAgV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9nbHlwaEVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUlt
YWdlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5hYmxlZCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gIXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCBlbmFibGVkKGZsYWcpCiAgICAgewpAQCAtMTM0LDEyICsxMTgsMTIgQEAg
V2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgc3VwcHJlc3NCZXplbCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN1
cHByZXNzQmV6ZWxTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc3Vw
cHJlc3NCZXplbChmbGFnKQogICAgIHsKQEAgLTE0Nyw5ICsxMzEsOSBAQCBXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdXBw
cmVzc0JlemVsU3R5bGVDbGFzc05hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25J
dGVtLlN1cHByZXNzQmV6ZWxTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBn
ZW5lcmF0ZVN0eWxlVGV4dDogZnVuY3Rpb24ocGFyZW50U2VsZWN0b3IpCisgICAgZ2VuZXJhdGVT
dHlsZVRleHQocGFyZW50U2VsZWN0b3IpCiAgICAgewogICAgICAgICB2YXIgY2xhc3NOYW1lcyA9
IHRoaXMuX2NsYXNzTmFtZXMuam9pbigiLiIpOwogCkBAIC0xNjcsNDIgKzE1MSw2OCBAQCBXZWJJ
bnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICB9CiAK
ICAgICAgICAgcmV0dXJuIHN0eWxlVGV4dDsKLSAgICB9LAorICAgIH0KKworICAgIC8vIFByb3Rl
Y3RlZAorCisgICAgZ2V0IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBbImJ1dHRvbiJdOworICAgIH0KKworICAgIGdldCBlbWJvc3NlZEltYWdlU3RhdGVzKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
U3RhdGVzOworICAgIH0KKworICAgIGdldCBpbWFnZUNhY2hlYWJsZSgpCisgICAgeworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfYWRkaXRpb25h
bENsYXNzTmFtZXM6IFtXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFz
c05hbWVdLAotICAgIF9lbWJvc3NlZEltYWdlU3RhdGVzOiBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uU3RhdGVzLAotICAgIF9pbWFnZUNhY2hlYWJsZTogdHJ1ZSwKLQotICAgIF9t
b3VzZUNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZUNsaWNrZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkJ1dHRvbk5h
dmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NhbnZh
c0lkZW50aWZpZXI6IGZ1bmN0aW9uKHN0YXRlKQorICAgIF9jYW52YXNJZGVudGlmaWVyKHN0YXRl
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3N1cHByZXNzRW1ib3NzKTsK
ICAgICAgICAgcmV0dXJuICJuYXZpZ2F0aW9uLWl0ZW0tIiArIHRoaXMuX2lkZW50aWZpZXIgKyAi
LSIgKyAoc3RhdGUgfHwgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0YXRlcy5O
b3JtYWwpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUltYWdlOiBmdW5jdGlvbigpCisg
ICAgX3VwZGF0ZUltYWdlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zdXBwcmVzc0VtYm9z
cykKICAgICAgICAgICAgIHRoaXMuX2dseXBoRWxlbWVudC5zdHlsZS53ZWJraXRNYXNrID0gInVy
bCgiICsgdGhpcy5faW1hZ2UgKyAiKSI7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMu
X2dlbmVyYXRlSW1hZ2VzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ2VuZXJhdGVJbWFnZXM6
IGZ1bmN0aW9uKCkKKyAgICBfZ2VuZXJhdGVJbWFnZXMoKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXRoaXMuX3N1cHByZXNzRW1ib3NzKTsKICAgICAgICAgaWYgKHRoaXMuX3N1cHBy
ZXNzRW1ib3NzKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBnZW5lcmF0ZUVtYm9zc2Vk
SW1hZ2VzKHRoaXMuaW1hZ2UsIHRoaXMuX2ltYWdlV2lkdGgsIHRoaXMuX2ltYWdlSGVpZ2h0LCB0
aGlzLl9lbWJvc3NlZEltYWdlU3RhdGVzLCB0aGlzLl9jYW52YXNJZGVudGlmaWVyLmJpbmQodGhp
cyksICF0aGlzLl9pbWFnZUNhY2hlYWJsZSk7CisgICAgICAgIGdlbmVyYXRlRW1ib3NzZWRJbWFn
ZXModGhpcy5pbWFnZSwgdGhpcy5faW1hZ2VXaWR0aCwgdGhpcy5faW1hZ2VIZWlnaHQsIHRoaXMu
ZW1ib3NzZWRJbWFnZVN0YXRlcywgdGhpcy5fY2FudmFzSWRlbnRpZmllci5iaW5kKHRoaXMpLCAh
dGhpcy5pbWFnZUNhY2hlYWJsZSk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkJ1dHRvbk5h
dmlnYXRpb25JdGVtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkl0ZW0ucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkRpc2Fi
bGVkU3R5bGVDbGFzc05hbWUgPSAiZGlzYWJsZWQiOworV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmln
YXRpb25JdGVtLlN1cHByZXNzQmV6ZWxTdHlsZUNsYXNzTmFtZSA9ICJzdXBwcmVzcy1iZXplbCI7
CitXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3VwcHJlc3NFbWJvc3NTdHlsZUNs
YXNzTmFtZSA9ICJzdXBwcmVzcy1lbWJvc3MiOworV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLlRleHRPbmx5Q2xhc3NOYW1lID0gInRleHQtb25seSI7CisKK1dlYkluc3BlY3Rvci5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5TdGF0ZXMgPSB7fTsKK1dlYkluc3BlY3Rvci5CdXR0b25OYXZp
Z2F0aW9uSXRlbS5TdGF0ZXMuTm9ybWFsID0gIm5vcm1hbCI7CitXZWJJbnNwZWN0b3IuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uU3RhdGVzLkFjdGl2ZSA9ICJhY3RpdmUiOworV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLlN0YXRlcy5Gb2N1cyA9ICJmb2N1cyI7CitXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3RhdGVzLkFjdGl2ZUZvY3VzID0gImFjdGl2ZS1mb2N1cyI7
CisKK1dlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudCA9IHsKKyAgICBDbGlj
a2VkOiAiYnV0dG9uLW5hdmlnYXRpb24taXRlbS1jbGlja2VkIgorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xiYXJJdGVt
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9v
bGJhckl0ZW0uanMKaW5kZXggNjFjNDA5ZS4uMzZjZjJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJhckl0ZW0uanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uVG9vbGJh
ckl0ZW0uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkJ1dHRvblRvb2xiYXJJdGVtID0gZnVuY3Rpb24oaWRl
bnRpZmllciwgdG9vbFRpcCwgbGFiZWwsIGltYWdlLCBzdXBwcmVzc0VtYm9zcywgcm9sZSkKK1dl
Ykluc3BlY3Rvci5CdXR0b25Ub29sYmFySXRlbSA9IGNsYXNzIEJ1dHRvblRvb2xiYXJJdGVtIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtCiB7Ci0gICAgV2ViSW5zcGVj
dG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLmNhbGwodGhpcywgaWRlbnRpZmllciwgdG9vbFRpcCwg
aW1hZ2UsIDMyLCAzMiwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpOworICAgIGNvbnN0cnVjdG9yKGlk
ZW50aWZpZXIsIHRvb2xUaXAsIGxhYmVsLCBpbWFnZSwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpCisg
ICAgeworICAgICAgICBzdXBlcihpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgMzIsIDMyLCBz
dXBwcmVzc0VtYm9zcywgcm9sZSk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQobGFiZWwpOwog
CkBAIC0zNCwxOSArMzYsMTQgQEAgV2ViSW5zcGVjdG9yLkJ1dHRvblRvb2xiYXJJdGVtID0gZnVu
Y3Rpb24oaWRlbnRpZmllciwgdG9vbFRpcCwgbGFiZWwsIGltYWdlLCBzdXAKICAgICAgICAgdGhp
cy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sYWJlbEVsZW1lbnQpOwogCiAgICAgICAgIHRo
aXMubGFiZWwgPSBsYWJlbDsKLX07Ci0KLVdlYkluc3BlY3Rvci5CdXR0b25Ub29sYmFySXRlbS5M
YWJlbFN0eWxlQ2xhc3NOYW1lID0gImxhYmVsIjsKLQotV2ViSW5zcGVjdG9yLkJ1dHRvblRvb2xi
YXJJdGVtLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkJ1dHRv
blRvb2xiYXJJdGVtLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGxhYmVsKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9sYWJlbEVsZW1lbnQudGV4dENvbnRlbnQ7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgbGFiZWwobmV3TGFiZWwpCiAgICAgewpAQCAtNTgsNCAr
NTUsNCBAQCBXZWJJbnNwZWN0b3IuQnV0dG9uVG9vbGJhckl0ZW0ucHJvdG90eXBlID0gewogICAg
IH0KIH07CiAKLVdlYkluc3BlY3Rvci5CdXR0b25Ub29sYmFySXRlbS5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZTsKK1dlYklu
c3BlY3Rvci5CdXR0b25Ub29sYmFySXRlbS5MYWJlbFN0eWxlQ2xhc3NOYW1lID0gImxhYmVsIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKaW5kZXggODRmZmNk
Zi4uN2Q0ZTFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24u
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDEwICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbiA9IGZ1bmN0aW9u
KHN0eWxlKQorV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uID0gY2xhc3Mg
Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7
Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHN0eWxlKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsK
IAogICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZSk7CiAgICAgICAgIHRoaXMuX3N0eWxlID0g
c3R5bGUgfHwgbnVsbDsKQEAgLTEwNCw0NSArMTA1LDI0IEBAIFdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uU2VjdGlvbiA9IGZ1bmN0aW9uKHN0eWxlKQogICAgICAgICB9CiAKICAgICAg
ICAgdGhpcy5yZWZyZXNoKCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blNlY3Rpb24uU3R5bGVDbGFzc05hbWUgPSAic3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiI7Ci1X
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uTG9ja2VkU3R5bGVDbGFzc05h
bWUgPSAibG9ja2VkIjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5T
ZWxlY3RvckxvY2tlZFN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdG9yLWxvY2tlZCI7Ci1XZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uTGFzdEluR3JvdXBTdHlsZUNsYXNzTmFt
ZSA9ICJsYXN0LWluLWdyb3VwIjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2Vj
dGlvbi5IZWFkZXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiaGVhZGVyIjsKLVdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5JY29uRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0g
Imljb24iOwotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlNlbGVjdG9y
RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdG9yIjsKLVdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uU2VjdGlvbi5PcmlnaW5FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAib3JpZ2lu
IjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Qcm9wZXJ0aWVzRWxl
bWVudFN0eWxlQ2xhc3NOYW1lID0gInByb3BlcnRpZXMiOwotV2ViSW5zcGVjdG9yLkNTU1N0eWxl
RGVjbGFyYXRpb25TZWN0aW9uLk1hdGNoZWRTZWxlY3RvckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9
ICJtYXRjaGVkIjsKLQotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkF1
dGhvclN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZSA9ICJhdXRob3Itc3R5bGUtcnVsZS1pY29u
IjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Vc2VyU3R5bGVSdWxl
SWNvblN0eWxlQ2xhc3NOYW1lID0gInVzZXItc3R5bGUtcnVsZS1pY29uIjsKLVdlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Vc2VyQWdlbnRTdHlsZVJ1bGVJY29uU3R5bGVD
bGFzc05hbWUgPSAidXNlci1hZ2VudC1zdHlsZS1ydWxlLWljb24iOwotV2ViSW5zcGVjdG9yLkNT
U1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkluc3BlY3RvclN0eWxlUnVsZUljb25TdHlsZUNsYXNz
TmFtZSA9ICJpbnNwZWN0b3Itc3R5bGUtcnVsZS1pY29uIjsKLVdlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uU2VjdGlvbi5Jbmhlcml0ZWRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWUg
PSAiaW5oZXJpdGVkLXN0eWxlLXJ1bGUtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24uSW5oZXJpdGVkRWxlbWVudFN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFt
ZSA9ICJpbmhlcml0ZWQtZWxlbWVudC1zdHlsZS1ydWxlLWljb24iOwotCi1XZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24sCisgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdHlsZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fc3R5bGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGFzdElu
R3JvdXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5MYXN0SW5Hcm91
cFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBsYXN0SW5Hcm91cChs
YXN0KQogICAgIHsKQEAgLTE1MCwxOSArMTMwLDE5IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkxh
c3RJbkdyb3VwU3R5bGVDbGFzc05hbWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b25TZWN0aW9uLkxhc3RJbkdyb3VwU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGZvY3VzZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXNU
ZXh0RWRpdG9yLmZvY3VzZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb2N1czogZnVuY3Rpb24o
KQorICAgIGZvY3VzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9y
LmZvY3VzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAg
cmVmcmVzaCgpCiAgICAgewogICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKICAgICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwpA
QCAtMjY0LDE2ICsyNDQsMTYgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0
aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX29yaWdpbkVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJIVE1M
IEF0dHJpYnV0ZXMiKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICB9LAor
ICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgp
CiAgICAgewogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci51cGRhdGVMYXlvdXQo
KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jb21taXRTZWxlY3Rv
cjogZnVuY3Rpb24obXV0YXRpb25zKQorICAgIF9jb21taXRTZWxlY3RvcihtdXRhdGlvbnMpCiAg
ICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zdHlsZS5vd25lclJ1bGUpOwogICAg
ICAgICBpZiAoIXRoaXMuX3N0eWxlLm93bmVyUnVsZSkKQEAgLTI5MCw0ICsyNzAsMjAgQEAgV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICB9
CiB9OwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24ucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGU7CitX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uU3R5bGVDbGFzc05hbWUgPSAi
c3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24uTG9ja2VkU3R5bGVDbGFzc05hbWUgPSAibG9ja2VkIjsKK1dlYkluc3BlY3Rv
ci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5TZWxlY3RvckxvY2tlZFN0eWxlQ2xhc3NOYW1l
ID0gInNlbGVjdG9yLWxvY2tlZCI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNl
Y3Rpb24uTGFzdEluR3JvdXBTdHlsZUNsYXNzTmFtZSA9ICJsYXN0LWluLWdyb3VwIjsKK1dlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5IZWFkZXJFbGVtZW50U3R5bGVDbGFz
c05hbWUgPSAiaGVhZGVyIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlv
bi5JY29uRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImljb24iOworV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb25TZWN0aW9uLlNlbGVjdG9yRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInNl
bGVjdG9yIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5PcmlnaW5F
bGVtZW50U3R5bGVDbGFzc05hbWUgPSAib3JpZ2luIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbi5Qcm9wZXJ0aWVzRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInByb3Bl
cnRpZXMiOworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLk1hdGNoZWRT
ZWxlY3RvckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJtYXRjaGVkIjsKKworV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkF1dGhvclN0eWxlUnVsZUljb25TdHlsZUNsYXNz
TmFtZSA9ICJhdXRob3Itc3R5bGUtcnVsZS1pY29uIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbi5Vc2VyU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lID0gInVzZXIt
c3R5bGUtcnVsZS1pY29uIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlv
bi5Vc2VyQWdlbnRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWUgPSAidXNlci1hZ2VudC1zdHls
ZS1ydWxlLWljb24iOworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLklu
c3BlY3RvclN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZSA9ICJpbnNwZWN0b3Itc3R5bGUtcnVs
ZS1pY29uIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Jbmhlcml0
ZWRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWUgPSAiaW5oZXJpdGVkLXN0eWxlLXJ1bGUtaWNv
biI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSW5oZXJpdGVkRWxl
bWVudFN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZSA9ICJpbmhlcml0ZWQtZWxlbWVudC1zdHls
ZS1ydWxlLWljb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVk
aXRvci5qcwppbmRleCBhNGIyM2RmLi4wM2U0NzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRv
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NT
dHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5qcwpAQCAtMjk2LDcgKzI5Niw2IEBAIFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvciA9IGNsYXNzIENTU1N0eWxlRGVjbGFy
YXRpb25UZXh0RWRpdG9yCiAgICAgICAgIC8vIFVzZSBhIHNob3J0IGRlbGF5IGZvciB1c2VyIGlu
cHV0IHRvIGNvYWxlc2NlIG1vcmUgY2hhbmdlcyBiZWZvcmUgY29tbWl0dGluZy4gT3RoZXIgYWN0
aW9ucyBsaWtlCiAgICAgICAgIC8vIHVuZG8sIHJlZG8gYW5kIHBhc3RlIGFyZSBhdG9taWMgYW5k
IHdvcmsgYmV0dGVyIHdpdGggYSB6ZXJvIGRlbGF5LiBDb2RlTWlycm9yIGlkZW50aWZpZXMgY2hh
bmdlcyB0aGF0CiAgICAgICAgIC8vIGdldCBjb2FsZXNjZWQgaW4gdGhlIHVuZG8gc3RhY2sgd2l0
aCBhICIrIiBwcmVmaXggb24gdGhlIG9yaWdpbi4gVXNlIHRoYXQgdG8gc2V0IHRoZSBkZWxheSBm
b3Igb3VyIGNvYWxlc2NpbmcuCi0gICAgICAgIC8vIEZJWE1FOiB1c2UgY29uc3Qgb3IgbGV0CiAg
ICAgICAgIHZhciBkZWxheSA9IGNoYW5nZS5vcmlnaW4gJiYgY2hhbmdlLm9yaWdpbi5jaGFyQXQo
MCkgPT09ICIrIiA/IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvci5D
b21taXRDb2FsZXNjZURlbGF5IDogMDsKIAogICAgICAgICAvLyBSZXNldCB0aGUgdGltZW91dCBz
byByYXBpZCBjaGFuZ2VzIGNvYWxlc2NlIGFmdGVyIGEgc2hvcnQgZGVsYXkuCkBAIC0zMzcsNyAr
MzM2LDYgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRpdG9yID0gY2xh
c3MgQ1NTU3R5bGVEZWNsYXJhdGlvblRleHRFZGl0b3IKIAogICAgICAgICAgICAgaWYgKCF0aGlz
Ll9jb2RlTWlycm9yLmdldE9wdGlvbigicmVhZE9ubHkiKSkgewogICAgICAgICAgICAgICAgIC8v
IE1hdGNoZXMgYSBjb21tZW50IGxpa2U6IC8qIC13ZWJraXQtZm9vOiBiYXI7ICovCi0gICAgICAg
ICAgICAgICAgLy8gRklYTUU6IHVzZSBjb25zdCBvciBsZXQKICAgICAgICAgICAgICAgICB2YXIg
Y29tbWVudGVkUHJvcGVydHlSZWdleCA9IC9cL1wqXHMqWy1cd10rXHMqOlxzKlteO10rOz9ccypc
KlwvL2c7CiAKICAgICAgICAgICAgICAgICAvLyBMb29rIGZvciBjb21tZW50cyB0aGF0IGxvb2sg
bGlrZSBwcm9wZXJ0aWVzIGFuZCBhZGQgY2hlY2tib3hlcyBpbiBmcm9udCBvZiB0aGVtLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ1NTU3R5
bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDBlYThmOWMu
LjEyODgwMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGZ1bmN0aW9u
KCkKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBDU1NT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1Np
ZGViYXJQYW5lbAogewotICAgIFdlYkluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJhclBhbmVsLmNh
bGwodGhpcywgImNzcy1zdHlsZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGVzIiksIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUJydXNo
QW5kUnVsZXIuc3ZnIiwgIjQiKTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBz
dXBlcigiY3NzLXN0eWxlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZXMiKSwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTdHlsZSIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQnJ1c2hBbmRS
dWxlci5zdmciLCAiNCIpOwogCiAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwgPSBudWxsOwog
CkBAIC04MiwyNCArODQsMTYgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQ
YW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgICAgICAvLyBUaGlzIHdpbGwgY2F1c2UgdGhlIHNlbGVj
dGVkIHBhbmVsIHRvIGJlIHNldCBpbiBfbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZC4KICAgICAgICAg
dGhpcy5fbmF2aWdhdGlvbkJhci5zZWxlY3RlZE5hdmlnYXRpb25JdGVtID0gdGhpcy5fbGFzdFNl
bGVjdGVkU2VjdGlvblNldHRpbmcudmFsdWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVE
ZXRhaWxzU2lkZWJhclBhbmVsLlBzZXVkb0NsYXNzZXNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAi
cHNldWRvLWNsYXNzZXMiOwotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5l
bC5Qc2V1ZG9DbGFzc2VzR3JvdXBFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiZ3JvdXAiOwotV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZvcmNlZFBzZXVkb0NsYXNz
ZXNTY3JvbGxPZmZzZXQgPSAzODsgLy8gRGVmYXVsdCBoZWlnaHQgb2YgdGhlIGZvcmNlZCBwc2V1
ZG8gY2xhc3NlcyBjb250YWluZXIuIFVwZGF0ZWQgaW4gd2lkdGhEaWRDaGFuZ2UuCi0KLVdlYklu
c3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAg
IF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBl
LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgc3VwcG9ydHNET01Ob2RlOiBmdW5jdGlv
bihub2RlVG9JbnNwZWN0KQorICAgIHN1cHBvcnRzRE9NTm9kZShub2RlVG9JbnNwZWN0KQogICAg
IHsKICAgICAgICAgcmV0dXJuIG5vZGVUb0luc3BlY3Qubm9kZVR5cGUoKSA9PT0gTm9kZS5FTEVN
RU5UX05PREU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAg
cmVmcmVzaCgpCiAgICAgewogICAgICAgICB2YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKICAg
ICAgICAgaWYgKCFkb21Ob2RlKQpAQCAtMTEzLDkgKzEwNyw5IEBAIFdlYkluc3BlY3Rvci5DU1NT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgdGhpcy5fdXBkYXRlUHNldWRvQ2xhc3NDaGVja2JveGVzKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICB2aXNpYmlsaXR5RGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgdmlzaWJpbGl0eURpZENo
YW5nZSgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS52aXNpYmlsaXR5RGlkQ2hhbmdlLmNhbGwodGhpcyk7CiAKQEAgLTEzMywyNyArMTI3LDI3IEBA
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkUGFuZWwuc2hvd24oKTsKICAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRQYW5lbC5tYXJrQXNOZWVkc1JlZnJlc2godGhpcy5kb21Ob2RlKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHdpZHRoRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgd2lkdGhEaWRDaGFuZ2Uo
KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlTm9Gb3JjZWRQc2V1ZG9DbGFzc2VzU2Nyb2xs
T2Zmc2V0KCk7CiAKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkUGFuZWwpCiAgICAgICAgICAg
ICB0aGlzLl9zZWxlY3RlZFBhbmVsLndpZHRoRGlkQ2hhbmdlKCk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGFkZEV2ZW50TGlzdGVuZXJzOiBmdW5jdGlvbigpCisg
ICAgYWRkRXZlbnRMaXN0ZW5lcnMoKQogICAgIHsKICAgICAgICAgdGhpcy5kb21Ob2RlLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTU5vZGUuRXZlbnQuRW5hYmxlZFBzZXVkb0NsYXNz
ZXNDaGFuZ2VkLCB0aGlzLl91cGRhdGVQc2V1ZG9DbGFzc0NoZWNrYm94ZXMsIHRoaXMpOwotICAg
IH0sCisgICAgfQogCi0gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKCkKKyAgICBy
ZW1vdmVFdmVudExpc3RlbmVycygpCiAgICAgewogICAgICAgICB0aGlzLmRvbU5vZGUucmVtb3Zl
RXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByaXZhdGUKIApAQCAtMTYyLDE1ICsxNTYsMTUgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0
YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9y
LmNzc1N0eWxlTWFuYWdlci5jYW5Gb3JjZVBzZXVkb0NsYXNzZXMoKSkKICAgICAgICAgICAgIHJl
dHVybiAwOwogICAgICAgICByZXR1cm4gdGhpcy5kb21Ob2RlICYmIHRoaXMuZG9tTm9kZS5lbmFi
bGVkUHNldWRvQ2xhc3Nlcy5sZW5ndGggPyAwIDogV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWls
c1NpZGViYXJQYW5lbC5Ob0ZvcmNlZFBzZXVkb0NsYXNzZXNTY3JvbGxPZmZzZXQ7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdXBkYXRlTm9Gb3JjZWRQc2V1ZG9DbGFzc2VzU2Nyb2xsT2Zmc2V0OiBm
dW5jdGlvbigpCisgICAgX3VwZGF0ZU5vRm9yY2VkUHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldCgp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fZm9yY2VkUHNldWRvQ2xhc3NDb250YWluZXIpCiAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLk5vRm9y
Y2VkUHNldWRvQ2xhc3Nlc1Njcm9sbE9mZnNldCA9IHRoaXMuX2ZvcmNlZFBzZXVkb0NsYXNzQ29u
dGFpbmVyLm9mZnNldEhlaWdodDsKLSAgICB9LAorICAgIH0KIAotICAgIF9uYXZpZ2F0aW9uSXRl
bVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbmF2aWdhdGlvbkl0ZW1TZWxlY3RlZChl
dmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldC5zZWxlY3Rl
ZE5hdmlnYXRpb25JdGVtKTsKICAgICAgICAgaWYgKCFldmVudC50YXJnZXQuc2VsZWN0ZWROYXZp
Z2F0aW9uSXRlbSkKQEAgLTIwOCwxNyArMjAyLDE3IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
dGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhp
cy5fbGFzdFNlbGVjdGVkU2VjdGlvblNldHRpbmcudmFsdWUgPSBzZWxlY3RlZE5hdmlnYXRpb25J
dGVtLmlkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9yY2VkUHNldWRvQ2xhc3ND
aGVja2JveENoYW5nZWQ6IGZ1bmN0aW9uKHBzZXVkb0NsYXNzLCBldmVudCkKKyAgICBfZm9yY2Vk
UHNldWRvQ2xhc3NDaGVja2JveENoYW5nZWQocHNldWRvQ2xhc3MsIGV2ZW50KQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLmRvbU5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
dGhpcy5kb21Ob2RlLnNldFBzZXVkb0NsYXNzRW5hYmxlZChwc2V1ZG9DbGFzcywgZXZlbnQudGFy
Z2V0LmNoZWNrZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVBzZXVkb0NsYXNzQ2hl
Y2tib3hlczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVQc2V1ZG9DbGFzc0NoZWNrYm94ZXMoKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmRvbU5vZGUpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0yMzEsMyArMjI1LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuQ1NT
U3R5bGVEZXRhaWxzU2lkZWJhclBhbmVsLlBzZXVkb0NsYXNzZXNFbGVtZW50U3R5bGVDbGFzc05h
bWUgPSAicHNldWRvLWNsYXNzZXMiOworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGVi
YXJQYW5lbC5Qc2V1ZG9DbGFzc2VzR3JvdXBFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiZ3JvdXAi
OworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGV0YWlsc1NpZGViYXJQYW5lbC5Ob0ZvcmNlZFBzZXVk
b0NsYXNzZXNTY3JvbGxPZmZzZXQgPSAzODsgLy8gRGVmYXVsdCBoZWlnaHQgb2YgdGhlIGZvcmNl
ZCBwc2V1ZG8gY2xhc3NlcyBjb250YWluZXIuIFVwZGF0ZWQgaW4gd2lkdGhEaWRDaGFuZ2UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYWxs
RnJhbWVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzCmluZGV4IDFmYjAzMjkuLmM0OWEyMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbGxG
cmFtZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw3ICsyMyw5IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNhbGxGcmFt
ZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oY2FsbEZyYW1lKQorV2ViSW5zcGVjdG9yLkNhbGxGcmFt
ZVRyZWVFbGVtZW50ID0gY2xhc3MgQ2FsbEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3IoY2FsbEZyYW1lKQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY2FsbEZyYW1lIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkNhbGxGcmFtZSk7CiAKQEAgLTM4LDcgKzQwLDcgQEAgV2ViSW5zcGVjdG9yLkNhbGxG
cmFtZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oY2FsbEZyYW1lKQogCiAgICAgICAgIHZhciB0aXRs
ZSA9IGNhbGxGcmFtZS5mdW5jdGlvbk5hbWUgfHwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoYW5v
bnltb3VzIGZ1bmN0aW9uKSIpOwogCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5jYWxsKHRoaXMsIGNsYXNzTmFtZSwgdGl0bGUsIG51bGwsIGNhbGxGcmFtZSwgZmFsc2UpOwor
ICAgICAgICBzdXBlcihjbGFzc05hbWUsIHRpdGxlLCBudWxsLCBjYWxsRnJhbWUsIGZhbHNlKTsK
IAogICAgICAgICBpZiAoIWNhbGxGcmFtZS5uYXRpdmVDb2RlICYmIGNhbGxGcmFtZS5zb3VyY2VD
b2RlTG9jYXRpb24pIHsKICAgICAgICAgICAgIHZhciBkaXNwbGF5U2NyaXB0VVJMID0gY2FsbEZy
YW1lLnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZS51cmw7CkBAIC01MywyNSAr
NTUsMTggQEAgV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oY2Fs
bEZyYW1lKQogICAgICAgICB0aGlzLl9jYWxsRnJhbWUgPSBjYWxsRnJhbWU7CiAKICAgICAgICAg
dGhpcy5zbWFsbCA9IHRydWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1l
bnQuRnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWUgPSAiZnVuY3Rpb24taWNvbiI7Ci1XZWJJbnNw
ZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFt
ZSA9ICJldmVudC1saXN0ZW5lci1pY29uIjsKLVdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxl
bWVudC5OYXRpdmVJY29uU3R5bGVDbGFzc05hbWUgPSAibmF0aXZlLWljb24iOwotCi1XZWJJbnNw
ZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQsCisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgY2FsbEZyYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
YWxsRnJhbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIG9uYXR0
YWNoOiBmdW5jdGlvbigpCisgICAgb25hdHRhY2goKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKIApA
QCAtODQsNCArNzksNiBAQCBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90
b3R5cGU7CitXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRnVuY3Rpb25JY29uU3R5
bGVDbGFzc05hbWUgPSAiZnVuY3Rpb24taWNvbiI7CitXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJl
ZUVsZW1lbnQuRXZlbnRMaXN0ZW5lckljb25TdHlsZUNsYXNzTmFtZSA9ICJldmVudC1saXN0ZW5l
ci1pY29uIjsKK1dlYkluc3BlY3Rvci5DYWxsRnJhbWVUcmVlRWxlbWVudC5OYXRpdmVJY29uU3R5
bGVDbGFzc05hbWUgPSAibmF0aXZlLWljb24iOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2x1c3RlckNvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2x1c3RlckNvbnRlbnRWaWV3Lmpz
CmluZGV4IGFjOTgzNmEuLmMwNGNkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NsdXN0ZXJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DbHVzdGVyQ29udGVudFZpZXcuanMK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVk
T2JqZWN0KQorV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50VmlldyA9IGNsYXNzIENsdXN0ZXJD
b250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50VmlldwogewotICAgIFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICBj
b25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlcHJl
c2VudGVkT2JqZWN0KTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKIApAQCAtMzYsMTIg
KzM4LDcgQEAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJl
c2VudGVkT2JqZWN0KQogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBv
bmVudHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERp
ZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVtZW50YWxSZXBy
ZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVw
cmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50
Lk51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdOdW1iZXJP
ZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLkNsdXN0
ZXJDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJjbHVzdGVyIjsKLQotV2ViSW5zcGVjdG9y
LkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKQEAg
LTQ5LDEwMyArNDYsMTAzIEBAIFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2Nv
bnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgcmV0dXJuIGN1
cnJlbnRDb250ZW50VmlldyA/IGN1cnJlbnRDb250ZW50Vmlldy5uYXZpZ2F0aW9uSXRlbXMgOiBb
XTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb250ZW50Vmlld0NvbnRhaW5lcigpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXI7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc3VwcG9ydHNTcGxpdENvbnRlbnRCcm93c2VyKCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcpCiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRl
bnRWaWV3LnN1cHBvcnRzU3BsaXRDb250ZW50QnJvd3NlcjsKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRh
dGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMu
X2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKGN1
cnJlbnRDb250ZW50VmlldykKICAgICAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy51cGRhdGVM
YXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hv
d24oKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd24oKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAg
ICAgewogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5oaWRkZW4oKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewog
ICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3cygp
OwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5yZW1vdmVFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0Rp
ZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdl
LCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnJlbW92ZUV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2Vu
dGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNl
bnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQu
TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld051bWJlck9m
U2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5H
b0JhY2s6IGZ1bmN0aW9uKCkKKyAgICBjYW5Hb0JhY2soKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmNhbkdvQmFjaygpOwotICAgIH0sCisgICAgfQog
Ci0gICAgY2FuR29Gb3J3YXJkOiBmdW5jdGlvbigpCisgICAgY2FuR29Gb3J3YXJkKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jYW5Hb0ZvcndhcmQo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGdvQmFjazogZnVuY3Rpb24oKQorICAgIGdvQmFjaygp
CiAgICAgewogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5nb0JhY2soKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGdvRm9yd2FyZCgp
CiAgICAgewogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5nb0ZvcndhcmQoKTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cygpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50
VmlldykKICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRl
bnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50Vmlldy5zZWxlY3Rpb25QYXRoQ29tcG9uZW50
czsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVj
dHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJy
ZW50Q29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgIHJldHVybiB0
aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcuc3VwcGxlbWVudGFs
UmVwcmVzZW50ZWRPYmplY3RzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhhbmRsZUNvcHlF
dmVudCgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5fY29u
dGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICByZXR1cm4gY3Vy
cmVudENvbnRlbnRWaWV3ICYmIHR5cGVvZiBjdXJyZW50Q29udGVudFZpZXcuaGFuZGxlQ29weUV2
ZW50ID09PSAiZnVuY3Rpb24iID8gY3VycmVudENvbnRlbnRWaWV3LmhhbmRsZUNvcHlFdmVudC5i
aW5kKGN1cnJlbnRDb250ZW50VmlldykgOiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHN1cHBvcnRzU2F2ZSgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0g
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBy
ZXR1cm4gY3VycmVudENvbnRlbnRWaWV3ICYmIGN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1Nh
dmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2F2ZURhdGEoKQogICAgIHsKICAgICAgICAg
dmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJl
bnRDb250ZW50VmlldzsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb250ZW50VmlldyAmJiBjdXJy
ZW50Q29udGVudFZpZXcuc2F2ZURhdGEgfHwgbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzdXBwb3J0c1NlYXJjaCgpCiAgICAgewogICAgICAgICAvLyBBbHdheXMgcmV0dXJuIHRydWUg
c28gd2UgY2FuIGludGVyY2VwdCB0aGUgc2VhcmNoIHF1ZXJ5IHRvIHJlc2VuZCBpdCB3aGVuIHN3
aXRjaGluZyBjb250ZW50IHZpZXdzLgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBudW1iZXJPZlNlYXJjaFJlc3VsdHMoKQogICAgIHsKQEAgLTE1Myw3ICsx
NTAsNyBAQCBXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBw
b3J0c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICByZXR1cm4gY3Vy
cmVudENvbnRlbnRWaWV3Lm51bWJlck9mU2VhcmNoUmVzdWx0czsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBoYXNQZXJmb3JtZWRTZWFyY2goKQogICAgIHsKQEAgLTE2MSw3ICsxNTgsNyBAQCBX
ZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYg
KCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJj
aCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb250
ZW50Vmlldy5oYXNQZXJmb3JtZWRTZWFyY2g7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgYXV0
b21hdGljYWxseVJldmVhbEZpcnN0U2VhcmNoUmVzdWx0KHJldmVhbCkKICAgICB7CkBAIC0xNjks
OSArMTY2LDkgQEAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcu
c3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGN1cnJlbnRDb250
ZW50Vmlldy5hdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQgPSByZXZlYWw7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihxdWVyeSkKKyAgICBw
ZXJmb3JtU2VhcmNoKHF1ZXJ5KQogICAgIHsKICAgICAgICAgdGhpcy5fc2VhcmNoUXVlcnkgPSBx
dWVyeTsKIApAQCAtMTc5LDkgKzE3Niw5IEBAIFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3Vy
cmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNoKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICBjdXJyZW50Q29udGVudFZpZXcucGVyZm9ybVNlYXJjaChxdWVyeSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBzZWFyY2hDbGVhcmVkOiBmdW5jdGlvbigpCisgICAgc2VhcmNoQ2xlYXJlZCgp
CiAgICAgewogICAgICAgICB0aGlzLl9zZWFyY2hRdWVyeSA9IG51bGw7CiAKQEAgLTE4OSwzNSAr
MTg2LDM1IEBAIFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1
cHBvcnRzU2VhcmNoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjdXJyZW50Q29udGVu
dFZpZXcuc2VhcmNoQ2xlYXJlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VhcmNoUXVlcnlX
aXRoU2VsZWN0aW9uOiBmdW5jdGlvbigpCisgICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCkK
ICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmll
d0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmICghY3VycmVudENvbnRl
bnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAg
ICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb250ZW50Vmlldy5zZWFyY2hR
dWVyeVdpdGhTZWxlY3Rpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbFByZXZpb3Vz
U2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICByZXZlYWxQcmV2aW91c1Nl
YXJjaFJlc3VsdChjaGFuZ2VGb2N1cykKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVu
dFZpZXcgPSB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAg
ICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3Vw
cG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGN1cnJlbnRDb250ZW50
Vmlldy5yZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykK
KyAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAgICAg
dmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJl
bnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJl
bnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgY3VycmVudENvbnRlbnRWaWV3LnJldmVhbE5leHRTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMp
OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2N1cnJlbnRDb250ZW50
Vmlld0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2N1cnJlbnRDb250ZW50Vmlld0Rp
ZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0
aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlm
IChjdXJyZW50Q29udGVudFZpZXcgJiYgY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNo
KSB7CkBAIC0yMzAsMjMgKzIyNywyMyBAQCBXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hh
bmdlKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LkV2ZW50Lk51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSk7CiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dy5FdmVudC5OYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENoYW5nZTogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENoYW5nZShldmVu
dCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuX2NvbnRlbnRWaWV3
Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5n
ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVwcmVzZW50
ZWRPYmplY3RzRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdl
dCAhPT0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3KQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmpl
Y3RzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50Vmlld051bWJlck9m
U2VhcmNoUmVzdWx0c0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnRWaWV3
TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYg
KGV2ZW50LnRhcmdldCAhPT0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRl
bnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjU0LDQgKzI1MSw0IEBAIFdlYkluc3Bl
Y3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYklu
c3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRW
aWV3LlN0eWxlQ2xhc3NOYW1lID0gImNsdXN0ZXIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvZGVNaXJyb3JBZGRpdGlv
bnMuanMKaW5kZXggMTkwNDViNi4uYjJiYjE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29kZU1pcnJvckFkZGl0aW9ucy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2RlTWlycm9yQWRkaXRp
b25zLmpzCkBAIC0xODIsNyArMTgyLDcgQEAKIAogICAgIGZ1bmN0aW9uIGV4dGVuZGVkQ1NTVG9r
ZW4oc3RyZWFtLCBzdGF0ZSkKICAgICB7Ci0gICAgICAgIGNvbnN0IGhleENvbG9yUmVnZXggPSAv
Iyg/OlswLTlhLWZBLUZdezZ9fFswLTlhLWZBLUZdezN9KVxiL2c7CisgICAgICAgIHZhciBoZXhD
b2xvclJlZ2V4ID0gLyMoPzpbMC05YS1mQS1GXXs2fXxbMC05YS1mQS1GXXszfSlcYi9nOwogCiAg
ICAgICAgIGlmIChzdGF0ZS5fdXJsVG9rZW5pemUpIHsKICAgICAgICAgICAgIC8vIENhbGwgdGhl
IGxpbmsgdG9rZW5pemVyIGluc3RlYWQuCkBAIC01MDMsNyArNTAzLDcgQEAKICAgICAgICAgdmFy
IGVuZCA9IHJhbmdlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSA/IHJhbmdlLmVu
ZExpbmUgKyAxIDogdGhpcy5saW5lQ291bnQoKTsKIAogICAgICAgICAvLyBNYXRjaGVzIHJnYmEo
MCwgMCwgMCwgMC41KSwgcmdiKDAsIDAsIDApLCBoc2woKSwgaHNsYSgpLCAjZmZmLCAjZmZmZmZm
LCB3aGl0ZQotICAgICAgICBjb25zdCBjb2xvclJlZ2V4ID0gLygoPzpyZ2J8aHNsKWE/XChbXild
K1wpfCNbMC05YS1mQS1GXXs2fXwjWzAtOWEtZkEtRl17M318XGJcdytcYig/IVstLl0pKS9nOwor
ICAgICAgICB2YXIgY29sb3JSZWdleCA9IC8oKD86cmdifGhzbClhP1woW14pXStcKXwjWzAtOWEt
ZkEtRl17Nn18I1swLTlhLWZBLUZdezN9fFxiXHcrXGIoPyFbLS5dKSkvZzsKIAogICAgICAgICBm
b3IgKHZhciBsaW5lTnVtYmVyID0gc3RhcnQ7IGxpbmVOdW1iZXIgPCBlbmQ7ICsrbGluZU51bWJl
cikgewogICAgICAgICAgICAgdmFyIGxpbmVDb250ZW50ID0gdGhpcy5nZXRMaW5lKGxpbmVOdW1i
ZXIpOwpAQCAtNTY4LDcgKzU2OCw3IEBACiAgICAgICAgIHZhciBzdGFydCA9IHJhbmdlIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlRleHRSYW5nZSA/IHJhbmdlLnN0YXJ0TGluZSA6IDA7CiAgICAg
ICAgIHZhciBlbmQgPSByYW5nZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UZXh0UmFuZ2UgPyBy
YW5nZS5lbmRMaW5lICsgMSA6IHRoaXMubGluZUNvdW50KCk7CiAKLSAgICAgICAgY29uc3QgZ3Jh
ZGllbnRSZWdleCA9IC8ocmVwZWF0aW5nLSk/KGxpbmVhcnxyYWRpYWwpLWdyYWRpZW50XHMqXChc
cyovZzsKKyAgICAgICAgdmFyIGdyYWRpZW50UmVnZXggPSAvKHJlcGVhdGluZy0pPyhsaW5lYXJ8
cmFkaWFsKS1ncmFkaWVudFxzKlwoXHMqL2c7CiAKICAgICAgICAgZm9yICh2YXIgbGluZU51bWJl
ciA9IHN0YXJ0OyBsaW5lTnVtYmVyIDwgZW5kOyArK2xpbmVOdW1iZXIpIHsKICAgICAgICAgICAg
IHZhciBsaW5lQ29udGVudCA9IHRoaXMuZ2V0TGluZShsaW5lTnVtYmVyKTsKQEAgLTY1MywyMyAr
NjUzLDIzIEBACiAKICAgICAvLyBSZWdpc3RlciBzb21lIGV4dHJhIE1JTUUtdHlwZXMgZm9yIENv
ZGVNaXJyb3IuIFRoZXNlIGFyZSBpbiBhZGRpdGlvbiB0byB0aGUKICAgICAvLyBvbmVzIENvZGVN
aXJyb3IgYWxyZWFkeSByZWdpc3RlcnMsIGxpa2UgdGV4dC9odG1sLCB0ZXh0L2phdmFzY3JpcHQs
IGV0Yy4KLSAgICBjb25zdCBleHRyYVhNTFR5cGVzID0gWyJ0ZXh0L3htbCIsICJ0ZXh0L3hzbCJd
OworICAgIHZhciBleHRyYVhNTFR5cGVzID0gWyJ0ZXh0L3htbCIsICJ0ZXh0L3hzbCJdOwogICAg
IGV4dHJhWE1MVHlwZXMuZm9yRWFjaChmdW5jdGlvbih0eXBlKSB7CiAgICAgICAgIENvZGVNaXJy
b3IuZGVmaW5lTUlNRSh0eXBlLCAieG1sIik7CiAgICAgfSk7CiAKLSAgICBjb25zdCBleHRyYUhU
TUxUeXBlcyA9IFsiYXBwbGljYXRpb24veGh0bWwreG1sIiwgImltYWdlL3N2Zyt4bWwiXTsKKyAg
ICB2YXIgZXh0cmFIVE1MVHlwZXMgPSBbImFwcGxpY2F0aW9uL3hodG1sK3htbCIsICJpbWFnZS9z
dmcreG1sIl07CiAgICAgZXh0cmFIVE1MVHlwZXMuZm9yRWFjaChmdW5jdGlvbih0eXBlKSB7CiAg
ICAgICAgIENvZGVNaXJyb3IuZGVmaW5lTUlNRSh0eXBlLCAiaHRtbG1peGVkIik7CiAgICAgfSk7
CiAKLSAgICBjb25zdCBleHRyYUphdmFTY3JpcHRUeXBlcyA9IFsidGV4dC9lY21hc2NyaXB0Iiwg
ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCAiYXBwbGljYXRpb24vZWNtYXNjcmlwdCIsICJhcHBs
aWNhdGlvbi94LWphdmFzY3JpcHQiLAorICAgIHZhciBleHRyYUphdmFTY3JpcHRUeXBlcyA9IFsi
dGV4dC9lY21hc2NyaXB0IiwgImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiLCAiYXBwbGljYXRpb24v
ZWNtYXNjcmlwdCIsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiLAogICAgICAgICAidGV4dC94
LWphdmFzY3JpcHQiLCAidGV4dC9qYXZhc2NyaXB0MS4xIiwgInRleHQvamF2YXNjcmlwdDEuMiIs
ICJ0ZXh0L2phdmFzY3JpcHQxLjMiLCAidGV4dC9qc2NyaXB0IiwgInRleHQvbGl2ZXNjcmlwdCJd
OwogICAgIGV4dHJhSmF2YVNjcmlwdFR5cGVzLmZvckVhY2goZnVuY3Rpb24odHlwZSkgewogICAg
ICAgICBDb2RlTWlycm9yLmRlZmluZU1JTUUodHlwZSwgImphdmFzY3JpcHQiKTsKICAgICB9KTsK
IAotICAgIGNvbnN0IGV4dHJhSlNPTlR5cGVzID0gWyJhcHBsaWNhdGlvbi94LWpzb24iLCAidGV4
dC94LWpzb24iXTsKKyAgICB2YXIgZXh0cmFKU09OVHlwZXMgPSBbImFwcGxpY2F0aW9uL3gtanNv
biIsICJ0ZXh0L3gtanNvbiJdOwogICAgIGV4dHJhSlNPTlR5cGVzLmZvckVhY2goZnVuY3Rpb24o
dHlwZSkgewogICAgICAgICBDb2RlTWlycm9yLmRlZmluZU1JTUUodHlwZSwge25hbWU6ICJqYXZh
c2NyaXB0IiwganNvbjogdHJ1ZX0pOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JQaWNrZXIuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xvclBpY2tlci5qcwppbmRleCAzZDEw
NzkwLi5mOTE2NTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db2xvclBpY2tlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db2xvclBpY2tlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTAgKzIzLDExIEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbG9yUGlj
a2VyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkNvbG9yUGlja2VyID0gY2xhc3MgQ29sb3JQ
aWNrZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZl
cnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVy
KCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVj
dG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5fY29sb3JXaGVl
bCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29sb3JXaGVlbCgpOwogICAgICAgICB0aGlzLl9jb2xvcldo
ZWVsLmRlbGVnYXRlID0gdGhpczsKQEAgLTUxLDIyICs1MiwxNCBAQCBXZWJJbnNwZWN0b3IuQ29s
b3JQaWNrZXIgPSBmdW5jdGlvbigpCiAgICAgICAgIHRoaXMuX29wYWNpdHlQYXR0ZXJuID0gInVy
bChJbWFnZXMvQ2hlY2tlcnMuc3ZnKSI7CiAKICAgICAgICAgdGhpcy5fY29sb3IgPSAid2hpdGUi
OwotfTsKLQotV2ViSW5zcGVjdG9yLkNvbG9yUGlja2VyLkV2ZW50ID0gewotICAgIENvbG9yQ2hh
bmdlZDogImNzcy1jb2xvci1waWNrZXItY29sb3ItY2hhbmdlZCIKLX07Ci0KLVdlYkluc3BlY3Rv
ci5Db2xvclBpY2tlci5wcm90b3R5cGUgPSB7Ci0gICAgY29udHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LkNvbG9yUGlja2VyLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBi
cmlnaHRuZXNzKGJyaWdodG5lc3MpCiAgICAgewpAQCAtNzcsNyArNzAsNyBAQCBXZWJJbnNwZWN0
b3IuQ29sb3JQaWNrZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbG9y
KCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlcnModGhpcy5fY29sb3JXaGVlbC5yYXdDb2xv
ciwgdGhpcy5fY29sb3JXaGVlbC50aW50ZWRDb2xvcik7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgb3BhY2l0eShvcGFjaXR5KQogICAgIHsKQEAgLTg2LDE3ICs3OSwxNyBAQCBXZWJJbnNwZWN0
b3IuQ29sb3JQaWNrZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX29wYWNpdHkgPSBv
cGFjaXR5OwogICAgICAgICB0aGlzLl91cGRhdGVDb2xvcigpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGNvbG9yV2hlZWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yV2hl
ZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29sb3IoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2NvbG9yOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNvbG9yKGNvbG9yKQog
ICAgIHsKQEAgLTExMSwyNSArMTA0LDI1IEBAIFdlYkluc3BlY3Rvci5Db2xvclBpY2tlci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNsaWRlcnModGhpcy5fY29sb3JXaGVlbC5y
YXdDb2xvciwgY29sb3IpOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9kb250VXBkYXRlQ29sb3I7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb2xvcldoZWVsQ29sb3JEaWRDaGFuZ2U6IGZ1bmN0aW9u
KGNvbG9yV2hlZWwpCisgICAgY29sb3JXaGVlbENvbG9yRGlkQ2hhbmdlKGNvbG9yV2hlZWwpCiAg
ICAgewogICAgICAgICB0aGlzLl91cGRhdGVDb2xvcigpOwogICAgICAgICB0aGlzLl91cGRhdGVT
bGlkZXJzKHRoaXMuX2NvbG9yV2hlZWwucmF3Q29sb3IsIHRoaXMuX2NvbG9yV2hlZWwudGludGVk
Q29sb3IpOwotICAgIH0sCisgICAgfQogCi0gICAgc2xpZGVyVmFsdWVEaWRDaGFuZ2U6IGZ1bmN0
aW9uKHNsaWRlciwgdmFsdWUpCisgICAgc2xpZGVyVmFsdWVEaWRDaGFuZ2Uoc2xpZGVyLCB2YWx1
ZSkKICAgICB7CiAgICAgICAgIGlmIChzbGlkZXIgPT09IHRoaXMuX29wYWNpdHlTbGlkZXIpCiAg
ICAgICAgICAgICB0aGlzLm9wYWNpdHkgPSB2YWx1ZTsKICAgICAgICAgZWxzZSBpZiAoc2xpZGVy
ID09PSB0aGlzLl9icmlnaHRuZXNzU2xpZGVyKQogICAgICAgICAgICAgdGhpcy5icmlnaHRuZXNz
ID0gdmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRl
Q29sb3I6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlQ29sb3IoKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2RvbnRVcGRhdGVDb2xvcikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0NCw5ICsx
MzcsOSBAQCBXZWJJbnNwZWN0b3IuQ29sb3JQaWNrZXIucHJvdG90eXBlID0gewogCiAgICAgICAg
IHRoaXMuX2NvbG9yID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcih0aGlzLl9jb2xvckZvcm1hdCwg
Y29tcG9uZW50cyk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5Db2xvclBpY2tlci5FdmVudC5Db2xvckNoYW5nZWQsIHtjb2xvcjogdGhpcy5fY29s
b3J9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVTbGlkZXJzOiBmdW5jdGlvbihyYXdD
b2xvciwgdGludGVkQ29sb3IpCisgICAgX3VwZGF0ZVNsaWRlcnMocmF3Q29sb3IsIHRpbnRlZENv
bG9yKQogICAgIHsKICAgICAgICAgdmFyIHJnYiA9IHRoaXMuX2NvbG9yV2hlZWwudGludGVkQ29s
b3IucmdiOwogICAgICAgICB2YXIgb3BhcXVlID0gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJ
bnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQkEsIHJnYi5jb25jYXQoMSkpLnRvU3RyaW5nKCk7CkBA
IC0xNTYsMyArMTQ5LDcgQEAgV2ViSW5zcGVjdG9yLkNvbG9yUGlja2VyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fYnJpZ2h0bmVzc1NsaWRlci5lbGVtZW50LnN0eWxlLmJhY2tncm91bmRJ
bWFnZSA9ICJsaW5lYXItZ3JhZGllbnQoOTBkZWcsIGJsYWNrLCAiICsgcmF3Q29sb3IgKyAiKSI7
CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkNvbG9yUGlja2VyLkV2ZW50ID0geworICAgIENv
bG9yQ2hhbmdlZDogImNzcy1jb2xvci1waWNrZXItY29sb3ItY2hhbmdlZCIKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xvcldoZWVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sb3JXaGVl
bC5qcwppbmRleCAwYTU3YTI5Li45MGY5MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xvcldoZWVsLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbG9yV2hlZWwuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwICsyMywx
MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5Db2xvcldoZWVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwgPSBj
bGFzcyBDb2xvcldoZWVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMu
X3Jhd0NhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgICAgICB0
aGlzLl90aW50ZWRDYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTsKQEAg
LTQyLDExICs0Myw3IEBAIFdlYkluc3BlY3Rvci5Db2xvcldoZWVsID0gZnVuY3Rpb24oKQogICAg
ICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2Nyb3NzaGFpcik7CiAKICAgICAg
ICAgdGhpcy5fZmluYWxDYW52YXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcyk7
Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29sb3JXaGVlbC5wcm90b3R5cGUgPSB7Ci0gICAgY29udHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNjUsMjMg
KzYyLDIzIEBAIFdlYkluc3BlY3Rvci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB0aGlzLl9kcmF3UmF3Q2FudmFzKCk7CiAgICAgICAgIHRoaXMuX2RyYXcoKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9l
bGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGJyaWdodG5lc3MoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2JyaWdodG5lc3M7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
YnJpZ2h0bmVzcyhicmlnaHRuZXNzKQogICAgIHsKICAgICAgICAgdGhpcy5fYnJpZ2h0bmVzcyA9
IGJyaWdodG5lc3M7CiAgICAgICAgIHRoaXMuX2RyYXcoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCB0aW50ZWRDb2xvcigpCiAgICAgewpAQCAtODksMTQgKzg2LDE0IEBAIFdlYkluc3BlY3Rv
ci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb2xv
ckF0UG9pbnRXaXRoQnJpZ2h0bmVzcyh0aGlzLl9jcm9zc2hhaXJQb3NpdGlvbi54ICogd2luZG93
LmRldmljZVBpeGVsUmF0aW8sIHRoaXMuX2Nyb3NzaGFpclBvc2l0aW9uLnkgKiB3aW5kb3cuZGV2
aWNlUGl4ZWxSYXRpbywgdGhpcy5fYnJpZ2h0bmVzcyk7CiAKICAgICAgICAgcmV0dXJuIG5ldyBX
ZWJJbnNwZWN0b3IuQ29sb3IoV2ViSW5zcGVjdG9yLkNvbG9yLkZvcm1hdC5SR0JBLCBbMCwgMCwg
MCwgMF0pOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHRpbnRlZENvbG9yKHRpbnRlZENvbG9y
KQogICAgIHsKICAgICAgICAgdmFyIGRhdGEgPSB0aGlzLl90aW50ZWRDb2xvclRvUG9pbnRBbmRC
cmlnaHRuZXNzKHRpbnRlZENvbG9yKTsKICAgICAgICAgdGhpcy5fc2V0Q3Jvc3NoYWlyUG9zaXRp
b24oZGF0YS5wb2ludCk7CiAgICAgICAgIHRoaXMuYnJpZ2h0bmVzcyA9IGRhdGEuYnJpZ2h0bmVz
czsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByYXdDb2xvcigpCiAgICAgewpAQCAtMTA0LDEx
ICsxMDEsMTEgQEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NvbG9yQXRQb2ludFdpdGhCcmlnaHRuZXNzKHRoaXMuX2Nyb3Nz
aGFpclBvc2l0aW9uLnggKiB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRpbywgdGhpcy5fY3Jvc3NoYWly
UG9zaXRpb24ueSAqIHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLCAxKTsKIAogICAgICAgICByZXR1
cm4gbmV3IFdlYkluc3BlY3Rvci5Db2xvcihXZWJJbnNwZWN0b3IuQ29sb3IuRm9ybWF0LlJHQkEs
IFswLCAwLCAwLCAwXSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAg
IGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVFdmVudChldmVudCkKICAg
ICB7CiAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewogICAgICAgICBjYXNlICJtb3VzZWRv
d24iOgpAQCAtMTIxLDMwICsxMTgsMzAgQEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5faGFuZGxlTW91c2V1cChldmVudCk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQog
Ci0gICAgX2hhbmRsZU1vdXNlZG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNl
ZG93bihldmVudCkKICAgICB7CiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZW1vdmUiLCB0aGlzLCB0cnVlKTsKICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNldXAiLCB0aGlzLCB0cnVlKTsKIAogICAgICAgICB0aGlzLl91cGRhdGVDb2xvckZvck1vdXNl
RXZlbnQoZXZlbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZU1vdXNlbW92ZTogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlbW92ZShldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZUNvbG9yRm9yTW91c2VFdmVudChldmVudCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGFuZGxlTW91c2V1cDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNldXAo
ZXZlbnQpCiAgICAgewogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vt
b3ZlIiwgdGhpcywgdHJ1ZSk7CiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJt
b3VzZXVwIiwgdGhpcywgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9pbnRJbkNpcmNs
ZUZvckV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfcG9pbnRJbkNpcmNsZUZvckV2ZW50KGV2
ZW50KQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gZGlzdGFuY2UoYSwgYikKICAgICAgICAgewpA
QCAtMTY5LDkgKzE2Niw5IEBAIFdlYkluc3BlY3Rvci5Db2xvcldoZWVsLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHBvaW50ID0gcG9pbnRPbkNpcmN1bWZlcmVuY2UoY2VudGVyLCB0aGlzLl9y
YWRpdXMsIGFuZ2xlKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcG9pbnQ7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdXBkYXRlQ29sb3JGb3JNb3VzZUV2ZW50OiBmdW5jdGlvbihldmVudCkK
KyAgICBfdXBkYXRlQ29sb3JGb3JNb3VzZUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFy
IHBvaW50ID0gdGhpcy5fcG9pbnRJbkNpcmNsZUZvckV2ZW50KGV2ZW50KTsKIApAQCAtMTc5LDE1
ICsxNzYsMTUgQEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGlmICh0aGlzLmRlbGVnYXRlICYmIHR5cGVvZiB0aGlzLmRlbGVnYXRlLmNvbG9yV2hlZWxD
b2xvckRpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUu
Y29sb3JXaGVlbENvbG9yRGlkQ2hhbmdlKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nl
dENyb3NzaGFpclBvc2l0aW9uOiBmdW5jdGlvbihwb2ludCkKKyAgICBfc2V0Q3Jvc3NoYWlyUG9z
aXRpb24ocG9pbnQpCiAgICAgewogICAgICAgICB0aGlzLl9jcm9zc2hhaXJQb3NpdGlvbiA9IHBv
aW50OwogICAgICAgICB0aGlzLl9jcm9zc2hhaXIuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gInRy
YW5zbGF0ZSgiICsgTWF0aC5yb3VuZChwb2ludC54KSArICJweCwgIiArIE1hdGgucm91bmQocG9p
bnQueSkgKyAicHgpIjsKLSAgICB9LAorICAgIH0KIAotICAgIF90aW50ZWRDb2xvclRvUG9pbnRB
bmRCcmlnaHRuZXNzOiBmdW5jdGlvbihjb2xvcikKKyAgICBfdGludGVkQ29sb3JUb1BvaW50QW5k
QnJpZ2h0bmVzcyhjb2xvcikKICAgICB7CiAgICAgICAgIHZhciByZ2IgPSBjb2xvci5yZ2I7CiAg
ICAgICAgIHZhciBoc3YgPSBXZWJJbnNwZWN0b3IuQ29sb3IucmdiMmhzdihyZ2JbMF0sIHJnYlsx
XSwgcmdiWzJdKTsKQEAgLTIwMCw5ICsxOTcsOSBAQCBXZWJJbnNwZWN0b3IuQ29sb3JXaGVlbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBwb2ludDogbmV3IFdlYkluc3BlY3Rvci5Qb2ludCh4
LCB5KSwKICAgICAgICAgICAgIGJyaWdodG5lc3M6IGhzdlsyXQogICAgICAgICB9OwotICAgIH0s
CisgICAgfQogCi0gICAgX2RyYXdSYXdDYW52YXM6IGZ1bmN0aW9uKCkgeworICAgIF9kcmF3UmF3
Q2FudmFzKCkgewogICAgICAgICB2YXIgY3R4ID0gdGhpcy5fcmF3Q2FudmFzLmdldENvbnRleHQo
IjJkIik7CiAKICAgICAgICAgdmFyIGRpbWVuc2lvbiA9IHRoaXMuX2RpbWVuc2lvbiAqIHdpbmRv
dy5kZXZpY2VQaXhlbFJhdGlvOwpAQCAtMjI1LDkgKzIyMiw5IEBAIFdlYkluc3BlY3Rvci5Db2xv
cldoZWVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBj
dHgucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
Y29sb3JBdFBvaW50V2l0aEJyaWdodG5lc3M6IGZ1bmN0aW9uKHgsIHksIGJyaWdodG5lc3MpCisg
ICAgX2NvbG9yQXRQb2ludFdpdGhCcmlnaHRuZXNzKHgsIHksIGJyaWdodG5lc3MpCiAgICAgewog
ICAgICAgICB2YXIgY2VudGVyID0gdGhpcy5fZGltZW5zaW9uIC8gMiAqIHdpbmRvdy5kZXZpY2VQ
aXhlbFJhdGlvOwogICAgICAgICB2YXIgeERpcyA9IHggLSBjZW50ZXI7CkBAIC0yNDksOSArMjQ2
LDkgQEAgV2ViSW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
TWF0aC5yb3VuZChyZ2JbMl0gKiAyNTUpLAogICAgICAgICAgICAgMQogICAgICAgICBdKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9kcmF3VGludGVkQ2FudmFzOiBmdW5jdGlvbigpCisgICAgX2Ry
YXdUaW50ZWRDYW52YXMoKQogICAgIHsKICAgICAgICAgdmFyIGN0eCA9IHRoaXMuX3RpbnRlZENh
bnZhcy5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgICB2YXIgZGltZW5zaW9uID0gdGhpcy5fZGlt
ZW5zaW9uICogd2luZG93LmRldmljZVBpeGVsUmF0aW87CkBAIC0yNjQsOSArMjYxLDkgQEAgV2Vi
SW5zcGVjdG9yLkNvbG9yV2hlZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY3R4LmZpbGxS
ZWN0KDAsIDAsIGRpbWVuc2lvbiwgZGltZW5zaW9uKTsKICAgICAgICAgfQogICAgICAgICBjdHgu
cmVzdG9yZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RyYXc6IGZ1bmN0aW9uKCkKKyAgICBf
ZHJhdygpCiAgICAgewogICAgICAgICB0aGlzLl9kcmF3VGludGVkQ2FudmFzKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXBsZXRp
b25TdWdnZXN0aW9uc1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzCmluZGV4IGU1YmUzNWQuLjJkNzBi
ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTAg
KzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcgPSBmdW5jdGlvbihkZWxlZ2F0ZSkK
K1dlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gY2xhc3MgQ29tcGxldGlv
blN1Z2dlc3Rpb25zVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Cisg
ICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAg
ICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKIApAQCAtNDEsMzIgKzQyLDI0
IEBAIFdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3ID0gZnVuY3Rpb24oZGVs
ZWdhdGUpCiAgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2V1cCIsIHRoaXMuX21vdXNlVXAuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMuX2NvbnRh
aW5lckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9pdGVtQ2xpY2tlZC5i
aW5kKHRoaXMpKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250
YWluZXJFbGVtZW50KTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNW
aWV3LlN0eWxlQ2xhc3NOYW1lID0gImNvbXBsZXRpb24tc3VnZ2VzdGlvbnMiOwotV2ViSW5zcGVj
dG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuQ29udGFpbmVyRWxlbWVudFN0eWxlQ2xhc3NO
YW1lID0gImNvbXBsZXRpb24tc3VnZ2VzdGlvbnMtY29udGFpbmVyIjsKLVdlYkluc3BlY3Rvci5D
b21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3Lkl0ZW1FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiaXRl
bSI7Ci1XZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5TZWxlY3RlZEl0ZW1T
dHlsZUNsYXNzTmFtZSA9ICJzZWxlY3RlZCI7Ci0KLVdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3Vn
Z2VzdGlvbnNWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgZGVsZWdhdGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGVnYXRlOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHZpc2libGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
ICEhdGhpcy5fZWxlbWVudC5wYXJlbnROb2RlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNl
bGVjdGVkSW5kZXgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkSW5kZXg7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0ZWRJbmRleChpbmRleCkKICAgICB7CkBA
IC04Miw5ICs3NSw5IEBAIFdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICBzZWxlY3RlZEl0ZW1FbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuU2VsZWN0ZWRJdGVtU3R5bGVD
bGFzc05hbWUpOwogICAgICAgICBzZWxlY3RlZEl0ZW1FbGVtZW50LnNjcm9sbEludG9WaWV3SWZO
ZWVkZWQoZmFsc2UpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VsZWN0TmV4dDogZnVuY3Rpb24o
KQorICAgIHNlbGVjdE5leHQoKQogICAgIHsKICAgICAgICAgdmFyIGNvdW50ID0gdGhpcy5fY29u
dGFpbmVyRWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7CiAKQEAgLTk2LDkgKzg5LDkgQEAgV2ViSW5z
cGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2
YXIgc2VsZWN0ZWRJdGVtRWxlbWVudCA9IHRoaXMuX3NlbGVjdGVkSXRlbUVsZW1lbnQ7CiAgICAg
ICAgIGlmIChzZWxlY3RlZEl0ZW1FbGVtZW50ICYmIHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0
aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24gPT09
ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2Vz
dGlvbnNTZWxlY3RlZENvbXBsZXRpb24odGhpcywgc2VsZWN0ZWRJdGVtRWxlbWVudC50ZXh0Q29u
dGVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWxlY3RQcmV2aW91czogZnVuY3Rpb24oKQor
ICAgIHNlbGVjdFByZXZpb3VzKCkKICAgICB7CiAgICAgICAgIGlmIChpc05hTih0aGlzLl9zZWxl
Y3RlZEluZGV4KSB8fCB0aGlzLl9zZWxlY3RlZEluZGV4ID09PSAwKQogICAgICAgICAgICAgdGhp
cy5zZWxlY3RlZEluZGV4ID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5jaGlsZHJlbi5sZW5ndGgg
LSAxOwpAQCAtMTA4LDE0ICsxMDEsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0
aW9uc1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIgc2VsZWN0ZWRJdGVtRWxlbWVudCA9
IHRoaXMuX3NlbGVjdGVkSXRlbUVsZW1lbnQ7CiAgICAgICAgIGlmIChzZWxlY3RlZEl0ZW1FbGVt
ZW50ICYmIHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9u
U3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24gPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAg
ICB0aGlzLl9kZWxlZ2F0ZS5jb21wbGV0aW9uU3VnZ2VzdGlvbnNTZWxlY3RlZENvbXBsZXRpb24o
dGhpcywgc2VsZWN0ZWRJdGVtRWxlbWVudC50ZXh0Q29udGVudCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBpc0hhbmRsaW5nQ2xpY2tFdmVudDogZnVuY3Rpb24oKQorICAgIGlzSGFuZGxpbmdDbGlj
a0V2ZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tb3VzZUlzRG93bjsKLSAgICB9
LAorICAgIH0KIAotICAgIHNob3c6IGZ1bmN0aW9uKGFuY2hvckJvdW5kcykKKyAgICBzaG93KGFu
Y2hvckJvdW5kcykKICAgICB7CiAgICAgICAgIC8vIE1lYXN1cmUgdGhlIGNvbnRhaW5lciBzbyB3
ZSBjYW4ga25vdyB0aGUgaW50cmluc2ljIHNpemUgb2YgdGhlIGl0ZW1zLgogICAgICAgICB0aGlz
Ll9jb250YWluZXJFbGVtZW50LnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsKQEAgLTEyOCw5
ICsxMjEsOSBAQCBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGFpbmVy
RWxlbWVudCk7CiAKICAgICAgICAgLy8gTGF5IG91dCB0aGUgc3VnZ2VzdC1ib3ggcmVsYXRpdmUg
dG8gdGhlIGFuY2hvckJvdW5kcy4KLSAgICAgICAgY29uc3QgbWFyZ2luID0gMTA7Ci0gICAgICAg
IGNvbnN0IGhvcml6b250YWxQYWRkaW5nID0gMjI7Ci0gICAgICAgIGNvbnN0IGFic29sdXRlTWF4
aW11bUhlaWdodCA9IDE2MDsKKyAgICAgICAgdmFyIG1hcmdpbiA9IDEwOworICAgICAgICB2YXIg
aG9yaXpvbnRhbFBhZGRpbmcgPSAyMjsKKyAgICAgICAgdmFyIGFic29sdXRlTWF4aW11bUhlaWdo
dCA9IDE2MDsKIAogICAgICAgICB2YXIgeCA9IGFuY2hvckJvdW5kcy5vcmlnaW4ueDsKICAgICAg
ICAgdmFyIHkgPSBhbmNob3JCb3VuZHMub3JpZ2luLnkgKyBhbmNob3JCb3VuZHMuc2l6ZS5oZWln
aHQ7CkBAIC0xNjEsMTQgKzE1NCwxNCBAQCBXZWJJbnNwZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rp
b25zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuaGVpZ2h0
ID0gaGVpZ2h0ICsgInB4IjsKIAogICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRo
aXMuX2VsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZTogZnVuY3Rpb24oKQorICAg
IGhpZGUoKQogICAgIHsKICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmUoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHVwZGF0ZTogZnVuY3Rpb24oY29tcGxldGlvbnMsIHNlbGVjdGVkSW5kZXgp
CisgICAgdXBkYXRlKGNvbXBsZXRpb25zLCBzZWxlY3RlZEluZGV4KQogICAgIHsKICAgICAgICAg
dGhpcy5fY29udGFpbmVyRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0xODMsNyArMTc2
LDcgQEAgV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIGl0ZW1FbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuU2VsZWN0ZWRJdGVtU3R5bGVDbGFzc05hbWUpOwog
ICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChpdGVtRWxlbWVu
dCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApAQCAtMTk1
LDIzICsxODgsMjMgQEAgV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcucHJv
dG90eXBlID0gewogICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQu
Y2hpbGRyZW5bdGhpcy5fc2VsZWN0ZWRJbmRleF0gfHwgbnVsbDsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoZWxlbWVudCk7CiAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0sCisgICAgfQog
Ci0gICAgX21vdXNlRG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX21vdXNlRG93bihldmVudCkK
ICAgICB7CiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIHRoaXMuX21vdXNlSXNEb3duID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9tb3VzZVVwOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VVcChldmVudCkKICAgICB7
CiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHRoaXMuX21vdXNlSXNEb3duID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
aXRlbUNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9pdGVtQ2xpY2tlZChldmVudCkKICAg
ICB7CiAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDApCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0yMjYsNCArMjE5LDcgQEAgV2ViSW5zcGVjdG9yLkNvbXBsZXRpb25TdWdnZXN0aW9uc1Zp
ZXcucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db21wbGV0aW9uU3Vn
Z2VzdGlvbnNWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Db21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LlN0eWxlQ2xh
c3NOYW1lID0gImNvbXBsZXRpb24tc3VnZ2VzdGlvbnMiOworV2ViSW5zcGVjdG9yLkNvbXBsZXRp
b25TdWdnZXN0aW9uc1ZpZXcuQ29udGFpbmVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImNvbXBs
ZXRpb24tc3VnZ2VzdGlvbnMtY29udGFpbmVyIjsKK1dlYkluc3BlY3Rvci5Db21wbGV0aW9uU3Vn
Z2VzdGlvbnNWaWV3Lkl0ZW1FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiaXRlbSI7CitXZWJJbnNw
ZWN0b3IuQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5TZWxlY3RlZEl0ZW1TdHlsZUNsYXNzTmFt
ZSA9ICJzZWxlY3RlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5q
cwppbmRleCA5YTU2MjZmLi5lMTA2MTg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbXB1dGVkU3R5bGVE
ZXRhaWxzUGFuZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwg
PSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbCA9IGNs
YXNzIENvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3R5bGVE
ZXRhaWxzUGFuZWwKIHsKLSAgICBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwuY2FsbCh0
aGlzLCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFt
ZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb21wdXRlZCIpKTsKKyAgICBj
b25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcihXZWJJbnNwZWN0b3IuQ29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSwgImNvbXB1dGVkIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJDb21wdXRlZCIpKTsKIAogICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlU2hv
d0FsbFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImNvbXB1dGVkLXN0eWxlLXNo
b3ctYWxsIiwgZmFsc2UpOwogCkBAIC04NiwxOSArODgsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbXB1
dGVkU3R5bGVEZXRhaWxzUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJSZWdpb25zRmxvd1NlY3Rpb24uZWxlbWVudCk7CiAK
ICAgICAgICAgdGhpcy5fcmVzZXRGbG93RGV0YWlscygpOwotfTsKLQotV2ViSW5zcGVjdG9yLkNv
bXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAiY29tcHV0ZWQiOwotCi1X
ZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLAorICAg
IH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJlZ2lvbkZsb3coKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3JlZ2lvbkZsb3c7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcmVn
aW9uRmxvdyhyZWdpb25GbG93KQogICAgIHsKQEAgLTEwNiwxMiArMTAzLDEyIEBAIFdlYkluc3Bl
Y3Rvci5Db21wdXRlZFN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fcmVnaW9uRmxvd05hbWVMYWJlbFZhbHVlLnRleHRDb250ZW50ID0gcmVnaW9uRmxvdyA/IHJl
Z2lvbkZsb3cubmFtZSA6ICIiOwogICAgICAgICB0aGlzLl9yZWdpb25GbG93TmFtZVJvdy52YWx1
ZSA9IHJlZ2lvbkZsb3cgPyB0aGlzLl9yZWdpb25GbG93RnJhZ21lbnQgOiBudWxsOwogICAgICAg
ICB0aGlzLl91cGRhdGVGbG93TmFtZXNTZWN0aW9uVmlzaWJpbGl0eSgpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGNvbnRlbnRGbG93KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
b250ZW50RmxvdzsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBjb250ZW50Rmxvdyhjb250ZW50
RmxvdykKICAgICB7CkBAIC0xMTksMTIgKzExNiwxMiBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRT
dHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRGbG93
TmFtZUxhYmVsVmFsdWUudGV4dENvbnRlbnQgPSBjb250ZW50RmxvdyA/IGNvbnRlbnRGbG93Lm5h
bWUgOiAiIjsKICAgICAgICAgdGhpcy5fY29udGVudEZsb3dOYW1lUm93LnZhbHVlID0gY29udGVu
dEZsb3cgPyB0aGlzLl9jb250ZW50Rmxvd0ZyYWdtZW50IDogbnVsbDsKICAgICAgICAgdGhpcy5f
dXBkYXRlRmxvd05hbWVzU2VjdGlvblZpc2liaWxpdHkoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBjb250YWluZXJSZWdpb25zKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250
YWluZXJSZWdpb25zOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGNvbnRhaW5lclJlZ2lvbnMo
cmVnaW9ucykKICAgICB7CkBAIC0xNDAsNTAgKzEzNyw1MCBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0
ZWRTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9jb250
YWluZXJSZWdpb25zRGF0YUdyaWQuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5ET01UcmVl
RGF0YUdyaWROb2RlKHJlZ2lvbk5vZGUpKTsKIAogICAgICAgICB0aGlzLl9jb250YWluZXJSZWdp
b25zRmxvd1NlY3Rpb24uZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnN0eWxlID0gdGhpcy5ub2RlU3R5
bGVzLmNvbXB1dGVkU3R5bGU7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hGbG93RGV0YWlscyh0aGlz
Lm5vZGVTdHlsZXMubm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAot
ICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCiAg
ICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yLnVwZGF0ZUxheW91dCgpOwotICAgIH0s
CisgICAgfQogCi0gICAgd2lkdGhEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB3aWR0aERpZENo
YW5nZSgpCiAgICAgewogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci51cGRhdGVM
YXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jb21wdXRl
ZFN0eWxlU2hvd0FsbENoZWNrYm94VmFsdWVDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
Y29tcHV0ZWRTdHlsZVNob3dBbGxDaGVja2JveFZhbHVlQ2hhbmdlZChldmVudCkKICAgICB7CiAg
ICAgICAgIHZhciBjaGVja2VkID0gdGhpcy5fY29tcHV0ZWRTdHlsZVNob3dBbGxDaGVja2JveC5j
aGVja2VkOwogICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlU2hvd0FsbFNldHRpbmcudmFsdWUg
PSBjaGVja2VkOwogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5zaG93c0ltcGxp
Y2l0UHJvcGVydGllcyA9IGNoZWNrZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlRmxv
d05hbWVzU2VjdGlvblZpc2liaWxpdHk6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRmxvd05hbWVz
U2VjdGlvblZpc2liaWxpdHkoKQogICAgIHsKICAgICAgICAgdGhpcy5fZmxvd05hbWVzU2VjdGlv
bi5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImhpZGRlbiIsICF0aGlzLl9jb250ZW50RmxvdyAm
JiAhdGhpcy5fcmVnaW9uRmxvdyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVzZXRGbG93RGV0
YWlscyA6IGZ1bmN0aW9uKCkKKyAgICBfcmVzZXRGbG93RGV0YWlscyAoKQogICAgIHsKICAgICAg
ICAgdGhpcy5yZWdpb25GbG93ID0gbnVsbDsKICAgICAgICAgdGhpcy5jb250ZW50RmxvdyA9IG51
bGw7CiAgICAgICAgIHRoaXMuY29udGFpbmVyUmVnaW9ucyA9IG51bGw7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcmVmcmVzaEZsb3dEZXRhaWxzOiBmdW5jdGlvbihkb21Ob2RlKQorICAgIF9yZWZy
ZXNoRmxvd0RldGFpbHMoZG9tTm9kZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc2V0Rmxvd0Rl
dGFpbHMoKTsKICAgICAgICAgaWYgKCFkb21Ob2RlKQpAQCAtMjAzLDE3ICsyMDAsMTcgQEAgV2Vi
SW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmdldE5vZGVDb250ZW50
Rmxvd0luZm8oZG9tTm9kZSwgY29udGVudEZsb3dJbmZvUmVhZHkuYmluZCh0aGlzKSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfZ29Ub1JlZ2lvbkZsb3dBcnJvd1dhc0NsaWNrZWQ6IGZ1bmN0aW9u
KCkKKyAgICBfZ29Ub1JlZ2lvbkZsb3dBcnJvd1dhc0NsaWNrZWQoKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVsLnNob3dDb250ZW50Rmxvd0RPTVRyZWUo
dGhpcy5fcmVnaW9uRmxvdyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ29Ub0NvbnRlbnRGbG93
QXJyb3dXYXNDbGlja2VkOiBmdW5jdGlvbigpCisgICAgX2dvVG9Db250ZW50Rmxvd0Fycm93V2Fz
Q2xpY2tlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFu
ZWwuc2hvd0NvbnRlbnRGbG93RE9NVHJlZSh0aGlzLl9jb250ZW50RmxvdywgdGhpcy5ub2RlU3R5
bGVzLm5vZGUsIHRydWUpOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxl
RGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVEZXRhaWxzUGFu
ZWwuU3R5bGVDbGFzc05hbWUgPSAiY29tcHV0ZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUNvbW1hbmQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFuZC5qcwppbmRl
eCBhOWM1M2Y4Li42OTVkODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFuZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFuZC5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywgMjAx
NSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5
IEpvc2VwaCBQZWNvcmFybwogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcsMjAgKzI3LDE4IEBACiAg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZCA9IGZ1bmN0aW9u
KGNvbW1hbmQpCitXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmQgPSBjbGFzcyBDb25zb2xlQ29t
bWFuZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVy
dCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIo
KS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0
b3IoY29tbWFuZCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5jb21t
YW5kID0gY29tbWFuZDsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZC5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZCwKKyAg
ICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGRlY29yYXRlTWVzc2FnZUVsZW1lbnQ6IGZ1bmN0
aW9uKGVsZW1lbnQpIHsKKyAgICBkZWNvcmF0ZU1lc3NhZ2VFbGVtZW50KGVsZW1lbnQpIHsKICAg
ICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVu
dDsKIApAQCAtNTMsMzAgKzUxLDI4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZm9ybWF0
dGVkQ29tbWFuZCk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICB0b01lc3NhZ2VFbGVtZW50OiBmdW5jdGlvbigpCisgICAgdG9NZXNzYWdlRWxl
bWVudCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZWxlbWVudCkKICAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9lbGVtZW50OwogCiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHJldHVybiB0aGlzLmRlY29yYXRlTWVzc2FnZUVs
ZW1lbnQoZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CisKKyAgICB0b0NsaXBib2FyZFN0cmluZyhp
c1ByZWZpeE9wdGlvbmFsKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChpc1ByZWZpeE9wdGlvbmFs
ID8gIiIgOiAiPiAiKSArIHRoaXMuY29tbWFuZDsKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAK
LSAgICBfZm9ybWF0Q29tbWFuZDogZnVuY3Rpb24oKQorICAgIF9mb3JtYXRDb21tYW5kKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZENvbW1hbmQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7CiAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZENvbW1hbmQuY2xhc3NOYW1lID0g
ImNvbnNvbGUtbWVzc2FnZS10ZXh0IHNvdXJjZS1jb2RlIjsKICAgICAgICAgdGhpcy5fZm9ybWF0
dGVkQ29tbWFuZC50ZXh0Q29udGVudCA9IHRoaXMuY29tbWFuZDsKLSAgICB9LAotCi0gICAgdG9D
bGlwYm9hcmRTdHJpbmc6IGZ1bmN0aW9uKGlzUHJlZml4T3B0aW9uYWwpCi0gICAgewotICAgICAg
ICByZXR1cm4gKGlzUHJlZml4T3B0aW9uYWwgPyAiIiA6ICI+ICIpICsgdGhpcy5jb21tYW5kOwog
ICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZC5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFuZFJlc3VsdC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVDb21t
YW5kUmVzdWx0LmpzCmluZGV4IGU3YzBmNTkuLmFjZTEwNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVDb21tYW5kUmVzdWx0Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVD
b21tYW5kUmVzdWx0LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CkBAIC0yNyw0MCArMjcsNDIgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0ID0gZnVuY3Rpb24ocmVzdWx0LCB3YXNUaHJvd24sIG9y
aWdpbmF0aW5nQ29tbWFuZCwgc2F2ZWRSZXN1bHRJbmRleCkKK1dlYkluc3BlY3Rvci5Db25zb2xl
Q29tbWFuZFJlc3VsdCA9IGNsYXNzIENvbnNvbGVDb21tYW5kUmVzdWx0IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbAoreworICAgIGNvbnN0cnVjdG9yKHJlc3Vs
dCwgd2FzVGhyb3duLCBvcmlnaW5hdGluZ0NvbW1hbmQsIHNhdmVkUmVzdWx0SW5kZXgpCiAgICAg
ewogICAgICAgICB2YXIgbGV2ZWwgPSAod2FzVGhyb3duID8gV2ViSW5zcGVjdG9yLkxlZ2FjeUNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvciA6IFdlYkluc3BlY3Rvci5MZWdhY3lDb25z
b2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuTG9nKTsKICAgICAgICAgdGhpcy5vcmlnaW5hdGluZ0Nv
bW1hbmQgPSBvcmlnaW5hdGluZ0NvbW1hbmQ7CiAgICAgICAgIHRoaXMuc2F2ZWRSZXN1bHRJbmRl
eCA9IHNhdmVkUmVzdWx0SW5kZXg7CiAKLSAgICBpZiAodGhpcy5zYXZlZFJlc3VsdEluZGV4ICYm
IHRoaXMuc2F2ZWRSZXN1bHRJbmRleCA+IFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3Vs
dC5tYXhpbXVtU2F2ZWRSZXN1bHRJbmRleCkKLSAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVD
b21tYW5kUmVzdWx0Lm1heGltdW1TYXZlZFJlc3VsdEluZGV4ID0gdGhpcy5zYXZlZFJlc3VsdElu
ZGV4OworICAgICAgICBpZiAodGhpcy5zYXZlZFJlc3VsdEluZGV4ICYmIHRoaXMuc2F2ZWRSZXN1
bHRJbmRleCA+IFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5fbWF4aW11bVNhdmVk
UmVzdWx0SW5kZXgpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1
bHQuX21heGltdW1TYXZlZFJlc3VsdEluZGV4ID0gdGhpcy5zYXZlZFJlc3VsdEluZGV4OwogCiAg
ICAgICAgIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwuY2FsbCh0aGlzLCBX
ZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVNvdXJjZS5KUywgbGV2ZWws
ICIiLCBudWxsLCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZVR5cGUu
UmVzdWx0LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIFtyZXN1
bHRdKTsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQubWF4
aW11bVNhdmVkUmVzdWx0SW5kZXggPSAwOworICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3Iu
Q29uc29sZUNvbW1hbmRSZXN1bHQuY2xlYXJNYXhpbXVtU2F2ZWRSZXN1bHRJbmRleCA9IGZ1bmN0
aW9uKCkKKyAgICBzdGF0aWMgY2xlYXJNYXhpbXVtU2F2ZWRSZXN1bHRJbmRleCgpCiAgICAgewot
ICAgIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5tYXhpbXVtU2F2ZWRSZXN1bHRJ
bmRleCA9IDA7CisgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5fbWF4
aW11bVNhdmVkUmVzdWx0SW5kZXggPSAwOwogICAgIH0KIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVD
b21tYW5kUmVzdWx0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LkNvbnNvbGVDb21tYW5kUmVzdWx0LAotCiAgICAgLy8gUHVibGljCiAKLSAgICBlbmZvcmNlc0Ns
aXBib2FyZFByZWZpeFN0cmluZzogZmFsc2UsCisgICAgZ2V0IGVuZm9yY2VzQ2xpcGJvYXJkUHJl
Zml4U3RyaW5nKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAKLSAgICB0
b01lc3NhZ2VFbGVtZW50OiBmdW5jdGlvbigpCisgICAgdG9NZXNzYWdlRWxlbWVudCgpCiAgICAg
ewogICAgICAgICB2YXIgZWxlbWVudCA9IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2Fn
ZUltcGwucHJvdG90eXBlLnRvTWVzc2FnZUVsZW1lbnQuY2FsbCh0aGlzKTsKICAgICAgICAgZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJjb25zb2xlLXVzZXItY29tbWFuZC1yZXN1bHQiKTsKICAgICAg
ICAgaWYgKCFlbGVtZW50LmdldEF0dHJpYnV0ZSgiZGF0YS1sYWJlbHByZWZpeCIpKQogICAgICAg
ICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoImRhdGEtbGFiZWxwcmVmaXgiLCBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIk91dHB1dDogIikpOwogICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBjbGlwYm9hcmRQcmVmaXhTdHJpbmcoKQogICAgIHsKQEAgLTY4
LDQgKzcwLDQgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0LnByb3RvdHlwZSA9
IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJv
dG90eXBlOworV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0Ll9tYXhpbXVtU2F2ZWRS
ZXN1bHRJbmRleCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db25zb2xlR3JvdXAuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db25zb2xlR3JvdXAuanMKaW5kZXggOTA1NmY1Zi4uNGE0MDhlZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
c29sZUdyb3VwLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnNvbGVHcm91cC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybwogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtMjcsMjAgKzI3LDE4IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5Db25zb2xlR3JvdXAgPSBmdW5jdGlvbihwYXJlbnRHcm91cCkKK1dlYkluc3BlY3Rv
ci5Db25zb2xlR3JvdXAgPSBjbGFzcyBDb25zb2xlR3JvdXAgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5P
YmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9i
amVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKHBhcmVudEdyb3VwKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLnBhcmVudEdyb3VwID0gcGFyZW50R3JvdXA7
Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwLnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cCwKKyAgICB9CiAKICAgICAvLyBQdWJs
aWMKIAotICAgIHJlbmRlcjogZnVuY3Rpb24obWVzc2FnZSkKKyAgICByZW5kZXIobWVzc2FnZSkK
ICAgICB7CiAgICAgICAgIHZhciBncm91cEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKICAgICAgICAgZ3JvdXBFbGVtZW50LmNsYXNzTmFtZSA9ICJjb25zb2xlLWdyb3Vw
IjsKQEAgLTYyLDI4ICs2MCwyOCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgZ3JvdXBFbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2VzRWxlbWVudCk7
CiAKICAgICAgICAgcmV0dXJuIGdyb3VwRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIGFk
ZE1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgYWRkTWVzc2FnZShtZXNzYWdlKQogICAg
IHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBtZXNzYWdlLnRvTWVzc2FnZUVsZW1lbnQoKTsKICAg
ICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5J
dGVtV3JhcHBlclN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgdGhpcy5hcHBlbmQoZWxlbWVudCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhcHBlbmQ6IGZ1bmN0aW9uKG1lc3NhZ2VFbGVtZW50KQor
ICAgIGFwcGVuZChtZXNzYWdlRWxlbWVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX21lc3NhZ2Vz
RWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcml2YXRlCiAKLSAgICBfdGl0bGVNb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF90aXRsZU1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGl0bGVDbGlja2VkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfdGl0bGVDbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGdyb3VwVGl0
bGVFbGVtZW50ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoImNv
bnNvbGUtZ3JvdXAtdGl0bGUiKTsKICAgICAgICAgaWYgKGdyb3VwVGl0bGVFbGVtZW50KSB7CkBA
IC05Nyw1ICs5NSwzIEBAIFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVBy
b21wdC5qcwppbmRleCBkNDk3YjFjLi5mYWI0ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlUHJvbXB0LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDEwICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0ID0gZnVuY3Rpb24oZGVsZWdhdGUsIG1pbWVUeXBl
LCBlbGVtZW50KQorV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQgPSBjbGFzcyBDb25zb2xlUHJv
bXB0IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0
IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigp
LgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rv
cihkZWxlZ2F0ZSwgbWltZVR5cGUsIGVsZW1lbnQpCisgICAgeworICAgICAgICBzdXBlcigpOwog
CiAgICAgICAgIG1pbWVUeXBlID0gcGFyc2VNSU1FVHlwZShtaW1lVHlwZSkudHlwZTsKIApAQCAt
NjEsMTExICs2MiwxMDUgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQgPSBmdW5jdGlvbihk
ZWxlZ2F0ZSwgbWltZVR5cGUsIGVsZW1lbnQpCiAKICAgICAgICAgdGhpcy5faGlzdG9yeSA9IFt7
fV07CiAgICAgICAgIHRoaXMuX2hpc3RvcnlJbmRleCA9IDA7Ci19OwotCi1XZWJJbnNwZWN0b3Iu
Q29uc29sZVByb21wdC5TdHlsZUNsYXNzTmFtZSA9ICJjb25zb2xlLXByb21wdCI7Ci1XZWJJbnNw
ZWN0b3IuQ29uc29sZVByb21wdC5NYXhpbXVtSGlzdG9yeVNpemUgPSAzMDsKLQotV2ViSW5zcGVj
dG9yLkNvbnNvbGVQcm9tcHQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuQ29uc29sZVByb21wdCwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBl
bGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGRlbGVnYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9k
ZWxlZ2F0ZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBkZWxlZ2F0ZShkZWxlZ2F0ZSkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKLSAgICB9LAor
ICAgIH0KIAogICAgIHNldCBlc2NhcGVLZXlIYW5kbGVyV2hlbkVtcHR5KGhhbmRsZXIpCiAgICAg
ewogICAgICAgICB0aGlzLl9lc2NhcGVLZXlIYW5kbGVyV2hlbkVtcHR5ID0gaGFuZGxlcjsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCB0ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9jb2RlTWlycm9yLmdldFZhbHVlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgdGV4dCh0
ZXh0KQogICAgIHsKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRWYWx1ZSh0ZXh0IHx8ICIi
KTsKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5jbGVhckhpc3RvcnkoKTsKICAgICAgICAgdGhp
cy5fY29kZU1pcnJvci5tYXJrQ2xlYW4oKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoaXN0
b3J5KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2hpc3RvcnlbdGhpcy5faGlzdG9yeUluZGV4XSA9
IHRoaXMuX2hpc3RvcnlFbnRyeUZvckN1cnJlbnRUZXh0KCk7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9oaXN0b3J5OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGhpc3RvcnkoaGlzdG9yeSkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2hpc3RvcnkgPSBoaXN0b3J5IGluc3RhbmNlb2YgQXJyYXkgPyBo
aXN0b3J5LnNsaWNlKDAsIFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0Lk1heGltdW1IaXN0b3J5
U2l6ZSkgOiBbe31dOwogICAgICAgICB0aGlzLl9oaXN0b3J5SW5kZXggPSAwOwogICAgICAgICB0
aGlzLl9yZXN0b3JlSGlzdG9yeUVudHJ5KDApOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZv
Y3VzZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0V3JhcHBl
ckVsZW1lbnQoKS5jbGFzc0xpc3QuY29udGFpbnMoIkNvZGVNaXJyb3ItZm9jdXNlZCIpOwotICAg
IH0sCisgICAgfQogCi0gICAgZm9jdXM6IGZ1bmN0aW9uKCkKKyAgICBmb2N1cygpCiAgICAgewog
ICAgICAgICB0aGlzLl9jb2RlTWlycm9yLmZvY3VzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBz
aG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvZGVN
aXJyb3IucmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5j
dGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvZGVNaXJy
b3IucmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlQ29tcGxldGlvbnM6IGZ1
bmN0aW9uKGNvbXBsZXRpb25zLCBpbXBsaWNpdFN1ZmZpeCkKKyAgICB1cGRhdGVDb21wbGV0aW9u
cyhjb21wbGV0aW9ucywgaW1wbGljaXRTdWZmaXgpCiAgICAgewogICAgICAgICB0aGlzLl9jb21w
bGV0aW9uQ29udHJvbGxlci51cGRhdGVDb21wbGV0aW9ucyhjb21wbGV0aW9ucywgaW1wbGljaXRT
dWZmaXgpOwotICAgIH0sCisgICAgfQogCi0gICAgcHVzaEhpc3RvcnlJdGVtOiBmdW5jdGlvbih0
ZXh0KQorICAgIHB1c2hIaXN0b3J5SXRlbSh0ZXh0KQogICAgIHsKICAgICAgICAgdGhpcy5fY29t
bWl0SGlzdG9yeUVudHJ5KHt0ZXh0fSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0
ZWQKIAotICAgIGNvbXBsZXRpb25Db250cm9sbGVyQ29tcGxldGlvbnNOZWVkZWQ6IGZ1bmN0aW9u
KGNvbXBsZXRpb25Db250cm9sbGVyLCBwcmVmaXgsIGRlZmF1bHRDb21wbGV0aW9ucywgYmFzZSwg
c3VmZml4LCBmb3JjZWQpCisgICAgY29tcGxldGlvbkNvbnRyb2xsZXJDb21wbGV0aW9uc05lZWRl
ZChjb21wbGV0aW9uQ29udHJvbGxlciwgcHJlZml4LCBkZWZhdWx0Q29tcGxldGlvbnMsIGJhc2Us
IHN1ZmZpeCwgZm9yY2VkKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlw
ZW9mIHRoaXMuZGVsZWdhdGUuY29uc29sZVByb21wdENvbXBsZXRpb25zTmVlZGVkID09PSAiZnVu
Y3Rpb24iKQogICAgICAgICAgICAgdGhpcy5kZWxlZ2F0ZS5jb25zb2xlUHJvbXB0Q29tcGxldGlv
bnNOZWVkZWQodGhpcywgZGVmYXVsdENvbXBsZXRpb25zLCBiYXNlLCBwcmVmaXgsIHN1ZmZpeCwg
Zm9yY2VkKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fY29tcGxldGlvbkNvbnRy
b2xsZXIudXBkYXRlQ29tcGxldGlvbnMoZGVmYXVsdENvbXBsZXRpb25zKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGNvbXBsZXRpb25Db250cm9sbGVyU2hvdWxkQWxsb3dFc2NhcGVDb21wbGV0aW9u
OiBmdW5jdGlvbihjb21wbGV0aW9uQ29udHJvbGxlcikKKyAgICBjb21wbGV0aW9uQ29udHJvbGxl
clNob3VsZEFsbG93RXNjYXBlQ29tcGxldGlvbihjb21wbGV0aW9uQ29udHJvbGxlcikKICAgICB7
CiAgICAgICAgIC8vIE9ubHkgYWxsb3cgZXNjYXBlIHRvIGNvbXBsZXRlIGlmIHRoZXJlIGlzIHRl
eHQgaW4gdGhlIHByb21wdC4gT3RoZXJ3aXNlIGFsbG93IGl0IHRvIHBhc3MgdGhyb3VnaAogICAg
ICAgICAvLyBzbyBlc2NhcGUgdG8gdG9nZ2xlIHRoZSBxdWljayBjb25zb2xlIHN0aWxsIHdvcmtz
LgogICAgICAgICByZXR1cm4gISF0aGlzLnRleHQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cml2YXRlCiAKLSAgICBfaGFuZGxlRXNjYXBlS2V5OiBmdW5jdGlvbihjb2RlTWlycm9yKQorICAg
IF9oYW5kbGVFc2NhcGVLZXkoY29kZU1pcnJvcikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnRl
eHQpCiAgICAgICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzOwpAQCAtMTc0LDkgKzE2OSw5
IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHJldHVybiBDb2RlTWlycm9yLlBhc3M7CiAKICAgICAgICAgdGhpcy5fZXNjYXBlS2V5SGFuZGxl
cldoZW5FbXB0eSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZVByZXZpb3VzS2V5OiBm
dW5jdGlvbihjb2RlTWlycm9yKQorICAgIF9oYW5kbGVQcmV2aW91c0tleShjb2RlTWlycm9yKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NvZGVNaXJyb3Iuc29tZXRoaW5nU2VsZWN0ZWQoKSkK
ICAgICAgICAgICAgIHJldHVybiBDb2RlTWlycm9yLlBhc3M7CkBAIC0xOTQsOSArMTg5LDkgQEAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICArK3RoaXMu
X2hpc3RvcnlJbmRleDsKIAogICAgICAgICB0aGlzLl9yZXN0b3JlSGlzdG9yeUVudHJ5KHRoaXMu
X2hpc3RvcnlJbmRleCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlTmV4dEtleTogZnVu
Y3Rpb24oY29kZU1pcnJvcikKKyAgICBfaGFuZGxlTmV4dEtleShjb2RlTWlycm9yKQogICAgIHsK
ICAgICAgICAgaWYgKHRoaXMuX2NvZGVNaXJyb3Iuc29tZXRoaW5nU2VsZWN0ZWQoKSkKICAgICAg
ICAgICAgIHJldHVybiBDb2RlTWlycm9yLlBhc3M7CkBAIC0yMTQsOSArMjA5LDkgQEAgV2ViSW5z
cGVjdG9yLkNvbnNvbGVQcm9tcHQucHJvdG90eXBlID0gewogICAgICAgICAtLXRoaXMuX2hpc3Rv
cnlJbmRleDsKIAogICAgICAgICB0aGlzLl9yZXN0b3JlSGlzdG9yeUVudHJ5KHRoaXMuX2hpc3Rv
cnlJbmRleCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlRW50ZXJLZXk6IGZ1bmN0aW9u
KGNvZGVNaXJyb3IsIGZvcmNlQ29tbWl0KQorICAgIF9oYW5kbGVFbnRlcktleShjb2RlTWlycm9y
LCBmb3JjZUNvbW1pdCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50VGV4dCA9IHRoaXMudGV4
dDsKIApAQCAtMjYzLDkgKzI1OCw5IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGNvbW1pdFRleHRPckluc2VydE5ld0xpbmUu
Y2FsbCh0aGlzLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb21taXRIaXN0b3J5RW50
cnk6IGZ1bmN0aW9uKGhpc3RvcnlFbnRyeSkKKyAgICBfY29tbWl0SGlzdG9yeUVudHJ5KGhpc3Rv
cnlFbnRyeSkKICAgICB7CiAgICAgICAgIC8vIFJlcGxhY2UgdGhlIHByZXZpb3VzIGVudHJ5IGlm
IGl0IGRvZXMgbm90IGhhdmUgdGV4dCBvciBpZiB0aGUgdGV4dCBpcyB0aGUgc2FtZS4KICAgICAg
ICAgaWYgKHRoaXMuX2hpc3RvcnlbMV0gJiYgKCF0aGlzLl9oaXN0b3J5WzFdLnRleHQgfHwgdGhp
cy5faGlzdG9yeVsxXS50ZXh0ID09PSBoaXN0b3J5RW50cnkudGV4dCkpIHsKQEAgLTI4MiwxNCAr
Mjc3LDE0IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX2hpc3RvcnlJbmRleCA9IDA7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGFuZGxlQ29tbWFuZEVudGVyS2V5OiBmdW5jdGlvbihjb2RlTWlycm9yKQorICAgIF9o
YW5kbGVDb21tYW5kRW50ZXJLZXkoY29kZU1pcnJvcikKICAgICB7CiAgICAgICAgIHRoaXMuX2hh
bmRsZUVudGVyS2V5KGNvZGVNaXJyb3IsIHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jl
c3RvcmVIaXN0b3J5RW50cnk6IGZ1bmN0aW9uKGluZGV4KQorICAgIF9yZXN0b3JlSGlzdG9yeUVu
dHJ5KGluZGV4KQogICAgIHsKICAgICAgICAgdmFyIGhpc3RvcnlFbnRyeSA9IHRoaXMuX2hpc3Rv
cnlbaW5kZXhdOwogCkBAIC0zMDEsMTQgKzI5NiwxNCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVBy
b21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9jb2RlTWlycm9yLmNsZWFySGlz
dG9yeSgpOwogCiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0Q3Vyc29yKGhpc3RvcnlFbnRy
eS5jdXJzb3IgfHwge2xpbmU6IDB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oaXN0b3J5RW50
cnlGb3JDdXJyZW50VGV4dDogZnVuY3Rpb24oKQorICAgIF9oaXN0b3J5RW50cnlGb3JDdXJyZW50
VGV4dCgpCiAgICAgewogICAgICAgICByZXR1cm4ge3RleHQ6IHRoaXMudGV4dCwgdW5kb0hpc3Rv
cnk6IHRoaXMuX2NvZGVNaXJyb3IuZ2V0SGlzdG9yeSgpLCBjdXJzb3I6IHRoaXMuX2NvZGVNaXJy
b3IuZ2V0Q3Vyc29yKCl9OwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbWVtYmVyQ3VycmVudFRl
eHRJbkhpc3Rvcnk6IGZ1bmN0aW9uKCkKKyAgICBfcmVtZW1iZXJDdXJyZW50VGV4dEluSGlzdG9y
eSgpCiAgICAgewogICAgICAgICB0aGlzLl9oaXN0b3J5W3RoaXMuX2hpc3RvcnlJbmRleF0gPSB0
aGlzLl9oaXN0b3J5RW50cnlGb3JDdXJyZW50VGV4dCgpOwogCkBAIC0zMTcsNCArMzEyLDUgQEAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdl
Ykluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0LlN0eWxlQ2xh
c3NOYW1lID0gImNvbnNvbGUtcHJvbXB0IjsKK1dlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0Lk1h
eGltdW1IaXN0b3J5U2l6ZSA9IDMwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVNlc3Npb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlU2Vzc2lvbi5qcwppbmRleCBjNjE1OWUx
Li41ZTUxZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db25zb2xlU2Vzc2lvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db25zb2xlU2Vzc2lvbi5qcwpAQCAtMjYsMzYgKzI2LDMyIEBACiAg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db25zb2xlU2Vzc2lvbiA9IGZ1bmN0aW9u
KCkKK1dlYkluc3BlY3Rvci5Db25zb2xlU2Vzc2lvbiA9IGNsYXNzIENvbnNvbGVTZXNzaW9uIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMg
dG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAg
IC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcigpCisg
ICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNv
bGUtc2Vzc2lvbiI7CiAgICAgICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7CiAgICAgICAgIHRo
aXMuX21lc3NhZ2VzRWxlbWVudCA9IGVsZW1lbnQ7Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9y
LkNvbnNvbGVTZXNzaW9uLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkNvbnNvbGVTZXNzaW9uLAotCi0gICAgYWRkTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkK
KyAgICBhZGRNZXNzYWdlKG1lc3NhZ2UpCiAgICAgewogICAgICAgICB2YXIgbWVzc2FnZUVsZW1l
bnQgPSBtZXNzYWdlLnRvTWVzc2FnZUVsZW1lbnQoKTsKICAgICAgICAgbWVzc2FnZUVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuSXRlbVdyYXBwZXJTdHls
ZUNsYXNzTmFtZSk7CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzRWxlbWVudC5hcHBlbmRDaGlsZCht
ZXNzYWdlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhcHBlbmQ6IGZ1bmN0aW9uKG1l
c3NhZ2VFbGVtZW50KQorICAgIGFwcGVuZChtZXNzYWdlRWxlbWVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuX21lc3NhZ2VzRWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdlRWxlbWVudCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBoYXNNZXNzYWdlczogZnVuY3Rpb24oKQorICAgIGhhc01lc3NhZ2Vz
KCkKICAgICB7CiAgICAgICAgIHJldHVybiAhIXRoaXMuX21lc3NhZ2VzRWxlbWVudC5jaGlsZE5v
ZGVzLmxlbmd0aDsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24ucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJy
b3dzZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50QnJvd3Nlci5qcwppbmRleCBlYTYwNDRmLi43YjZjNzM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nl
ci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsMTAgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyID0gZnVuY3Rpb24oZWxlbWVudCwg
ZGVsZWdhdGUsIGRpc2FibGVCYWNrRm9yd2FyZCkKK1dlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nl
ciA9IGNsYXNzIENvbnRlbnRCcm93c2VyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewot
ICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNs
YXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBkZWxlZ2F0ZSwgZGlzYWJsZUJhY2tGb3J3
YXJkKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLl9lbGVtZW50ID0g
ZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5TdHlsZUNs
YXNzTmFtZSk7CkBAIC04OCw1MiArODksMzkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2Vy
ID0gZnVuY3Rpb24oZWxlbWVudCwgZGVsZWdhdGUsIGRpc2FibGVCYWNrRm9yd2FyZCkKICAgICAg
ICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOwogCiAgICAgICAgIHRoaXMuX2N1
cnJlbnRDb250ZW50Vmlld05hdmlnYXRpb25JdGVtcyA9IFtdOwotfTsKLQotLy8gRklYTUU6IE1v
dmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRo
aXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9u
cyhXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIpOwotCi1XZWJJbnNwZWN0b3IuQ29udGVudEJy
b3dzZXIuU3R5bGVDbGFzc05hbWUgPSAiY29udGVudC1icm93c2VyIjsKLQotV2ViSW5zcGVjdG9y
LkNvbnRlbnRCcm93c2VyLkV2ZW50ID0gewotICAgIEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNE
aWRDaGFuZ2U6ICJjb250ZW50LWJyb3dzZXItY3VycmVudC1yZXByZXNlbnRlZC1vYmplY3RzLWRp
ZC1jaGFuZ2UiLAotICAgIEN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZTogImNvbnRlbnQtYnJv
d3Nlci1jdXJyZW50LWNvbnRlbnQtdmlldy1kaWQtY2hhbmdlIgotfTsKLQotV2ViSW5zcGVjdG9y
LkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLkNvbnRlbnRCcm93c2VyLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVs
ZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgbmF2aWdhdGlvbkJhcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fbmF2aWdhdGlvbkJhcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb250ZW50Vmlld0Nv
bnRhaW5lcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWlu
ZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGVsZWdhdGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2RlbGVnYXRlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRlbGVnYXRl
KG5ld0RlbGVnYXRlKQogICAgIHsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBuZXdEZWxlZ2F0
ZSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGN1cnJlbnRDb250ZW50Vmlldygp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVu
dENvbnRlbnRWaWV3OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGN1cnJlbnRSZXByZXNlbnRl
ZE9iamVjdHMoKQogICAgIHsKQEAgLTE1NSw0NyArMTQzLDQ3IEBAIFdlYkluc3BlY3Rvci5Db250
ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gcmVw
cmVzZW50ZWRPYmplY3RzOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5j
dGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRoaXMuX25hdmlnYXRp
b25CYXIudXBkYXRlTGF5b3V0KCk7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVy
LnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd0NvbnRlbnRWaWV3Rm9y
UmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBjb29raWUpCisg
ICAgc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3Qs
IGNvb2tpZSkKICAgICB7CiAgICAgICAgIHZhciBjb250ZW50VmlldyA9IHRoaXMuY29udGVudFZp
ZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIHJldHVy
biB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcs
IGNvb2tpZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93Q29udGVudFZpZXc6IGZ1bmN0aW9u
KGNvbnRlbnRWaWV3LCBjb29raWUpCisgICAgc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3LCBj
b29raWUpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIu
c2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3LCBjb29raWUpOwotICAgIH0sCisgICAgfQogCi0g
ICAgY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRP
YmplY3QsIG9ubHlFeGlzdGluZykKKyAgICBjb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0
KHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5RXhpc3RpbmcpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVj
dChyZXByZXNlbnRlZE9iamVjdCwgb25seUV4aXN0aW5nKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGNhbkdvQmFjazogZnVuY3Rpb24oKQorICAgIGNhbkdvQmFjaygpCiAgICAgewogICAgICAgICB2
YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAg
IGlmIChjdXJyZW50Q29udGVudFZpZXcgJiYgY3VycmVudENvbnRlbnRWaWV3LmNhbkdvQmFjaygp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50
Vmlld0NvbnRhaW5lci5jYW5Hb0JhY2soKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbkdvRm9y
d2FyZDogZnVuY3Rpb24oKQorICAgIGNhbkdvRm9yd2FyZCgpCiAgICAgewogICAgICAgICB2YXIg
Y3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlm
IChjdXJyZW50Q29udGVudFZpZXcgJiYgY3VycmVudENvbnRlbnRWaWV3LmNhbkdvRm9yd2FyZCgp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50
Vmlld0NvbnRhaW5lci5jYW5Hb0ZvcndhcmQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdvQmFj
azogZnVuY3Rpb24oKQorICAgIGdvQmFjaygpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENv
bnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmIChjdXJyZW50
Q29udGVudFZpZXcgJiYgY3VycmVudENvbnRlbnRWaWV3LmNhbkdvQmFjaygpKSB7CkBAIC0yMDgs
OSArMTk2LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICAvLyBUaGUgX3VwZGF0ZUJhY2tGb3J3YXJkQnV0dG9ucyBmdW5jdGlvbiBpcyBjYWxs
ZWQgYnkgX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwKICAgICAgICAgLy8gc28gaXQgZG9l
cyBub3QgbmVlZCB0byBiZSBjYWxsZWQgaGVyZS4KLSAgICB9LAorICAgIH0KIAotICAgIGdvRm9y
d2FyZDogZnVuY3Rpb24oKQorICAgIGdvRm9yd2FyZCgpCiAgICAgewogICAgICAgICB2YXIgY3Vy
cmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmIChj
dXJyZW50Q29udGVudFZpZXcgJiYgY3VycmVudENvbnRlbnRWaWV3LmNhbkdvRm9yd2FyZCgpKSB7
CkBAIC0yMjMsNjYgKzIxMSw2NiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90
eXBlID0gewogCiAgICAgICAgIC8vIFRoZSBfdXBkYXRlQmFja0ZvcndhcmRCdXR0b25zIGZ1bmN0
aW9uIGlzIGNhbGxlZCBieSBfY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLAogICAgICAgICAv
LyBzbyBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNhbGxlZCBoZXJlLgotICAgIH0sCisgICAgfQog
Ci0gICAgZmluZEJhbm5lclBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKGZpbmRCYW5uZXIsIHF1ZXJ5
KQorICAgIGZpbmRCYW5uZXJQZXJmb3JtU2VhcmNoKGZpbmRCYW5uZXIsIHF1ZXJ5KQogICAgIHsK
ICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3
OwogICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3
LnN1cHBvcnRzU2VhcmNoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGN1cnJlbnRD
b250ZW50Vmlldy5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTsKLSAgICB9LAorICAgIH0KIAotICAgIGZp
bmRCYW5uZXJTZWFyY2hDbGVhcmVkOiBmdW5jdGlvbihmaW5kQmFubmVyKQorICAgIGZpbmRCYW5u
ZXJTZWFyY2hDbGVhcmVkKGZpbmRCYW5uZXIpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENv
bnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmICghY3VycmVu
dENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LnNlYXJjaENsZWFy
ZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZpbmRCYW5uZXJTZWFyY2hRdWVyeUZvclNlbGVj
dGlvbjogZnVuY3Rpb24oZmluZEJhbm5lcikKKyAgICBmaW5kQmFubmVyU2VhcmNoUXVlcnlGb3JT
ZWxlY3Rpb24oZmluZEJhbm5lcikKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZp
ZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVu
dFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAgICAgICAg
IHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVybiBjdXJyZW50Q29udGVudFZpZXcuc2VhcmNo
UXVlcnlXaXRoU2VsZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmaW5kQmFubmVyUmV2
ZWFsUHJldmlvdXNSZXN1bHQ6IGZ1bmN0aW9uKGZpbmRCYW5uZXIpCisgICAgZmluZEJhbm5lclJl
dmVhbFByZXZpb3VzUmVzdWx0KGZpbmRCYW5uZXIpCiAgICAgewogICAgICAgICB2YXIgY3VycmVu
dENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmICghY3Vy
cmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LnJldmVhbFBy
ZXZpb3VzU2VhcmNoUmVzdWx0KCFmaW5kQmFubmVyLnNob3dpbmcpOwotICAgIH0sCisgICAgfQog
Ci0gICAgZmluZEJhbm5lclJldmVhbE5leHRSZXN1bHQ6IGZ1bmN0aW9uKGZpbmRCYW5uZXIpCisg
ICAgZmluZEJhbm5lclJldmVhbE5leHRSZXN1bHQoZmluZEJhbm5lcikKICAgICB7CiAgICAgICAg
IHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAg
ICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0
c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjdXJyZW50Q29udGVudFZp
ZXcucmV2ZWFsTmV4dFNlYXJjaFJlc3VsdCghZmluZEJhbm5lci5zaG93aW5nKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9iYWNrQnV0dG9uQ2xpY2tlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2JhY2tCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
dGhpcy5nb0JhY2soKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mb3J3YXJkQnV0dG9uQ2xpY2tl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2ZvcndhcmRCdXR0b25DbGlja2VkKGV2ZW50KQogICAg
IHsKICAgICAgICAgdGhpcy5nb0ZvcndhcmQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zYXZl
RGF0YVRvRmlsZTogZnVuY3Rpb24oc2F2ZURhdGEsIGZvcmNlU2F2ZUFzKQorICAgIF9zYXZlRGF0
YVRvRmlsZShzYXZlRGF0YSwgZm9yY2VTYXZlQXMpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChzYXZlRGF0YSk7CiAgICAgICAgIGlmICghc2F2ZURhdGEpCkBAIC0yOTksNjIgKzI4Nyw2
MiBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zYXZlKHNhdmVEYXRh
LnVybCwgc2F2ZURhdGEuY29udGVudCwgZmFsc2UsIGZvcmNlU2F2ZUFzIHx8IHNhdmVEYXRhLmZv
cmNlU2F2ZUFzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zYXZlOiBmdW5jdGlvbihldmVudCkK
KyAgICBfc2F2ZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcg
PSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZp
ZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NhdmUpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgdGhpcy5fc2F2ZURhdGFUb0ZpbGUoY3VycmVudENvbnRlbnRWaWV3LnNh
dmVEYXRhKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zYXZlQXM6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9zYXZlQXMoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3
ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRW
aWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTYXZlKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHRoaXMuX3NhdmVEYXRhVG9GaWxlKGN1cnJlbnRDb250ZW50Vmlldy5z
YXZlRGF0YSwgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd0ZpbmRCYW5uZXI6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9zaG93RmluZEJhbm5lcihldmVudCkKICAgICB7CiAgICAgICAg
IHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAg
ICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0
c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9maW5kQmFubmVy
LnNob3coKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9maW5kQmFubmVyRGlkU2hvdzogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2ZpbmRCYW5uZXJEaWRTaG93KGV2ZW50KQogICAgIHsKICAgICAgICAg
dmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAg
ICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRz
U2VhcmNoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGN1cnJlbnRDb250ZW50Vmll
dy5hdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQgPSB0cnVlOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2ZpbmRCYW5uZXJEaWRIaWRlOiBmdW5jdGlvbihldmVudCkKKyAgICBfZmlu
ZEJhbm5lckRpZEhpZGUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRW
aWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmICghY3VycmVudENvbnRl
bnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LmF1dG9tYXRpY2FsbHlSZXZl
YWxGaXJzdFNlYXJjaFJlc3VsdCA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRl
bnRWaWV3TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfY29udGVudFZpZXdOdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmN1cnJlbnRDb250ZW50VmlldykK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9maW5kQmFubmVyLm51bWJlck9m
UmVzdWx0cyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3Lm51bWJlck9mU2VhcmNoUmVzdWx0czsK
LSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVIaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0
ZW06IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIF91cGRhdGVIaWVyYXJjaGljYWxQ
YXRoTmF2aWdhdGlvbkl0ZW0ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuZGVsZWdhdGUgfHwgdHlwZW9mIHRoaXMuZGVsZWdhdGUuY29udGVudEJyb3dzZXJUcmVl
RWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0ICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMzY5LDkgKzM1Nyw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9oaWVyYXJjaGljYWxQYXRo
TmF2aWdhdGlvbkl0ZW0uY29tcG9uZW50cyA9IHBhdGhDb21wb25lbnRzOwotICAgIH0sCisgICAg
fQogCi0gICAgX3VwZGF0ZUNvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aE5hdmlnYXRpb25JdGVtOiBm
dW5jdGlvbihjb250ZW50VmlldykKKyAgICBfdXBkYXRlQ29udGVudFZpZXdTZWxlY3Rpb25QYXRo
TmF2aWdhdGlvbkl0ZW0oY29udGVudFZpZXcpCiAgICAgewogICAgICAgICB2YXIgc2VsZWN0aW9u
UGF0aENvbXBvbmVudHMgPSBjb250ZW50VmlldyA/IGNvbnRlbnRWaWV3LnNlbGVjdGlvblBhdGhD
b21wb25lbnRzIHx8IFtdIDogW107CiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9u
UGF0aE5hdmlnYXRpb25JdGVtLmNvbXBvbmVudHMgPSBzZWxlY3Rpb25QYXRoQ29tcG9uZW50czsK
QEAgLTM4OSwxOCArMzc3LDE4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmluc2VydE5hdmlnYXRpb25J
dGVtKHRoaXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aE5hdmlnYXRpb25JdGVtLCBoaWVyYXJj
aGljYWxQYXRoSXRlbUluZGV4ICsgMSk7CiAgICAgICAgICAgICB0aGlzLl9oaWVyYXJjaGljYWxQ
YXRoTmF2aWdhdGlvbkl0ZW0uYWx3YXlzU2hvd0xhc3RQYXRoQ29tcG9uZW50U2VwYXJhdG9yID0g
dHJ1ZTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUJhY2tGb3J3YXJk
QnV0dG9uczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVCYWNrRm9yd2FyZEJ1dHRvbnMoKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9iYWNrQnV0dG9uTmF2aWdhdGlvbkl0ZW0gfHwgIXRoaXMu
X2ZvcndhcmRCdXR0b25OYXZpZ2F0aW9uSXRlbSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICB0aGlzLl9iYWNrQnV0dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IHRoaXMuY2FuR29C
YWNrKCk7CiAgICAgICAgIHRoaXMuX2ZvcndhcmRCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVk
ID0gdGhpcy5jYW5Hb0ZvcndhcmQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVDb250
ZW50Vmlld05hdmlnYXRpb25JdGVtczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVDb250ZW50Vmll
d05hdmlnYXRpb25JdGVtcygpCiAgICAgewogICAgICAgICB2YXIgbmF2aWdhdGlvbkJhciA9IHRo
aXMubmF2aWdhdGlvbkJhcjsKIApAQCAtNDM2LDkgKzQyNCw5IEBAIFdlYkluc3BlY3Rvci5Db250
ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFJlbWVtYmVyIHRoZSBuYXZpZ2F0
aW9uIGl0ZW1zIHdlIGluc2VydGVkIHNvIHdlIGNhbiByZW1vdmUgdGhlbQogICAgICAgICAvLyBm
b3IgdGhlIG5leHQgY29udGVudCB2aWV3LgogICAgICAgICB0aGlzLl9jdXJyZW50Q29udGVudFZp
ZXdOYXZpZ2F0aW9uSXRlbXMgPSBuZXdOYXZpZ2F0aW9uSXRlbXM7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfdXBkYXRlRmluZEJhbm5lcjogZnVuY3Rpb24oY3VycmVudENvbnRlbnRWaWV3KQorICAg
IF91cGRhdGVGaW5kQmFubmVyKGN1cnJlbnRDb250ZW50VmlldykKICAgICB7CiAgICAgICAgIGlm
ICghY3VycmVudENvbnRlbnRWaWV3KSB7CiAgICAgICAgICAgICB0aGlzLl9maW5kQmFubmVyLnRh
cmdldEVsZW1lbnQgPSBudWxsOwpAQCAtNDUzLDE2ICs0NDEsMTYgQEAgV2ViSW5zcGVjdG9yLkNv
bnRlbnRCcm93c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGN1cnJlbnRDb250ZW50Vmll
dy5hdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQgPSB0aGlzLl9maW5kQmFubmVy
LnNob3dpbmc7CiAgICAgICAgICAgICBjdXJyZW50Q29udGVudFZpZXcucGVyZm9ybVNlYXJjaCh0
aGlzLl9maW5kQmFubmVyLnNlYXJjaFF1ZXJ5KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQog
Ci0gICAgX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50U29v
bjogZnVuY3Rpb24oKQorICAgIF9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRD
aGFuZ2VFdmVudFNvb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRSZXByZXNl
bnRlZE9iamVjdHNEaWRDaGFuZ2VUaW1lb3V0KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB0aGlzLl9jdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlVGltZW91dCA9IHNldFRp
bWVvdXQodGhpcy5fZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZl
bnQuYmluZCh0aGlzKSwgMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGlzcGF0Y2hDdXJyZW50
UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZlbnQ6IGZ1bmN0aW9uKCkKKyAgICBfZGlzcGF0
Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZlbnQoKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2N1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VUaW1lb3V0KSB7
CiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fY3VycmVudFJlcHJlc2VudGVkT2JqZWN0
c0RpZENoYW5nZVRpbWVvdXQpOwpAQCAtNDcwLDkgKzQ1OCw5IEBAIFdlYkluc3BlY3Rvci5Db250
ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIuRXZlbnQuQ3Vy
cmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
Y29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfY29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlKGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5jdXJyZW50Q29udGVu
dFZpZXcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00ODUsMTcgKzQ3MywxNyBAQCBXZWJJbnNw
ZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9uYXZpZ2F0
aW9uQmFyLnVwZGF0ZUxheW91dCgpOwogCiAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ3VycmVudFJl
cHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZUV2ZW50U29vbigpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlOiBm
dW5jdGlvbihldmVudCkKKyAgICBfY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9i
amVjdHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9
PSB0aGlzLmN1cnJlbnRDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICB0aGlzLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudFNv
b24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2U6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UoZXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29u
dGVudFZpZXc7CiAKQEAgLTUxMSwxOCArNDk5LDE4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJv
d3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRD
aGFuZ2UpOwogCiAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0
c0RpZENoYW5nZUV2ZW50KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudFZpZXdOYXZp
Z2F0aW9uSXRlbXNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50Vmlld05h
dmlnYXRpb25JdGVtc0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC50
YXJnZXQgIT09IHRoaXMuY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbnRlbnRWaWV3TmF2aWdhdGlvbkl0ZW1zKCk7CiAgICAg
ICAgIHRoaXMuX25hdmlnYXRpb25CYXIudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGllcmFyY2hpY2FsUGF0aENvbXBvbmVudFdhc1NlbGVjdGVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfaGllcmFyY2hpY2FsUGF0aENvbXBvbmVudFdhc1NlbGVjdGVkKGV2ZW50KQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQpOwogCkBA
IC01NDAsNCArNTI4LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9
IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNv
bnRlbnRCcm93c2VyLlN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQtYnJvd3NlciI7CisKK1dlYklu
c3BlY3Rvci5Db250ZW50QnJvd3Nlci5FdmVudCA9IHsKKyAgICBDdXJyZW50UmVwcmVzZW50ZWRP
YmplY3RzRGlkQ2hhbmdlOiAiY29udGVudC1icm93c2VyLWN1cnJlbnQtcmVwcmVzZW50ZWQtb2Jq
ZWN0cy1kaWQtY2hhbmdlIiwKKyAgICBDdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2U6ICJjb250
ZW50LWJyb3dzZXItY3VycmVudC1jb250ZW50LXZpZXctZGlkLWNoYW5nZSIKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxv
d0RPTVRyZWVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3LmpzCmluZGV4IDNkYzBhNmYu
LmYzMjQ2M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRW
aWV3LmpzCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lz
dGVtcyBJbmNvcnBvcmF0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0yNyw0MSArMjgsMzkgQEAKICAqIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5Db250ZW50Rmxvd0RPTVRyZWVDb250ZW50VmlldyA9IGZ1bmN0aW9uKGNvbnRlbnRGbG93KQor
V2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVu
dEZsb3dET01UcmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRl
bnRWaWV3Cit7CisgICAgY29uc3RydWN0b3IoY29udGVudEZsb3cpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChjb250ZW50Rmxvdyk7CiAKLSAgICBXZWJJbnNwZWN0b3IuRE9NVHJlZUNv
bnRlbnRWaWV3LmNhbGwodGhpcywgY29udGVudEZsb3cpOworICAgICAgICBzdXBlcihjb250ZW50
Rmxvdyk7CiAKICAgICAgICAgY29udGVudEZsb3cuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuQ29udGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNBZGRlZCwgdGhpcy5fY29udGVudE5v
ZGVXYXNBZGRlZCwgdGhpcyk7CiAgICAgICAgIGNvbnRlbnRGbG93LmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50LkNvbnRlbnROb2RlV2FzUmVtb3ZlZCwgdGhp
cy5fY29udGVudE5vZGVXYXNSZW1vdmVkLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9jcmVhdGVD
b250ZW50VHJlZXMoKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db250ZW50Rmxvd0RPTVRyZWVDb250
ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db250
ZW50Rmxvd0RPTVRyZWVDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5E
T01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0g
ICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVu
dEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNBZGRlZCwgdGhpcy5fY29udGVudE5vZGVXYXNBZGRl
ZCwgdGhpcyk7CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNSZW1vdmVk
LCB0aGlzLl9jb250ZW50Tm9kZVdhc1JlbW92ZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0
b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5jbG9zZWQuY2FsbCh0aGlzKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGdldFNlYXJjaENvbnRleHROb2RlczogZnVuY3Rpb24oY2FsbGJhY2sp
CisgICAgZ2V0U2VhcmNoQ29udGV4dE5vZGVzKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgY2Fs
bGJhY2sodGhpcy5kb21UcmVlT3V0bGluZS5jaGlsZHJlbi5tYXAoZnVuY3Rpb24odHJlZU91dGxp
bmUpIHsKICAgICAgICAgICAgIHJldHVybiB0cmVlT3V0bGluZS5yZXByZXNlbnRlZE9iamVjdC5p
ZDsKICAgICAgICAgfSkpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAg
X2NyZWF0ZUNvbnRlbnRUcmVlczogZnVuY3Rpb24oKQorICAgIF9jcmVhdGVDb250ZW50VHJlZXMo
KQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnROb2RlcyA9IHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QuY29udGVudE5vZGVzOwogICAgICAgICBmb3IgKHZhciBjb250ZW50Tm9kZSBvZiBjb250ZW50
Tm9kZXMpCkBAIC02OSw5ICs2OCw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd0RPTVRyZWVD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIGRvY3VtZW50VVJMID0gY29u
dGVudE5vZGVzLmxlbmd0aCA/IGNvbnRlbnROb2Rlc1swXS5vd25lckRvY3VtZW50LmRvY3VtZW50
VVJMIDogbnVsbDsKICAgICAgICAgdGhpcy5fcmVzdG9yZVNlbGVjdGVkTm9kZUFmdGVyVXBkYXRl
KGRvY3VtZW50VVJMLCBjb250ZW50Tm9kZXNbMF0pOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nv
bnRlbnROb2RlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50Tm9kZVdhc0Fk
ZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3Bl
Y3Rvci5ET01UcmVlRWxlbWVudChldmVudC5kYXRhLm5vZGUpOwogICAgICAgICBpZiAoIWV2ZW50
LmRhdGEuYmVmb3JlKSB7CkBAIC04Niw5ICs4NSw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Rmxv
d0RPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGluZGV4ICE9PSAtMSk7CiAKICAgICAgICAgdGhpcy5kb21UcmVlT3V0bGluZS5pbnNlcnRDaGls
ZCh0cmVlRWxlbWVudCwgaW5kZXgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRlbnROb2Rl
V2FzUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnROb2RlV2FzUmVtb3ZlZChl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuZG9tVHJlZU91dGxp
bmUuZmluZFRyZWVFbGVtZW50KGV2ZW50LmRhdGEubm9kZSk7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRyZWVFbGVtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Rmxvd1RyZWVFbGVtZW50LmpzCmlu
ZGV4IDI0NjlkYmMuLjdlMjhhNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRGbG93VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dUcmVlRWxlbWVu
dC5qcwpAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3Rl
bXMgSW5jb3Jwb3JhdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApA
QCAtMjcsMTggKzI4LDE2IEBACiAgKiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
Q29udGVudEZsb3dUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2Vi
SW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQgPSBjbGFzcyBDb250ZW50Rmxvd1RyZWVF
bGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAoreworICAgIGNv
bnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cp
OwotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBbV2ViSW5z
cGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rv
ci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LkNvbnRlbnRGbG93SWNvblN0eWxlQ2xhc3NOYW1lXSwg
cmVwcmVzZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsK
KworICAgICAgICBzdXBlcihbV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQuU3R5
bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LkNvbnRlbnRG
bG93SWNvblN0eWxlQ2xhc3NOYW1lXSwgcmVwcmVzZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVw
cmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKIAogICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAg
ICB9CiB9OwogCiBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dUcmVlRWxlbWVudC5Db250ZW50Rmxv
d0ljb25TdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50LWZsb3ctaWNvbiI7Ci0KLVdlYkluc3BlY3Rv
ci5Db250ZW50Rmxvd1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93VHJlZUVsZW1lbnQKLX07Ci0KLVdlYkluc3BlY3Rvci5D
b250ZW50Rmxvd1RyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKaW5kZXggODJiYjg5
Zi4uMTcwZTZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDExICsyMywyNiBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db250ZW50Vmll
dyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAg
aWYgKHRoaXMuY29uc3RydWN0b3IgPT09IFdlYkluc3BlY3Rvci5Db250ZW50VmlldykgewotICAg
ICAgICAvLyBXaGVuIGluc3RhbnRpYXRlZCBkaXJlY3RseSByZXR1cm4gYW4gaW5zdGFuY2Ugb2Yg
YSB0eXBlLWJhc2VkIGNvbmNyZXRlIHN1YmNsYXNzLgorICAgIGNvbnN0cnVjdG9yKHJlcHJlc2Vu
dGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LmlzVmlld2FibGUocmVwcmVzZW50ZWRPYmplY3QpKTsKKworICAgICAgICBzdXBl
cigpOworCisgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50ZWRPYmpl
Y3Q7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKIAorICAgICAgICB0aGlzLl9wYXJlbnRDb250YWlu
ZXIgPSBudWxsOworICAgIH0KKworICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIGNyZWF0ZShy
ZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2Vu
dGVkT2JqZWN0KTsKIAogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuRnJhbWUpCkBAIC05MiwyNSArMTA3LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgIHRocm93ICJDYW4n
dCBtYWtlIGEgQ29udGVudFZpZXcgZm9yIGFuIHVua25vd24gcmVwcmVzZW50ZWRPYmplY3QuIjsK
ICAgICB9CiAKLSAgICAvLyBDb25jcmV0ZSBvYmplY3QgaW5zdGFudGlhdGlvbi4KLSAgICBjb25z
b2xlLmFzc2VydCh0aGlzLmNvbnN0cnVjdG9yICE9PSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcg
JiYgdGhpcyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyk7Ci0gICAgY29uc29s
ZS5hc3NlcnQoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmlzVmlld2FibGUocmVwcmVzZW50ZWRP
YmplY3QpKTsKLQotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3Iu
T2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5P
YmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVz
ZW50ZWRPYmplY3Q7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9wYXJlbnRDb250YWluZXIg
PSBudWxsOwotfTsKLQotLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1
YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJl
Y2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpOwot
Ci1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuaXNWaWV3YWJsZSA9IGZ1bmN0aW9uKHJlcHJlc2Vu
dGVkT2JqZWN0KQorICAgIHN0YXRpYyBpc1ZpZXdhYmxlKHJlcHJlc2VudGVkT2JqZWN0KQogICAg
IHsKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNDUsMTkwICsxNDIsMTg1IEBA
IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdhYmxlID0gZnVuY3Rpb24ocmVwcmVzZW50
ZWRPYmplY3QpCiAgICAgICAgIGlmICh0eXBlb2YgcmVwcmVzZW50ZWRPYmplY3QgPT09ICJzdHJp
bmciIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgU3RyaW5nKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIHJldHVybiBmYWxzZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50LXZpZXciOwotCi1XZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcuRXZlbnQgPSB7Ci0gICAgU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRD
aGFuZ2U6ICJjb250ZW50LXZpZXctc2VsZWN0aW9uLXBhdGgtY29tcG9uZW50cy1kaWQtY2hhbmdl
IiwKLSAgICBTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2U6ICJjb250ZW50
LXZpZXctc3VwcGxlbWVudGFsLXJlcHJlc2VudGVkLW9iamVjdHMtZGlkLWNoYW5nZSIsCi0gICAg
TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlOiAiY29udGVudC12aWV3LW51bWJlci1vZi1z
ZWFyY2gtcmVzdWx0cy1kaWQtY2hhbmdlIiwKLSAgICBOYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2U6
ICJjb250ZW50LXZpZXctbmF2aWdhdGlvbi1pdGVtcy1kaWQtY2hhbmdlIgotfTsKLQotV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHJl
cHJlc2VudGVkT2JqZWN0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZXByZXNlbnRl
ZE9iamVjdDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAg
IHsKICAgICAgICAgLy8gTmF2aWdhdGlvbiBpdGVtcyB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIGJ5
IHRoZSBDb250ZW50QnJvd3NlciBpbnN0YW5jZSwKICAgICAgICAgLy8gbWVhbnQgdG8gYmUgc3Vi
Y2xhc3NlZC4gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIFtdOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFsbG93ZWROYXZpZ2F0aW9uU2lkZWJhclBhbmVscygp
CiAgICAgewogICAgICAgICAvLyBBbGxvdyBhbnkgbmF2aWdhdGlvbiBzaWRlYmFyIHBhbmVsLgog
ICAgICAgICByZXR1cm4gW107Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZWxlbWVudCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBwYXJlbnRDb250YWluZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVu
dENvbnRhaW5lcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB2aXNpYmxlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHZp
c2libGUoZmxhZykKICAgICB7CiAgICAgICAgIHRoaXMuX3Zpc2libGUgPSBmbGFnOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHNjcm9sbGFibGVFbGVtZW50cygpCiAgICAgewogICAgICAgICAv
LyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gW107Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc2hvdWxkS2VlcEVsZW1lbnRzU2Nyb2xsZWRUb0JvdHRvbSgpCiAg
ICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVu
dHMoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAg
ICAgcmV0dXJuIFtdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBsZW1lbnRhbFJlcHJl
c2VudGVkT2JqZWN0cygpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFz
c2VzLgogICAgICAgICByZXR1cm4gW107Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9y
dHNTcGxpdENvbnRlbnRCcm93c2VyKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5
IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAg
dXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBz
aG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVu
dGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9u
KCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3Nl
ZCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0s
CisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZVRv
Q29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29v
a2llKQorICAgIHJlc3RvcmVGcm9tQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIC8vIElt
cGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5Hb0JhY2s6
IGZ1bmN0aW9uKCkKKyAgICBjYW5Hb0JhY2soKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQog
Ci0gICAgY2FuR29Gb3J3YXJkOiBmdW5jdGlvbigpCisgICAgY2FuR29Gb3J3YXJkKCkKICAgICB7
CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIGdvQmFjazogZnVuY3Rpb24oKQorICAgIGdvQmFj
aygpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0s
CisgICAgfQogCi0gICAgZ29Gb3J3YXJkOiBmdW5jdGlvbigpCisgICAgZ29Gb3J3YXJkKCkKICAg
ICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgc3VwcG9ydHNTZWFyY2goKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IG51bWJlck9mU2VhcmNoUmVzdWx0cygpCiAgICAgewogICAgICAgICAvLyBJbXBs
ZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBoYXNQZXJmb3JtZWRTZWFyY2goKQogICAgIHsKICAgICAgICAgLy8gSW1w
bGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IGF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdChyZXZl
YWwpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0s
CisgICAgfQogCi0gICAgcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24ocXVlcnkpCisgICAgcGVyZm9y
bVNlYXJjaChxdWVyeSkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBzZWFyY2hDbGVhcmVkOiBmdW5jdGlvbigpCisgICAg
c2VhcmNoQ2xlYXJlZCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFz
c2VzLgotICAgIH0sCisgICAgfQogCi0gICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uOiBmdW5j
dGlvbigpCisgICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAgIC8v
IEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0s
CisgICAgfQogCi0gICAgcmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5n
ZUZvY3VzKQorICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAg
IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0K
IAotICAgIHJldmVhbE5leHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQorICAg
IHJldmVhbE5leHRTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpCiAgICAgewogICAgICAgICAvLyBJ
bXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db250
ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGU7CitXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiY29udGVudC12
aWV3IjsKKworV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50ID0geworICAgIFNlbGVjdGlv
blBhdGhDb21wb25lbnRzRGlkQ2hhbmdlOiAiY29udGVudC12aWV3LXNlbGVjdGlvbi1wYXRoLWNv
bXBvbmVudHMtZGlkLWNoYW5nZSIsCisgICAgU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3Rz
RGlkQ2hhbmdlOiAiY29udGVudC12aWV3LXN1cHBsZW1lbnRhbC1yZXByZXNlbnRlZC1vYmplY3Rz
LWRpZC1jaGFuZ2UiLAorICAgIE51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZTogImNvbnRl
bnQtdmlldy1udW1iZXItb2Ytc2VhcmNoLXJlc3VsdHMtZGlkLWNoYW5nZSIsCisgICAgTmF2aWdh
dGlvbkl0ZW1zRGlkQ2hhbmdlOiAiY29udGVudC12aWV3LW5hdmlnYXRpb24taXRlbXMtZGlkLWNo
YW5nZSIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCmluZGV4IGMxZWMxMTAu
LjEyMzg4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Q29udGFpbmVyLmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw2NiArMjMs
NTggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIgPSBmdW5jdGlvbihlbGVtZW50KQorV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyID0gY2xhc3MgQ29udGVudFZpZXdDb250YWluZXIgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0
byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAg
Ly8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGVsZW1l
bnQpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBl
bGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLlN0
eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLl9iYWNrRm9yd2FyZExpc3QgPSBbXTsKICAg
ICAgICAgdGhpcy5fY3VycmVudEluZGV4ID0gLTE7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXdDb250YWluZXIuU3R5bGVDbGFzc05hbWUgPSAiY29udGVudC12aWV3LWNvbnRhaW5lciI7
Ci0KLVdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudCA9IHsKLSAgICBDdXJy
ZW50Q29udGVudFZpZXdEaWRDaGFuZ2U6ICJjb250ZW50LXZpZXctY29udGFpbmVyLWN1cnJlbnQt
Y29udGVudC12aWV3LWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXdD
b250YWluZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXdDb250YWluZXIsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxl
bWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBjdXJyZW50SW5kZXgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2N1cnJlbnRJbmRleDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBiYWNrRm9yd2FyZExpc3Qo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2JhY2tGb3J3YXJkTGlzdDsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBjdXJyZW50Q29udGVudFZpZXcoKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2N1cnJlbnRJbmRleCA8IDAgfHwgdGhpcy5fY3VycmVudEluZGV4ID4gdGhpcy5fYmFj
a0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2JhY2tGb3J3YXJkTGlzdFt0aGlzLl9jdXJyZW50SW5kZXhdLmNvbnRl
bnRWaWV3OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGN1cnJlbnRCYWNrRm9yd2FyZEVudHJ5
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPCAwIHx8IHRoaXMuX2N1
cnJlbnRJbmRleCA+IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxKQogICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiB0aGlzLl9iYWNrRm9yd2FyZExpc3RbdGhp
cy5fY3VycmVudEluZGV4XTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVu
Y3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENv
bnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIGlmIChjdXJyZW50
Q29udGVudFZpZXcpCiAgICAgICAgICAgICBjdXJyZW50Q29udGVudFZpZXcudXBkYXRlTGF5b3V0
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0
OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCwgb25seUV4aXN0aW5nKQorICAgIGNvbnRlbnRW
aWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QsIG9ubHlFeGlzdGluZykK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAg
ICAgaWYgKCFyZXByZXNlbnRlZE9iamVjdCkKQEAgLTEwOSw5ICsxMDEsOSBAQCBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRyeSB7CiAg
ICAgICAgICAgICAvLyBObyBleGlzdGluZyBjb250ZW50IHZpZXcgZm91bmQsIG1ha2UgYSBuZXcg
b25lLgotICAgICAgICAgICAgY29udGVudFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3KHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAgICAgICAgIGNvbnRlbnRWaWV3ID0gV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LmNyZWF0ZShyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIH0g
Y2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7CisgICAgICAgICAgICBj
b25zb2xlLmVycm9yKGUsIGUuc3RhY2spOwogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAg
ICAgIH0KIApAQCAtMTIxLDkgKzExMyw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRh
aW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0Ll9fY29udGVudFZp
ZXdzLnB1c2goY29udGVudFZpZXcpOwogCiAgICAgICAgIHJldHVybiBjb250ZW50VmlldzsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0OiBm
dW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBzaG93Q29udGVudFZpZXdGb3JSZXByZXNl
bnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIHZhciBjb250ZW50
VmlldyA9IHRoaXMuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9i
amVjdCk7CiAgICAgICAgIGlmICghY29udGVudFZpZXcpCkBAIC0xMzIsOSArMTI0LDkgQEAgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcpOwogCiAgICAgICAgIHJldHVybiBjb250ZW50
VmlldzsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dDb250ZW50VmlldzogZnVuY3Rpb24oY29u
dGVudFZpZXcsIGNvb2tpZSkKKyAgICBzaG93Q29udGVudFZpZXcoY29udGVudFZpZXcsIGNvb2tp
ZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3KTsKICAgICAgICAgaWYgKCEoY29udGVudFZpZXcgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpKQpAQCAtMTUwLDcgKzE0Miw3IEBAIFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZh
ciBwcm92aXNpb25hbEVudHJ5ID0gbmV3IFdlYkluc3BlY3Rvci5CYWNrRm9yd2FyZEVudHJ5KGNv
bnRlbnRWaWV3LCBjb29raWUpOwogICAgICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiB3ZSB3
b3VsZCBoYXZlIGFkZGVkIGFuIGlkZW50aWNhbCBiYWNrL2ZvcndhcmQgbGlzdCBlbnRyeS4KICAg
ICAgICAgaWYgKGN1cnJlbnRFbnRyeSAmJiBjdXJyZW50RW50cnkuY29udGVudFZpZXcgPT09IGNv
bnRlbnRWaWV3ICYmIE9iamVjdC5zaGFsbG93RXF1YWwocHJvdmlzaW9uYWxFbnRyeS5jb29raWUs
IGN1cnJlbnRFbnRyeS5jb29raWUpKSB7Ci0gICAgICAgICAgICBjb25zdCBzaG91bGRDYWxsU2hv
d24gPSBmYWxzZTsKKyAgICAgICAgICAgIHZhciBzaG91bGRDYWxsU2hvd24gPSBmYWxzZTsKICAg
ICAgICAgICAgIGN1cnJlbnRFbnRyeS5wcmVwYXJlVG9TaG93KHNob3VsZENhbGxTaG93bik7CiAg
ICAgICAgICAgICByZXR1cm4gY3VycmVudEVudHJ5LmNvbnRlbnRWaWV3OwogICAgICAgICB9CkBA
IC0xODMsOSArMTc1LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5zaG93QmFja0ZvcndhcmRFbnRyeUZvckluZGV4KG5ld0lu
ZGV4KTsKIAogICAgICAgICByZXR1cm4gY29udGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBzaG93QmFja0ZvcndhcmRFbnRyeUZvckluZGV4OiBmdW5jdGlvbihpbmRleCkKKyAgICBzaG93
QmFja0ZvcndhcmRFbnRyeUZvckluZGV4KGluZGV4KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoaW5kZXggPj0gMCAmJiBpbmRleCA8PSB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3Ro
IC0gMSk7CiAgICAgICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPiB0aGlzLl9iYWNrRm9yd2Fy
ZExpc3QubGVuZ3RoIC0gMSkKQEAgLTIwOSw5ICsyMDEsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fc2hvd0VudHJ5
KGN1cnJlbnRFbnRyeSwgZmFsc2UpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29u
dGVudFZpZXdEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVwbGFjZUNvbnRlbnRW
aWV3OiBmdW5jdGlvbihvbGRDb250ZW50VmlldywgbmV3Q29udGVudFZpZXcpCisgICAgcmVwbGFj
ZUNvbnRlbnRWaWV3KG9sZENvbnRlbnRWaWV3LCBuZXdDb250ZW50VmlldykKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KG9sZENvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3KTsKICAgICAgICAgaWYgKCEob2xkQ29udGVudFZpZXcgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcpKQpAQCAtMjUwLDkgKzI0Miw5IEBAIFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9z
aG93RW50cnkodGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeSwgdHJ1ZSk7CiAgICAgICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdD
b250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKTsKICAgICAgICAgfQot
ICAgIH0sCisgICAgfQogCi0gICAgY2xvc2VBbGxDb250ZW50Vmlld3NPZlByb3RvdHlwZTogZnVu
Y3Rpb24oY29uc3RydWN0b3IpCisgICAgY2xvc2VBbGxDb250ZW50Vmlld3NPZlByb3RvdHlwZShj
b25zdHJ1Y3RvcikKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxl
bmd0aCkgewogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY3VycmVudEluZGV4ID09
PSAtMSk7CkBAIC0zMDYsOSArMjk4LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFp
bmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3Nob3dFbnRyeShjdXJyZW50RW50
cnksIHRydWUpOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0Rp
ZENoYW5nZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlQWxsQ29udGVu
dFZpZXdzOiBmdW5jdGlvbigpCisgICAgY2xvc2VBbGxDb250ZW50Vmlld3MoKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3RoKSB7CiAgICAgICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl9jdXJyZW50SW5kZXggPT09IC0xKTsKQEAgLTMyNyw2NSArMzE5
LDY1IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IC0xOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5D
dXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgY2FuR29C
YWNrOiBmdW5jdGlvbigpCisgICAgY2FuR29CYWNrKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9jdXJyZW50SW5kZXggPiAwOwotICAgIH0sCisgICAgfQogCi0gICAgY2FuR29Gb3J3YXJk
OiBmdW5jdGlvbigpCisgICAgY2FuR29Gb3J3YXJkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9jdXJyZW50SW5kZXggPCB0aGlzLl9iYWNrRm9yd2FyZExpc3QubGVuZ3RoIC0gMTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGdvQmFjazogZnVuY3Rpb24oKQorICAgIGdvQmFjaygpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuY2FuR29CYWNrKCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHRoaXMuc2hvd0JhY2tGb3J3YXJkRW50cnlGb3JJbmRleCh0aGlzLl9jdXJyZW50SW5k
ZXggLSAxKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAg
IGdvRm9yd2FyZCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuY2FuR29Gb3J3YXJkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuc2hvd0JhY2tGb3J3YXJkRW50cnlGb3JJ
bmRleCh0aGlzLl9jdXJyZW50SW5kZXggKyAxKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3du
OiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRFbnRy
eSA9IHRoaXMuY3VycmVudEJhY2tGb3J3YXJkRW50cnk7CiAgICAgICAgIGlmICghY3VycmVudEVu
dHJ5KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3Nob3dFbnRyeShjdXJy
ZW50RW50cnksIHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigp
CisgICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50RW50cnkgPSB0aGlzLmN1
cnJlbnRCYWNrRm9yd2FyZEVudHJ5OwogICAgICAgICBpZiAoIWN1cnJlbnRFbnRyeSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9oaWRlRW50cnkoY3VycmVudEVudHJ5KTsK
LSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9hZGRDb250ZW50Vmlld0Vs
ZW1lbnQ6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAgIF9hZGRDb250ZW50Vmlld0VsZW1lbnQo
Y29udGVudFZpZXcpCiAgICAgewogICAgICAgICBpZiAoY29udGVudFZpZXcuZWxlbWVudC5wYXJl
bnROb2RlICE9PSB0aGlzLl9lbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZChjb250ZW50Vmlldy5lbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZW1v
dmVDb250ZW50Vmlld0VsZW1lbnQ6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAgIF9yZW1vdmVD
b250ZW50Vmlld0VsZW1lbnQoY29udGVudFZpZXcpCiAgICAgewogICAgICAgICBpZiAoY29udGVu
dFZpZXcuZWxlbWVudC5wYXJlbnROb2RlKQogICAgICAgICAgICAgY29udGVudFZpZXcuZWxlbWVu
dC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGNvbnRlbnRWaWV3LmVsZW1lbnQpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2Rpc2Fzc29jaWF0ZUZyb21Db250ZW50VmlldzogZnVuY3Rpb24oY29udGVu
dFZpZXcpCisgICAgX2Rpc2Fzc29jaWF0ZUZyb21Db250ZW50Vmlldyhjb250ZW50VmlldykKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb250ZW50Vmlldy52aXNpYmxlKTsKIApAQCAt
Mzk4LDE3ICszOTAsMTcgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QuX19jb250ZW50Vmlld3MucmVtb3Zl
KGNvbnRlbnRWaWV3KTsKIAogICAgICAgICBjb250ZW50Vmlldy5jbG9zZWQoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9zaG93RW50cnk6IGZ1bmN0aW9uKGVudHJ5LCBzaG91bGRDYWxsU2hvd24p
CisgICAgX3Nob3dFbnRyeShlbnRyeSwgc2hvdWxkQ2FsbFNob3duKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoZW50cnkgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRF
bnRyeSk7CiAKICAgICAgICAgdGhpcy5fYWRkQ29udGVudFZpZXdFbGVtZW50KGVudHJ5LmNvbnRl
bnRWaWV3KTsKICAgICAgICAgZW50cnkucHJlcGFyZVRvU2hvdyhzaG91bGRDYWxsU2hvd24pOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2hpZGVFbnRyeTogZnVuY3Rpb24oZW50cnkpCisgICAgX2hp
ZGVFbnRyeShlbnRyeSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGVudHJ5IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkpOwogCkBAIC00MTcsNCArNDA5LDgg
QEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9IHsKICAgICB9
CiB9OwogCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29udGFpbmVyLlN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQtdmlldy1jb250YWluZXIi
OworCitXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIuRXZlbnQgPSB7CisgICAgQ3Vy
cmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlOiAiY29udGVudC12aWV3LWNvbnRhaW5lci1jdXJyZW50
LWNvbnRlbnQtdmlldy1kaWQtY2hhbmdlIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnUuanMKaW5kZXggZmZjOWU2
NS4uMGJmYWQzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29udGV4dE1lbnUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnUuanMKQEAgLTEsNiArMSw2IEBACiAvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI5LDM5ICsyOSw0NyBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtID0gZnVuY3Rpb24o
dG9wTGV2ZWxNZW51LCB0eXBlLCBsYWJlbCwgZGlzYWJsZWQsIGNoZWNrZWQpCitXZWJJbnNwZWN0
b3IuQ29udGV4dE1lbnVJdGVtID0gY2xhc3MgQ29udGV4dE1lbnVJdGVtIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogeworICAgIGNvbnN0cnVjdG9yKHRvcExldmVsTWVudSwgdHlwZSwgbGFi
ZWwsIGRpc2FibGVkLCBjaGVja2VkKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKKwogICAgICAg
ICB0aGlzLl90eXBlID0gdHlwZTsKICAgICAgICAgdGhpcy5fbGFiZWwgPSBsYWJlbDsKICAgICAg
ICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDsKICAgICAgICAgdGhpcy5fY2hlY2tlZCA9IGNo
ZWNrZWQ7CiAgICAgICAgIHRoaXMuX2NvbnRleHRNZW51ID0gdG9wTGV2ZWxNZW51OworCiAgICAg
ICAgIGlmICh0eXBlID09PSAiaXRlbSIgfHwgdHlwZSA9PT0gImNoZWNrYm94IikKICAgICAgICAg
ICAgIHRoaXMuX2lkID0gdG9wTGV2ZWxNZW51Lm5leHRJZCgpOwotfTsKKyAgICB9CiAKLVdlYklu
c3BlY3Rvci5Db250ZXh0TWVudUl0ZW0ucHJvdG90eXBlID0gewotICAgIGlkOiBmdW5jdGlvbigp
CisgICAgLy8gUHVibGljCisKKyAgICBpZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
aWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0eXBlOiBmdW5jdGlvbigpCisgICAgdHlwZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9LAorICAgIH0KIAotICAgIGlz
RW5hYmxlZDogZnVuY3Rpb24oKQorICAgIGlzRW5hYmxlZCgpCiAgICAgewogICAgICAgICByZXR1
cm4gIXRoaXMuX2Rpc2FibGVkOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0RW5hYmxlZDogZnVu
Y3Rpb24oZW5hYmxlZCkKKyAgICBzZXRFbmFibGVkKGVuYWJsZWQpCiAgICAgewogICAgICAgICB0
aGlzLl9kaXNhYmxlZCA9ICFlbmFibGVkOwotICAgIH0sCisgICAgfQogCi0gICAgX2J1aWxkRGVz
Y3JpcHRvcjogZnVuY3Rpb24oKQorICAgIC8vIFByaXZhdGUKKworICAgIF9idWlsZERlc2NyaXB0
b3IoKQogICAgIHsKICAgICAgICAgc3dpdGNoICh0aGlzLl90eXBlKSB7CiAgICAgICAgIGNhc2Ug
Iml0ZW0iOgpAQCAtNzQsOTEgKzgyLDEwOSBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVt
LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJ
dGVtID0gZnVuY3Rpb24odG9wTGV2ZWxNZW51LCBsYWJlbCwgZGlzYWJsZWQpCitXZWJJbnNwZWN0
b3IuQ29udGV4dFN1Yk1lbnVJdGVtID0gY2xhc3MgQ29udGV4dFN1Yk1lbnVJdGVtIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbQogewotICAgIFdlYkluc3BlY3Rvci5Db250ZXh0
TWVudUl0ZW0uY2FsbCh0aGlzLCB0b3BMZXZlbE1lbnUsICJzdWJNZW51IiwgbGFiZWwsIGRpc2Fi
bGVkKTsKKyAgICBjb25zdHJ1Y3Rvcih0b3BMZXZlbE1lbnUsIGxhYmVsLCBkaXNhYmxlZCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKHRvcExldmVsTWVudSwgInN1Yk1lbnUiLCBsYWJlbCwgZGlzYWJs
ZWQpOworCiAgICAgICAgIHRoaXMuX2l0ZW1zID0gW107Ci19OworICAgIH0KIAotV2ViSW5zcGVj
dG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUgPSB7Ci0gICAgYXBwZW5kSXRlbTogZnVu
Y3Rpb24obGFiZWwsIGhhbmRsZXIsIGRpc2FibGVkKQorICAgIC8vIFB1YmxpYworCisgICAgYXBw
ZW5kSXRlbShsYWJlbCwgaGFuZGxlciwgZGlzYWJsZWQpCiAgICAgewogICAgICAgICB2YXIgaXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtKHRoaXMuX2NvbnRleHRNZW51LCAi
aXRlbSIsIGxhYmVsLCBkaXNhYmxlZCk7CiAgICAgICAgIHRoaXMuX3B1c2hJdGVtKGl0ZW0pOwog
ICAgICAgICB0aGlzLl9jb250ZXh0TWVudS5fc2V0SGFuZGxlcihpdGVtLmlkKCksIGhhbmRsZXIp
OwogICAgICAgICByZXR1cm4gaXRlbTsKLSAgICB9LAorICAgIH0KIAotICAgIGFwcGVuZFN1Yk1l
bnVJdGVtOiBmdW5jdGlvbihsYWJlbCwgZGlzYWJsZWQpCisgICAgYXBwZW5kU3ViTWVudUl0ZW0o
bGFiZWwsIGRpc2FibGVkKQogICAgIHsKICAgICAgICAgdmFyIGl0ZW0gPSBuZXcgV2ViSW5zcGVj
dG9yLkNvbnRleHRTdWJNZW51SXRlbSh0aGlzLl9jb250ZXh0TWVudSwgbGFiZWwsIGRpc2FibGVk
KTsKICAgICAgICAgdGhpcy5fcHVzaEl0ZW0oaXRlbSk7CiAgICAgICAgIHJldHVybiBpdGVtOwot
ICAgIH0sCisgICAgfQogCi0gICAgYXBwZW5kQ2hlY2tib3hJdGVtOiBmdW5jdGlvbihsYWJlbCwg
aGFuZGxlciwgY2hlY2tlZCwgZGlzYWJsZWQpCisgICAgYXBwZW5kQ2hlY2tib3hJdGVtKGxhYmVs
LCBoYW5kbGVyLCBjaGVja2VkLCBkaXNhYmxlZCkKICAgICB7CiAgICAgICAgIHZhciBpdGVtID0g
bmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0odGhpcy5fY29udGV4dE1lbnUsICJjaGVj
a2JveCIsIGxhYmVsLCBkaXNhYmxlZCwgY2hlY2tlZCk7CiAgICAgICAgIHRoaXMuX3B1c2hJdGVt
KGl0ZW0pOwogICAgICAgICB0aGlzLl9jb250ZXh0TWVudS5fc2V0SGFuZGxlcihpdGVtLmlkKCks
IGhhbmRsZXIpOwogICAgICAgICByZXR1cm4gaXRlbTsKLSAgICB9LAorICAgIH0KIAotICAgIGFw
cGVuZFNlcGFyYXRvcjogZnVuY3Rpb24oKQorICAgIGFwcGVuZFNlcGFyYXRvcigpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5faXRlbXMubGVuZ3RoKQogICAgICAgICAgICAgdGhpcy5fcGVuZGlu
Z1NlcGFyYXRvciA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcHVzaEl0ZW06IGZ1bmN0
aW9uKGl0ZW0pCisgICAgX3B1c2hJdGVtKGl0ZW0pCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
cGVuZGluZ1NlcGFyYXRvcikgewogICAgICAgICAgICAgdGhpcy5faXRlbXMucHVzaChuZXcgV2Vi
SW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSh0aGlzLl9jb250ZXh0TWVudSwgInNlcGFyYXRvciIp
KTsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9wZW5kaW5nU2VwYXJhdG9yOwogICAgICAgICB9
CiAgICAgICAgIHRoaXMuX2l0ZW1zLnB1c2goaXRlbSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBp
c0VtcHR5OiBmdW5jdGlvbigpCisgICAgaXNFbXB0eSgpCiAgICAgewogICAgICAgICByZXR1cm4g
IXRoaXMuX2l0ZW1zLmxlbmd0aDsKLSAgICB9LAorICAgIH0KIAotICAgIF9idWlsZERlc2NyaXB0
b3I6IGZ1bmN0aW9uKCkKKyAgICBfYnVpbGREZXNjcmlwdG9yKCkKICAgICB7CiAgICAgICAgIHZh
ciByZXN1bHQgPSB7IHR5cGU6ICJzdWJNZW51IiwgbGFiZWw6IHRoaXMuX2xhYmVsLCBlbmFibGVk
OiAhdGhpcy5fZGlzYWJsZWQsIHN1Ykl0ZW1zOiBbXSB9OwogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuX2l0ZW1zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgcmVzdWx0LnN1Ykl0
ZW1zLnB1c2godGhpcy5faXRlbXNbaV0uX2J1aWxkRGVzY3JpcHRvcigpKTsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGV4
dE1lbnVJdGVtLnByb3RvdHlwZQorICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dSA9IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRl
bS5jYWxsKHRoaXMsIHRoaXMsICIiKTsKK1dlYkluc3BlY3Rvci5Db250ZXh0TWVudSA9IGNsYXNz
IENvbnRleHRNZW51IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbQorewor
ICAgIGNvbnN0cnVjdG9yKGV2ZW50KSB7CisgICAgICAgIHN1cGVyKHRoaXMsICIiKTsKKwogICAg
ICAgICB0aGlzLl9ldmVudCA9IGV2ZW50OwogICAgICAgICB0aGlzLl9oYW5kbGVycyA9IHt9Owog
ICAgICAgICB0aGlzLl9pZCA9IDA7Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLkNvbnRleHRN
ZW51LnByb3RvdHlwZSA9IHsKKyAgICAvLyBTdGF0aWMKKyAgICAKKyAgICBzdGF0aWMgY29udGV4
dE1lbnVJdGVtU2VsZWN0ZWQoaWQpCisgICAgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkNv
bnRleHRNZW51Ll9sYXN0Q29udGV4dE1lbnUpCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuQ29u
dGV4dE1lbnUuX2xhc3RDb250ZXh0TWVudS5faXRlbVNlbGVjdGVkKGlkKTsKKyAgICB9CisKKyAg
ICBzdGF0aWMgY29udGV4dE1lbnVDbGVhcmVkKCkKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiBV
bmZvcnR1bmF0ZWx5LCBjb250ZXh0TWVudUNsZWFyZWQgaXMgaW52b2tlZCBiZXR3ZWVuIHNob3cg
YW5kIGl0ZW0gc2VsZWN0ZWQKKyAgICAgICAgLy8gc28gd2UgY2FuJ3QgZGVsZXRlIGxhc3QgbWVu
dSBvYmplY3QgZnJvbSBXZWJJbnNwZWN0b3IuIEZpeCB0aGUgY29udHJhY3QuCisgICAgfQogCiAg
ICAgLy8gUHVibGljCiAKLSAgICBuZXh0SWQ6IGZ1bmN0aW9uKCkKKyAgICBuZXh0SWQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lkKys7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93
OiBmdW5jdGlvbigpCisgICAgc2hvdygpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9ldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpOwogCiAgICAgICAgIHZhciBtZW51T2Jq
ZWN0ID0gdGhpcy5fYnVpbGREZXNjcmlwdG9yKCk7CiAKICAgICAgICAgaWYgKG1lbnVPYmplY3Qu
bGVuZ3RoKSB7Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuX2NvbnRleHRNZW51ID0gdGhpczsK
KyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5fbGFzdENvbnRleHRNZW51ID0g
dGhpczsKKwogICAgICAgICAgICAgaWYgKHRoaXMuX2V2ZW50LnR5cGUgIT09ICJjb250ZXh0bWVu
dSIgJiYgdHlwZW9mIEluc3BlY3RvckZyb250ZW5kSG9zdC5kaXNwYXRjaEV2ZW50QXNDb250ZXh0
TWVudUV2ZW50ID09PSAiZnVuY3Rpb24iKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5fbWVudU9i
amVjdCA9IG1lbnVPYmplY3Q7CiAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnQudGFyZ2V0LmFk
ZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcywgdHJ1ZSk7CkBAIC0xNjYsNzkgKzE5
Miw0MSBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNob3dDb250
ZXh0TWVudSh0aGlzLl9ldmVudCwgbWVudU9iamVjdCk7CiAgICAgICAgIH0KKwogICAgICAgICBp
ZiAodGhpcy5fZXZlbnQpCiAgICAgICAgICAgICB0aGlzLl9ldmVudC5zdG9wSW1tZWRpYXRlUHJv
cGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgaGFu
ZGxlRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUV2ZW50KGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5fZXZlbnQudGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNvbnRleHRt
ZW51IiwgdGhpcywgdHJ1ZSk7CiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5zaG93Q29u
dGV4dE1lbnUoZXZlbnQsIHRoaXMuX21lbnVPYmplY3QpOwogICAgICAgICBkZWxldGUgdGhpcy5f
bWVudU9iamVjdDsKIAogICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsK
LSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9zZXRIYW5kbGVyOiBmdW5j
dGlvbihpZCwgaGFuZGxlcikKKyAgICBfc2V0SGFuZGxlcihpZCwgaGFuZGxlcikKICAgICB7CiAg
ICAgICAgIGlmIChoYW5kbGVyKQogICAgICAgICAgICAgdGhpcy5faGFuZGxlcnNbaWRdID0gaGFu
ZGxlcjsKLSAgICB9LAorICAgIH0KIAotICAgIF9idWlsZERlc2NyaXB0b3I6IGZ1bmN0aW9uKCkK
KyAgICBfYnVpbGREZXNjcmlwdG9yKCkKICAgICB7CiAgICAgICAgIHZhciByZXN1bHQgPSBbXTsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9pdGVtcy5sZW5ndGg7ICsraSkKICAg
ICAgICAgICAgIHJlc3VsdC5wdXNoKHRoaXMuX2l0ZW1zW2ldLl9idWlsZERlc2NyaXB0b3IoKSk7
CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaXRlbVNlbGVj
dGVkOiBmdW5jdGlvbihpZCkKKyAgICBfaXRlbVNlbGVjdGVkKGlkKQogICAgIHsKICAgICAgICAg
aWYgKHRoaXMuX2hhbmRsZXJzW2lkXSkKICAgICAgICAgICAgIHRoaXMuX2hhbmRsZXJzW2lkXS5j
YWxsKHRoaXMpOwotICAgIH0sCi0KLSAgICBhcHBlbmRBcHBsaWNhYmxlSXRlbXM6IGZ1bmN0aW9u
KHRhcmdldCkKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgV2ViSW5zcGVjdG9y
LkNvbnRleHRNZW51Ll9wcm92aWRlcnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBw
cm92aWRlciA9IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5fcHJvdmlkZXJzW2ldOwotICAgICAg
ICAgICAgdGhpcy5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAgICAgIHByb3ZpZGVyLmFwcGVu
ZEFwcGxpY2FibGVJdGVtcyh0aGlzLl9ldmVudCwgdGhpcywgdGFyZ2V0KTsKLSAgICAgICAgICAg
IHRoaXMuYXBwZW5kU2VwYXJhdG9yKCk7CiAgICAgfQotICAgIH0sCi0KLSAgICBfX3Byb3RvX186
IFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0ucHJvdG90eXBlCi19OwotCi1XZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUuUHJvdmlkZXIgPSBmdW5jdGlvbigpCi17Ci19OwotCi1XZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnUuUHJvdmlkZXIucHJvdG90eXBlID0gewotICAgIGFwcGVuZEFwcGxp
Y2FibGVJdGVtczogZnVuY3Rpb24oZXZlbnQsIGNvbnRleHRNZW51LCB0YXJnZXQpIHsgfQotfTsK
LQotV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnJlZ2lzdGVyUHJvdmlkZXIgPSBmdW5jdGlvbihw
cm92aWRlcikKLXsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUuX3Byb3ZpZGVycy5wdXNo
KHByb3ZpZGVyKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5fcHJvdmlkZXJzID0g
W107Ci0KLVdlYkluc3BlY3Rvci5jb250ZXh0TWVudUl0ZW1TZWxlY3RlZCA9IGZ1bmN0aW9uKGlk
KQotewotICAgIGlmIChXZWJJbnNwZWN0b3IuX2NvbnRleHRNZW51KQotICAgICAgICBXZWJJbnNw
ZWN0b3IuX2NvbnRleHRNZW51Ll9pdGVtU2VsZWN0ZWQoaWQpOwotfTsKLQotV2ViSW5zcGVjdG9y
LmNvbnRleHRNZW51Q2xlYXJlZCA9IGZ1bmN0aW9uKCkKLXsKLSAgICAvLyBGSVhNRTogVW5mb3J0
dW5hdGVseSwgY29udGV4dE1lbnVDbGVhcmVkIGlzIGludm9rZWQgYmV0d2VlbiBzaG93IGFuZCBp
dGVtIHNlbGVjdGVkCi0gICAgLy8gc28gd2UgY2FuJ3QgZGVsZXRlIGxhc3QgbWVudSBvYmplY3Qg
ZnJvbSBXZWJJbnNwZWN0b3IuIEZpeCB0aGUgY29udHJhY3QuCiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRvb2xiYXJJdGVt
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udHJvbFRv
b2xiYXJJdGVtLmpzCmluZGV4IDE0OTdjMmIuLjU2NWQ5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRyb2xUb29sYmFySXRlbS5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250cm9sVG9v
bGJhckl0ZW0uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDE5ICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db250cm9sVG9vbGJhckl0ZW0gPSBmdW5jdGlv
bihpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpCitX
ZWJJbnNwZWN0b3IuQ29udHJvbFRvb2xiYXJJdGVtID0gY2xhc3MgQ29udHJvbFRvb2xiYXJJdGVt
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtCiB7Ci0gICAgV2ViSW5z
cGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLmNhbGwodGhpcywgaWRlbnRpZmllciwgdG9vbFRp
cCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBmYWxzZSk7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuQ29udHJvbFRvb2xiYXJJdGVtLlN0eWxlQ2xhc3NOYW1lID0gImNvbnRyb2wiOwotCi1X
ZWJJbnNwZWN0b3IuQ29udHJvbFRvb2xiYXJJdGVtLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnRyb2xUb29sYmFySXRlbSwKKyAgICBjb25zdHJ1Y3Rvcihp
ZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpCisgICAg
eworICAgICAgICBzdXBlcihpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwg
aW1hZ2VIZWlnaHQsIGZhbHNlKTsKKyAgICB9CiAKLSAgICAvLyBQcml2YXRlCisgICAgLy8gUHJv
dGVjdGVkCiAKLSAgICBfYWRkaXRpb25hbENsYXNzTmFtZXM6IFtXZWJJbnNwZWN0b3IuQ29udHJv
bFRvb2xiYXJJdGVtLlN0eWxlQ2xhc3NOYW1lXSwKKyAgICBnZXQgYWRkaXRpb25hbENsYXNzTmFt
ZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFsiY29udHJvbCJdOworICAgIH0KIH07Ci0KLVdl
Ykluc3BlY3Rvci5Db250cm9sVG9vbGJhckl0ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVu
dFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29r
aWVTdG9yYWdlQ29udGVudFZpZXcuanMKaW5kZXggM2ExMGQ1Zi4uY2FhMzc5M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3Jh
Z2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI4ICsyMywyNSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db29r
aWVTdG9yYWdlQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYklu
c3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcgPSBjbGFzcyBDb29raWVTdG9yYWdlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKK3sKKyAgICBjb25zdHJ1
Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250
ZW50Vmlldy5jYWxsKHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0KTsKIAogICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3
LlN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZSgpOwotfTsKLQotV2ViSW5z
cGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJjb29raWUt
c3RvcmFnZSI7Ci0KLVdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRl
bnRWaWV3LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGFsbG93ZWROYXZpZ2F0
aW9uU2lkZWJhclBhbmVscygpCiAgICAgewogICAgICAgICByZXR1cm4gW1dlYkluc3BlY3Rvci5y
ZXNvdXJjZVNpZGViYXJQYW5lbC5pZGVudGlmaWVyXTsKLSAgICB9LAorICAgIH0KIAotICAgIHVw
ZGF0ZTogZnVuY3Rpb24oKQorICAgIHVwZGF0ZSgpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBj
YWxsYmFjayhlcnJvciwgY29va2llcykKICAgICAgICAgewpAQCAtNTUsMzEgKzUyLDMzIEBAIFdl
Ykluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGhpcy5fcmVidWlsZFRhYmxlKCk7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgbm90IGJlIGhlcmUgYW5kIGl0IHNob3VsZCBiZSBpbiBhIG1hbmFnZXIu
CisgICAgICAgIC8vIFRoaXMgZmlsZSBsZWFrcyB0aGUgcHJvdG9jb2wgYmFkbHkuCiAgICAgICAg
IFBhZ2VBZ2VudC5nZXRDb29raWVzKGNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCisgICAg
fQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZCkKICAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBm
dW5jdGlvbihjb29raWUpCisgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAg
IGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5Db29raWVT
dG9yYWdlOwogICAgICAgICBjb29raWUuaG9zdCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaG9z
dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkKICAgICAgICAgICAgIHJldHVybiBbXTsKICAg
ICAgICAgcmV0dXJuIFt0aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250YWluZXJdOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3JlYnVpbGRUYWJsZTogZnVuY3Rpb24oKQor
ICAgIF9yZWJ1aWxkVGFibGUoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IElmIHRoZXJlIGFy
ZSBubyBjb29raWVzLCBkbyB3ZSB3YW50IHRvIHNob3cgYW4gZW1wdHkgZGF0YWdyaWQsIG9yIGRv
IHNvbWV0aGluZyBsaWtlIHRoZSBvbGQKICAgICAgICAgLy8gaW5zcGVjdG9yIGFuZCBzaG93IHNv
bWUgdGV4dCBzYXlpbmcgdGhlcmUgYXJlIG5vIGNvb2tpZXM/CkBAIC0xMzEsOCArMTMwLDggQEAg
V2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2RhdGFHcmlkKTsKICAgICAgICAgdGhpcy5fZGF0YUdy
aWQucmVtb3ZlQ2hpbGRyZW4oKTsKIAorICAgICAgICB2YXIgY2hlY2ttYXJrID0gIlx1MjcxMyI7
CiAgICAgICAgIGZvciAodmFyIGNvb2tpZSBvZiB0aGlzLl9jb29raWVzKSB7Ci0gICAgICAgICAg
ICBjb25zdCBjaGVja21hcmsgPSAiXHUyNzEzIjsKICAgICAgICAgICAgIHZhciBkYXRhID0gewog
ICAgICAgICAgICAgICAgICJuYW1lIjogY29va2llLm5hbWUsCiAgICAgICAgICAgICAgICAgInZh
bHVlIjogY29va2llLnZhbHVlLApAQCAtMTQ0LDcgKzE0Myw3IEBAIFdlYkluc3BlY3Rvci5Db29r
aWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICJzZWN1
cmUiOiBjb29raWUuc2VjdXJlID8gY2hlY2ttYXJrIDogIiIsCiAgICAgICAgICAgICB9OwogCi0g
ICAgICAgICAgICBpZiAoY29va2llLnR5cGUgIT09IFdlYkluc3BlY3Rvci5Db29raWVUeXBlLlJl
cXVlc3QpCisgICAgICAgICAgICBpZiAoY29va2llLnR5cGUgIT09IFdlYkluc3BlY3Rvci5Db29r
aWVTdG9yYWdlQ29udGVudFZpZXcuQ29va2llVHlwZS5SZXF1ZXN0KQogICAgICAgICAgICAgICAg
IGRhdGFbImV4cGlyZXMiXSA9IGNvb2tpZS5zZXNzaW9uID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTZXNzaW9uIikgOiBuZXcgRGF0ZShjb29raWUuZXhwaXJlcykudG9Mb2NhbGVTdHJpbmcoKTsK
IAogICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZShk
YXRhKTsKQEAgLTE1NSw5ICsxNTQsOSBAQCBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2RhdGFHcmlk
LnNvcnRDb2x1bW5JZGVudGlmaWVyID0gIm5hbWUiOwotICAgIH0sCisgICAgfQogCi0gICAgX2Zp
bHRlckNvb2tpZXM6IGZ1bmN0aW9uKGNvb2tpZXMpCisgICAgX2ZpbHRlckNvb2tpZXMoY29va2ll
cykKICAgICB7CiAgICAgICAgIHZhciBmaWx0ZXJlZENvb2tpZXMgPSBbXTsKICAgICAgICAgdmFy
IHJlc291cmNlc0ZvckRvbWFpbiA9IFtdOwpAQCAtMTc4LDkgKzE3NywyNyBAQCBXZWJJbnNwZWN0
b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICByZXNvdXJjZXNGb3JEb21haW4ucHVzaChmcmFtZXNbaV0ubWFpblJlc291cmNlLnVybCk7CiAg
ICAgICAgIH0KIAorICAgICAgICBmdW5jdGlvbiBjb29raWVEb21haW5NYXRjaGVzUmVzb3VyY2VE
b21haW4oY29va2llRG9tYWluLCByZXNvdXJjZURvbWFpbikKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGNvb2tpZURvbWFpbi5jaGFyQXQoMCkgIT09ICIuIikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzb3VyY2VEb21haW4gPT09IGNvb2tpZURvbWFpbjsKKyAgICAgICAgICAgIHJldHVy
biAhIXJlc291cmNlRG9tYWluLm1hdGNoKG5ldyBSZWdFeHAoIl4oW15cXC5dK1xcLik/IiArIGNv
b2tpZURvbWFpbi5zdWJzdHJpbmcoMSkuZXNjYXBlRm9yUmVnRXhwKCkgKyAiJCIpLCAiaSIpOwor
ICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gY29va2llTWF0Y2hlc1Jlc291cmNlVVJMKGNv
b2tpZSwgcmVzb3VyY2VVUkwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBwYXJzZWRVUkwg
PSBwYXJzZVVSTChyZXNvdXJjZVVSTCk7CisgICAgICAgICAgICBpZiAoIXBhcnNlZFVSTCB8fCAh
V2ViSW5zcGVjdG9yLmNvb2tpZURvbWFpbk1hdGNoZXNSZXNvdXJjZURvbWFpbihjb29raWUuZG9t
YWluLCBwYXJzZWRVUkwuaG9zdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgICAgICByZXR1cm4gKHBhcnNlZFVSTC5wYXRoLnN0YXJ0c1dpdGgoY29va2llLnBhdGgp
CisgICAgICAgICAgICAgICAgJiYgKCFjb29raWUucG9ydCB8fCBwYXJzZWRVUkwucG9ydCA9PT0g
Y29va2llLnBvcnQpCisgICAgICAgICAgICAgICAgJiYgKCFjb29raWUuc2VjdXJlIHx8IHBhcnNl
ZFVSTC5zY2hlbWUgPT09ICJodHRwcyIpKTsKKyAgICAgICAgfQorCiAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY29va2llcy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgZm9yICh2YXIg
aiA9IDA7IGogPCByZXNvdXJjZXNGb3JEb21haW4ubGVuZ3RoOyArK2opIHsKLSAgICAgICAgICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLmNvb2tpZU1hdGNoZXNSZXNvdXJjZVVSTChjb29raWVzW2ld
LCByZXNvdXJjZXNGb3JEb21haW5bal0pKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvb2tpZU1h
dGNoZXNSZXNvdXJjZVVSTChjb29raWVzW2ldLCByZXNvdXJjZXNGb3JEb21haW5bal0pKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGZpbHRlcmVkQ29va2llcy5wdXNoKGNvb2tpZXNbaV0pOwogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0xODgsOSArMjA1
LDkgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZmlsdGVyZWRDb29raWVzOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3NvcnREYXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9zb3J0RGF0YUdyaWQo
KQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gbG9jYWxlQ29tcGFyZShmaWVsZCwgbm9kZUEsIG5v
ZGVCKQogICAgICAgICB7CkBAIC0yMjgsOSArMjQ1LDkgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVN0
b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQo
Y29tcGFyYXRvcik7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnROb2Rlcyhjb21wYXJhdG9y
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kZWxldGVDYWxsYmFjazogZnVuY3Rpb24obm9kZSkK
KyAgICBfZGVsZXRlQ2FsbGJhY2sobm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZSB8fCAh
bm9kZS5jb29raWUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNDUsMjcgKzI2MiwxMCBAQCBX
ZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICB9
CiB9OwogCi1XZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlOworV2ViSW5zcGVj
dG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJjb29raWUtc3Rv
cmFnZSI7CiAKLVdlYkluc3BlY3Rvci5jb29raWVNYXRjaGVzUmVzb3VyY2VVUkwgPSBmdW5jdGlv
bihjb29raWUsIHJlc291cmNlVVJMKQotewotICAgIHZhciBwYXJzZWRVUkwgPSBwYXJzZVVSTChy
ZXNvdXJjZVVSTCk7Ci0gICAgaWYgKCFwYXJzZWRVUkwgfHwgIVdlYkluc3BlY3Rvci5jb29raWVE
b21haW5NYXRjaGVzUmVzb3VyY2VEb21haW4oY29va2llLmRvbWFpbiwgcGFyc2VkVVJMLmhvc3Qp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gKHBhcnNlZFVSTC5wYXRoLnN0
YXJ0c1dpdGgoY29va2llLnBhdGgpCi0gICAgICAgICYmICghY29va2llLnBvcnQgfHwgcGFyc2Vk
VVJMLnBvcnQgPT09IGNvb2tpZS5wb3J0KQotICAgICAgICAmJiAoIWNvb2tpZS5zZWN1cmUgfHwg
cGFyc2VkVVJMLnNjaGVtZSA9PT0gImh0dHBzIikpOwotfQotCi1XZWJJbnNwZWN0b3IuY29va2ll
RG9tYWluTWF0Y2hlc1Jlc291cmNlRG9tYWluID0gZnVuY3Rpb24oY29va2llRG9tYWluLCByZXNv
dXJjZURvbWFpbikKLXsKLSAgICBpZiAoY29va2llRG9tYWluLmNoYXJBdCgwKSAhPT0gIi4iKQot
ICAgICAgICByZXR1cm4gcmVzb3VyY2VEb21haW4gPT09IGNvb2tpZURvbWFpbjsKLSAgICByZXR1
cm4gISFyZXNvdXJjZURvbWFpbi5tYXRjaChuZXcgUmVnRXhwKCJeKFteXFwuXStcXC4pPyIgKyBj
b29raWVEb21haW4uc3Vic3RyaW5nKDEpLmVzY2FwZUZvclJlZ0V4cCgpICsgIiQiKSwgImkiKTsK
LX0KLQotV2ViSW5zcGVjdG9yLkNvb2tpZVR5cGUgPSB7CisvLyBGSVhNRTogVXNlIGFuIGVudW0g
ZnJvbSBhIG1hbmFnZXIgYW5kIG5vdCByYXcgcHJvdG9jb2wgdmFsdWVzLgorV2ViSW5zcGVjdG9y
LkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5Db29raWVUeXBlID0gewogICAgIFJlcXVlc3Q6IDAs
CiAgICAgUmVzcG9uc2U6IDEKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlVHJlZUVsZW1l
bnQuanMKaW5kZXggMjQ5YjI4Yy4uZTFmMTY3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZVRyZWVFbGVtZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3Jh
Z2VUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMjQgKzIzLDIxIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVu
dCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3Jh
Z2VUcmVlRWxlbWVudCA9IGNsYXNzIENvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudCBleHRlbmRzIFdl
Ykluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNl
bnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VPYmplY3QpOwogCi0gICAg
V2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5D
b29raWVTdG9yYWdlVHJlZUVsZW1lbnQuQ29va2llSWNvblN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNw
ZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHJlcHJlc2VudGVkT2JqZWN0Lmhvc3QpLCByZXByZXNl
bnRlZE9iamVjdCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZVRyZWVFbGVtZW50
LkNvb2tpZUljb25TdHlsZUNsYXNzTmFtZSA9ICJjb29raWUtaWNvbiI7Ci0KLVdlYkluc3BlY3Rv
ci5Db29raWVTdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZVRyZWVFbGVtZW50LAorICAgICAgICBzdXBlcihX
ZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZVRyZWVFbGVtZW50LkNvb2tpZUljb25TdHlsZUNsYXNz
TmFtZSwgV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9ySG9zdChyZXByZXNlbnRlZE9iamVjdC5o
b3N0KSwgcmVwcmVzZW50ZWRPYmplY3QpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAg
Z2V0IG5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
aG9zdDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjYXRlZ29yeU5hbWUoKQogICAgIHsKQEAg
LTQ4LDQgKzQ1LDQgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxl
bWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVu
dC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZVRyZWVFbGVtZW50LkNvb2tp
ZUljb25TdHlsZUNsYXNzTmFtZSA9ICJjb29raWUtaWNvbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01EZXRhaWxzU2lkZWJhclBhbmVs
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NRGV0YWls
c1NpZGViYXJQYW5lbC5qcwppbmRleCBhMDE4NDY2Li5kYWE3ZWZmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01EZXRhaWxzU2lkZWJhclBh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIyICsyMywyMCBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJh
clBhbmVsID0gZnVuY3Rpb24oaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNpbmd1bGFyRGlzcGxh
eU5hbWUsIGltYWdlLCBrZXlib2FyZFNob3J0Y3V0S2V5LCBlbGVtZW50KQorV2ViSW5zcGVjdG9y
LkRPTURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBET01EZXRhaWxzU2lkZWJhclBhbmVsIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwKIHsKLSAgICBXZWJJbnNwZWN0
b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIGRpc3BsYXlOYW1l
LCBzaW5ndWxhckRpc3BsYXlOYW1lLCBpbWFnZSwga2V5Ym9hcmRTaG9ydGN1dEtleSwgZWxlbWVu
dCk7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNpbmd1bGFyRGlz
cGxheU5hbWUsIGltYWdlLCBrZXlib2FyZFNob3J0Y3V0S2V5LCBlbGVtZW50KQorICAgIHsKKyAg
ICAgICAgc3VwZXIoaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNpbmd1bGFyRGlzcGxheU5hbWUs
IGltYWdlLCBrZXlib2FyZFNob3J0Y3V0S2V5LCBlbGVtZW50KTsKIAogICAgICAgICB0aGlzLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9tb3VzZVdhc0NsaWNrZWQuYmlu
ZCh0aGlzKSwgdHJ1ZSk7CiAKICAgICAgICAgdGhpcy5fZG9tTm9kZSA9IG51bGw7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJhclBhbmVsLAotICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLAorICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCi0gICAgaW5zcGVjdDogZnVuY3Rpb24ob2JqZWN0cykKKyAgICBp
bnNwZWN0KG9iamVjdHMpCiAgICAgewogICAgICAgICAvLyBDb252ZXJ0IHRvIGEgc2luZ2xlIGl0
ZW0gYXJyYXkgaWYgbmVlZGVkLgogICAgICAgICBpZiAoIShvYmplY3RzIGluc3RhbmNlb2YgQXJy
YXkpKQpAQCAtNjAsMTIgKzU4LDEyIEBAIFdlYkluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kb21Ob2RlID0gbm9kZVRvSW5zcGVjdDsK
IAogICAgICAgICByZXR1cm4gISF0aGlzLl9kb21Ob2RlOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGRvbU5vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbU5vZGU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgZG9tTm9kZShkb21Ob2RlKQogICAgIHsKQEAgLTgxLDI3ICs3
OSwyNyBAQCBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7CiAKICAgICAgICAgdGhpcy5u
ZWVkc1JlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIHN1cHBvcnRzRE9NTm9kZTogZnVu
Y3Rpb24obm9kZVRvSW5zcGVjdCkKKyAgICBzdXBwb3J0c0RPTU5vZGUobm9kZVRvSW5zcGVjdCkK
ICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkRXZlbnRMaXN0ZW5lcnM6IGZ1bmN0
aW9uKCkKKyAgICBhZGRFdmVudExpc3RlbmVycygpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlRXZlbnRMaXN0
ZW5lcnM6IGZ1bmN0aW9uKCkKKyAgICByZW1vdmVFdmVudExpc3RlbmVycygpCiAgICAgewogICAg
ICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gUHJpdmF0ZQogCi0gICAgX21vdXNlV2FzQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X21vdXNlV2FzQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kb21Ob2Rl
ICYmIHRoaXMuX2RvbU5vZGUub3duZXJEb2N1bWVudCkgewogICAgICAgICAgICAgdmFyIG1haW5S
ZXNvdXJjZSA9IFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZUZvclVS
TCh0aGlzLl9kb21Ob2RlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRVUkwpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NTm9kZURldGFpbHNT
aWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCA4YzExZTg5Li5lNWQ1OTFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01O
b2RlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywx
NSArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbigpCitXZWJJ
bnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBET01Ob2RlRGV0YWls
c1NpZGViYXJQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJhclBhbmVs
CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRPTURldGFpbHNTaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCAi
ZG9tLW5vZGUtZGV0YWlscyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm9kZSIpLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5vZGUiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUFuZ2xlQnJhY2tl
dHMuc3ZnIiwgIjIiKTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigi
ZG9tLW5vZGUtZGV0YWlscyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm9kZSIpLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5vZGUiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUFuZ2xlQnJhY2tl
dHMuc3ZnIiwgIjIiKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRl
TW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0ZXNDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgV2ViSW5z
cGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRy
ZWVNYW5hZ2VyLkV2ZW50LkF0dHJpYnV0ZVJlbW92ZWQsIHRoaXMuX2F0dHJpYnV0ZXNDaGFuZ2Vk
LCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNoYXJhY3RlckRhdGFNb2Rp
ZmllZCwgdGhpcy5fY2hhcmFjdGVyRGF0YU1vZGlmaWVkLCB0aGlzKTsKIAotICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5l
bC5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJk
b20tbm9kZSIpOwogCiAgICAgICAgIHRoaXMuX2lkZW50aXR5Tm9kZVR5cGVSb3cgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
VHlwZSIpKTsKICAgICAgICAgdGhpcy5faWRlbnRpdHlOb2RlTmFtZVJvdyA9IG5ldyBXZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJOYW1l
IikpOwpAQCAtODgsMTggKzkwLDExIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGVi
YXJQYW5lbCA9IGZ1bmN0aW9uKCkKIAogICAgICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5h
cHBlbmRDaGlsZChhY2Nlc3NpYmlsaXR5U2VjdGlvbi5lbGVtZW50KTsKICAgICAgICAgfQotfTsK
LQotV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1l
ID0gImRvbS1ub2RlIjsKLVdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGViYXJQYW5lbC5Q
cm9wZXJ0aWVzT2JqZWN0R3JvdXBOYW1lID0gImRvbS1ub2RlLWRldGFpbHMtc2lkZWJhci1wcm9w
ZXJ0aWVzLW9iamVjdC1ncm91cCI7Ci0KLVdlYkluc3BlY3Rvci5ET01Ob2RlRGV0YWlsc1NpZGVi
YXJQYW5lbC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01O
b2RlRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5ET01E
ZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICAgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaCgpCiAgICAgewogICAgICAg
ICB2YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKICAgICAgICAgaWYgKCFkb21Ob2RlKQpAQCAt
MTEzLDIxICsxMDgsMjEgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVmcmVzaFByb3BlcnRpZXMoKTsKICAgICAg
ICAgdGhpcy5fcmVmcmVzaEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hB
Y2Nlc3NpYmlsaXR5KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBf
YWNjZXNzaWJpbGl0eVN1cHBvcnRlZDogZnVuY3Rpb24oKQorICAgIF9hY2Nlc3NpYmlsaXR5U3Vw
cG9ydGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB3aW5kb3cuRE9NQWdlbnQgJiYgRE9NQWdl
bnQuZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JOb2RlOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3JlZnJlc2hBdHRyaWJ1dGVzOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hBdHRyaWJ1dGVz
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXNEYXRhR3JpZFJvdy5kYXRhR3JpZCA9
IHRoaXMuX2NyZWF0ZUF0dHJpYnV0ZXNEYXRhR3JpZCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3JlZnJlc2hQcm9wZXJ0aWVzOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hQcm9wZXJ0aWVzKCkK
ICAgICB7CiAgICAgICAgIHZhciBkb21Ob2RlID0gdGhpcy5kb21Ob2RlOwogICAgICAgICBpZiAo
IWRvbU5vZGUpCkBAIC0yMTQsOSArMjA5LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBlbGVtZW50LmFwcGVu
ZENoaWxkKGRldGFpbHNTZWN0aW9uLmVsZW1lbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaEV2ZW50TGlzdGVuZXJzOiBmdW5jdGlvbigp
CisgICAgX3JlZnJlc2hFdmVudExpc3RlbmVycygpCiAgICAgewogICAgICAgICB2YXIgZG9tTm9k
ZSA9IHRoaXMuZG9tTm9kZTsKICAgICAgICAgaWYgKCFkb21Ob2RlKQpAQCAtMjY0LDExICsyNTks
MTggQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgICAgICByb3dzLnB1c2goZXZlbnRMaXN0ZW5lclNlY3Rpb25zW2V2ZW50
TGlzdGVuZXJUeXBlc1tpXV0pOwogICAgICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnNTZWN0
aW9uR3JvdXAucm93cyA9IHJvd3M7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KKworICAgIF9y
ZWZyZXNoQWNjZXNzaWJpbGl0eSgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX2FjY2Vzc2li
aWxpdHlTdXBwb3J0ZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgZG9t
Tm9kZSA9IHRoaXMuZG9tTm9kZTsKKyAgICAgICAgaWYgKCFkb21Ob2RlKQorICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgX3JlZnJlc2hBY2Nlc3NpYmlsaXR5OiAoZnVuY3Rpb24oKSB7CiAgICAg
ICAgIHZhciBwcm9wZXJ0aWVzID0ge307Ci0gICAgICAgIHZhciBkb21Ob2RlOwogCiAgICAgICAg
IGZ1bmN0aW9uIGJvb2xlYW5WYWx1ZVRvTG9jYWxpemVkU3RyaW5nSWZUcnVlKHByb3BlcnR5KSB7
CiAgICAgICAgICAgICBpZiAocHJvcGVydGllc1twcm9wZXJ0eV0pCkBAIC01MjUsMzcgKzUyNywy
NSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24gcmVmcmVzaEFY
KCkgewotICAgICAgICAgICAgaWYgKCF0aGlzLl9hY2Nlc3NpYmlsaXR5U3VwcG9ydGVkKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGRv
bU5vZGUgaXMgYXZhaWxhYmxlIGluIHRoZSBjbG9zdXJlIHNjb3BlLgotICAgICAgICAgICAgZG9t
Tm9kZSA9IHRoaXMuZG9tTm9kZTsKLSAgICAgICAgICAgIGlmICghZG9tTm9kZSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KICAgICAgICAgZG9tTm9kZS5hY2Nlc3NpYmlsaXR5UHJvcGVydGll
cyhhY2Nlc3NpYmlsaXR5UHJvcGVydGllc0NhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0KIAot
ICAgICAgICByZXR1cm4gcmVmcmVzaEFYOwotICAgIH0oKSksCi0KLSAgICBfYXR0cmlidXRlc0No
YW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9hdHRyaWJ1dGVzQ2hhbmdlZChldmVudCkKICAg
ICB7CiAgICAgICAgIGlmIChldmVudC5kYXRhLm5vZGUgIT09IHRoaXMuZG9tTm9kZSkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fcmVmcmVzaEF0dHJpYnV0ZXMoKTsKICAgICAg
ICAgdGhpcy5fcmVmcmVzaEFjY2Vzc2liaWxpdHkoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9j
aGFyYWN0ZXJEYXRhTW9kaWZpZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGFyYWN0ZXJEYXRh
TW9kaWZpZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQuZGF0YS5ub2RlICE9PSB0
aGlzLmRvbU5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX2lkZW50aXR5
Tm9kZVZhbHVlUm93LnZhbHVlID0gdGhpcy5kb21Ob2RlLm5vZGVWYWx1ZSgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX25vZGVUeXBlRGlzcGxheU5hbWU6IGZ1bmN0aW9uKCkKKyAgICBfbm9kZVR5
cGVEaXNwbGF5TmFtZSgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHRoaXMuZG9tTm9kZS5ub2Rl
VHlwZSgpKSB7CiAgICAgICAgIGNhc2UgTm9kZS5FTEVNRU5UX05PREU6CkBAIC01NzgsOSArNTY4
LDkgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gRE9NIG5vZGUgdHlwZTogIiwg
dGhpcy5kb21Ob2RlLm5vZGVUeXBlKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9tTm9k
ZS5ub2RlVHlwZSgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY3JlYXRlQXR0
cmlidXRlc0RhdGFHcmlkOiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZUF0dHJpYnV0ZXNEYXRhR3Jp
ZCgpCiAgICAgewogICAgICAgICB2YXIgZG9tTm9kZSA9IHRoaXMuZG9tTm9kZTsKICAgICAgICAg
aWYgKCFkb21Ob2RlIHx8ICFkb21Ob2RlLmhhc0F0dHJpYnV0ZXMoKSkKQEAgLTYwMiwzICs1OTIs
NSBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gZGF0YUdyaWQ7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkRP
TU5vZGVEZXRhaWxzU2lkZWJhclBhbmVsLlByb3BlcnRpZXNPYmplY3RHcm91cE5hbWUgPSAiZG9t
LW5vZGUtZGV0YWlscy1zaWRlYmFyLXByb3BlcnRpZXMtb2JqZWN0LWdyb3VwIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVN0b3JhZ2VD
b250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RPTVN0b3JhZ2VDb250ZW50Vmlldy5qcwppbmRleCA0MDZhMzVmLi4xZTUwZGM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9yYWdl
Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NU3RvcmFnZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDExICsyNCwxMyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdl
Q29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5E
T01TdG9yYWdlQ29udGVudFZpZXcgPSBjbGFzcyBET01TdG9yYWdlQ29udGVudFZpZXcgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCk7CisgICAgY29uc3RydWN0b3IocmVwcmVz
ZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCk7CiAK
LSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNv
bnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoImRvbS1zdG9yYWdlIik7CiAKICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3QuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVtc0NsZWFy
ZWQsIHRoaXMuaXRlbXNDbGVhcmVkLCB0aGlzKTsKICAgICAgICAgcmVwcmVzZW50ZWRPYmplY3Qu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9iamVjdC5FdmVudC5JdGVt
QWRkZWQsIHRoaXMuaXRlbUFkZGVkLCB0aGlzKTsKQEAgLTM2LDI2ICszOCwxNiBAQCBXZWJJbnNw
ZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3Qp
CiAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbVVwZGF0ZWQsIHRoaXMuaXRlbVVwZGF0ZWQsIHRo
aXMpOwogCiAgICAgICAgIHRoaXMucmVzZXQoKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5ET01TdG9y
YWdlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZG9tLXN0b3JhZ2UiOwotV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5EdXBsaWNhdGVLZXlTdHlsZUNsYXNzTmFtZSA9ICJk
dXBsaWNhdGUta2V5IjsKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcuTWlzc2lu
Z0tleVN0eWxlQ2xhc3NOYW1lID0gIm1pc3Npbmcta2V5IjsKLVdlYkluc3BlY3Rvci5ET01TdG9y
YWdlQ29udGVudFZpZXcuTWlzc2luZ1ZhbHVlU3R5bGVDbGFzc05hbWUgPSAibWlzc2luZy12YWx1
ZSI7Ci0KLQotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcsCi0g
ICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLAorICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGFsbG93ZWROYXZpZ2F0aW9uU2lkZWJhclBhbmVs
cygpCiAgICAgewogICAgICAgICByZXR1cm4gW1dlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQ
YW5lbC5pZGVudGlmaWVyXTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbigp
CisgICAgcmVzZXQoKQogICAgIHsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5nZXRF
bnRyaWVzKGZ1bmN0aW9uKGVycm9yLCBlbnRyaWVzKSB7CiAgICAgICAgICAgICBpZiAoZXJyb3Ip
CkBAIC04OCwzMCArODAsMzAgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRQbGFjZWhvbGRlck5v
ZGUoKTsKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwogICAgICAg
ICB9LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBmdW5j
dGlvbihjb29raWUpCisgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNv
b2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5ET01TdG9yYWdl
OwogICAgICAgICBjb29raWUuaXNMb2NhbFN0b3JhZ2UgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0
LmlzTG9jYWxTdG9yYWdlKCk7CiAgICAgICAgIGNvb2tpZS5ob3N0ID0gdGhpcy5yZXByZXNlbnRl
ZE9iamVjdC5ob3N0OwotICAgIH0sCisgICAgfQogCi0gICAgaXRlbXNDbGVhcmVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBpdGVtc0NsZWFyZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9k
YXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRQbGFj
ZWhvbGRlck5vZGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGl0ZW1SZW1vdmVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBpdGVtUmVtb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIGZvciAodmFy
IG5vZGUgb2YgdGhpcy5fZGF0YUdyaWQuY2hpbGRyZW4pIHsKICAgICAgICAgICAgIGlmIChub2Rl
LmRhdGEua2V5ID09PSBldmVudC5kYXRhLmtleSkKICAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGQobm9kZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAotICAgIGl0ZW1BZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgaXRlbUFkZGVkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdmFyIGtleSA9IGV2ZW50LmRhdGEua2V5OwogICAgICAgICB2YXIgdmFs
dWUgPSBldmVudC5kYXRhLnZhbHVlOwpAQCAtMTI1LDkgKzExNyw5IEBAIFdlYkluc3BlY3Rvci5E
T01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZGF0YSA9IHtr
ZXksIHZhbHVlfTsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYXBwZW5kQ2hpbGQobmV3IFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0YSwgZmFsc2UpKTsKICAgICAgICAgdGhpcy5fc29ydERh
dGFHcmlkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpdGVtVXBkYXRlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgaXRlbVVwZGF0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIga2V5ID0gZXZl
bnQuZGF0YS5rZXk7CiAgICAgICAgIHZhciB2YWx1ZSA9IGV2ZW50LmRhdGEudmFsdWU7CkBAIC0x
NDcsMjQgKzEzOSwyNCBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0aGlzLl9zb3J0RGF0
YUdyaWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQor
ICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZGF0YUdyaWQpCiAg
ICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9kYXRhR3JpZCkKICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgcmV0dXJuIFt0aGlz
Ll9kYXRhR3JpZC5zY3JvbGxDb250YWluZXJdOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQogCi0gICAgX3NvcnREYXRhR3JpZDogZnVuY3Rpb24oKQorICAgIF9zb3J0RGF0YUdyaWQo
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xNzcsMTggKzE2OSwxOCBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFn
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2Rh
dGFHcmlkLnNvcnROb2Rlcyhjb21wYXJhdG9yLCB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2RlbGV0ZUNhbGxiYWNrOiBmdW5jdGlvbihub2RlKQorICAg
IF9kZWxldGVDYWxsYmFjayhub2RlKQogICAgIHsKICAgICAgICAgaWYgKCFub2RlIHx8IG5vZGUu
aXNQbGFjZWhvbGRlck5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5f
ZGF0YUdyaWQucmVtb3ZlQ2hpbGQobm9kZSk7CiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QucmVtb3ZlSXRlbShub2RlLmRhdGFbImtleSJdKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9l
ZGl0aW5nQ2FsbGJhY2s6IGZ1bmN0aW9uKGVkaXRpbmdOb2RlLCBjb2x1bW5JZGVudGlmaWVyLCBv
bGRUZXh0LCBuZXdUZXh0LCBtb3ZlRGlyZWN0aW9uKQorICAgIF9lZGl0aW5nQ2FsbGJhY2soZWRp
dGluZ05vZGUsIGNvbHVtbklkZW50aWZpZXIsIG9sZFRleHQsIG5ld1RleHQsIG1vdmVEaXJlY3Rp
b24pCiAgICAgewogICAgICAgICB2YXIga2V5ID0gZWRpdGluZ05vZGUuZGF0YVsia2V5Il0udHJp
bSgpLnJlbW92ZVdvcmRCcmVha0NoYXJhY3RlcnMoKTsKICAgICAgICAgdmFyIHZhbHVlID0gZWRp
dGluZ05vZGUuZGF0YVsidmFsdWUiXS50cmltKCkucmVtb3ZlV29yZEJyZWFrQ2hhcmFjdGVycygp
OwpAQCAtMjgyLDMgKzI3NCw3IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICBkb21TdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7CiAg
ICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5EdXBsaWNhdGVL
ZXlTdHlsZUNsYXNzTmFtZSA9ICJkdXBsaWNhdGUta2V5IjsKK1dlYkluc3BlY3Rvci5ET01TdG9y
YWdlQ29udGVudFZpZXcuTWlzc2luZ0tleVN0eWxlQ2xhc3NOYW1lID0gIm1pc3Npbmcta2V5IjsK
K1dlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcuTWlzc2luZ1ZhbHVlU3R5bGVDbGFz
c05hbWUgPSAibWlzc2luZy12YWx1ZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9yYWdlVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9yYWdlVHJlZUVsZW1lbnQu
anMKaW5kZXggM2IzZTYwYy4uYmIyZmUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NU3RvcmFnZVRyZWVFbGVtZW50LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVN0b3JhZ2VUcmVlRWxl
bWVudC5qcwpAQCAtMjMsNyArMjMsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQgPSBmdW5jdGlv
bihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQg
PSBjbGFzcyBET01TdG9yYWdlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3RvcmFn
ZVRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0KTsKIApAQCAtMzIsMjEgKzM0LDE1IEBAIFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVj
dCkKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdmFyIGNsYXNzTmFtZSA9IFdlYkluc3BlY3Rv
ci5ET01TdG9yYWdlVHJlZUVsZW1lbnQuU2Vzc2lvblN0b3JhZ2VJY29uU3R5bGVDbGFzc05hbWU7
CiAKLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgY2xhc3NO
YW1lLCBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHJlcHJlc2VudGVkT2JqZWN0Lmhv
c3QpLCByZXByZXNlbnRlZE9iamVjdCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRy
ZWVFbGVtZW50LkxvY2FsU3RvcmFnZUljb25TdHlsZUNsYXNzTmFtZSA9ICJsb2NhbC1zdG9yYWdl
LWljb24iOwotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VUcmVlRWxlbWVudC5TZXNzaW9uU3RvcmFn
ZUljb25TdHlsZUNsYXNzTmFtZSA9ICJzZXNzaW9uLXN0b3JhZ2UtaWNvbiI7Ci0KLVdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVtZW50LAorICAgICAgICBzdXBlcihjbGFz
c05hbWUsIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvckhvc3QocmVwcmVzZW50ZWRPYmplY3Qu
aG9zdCksIHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAg
IGdldCBuYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGlzcGxheU5h
bWVGb3JIb3N0KHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaG9zdCk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgY2F0ZWdvcnlOYW1lKCkKICAgICB7CkBAIC01Niw0ICs1Miw1IEBAIFdlYkluc3Bl
Y3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2VUcmVlRWxlbWVudC5Mb2NhbFN0b3JhZ2VJY29uU3R5bGVDbGFzc05hbWUgPSAibG9j
YWwtc3RvcmFnZS1pY29uIjsKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlVHJlZUVsZW1lbnQuU2Vz
c2lvblN0b3JhZ2VJY29uU3R5bGVDbGFzc05hbWUgPSAic2Vzc2lvbi1zdG9yYWdlLWljb24iOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
VHJlZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCmluZGV4IDUxYzY2NzYuLjA0ODNkZTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDExICsyMywxMyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVu
dFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5ET01UcmVl
Q29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsKIAotICAgIFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0KTsKKyAg
ICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QpOwogCiAgICAgICAgIHZhciBsYXllckJvcmRl
cnNJbWFnZSwgc2hhZG93RE9NSW1hZ2U7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZv
cm0uaXNMZWdhY3lNYWNPUykgewpAQCAtNTMsNyArNTUsNyBAQCBXZWJJbnNwZWN0b3IuRE9NVHJl
ZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgIHRoaXMu
X3Nob3dzU2hhZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xl
U2hvd3NTaGFkb3dET01TZXR0aW5nLCB0aGlzKTsKICAgICAgICAgdGhpcy5fc2hvd1NoYWRvd0RP
TVNldHRpbmdDaGFuZ2VkKCk7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJ
bnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRvbS10cmVlIik7CiAgICAgICAgIHRoaXMuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX21vdXNlV2FzQ2xpY2tlZC5iaW5kKHRo
aXMpLCBmYWxzZSk7CiAKICAgICAgICAgdGhpcy5fZG9tVHJlZU91dGxpbmUgPSBuZXcgV2ViSW5z
cGVjdG9yLkRPTVRyZWVPdXRsaW5lKHRydWUsIHRydWUsIGZhbHNlKTsKQEAgLTY4LDU5ICs3MCw1
MyBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50
ZWRPYmplY3QpCiAgICAgICAgIHRoaXMuX2xhc3RTZWxlY3RlZE5vZGVQYXRoU2V0dGluZyA9IG5l
dyBXZWJJbnNwZWN0b3IuU2V0dGluZygibGFzdC1zZWxlY3RlZC1ub2RlLXBhdGgiLCBudWxsKTsK
IAogICAgICAgICB0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHMgPSBudWxsOwotfTsKLQotV2Vi
SW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJkb20tdHJlZSI7
Ci0KLVdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LAotICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCBhbGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIFtXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuaWRlbnRp
Zmllcl07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBbdGhpcy5fc2hvd3NTaGFkb3dET01CdXR0b25OYXZpZ2F0aW9uSXRl
bSwgdGhpcy5fY29tcG9zaXRpbmdCb3JkZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3Bh
aW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbV07Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgZG9tVHJlZU91dGxpbmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbVRyZWVP
dXRsaW5lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjcm9sbGFibGVFbGVtZW50cygpCiAg
ICAgewogICAgICAgICByZXR1cm4gW3RoaXMuZWxlbWVudF07Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAg
ICAgICAgdGhpcy5fZG9tVHJlZU91dGxpbmUudXBkYXRlU2VsZWN0aW9uKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNldFZpc2libGUodHJ1ZSwgV2ViSW5zcGVjdG9yLmlzQ29u
c29sZUZvY3VzZWQoKSk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUNvbXBvc2l0aW5nQm9yZGVyc0J1
dHRvblRvTWF0Y2hQYWdlU2V0dGluZ3MoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjog
ZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKICAgICAgICAgdGhpcy5fZG9tVHJl
ZU91dGxpbmUuc2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6
IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRv
bVRyZWVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAKICAg
ICAgICAgdGhpcy5fZG9tVHJlZU91dGxpbmUuY2xvc2UoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cygpCiAgICAgewpAQCAtMTQyLDE0ICsxMzgsMTQg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gcGF0aENvbXBvbmVudHM7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBzZWxlY3RBbmRSZXZlYWxET01Ob2RlOiBmdW5jdGlvbihkb21Ob2RlLCBwcmV2ZW50Rm9jdXND
aGFuZ2UpCisgICAgc2VsZWN0QW5kUmV2ZWFsRE9NTm9kZShkb21Ob2RlLCBwcmV2ZW50Rm9jdXND
aGFuZ2UpCiAgICAgewogICAgICAgICB0aGlzLl9kb21UcmVlT3V0bGluZS5zZWxlY3RET01Ob2Rl
KGRvbU5vZGUsICFwcmV2ZW50Rm9jdXNDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgaGFu
ZGxlQ29weUV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVDb3B5RXZlbnQoZXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWRET01Ob2RlID0gdGhpcy5fZG9tVHJlZU91dGxp
bmUuc2VsZWN0ZWRET01Ob2RlKCk7CiAgICAgICAgIGlmICghc2VsZWN0ZWRET01Ob2RlKQpAQCAt
MTU5LDEyICsxNTUsMTIgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAKICAgICAgICAgc2VsZWN0
ZWRET01Ob2RlLmNvcHlOb2RlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNT
YXZlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuY2FuQXJjaGl2ZU1haW5G
cmFtZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNhdmVEYXRhKCkKICAgICB7CkBAIC0x
NzQsMjIgKzE3MCwyMiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB7IGN1c3RvbVNhdmVIYW5kbGVyOiBz
YXZlSGFuZGxlciB9OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU2VhcmNoKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG51
bWJlck9mU2VhcmNoUmVzdWx0cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVy
T2ZTZWFyY2hSZXN1bHRzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhhc1BlcmZvcm1lZFNl
YXJjaCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRz
ICE9PSBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGF1dG9tYXRpY2FsbHlSZXZlYWxG
aXJzdFNlYXJjaFJlc3VsdChyZXZlYWwpCiAgICAgewpAQCAtMjAwLDkgKzE5Niw5IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYg
KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9PT0gLTEpCiAgICAgICAgICAgICAgICAg
dGhpcy5yZXZlYWxOZXh0U2VhcmNoUmVzdWx0KCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5KQorICAgIHBlcmZvcm1TZWFyY2go
cXVlcnkpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VhcmNoUXVlcnkgPT09IHF1ZXJ5KQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjM5LDE2ICsyMzUsMTYgQEAgV2ViSW5zcGVjdG9yLkRP
TVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlz
LmdldFNlYXJjaENvbnRleHROb2Rlcyhjb250ZXh0Tm9kZXNSZWFkeS5iaW5kKHRoaXMpKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGdldFNlYXJjaENvbnRleHROb2RlczogZnVuY3Rpb24oY2FsbGJh
Y2spCisgICAgZ2V0U2VhcmNoQ29udGV4dE5vZGVzKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAg
Ly8gT3ZlcndyaXRlIHRoaXMgdG8gbGltaXQgdGhlIHNlYXJjaCB0byBqdXN0IGEgc3VidHJlZS4K
ICAgICAgICAgLy8gUGFzc2luZyB1bmRlZmluZWQgd2lsbCBtYWtlIERPTUFnZW50LnBlcmZvcm1T
ZWFyY2ggc2VhcmNoIHRocm91Z2ggYWxsIHRoZSBkb2N1bWVudHMuCiAgICAgICAgIGNhbGxiYWNr
KHVuZGVmaW5lZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWFyY2hDbGVhcmVkOiBmdW5jdGlv
bigpCisgICAgc2VhcmNoQ2xlYXJlZCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VhcmNo
SWRlbnRpZmllcikgewogICAgICAgICAgICAgRE9NQWdlbnQuZGlzY2FyZFNlYXJjaFJlc3VsdHMo
dGhpcy5fc2VhcmNoSWRlbnRpZmllcik7CkBAIC0yNTksOSArMjU1LDkgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NlYXJjaElk
ZW50aWZpZXIgPSBudWxsOwogICAgICAgICB0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHMgPSBu
dWxsOwogICAgICAgICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAtMTsKLSAgICB9
LAorICAgIH0KIAotICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFu
Z2VGb2N1cykKKyAgICByZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cykKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMjcyLDkgKzI2OCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3Vs
dEluZGV4ID0gdGhpcy5fbnVtYmVyT2ZTZWFyY2hSZXN1bHRzIC0gMTsKIAogICAgICAgICB0aGlz
Ll9yZXZlYWxTZWFyY2hSZXN1bHQodGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4LCBjaGFu
Z2VGb2N1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0OiBm
dW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZv
Y3VzKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHMpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yODUsMTEgKzI4MSwxMSBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRT
ZWFyY2hSZXN1bHRJbmRleCA9IDA7CiAKICAgICAgICAgdGhpcy5fcmV2ZWFsU2VhcmNoUmVzdWx0
KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCwgY2hhbmdlRm9jdXMpOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3JldmVhbFNlYXJjaFJlc3VsdDogZnVuY3Rp
b24oaW5kZXgsIGNoYW5nZUZvY3VzKQorICAgIF9yZXZlYWxTZWFyY2hSZXN1bHQoaW5kZXgsIGNo
YW5nZUZvY3VzKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VhcmNoSWRl
bnRpZmllcik7CiAKQEAgLTMxOSw5ICszMTUsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIERPTUFnZW50LmdldFNl
YXJjaFJlc3VsdHModGhpcy5fc2VhcmNoSWRlbnRpZmllciwgaW5kZXgsIGluZGV4ICsgMSwgcmV2
ZWFsUmVzdWx0LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc3RvcmVTZWxl
Y3RlZE5vZGVBZnRlclVwZGF0ZTogZnVuY3Rpb24oZG9jdW1lbnRVUkwsIGRlZmF1bHROb2RlKQor
ICAgIF9yZXN0b3JlU2VsZWN0ZWROb2RlQWZ0ZXJVcGRhdGUoZG9jdW1lbnRVUkwsIGRlZmF1bHRO
b2RlKQogICAgIHsKICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIucmVz
dG9yZVNlbGVjdGVkTm9kZUlzQWxsb3dlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1NSw5
ICszNTEsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5wdXNoTm9kZUJ5UGF0aFRv
RnJvbnRlbmQodGhpcy5fbGFzdFNlbGVjdGVkTm9kZVBhdGhTZXR0aW5nLnZhbHVlLnBhdGgsIHNl
bGVjdExhc3RTZWxlY3RlZE5vZGUuYmluZCh0aGlzKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHNlbGVjdE5vZGUuY2FsbCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWxlY3Rl
ZE5vZGVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zZWxlY3RlZE5vZGVEaWRDaGFu
Z2UoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWRET01Ob2RlID0gdGhpcy5fZG9t
VHJlZU91dGxpbmUuc2VsZWN0ZWRET01Ob2RlKCk7CiAgICAgICAgIGlmIChzZWxlY3RlZERPTU5v
ZGUgJiYgIXRoaXMuX2RvbnRTZXRMYXN0U2VsZWN0ZWROb2RlUGF0aCkKQEAgLTM2NywyNiArMzYz
LDI2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgQ29uc29sZUFnZW50LmFkZEluc3BlY3RlZE5vZGUoc2VsZWN0ZWRET01Ob2RlLmlk
KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGV2ZW50LmRhdGEucGF0aENvbXBvbmVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQpOwogICAgICAgICBjb25zb2xlLmFzc2VydChl
dmVudC5kYXRhLnBhdGhDb21wb25lbnQuZG9tVHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuRE9NVHJlZUVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNl
bGVjdERPTU5vZGUoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LmRvbVRyZWVFbGVtZW50LnJlcHJl
c2VudGVkT2JqZWN0LCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kb21Ob2RlQ2hhbmdl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RvbU5vZGVDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdmFyIHNlbGVjdGVkRE9NTm9kZSA9IHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNlbGVjdGVk
RE9NTm9kZSgpOwogICAgICAgICBpZiAoc2VsZWN0ZWRET01Ob2RlICE9PSBldmVudC5kYXRhLm5v
ZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21w
b25lbnRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZVdhc0NsaWNrZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZVdhc0NsaWNrZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICB2YXIgYW5jaG9yRWxlbWVudCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxm
V2l0aE5vZGVOYW1lKCJhIik7CiAgICAgICAgIGlmICghYW5jaG9yRWxlbWVudCB8fCAhYW5jaG9y
RWxlbWVudC5ocmVmKQpAQCAtNDI0LDIzICs0MjAsMjMgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIHRoZW4gYSBkb3VibGUtY2xpY2sg
aGFwcGVuZWQgb3IgYW5vdGhlciBsaW5rIHdhcyBjbGlja2VkLgogICAgICAgICAvLyBGSVhNRTog
VGhlIGR1cmF0aW9uIG1pZ2h0IGJlIGxvbmdlciBvciBzaG9ydGVyIHRoYW4gdGhlIHVzZXIncyBj
b25maWd1cmVkIGRvdWJsZSBjbGljayBzcGVlZC4KICAgICAgICAgdGhpcy5fZm9sbG93TGlua1Rp
bWVvdXRJZGVudGlmaWVyID0gc2V0VGltZW91dChmb2xsb3dMaW5rLmJpbmQodGhpcyksIDMzMyk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlQ29tcG9zaXRpbmdCb3JkZXJzOiBmdW5jdGlv
bihldmVudCkKKyAgICBfdG9nZ2xlQ29tcG9zaXRpbmdCb3JkZXJzKGV2ZW50KQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoUGFnZUFnZW50LnNldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2li
bGUpOwogCiAgICAgICAgIHZhciBhY3RpdmF0ZWQgPSAhdGhpcy5fY29tcG9zaXRpbmdCb3JkZXJz
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkOwogICAgICAgICB0aGlzLl9jb21wb3NpdGlu
Z0JvcmRlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBhY3RpdmF0ZWQ7CiAgICAg
ICAgIFBhZ2VBZ2VudC5zZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKGFjdGl2YXRlZCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlUGFpbnRGbGFzaGluZzogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3RvZ2dsZVBhaW50Rmxhc2hpbmcoZXZlbnQpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3Iuc2hvd1BhaW50UmVjdHNTZXR0aW5nLnZhbHVlID0gIVdlYkluc3BlY3Rvci5zaG93UGFp
bnRSZWN0c1NldHRpbmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlQ29tcG9z
aXRpbmdCb3JkZXJzQnV0dG9uVG9NYXRjaFBhZ2VTZXR0aW5nczogZnVuY3Rpb24oKQorICAgIF91
cGRhdGVDb21wb3NpdGluZ0JvcmRlcnNCdXR0b25Ub01hdGNoUGFnZVNldHRpbmdzKCkKICAgICB7
CiAgICAgICAgIGlmICghUGFnZUFnZW50LmdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC00NTMsMjggKzQ0OSwyOCBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGJ1dHRvbi5hY3RpdmF0
ZWQgPSBlcnJvciA/IGZhbHNlIDogY29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZTsKICAgICAgICAg
ICAgIGJ1dHRvbi5lbmFibGVkID0gZXJyb3IgIT09ICJ1bnN1cHBvcnRlZCI7CiAgICAgICAgIH0p
OwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dQYWludFJlY3RzU2V0dGluZ0NoYW5nZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9zaG93UGFpbnRSZWN0c1NldHRpbmdDaGFuZ2VkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoUGFnZUFnZW50LnNldFNob3dQYWludFJlY3Rz
KTsKIAogICAgICAgICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0
aXZhdGVkID0gV2ViSW5zcGVjdG9yLnNob3dQYWludFJlY3RzU2V0dGluZy52YWx1ZTsKIAogICAg
ICAgICBQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHModGhpcy5fcGFpbnRGbGFzaGluZ0J1dHRv
bk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd1No
YWRvd0RPTVNldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2hvd1NoYWRvd0RP
TVNldHRpbmdDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvd3NTaGFkb3dE
T01CdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBXZWJJbnNwZWN0b3Iuc2hvd1NoYWRv
d0RPTVNldHRpbmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlU2hvd3NTaGFk
b3dET01TZXR0aW5nOiBmdW5jdGlvbihldmVudCkKKyAgICBfdG9nZ2xlU2hvd3NTaGFkb3dET01T
ZXR0aW5nKGV2ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTaGFkb3dET01T
ZXR0aW5nLnZhbHVlID0gIVdlYkluc3BlY3Rvci5zaG93U2hhZG93RE9NU2V0dGluZy52YWx1ZTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9zaG93U2VhcmNoSGlnaGxpZ2h0czogZnVuY3Rpb24oKQor
ICAgIF9zaG93U2VhcmNoSGlnaGxpZ2h0cygpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9zZWFyY2hJZGVudGlmaWVyKTsKIApAQCAtNTA1LDkgKzUwMSw5IEBAIFdlYkluc3Bl
Y3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAg
ICB0cmVlRWxlbWVudC5oaWdobGlnaHRTZWFyY2hSZXN1bHRzKHRoaXMuX3NlYXJjaFF1ZXJ5KTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9oaWRlU2VhcmNoSGlnaGxpZ2h0czogZnVuY3Rpb24oKQorICAgIF9oaWRlU2VhcmNoSGln
aGxpZ2h0cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3NlYXJjaFJlc3VsdE5vZGVzKQog
ICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZURhdGFHcmlkLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZURhdGFHcmlkLmpzCmluZGV4IGM5MDMxZDIu
LmUyM2IwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTVRyZWVEYXRhR3JpZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlRGF0YUdyaWQuanMKQEAgLTEsNCArMSw1IEBACiAvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
IENvcHlyaWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTIzLDEwICsyNCwxMSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01UcmVlRGF0YUdyaWQg
PSBmdW5jdGlvbigpIHsKLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY2FsbCh0aGlzLCB7Ci0g
ICAgICAgIG5hbWU6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm9kZSIpLCBzb3J0
YWJsZTogZmFsc2UgfQotICAgIH0pOworV2ViSW5zcGVjdG9yLkRPTVRyZWVEYXRhR3JpZCA9IGNs
YXNzIERPTVRyZWVEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXRhR3JpZAoreworICAg
IGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKHtuYW1lOiB7dGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiTm9kZSIpLCBzb3J0YWJsZTogZmFsc2V9fSk7CiAKICAgICAgICAg
dGhpcy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVudCA9IG51bGw7CiAKQEAgLTM1LDIyICszNywyMCBA
QCBXZWJJbnNwZWN0b3IuRE9NVHJlZURhdGFHcmlkID0gZnVuY3Rpb24oKSB7CiAKICAgICAgICAg
dGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX29ubW91c2Vt
b3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5fb25tb3VzZW91dC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci19
OworICAgIH0KIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVEYXRhR3JpZC5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01UcmVlRGF0YUdyaWQsCi0gICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLAorICAgIC8vIFByaXZhdGUKIAot
ICAgIF9vbm1vdXNlbW92ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX29ubW91c2Vtb3ZlKGV2ZW50
KQogICAgIHsKICAgICAgICAgdmFyIGdyaWROb2RlID0gdGhpcy5kYXRhR3JpZE5vZGVGcm9tTm9k
ZShldmVudC50YXJnZXQpOwogICAgICAgICBpZiAoIWdyaWROb2RlIHx8IHRoaXMuX3ByZXZpb3Vz
SG92ZXJlZEVsZW1lbnQgPT09IGdyaWROb2RlLmRvbU5vZGUpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIHRoaXMuX3ByZXZpb3VzSG92ZXJlZEVsZW1lbnQgPSBncmlkTm9kZS5kb21Ob2Rl
OwogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShn
cmlkTm9kZS5kb21Ob2RlLmlkKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9vbm1vdXNlb3V0OiBm
dW5jdGlvbihldmVudCkgeworICAgIF9vbm1vdXNlb3V0KGV2ZW50KSB7CiAgICAgICAgIGlmICgh
dGhpcy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01U
cmVlRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZURhdGFHcmlkTm9kZS5qcwppbmRleCA2ODNhNGFlLi4yNTFiMzg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVl
RGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTVRyZWVEYXRhR3JpZE5vZGUuanMKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAxMyBBZG9iZSBTeXN0ZW1zIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTIzLDI3ICsyNCwyNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01UcmVlRGF0YUdyaWROb2RlID0g
ZnVuY3Rpb24oZG9tTm9kZSkKK1dlYkluc3BlY3Rvci5ET01UcmVlRGF0YUdyaWROb2RlID0gY2xh
c3MgRE9NVHJlZURhdGFHcmlkTm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUK
IHsKLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcyk7CisgICAgY29uc3Ry
dWN0b3IoZG9tTm9kZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5f
bmFtZUxhYmVsID0gbnVsbDsKICAgICAgICAgdGhpcy5fZG9tTm9kZSA9IGRvbU5vZGU7CiAgICAg
ICAgIHRoaXMuX3VwZGF0ZU5vZGVOYW1lKCk7Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLkRP
TVRyZWVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuRE9NVHJlZURhdGFHcmlkTm9kZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUucHJvdG90eXBlLAorICAgIC8vIFB1YmxpYwogICAgIAogICAgIGdldCBkb21O
b2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21Ob2RlOwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gRGF0YUdyaWROb2RlIE92ZXJyaWRlcy4KIAotICAgIGNyZWF0ZUNlbGxDb250
ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQorICAgIGNyZWF0ZUNlbGxDb250
ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCiAgICAgewogICAgICAgICBpZiAoY29sdW1uSWRl
bnRpZmllciAhPT0gIm5hbWUiKQogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGxDb250ZW50LmNhbGwodGhpcywgY29sdW1uSWRl
bnRpZmllciwgY2VsbCk7CkBAIC01MSwxNiArNTIsMTYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVE
YXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICB2YXIgY2VsbCA9IHRoaXMuX21ha2VO
YW1lQ2VsbCgpOwogICAgICAgICB0aGlzLl91cGRhdGVOYW1lQ2VsbERhdGEoKTsKICAgICAgICAg
cmV0dXJuIGNlbGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBk
YXRlTm9kZU5hbWU6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlTm9kZU5hbWUoKQogICAgIHsKICAg
ICAgICAgdGhpcy5kYXRhID0ge25hbWU6IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvck5vZGUo
dGhpcy5fZG9tTm9kZSl9OwotICAgIH0sCisgICAgfQogCi0gICAgX21ha2VOYW1lQ2VsbDogZnVu
Y3Rpb24oKQorICAgIF9tYWtlTmFtZUNlbGwoKQogICAgIHsKICAgICAgICAgdmFyIGZyYWdtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCkBAIC03NCwxNCArNzUsMTQg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAg
ICBnb1RvQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZ29Ub0Fycm93V2Fz
Q2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKICAgICAgICAgcmV0dXJuIGZyYWdtZW50Owot
ICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU5hbWVDZWxsRGF0YTogZnVuY3Rpb24oKQorICAg
IF91cGRhdGVOYW1lQ2VsbERhdGEoKQogICAgIHsKICAgICAgICAgdGhpcy5fbmFtZUxhYmVsLnRl
eHRDb250ZW50ID0gdGhpcy5kYXRhLm5hbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ29Ub0Fy
cm93V2FzQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9nb1RvQXJyb3dXYXNDbGlja2VkKCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93TWFpbkZy
YW1lRE9NVHJlZSh0aGlzLl9kb21Ob2RlLCB0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50
LmpzCmluZGV4IDgwNmIyMDMuLmJiOGY4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50LmpzCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAgKgpAQCAtMjgsNDYgKzI4LDI4IEBACiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG5vZGUs
IGVsZW1lbnRDbG9zZVRhZykKK1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudCA9IGNsYXNzIERP
TVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50Cit7CisgICAgY29u
c3RydWN0b3Iobm9kZSwgZWxlbWVudENsb3NlVGFnKQogICAgIHsKICAgICAgICAgdGhpcy5fZWxl
bWVudENsb3NlVGFnID0gZWxlbWVudENsb3NlVGFnOwogICAgICAgICB2YXIgaGFzQ2hpbGRyZW5P
dmVycmlkZSA9ICFlbGVtZW50Q2xvc2VUYWcgJiYgbm9kZS5oYXNDaGlsZE5vZGVzKCkgJiYgIXRo
aXMuX3Nob3dJbmxpbmVUZXh0KG5vZGUpOwogCiAgICAgICAgIC8vIFRoZSB0aXRsZSB3aWxsIGJl
IHVwZGF0ZWQgaW4gb25hdHRhY2guCi0gICAgVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCAiIiwgbm9k
ZSwgaGFzQ2hpbGRyZW5PdmVycmlkZSk7CisgICAgICAgIHN1cGVyKCIiLCBub2RlLCBoYXNDaGls
ZHJlbk92ZXJyaWRlKTsKIAogICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ub2Rl
VHlwZSgpID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiAhZWxlbWVudENsb3NlVGFnKQogICAgICAg
ICAgICAgdGhpcy5fY2FuQWRkQXR0cmlidXRlcyA9IHRydWU7CiAgICAgICAgIHRoaXMuX3NlYXJj
aFF1ZXJ5ID0gbnVsbDsKICAgICAgICAgdGhpcy5fZXhwYW5kZWRDaGlsZHJlbkxpbWl0ID0gV2Vi
SW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LkluaXRpYWxDaGlsZHJlbkxpbWl0OwotfTsKKyAgICB9
CiAKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5Jbml0aWFsQ2hpbGRyZW5MaW1pdCA9IDUw
MDsKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5NYXhpbXVtSW5saW5lVGV4dENoaWxkTGVu
Z3RoID0gODA7Ci0KLS8vIEEgdW5pb24gb2YgSFRNTDQgYW5kIEhUTUw1LURyYWZ0IGVsZW1lbnRz
IHRoYXQgZXhwbGljaXRseQotLy8gb3IgaW1wbGljaXRseSAoZm9yIEhUTUw1KSBmb3JiaWQgdGhl
IGNsb3NpbmcgdGFnLgotLy8gRklYTUU6IFJldmlzZSBvbmNlIEhUTUw1IEZpbmFsIGlzIHB1Ymxp
c2hlZC4KLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5Gb3JiaWRkZW5DbG9zaW5nVGFnRWxl
bWVudHMgPSBbCi0gICAgImFyZWEiLCAiYmFzZSIsICJiYXNlZm9udCIsICJiciIsICJjYW52YXMi
LCAiY29sIiwgImNvbW1hbmQiLCAiZW1iZWQiLCAiZnJhbWUiLAotICAgICJociIsICJpbWciLCAi
aW5wdXQiLCAiaXNpbmRleCIsICJrZXlnZW4iLCAibGluayIsICJtZXRhIiwgInBhcmFtIiwgInNv
dXJjZSIKLV0ua2V5U2V0KCk7Ci0KLS8vIFRoZXNlIHRhZ3Mgd2UgZG8gbm90IGFsbG93IGVkaXRp
bmcgdGhlaXIgdGFnIG5hbWUuCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuRWRpdFRhZ0Js
YWNrbGlzdCA9IFsKLSAgICAiaHRtbCIsICJoZWFkIiwgImJvZHkiCi1dLmtleVNldCgpOwotCi1X
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuU2VhcmNoSGlnaGxpZ2h0U3R5bGVDbGFzc05hbWUg
PSAic2VhcmNoLWhpZ2hsaWdodCI7Ci1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQuQm91bmN5
SGlnaGxpZ2h0U3R5bGVDbGFzc05hbWUgPSAiYm91bmN5LWhpZ2hsaWdodCI7Ci0KLVdlYkluc3Bl
Y3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgaXNDbG9zZVRhZzogZnVuY3Rp
b24oKQorICAgIGlzQ2xvc2VUYWcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1l
bnRDbG9zZVRhZzsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZ2hsaWdodFNlYXJjaFJlc3VsdHM6
IGZ1bmN0aW9uKHNlYXJjaFF1ZXJ5KQorICAgIGhpZ2hsaWdodFNlYXJjaFJlc3VsdHMoc2VhcmNo
UXVlcnkpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VhcmNoUXVlcnkgIT09IHNlYXJjaFF1
ZXJ5KSB7CiAgICAgICAgICAgICB0aGlzLl91cGRhdGVTZWFyY2hIaWdobGlnaHQoZmFsc2UpOwpA
QCAtNzcsMTUgKzU5LDE1IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX3NlYXJjaFF1ZXJ5ID0gc2VhcmNoUXVlcnk7CiAgICAgICAgIHRo
aXMuX3NlYXJjaEhpZ2hsaWdodHNWaXNpYmxlID0gdHJ1ZTsKICAgICAgICAgdGhpcy51cGRhdGVU
aXRsZSh0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGVTZWFyY2hIaWdobGlnaHRzOiBm
dW5jdGlvbigpCisgICAgaGlkZVNlYXJjaEhpZ2hsaWdodHMoKQogICAgIHsKICAgICAgICAgZGVs
ZXRlIHRoaXMuX3NlYXJjaEhpZ2hsaWdodHNWaXNpYmxlOwogICAgICAgICB0aGlzLl91cGRhdGVT
ZWFyY2hIaWdobGlnaHQoZmFsc2UpOwotICAgIH0sCisgICAgfQogCi0gICAgZW1waGFzaXplU2Vh
cmNoSGlnaGxpZ2h0OiBmdW5jdGlvbigpCisgICAgZW1waGFzaXplU2VhcmNoSGlnaGxpZ2h0KCkK
ICAgICB7CiAgICAgICAgIHZhciBoaWdobGlnaHRFbGVtZW50ID0gdGhpcy50aXRsZS5xdWVyeVNl
bGVjdG9yKCIuIiArIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5TZWFyY2hIaWdobGlnaHRT
dHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGhpZ2hsaWdodEVsZW1lbnQp
OwpAQCAtMTE2LDkgKzk4LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2JvdW5jeUhpZ2hsaWdodEVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigid2Via2l0QW5pbWF0aW9uRW5kIiwgYW5pbWF0aW9uRW5kZWQuYmlu
ZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU2VhcmNoSGlnaGxpZ2h0OiBm
dW5jdGlvbihzaG93KQorICAgIF91cGRhdGVTZWFyY2hIaWdobGlnaHQoc2hvdykKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5faGlnaGxpZ2h0UmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTUyLDEyICsxMzQsMTIgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBmb3IgKHZhciBpID0gMCwgc2l6ZSA9IHRoaXMuX2hpZ2hsaWdodFJl
c3VsdC5sZW5ndGg7IGkgPCBzaXplOyArK2kpCiAgICAgICAgICAgICB1cGRhdGVyKHRoaXMuX2hp
Z2hsaWdodFJlc3VsdFtpXSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaG92ZXJlZCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5faG92ZXJlZDsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCBob3ZlcmVkKHgpCiAgICAgewpAQCAtMTc0LDEyICsxNTYsMTIgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB0aGlzLmxpc3RJ
dGVtRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJob3ZlcmVkIik7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCBleHBhbmRlZENoaWxkcmVuTGltaXQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkQ2hpbGRyZW5MaW1pdDsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCBleHBhbmRlZENoaWxkcmVuTGltaXQoeCkKICAgICB7CkBA
IC0xODksNyArMTcxLDcgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fZXhwYW5kZWRDaGlsZHJlbkxpbWl0ID0geDsKICAgICAgICAgaWYg
KHRoaXMudHJlZU91dGxpbmUgJiYgIXRoaXMuX3VwZGF0ZUNoaWxkcmVuSW5Qcm9ncmVzcykKICAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUNoaWxkcmVuKHRydWUpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGV4cGFuZGVkQ2hpbGRDb3VudCgpCiAgICAgewpAQCAtMTk5LDkgKzE4MSw5IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmIChjb3Vu
dCAmJiB0aGlzLmNoaWxkcmVuW2NvdW50IC0gMV0uZXhwYW5kQWxsQnV0dG9uKQogICAgICAgICAg
ICAgY291bnQtLTsKICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgIH0sCisgICAgfQogCi0gICAg
c2hvd0NoaWxkOiBmdW5jdGlvbihpbmRleCkKKyAgICBzaG93Q2hpbGQoaW5kZXgpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fZWxlbWVudENsb3NlVGFnKTsKICAgICAgICAg
aWYgKHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKQEAgLTIxNCw5ICsxOTYsOSBAQCBXZWJJbnNwZWN0
b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFdoZXRoZXIgaW5k
ZXgtdGggY2hpbGQgaXMgdmlzaWJsZSBpbiB0aGUgY2hpbGRyZW4gdHJlZQogICAgICAgICByZXR1
cm4gdGhpcy5leHBhbmRlZENoaWxkQ291bnQgPiBpbmRleDsKLSAgICB9LAorICAgIH0KIAotICAg
IF9jcmVhdGVUb29sdGlwRm9yTm9kZTogZnVuY3Rpb24oKQorICAgIF9jcmVhdGVUb29sdGlwRm9y
Tm9kZSgpCiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7
CiAgICAgICAgIGlmICghbm9kZS5ub2RlTmFtZSgpIHx8IG5vZGUubm9kZU5hbWUoKS50b0xvd2Vy
Q2FzZSgpICE9PSAiaW1nIikKQEAgLTI1Niw5ICsyMzgsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJl
ZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgb2JqZWN0LnJlbGVhc2UoKTsKICAg
ICAgICAgfQogICAgICAgICBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnJlc29sdmVOb2RlKG5v
ZGUsICIiLCByZXNvbHZlZE5vZGUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1
cGRhdGVTZWxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVTZWxlY3Rpb24oKQogICAgIHsK
ICAgICAgICAgdmFyIGxpc3RJdGVtRWxlbWVudCA9IHRoaXMubGlzdEl0ZW1FbGVtZW50OwogICAg
ICAgICBpZiAoIWxpc3RJdGVtRWxlbWVudCkKQEAgLTI3Nyw5ICsyNTksOSBAQCBXZWJJbnNwZWN0
b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhp
cy5zZWxlY3Rpb25FbGVtZW50LnN0eWxlLmhlaWdodCA9IGxpc3RJdGVtRWxlbWVudC5vZmZzZXRI
ZWlnaHQgKyAicHgiOwotICAgIH0sCisgICAgfQogCi0gICAgb25hdHRhY2g6IGZ1bmN0aW9uKCkK
KyAgICBvbmF0dGFjaCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faG92ZXJlZCkgewogICAg
ICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3Rpb24oKTsKQEAgLTI4OSw1MSArMjcxLDU3IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudXBk
YXRlVGl0bGUoKTsKICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuZHJhZ2dhYmxlID0gdHJ1
ZTsKICAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJhZ3N0
YXJ0IiwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnBvcHVsYXRlOiBmdW5jdGlvbigp
CisgICAgb25wb3B1bGF0ZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5n
dGggfHwgdGhpcy5fc2hvd0lubGluZVRleHQodGhpcy5yZXByZXNlbnRlZE9iamVjdCkgfHwgdGhp
cy5fZWxlbWVudENsb3NlVGFnKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
dXBkYXRlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAotICAgIGV4cGFuZFJlY3Vyc2l2ZWx5
OiBmdW5jdGlvbigpCisgICAgc3VwZXJFeHBhbmRSZWN1cnNpdmVseSgpCisgICAgeworICAgICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgdG8gYWxsb3cgdXNpbmcgc3VwZXIgaW4gYSBjYWxs
YmFjay4KKyAgICAgICAgc3VwZXIuZXhwYW5kUmVjdXJzaXZlbHkoTnVtYmVyLk1BWF9WQUxVRSk7
CisgICAgfQorCisgICAgZXhwYW5kUmVjdXJzaXZlbHkoKQogICAgIHsKICAgICAgICAgZnVuY3Rp
b24gY2FsbGJhY2soKQogICAgICAgICB7Ci0gICAgICAgICAgICBUcmVlRWxlbWVudC5wcm90b3R5
cGUuZXhwYW5kUmVjdXJzaXZlbHkuY2FsbCh0aGlzLCBOdW1iZXIuTUFYX1ZBTFVFKTsKKyAgICAg
ICAgICAgIHRoaXMuc3VwZXJFeHBhbmRSZWN1cnNpdmVseSgpOwogICAgICAgICB9CiAKICAgICAg
ICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5nZXRTdWJ0cmVlKC0xLCBjYWxsYmFjay5iaW5kKHRo
aXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbihmdWxs
UmVmcmVzaCkKKyAgICB1cGRhdGVDaGlsZHJlbihmdWxsUmVmcmVzaCkKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZ2V0Q2hpbGROb2Rlcyh0aGlzLl91cGRhdGVDaGlsZHJl
bi5iaW5kKHRoaXMsIGZ1bGxSZWZyZXNoKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpbnNlcnRD
aGlsZEVsZW1lbnQ6IGZ1bmN0aW9uKGNoaWxkLCBpbmRleCwgY2xvc2luZ1RhZykKKyAgICBpbnNl
cnRDaGlsZEVsZW1lbnQoY2hpbGQsIGluZGV4LCBjbG9zaW5nVGFnKQogICAgIHsKICAgICAgICAg
dmFyIG5ld0VsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50KGNoaWxkLCBj
bG9zaW5nVGFnKTsKICAgICAgICAgbmV3RWxlbWVudC5zZWxlY3RhYmxlID0gdGhpcy50cmVlT3V0
bGluZS5fc2VsZWN0RW5hYmxlZDsKICAgICAgICAgdGhpcy5pbnNlcnRDaGlsZChuZXdFbGVtZW50
LCBpbmRleCk7CiAgICAgICAgIHJldHVybiBuZXdFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0g
ICAgbW92ZUNoaWxkOiBmdW5jdGlvbihjaGlsZCwgdGFyZ2V0SW5kZXgpCisgICAgbW92ZUNoaWxk
KGNoaWxkLCB0YXJnZXRJbmRleCkKICAgICB7CiAgICAgICAgIHZhciB3YXNTZWxlY3RlZCA9IGNo
aWxkLnNlbGVjdGVkOwogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKGNoaWxkKTsKICAgICAgICAg
dGhpcy5pbnNlcnRDaGlsZChjaGlsZCwgdGFyZ2V0SW5kZXgpOwogICAgICAgICBpZiAod2FzU2Vs
ZWN0ZWQpCiAgICAgICAgICAgICBjaGlsZC5zZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF91cGRhdGVDaGlsZHJlbjogZnVuY3Rpb24oZnVsbFJlZnJlc2gpCisgICAgX3VwZGF0ZUNoaWxk
cmVuKGZ1bGxSZWZyZXNoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUNoaWxkcmVu
SW5Qcm9ncmVzcyB8fCAhdGhpcy50cmVlT3V0bGluZS5fdmlzaWJsZSkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTQyMSwyNSArNDA5LDI1IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlQ2hp
bGRyZW5JblByb2dyZXNzOwotICAgIH0sCisgICAgfQogCi0gICAgYWRqdXN0Q29sbGFwc2VkUmFu
Z2U6IGZ1bmN0aW9uKCkKKyAgICBhZGp1c3RDb2xsYXBzZWRSYW5nZSgpCiAgICAgewogICAgICAg
ICAvLyBFbnN1cmUgcHJlY29uZGl0aW9uOiBvbmx5IHRoZSB0cmVlIGVsZW1lbnRzIGZvciBub2Rl
IGNoaWxkcmVuIGFyZSBmb3VuZCBpbiB0aGUgdHJlZQogICAgICAgICAvLyAobm90IHRoZSBFeHBh
bmQgQWxsIGJ1dHRvbiBvciB0aGUgY2xvc2luZyB0YWcpLgogICAgICAgICBpZiAodGhpcy5leHBh
bmRBbGxCdXR0b25FbGVtZW50ICYmIHRoaXMuZXhwYW5kQWxsQnV0dG9uRWxlbWVudC5fX3RyZWVF
bGVtZW50LnBhcmVudCkKICAgICAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQodGhpcy5leHBhbmRB
bGxCdXR0b25FbGVtZW50Ll9fdHJlZUVsZW1lbnQpOwogCi0gICAgICAgIGNvbnN0IG5vZGUgPSB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0OworICAgICAgICB2YXIgbm9kZSA9IHRoaXMucmVwcmVzZW50
ZWRPYmplY3Q7CiAgICAgICAgIGlmICghbm9kZS5jaGlsZHJlbikKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgY29uc3QgY2hpbGROb2RlQ291bnQgPSBub2RlLmNoaWxkcmVuLmxlbmd0aDsK
KyAgICAgICAgdmFyIGNoaWxkTm9kZUNvdW50ID0gbm9kZS5jaGlsZHJlbi5sZW5ndGg7CiAKICAg
ICAgICAgLy8gSW4gY2FzZSBzb21lIG5vZGVzIGZyb20gdGhlIGV4cGFuZGVkIHJhbmdlIHdlcmUg
cmVtb3ZlZCwgcHVsbCBzb21lIG5vZGVzIGZyb20gdGhlIGNvbGxhcHNlZCByYW5nZSBpbnRvIHRo
ZSBleHBhbmRlZCByYW5nZSBhdCB0aGUgYm90dG9tLgogICAgICAgICBmb3IgKHZhciBpID0gdGhp
cy5leHBhbmRlZENoaWxkQ291bnQsIGxpbWl0ID0gTWF0aC5taW4odGhpcy5leHBhbmRlZENoaWxk
cmVuTGltaXQsIGNoaWxkTm9kZUNvdW50KTsgaSA8IGxpbWl0OyArK2kpCiAgICAgICAgICAgICB0
aGlzLmluc2VydENoaWxkRWxlbWVudChub2RlLmNoaWxkcmVuW2ldLCBpKTsKIAotICAgICAgICBj
b25zdCBleHBhbmRlZENoaWxkQ291bnQgPSB0aGlzLmV4cGFuZGVkQ2hpbGRDb3VudDsKKyAgICAg
ICAgdmFyIGV4cGFuZGVkQ2hpbGRDb3VudCA9IHRoaXMuZXhwYW5kZWRDaGlsZENvdW50OwogICAg
ICAgICBpZiAoY2hpbGROb2RlQ291bnQgPiB0aGlzLmV4cGFuZGVkQ2hpbGRDb3VudCkgewogICAg
ICAgICAgICAgdmFyIHRhcmdldEJ1dHRvbkluZGV4ID0gZXhwYW5kZWRDaGlsZENvdW50OwogICAg
ICAgICAgICAgaWYgKCF0aGlzLmV4cGFuZEFsbEJ1dHRvbkVsZW1lbnQpIHsKQEAgLTQ0Nyw3ICs0
MzUsNyBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgIGJ1dHRvbi5jbGFzc05hbWUgPSAic2hvdy1hbGwtbm9kZXMiOwogICAgICAgICAg
ICAgICAgIGJ1dHRvbi52YWx1ZSA9ICIiOwogCi0gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBu
ZXcgVHJlZUVsZW1lbnQoYnV0dG9uLCBudWxsLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgdmFy
IGl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KGJ1dHRvbiwgbnVsbCwgZmFsc2Up
OwogICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0YWJsZSA9IGZhbHNlOwogICAgICAgICAgICAg
ICAgIGl0ZW0uZXhwYW5kQWxsQnV0dG9uID0gdHJ1ZTsKIApAQCAtNDYxLDMyICs0NDksMzIgQEAg
V2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuZXhwYW5kQWxsQnV0dG9uRWxlbWVudC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2hvdyBBbGwgTm9kZXMgKCVkIE1vcmUpIikuZm9ybWF0KGNoaWxkTm9kZUNvdW50IC0g
ZXhwYW5kZWRDaGlsZENvdW50KTsKICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmV4cGFuZEFsbEJ1
dHRvbkVsZW1lbnQpCiAgICAgICAgICAgICBkZWxldGUgdGhpcy5leHBhbmRBbGxCdXR0b25FbGVt
ZW50OwotICAgIH0sCisgICAgfQogCi0gICAgaGFuZGxlTG9hZEFsbENoaWxkcmVuOiBmdW5jdGlv
bigpCisgICAgaGFuZGxlTG9hZEFsbENoaWxkcmVuKCkKICAgICB7CiAgICAgICAgIHRoaXMuZXhw
YW5kZWRDaGlsZHJlbkxpbWl0ID0gTWF0aC5tYXgodGhpcy5yZXByZXNlbnRlZE9iamVjdC5jaGls
ZE5vZGVDb3VudCwgdGhpcy5leHBhbmRlZENoaWxkcmVuTGltaXQgKyBXZWJJbnNwZWN0b3IuRE9N
VHJlZUVsZW1lbnQuSW5pdGlhbENoaWxkcmVuTGltaXQpOwotICAgIH0sCisgICAgfQogCi0gICAg
b25leHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICBvbmV4cGFuZCgpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fZWxlbWVudENsb3NlVGFnKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRo
aXMudXBkYXRlVGl0bGUoKTsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZS51cGRhdGVTZWxlY3Rp
b24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBv
bmNvbGxhcHNlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50Q2xvc2VUYWcpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwogICAgICAg
ICB0aGlzLnRyZWVPdXRsaW5lLnVwZGF0ZVNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0g
ICAgb25yZXZlYWw6IGZ1bmN0aW9uKCkKKyAgICBvbnJldmVhbCgpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5saXN0SXRlbUVsZW1lbnQpIHsKICAgICAgICAgICAgIHZhciB0YWdTcGFucyA9IHRo
aXMubGlzdEl0ZW1FbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImh0bWwtdGFnLW5hbWUi
KTsKQEAgLTQ5NSw5ICs0ODMsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1F
bGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOwogICAgICAgICB9Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBvbnNlbGVjdDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlV
c2VyKQorICAgIG9uc2VsZWN0KHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAg
ICAgICAgIHRoaXMudHJlZU91dGxpbmUuc3VwcHJlc3NSZXZlYWxBbmRTZWxlY3QgPSB0cnVlOwog
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlbGVjdERPTU5vZGUodGhpcy5yZXByZXNlbnRlZE9i
amVjdCwgc2VsZWN0ZWRCeVVzZXIpOwpAQCAtNTA1LDE0ICs0OTMsMTQgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5k
b21UcmVlTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaWQp
OwogICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGlvbigpOwogICAgICAgICB0aGlzLnRyZWVPdXRs
aW5lLnN1cHByZXNzUmV2ZWFsQW5kU2VsZWN0ID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBvbmRlc2VsZWN0OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBvbmRlc2VsZWN0KHRyZWVF
bGVtZW50KQogICAgIHsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5zZWxlY3RET01Ob2RlKG51
bGwpOwotICAgIH0sCisgICAgfQogCi0gICAgb25kZWxldGU6IGZ1bmN0aW9uKCkKKyAgICBvbmRl
bGV0ZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5yZXByZXNlbnRlZE9iamVjdC5pc0luU2hh
ZG93VHJlZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNTIzLDkgKzUxMSw5IEBA
IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHRoaXMucmVtb3ZlKCk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0s
CisgICAgfQogCi0gICAgb25lbnRlcjogZnVuY3Rpb24oKQorICAgIG9uZW50ZXIoKQogICAgIHsK
ICAgICAgICAgLy8gT24gRW50ZXIgb3IgUmV0dXJuIHN0YXJ0IGVkaXRpbmcgdGhlIGZpcnN0IGF0
dHJpYnV0ZQogICAgICAgICAvLyBvciBjcmVhdGUgYSBuZXcgYXR0cmlidXRlIG9uIHRoZSBzZWxl
Y3RlZCBlbGVtZW50LgpAQCAtNTM2LDkgKzUyNCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxl
bWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gcHJldmVudCBhIG5ld2xpbmUgZnJvbSBi
ZWluZyBpbW1lZGlhdGVseSBpbnNlcnRlZAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNlbGVjdE9uTW91c2VEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBzZWxl
Y3RPbk1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIFRyZWVFbGVtZW50LnByb3RvdHlw
ZS5zZWxlY3RPbk1vdXNlRG93bi5jYWxsKHRoaXMsIGV2ZW50KTsKIApAQCAtNTQ4LDkgKzUzNiw5
IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8v
IFByZXZlbnQgc2VsZWN0aW5nIHRoZSBuZWFyZXN0IHdvcmQgb24gZG91YmxlIGNsaWNrLgogICAg
ICAgICBpZiAoZXZlbnQuZGV0YWlsID49IDIpCiAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgb25kYmxjbGljazogZnVuY3Rpb24oZXZlbnQp
CisgICAgb25kYmxjbGljayhldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lZGl0aW5n
IHx8IHRoaXMuX2VsZW1lbnRDbG9zZVRhZykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTU2MCw5
ICs1NDgsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGlmICh0aGlzLmhhc0NoaWxkcmVuICYmICF0aGlzLmV4cGFuZGVkKQogICAgICAgICAg
ICAgdGhpcy5leHBhbmQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pbnNlcnRJbkxhc3RBdHRy
aWJ1dGVQb3NpdGlvbjogZnVuY3Rpb24odGFnLCBub2RlKQorICAgIF9pbnNlcnRJbkxhc3RBdHRy
aWJ1dGVQb3NpdGlvbih0YWcsIG5vZGUpCiAgICAgewogICAgICAgICBpZiAodGFnLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoImh0bWwtYXR0cmlidXRlIikubGVuZ3RoID4gMCkKICAgICAgICAgICAg
IHRhZy5pbnNlcnRCZWZvcmUobm9kZSwgdGFnLmxhc3RDaGlsZCk7CkBAIC01NzUsOSArNTYzLDkg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
c3RhcnRFZGl0aW5nVGFyZ2V0OiBmdW5jdGlvbihldmVudFRhcmdldCkKKyAgICBfc3RhcnRFZGl0
aW5nVGFyZ2V0KGV2ZW50VGFyZ2V0KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxp
bmUuc2VsZWN0ZWRET01Ob2RlKCkgIT09IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC02MDUsOSArNTkzLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZGROZXdB
dHRyaWJ1dGUoKTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcG9wdWxhdGVUYWdDb250ZXh0TWVudTogZnVuY3Rpb24oY29udGV4dE1lbnUsIGV2ZW50KQor
ICAgIF9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCkKICAgICB7CiAg
ICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAgICAgICAgaWYgKCFu
b2RlLmlzSW5TaGFkb3dUcmVlKCkpIHsKQEAgLTYyOSw5ICs2MTcsOSBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3BvcHVsYXRlTm9k
ZUNvbnRleHRNZW51KGNvbnRleHRNZW51KTsKICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5fcG9w
dWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgdGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVGb3JjZWRQc2V1ZG9TdGF0ZUl0ZW1zOiBmdW5j
dGlvbihzdWJNZW51KQorICAgIF9wb3B1bGF0ZUZvcmNlZFBzZXVkb1N0YXRlSXRlbXMoc3ViTWVu
dSkKICAgICB7CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKICAg
ICAgICAgdmFyIGVuYWJsZWRQc2V1ZG9DbGFzc2VzID0gbm9kZS5lbmFibGVkUHNldWRvQ2xhc3Nl
czsKQEAgLTY0MywxOCArNjMxLDE4IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgbm9kZS5zZXRQc2V1ZG9DbGFzc0VuYWJsZWQocHNl
dWRvQ2xhc3MsICFlbmFibGVkKTsKICAgICAgICAgICAgIH0sIGVuYWJsZWQsIGZhbHNlKTsKICAg
ICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVUZXh0Q29udGV4dE1lbnU6
IGZ1bmN0aW9uKGNvbnRleHRNZW51LCB0ZXh0Tm9kZSkKKyAgICBfcG9wdWxhdGVUZXh0Q29udGV4
dE1lbnUoY29udGV4dE1lbnUsIHRleHROb2RlKQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICBpZiAoIW5vZGUuaXNJblNoYWRvd1RyZWUo
KSkKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJFZGl0IFRleHQiKSwgdGhpcy5fc3RhcnRFZGl0aW5nVGV4dE5vZGUuYmluZCh0aGlzLCB0
ZXh0Tm9kZSkpOwogCiAgICAgICAgIHRoaXMuX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51KGNvbnRl
eHRNZW51KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3B1bGF0ZU5vZGVDb250ZXh0TWVudTog
ZnVuY3Rpb24oY29udGV4dE1lbnUpCisgICAgX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51KGNvbnRl
eHRNZW51KQogICAgIHsKICAgICAgICAgLy8gQWRkIGZyZWUtZm9ybSBub2RlLXJlbGF0ZWQgYWN0
aW9ucy4KICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwpAQCAtNjYz
LDkgKzY1MSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb3B5
IGFzIEhUTUwiKSwgdGhpcy5fY29weUhUTUwuYmluZCh0aGlzKSk7CiAgICAgICAgIGlmICghbm9k
ZS5pc0luU2hhZG93VHJlZSgpKQogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRlbGV0ZSBOb2RlIiksIHRoaXMucmVtb3ZlLmJpbmQodGhp
cykpOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0YXJ0RWRpdGluZzogZnVuY3Rpb24oKQorICAg
IF9zdGFydEVkaXRpbmcoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUuc2Vs
ZWN0ZWRET01Ob2RlKCkgIT09IHRoaXMucmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC02ODksOSArNjc3LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0
aW5nVGV4dE5vZGUodGV4dE5vZGUpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWRkTmV3QXR0cmlidXRlOiBmdW5jdGlvbigpCisg
ICAgX2FkZE5ld0F0dHJpYnV0ZSgpCiAgICAgewogICAgICAgICAvLyBDYW5ub3QganVzdCBjb252
ZXJ0IHRoZSB0ZXh0dWFsIGh0bWwgaW50byBhbiBlbGVtZW50IHdpdGhvdXQKICAgICAgICAgLy8g
YSBwYXJlbnQgbm9kZS4gVXNlIGEgdGVtcG9yYXJ5IHNwYW4gY29udGFpbmVyIGZvciB0aGUgSFRN
TC4KQEAgLTcwNCw5ICs2OTIsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICB2YXIgdGFnID0gdGhpcy5saXN0SXRlbUVsZW1lbnQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgiaHRtbC10YWciKVswXTsKICAgICAgICAgdGhpcy5faW5zZXJ0SW5MYXN0
QXR0cmlidXRlUG9zaXRpb24odGFnLCBhdHRyKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0
RWRpdGluZ0F0dHJpYnV0ZShhdHRyLCBhdHRyKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmln
Z2VyRWRpdEF0dHJpYnV0ZTogZnVuY3Rpb24oYXR0cmlidXRlTmFtZSkKKyAgICBfdHJpZ2dlckVk
aXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkKICAgICB7CiAgICAgICAgIHZhciBhdHRyaWJ1dGVF
bGVtZW50cyA9IHRoaXMubGlzdEl0ZW1FbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImh0
bWwtYXR0cmlidXRlLW5hbWUiKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGF0dHJp
YnV0ZUVsZW1lbnRzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7CkBAIC03MjAsOSArNzA4LDkgQEAg
V2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9zdGFy
dEVkaXRpbmdBdHRyaWJ1dGU6IGZ1bmN0aW9uKGF0dHJpYnV0ZSwgZWxlbWVudEZvclNlbGVjdGlv
bikKKyAgICBfc3RhcnRFZGl0aW5nQXR0cmlidXRlKGF0dHJpYnV0ZSwgZWxlbWVudEZvclNlbGVj
dGlvbikKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuaXNCZWluZ0VkaXRlZChhdHRy
aWJ1dGUpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC03NTYsOSArNzQ0LDkgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoZWxlbWVudEZvclNlbGVjdGlvbiwgMCwgZWxl
bWVudEZvclNlbGVjdGlvbiwgMSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc3RhcnRFZGl0aW5nVGV4dE5vZGU6IGZ1bmN0aW9uKHRleHROb2RlKQorICAg
IF9zdGFydEVkaXRpbmdUZXh0Tm9kZSh0ZXh0Tm9kZSkKICAgICB7CiAgICAgICAgIGlmIChXZWJJ
bnNwZWN0b3IuaXNCZWluZ0VkaXRlZCh0ZXh0Tm9kZSkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTc2OSw5ICs3NTcsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudCh0
ZXh0Tm9kZSwgMCwgdGV4dE5vZGUsIDEpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0s
CisgICAgfQogCi0gICAgX3N0YXJ0RWRpdGluZ1RhZ05hbWU6IGZ1bmN0aW9uKHRhZ05hbWVFbGVt
ZW50KQorICAgIF9zdGFydEVkaXRpbmdUYWdOYW1lKHRhZ05hbWVFbGVtZW50KQogICAgIHsKICAg
ICAgICAgaWYgKCF0YWdOYW1lRWxlbWVudCkgewogICAgICAgICAgICAgdGFnTmFtZUVsZW1lbnQg
PSB0aGlzLmxpc3RJdGVtRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJodG1sLXRhZy1u
YW1lIilbMF07CkBAIC04MTIsOSArODAwLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IFdlYkluc3BlY3Rvci5zdGFy
dEVkaXRpbmcodGFnTmFtZUVsZW1lbnQsIGNvbmZpZyk7CiAgICAgICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5zZXRCYXNlQW5kRXh0ZW50KHRhZ05hbWVFbGVtZW50LCAwLCB0YWdOYW1lRWxlbWVu
dCwgMSk7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0YXJ0
RWRpdGluZ0FzSFRNTDogZnVuY3Rpb24oY29tbWl0Q2FsbGJhY2ssIGVycm9yLCBpbml0aWFsVmFs
dWUpCisgICAgX3N0YXJ0RWRpdGluZ0FzSFRNTChjb21taXRDYWxsYmFjaywgZXJyb3IsIGluaXRp
YWxWYWx1ZSkKICAgICB7CiAgICAgICAgIGlmIChlcnJvcikKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTg2OCw5ICs4NTYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICB2YXIgY29uZmlnID0gbmV3IFdlYkluc3BlY3Rvci5FZGl0aW5nQ29uZmln
KGNvbW1pdC5iaW5kKHRoaXMpLCBkaXNwb3NlLmJpbmQodGhpcykpOwogICAgICAgICBjb25maWcu
c2V0TXVsdGlsaW5lKHRydWUpOwogICAgICAgICB0aGlzLl9lZGl0aW5nID0gV2ViSW5zcGVjdG9y
LnN0YXJ0RWRpdGluZyh0aGlzLl9odG1sRWRpdEVsZW1lbnQsIGNvbmZpZyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfYXR0cmlidXRlRWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwg
bmV3VGV4dCwgb2xkVGV4dCwgYXR0cmlidXRlTmFtZSwgbW92ZURpcmVjdGlvbikKKyAgICBfYXR0
cmlidXRlRWRpdGluZ0NvbW1pdHRlZChlbGVtZW50LCBuZXdUZXh0LCBvbGRUZXh0LCBhdHRyaWJ1
dGVOYW1lLCBtb3ZlRGlyZWN0aW9uKQogICAgIHsKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IGZh
bHNlOwogCkBAIC05MjUsOSArOTEzLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
c2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG5ld1RleHQsIG1vdmVUb05leHRBdHRyaWJ1dGVJ
Zk5lZWRlZC5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90YWdOYW1lRWRpdGlu
Z0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgdGFnTmFtZSwg
bW92ZURpcmVjdGlvbikKKyAgICBfdGFnTmFtZUVkaXRpbmdDb21taXR0ZWQoZWxlbWVudCwgbmV3
VGV4dCwgb2xkVGV4dCwgdGFnTmFtZSwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAgICAgIHRo
aXMuX2VkaXRpbmcgPSBmYWxzZTsKICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwpAQCAtOTg2LDkg
Kzk3NCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnNldE5vZGVOYW1lKG5ld1Rl
eHQsIGNoYW5nZVRhZ05hbWVDYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGV4dE5v
ZGVFZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCBuZXdUZXh0KQorICAgIF90ZXh0
Tm9kZUVkaXRpbmdDb21taXR0ZWQoZWxlbWVudCwgbmV3VGV4dCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2VkaXRpbmcgPSBmYWxzZTsKIApAQCAtMTAwMSwxNyArOTg5LDE3IEBAIFdlYkluc3BlY3Rv
ci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0ZXh0Tm9kZSA9IHRo
aXMucmVwcmVzZW50ZWRPYmplY3Q7CiAKICAgICAgICAgdGV4dE5vZGUuc2V0Tm9kZVZhbHVlKG5l
d1RleHQsIHRoaXMudXBkYXRlVGl0bGUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4dCkKKyAgICBfZWRp
dGluZ0NhbmNlbGxlZChlbGVtZW50LCBjb250ZXh0KQogICAgIHsKICAgICAgICAgdGhpcy5fZWRp
dGluZyA9IGZhbHNlOwogCiAgICAgICAgIC8vIE5lZWQgdG8gcmVzdG9yZSBhdHRyaWJ1dGVzIHN0
cnVjdHVyZS4KICAgICAgICAgdGhpcy51cGRhdGVUaXRsZSgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2Rpc3RpbmN0Q2xvc2luZ1RhZ0VsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICBfZGlzdGluY3RD
bG9zaW5nVGFnRWxlbWVudCgpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogSW1wcm92ZSB0aGUg
VHJlZSBFbGVtZW50IC8gT3V0bGluZSBBYnN0cmFjdGlvbiB0byBwcmV2ZW50IGNyYXdsaW5nIHRo
ZSBET00KIApAQCAtMTAyNyw5ICsxMDE1LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gbnVsbCBpbiB0aGUgY2FzZSB3aGVyZSB0aGVyZSBp
c24ndCBhIGNsb3NpbmcgdGFnLgogICAgICAgICB2YXIgdGFncyA9IHRoaXMubGlzdEl0ZW1FbGVt
ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImh0bWwtdGFnIik7CiAgICAgICAgIHJldHVybiAo
dGFncy5sZW5ndGggPT09IDEgPyBudWxsIDogdGFnc1t0YWdzLmxlbmd0aCAtIDFdKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHVwZGF0ZVRpdGxlOiBmdW5jdGlvbihvbmx5U2VhcmNoUXVlcnlDaGFu
Z2VkKQorICAgIHVwZGF0ZVRpdGxlKG9ubHlTZWFyY2hRdWVyeUNoYW5nZWQpCiAgICAgewogICAg
ICAgICAvLyBJZiB3ZSBhcmUgZWRpdGluZywgcmV0dXJuIGVhcmx5IHRvIHByZXZlbnQgY2FuY2Vs
aW5nIHRoZSBlZGl0LgogICAgICAgICAvLyBBZnRlciBlZGl0aW5nIGlzIGNvbW1pdHRlZCB1cGRh
dGVUaXRsZSB3aWxsIGJlIGNhbGxlZC4KQEAgLTEwNDgsOSArMTAzNiw5IEBAIFdlYkluc3BlY3Rv
ci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLnNlbGVj
dGlvbkVsZW1lbnQ7CiAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0aW9uKCk7CiAgICAgICAgIHRo
aXMuX2hpZ2hsaWdodFNlYXJjaFJlc3VsdHMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9idWls
ZEF0dHJpYnV0ZURPTTogZnVuY3Rpb24ocGFyZW50RWxlbWVudCwgbmFtZSwgdmFsdWUsIG5vZGUp
CisgICAgX2J1aWxkQXR0cmlidXRlRE9NKHBhcmVudEVsZW1lbnQsIG5hbWUsIHZhbHVlLCBub2Rl
KQogICAgIHsKICAgICAgICAgdmFyIGhhc1RleHQgPSAodmFsdWUubGVuZ3RoID4gMCk7CiAgICAg
ICAgIHZhciBhdHRyU3BhbkVsZW1lbnQgPSBwYXJlbnRFbGVtZW50LmNyZWF0ZUNoaWxkKCJzcGFu
IiwgImh0bWwtYXR0cmlidXRlIik7CkBAIC0xMDg3LDkgKzEwNzUsOSBAQCBXZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChoYXNUZXh0KQogICAg
ICAgICAgICAgYXR0clNwYW5FbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJcIiIpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9idWlsZFRhZ0RPTTogZnVuY3Rpb24o
cGFyZW50RWxlbWVudCwgdGFnTmFtZSwgaXNDbG9zaW5nVGFnLCBpc0Rpc3RpbmN0VHJlZUVsZW1l
bnQpCisgICAgX2J1aWxkVGFnRE9NKHBhcmVudEVsZW1lbnQsIHRhZ05hbWUsIGlzQ2xvc2luZ1Rh
ZywgaXNEaXN0aW5jdFRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICB2YXIgY2xhc3NlcyA9IFsgImh0bWwtdGFnIiBd
OwpAQCAtMTExMSwxMyArMTA5OSwyMCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogICAgICAgICB9CiAgICAgICAgIHRhZ0VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoIj4iKSk7CiAgICAgICAgIHBhcmVudEVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlx1MjAwQiIpKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9ub2RlVGl0bGVJbmZvOiBmdW5jdGlvbigpCisgICAgX25vZGVUaXRsZUluZm8oKQog
ICAgIHsKICAgICAgICAgdmFyIG5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAg
ICB2YXIgaW5mbyA9IHt0aXRsZURPTTogZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
LCBoYXNDaGlsZHJlbjogdGhpcy5oYXNDaGlsZHJlbn07CiAKKyAgICAgICAgZnVuY3Rpb24gdHJp
bWVkTm9kZVZhbHVlKCkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gVHJpbSBlbXB0eSBsaW5l
cyBmcm9tIHRoZSBiZWdpbm5pbmcgYW5kIGV4dHJhIHNwYWNlIGF0IHRoZSBlbmQgc2luY2UgbW9z
dCBzdHlsZSBhbmQgc2NyaXB0IHRhZ3MgYmVnaW4gd2l0aCBhIG5ld2xpbmUKKyAgICAgICAgICAg
IC8vIGFuZCBlbmQgd2l0aCBhIG5ld2xpbmUgYW5kIGluZGVudGF0aW9uIGZvciB0aGUgZW5kIHRh
Zy4KKyAgICAgICAgICAgIHJldHVybiBub2RlLm5vZGVWYWx1ZSgpLnJlcGxhY2UoL15bXG5ccl0q
LywgIiIpLnJlcGxhY2UoL1xzKiQvLCAiIik7CisgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2gg
KG5vZGUubm9kZVR5cGUoKSkgewogICAgICAgICAgICAgY2FzZSBOb2RlLkRPQ1VNRU5UX0ZSQUdN
RU5UX05PREU6CiAgICAgICAgICAgICAgICAgdmFyIGZyYWdtZW50RWxlbWVudCA9IGluZm8udGl0
bGVET00uY3JlYXRlQ2hpbGQoInNwYW4iLCAid2Via2l0LWh0bWwtZnJhZ21lbnQiKTsKQEAgLTEx
NzcsMTMgKzExNzIsNiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIE5vZGUuVEVYVF9O
T0RFOgotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRyaW1lZE5vZGVWYWx1ZSgpCi0gICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAvLyBUcmltIGVtcHR5IGxpbmVzIGZyb20g
dGhlIGJlZ2lubmluZyBhbmQgZXh0cmEgc3BhY2UgYXQgdGhlIGVuZCBzaW5jZSBtb3N0IHN0eWxl
IGFuZCBzY3JpcHQgdGFncyBiZWdpbiB3aXRoIGEgbmV3bGluZQotICAgICAgICAgICAgICAgICAg
ICAvLyBhbmQgZW5kIHdpdGggYSBuZXdsaW5lIGFuZCBpbmRlbnRhdGlvbiBmb3IgdGhlIGVuZCB0
YWcuCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlLm5vZGVWYWx1ZSgpLnJlcGxhY2Uo
L15bXG5ccl0qLywgIiIpLnJlcGxhY2UoL1xzKiQvLCAiIik7Ci0gICAgICAgICAgICAgICAgfQot
CiAgICAgICAgICAgICAgICAgaWYgKG5vZGUucGFyZW50Tm9kZSAmJiBub2RlLnBhcmVudE5vZGUu
bm9kZU5hbWUoKS50b0xvd2VyQ2FzZSgpID09PSAic2NyaXB0IikgewogICAgICAgICAgICAgICAg
ICAgICB2YXIgbmV3Tm9kZSA9IGluZm8udGl0bGVET00uY3JlYXRlQ2hpbGQoInNwYW4iLCAiaHRt
bC10ZXh0LW5vZGUgbGFyZ2UiKTsKICAgICAgICAgICAgICAgICAgICAgbmV3Tm9kZS5hcHBlbmRD
aGlsZChXZWJJbnNwZWN0b3Iuc3ludGF4SGlnaGxpZ2h0U3RyaW5nQXNEb2N1bWVudEZyYWdtZW50
KHRyaW1lZE5vZGVWYWx1ZSgpLCAidGV4dC9qYXZhc2NyaXB0IikpOwpAQCAtMTIzNyw5ICsxMjI1
LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
fQogCiAgICAgICAgIHJldHVybiBpbmZvOwotICAgIH0sCisgICAgfQogCi0gICAgX3NpbmdsZVRl
eHRDaGlsZDogZnVuY3Rpb24obm9kZSkKKyAgICBfc2luZ2xlVGV4dENoaWxkKG5vZGUpCiAgICAg
ewogICAgICAgICBpZiAoIW5vZGUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTEyNTMs
OSArMTI0MSw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgdmFyIHNpYmxpbmcgPSBmaXJzdENoaWxkLm5leHRTaWJsaW5nOwogICAgICAgICBy
ZXR1cm4gc2libGluZyA/IG51bGwgOiBmaXJzdENoaWxkOwotICAgIH0sCisgICAgfQogCi0gICAg
X3Nob3dJbmxpbmVUZXh0OiBmdW5jdGlvbihub2RlKQorICAgIF9zaG93SW5saW5lVGV4dChub2Rl
KQogICAgIHsKICAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUoKSA9PT0gTm9kZS5FTEVNRU5UX05P
REUpIHsKICAgICAgICAgICAgIHZhciB0ZXh0Q2hpbGQgPSB0aGlzLl9zaW5nbGVUZXh0Q2hpbGQo
bm9kZSk7CkBAIC0xMjYzLDkgKzEyNTEsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZTogZnVuY3Rp
b24oKQorICAgIHJlbW92ZSgpCiAgICAgewogICAgICAgICB2YXIgcGFyZW50RWxlbWVudCA9IHRo
aXMucGFyZW50OwogICAgICAgICBpZiAoIXBhcmVudEVsZW1lbnQpCkBAIC0xMjg1LDkgKzEyNzMs
OSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVOb2RlKHJlbW92ZU5vZGVD
YWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZWRpdEFzSFRNTDogZnVuY3Rpb24oKQor
ICAgIF9lZGl0QXNIVE1MKCkKICAgICB7CiAgICAgICAgIHZhciB0cmVlT3V0bGluZSA9IHRoaXMu
dHJlZU91dGxpbmU7CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsK
QEAgLTEzMjIsMTQgKzEzMTAsMTQgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIG5vZGUuZ2V0T3V0ZXJIVE1MKHRoaXMuX3N0
YXJ0RWRpdGluZ0FzSFRNTC5iaW5kKHRoaXMsIGNvbW1pdENoYW5nZSkpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2NvcHlIVE1MOiBmdW5jdGlvbigpCisgICAgX2NvcHlIVE1MKCkKICAgICB7CiAg
ICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuY29weU5vZGUoKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9oaWdobGlnaHRTZWFyY2hSZXN1bHRzOiBmdW5jdGlvbigpCisgICAgX2hpZ2hsaWdo
dFNlYXJjaFJlc3VsdHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnRpdGxlIHx8ICF0aGlz
Ll9zZWFyY2hRdWVyeSB8fCAhdGhpcy5fc2VhcmNoSGlnaGxpZ2h0c1Zpc2libGUpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xMzU2LDEzICsxMzQ0LDMwIEBAIFdlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5faGlnaGxpZ2h0UmVzdWx0ID0g
W107CiAgICAgICAgIFdlYkluc3BlY3Rvci5oaWdobGlnaHRSYW5nZXNXaXRoU3R5bGVDbGFzcyh0
aGlzLnRpdGxlLCBtYXRjaFJhbmdlcywgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LlNlYXJj
aEhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lLCB0aGlzLl9oaWdobGlnaHRSZXN1bHQpOwotICAgIH0s
CisgICAgfQogCi0gICAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUV2
ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICJkcmFnc3RhcnQi
ICYmIHRoaXMuX2VkaXRpbmcpCiAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwog
ICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90
b19fID0gVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50
LkluaXRpYWxDaGlsZHJlbkxpbWl0ID0gNTAwOworV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50
Lk1heGltdW1JbmxpbmVUZXh0Q2hpbGRMZW5ndGggPSA4MDsKKworLy8gQSB1bmlvbiBvZiBIVE1M
NCBhbmQgSFRNTDUtRHJhZnQgZWxlbWVudHMgdGhhdCBleHBsaWNpdGx5CisvLyBvciBpbXBsaWNp
dGx5IChmb3IgSFRNTDUpIGZvcmJpZCB0aGUgY2xvc2luZyB0YWcuCisvLyBGSVhNRTogUmV2aXNl
IG9uY2UgSFRNTDUgRmluYWwgaXMgcHVibGlzaGVkLgorV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVt
ZW50LkZvcmJpZGRlbkNsb3NpbmdUYWdFbGVtZW50cyA9IFsKKyAgICAiYXJlYSIsICJiYXNlIiwg
ImJhc2Vmb250IiwgImJyIiwgImNhbnZhcyIsICJjb2wiLCAiY29tbWFuZCIsICJlbWJlZCIsICJm
cmFtZSIsCisgICAgImhyIiwgImltZyIsICJpbnB1dCIsICJpc2luZGV4IiwgImtleWdlbiIsICJs
aW5rIiwgIm1ldGEiLCAicGFyYW0iLCAic291cmNlIgorXS5rZXlTZXQoKTsKKworLy8gVGhlc2Ug
dGFncyB3ZSBkbyBub3QgYWxsb3cgZWRpdGluZyB0aGVpciB0YWcgbmFtZS4KK1dlYkluc3BlY3Rv
ci5ET01UcmVlRWxlbWVudC5FZGl0VGFnQmxhY2tsaXN0ID0gWworICAgICJodG1sIiwgImhlYWQi
LCAiYm9keSIKK10ua2V5U2V0KCk7CisKK1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5TZWFy
Y2hIaWdobGlnaHRTdHlsZUNsYXNzTmFtZSA9ICJzZWFyY2gtaGlnaGxpZ2h0IjsKK1dlYkluc3Bl
Y3Rvci5ET01UcmVlRWxlbWVudC5Cb3VuY3lIaWdobGlnaHRTdHlsZUNsYXNzTmFtZSA9ICJib3Vu
Y3ktaGlnaGxpZ2h0IjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVu
dC5qcwppbmRleCA1MWM3YTE0Li4yMTA5NGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVs
ZW1lbnRQYXRoQ29tcG9uZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw3ICsyMywxMCBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhD
b21wb25lbnQgPSBmdW5jdGlvbihkb21UcmVlRWxlbWVudCwgcmVwcmVzZW50ZWRPYmplY3QpIHsK
K1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQgPSBjbGFzcyBET01UcmVl
RWxlbWVudFBhdGhDb21wb25lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0
aENvbXBvbmVudAoreworICAgIGNvbnN0cnVjdG9yKGRvbVRyZWVFbGVtZW50LCByZXByZXNlbnRl
ZE9iamVjdCkKKyAgICB7CiAgICAgICAgIHZhciBub2RlID0gZG9tVHJlZUVsZW1lbnQucmVwcmVz
ZW50ZWRPYmplY3Q7CiAKICAgICAgICAgdmFyIHRpdGxlID0gbnVsbDsKQEAgLTgzLDM1ICs4Niwy
NCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50ID0gZnVuY3Rpb24o
ZG9tVHJlZUVsZW1lbnQsIHJlcHJlc2VudGVkTwogICAgICAgICAgICAgdGl0bGUgPSBub2RlLm5v
ZGVOYW1lSW5Db3JyZWN0Q2FzZSgpOwogICAgICAgICB9CiAKLSAgICBXZWJJbnNwZWN0b3IuSGll
cmFyY2hpY2FsUGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIHRpdGxlLCBjbGFzc05hbWUsIHJlcHJl
c2VudGVkT2JqZWN0IHx8IGRvbVRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICAg
ICAgc3VwZXIodGl0bGUsIGNsYXNzTmFtZSwgcmVwcmVzZW50ZWRPYmplY3QgfHwgZG9tVHJlZUVs
ZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpOwogCiAgICAgICAgIHRoaXMuX2RvbVRyZWVFbGVtZW50
ID0gZG9tVHJlZUVsZW1lbnQ7Ci19OwotCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRo
Q29tcG9uZW50LkRPTUVsZW1lbnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLWVsZW1lbnQtaWNv
biI7Ci1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTVRleHROb2Rl
SWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS10ZXh0LW5vZGUtaWNvbiI7Ci1XZWJJbnNwZWN0b3Iu
RE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTUNvbW1lbnRJY29uU3R5bGVDbGFzc05hbWUg
PSAiZG9tLWNvbW1lbnQtaWNvbiI7Ci1XZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29t
cG9uZW50LkRPTURvY3VtZW50VHlwZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tZG9jdW1lbnQt
dHlwZS1pY29uIjsKLVdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9N
RG9jdW1lbnRJY29uU3R5bGVDbGFzc05hbWUgPSAiZG9tLWRvY3VtZW50LWljb24iOwotV2ViSW5z
cGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01DaGFyYWN0ZXJEYXRhSWNvblN0
eWxlQ2xhc3NOYW1lID0gImRvbS1jaGFyYWN0ZXItZGF0YS1pY29uIjsKLVdlYkluc3BlY3Rvci5E
T01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NTm9kZUljb25TdHlsZUNsYXNzTmFtZSA9ICJk
b20tbm9kZS1pY29uIjsKLQotV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVu
dC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01UcmVlRWxl
bWVudFBhdGhDb21wb25lbnQsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZG9t
VHJlZUVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbVRyZWVFbGVtZW50
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByZXZpb3VzU2libGluZygpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX2RvbVRyZWVFbGVtZW50LnByZXZpb3VzU2libGluZykKICAgICAgICAg
ICAgIHJldHVybiBudWxsOwogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5ET01UcmVl
RWxlbWVudFBhdGhDb21wb25lbnQodGhpcy5fZG9tVHJlZUVsZW1lbnQucHJldmlvdXNTaWJsaW5n
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBuZXh0U2libGluZygpCiAgICAgewpAQCAtMTIw
LDIwICsxMTIsMjYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9kb21UcmVlRWxlbWVudC5uZXh0U2libGlu
Zy5pc0Nsb3NlVGFnKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgcmV0dXJu
IG5ldyBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50KHRoaXMuX2RvbVRy
ZWVFbGVtZW50Lm5leHRTaWJsaW5nKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3Rl
ZAogCi0gICAgbW91c2VPdmVyOiBmdW5jdGlvbigpCisgICAgbW91c2VPdmVyKCkKICAgICB7CiAg
ICAgICAgIHZhciBub2RlSWQgPSB0aGlzLl9kb21UcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVj
dC5pZDsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZ2hsaWdodERPTU5v
ZGUobm9kZUlkKTsKLSAgICB9LAorICAgIH0KIAotICAgIG1vdXNlT3V0OiBmdW5jdGlvbigpCisg
ICAgbW91c2VPdXQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2Vy
LmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50UGF0aENvbXBvbmVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01FbGVtZW50SWNvblN0eWxlQ2xhc3NOYW1lID0gImRv
bS1lbGVtZW50LWljb24iOworV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVu
dC5ET01UZXh0Tm9kZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tdGV4dC1ub2RlLWljb24iOwor
V2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01Db21tZW50SWNvblN0
eWxlQ2xhc3NOYW1lID0gImRvbS1jb21tZW50LWljb24iOworV2ViSW5zcGVjdG9yLkRPTVRyZWVF
bGVtZW50UGF0aENvbXBvbmVudC5ET01Eb2N1bWVudFR5cGVJY29uU3R5bGVDbGFzc05hbWUgPSAi
ZG9tLWRvY3VtZW50LXR5cGUtaWNvbiI7CitXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRo
Q29tcG9uZW50LkRPTURvY3VtZW50SWNvblN0eWxlQ2xhc3NOYW1lID0gImRvbS1kb2N1bWVudC1p
Y29uIjsKK1dlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhDb21wb25lbnQuRE9NQ2hhcmFj
dGVyRGF0YUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tY2hhcmFjdGVyLWRhdGEtaWNvbiI7CitX
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LkRPTU5vZGVJY29uU3R5bGVD
bGFzc05hbWUgPSAiZG9tLW5vZGUtaWNvbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCmluZGV4IDg4
NWY3ODQuLjM4MjlhNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTWF0
dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9z
ZXBoIFBlY29yYXJvCiAgKgpAQCAtMjgsNyArMjgsOSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUgPSBmdW5jdGlvbihvbWl0Um9vdERPTU5vZGUsIHNl
bGVjdEVuYWJsZWQsIHNob3dJbkVsZW1lbnRzUGFuZWxFbmFibGVkKQorV2ViSW5zcGVjdG9yLkRP
TVRyZWVPdXRsaW5lID0gY2xhc3MgRE9NVHJlZU91dGxpbmUgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
VHJlZU91dGxpbmUKK3sKKyAgICBjb25zdHJ1Y3RvcihvbWl0Um9vdERPTU5vZGUsIHNlbGVjdEVu
YWJsZWQsIHNob3dJbkVsZW1lbnRzUGFuZWxFbmFibGVkKQogICAgIHsKICAgICAgICAgdGhpcy5l
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKICAgICAgICAgdGhpcy5lbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX29ubW91c2Vkb3duLmJpbmQo
dGhpcyksIGZhbHNlKTsKQEAgLTQwLDEwICs0MiwxMCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91
dGxpbmUgPSBmdW5jdGlvbihvbWl0Um9vdERPTU5vZGUsIHNlbGVjdEVuYWJsZWQsIHNob3dJbkVs
ZQogICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZHJvcCIsIHRoaXMuX29u
ZHJvcC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJkcmFnZW5kIiwgdGhpcy5fb25kcmFnZW5kLmJpbmQodGhpcyksIGZhbHNlKTsKIAot
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGlu
ZS5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJk
b20tdHJlZS1vdXRsaW5lIik7CiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdl
Ykluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsKIAotICAgIFRyZWVP
dXRsaW5lLmNhbGwodGhpcywgdGhpcy5lbGVtZW50KTsKKyAgICAgICAgc3VwZXIodGhpcy5lbGVt
ZW50KTsKIAogICAgICAgICB0aGlzLl9pbmNsdWRlUm9vdERPTU5vZGUgPSAhb21pdFJvb3RET01O
b2RlOwogICAgICAgICB0aGlzLl9zZWxlY3RFbmFibGVkID0gc2VsZWN0RW5hYmxlZDsKQEAgLTYx
LDM0ICs2MywyNCBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUgPSBmdW5jdGlvbihvbWl0
Um9vdERPTU5vZGUsIHNlbGVjdEVuYWJsZWQsIHNob3dJbkVsZQogICAgICAgICB0aGlzLl9oaWRl
RWxlbWVudEtleWJvYXJkU2hvcnRjdXQuaW1wbGljaXRseVByZXZlbnRzRGVmYXVsdCA9IGZhbHNl
OwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93U2hhZG93RE9NU2V0dGluZy5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dTaGFk
b3dET01TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7Ci19OworICAgIH0KIAotLy8gRklYTUU6IE1vdmUg
dG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMu
Ci1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhX
ZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUpOworICAgIC8vIFB1YmxpYwogCi1XZWJJbnNwZWN0
b3IuRE9NVHJlZU91dGxpbmUuU3R5bGVDbGFzc05hbWUgPSAiZG9tLXRyZWUtb3V0bGluZSI7Ci0K
LVdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5FdmVudCA9IHsKLSAgICBTZWxlY3RlZE5vZGVD
aGFuZ2VkOiAiZG9tLXRyZWUtb3V0bGluZS1zZWxlY3RlZC1ub2RlLWNoYW5nZWQiCi19OwotCi1X
ZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUsCi0KLSAgICB3aXJlVG9Eb21BZ2VudDogZnVu
Y3Rpb24oKQorICAgIHdpcmVUb0RvbUFnZW50KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2VsZW1l
bnRzVHJlZVVwZGF0ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVRyZWVVcGRhdGVyKHRoaXMpOwot
ICAgIH0sCisgICAgfQogCi0gICAgY2xvc2U6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZSgpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fZWxlbWVudHNUcmVlVXBkYXRlcikgewogICAgICAgICAgICAg
dGhpcy5fZWxlbWVudHNUcmVlVXBkYXRlci5jbG9zZSgpOwogICAgICAgICAgICAgdGhpcy5fZWxl
bWVudHNUcmVlVXBkYXRlciA9IG51bGw7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAg
IHNldFZpc2libGU6IGZ1bmN0aW9uKHZpc2libGUsIG9taXRGb2N1cykKKyAgICBzZXRWaXNpYmxl
KHZpc2libGUsIG9taXRGb2N1cykKICAgICB7CiAgICAgICAgIHRoaXMuX3Zpc2libGUgPSB2aXNp
YmxlOwogICAgICAgICBpZiAoIXRoaXMuX3Zpc2libGUpCkBAIC05NywyMiArODksMjIgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBk
YXRlTW9kaWZpZWROb2RlcygpOwogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRET01Ob2RlKQog
ICAgICAgICAgICAgdGhpcy5fcmV2ZWFsQW5kU2VsZWN0Tm9kZSh0aGlzLl9zZWxlY3RlZERPTU5v
ZGUsIG9taXRGb2N1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRFdmVudExpc3RlbmVyOiBm
dW5jdGlvbihldmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQorICAgIGFkZEV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2V2ZW50U3VwcG9ydC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRo
aXNPYmplY3QpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjogZnVu
Y3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKKyAgICByZW1vdmVFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCiAgICAgewogICAgICAgICB0
aGlzLl9ldmVudFN1cHBvcnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVy
LCB0aGlzT2JqZWN0KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByb290RE9NTm9kZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcm9vdERPTU5vZGU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBzZXQgcm9vdERPTU5vZGUoeCkKICAgICB7CkBAIC0xMjQsMTkgKzExNiwxOSBAQCBXZWJJ
bnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pc1hN
TE1pbWVUeXBlID0geCAmJiB4LmlzWE1MTm9kZSgpOwogCiAgICAgICAgIHRoaXMudXBkYXRlKCk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaXNYTUxNaW1lVHlwZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5faXNYTUxNaW1lVHlwZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlbGVj
dGVkRE9NTm9kZTogZnVuY3Rpb24oKQorICAgIHNlbGVjdGVkRE9NTm9kZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRET01Ob2RlOwotICAgIH0sCisgICAgfQogCi0gICAg
c2VsZWN0RE9NTm9kZTogZnVuY3Rpb24obm9kZSwgZm9jdXMpCisgICAgc2VsZWN0RE9NTm9kZShu
b2RlLCBmb2N1cykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZERPTU5vZGUgPT09
IG5vZGUpIHsKICAgICAgICAgICAgIHRoaXMuX3JldmVhbEFuZFNlbGVjdE5vZGUobm9kZSwgIWZv
Y3VzKTsKQEAgLTE1MywxNCArMTQ1LDE0IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCBfcmV2ZWFsQW5kU2VsZWN0Tm9kZSB3
aWxsIG5vdCBkbyBhbnl0aGluZyBmb3IgYSBudWxsIG5vZGUuCiAgICAgICAgIGlmICghbm9kZSB8
fCB0aGlzLl9zZWxlY3RlZERPTU5vZGUgPT09IG5vZGUpCiAgICAgICAgICAgICB0aGlzLl9zZWxl
Y3RlZE5vZGVDaGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZWRpdGluZygpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWRpdGluZzsKLSAgICB9LAorICAgIH0KIAotICAg
IHVwZGF0ZTogZnVuY3Rpb24oKQorICAgIHVwZGF0ZSgpCiAgICAgewogICAgICAgICB2YXIgc2Vs
ZWN0ZWROb2RlID0gdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID8gdGhpcy5zZWxlY3RlZFRyZWVF
bGVtZW50LnJlcHJlc2VudGVkT2JqZWN0IDogbnVsbDsKIApAQCAtMTg3LDIyICsxNzksMjIgQEAg
V2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAo
c2VsZWN0ZWROb2RlKQogICAgICAgICAgICAgdGhpcy5fcmV2ZWFsQW5kU2VsZWN0Tm9kZShzZWxl
Y3RlZE5vZGUsIHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlU2VsZWN0aW9uOiBm
dW5jdGlvbigpCisgICAgdXBkYXRlU2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5zZWxlY3RlZFRyZWVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB2YXIg
ZWxlbWVudCA9IHRoaXMudHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKICAgICAgICAg
ZWxlbWVudC51cGRhdGVTZWxlY3Rpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWxlY3Rl
ZE5vZGVDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgX3NlbGVjdGVkTm9kZUNoYW5nZWQoKQogICAg
IHsKICAgICAgICAgdGhpcy5fZXZlbnRTdXBwb3J0LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBmaW5kVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKG5vZGUpCisgICAg
ZmluZFRyZWVFbGVtZW50KG5vZGUpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBpc0FuY2VzdG9y
Tm9kZShhbmNlc3Rvciwgbm9kZSkKICAgICAgICAgewpAQCAtMjIxLDkgKzIxMyw5IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAg
ICByZXR1cm4gdHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVUcmVlRWxl
bWVudEZvcjogZnVuY3Rpb24obm9kZSkKKyAgICBjcmVhdGVUcmVlRWxlbWVudEZvcihub2RlKQog
ICAgIHsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5maW5kVHJlZUVsZW1lbnQobm9k
ZSk7CiAgICAgICAgIGlmICh0cmVlRWxlbWVudCkKQEAgLTIzNiwxNiArMjI4LDUwIEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4g
dHJlZUVsZW1lbnQuY2hpbGRyZW5bbm9kZS5pbmRleF07CiAKICAgICAgICAgcmV0dXJuIG51bGw7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc3VwcHJlc3NSZXZlYWxBbmRTZWxlY3QoeCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9zdXBwcmVzc1JldmVhbEFuZFNlbGVjdCA9PT0geCkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fc3VwcHJlc3NSZXZlYWxBbmRTZWxlY3Qg
PSB4OwotICAgIH0sCisgICAgfQogCi0gICAgX3JldmVhbEFuZFNlbGVjdE5vZGU6IGZ1bmN0aW9u
KG5vZGUsIG9taXRGb2N1cykKKworICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUs
IGV2ZW50LCB0cmVlRWxlbWVudCkKKyAgICB7CisgICAgICAgIHZhciB0YWcgPSBldmVudC50YXJn
ZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiaHRtbC10YWciKTsKKyAgICAgICAgdmFy
IHRleHROb2RlID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoImh0
bWwtdGV4dC1ub2RlIik7CisgICAgICAgIHZhciBjb21tZW50Tm9kZSA9IGV2ZW50LnRhcmdldC5l
bmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJodG1sLWNvbW1lbnQiKTsKKworICAgICAgICB2
YXIgcG9wdWxhdGVkID0gZmFsc2U7CisgICAgICAgIGlmICh0YWcgJiYgdHJlZUVsZW1lbnQuX3Bv
cHVsYXRlVGFnQ29udGV4dE1lbnUpIHsKKyAgICAgICAgICAgIGlmIChwb3B1bGF0ZWQpCisgICAg
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgICAgICB0
cmVlRWxlbWVudC5fcG9wdWxhdGVUYWdDb250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQpOwor
ICAgICAgICAgICAgcG9wdWxhdGVkID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmICh0ZXh0Tm9k
ZSAmJiB0cmVlRWxlbWVudC5fcG9wdWxhdGVUZXh0Q29udGV4dE1lbnUpIHsKKyAgICAgICAgICAg
IGlmIChwb3B1bGF0ZWQpCisgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJh
dG9yKCk7CisgICAgICAgICAgICB0cmVlRWxlbWVudC5fcG9wdWxhdGVUZXh0Q29udGV4dE1lbnUo
Y29udGV4dE1lbnUsIHRleHROb2RlKTsKKyAgICAgICAgICAgIHBvcHVsYXRlZCA9IHRydWU7Cisg
ICAgICAgIH0gZWxzZSBpZiAoY29tbWVudE5vZGUgJiYgdHJlZUVsZW1lbnQuX3BvcHVsYXRlTm9k
ZUNvbnRleHRNZW51KSB7CisgICAgICAgICAgICBpZiAocG9wdWxhdGVkKQorICAgICAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICAgICAgdHJlZUVsZW1l
bnQuX3BvcHVsYXRlTm9kZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCB0ZXh0Tm9kZSk7CisgICAg
ICAgICAgICBwb3B1bGF0ZWQgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHBv
cHVsYXRlZDsKKyAgICB9CisKKyAgICBhZGp1c3RDb2xsYXBzZWRSYW5nZSgpCisgICAgeworICAg
IH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9yZXZlYWxBbmRTZWxlY3ROb2RlKG5vZGUsIG9t
aXRGb2N1cykKICAgICB7CiAgICAgICAgIGlmICghbm9kZSB8fCB0aGlzLl9zdXBwcmVzc1JldmVh
bEFuZFNlbGVjdCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI1NSw5ICsyODEsOSBAQCBXZWJJ
bnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIHRyZWVFbGVtZW50LnJldmVhbEFuZFNlbGVjdChvbWl0Rm9jdXMpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50RnJvbUV2ZW50OiBmdW5jdGlvbihldmVudCkK
KyAgICBfdHJlZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2Ny
b2xsQ29udGFpbmVyID0gdGhpcy5lbGVtZW50LnBhcmVudEVsZW1lbnQ7CiAKQEAgLTI4MSw5ICsz
MDcsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgZWxlbWVudCA9IHRoaXMudHJlZUVsZW1lbnRGcm9tUG9pbnQoeCwgeSArIDIpOwogCiAg
ICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX29ubW91c2Vkb3du
OiBmdW5jdGlvbihldmVudCkKKyAgICBfb25tb3VzZWRvd24oZXZlbnQpCiAgICAgewogICAgICAg
ICB2YXIgZWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsKICAgICAg
ICAgaWYgKCFlbGVtZW50IHx8IGVsZW1lbnQuaXNFdmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmds
ZShldmVudCkpIHsKQEAgLTI5Miw5ICszMTgsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxp
bmUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgZWxlbWVudC5zZWxlY3QoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9vbm1vdXNlbW92ZTogZnVuY3Rpb24oZXZlbnQpCisgICAg
X29ubW91c2Vtb3ZlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl90
cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CiAgICAgICAgIGlmIChlbGVtZW50ICYmIHRoaXMu
X3ByZXZpb3VzSG92ZXJlZEVsZW1lbnQgPT09IGVsZW1lbnQpCkBAIC0zMTUsOSArMzQxLDkgQEAg
V2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAg
ICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5oaWdobGlnaHRET01Ob2RlKGVsZW1l
bnQgPyBlbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LmlkIDogMCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfb25tb3VzZW91dDogZnVuY3Rpb24oZXZlbnQpCisgICAgX29ubW91c2VvdXQoZXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgbm9kZVVuZGVyTW91c2UgPSBkb2N1bWVudC5lbGVtZW50RnJv
bVBvaW50KGV2ZW50LnBhZ2VYLCBldmVudC5wYWdlWSk7CiAgICAgICAgIGlmIChub2RlVW5kZXJN
b3VzZSAmJiBub2RlVW5kZXJNb3VzZS5pc0Rlc2NlbmRhbnQodGhpcy5lbGVtZW50KSkKQEAgLTMy
OSw5ICszNTUsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01O
b2RlSGlnaGxpZ2h0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfb25kcmFnc3RhcnQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9vbmRyYWdzdGFydChldmVudCkKICAgICB7CiAgICAgICAgIHZhciB0
cmVlRWxlbWVudCA9IHRoaXMuX3RyZWVFbGVtZW50RnJvbUV2ZW50KGV2ZW50KTsKICAgICAgICAg
aWYgKCF0cmVlRWxlbWVudCkKQEAgLTM1MCw5ICszNzYsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJl
ZU91dGxpbmUucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFn
ZXIuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9vbmRyYWdvdmVyOiBmdW5jdGlvbihldmVudCkKKyAgICBfb25kcmFn
b3ZlcihldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbm9kZUJlaW5nRHJhZ2dlZCkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3NCwxNiArNDAwLDE2IEBAIFdlYkluc3Bl
Y3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5kcm9wRWZmZWN0ID0gIm1vdmUi
OwogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfb25kcmFnbGVh
dmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbmRyYWdsZWF2ZShldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2NsZWFyRHJhZ092ZXJUcmVlRWxlbWVudE1hcmtlcigpOwogICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfaXNWYWxpZERyYWdTb3VyY2VPclRhcmdldDogZnVuY3Rpb24odHJlZUVsZW1lbnQp
CisgICAgX2lzVmFsaWREcmFnU291cmNlT3JUYXJnZXQodHJlZUVsZW1lbnQpCiAgICAgewogICAg
ICAgICBpZiAoIXRyZWVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzk2
LDExICs0MjIsMjMgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9vbmRyb3A6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbmRyb3AoZXZl
bnQpCiAgICAgewogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworCisgICAgICAgIGZ1
bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBuZXdOb2RlSWQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChlcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZU1vZGlmaWVkTm9kZXMoKTsKKyAgICAgICAgICAgIHZhciBuZXdOb2RlID0gV2ViSW5z
cGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5vZGVGb3JJZChuZXdOb2RlSWQpOworICAgICAgICAgICAg
aWYgKG5ld05vZGUpCisgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RET01Ob2RlKG5ld05vZGUs
IHRydWUpOworICAgICAgICB9CisKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gdGhpcy5fdHJl
ZUVsZW1lbnRGcm9tRXZlbnQoZXZlbnQpOwogICAgICAgICBpZiAodGhpcy5fbm9kZUJlaW5nRHJh
Z2dlZCAmJiB0cmVlRWxlbWVudCkgewogICAgICAgICAgICAgdmFyIHBhcmVudE5vZGU7CkBAIC00
MTUsMzkgKzQ1MywyOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIGFuY2hvck5vZGUgPSBkcmFnVGFyZ2V0Tm9kZTsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIG5ld05vZGVJZCkK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9k
ZXMoKTsKLSAgICAgICAgICAgICAgICB2YXIgbmV3Tm9kZSA9IFdlYkluc3BlY3Rvci5kb21UcmVl
TWFuYWdlci5ub2RlRm9ySWQobmV3Tm9kZUlkKTsKLSAgICAgICAgICAgICAgICBpZiAobmV3Tm9k
ZSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RET01Ob2RlKG5ld05vZGUsIHRydWUp
OwotICAgICAgICAgICAgfQogICAgICAgICAgICAgdGhpcy5fbm9kZUJlaW5nRHJhZ2dlZC5tb3Zl
VG8ocGFyZW50Tm9kZSwgYW5jaG9yTm9kZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBkZWxldGUgdGhpcy5fbm9kZUJlaW5nRHJhZ2dlZDsKLSAgICB9LAorICAg
IH0KIAotICAgIF9vbmRyYWdlbmQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbmRyYWdlbmQoZXZl
bnQpCiAgICAgewogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICB0aGlz
Ll9jbGVhckRyYWdPdmVyVHJlZUVsZW1lbnRNYXJrZXIoKTsKICAgICAgICAgZGVsZXRlIHRoaXMu
X25vZGVCZWluZ0RyYWdnZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXJEcmFnT3ZlclRy
ZWVFbGVtZW50TWFya2VyOiBmdW5jdGlvbigpCisgICAgX2NsZWFyRHJhZ092ZXJUcmVlRWxlbWVu
dE1hcmtlcigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZHJhZ092ZXJUcmVlRWxlbWVudCkg
ewogICAgICAgICAgICAgdGhpcy5fZHJhZ092ZXJUcmVlRWxlbWVudC51cGRhdGVTZWxlY3Rpb24o
KTsKICAgICAgICAgICAgIHRoaXMuX2RyYWdPdmVyVHJlZUVsZW1lbnQubGlzdEl0ZW1FbGVtZW50
LmNsYXNzTGlzdC5yZW1vdmUoImVsZW1lbnRzLWRyYWctb3ZlciIpOwogICAgICAgICAgICAgZGVs
ZXRlIHRoaXMuX2RyYWdPdmVyVHJlZUVsZW1lbnQ7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAotICAgIF9jb250ZXh0TWVudUV2ZW50RmlyZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250
ZXh0TWVudUV2ZW50RmlyZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdHJlZUVsZW1lbnQg
PSB0aGlzLl90cmVlRWxlbWVudEZyb21FdmVudChldmVudCk7CiAgICAgICAgIGlmICghdHJlZUVs
ZW1lbnQpCkBAIC00NTYsNDYgKzQ4NCwxNSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUu
cHJvdG90eXBlID0gewogICAgICAgICB2YXIgY29udGV4dE1lbnUgPSBuZXcgV2ViSW5zcGVjdG9y
LkNvbnRleHRNZW51KGV2ZW50KTsKICAgICAgICAgdGhpcy5wb3B1bGF0ZUNvbnRleHRNZW51KGNv
bnRleHRNZW51LCBldmVudCwgdHJlZUVsZW1lbnQpOwogICAgICAgICBjb250ZXh0TWVudS5zaG93
KCk7Ci0gICAgfSwKLQotICAgIHBvcHVsYXRlQ29udGV4dE1lbnU6IGZ1bmN0aW9uKGNvbnRleHRN
ZW51LCBldmVudCwgdHJlZUVsZW1lbnQpCi0gICAgewotICAgICAgICB2YXIgdGFnID0gZXZlbnQu
dGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoImh0bWwtdGFnIik7Ci0gICAgICAg
IHZhciB0ZXh0Tm9kZSA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNz
KCJodG1sLXRleHQtbm9kZSIpOwotICAgICAgICB2YXIgY29tbWVudE5vZGUgPSBldmVudC50YXJn
ZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcygiaHRtbC1jb21tZW50Iik7Ci0KLSAgICAg
ICAgdmFyIHBvcHVsYXRlZCA9IGZhbHNlOwotICAgICAgICBpZiAodGFnICYmIHRyZWVFbGVtZW50
Ll9wb3B1bGF0ZVRhZ0NvbnRleHRNZW51KSB7Ci0gICAgICAgICAgICBpZiAocG9wdWxhdGVkKQot
ICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAg
ICAgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGFnQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50
KTsKLSAgICAgICAgICAgIHBvcHVsYXRlZCA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSBpZiAodGV4
dE5vZGUgJiYgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGV4dENvbnRleHRNZW51KSB7Ci0gICAgICAg
ICAgICBpZiAocG9wdWxhdGVkKQotICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNl
cGFyYXRvcigpOwotICAgICAgICAgICAgdHJlZUVsZW1lbnQuX3BvcHVsYXRlVGV4dENvbnRleHRN
ZW51KGNvbnRleHRNZW51LCB0ZXh0Tm9kZSk7Ci0gICAgICAgICAgICBwb3B1bGF0ZWQgPSB0cnVl
OwotICAgICAgICB9IGVsc2UgaWYgKGNvbW1lbnROb2RlICYmIHRyZWVFbGVtZW50Ll9wb3B1bGF0
ZU5vZGVDb250ZXh0TWVudSkgewotICAgICAgICAgICAgaWYgKHBvcHVsYXRlZCkKLSAgICAgICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAgICAgIHRyZWVF
bGVtZW50Ll9wb3B1bGF0ZU5vZGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgdGV4dE5vZGUpOwot
ICAgICAgICAgICAgcG9wdWxhdGVkID0gdHJ1ZTsKICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHBv
cHVsYXRlZDsKLSAgICB9LAotCi0gICAgYWRqdXN0Q29sbGFwc2VkUmFuZ2U6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgfSwKLQotICAgIF91cGRhdGVNb2RpZmllZE5vZGVzOiBmdW5jdGlvbigpCisg
ICAgX3VwZGF0ZU1vZGlmaWVkTm9kZXMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1l
bnRzVHJlZVVwZGF0ZXIpCiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50c1RyZWVVcGRhdGVyLl91
cGRhdGVNb2RpZmllZE5vZGVzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVDb250
ZXh0TWVudTogZnVuY3Rpb24oY29udGV4dE1lbnUsIGRvbU5vZGUpCisgICAgX3BvcHVsYXRlQ29u
dGV4dE1lbnUoY29udGV4dE1lbnUsIGRvbU5vZGUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X3Nob3dJbkVsZW1lbnRzUGFuZWxFbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTA3
LDkgKzUwNCw5IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZS5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXZlYWwgaW4gRE9NIFRyZWUi
KSwgcmV2ZWFsRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd1NoYWRvd0RPTVNl
dHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2hvd1NoYWRvd0RPTVNldHRpbmdD
aGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG5vZGVUb1NlbGVjdCA9IHRoaXMuc2Vs
ZWN0ZWRUcmVlRWxlbWVudCA/IHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9i
amVjdCA6IG51bGw7CiAgICAgICAgIHdoaWxlIChub2RlVG9TZWxlY3QpIHsKQEAgLTUyNCw5ICs1
MjEsOSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGlmIChub2RlVG9TZWxlY3QpCiAgICAgICAgICAgICB0aGlzLnNlbGVjdERPTU5vZGUobm9k
ZVRvU2VsZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oaWRlRWxlbWVudDogZnVuY3Rpb24o
ZXZlbnQsIGtleWJvYXJkU2hvcnRjdXQpCisgICAgX2hpZGVFbGVtZW50KGV2ZW50LCBrZXlib2Fy
ZFNob3J0Y3V0KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkVHJlZUVsZW1lbnQg
fHwgV2ViSW5zcGVjdG9yLmlzRWRpdGluZ0FueUZpZWxkKCkpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC01NzcsNCArNTc0LDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lLnByb3RvdHlw
ZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5ET01UcmVl
T3V0bGluZS5FdmVudCA9IHsKKyAgICBTZWxlY3RlZE5vZGVDaGFuZ2VkOiAiZG9tLXRyZWUtb3V0
bGluZS1zZWxlY3RlZC1ub2RlLWNoYW5nZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcwppbmRl
eCBhZDI2ODQxLi5lMzdiODZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywgMjAx
NSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA4
IE1hdHQgTGlsZWsgPHdlYmtpdEBtYXR0bGlsZWsuY29tPgogICogQ29weXJpZ2h0IChDKSAyMDA5
IEpvc2VwaCBQZWNvcmFybwogICoKQEAgLTI4LDcgKzI4LDkgQEAKICAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkRPTVRyZWVVcGRhdGVyID0gZnVuY3Rpb24odHJlZU91dGxpbmUpCitX
ZWJJbnNwZWN0b3IuRE9NVHJlZVVwZGF0ZXIgPSBjbGFzcyBET01UcmVlVXBkYXRlciBleHRlbmRz
IFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcih0cmVlT3V0bGluZSkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Ob2RlSW5zZXJ0ZWQsIHRoaXMuX25v
ZGVJbnNlcnRlZCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5Ob2RlUmVt
b3ZlZCwgdGhpcy5fbm9kZVJlbW92ZWQsIHRoaXMpOwpAQCAtNDAsNjIgKzQyLDY1IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlVXBkYXRlciA9IGZ1bmN0aW9uKHRyZWVPdXRsaW5lKQogCiAgICAgICAg
IHRoaXMuX3RyZWVPdXRsaW5lID0gdHJlZU91dGxpbmU7CiAgICAgICAgIHRoaXMuX3JlY2VudGx5
TW9kaWZpZWROb2RlcyA9IFtdOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5ET01UcmVlVXBk
YXRlci5wcm90b3R5cGUgPSB7Ci0gICAgY2xvc2U6IGZ1bmN0aW9uKCkKKyAgICAvLyBQdWJsaWMK
KworICAgIGNsb3NlKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdl
ci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2RvY3VtZW50VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgLy8gUHJpdmF0ZQor
CisgICAgX2RvY3VtZW50VXBkYXRlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc2V0
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYXR0cmlidXRlc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9hdHRyaWJ1dGVzVXBkYXRlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
X3JlY2VudGx5TW9kaWZpZWROb2Rlcy5wdXNoKHtub2RlOiBldmVudC5kYXRhLm5vZGUsIHVwZGF0
ZWQ6IHRydWV9KTsKICAgICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLl92aXNpYmxlKQogICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc1Nvb24oKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGFy
YWN0ZXJEYXRhTW9kaWZpZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNlbnRseU1v
ZGlmaWVkTm9kZXMucHVzaCh7bm9kZTogZXZlbnQuZGF0YS5ub2RlLCB1cGRhdGVkOiB0cnVlfSk7
CiAgICAgICAgIGlmICh0aGlzLl90cmVlT3V0bGluZS5fdmlzaWJsZSkKICAgICAgICAgICAgIHRo
aXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXNTb29uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbm9k
ZUluc2VydGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbm9kZUluc2VydGVkKGV2ZW50KQogICAg
IHsKICAgICAgICAgdGhpcy5fcmVjZW50bHlNb2RpZmllZE5vZGVzLnB1c2goe25vZGU6IGV2ZW50
LmRhdGEubm9kZSwgcGFyZW50OiBldmVudC5kYXRhLnBhcmVudCwgaW5zZXJ0ZWQ6IHRydWV9KTsK
ICAgICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLl92aXNpYmxlKQogICAgICAgICAgICAgdGhp
cy5fdXBkYXRlTW9kaWZpZWROb2Rlc1Nvb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9ub2Rl
UmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX25vZGVSZW1vdmVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5fcmVjZW50bHlNb2RpZmllZE5vZGVzLnB1c2goe25vZGU6IGV2ZW50LmRh
dGEubm9kZSwgcGFyZW50OiBldmVudC5kYXRhLnBhcmVudCwgcmVtb3ZlZDogdHJ1ZX0pOwogICAg
ICAgICBpZiAodGhpcy5fdHJlZU91dGxpbmUuX3Zpc2libGUpCiAgICAgICAgICAgICB0aGlzLl91
cGRhdGVNb2RpZmllZE5vZGVzU29vbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NoaWxkTm9k
ZUNvdW50VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NoaWxkTm9kZUNvdW50VXBkYXRl
ZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciB0cmVlRWxlbWVudCA9IHRoaXMuX3RyZWVPdXRs
aW5lLmZpbmRUcmVlRWxlbWVudChldmVudC5kYXRhKTsKICAgICAgICAgaWYgKHRyZWVFbGVtZW50
KQogICAgICAgICAgICAgdHJlZUVsZW1lbnQuaGFzQ2hpbGRyZW4gPSBldmVudC5kYXRhLmhhc0No
aWxkTm9kZXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVNb2RpZmllZE5vZGVzU29v
bjogZnVuY3Rpb24oKQorICAgIF91cGRhdGVNb2RpZmllZE5vZGVzU29vbigpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc1RpbWVvdXQpCiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXNUaW1lb3V0ID0gc2V0VGlt
ZW91dCh0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzLmJpbmQodGhpcyksIDApOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3VwZGF0ZU1vZGlmaWVkTm9kZXM6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRl
TW9kaWZpZWROb2RlcygpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdXBkYXRlTW9kaWZpZWRO
b2Rlc1RpbWVvdXQpIHsKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl91cGRhdGVNb2Rp
ZmllZE5vZGVzVGltZW91dCk7CkBAIC0xMzEsOSArMTM2LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVVcGRhdGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSB1cGRhdGVkUGFyZW50
VHJlZUVsZW1lbnRzW2ldLmFscmVhZHlVcGRhdGVkQ2hpbGRyZW47CiAKICAgICAgICAgdGhpcy5f
cmVjZW50bHlNb2RpZmllZE5vZGVzID0gW107Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVzZXQ6
IGZ1bmN0aW9uKCkKKyAgICBfcmVzZXQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRv
bVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAgICAgICAgIHRoaXMuX3JlY2Vu
dGx5TW9kaWZpZWROb2RlcyA9IFtdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZENvbnRhaW5lclZpZXcu
anMKaW5kZXggOTM4MWY3OC4uOWE0ZTJmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkQ29udGFpbmVyVmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRDb250YWlu
ZXJWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMt
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcgPSBm
dW5jdGlvbigpIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CitXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldyA9
IGNsYXNzIERhc2hib2FyZENvbnRhaW5lclZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
Cit7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAg
ICB0aGlzLl90b29sYmFySXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0oImRh
c2hib2FyZC1jb250YWluZXIiLCAiZ3JvdXAiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFjdGl2
aXR5IFZpZXdlciIpKTsKIApAQCAtNDIsMzIgKzQ0LDE0IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9h
cmRDb250YWluZXJWaWV3ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRJbmRl
eCA9IC0xOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUFkdmFuY2VBcnJvd1Zpc2liaWxpdHkoKTsK
LX07Ci0KLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZpc2libGVEYXNoYm9h
cmRTdHlsZUNsYXNzTmFtZSA9ICJ2aXNpYmxlIjsKLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250
YWluZXJWaWV3LkluYWN0aXZlU3R5bGVDbGFzc05hbWUgPSAiaW5hY3RpdmUiOwotCi1XZWJJbnNw
ZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0aW9uID0gewotICAgIEZv
cndhcmQ6ICJkYXNoYm9hcmQtY29udGFpbmVyLXZpZXctYWR2YW5jZS1kaXJlY3Rpb24tZm9yd2Fy
ZCIsCi0gICAgQmFja3dhcmQ6ICJkYXNoYm9hcmQtY29udGFpbmVyLXZpZXctYWR2YW5jZS1kaXJl
Y3Rpb24tYmFja3dhcmQiLAotICAgIE5vbmU6ICJkYXNoYm9hcmQtY29udGFpbmVyLXZpZXctYWR2
YW5jZS1kaXJlY3Rpb24tbm9uZSIKLX07Ci0KLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWlu
ZXJWaWV3LkZvcndhcmRJbmNvbWluZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLWlu
LWRvd24iOwotV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuQmFja3dhcmRJbmNv
bWluZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLWluLXVwIjsKLVdlYkluc3BlY3Rv
ci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkZvcndhcmRPdXRnb2luZ0Rhc2hib2FyZFN0eWxlQ2xh
c3NOYW1lID0gInNsaWRlLW91dC1kb3duIjsKLVdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWlu
ZXJWaWV3LkJhY2t3YXJkT3V0Z29pbmdEYXNoYm9hcmRTdHlsZUNsYXNzTmFtZSA9ICJzbGlkZS1v
dXQtdXAiOwotCi1XZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3
LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdG9vbGJhckl0ZW0oKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3Rvb2xiYXJJdGVtOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGN1cnJl
bnREYXNoYm9hcmRWaWV3KCkKICAgICB7CkBAIC03NSw5ICs1OSw5IEBAIFdlYkluc3BlY3Rvci5E
YXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9kYXNoYm9hcmRTdGFja1t0aGlzLl9jdXJyZW50
SW5kZXhdOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd0Rhc2hib2FyZFZpZXdGb3JSZXByZXNl
bnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgc2hvd0Rhc2hib2Fy
ZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAg
ICAgIHZhciBkYXNoYm9hcmRWaWV3ID0gdGhpcy5fZGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVk
T2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KTsKICAgICAgICAgaWYgKCFkYXNoYm9hcmRWaWV3KQpA
QCAtODksOSArNzMsOSBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2Rhc2hib2FyZFN0YWNrLmluZGV4
T2YoZGFzaGJvYXJkVmlldyk7CiAgICAgICAgIHRoaXMuX3Nob3dEYXNoYm9hcmRBdEluZGV4KGlu
ZGV4KTsKICAgICAgICAgcmV0dXJuIGRhc2hib2FyZFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBoaWRlRGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNl
bnRlZE9iamVjdCkKKyAgICBoaWRlRGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJl
cHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgdmFyIG9ubHlSZXR1cm5FeGlzdGluZ1Zp
ZXdzID0gdHJ1ZTsKICAgICAgICAgdmFyIGRhc2hib2FyZFZpZXcgPSB0aGlzLl9kYXNoYm9hcmRW
aWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QsIG9ubHlSZXR1cm5FeGlz
dGluZ1ZpZXdzKTsKQEAgLTEwMSw5ICs4NSw5IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250
YWluZXJWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9j
dXJyZW50SW5kZXggPiAwKTsKICAgICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZEF0SW5kZXgodGhp
cy5fY3VycmVudEluZGV4IC0gMSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZURhc2hib2Fy
ZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisg
ICAgY2xvc2VEYXNoYm9hcmRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmpl
Y3QpCiAgICAgewogICAgICAgICB2YXIgb25seVJldHVybkV4aXN0aW5nVmlld3MgPSB0cnVlOwog
ICAgICAgICB2YXIgZGFzaGJvYXJkVmlldyA9IHRoaXMuX2Rhc2hib2FyZFZpZXdGb3JSZXByZXNl
bnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgb25seVJldHVybkV4aXN0aW5nVmlld3MpOwpA
QCAtMTExLDM1ICs5NSwzNSBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICB0aGlzLl9j
bG9zZURhc2hib2FyZFZpZXcoZGFzaGJvYXJkVmlldyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBfYWR2YW5jZUZvcndhcmRBcnJvd0NsaWNrZWQ6IGZ1bmN0aW9uKCkK
KyAgICBfYWR2YW5jZUZvcndhcmRBcnJvd0NsaWNrZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5f
c2hvd0Rhc2hib2FyZEF0SW5kZXgodGhpcy5fY3VycmVudEluZGV4ICsgMSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfYWR2YW5jZUJhY2t3YXJkQXJyb3dDbGlja2VkOiBmdW5jdGlvbigpCisgICAg
X2FkdmFuY2VCYWNrd2FyZEFycm93Q2xpY2tlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9zaG93
RGFzaGJvYXJkQXRJbmRleCh0aGlzLl9jdXJyZW50SW5kZXggLSAxKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9kaXNtaXNzQWR2YW5jZUFycm93czogZnVuY3Rpb24oKQorICAgIF9kaXNtaXNzQWR2
YW5jZUFycm93cygpCiAgICAgewogICAgICAgICB0aGlzLl9hZHZhbmNlRm9yd2FyZEFycm93RWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3Lklu
YWN0aXZlU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB0aGlzLl9hZHZhbmNlQmFja3dhcmRBcnJv
d0VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmll
dy5JbmFjdGl2ZVN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVB
ZHZhbmNlQXJyb3dWaXNpYmlsaXR5OiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUFkdmFuY2VBcnJv
d1Zpc2liaWxpdHkoKQogICAgIHsKICAgICAgICAgdmFyIGNhbkFkdmFuY2VGb3J3YXJkID0gdGhp
cy5fY3VycmVudEluZGV4IDwgdGhpcy5fZGFzaGJvYXJkU3RhY2subGVuZ3RoIC0gMTsKICAgICAg
ICAgdmFyIGNhbkFkdmFuY2VCYWNrd2FyZCA9IHRoaXMuX2N1cnJlbnRJbmRleCA+IDA7CiAgICAg
ICAgIHRoaXMuX2FkdmFuY2VGb3J3YXJkQXJyb3dFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2Vi
SW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSwg
IWNhbkFkdmFuY2VGb3J3YXJkKTsKICAgICAgICAgdGhpcy5fYWR2YW5jZUJhY2t3YXJkQXJyb3dF
bGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZp
ZXcuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSwgIWNhbkFkdmFuY2VCYWNrd2FyZCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZGFzaGJvYXJkVmlld0ZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlv
bihyZXByZXNlbnRlZE9iamVjdCwgb25seVJldHVybkV4aXN0aW5nVmlld3MpCisgICAgX2Rhc2hi
b2FyZFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCwgb25seVJldHVy
bkV4aXN0aW5nVmlld3MpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRl
ZE9iamVjdCk7CiAKQEAgLTE1NCw5ICsxMzgsOSBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29u
dGFpbmVyVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIC8v
IE5vIGV4aXN0aW5nIGNvbnRlbnQgdmlldyBmb3VuZCwgbWFrZSBhIG5ldyBvbmUuCi0gICAgICAg
ICAgICBkYXNoYm9hcmRWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3KHJlcHJl
c2VudGVkT2JqZWN0KTsKKyAgICAgICAgICAgIGRhc2hib2FyZFZpZXcgPSBXZWJJbnNwZWN0b3Iu
RGFzaGJvYXJkVmlldy5jcmVhdGUocmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpOworICAgICAgICAgICAgY29uc29s
ZS5lcnJvcihlLCBlLnN0YWNrKTsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9
CiAKQEAgLTE2NCw5ICsxNDgsOSBAQCBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmVsZW1lbnQuYXBwZW5k
Q2hpbGQoZGFzaGJvYXJkVmlldy5lbGVtZW50KTsKIAogICAgICAgICByZXR1cm4gZGFzaGJvYXJk
VmlldzsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93RGFzaGJvYXJkQXRJbmRleDogZnVuY3Rp
b24oaW5kZXgpCisgICAgX3Nob3dEYXNoYm9hcmRBdEluZGV4KGluZGV4KQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoaW5kZXggPj0gMCAmJiBpbmRleCA8PSB0aGlzLl9kYXNoYm9hcmRT
dGFjay5sZW5ndGggLSAxKTsKIApAQCAtMTg1LDkgKzE2OSw5IEBAIFdlYkluc3BlY3Rvci5EYXNo
Ym9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9jdXJyZW50
SW5kZXggPSBpbmRleDsKICAgICAgICAgdGhpcy5fc2hvd0Rhc2hib2FyZFZpZXcodGhpcy5jdXJy
ZW50RGFzaGJvYXJkVmlldywgaXNJbml0aWFsRGFzaGJvYXJkID8gaW5pdGlhbERpcmVjdGlvbiA6
IGFkdmFuY2VEaXJlY3Rpb24pOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dEYXNoYm9hcmRW
aWV3OiBmdW5jdGlvbihkYXNoYm9hcmRWaWV3LCBhZHZhbmNlRGlyZWN0aW9uKQorICAgIF9zaG93
RGFzaGJvYXJkVmlldyhkYXNoYm9hcmRWaWV3LCBhZHZhbmNlRGlyZWN0aW9uKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoZGFzaGJvYXJkVmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5EYXNoYm9hcmRWaWV3KTsKIApAQCAtMjAzLDcgKzE4Nyw2IEBAIFdlYkluc3BlY3Rvci5EYXNo
Ym9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGNvbnRhaW5lciA9
IHRoaXM7CiAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZpc2libGVEYXNoYm9hcmRTdHlsZUNsYXNz
TmFtZSk7CiAKLSAgICAgICAgaWYgKGFuaW1hdGlvbkNsYXNzKSB7CiAgICAgICAgIGZ1bmN0aW9u
IGFuaW1hdGlvbkVuZGVkKGV2ZW50KSB7CiAgICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9
PSBkYXNoYm9hcmRWaWV3LmVsZW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjEy
LDE0ICsxOTUsMTYgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5lclZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoYW5pbWF0aW9uQ2xhc3MpOwogICAgICAgICAgICAgY29udGFpbmVyLl91cGRhdGVBZHZhbmNl
QXJyb3dWaXNpYmlsaXR5KCk7CiAgICAgICAgIH0KKworICAgICAgICBpZiAoYW5pbWF0aW9uQ2xh
c3MpIHsKICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKGFu
aW1hdGlvbkNsYXNzKTsKICAgICAgICAgICAgIGRhc2hib2FyZFZpZXcuZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCk7CiAgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gZGFzaGJvYXJkVmlldzsKLSAgICB9LAorICAgIH0KIAotICAg
IF9oaWRlRGFzaGJvYXJkVmlldzogZnVuY3Rpb24oZGFzaGJvYXJkVmlldywgYWR2YW5jZURpcmVj
dGlvbiwgY2FsbGJhY2spCisgICAgX2hpZGVEYXNoYm9hcmRWaWV3KGRhc2hib2FyZFZpZXcsIGFk
dmFuY2VEaXJlY3Rpb24sIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
ZGFzaGJvYXJkVmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3KTsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5jdXJyZW50RGFzaGJvYXJkVmlldyA9PT0gZGFzaGJv
YXJkVmlldyk7CkBAIC0yMzUsNyArMjIwLDYgQEAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRh
aW5lclZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBjb250YWluZXIgPSB0aGlzOwog
Ci0gICAgICAgIGlmIChhbmltYXRpb25DbGFzcykgewogICAgICAgICBmdW5jdGlvbiBhbmltYXRp
b25FbmRlZChldmVudCkgewogICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZGFzaGJv
YXJkVmlldy5lbGVtZW50KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0OCwxMyArMjMy
LDE1IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgPT09ICJmdW5jdGlvbiIpCiAgICAgICAg
ICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChhbmltYXRpb25D
bGFzcykgewogICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
YW5pbWF0aW9uQ2xhc3MpOwogICAgICAgICAgICAgZGFzaGJvYXJkVmlldy5lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVuZCIsIGFuaW1hdGlvbkVuZGVkKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBkYXNoYm9hcmRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJl
bW92ZShXZWJJbnNwZWN0b3IuRGFzaGJvYXJkQ29udGFpbmVyVmlldy5WaXNpYmxlRGFzaGJvYXJk
U3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nsb3NlRGFzaGJvYXJkVmll
dzogZnVuY3Rpb24oZGFzaGJvYXJkVmlldykKKyAgICBfY2xvc2VEYXNoYm9hcmRWaWV3KGRhc2hi
b2FyZFZpZXcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChkYXNoYm9hcmRWaWV3IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcpOwogCkBAIC0yODIsMyArMjY4LDE3
IEBAIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fdXBkYXRlQWR2YW5jZUFycm93VmlzaWJpbGl0eSgpOwogICAgIH0KIH07CisK
K1dlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LlZpc2libGVEYXNoYm9hcmRTdHls
ZUNsYXNzTmFtZSA9ICJ2aXNpYmxlIjsKK1dlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJW
aWV3LkluYWN0aXZlU3R5bGVDbGFzc05hbWUgPSAiaW5hY3RpdmUiOworCitXZWJJbnNwZWN0b3Iu
RGFzaGJvYXJkQ29udGFpbmVyVmlldy5BZHZhbmNlRGlyZWN0aW9uID0geworICAgIEZvcndhcmQ6
IFN5bWJvbCgiZGFzaGJvYXJkLWNvbnRhaW5lci12aWV3LWFkdmFuY2UtZGlyZWN0aW9uLWZvcndh
cmQiKSwKKyAgICBCYWNrd2FyZDogU3ltYm9sKCJkYXNoYm9hcmQtY29udGFpbmVyLXZpZXctYWR2
YW5jZS1kaXJlY3Rpb24tYmFja3dhcmQiKSwKKyAgICBOb25lOiBTeW1ib2woImRhc2hib2FyZC1j
b250YWluZXItdmlldy1hZHZhbmNlLWRpcmVjdGlvbi1ub25lIikKK307CisKK1dlYkluc3BlY3Rv
ci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkZvcndhcmRJbmNvbWluZ0Rhc2hib2FyZFN0eWxlQ2xh
c3NOYW1lID0gInNsaWRlLWluLWRvd24iOworV2ViSW5zcGVjdG9yLkRhc2hib2FyZENvbnRhaW5l
clZpZXcuQmFja3dhcmRJbmNvbWluZ0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLWlu
LXVwIjsKK1dlYkluc3BlY3Rvci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkZvcndhcmRPdXRnb2lu
Z0Rhc2hib2FyZFN0eWxlQ2xhc3NOYW1lID0gInNsaWRlLW91dC1kb3duIjsKK1dlYkluc3BlY3Rv
ci5EYXNoYm9hcmRDb250YWluZXJWaWV3LkJhY2t3YXJkT3V0Z29pbmdEYXNoYm9hcmRTdHlsZUNs
YXNzTmFtZSA9ICJzbGlkZS1vdXQtdXAiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGFzaGJvYXJkVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rhc2hib2FyZFZpZXcuanMKaW5kZXggYjczNDVj
MC4uNmFmOWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGFzaGJvYXJkVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9EYXNoYm9hcmRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwICsyMywyNSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5E
YXNoYm9hcmRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIGlkZW50aWZpZXIpCitX
ZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyA9IGNsYXNzIERhc2hib2FyZFZpZXcgZXh0ZW5kcyBX
ZWJJbnNwZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3Qs
IGlkZW50aWZpZXIpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsK
KworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0ID0g
cmVwcmVzZW50ZWRPYmplY3Q7CisKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoaWRlbnRpZmllcik7CisgICAgfQorCisgICAgLy8gU3Rh
dGljCisKKyAgICBzdGF0aWMgY3JlYXRlKHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKLSAgICAv
LyBDcmVhdGluZyBhIG5ldyBEYXNoYm9hcmRWaWV3IGRpcmVjdGx5IHJldHVybnMgYW4gaW5zdGFu
Y2Ugb2YgdGhlIHByb3BlciBzdWJjbGFzcy4KLSAgICBpZiAodGhpcy5jb25zdHJ1Y3RvciA9PT0g
V2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcpIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVw
cmVzZW50ZWRPYmplY3QpOwogCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkKQpAQCAtNDEsNTAgKzU2LDMyIEBAIFdl
Ykluc3BlY3Rvci5EYXNoYm9hcmRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QsIGlk
ZW50aWZpZXIpCiAgICAgICAgIHRocm93ICJDYW4ndCBtYWtlIGEgRGFzaGJvYXJkVmlldyBmb3Ig
YW4gdW5rbm93biByZXByZXNlbnRlZE9iamVjdC4iOwogICAgIH0KIAotICAgIC8vIE90aGVyd2lz
ZSwgYSBzdWJjbGFzcyBpcyBjYWxsaW5nIHRoZSBiYXNlIGNvbnN0cnVjdG9yLgotICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuY29uc3RydWN0b3IgIT09IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3
ICYmIHRoaXMgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldyk7Ci0gICAgY29u
c29sZS5hc3NlcnQoaWRlbnRpZmllcik7Ci0KLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAv
LyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLl9yZXByZXNlbnRl
ZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0OwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKGlkZW50aWZpZXIpOwotfTsKLQotV2ViSW5zcGVjdG9yLkRh
c2hib2FyZFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZGFzaGJvYXJkIjsKLQotV2ViSW5zcGVjdG9y
LkRhc2hib2FyZFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuRGFzaGJvYXJkVmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJv
dG90eXBlLAotCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXBy
ZXNlbnRlZE9iamVjdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVwcmVzZW50ZWRP
YmplY3Q7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3du
KCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwK
KyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAg
ICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAg
IGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewogICAgICAgICAvLyBJbXBs
ZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5EYXNoYm9h
cmRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImRhc2hib2FyZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkLmpzCmluZGV4IGU1MmQ4
N2MuLjNjODg2MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0RhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDEyIEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGZ1bmN0aW9u
KGNvbHVtbnNEYXRhLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNrLCBwcmVmZXJyZWRDb2x1
bW5PcmRlcikKK1dlYkluc3BlY3Rvci5EYXRhR3JpZCA9IGNsYXNzIERhdGFHcmlkIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogeworICAgIGNvbnN0cnVjdG9yKGNvbHVtbnNEYXRhLCBlZGl0
Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNrLCBwcmVmZXJyZWRDb2x1bW5PcmRlcikKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCk7CisKICAgICAgICAgdGhpcy5jb2x1bW5zID0gbmV3IE1hcDsKICAgICAg
ICAgdGhpcy5vcmRlcmVkQ29sdW1ucyA9IFtdOwogCkBAIC03Myw2ICs3Nyw3IEBAIFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZCA9IGZ1bmN0aW9uKGNvbHVtbnNEYXRhLCBlZGl0Q2FsbGJhY2ssIGRlbGV0
ZUNhbGxiYWNrLCBwcmVmCiAgICAgICAgICAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fb25kYmxjbGljay5iaW5kKHRoaXMpLCBmYWxz
ZSk7CiAgICAgICAgICAgICB0aGlzLl9lZGl0Q2FsbGJhY2sgPSBlZGl0Q2FsbGJhY2s7CiAgICAg
ICAgIH0KKwogICAgICAgICBpZiAoZGVsZXRlQ2FsbGJhY2spCiAgICAgICAgICAgICB0aGlzLl9k
ZWxldGVDYWxsYmFjayA9IGRlbGV0ZUNhbGxiYWNrOwogCkBAIC05OCwyOCArMTAzLDkgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkID0gZnVuY3Rpb24oY29sdW1uc0RhdGEsIGVkaXRDYWxsYmFjaywg
ZGVsZXRlQ2FsbGJhY2ssIHByZWYKICAgICAgICAgdGhpcy5fZ2VuZXJhdGVTb3J0SW5kaWNhdG9y
SW1hZ2VzSWZOZWVkZWQoKTsKICAgICB9CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudCA9
IHsKLSAgICBEaWRMYXlvdXQ6ICJkYXRhZ3JpZC1kaWQtbGF5b3V0IiwKLSAgICBTb3J0Q2hhbmdl
ZDogImRhdGFncmlkLXNvcnQtY2hhbmdlZCIsCi0gICAgU2VsZWN0ZWROb2RlQ2hhbmdlZDogImRh
dGFncmlkLXNlbGVjdGVkLW5vZGUtY2hhbmdlZCIsCi0gICAgRXhwYW5kZWROb2RlOiAiZGF0YWdy
aWQtZXhwYW5kZWQtbm9kZSIsCi0gICAgQ29sbGFwc2VkTm9kZTogImRhdGFncmlkLWNvbGxhcHNl
ZC1ub2RlIgotfTsKKyAgICAvLyBTdGF0aWMKIAotV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRP
cmRlciA9IHsKLSAgICBJbmRldGVybWluYXRlOiAiZGF0YS1ncmlkLXNvcnQtb3JkZXItaW5kZXRl
cm1pbmF0ZSIsCi0gICAgQXNjZW5kaW5nOiAiZGF0YS1ncmlkLXNvcnQtb3JkZXItYXNjZW5kaW5n
IiwKLSAgICBEZXNjZW5kaW5nOiAiZGF0YS1ncmlkLXNvcnQtb3JkZXItZGVzY2VuZGluZyIKLX07
Ci0KLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5QcmV2aW91c0NvbHVtbk9yZGluYWxTeW1ib2wgPSBT
eW1ib2woInByZXZpb3VzLWNvbHVtbi1vcmRpbmFsIik7Ci1XZWJJbnNwZWN0b3IuRGF0YUdyaWQu
TmV4dENvbHVtbk9yZGluYWxTeW1ib2wgPSBTeW1ib2woIm5leHQtY29sdW1uLW9yZGluYWwiKTsK
LQotV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRDb2x1bW5Bc2NlbmRpbmdTdHlsZUNsYXNzTmFt
ZSA9ICJzb3J0LWFzY2VuZGluZyI7Ci1XZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydENvbHVtbkRl
c2NlbmRpbmdTdHlsZUNsYXNzTmFtZSA9ICJzb3J0LWRlc2NlbmRpbmciOwotV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLlNvcnRhYmxlQ29sdW1uU3R5bGVDbGFzc05hbWUgPSAic29ydGFibGUiOwotCi1X
ZWJJbnNwZWN0b3IuRGF0YUdyaWQuY3JlYXRlU29ydGFibGVEYXRhR3JpZCA9IGZ1bmN0aW9uKGNv
bHVtbk5hbWVzLCB2YWx1ZXMpCisgICAgc3RhdGljIGNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQoY29s
dW1uTmFtZXMsIHZhbHVlcykKICAgICB7CiAgICAgICAgIHZhciBudW1Db2x1bW5zID0gY29sdW1u
TmFtZXMubGVuZ3RoOwogICAgICAgICBpZiAoIW51bUNvbHVtbnMpCkBAIC0xODMsMjEgKzE2OSwy
MiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuY3JlYXRlU29ydGFibGVEYXRhR3JpZCA9IGZ1bmN0
aW9uKGNvbHVtbk5hbWVzLCB2YWx1ZXMpCiAgICAgICAgIHJldHVybiBkYXRhR3JpZDsKICAgICB9
CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CisgICAgLy8gUHVibGljCisK
ICAgICBnZXQgcmVmcmVzaENhbGxiYWNrKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9y
ZWZyZXNoQ2FsbGJhY2s7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcmVmcmVzaENhbGxiYWNr
KHJlZnJlc2hDYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hDYWxsYmFjayA9
IHJlZnJlc2hDYWxsYmFjazsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzb3J0T3JkZXIoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRPcmRlcjsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCBzb3J0T3JkZXIob3JkZXIpCiAgICAgewpAQCAtMjE1LDEyICsyMDIsMTIgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgc29ydEhlYWRlckNlbGxF
bGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRDb2x1bW5E
ZXNjZW5kaW5nU3R5bGVDbGFzc05hbWUsIHRoaXMuX3NvcnRPcmRlciA9PT0gV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLlNvcnRPcmRlci5EZXNjZW5kaW5nKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQp
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvcnRDb2x1bW5JZGVudGlmaWVyKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3J0Q29sdW1uSWRlbnRpZmllcjsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCBzb3J0Q29sdW1uSWRlbnRpZmllcihjb2x1bW5JZGVudGlmaWVyKQogICAg
IHsKQEAgLTI0NiwxNyArMjMzLDE3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX29uZGJsY2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbmRibGNsaWNrKGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmcgfHwgdGhpcy5fZWRpdGluZ05vZGUp
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc3RhcnRFZGl0aW5nKGV2ZW50
LnRhcmdldCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhcnRFZGl0aW5nTm9kZUF0Q29sdW1u
SW5kZXg6IGZ1bmN0aW9uKG5vZGUsIGNvbHVtbkluZGV4KQorICAgIF9zdGFydEVkaXRpbmdOb2Rl
QXRDb2x1bW5JbmRleChub2RlLCBjb2x1bW5JbmRleCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KG5vZGUsICJJbnZhbGlkIGFyZ3VtZW50OiBtdXN0IHByb3ZpZGUgRGF0YUdyaWROb2Rl
IHRvIGVkaXQuIik7CiAKQEAgLTI2Nyw5ICsyNTQsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlID0gewogICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX2VkaXRpbmdOb2RlLl9l
bGVtZW50LmNoaWxkcmVuW2NvbHVtbkluZGV4XTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0
RWRpdGluZyhlbGVtZW50LCB0aGlzLl9zdGFydEVkaXRpbmdDb25maWcoZWxlbWVudCkpOwogICAg
ICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChlbGVtZW50LCAwLCBl
bGVtZW50LCAxKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdGFydEVkaXRpbmc6IGZ1bmN0aW9u
KHRhcmdldCkKKyAgICBfc3RhcnRFZGl0aW5nKHRhcmdldCkKICAgICB7CiAgICAgICAgIHZhciBl
bGVtZW50ID0gdGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoInRkIik7CiAg
ICAgICAgIGlmICghZWxlbWVudCkKQEAgLTI5MCwxNCArMjc3LDE0IEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmco
ZWxlbWVudCwgdGhpcy5fc3RhcnRFZGl0aW5nQ29uZmlnKGVsZW1lbnQpKTsKIAogICAgICAgICB3
aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChlbGVtZW50LCAwLCBlbGVtZW50
LCAxKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdGFydEVkaXRpbmdDb25maWc6IGZ1bmN0aW9u
KGVsZW1lbnQpCisgICAgX3N0YXJ0RWRpdGluZ0NvbmZpZyhlbGVtZW50KQogICAgIHsKICAgICAg
ICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZyh0aGlzLl9lZGl0aW5nQ29t
bWl0dGVkLmJpbmQodGhpcyksIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlzKSwgZWxl
bWVudC50ZXh0Q29udGVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZWRpdGluZ0NvbW1pdHRl
ZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgY29udGV4dCwgbW92ZURpcmVj
dGlvbikKKyAgICBfZWRpdGluZ0NvbW1pdHRlZChlbGVtZW50LCBuZXdUZXh0LCBvbGRUZXh0LCBj
b250ZXh0LCBtb3ZlRGlyZWN0aW9uKQogICAgIHsKICAgICAgICAgdmFyIGNvbHVtbklkZW50aWZp
ZXIgPSBlbGVtZW50Ll9fY29sdW1uSWRlbnRpZmllcjsKICAgICAgICAgdmFyIGNvbHVtbkluZGV4
ID0gdGhpcy5vcmRlcmVkQ29sdW1ucy5pbmRleE9mKGNvbHVtbklkZW50aWZpZXIpOwpAQCAtMzQ4
LDE2ICszMzUsMTYgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICB2YXIgdGV4dERpZENoYW5nZSA9IHRleHRCZWZvcmVFZGl0aW5nLnRyaW0oKSAhPT0gbmV3
VGV4dC50cmltKCk7CiAgICAgICAgIG1vdmVUb05leHRDZWxsLmNhbGwodGhpcywgdGV4dERpZENo
YW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rpb24o
ZWxlbWVudCkKKyAgICBfZWRpdGluZ0NhbmNlbGxlZChlbGVtZW50KQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQodGhpcy5fZWRpdGluZ05vZGUuZWxlbWVudCA9PT0gZWxlbWVudC5lbmNs
b3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0ciIpKTsKICAgICAgICAgZGVsZXRlIHRoaXMu
X2VkaXRpbmc7CiAgICAgICAgIHRoaXMuX2VkaXRpbmdOb2RlID0gbnVsbDsKLSAgICB9LAorICAg
IH0KIAotICAgIGF1dG9TaXplQ29sdW1uczogZnVuY3Rpb24obWluUGVyY2VudCwgbWF4UGVyY2Vu
dCwgbWF4RGVzY2VudExldmVsKQorICAgIGF1dG9TaXplQ29sdW1ucyhtaW5QZXJjZW50LCBtYXhQ
ZXJjZW50LCBtYXhEZXNjZW50TGV2ZWwpCiAgICAgewogICAgICAgICBpZiAobWluUGVyY2VudCkK
ICAgICAgICAgICAgIG1pblBlcmNlbnQgPSBNYXRoLm1pbihtaW5QZXJjZW50LCBNYXRoLmZsb29y
KDEwMCAvIHRoaXMub3JkZXJlZENvbHVtbnMubGVuZ3RoKSk7CkBAIC00MjIsOSArNDA5LDkgQEAg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbHVtblsi
ZWxlbWVudCJdLnN0eWxlLndpZHRoID0gd2lkdGhzW2lkZW50aWZpZXJdICsgIiUiOwogICAgICAg
ICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwogICAgICAgICB0aGlzLnVw
ZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgaW5zZXJ0Q29sdW1uOiBmdW5jdGlv
bihjb2x1bW5JZGVudGlmaWVyLCBjb2x1bW5EYXRhLCBpbnNlcnRpb25JbmRleCkKKyAgICBpbnNl
cnRDb2x1bW4oY29sdW1uSWRlbnRpZmllciwgY29sdW1uRGF0YSwgaW5zZXJ0aW9uSW5kZXgpCiAg
ICAgewogICAgICAgICBpZiAoaW5zZXJ0aW9uSW5kZXggPT09IHVuZGVmaW5lZCkKICAgICAgICAg
ICAgIGluc2VydGlvbkluZGV4ID0gdGhpcy5vcmRlcmVkQ29sdW1ucy5sZW5ndGg7CkBAIC01MTYs
OSArNTAzLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBpZiAoY29sdW1uWyJoaWRkZW4iXSkKICAgICAgICAgICAgIHRoaXMuX2hpZGVDb2x1bW4oY29s
dW1uSWRlbnRpZmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVDb2x1bW46IGZ1bmN0
aW9uKGNvbHVtbklkZW50aWZpZXIpCisgICAgcmVtb3ZlQ29sdW1uKGNvbHVtbklkZW50aWZpZXIp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmNvbHVtbnMuaGFzKGNvbHVtbklk
ZW50aWZpZXIpKTsKICAgICAgICAgdmFyIHJlbW92ZWRDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZ2V0
KGNvbHVtbklkZW50aWZpZXIpOwpAQCAtNTUwLDkgKzUzNyw5IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIgY2hpbGQgb2YgdGhpcy5jaGls
ZHJlbikKICAgICAgICAgICAgIGNoaWxkLnJlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9lbnVtZXJhdGVDaGlsZHJlbjogZnVuY3Rpb24ocm9vdE5vZGUsIHJlc3VsdCwgbWF4TGV2ZWwp
CisgICAgX2VudW1lcmF0ZUNoaWxkcmVuKHJvb3ROb2RlLCByZXN1bHQsIG1heExldmVsKQogICAg
IHsKICAgICAgICAgaWYgKCFyb290Tm9kZS5yb290KQogICAgICAgICAgICAgcmVzdWx0LnB1c2go
cm9vdE5vZGUpOwpAQCAtNTYxLDcgKzU0OCw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm9vdE5vZGUuY2hpbGRyZW4u
bGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9lbnVtZXJhdGVDaGlsZHJlbihyb290Tm9k
ZS5jaGlsZHJlbltpXSwgcmVzdWx0LCBtYXhMZXZlbCAtIDEpOwogICAgICAgICByZXR1cm4gcmVz
dWx0OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gVXBkYXRlcyB0aGUgd2lkdGhzIG9mIHRoZSB0
YWJsZSwgaW5jbHVkaW5nIHRoZSBwb3NpdGlvbnMgb2YgdGhlIGNvbHVtbgogICAgIC8vIHJlc2l6
ZXJzLgpAQCAtNTczLDcgKzU2MCw3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUg
PSB7CiAgICAgLy8KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIGlzIG5vdCBjYWxsZWQgYWZ0ZXIg
dGhlIERhdGFHcmlkIGlzIGF0dGFjaGVkIHRvIGl0cwogICAgIC8vIHBhcmVudCBlbGVtZW50LCB0
aGVuIHRoZSBEYXRhR3JpZCdzIGNvbHVtbnMgd2lsbCBub3QgYmUgcmVzaXphYmxlLgotICAgIHVw
ZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAg
ICAvLyBEbyBub3QgYXR0ZW1wdCB0byB1c2Ugb2Zmc2V0ZXMgaWYgd2UncmUgbm90IGF0dGFjaGVk
IHRvIHRoZSBkb2N1bWVudCB0cmVlIHlldC4KICAgICAgICAgaWYgKCF0aGlzLl9jb2x1bW5XaWR0
aHNJbml0aWFsaXplZCAmJiB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGgpIHsKQEAgLTYwMiw5ICs1
ODksOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRo
aXMuX3Bvc2l0aW9uUmVzaXplckVsZW1lbnRzKCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5EaWRMYXlvdXQpOwotICAg
IH0sCisgICAgfQogCi0gICAgY29sdW1uV2lkdGhzTWFwOiBmdW5jdGlvbigpCisgICAgY29sdW1u
V2lkdGhzTWFwKCkKICAgICB7CiAgICAgICAgIHZhciByZXN1bHQgPSB7fTsKICAgICAgICAgZm9y
ICh2YXIgW2lkZW50aWZpZXIsIGNvbHVtbl0gb2YgdGhpcy5jb2x1bW5zKSB7CkBAIC02MTIsOSAr
NTk5LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHJlc3VsdFtjb2x1bW5JZGVudGlmaWVyXSA9IHBhcnNlRmxvYXQod2lkdGgpOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhcHBseUNvbHVt
bldpZHRoc01hcDogZnVuY3Rpb24oY29sdW1uV2lkdGhzTWFwKQorICAgIGFwcGx5Q29sdW1uV2lk
dGhzTWFwKGNvbHVtbldpZHRoc01hcCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIFtpZGVudGlm
aWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1ucykgewogICAgICAgICAgICAgdmFyIHdpZHRoID0g
KGNvbHVtbldpZHRoc01hcFtpZGVudGlmaWVyXSB8fCAwKSArICIlIjsKQEAgLTYyNCwxOSArNjEx
LDE5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2lzQ29s
dW1uVmlzaWJsZTogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAgICBfaXNDb2x1bW5WaXNp
YmxlKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4gIXRoaXMuY29sdW1u
cy5nZXQoY29sdW1uSWRlbnRpZmllcilbImhpZGRlbiJdOwotICAgIH0sCisgICAgfQogCi0gICAg
X3Nob3dDb2x1bW46IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCisgICAgX3Nob3dDb2x1bW4o
Y29sdW1uSWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLmNvbHVtbnMuZ2V0
KGNvbHVtbklkZW50aWZpZXIpWyJoaWRkZW4iXTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oaWRl
Q29sdW1uOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIF9oaWRlQ29sdW1uKGNvbHVt
bklkZW50aWZpZXIpCiAgICAgewogICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5jb2x1bW5zLmdl
dChjb2x1bW5JZGVudGlmaWVyKTsKICAgICAgICAgY29sdW1uWyJoaWRkZW4iXSA9IHRydWU7CkBA
IC02NDUsMjQgKzYzMiwyNCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewog
ICAgICAgICBjb2x1bW5FbGVtZW50LnN0eWxlLndpZHRoID0gMDsKIAogICAgICAgICB0aGlzLl9j
b2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHNjcm9sbENvbnRhaW5lcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2Nyb2xsQ29u
dGFpbmVyRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIGlzU2Nyb2xsZWRUb0xhc3RSb3c6
IGZ1bmN0aW9uKCkKKyAgICBpc1Njcm9sbGVkVG9MYXN0Um93KCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmlzU2Nyb2xsZWRUb0JvdHRvbSgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2Nyb2xsVG9MYXN0Um93OiBmdW5jdGlvbigpCisgICAgc2Ny
b2xsVG9MYXN0Um93KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1l
bnQuc2Nyb2xsVG9wID0gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5zY3JvbGxIZWlnaHQg
LSB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50Lm9mZnNldEhlaWdodDsKLSAgICB9LAorICAg
IH0KIAotICAgIF9wb3NpdGlvblJlc2l6ZXJFbGVtZW50czogZnVuY3Rpb24oKQorICAgIF9wb3Np
dGlvblJlc2l6ZXJFbGVtZW50cygpCiAgICAgewogICAgICAgICB2YXIgbGVmdCA9IDA7CiAgICAg
ICAgIHZhciBwcmV2aW91c1Jlc2l6ZXIgPSBudWxsOwpAQCAtNjk5LDkgKzY4Niw5IEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHBy
ZXZpb3VzUmVzaXplcikKICAgICAgICAgICAgIHByZXZpb3VzUmVzaXplcltXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQuTmV4dENvbHVtbk9yZGluYWxTeW1ib2xdID0gdGhpcy5vcmRlcmVkQ29sdW1ucy5s
ZW5ndGggLSAxOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkUGxhY2Vob2xkZXJOb2RlOiBmdW5j
dGlvbigpCisgICAgYWRkUGxhY2Vob2xkZXJOb2RlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
LnBsYWNlaG9sZGVyTm9kZSkKICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJOb2RlLm1ha2VO
b3JtYWwoKTsKQEAgLTcxMSwxNCArNjk4LDE0IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBlbXB0eURhdGFbaWRlbnRpZmllcl0gPSAiIjsKICAgICAg
ICAgdGhpcy5wbGFjZWhvbGRlck5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlBsYWNlaG9sZGVyRGF0
YUdyaWROb2RlKGVtcHR5RGF0YSk7CiAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodGhpcy5wbGFj
ZWhvbGRlck5vZGUpOwotICAgIH0sCisgICAgfQogCi0gICAgYXBwZW5kQ2hpbGQ6IGZ1bmN0aW9u
KGNoaWxkKQorICAgIGFwcGVuZENoaWxkKGNoaWxkKQogICAgIHsKICAgICAgICAgdGhpcy5pbnNl
cnRDaGlsZChjaGlsZCwgdGhpcy5jaGlsZHJlbi5sZW5ndGgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgaW5zZXJ0Q2hpbGQ6IGZ1bmN0aW9uKGNoaWxkLCBpbmRleCkKKyAgICBpbnNlcnRDaGlsZChj
aGlsZCwgaW5kZXgpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxkKQogICAgICAgICAgICAgdGhy
b3coImluc2VydENoaWxkOiBOb2RlIGNhbid0IGJlIHVuZGVmaW5lZCBvciBudWxsLiIpOwpAQCAt
NzUyLDkgKzczOSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICBjaGlsZC5fYXR0YWNoKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVDaGlsZDogZnVuY3Rpb24oY2hpbGQpCisgICAgcmVt
b3ZlQ2hpbGQoY2hpbGQpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxkKQogICAgICAgICAgICAg
dGhyb3coInJlbW92ZUNoaWxkOiBOb2RlIGNhbid0IGJlIHVuZGVmaW5lZCBvciBudWxsLiIpOwpA
QCAtNzgwLDkgKzc2Nyw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7CiAKICAgICAgICAgY29uc29sZS5h
c3NlcnQoIWNoaWxkLmlzUGxhY2Vob2xkZXJOb2RlLCAiU2hvdWxkbid0IGRlbGV0ZSB0aGUgcGxh
Y2Vob2xkZXIgbm9kZS4iKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZUNoaWxkcmVuOiBm
dW5jdGlvbigpCisgICAgcmVtb3ZlQ2hpbGRyZW4oKQogICAgIHsKICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIg
Y2hpbGQgPSB0aGlzLmNoaWxkcmVuW2ldOwpAQCAtNzk3LDkgKzc4NCw5IEBAIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IFtdOwog
ICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBy
ZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZTogZnVuY3Rpb24oKQorICAgIHJlbW92ZUNoaWxkcmVuUmVj
dXJzaXZlKCkKICAgICB7CiAgICAgICAgIHZhciBjaGlsZHJlblRvUmVtb3ZlID0gdGhpcy5jaGls
ZHJlbjsKIApAQCAtODIzLDE3ICs4MTAsMTcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICB9
LAorICAgIH0KIAotICAgIHNvcnROb2RlczogZnVuY3Rpb24oY29tcGFyYXRvcikKKyAgICBzb3J0
Tm9kZXMoY29tcGFyYXRvcikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zb3J0Tm9kZXNSZXF1
ZXN0SWQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc29ydE5vZGVzUmVx
dWVzdElkID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9zb3J0Tm9kZXNDYWxs
YmFjay5iaW5kKHRoaXMsIGNvbXBhcmF0b3IpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zb3J0
Tm9kZXNDYWxsYmFjazogZnVuY3Rpb24oY29tcGFyYXRvcikKKyAgICBfc29ydE5vZGVzQ2FsbGJh
Y2soY29tcGFyYXRvcikKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGNvbXBhcmF0b3JXcmFwcGVy
KGFSb3csIGJSb3cpCiAgICAgICAgIHsKQEAgLTg3OCw5ICs4NjUsOSBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nTm9kZS5u
ZXh0U2libGluZyA9IG51bGw7CiAKICAgICAgICAgdGJvZHkuYXBwZW5kQ2hpbGQoZmlsbGVyUm93
RWxlbWVudCk7IC8vIFdlIGV4cGVjdCB0byBmaW5kIGEgZmlsbGVyIHJvdyB3aGVuIGF0dGFjaGlu
ZyBub2Rlcy4KLSAgICB9LAorICAgIH0KIAotICAgIF9rZXlEb3duOiBmdW5jdGlvbihldmVudCkK
KyAgICBfa2V5RG93bihldmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZE5v
ZGUgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5IHx8
IHRoaXMuX2VkaXRpbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC05NDksNDIgKzkzNiw0MiBA
QCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwog
ICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBleHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICBl
eHBhbmQoKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZy4K
LSAgICB9LAorICAgIH0KIAotICAgIGNvbGxhcHNlOiBmdW5jdGlvbigpCisgICAgY29sbGFwc2Uo
KQogICAgIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZy4KLSAgICB9
LAorICAgIH0KIAotICAgIHJldmVhbDogZnVuY3Rpb24oKQorICAgIHJldmVhbCgpCiAgICAgewog
ICAgICAgICAvLyBUaGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nLgotICAgIH0sCisgICAgfQog
Ci0gICAgcmV2ZWFsQW5kU2VsZWN0OiBmdW5jdGlvbigpCisgICAgcmV2ZWFsQW5kU2VsZWN0KCkK
ICAgICB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcuCi0gICAgfSwK
KyAgICB9CiAKLSAgICBkYXRhR3JpZE5vZGVGcm9tTm9kZTogZnVuY3Rpb24odGFyZ2V0KQorICAg
IGRhdGFHcmlkTm9kZUZyb21Ob2RlKHRhcmdldCkKICAgICB7CiAgICAgICAgIHZhciByb3dFbGVt
ZW50ID0gdGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoInRyIik7CiAgICAg
ICAgIHJldHVybiByb3dFbGVtZW50ICYmIHJvd0VsZW1lbnQuX2RhdGFHcmlkTm9kZTsKLSAgICB9
LAorICAgIH0KIAotICAgIGRhdGFHcmlkTm9kZUZyb21Qb2ludDogZnVuY3Rpb24oeCwgeSkKKyAg
ICBkYXRhR3JpZE5vZGVGcm9tUG9pbnQoeCwgeSkKICAgICB7CiAgICAgICAgIHZhciBub2RlID0g
dGhpcy5fZGF0YVRhYmxlRWxlbWVudC5vd25lckRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoeCwg
eSk7CiAgICAgICAgIHZhciByb3dFbGVtZW50ID0gbm9kZS5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0
aE5vZGVOYW1lKCJ0ciIpOwogICAgICAgICByZXR1cm4gcm93RWxlbWVudCAmJiByb3dFbGVtZW50
Ll9kYXRhR3JpZE5vZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGVhZGVyQ2VsbENsaWNrZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oZWFkZXJDZWxsQ2xpY2tlZChldmVudCkKICAgICB7CiAg
ICAgICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9k
ZU5hbWUoInRoIik7CiAgICAgICAgIGlmICghY2VsbCB8fCAhY2VsbC5jb2x1bW5JZGVudGlmaWVy
IHx8ICFjZWxsLmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydGFi
bGVDb2x1bW5TdHlsZUNsYXNzTmFtZSkpCkBAIC05OTgsMjcgKzk4NSwyNyBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuc29ydE9yZGVy
ID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRlci5Bc2NlbmRpbmc7CiAgICAgICAgIH0g
ZWxzZQogICAgICAgICAgICAgdGhpcy5zb3J0Q29sdW1uSWRlbnRpZmllciA9IGNsaWNrZWRDb2x1
bW5JZGVudGlmaWVyOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlb3ZlckNvbHVtbkNvbGxh
cHNlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgX21vdXNlb3ZlckNvbHVtbkNvbGxhcHNlcihldmVu
dCkKICAgICB7CiAgICAgICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVP
clNlbGZXaXRoTm9kZU5hbWUoInRoIik7CiAgICAgICAgIGlmICghY2VsbCB8fCAhY2VsbC5jb2xs
YXBzZXNHcm91cCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjZWxsLmNsYXNzTGlz
dC5hZGQoIm1vdXNlLW92ZXItY29sbGFwc2VyIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91
c2VvdXRDb2x1bW5Db2xsYXBzZXI6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZW91dENvbHVt
bkNvbGxhcHNlcihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0
LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoInRoIik7CiAgICAgICAgIGlmICghY2Vs
bCB8fCAhY2VsbC5jb2xsYXBzZXNHcm91cCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoIm1vdXNlLW92ZXItY29sbGFwc2VyIik7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfY2xpY2tJbkNvbHVtbkNvbGxhcHNlcjogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2NsaWNrSW5Db2x1bW5Db2xsYXBzZXIoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgY2Vs
bCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0aCIpOwog
ICAgICAgICBpZiAoIWNlbGwgfHwgIWNlbGwuY29sbGFwc2VzR3JvdXApCkBAIC0xMDI4LDkgKzEw
MTUsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2
ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgY29sbGFwc2VDb2x1bW5Hcm91cDogZnVuY3Rpb24oY29sdW1u
R3JvdXApCisgICAgY29sbGFwc2VDb2x1bW5Hcm91cChjb2x1bW5Hcm91cCkKICAgICB7CiAgICAg
ICAgIHZhciBjb2xsYXBzZXJDb2x1bW5JZGVudGlmaWVyID0gbnVsbDsKICAgICAgICAgZm9yICh2
YXIgW2lkZW50aWZpZXIsIGNvbHVtbl0gb2YgdGhpcy5jb2x1bW5zKSB7CkBAIC0xMDQ2LDkgKzEw
MzMsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZh
ciBjZWxsID0gdGhpcy5faGVhZGVyVGFibGVDZWxsRWxlbWVudHMuZ2V0KGNvbGxhcHNlckNvbHVt
bklkZW50aWZpZXIpOwogICAgICAgICB0aGlzLl9jb2xsYXBzZUNvbHVtbkdyb3VwV2l0aENlbGwo
Y2VsbCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29sbGFwc2VDb2x1bW5Hcm91cFdpdGhDZWxs
OiBmdW5jdGlvbihjZWxsKQorICAgIF9jb2xsYXBzZUNvbHVtbkdyb3VwV2l0aENlbGwoY2VsbCkK
ICAgICB7CiAgICAgICAgIHZhciBjb2x1bW5zV2lsbENvbGxhcHNlID0gY2VsbC5jbGFzc0xpc3Qu
dG9nZ2xlKCJjb2xsYXBzZWQiKTsKIApAQCAtMTA2NSwzNCArMTA1MiwzNCBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29sbGFwc2VyQnV0dG9uLnRp
dGxlID0gY29sdW1uc1dpbGxDb2xsYXBzZSA/IHRoaXMuX2NvbGxhcHNlckJ1dHRvbkV4cGFuZENv
bHVtbnNUb29sVGlwKCkgOiB0aGlzLl9jb2xsYXBzZXJCdXR0b25Db2xsYXBzZUNvbHVtbnNUb29s
VGlwKCk7CiAKICAgICAgICAgdGhpcy5kaWRUb2dnbGVDb2x1bW5Hcm91cChjZWxsLmNvbGxhcHNl
c0dyb3VwLCBjb2x1bW5zV2lsbENvbGxhcHNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb2xs
YXBzZXJCdXR0b25Db2xsYXBzZUNvbHVtbnNUb29sVGlwOiBmdW5jdGlvbigpCisgICAgX2NvbGxh
cHNlckJ1dHRvbkNvbGxhcHNlQ29sdW1uc1Rvb2xUaXAoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sbGFwc2UgY29sdW1ucyIpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2NvbGxhcHNlckJ1dHRvbkV4cGFuZENvbHVtbnNUb29sVGlwOiBmdW5jdGlvbigp
CisgICAgX2NvbGxhcHNlckJ1dHRvbkV4cGFuZENvbHVtbnNUb29sVGlwKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV4cGFuZCBjb2x1bW5zIik7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB3aWxsVG9nZ2xlQ29sdW1uR3JvdXA6IGZ1bmN0aW9uKGNvbHVtbkdy
b3VwLCB3aWxsQ29sbGFwc2UpCisgICAgd2lsbFRvZ2dsZUNvbHVtbkdyb3VwKGNvbHVtbkdyb3Vw
LCB3aWxsQ29sbGFwc2UpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFz
c2VzIGlmIG5lZWRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIGRpZFRvZ2dsZUNvbHVtbkdyb3Vw
OiBmdW5jdGlvbihjb2x1bW5Hcm91cCwgZGlkQ29sbGFwc2UpCisgICAgZGlkVG9nZ2xlQ29sdW1u
R3JvdXAoY29sdW1uR3JvdXAsIGRpZENvbGxhcHNlKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVt
ZW50ZWQgYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBoZWFk
ZXJUYWJsZUhlYWRlcjogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAgICBoZWFkZXJUYWJs
ZUhlYWRlcihjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hl
YWRlclRhYmxlQ2VsbEVsZW1lbnRzLmdldChjb2x1bW5JZGVudGlmaWVyKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9nZW5lcmF0ZVNvcnRJbmRpY2F0b3JJbWFnZXNJZk5lZWRlZDogZnVuY3Rpb24o
KQorICAgIF9nZW5lcmF0ZVNvcnRJbmRpY2F0b3JJbWFnZXNJZk5lZWRlZCgpCiAgICAgewogICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLl9nZW5lcmF0ZWRTb3J0SW5kaWNhdG9ySW1h
Z2VzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTExNyw5ICsxMTA0LDkgQEAgV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBnZW5lcmF0ZUNvbG9yZWRJbWFn
ZXNGb3JDU1MocGxhdGZvcm1JbWFnZVBhdGgoIlNvcnRJbmRpY2F0b3JEb3duQXJyb3cuc3ZnIiks
IHNwZWNpZmljYXRpb25zLCA5LCA4LCAiZGF0YS1ncmlkLXNvcnQtaW5kaWNhdG9yLWRvd24tIik7
CiAgICAgICAgIGdlbmVyYXRlQ29sb3JlZEltYWdlc0ZvckNTUyhwbGF0Zm9ybUltYWdlUGF0aCgi
U29ydEluZGljYXRvclVwQXJyb3cuc3ZnIiksIHNwZWNpZmljYXRpb25zLCA5LCA4LCAiZGF0YS1n
cmlkLXNvcnQtaW5kaWNhdG9yLXVwLSIpOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlRG93
bkluRGF0YVRhYmxlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VEb3duSW5EYXRhVGFibGUo
ZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZ3JpZE5vZGUgPSB0aGlzLmRhdGFHcmlkTm9kZUZy
b21Ob2RlKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIGlmICghZ3JpZE5vZGUgfHwgIWdyaWROb2Rl
LnNlbGVjdGFibGUpCkBAIC0xMTM1LDkgKzExMjIsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGdyaWROb2RlLnNlbGVjdCgpOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIGdyaWROb2RlLnNlbGVjdCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2NvbnRleHRNZW51SW5EYXRhVGFibGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250
ZXh0TWVudUluRGF0YVRhYmxlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGNvbnRleHRNZW51
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAKQEAgLTExNjMsOSArMTE1
MCw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xpY2tJ
bkRhdGFUYWJsZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NsaWNrSW5EYXRhVGFibGUoZXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgZ3JpZE5vZGUgPSB0aGlzLmRhdGFHcmlkTm9kZUZyb21Ob2Rl
KGV2ZW50LnRhcmdldCk7CiAgICAgICAgIGlmICghZ3JpZE5vZGUgfHwgIWdyaWROb2RlLmhhc0No
aWxkcmVuKQpAQCAtMTE4NSwxNSArMTE3MiwxNSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlID0gewogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGdyaWROb2RlLmV4
cGFuZCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0ZXh0Rm9yRGF0YUdyaWRO
b2RlQ29sdW1uOiBmdW5jdGlvbihub2RlLCBjb2x1bW5JZGVudGlmaWVyKQorICAgIHRleHRGb3JE
YXRhR3JpZE5vZGVDb2x1bW4obm9kZSwgY29sdW1uSWRlbnRpZmllcikKICAgICB7CiAgICAgICAg
IHZhciBkYXRhID0gbm9kZS5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwogICAgICAgICByZXR1cm4g
KGRhdGEgaW5zdGFuY2VvZiBOb2RlID8gZGF0YS50ZXh0Q29udGVudCA6IGRhdGEpIHx8ICIiOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2NvcHlUZXh0Rm9yRGF0YUdyaWROb2RlOiBmdW5jdGlvbihu
b2RlKQorICAgIF9jb3B5VGV4dEZvckRhdGFHcmlkTm9kZShub2RlKQogICAgIHsKICAgICAgICAg
dmFyIGZpZWxkcyA9IFtdOwogICAgICAgICBmb3IgKHZhciBpZGVudGlmaWVyIG9mIG5vZGUuZGF0
YUdyaWQub3JkZXJlZENvbHVtbnMpCkBAIC0xMjAxLDE1ICsxMTg4LDE1IEBAIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHRhYlNlcGFyYXRlZFZhbHVl
cyA9IGZpZWxkcy5qb2luKCJcdCIpOwogICAgICAgICByZXR1cm4gdGFiU2VwYXJhdGVkVmFsdWVz
OwotICAgIH0sCisgICAgfQogCi0gICAgaGFuZGxlQmVmb3JlQ29weUV2ZW50OiBmdW5jdGlvbihl
dmVudCkKKyAgICBoYW5kbGVCZWZvcmVDb3B5RXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5zZWxlY3RlZE5vZGUgJiYgd2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2Vk
KQogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGhhbmRsZUNvcHlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlQ29weUV2ZW50
KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkTm9kZSB8fCAhd2luZG93
LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTIx
OCw5ICsxMjA1LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3BsYWluIiwgY29weVRleHQpOwog
ICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb3B5Um93OiBmdW5jdGlvbih0YXJnZXQp
CisgICAgX2NvcHlSb3codGFyZ2V0KQogICAgIHsKICAgICAgICAgdmFyIGdyaWROb2RlID0gdGhp
cy5kYXRhR3JpZE5vZGVGcm9tTm9kZSh0YXJnZXQpOwogICAgICAgICBpZiAoIWdyaWROb2RlKQpA
QCAtMTIyOCwyOSArMTIxNSwyOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHZhciBjb3B5VGV4dCA9IHRoaXMuX2NvcHlUZXh0Rm9yRGF0YUdyaWROb2Rl
KGdyaWROb2RlKTsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNvcHlUZXh0KGNvcHlU
ZXh0KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXNpemVNZXRob2QoKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9yZXNpemVNZXRob2QpCiAgICAgICAgICAgICByZXR1cm4gV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLlJlc2l6ZU1ldGhvZC5OZWFyZXN0OwogICAgICAgICByZXR1cm4gdGhp
cy5fcmVzaXplTWV0aG9kOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJlc2l6ZU1ldGhvZCht
ZXRob2QpCiAgICAgewogICAgICAgICB0aGlzLl9yZXNpemVNZXRob2QgPSBtZXRob2Q7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICByZXNpemVyRHJhZ1N0YXJ0ZWQ6IGZ1bmN0aW9uKHJlc2l6ZXIpCisg
ICAgcmVzaXplckRyYWdTdGFydGVkKHJlc2l6ZXIpCiAgICAgewogICAgICAgICBpZiAoIXJlc2l6
ZXJbV2ViSW5zcGVjdG9yLkRhdGFHcmlkLk5leHRDb2x1bW5PcmRpbmFsU3ltYm9sXSkKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOyAvLyBBYm9ydCB0aGUgZHJhZzsKIAogICAgICAgICB0aGlzLl9j
dXJyZW50UmVzaXplciA9IHJlc2l6ZXI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNpemVyRHJh
Z2dpbmc6IGZ1bmN0aW9uKHJlc2l6ZXIsIHBvc2l0aW9uRGVsdGEpCisgICAgcmVzaXplckRyYWdn
aW5nKHJlc2l6ZXIsIHBvc2l0aW9uRGVsdGEpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dChyZXNpemVyID09PSB0aGlzLl9jdXJyZW50UmVzaXplciwgcmVzaXplciwgdGhpcy5fY3VycmVu
dFJlc2l6ZXIpOwogICAgICAgICBpZiAocmVzaXplciAhPSB0aGlzLl9jdXJyZW50UmVzaXplcikK
QEAgLTEyOTcsOSArMTI4NCw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3Bvc2l0aW9uUmVzaXplckVsZW1lbnRzKCk7CiAgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5EaWRMYXlvdXQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmVzaXplckRyYWdFbmRlZDogZnVuY3Rpb24ocmVzaXplcikKKyAgICByZXNpemVyRHJh
Z0VuZGVkKHJlc2l6ZXIpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyZXNpemVyID09
PSB0aGlzLl9jdXJyZW50UmVzaXplciwgcmVzaXplciwgdGhpcy5fY3VycmVudFJlc2l6ZXIpOwog
ICAgICAgICBpZiAocmVzaXplciAhPSB0aGlzLl9jdXJyZW50UmVzaXplcikKQEAgLTEzMDcsMTIg
KzEyOTQsMzIgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB0aGlzLl9jdXJyZW50UmVzaXplciA9IG51bGw7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5EaWRMYXlvdXQpOwotICAg
IH0sCi0KLSAgICBDb2x1bW5SZXNpemVQYWRkaW5nOiAxMCwKLQotICAgIENlbnRlclJlc2l6ZXJP
dmVyQm9yZGVyQWRqdXN0bWVudDogMywKICAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuRGF0YUdy
aWQuQ29sdW1uUmVzaXplUGFkZGluZyA9IDEwOworV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkNlbnRl
clJlc2l6ZXJPdmVyQm9yZGVyQWRqdXN0bWVudCA9IDM7CisKK1dlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5FdmVudCA9IHsKKyAgICBEaWRMYXlvdXQ6ICJkYXRhZ3JpZC1kaWQtbGF5b3V0IiwKKyAgICBT
b3J0Q2hhbmdlZDogImRhdGFncmlkLXNvcnQtY2hhbmdlZCIsCisgICAgU2VsZWN0ZWROb2RlQ2hh
bmdlZDogImRhdGFncmlkLXNlbGVjdGVkLW5vZGUtY2hhbmdlZCIsCisgICAgRXhwYW5kZWROb2Rl
OiAiZGF0YWdyaWQtZXhwYW5kZWQtbm9kZSIsCisgICAgQ29sbGFwc2VkTm9kZTogImRhdGFncmlk
LWNvbGxhcHNlZC1ub2RlIgorfTsKKworV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRlciA9
IHsKKyAgICBJbmRldGVybWluYXRlOiAiZGF0YS1ncmlkLXNvcnQtb3JkZXItaW5kZXRlcm1pbmF0
ZSIsCisgICAgQXNjZW5kaW5nOiAiZGF0YS1ncmlkLXNvcnQtb3JkZXItYXNjZW5kaW5nIiwKKyAg
ICBEZXNjZW5kaW5nOiAiZGF0YS1ncmlkLXNvcnQtb3JkZXItZGVzY2VuZGluZyIKK307CisKK1dl
Ykluc3BlY3Rvci5EYXRhR3JpZC5QcmV2aW91c0NvbHVtbk9yZGluYWxTeW1ib2wgPSBTeW1ib2wo
InByZXZpb3VzLWNvbHVtbi1vcmRpbmFsIik7CitXZWJJbnNwZWN0b3IuRGF0YUdyaWQuTmV4dENv
bHVtbk9yZGluYWxTeW1ib2wgPSBTeW1ib2woIm5leHQtY29sdW1uLW9yZGluYWwiKTsKKworV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRDb2x1bW5Bc2NlbmRpbmdTdHlsZUNsYXNzTmFtZSA9ICJz
b3J0LWFzY2VuZGluZyI7CitXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydENvbHVtbkRlc2NlbmRp
bmdTdHlsZUNsYXNzTmFtZSA9ICJzb3J0LWRlc2NlbmRpbmciOworV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLlNvcnRhYmxlQ29sdW1uU3R5bGVDbGFzc05hbWUgPSAic29ydGFibGUiOwogCiBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQuUmVzaXplTWV0aG9kID0gewogICAgIE5lYXJlc3Q6ICJuZWFyZXN0IiwK
QEAgLTEzMjAsMTAgKzEzMjcsMTIgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlJlc2l6ZU1ldGhv
ZCA9IHsKICAgICBMYXN0OiAibGFzdCIKIH07CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNw
ZWN0b3IuRGF0YUdyaWROb2RlID0gY2xhc3MgRGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGRhdGEsIGhhc0NoaWxkcmVuKQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKIAotV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZSA9IGZ1bmN0aW9u
KGRhdGEsIGhhc0NoaWxkcmVuKQotewogICAgICAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNlOwog
ICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9jb3B5YWJsZSA9
IHRydWU7CkBAIC0xMzM4LDIxICsxMzQ3LDIyIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUg
PSBmdW5jdGlvbihkYXRhLCBoYXNDaGlsZHJlbikKICAgICAgICAgdGhpcy5kaXNjbG9zdXJlVG9n
Z2xlV2lkdGggPSAxMDsKICAgICB9CiAKLVdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90
eXBlID0geworICAgIC8vIFB1YmxpYworCiAgICAgZ2V0IHNlbGVjdGFibGUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuICF0aGlzLl9lbGVtZW50IHx8ICF0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucygiaGlkZGVuIik7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29weWFibGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvcHlhYmxlOwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IGNvcHlhYmxlKHgpCiAgICAgewogICAgICAgICB0aGlzLl9jb3B5YWJsZSA9IHg7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewpAQCAtMTM3NiwxNSArMTM4
NiwxNSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB0aGlzLmNyZWF0ZUNlbGxzKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAg
IH0sCisgICAgfQogCi0gICAgY3JlYXRlQ2VsbHM6IGZ1bmN0aW9uKCkKKyAgICBjcmVhdGVDZWxs
cygpCiAgICAgewogICAgICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIG9mIHRoaXMuZGF0
YUdyaWQub3JkZXJlZENvbHVtbnMpCiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuY3JlYXRlQ2VsbChjb2x1bW5JZGVudGlmaWVyKSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICByZWZyZXNoSWZOZWVkZWQ6IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoSWZOZWVkZWQoKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9uZWVkc1JlZnJlc2gpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0xMzkyLDkgKzE0MDIsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX25lZWRzUmVmcmVzaDsKIAogICAgICAgICB0
aGlzLnJlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIG5lZWRzUmVmcmVzaDogZnVuY3Rp
b24oKQorICAgIG5lZWRzUmVmcmVzaCgpCiAgICAgewogICAgICAgICB0aGlzLl9uZWVkc1JlZnJl
c2ggPSB0cnVlOwogCkBAIC0xNDA1LDE4ICsxNDE1LDE4IEBAIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
X3NjaGVkdWxlZFJlZnJlc2hJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMu
cmVmcmVzaC5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkYXRhKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IGRhdGEoeCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RhdGEgPSB4IHx8IHt9OwogICAgICAgICB0
aGlzLm5lZWRzUmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJldmVhbGVkKCkK
ICAgICB7CkBAIC0xNDM1LDcgKzE0NDUsNyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9yZXZlYWxlZCA9IHRydWU7CiAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGhhc0NoaWxkcmVuKHgpCiAgICAg
ewpAQCAtMTQ1OCwxMiArMTQ2OCwxMiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgicGFy
ZW50Iik7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImV4cGFu
ZGVkIik7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoYXNDaGlsZHJlbigp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faGFzQ2hpbGRyZW47Ci0gICAgfSwKKyAgICB9
CiAKICAgICBzZXQgcmV2ZWFsZWQoeCkKICAgICB7CkBAIC0xNDgzLDcgKzE0OTMsNyBAQCBXZWJJ
bnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLmNo
aWxkcmVuW2ldLnJldmVhbGVkID0geCAmJiB0aGlzLmV4cGFuZGVkOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGRlcHRoKCkKICAgICB7CkBAIC0xNDk0LDcgKzE1MDQsNyBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAg
dGhpcy5fZGVwdGggPSAwOwogICAgICAgICByZXR1cm4gdGhpcy5fZGVwdGg7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgbGVmdFBhZGRpbmcoKQogICAgIHsKQEAgLTE1MDMsMjQgKzE1MTMsMjQg
QEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhp
cy5fbGVmdFBhZGRpbmcgPSB0aGlzLmRlcHRoICogdGhpcy5kYXRhR3JpZC5pbmRlbnRXaWR0aDsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2xlZnRQYWRkaW5nOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHNob3VsZFJlZnJlc2hDaGlsZHJlbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
c2hvdWxkUmVmcmVzaENoaWxkcmVuOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNob3VsZFJl
ZnJlc2hDaGlsZHJlbih4KQogICAgIHsKICAgICAgICAgdGhpcy5fc2hvdWxkUmVmcmVzaENoaWxk
cmVuID0geDsKICAgICAgICAgaWYgKHggJiYgdGhpcy5leHBhbmRlZCkKICAgICAgICAgICAgIHRo
aXMuZXhwYW5kKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0ZWQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHNlbGVjdGVkKHgpCiAgICAgewpAQCAtMTUyOCwxMiArMTUzOCwxMiBAQCBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2VsZWN0KCk7CiAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuZGVzZWxlY3QoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBleHBhbmRlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZXhwYW5k
ZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZXhwYW5kZWQoeCkKICAgICB7CkBAIC0xNTQx
LDkgKzE1NTEsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuZXhwYW5kKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMu
Y29sbGFwc2UoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAg
ICByZWZyZXNoKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZWxlbWVudCB8fCAhdGhpcy5k
YXRhR3JpZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1NTcsMTQgKzE1NjcsMTQgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fZWxl
bWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmNyZWF0ZUNlbGxzKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlv
dXQoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcyBpZiBuZWVk
ZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVu
dGlmaWVyKQorICAgIGNyZWF0ZUNlbGwoY29sdW1uSWRlbnRpZmllcikKICAgICB7CiAgICAgICAg
IHZhciBjZWxsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7CiAgICAgICAg
IGNlbGxFbGVtZW50LmNsYXNzTmFtZSA9IGNvbHVtbklkZW50aWZpZXIgKyAiLWNvbHVtbiI7CkBA
IC0xNTg5LDUyICsxNTk5LDMwIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIGNlbGxFbGVtZW50OwotICAgIH0sCisg
ICAgfQogCi0gICAgY3JlYXRlQ2VsbENvbnRlbnQ6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIp
CisgICAgY3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllcikKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLmRhdGFbY29sdW1uSWRlbnRpZmllcl0gfHwgIlx1MjAwYiI7IC8vIFplcm8g
d2lkdGggc3BhY2UgdG8ga2VlcCB0aGUgY2VsbCBmcm9tIGNvbGxhcHNpbmcuCi0gICAgfSwKKyAg
ICB9CiAKLSAgICBlbGVtZW50V2l0aENvbHVtbklkZW50aWZpZXI6IGZ1bmN0aW9uKGNvbHVtbklk
ZW50aWZpZXIpCisgICAgZWxlbWVudFdpdGhDb2x1bW5JZGVudGlmaWVyKGNvbHVtbklkZW50aWZp
ZXIpCiAgICAgewogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLmRhdGFHcmlkLm9yZGVyZWRDb2x1
bW5zLmluZGV4T2YoY29sdW1uSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChpbmRleCA9PT0gLTEp
CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVu
dC5jaGlsZHJlbltpbmRleF07Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBTaGFyZSB0aGVzZSBm
dW5jdGlvbnMgd2l0aCBEYXRhR3JpZC4gVGhleSBhcmUgd3JpdHRlbiB0byB3b3JrIHdpdGggYSBE
YXRhR3JpZE5vZGUgdGhpcyBvYmplY3QuCi0gICAgYXBwZW5kQ2hpbGQ6IFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQsCi0gICAgaW5zZXJ0Q2hpbGQ6IFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQsCi0gICAgcmVtb3ZlQ2hpbGQ6IFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQsCi0gICAgcmVtb3ZlQ2hp
bGRyZW46IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4sCi0g
ICAgcmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmU6IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5
cGUucmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUsCisgICAgYXBwZW5kQ2hpbGQoKSB7IHJldHVybiBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmFwcGVuZENoaWxkLmFwcGx5KHRoaXMsIGFy
Z3VtZW50cyk7IH0KKyAgICBpbnNlcnRDaGlsZCgpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQorICAg
IHJlbW92ZUNoaWxkKCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5y
ZW1vdmVDaGlsZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9CisgICAgcmVtb3ZlQ2hpbGRyZW4o
KSB7IHJldHVybiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVu
LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KKyAgICByZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZSgp
IHsgcmV0dXJuIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW5S
ZWN1cnNpdmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQogCi0gICAgX3JlY2FsY3VsYXRlU2li
bGluZ3M6IGZ1bmN0aW9uKG15SW5kZXgpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMucGFyZW50
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBwcmV2aW91c0NoaWxkID0gKG15
SW5kZXggPiAwID8gdGhpcy5wYXJlbnQuY2hpbGRyZW5bbXlJbmRleCAtIDFdIDogbnVsbCk7Ci0K
LSAgICAgICAgaWYgKHByZXZpb3VzQ2hpbGQpIHsKLSAgICAgICAgICAgIHByZXZpb3VzQ2hpbGQu
bmV4dFNpYmxpbmcgPSB0aGlzOwotICAgICAgICAgICAgdGhpcy5wcmV2aW91c1NpYmxpbmcgPSBw
cmV2aW91c0NoaWxkOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMucHJldmlvdXNT
aWJsaW5nID0gbnVsbDsKLQotICAgICAgICB2YXIgbmV4dENoaWxkID0gdGhpcy5wYXJlbnQuY2hp
bGRyZW5bbXlJbmRleCArIDFdOwotCi0gICAgICAgIGlmIChuZXh0Q2hpbGQpIHsKLSAgICAgICAg
ICAgIG5leHRDaGlsZC5wcmV2aW91c1NpYmxpbmcgPSB0aGlzOwotICAgICAgICAgICAgdGhpcy5u
ZXh0U2libGluZyA9IG5leHRDaGlsZDsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlz
Lm5leHRTaWJsaW5nID0gbnVsbDsKLSAgICB9LAotCi0gICAgY29sbGFwc2U6IGZ1bmN0aW9uKCkK
KyAgICBjb2xsYXBzZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZWxlbWVudCkKICAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZXhwYW5kZWQiKTsKQEAgLTE2
NDgsOSArMTYzNiw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewog
CiAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkKQogICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LkNvbGxh
cHNlZE5vZGUsIHtkYXRhR3JpZE5vZGU6IHRoaXN9KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNv
bGxhcHNlUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKCkKKyAgICBjb2xsYXBzZVJlY3Vyc2l2ZWx5KCkK
ICAgICB7CiAgICAgICAgIHZhciBpdGVtID0gdGhpczsKICAgICAgICAgd2hpbGUgKGl0ZW0pIHsK
QEAgLTE2NTgsOSArMTY0Niw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgICAgIGl0ZW0uY29sbGFwc2UoKTsKICAgICAgICAgICAgIGl0ZW0g
PSBpdGVtLnRyYXZlcnNlTmV4dE5vZGUoZmFsc2UsIHRoaXMsIHRydWUpOwogICAgICAgICB9Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBleHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICBleHBhbmQoKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuIHx8IHRoaXMuZXhwYW5kZWQpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC0xNjk2LDE4ICsxNjg0LDE4IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkKQogICAg
ICAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLkV2ZW50LkV4cGFuZGVkTm9kZSwge2RhdGFHcmlkTm9kZTogdGhpc30pOwot
ICAgIH0sCisgICAgfQogCi0gICAgZXhwYW5kUmVjdXJzaXZlbHk6IGZ1bmN0aW9uKCkKKyAgICBl
eHBhbmRSZWN1cnNpdmVseSgpCiAgICAgewogICAgICAgICB2YXIgaXRlbSA9IHRoaXM7CiAgICAg
ICAgIHdoaWxlIChpdGVtKSB7CiAgICAgICAgICAgICBpdGVtLmV4cGFuZCgpOwogICAgICAgICAg
ICAgaXRlbSA9IGl0ZW0udHJhdmVyc2VOZXh0Tm9kZShmYWxzZSwgdGhpcyk7CiAgICAgICAgIH0K
LSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbDogZnVuY3Rpb24oKQorICAgIHJldmVhbCgpCiAg
ICAgewogICAgICAgICB2YXIgY3VycmVudEFuY2VzdG9yID0gdGhpcy5wYXJlbnQ7CiAgICAgICAg
IHdoaWxlIChjdXJyZW50QW5jZXN0b3IgJiYgIWN1cnJlbnRBbmNlc3Rvci5yb290KSB7CkBAIC0x
NzE5LDkgKzE3MDcsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5lbGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOwogCiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJyZXZlYWxlZCIpOwotICAgIH0s
CisgICAgfQogCi0gICAgc2VsZWN0OiBmdW5jdGlvbihzdXByZXNzU2VsZWN0ZWRFdmVudCkKKyAg
ICBzZWxlY3Qoc3VwcmVzc1NlbGVjdGVkRXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
ZGF0YUdyaWQgfHwgIXRoaXMuc2VsZWN0YWJsZSB8fCB0aGlzLnNlbGVjdGVkKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTczNywxNSArMTcyNSwxNSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWRO
b2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXN1cHJlc3NTZWxlY3RlZEV2ZW50KQog
ICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQpOwotICAgIH0sCisgICAg
fQogCi0gICAgcmV2ZWFsQW5kU2VsZWN0OiBmdW5jdGlvbigpCisgICAgcmV2ZWFsQW5kU2VsZWN0
KCkKICAgICB7CiAgICAgICAgIHRoaXMucmV2ZWFsKCk7CiAgICAgICAgIHRoaXMuc2VsZWN0KCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkZXNlbGVjdDogZnVuY3Rpb24oc3VwcmVzc0Rlc2VsZWN0
ZWRFdmVudCkKKyAgICBkZXNlbGVjdChzdXByZXNzRGVzZWxlY3RlZEV2ZW50KQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkIHx8IHRoaXMuZGF0YUdyaWQuc2VsZWN0ZWROb2RlICE9
PSB0aGlzIHx8ICF0aGlzLnNlbGVjdGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTc1OCw5
ICsxNzQ2LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgaWYgKCFzdXByZXNzRGVzZWxlY3RlZEV2ZW50KQogICAgICAgICAgICAgdGhpcy5kYXRh
R3JpZC5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50
LlNlbGVjdGVkTm9kZUNoYW5nZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgdHJhdmVyc2VOZXh0
Tm9kZTogZnVuY3Rpb24oc2tpcEhpZGRlbiwgc3RheVdpdGhpbiwgZG9udFBvcHVsYXRlLCBpbmZv
KQorICAgIHRyYXZlcnNlTmV4dE5vZGUoc2tpcEhpZGRlbiwgc3RheVdpdGhpbiwgZG9udFBvcHVs
YXRlLCBpbmZvKQogICAgIHsKICAgICAgICAgaWYgKCFkb250UG9wdWxhdGUgJiYgdGhpcy5oYXND
aGlsZHJlbikKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJwb3B1
bGF0ZSIpOwpAQCAtMTc5Myw5ICsxNzgxLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICByZXR1cm4g
KCFza2lwSGlkZGVuIHx8IG5vZGUucmV2ZWFsZWQpID8gbm9kZS5uZXh0U2libGluZyA6IG51bGw7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmF2ZXJzZVByZXZpb3VzTm9kZTogZnVuY3Rpb24oc2tp
cEhpZGRlbiwgZG9udFBvcHVsYXRlKQorICAgIHRyYXZlcnNlUHJldmlvdXNOb2RlKHNraXBIaWRk
ZW4sIGRvbnRQb3B1bGF0ZSkKICAgICB7CiAgICAgICAgIHZhciBub2RlID0gKCFza2lwSGlkZGVu
IHx8IHRoaXMucmV2ZWFsZWQpID8gdGhpcy5wcmV2aW91c1NpYmxpbmcgOiBudWxsOwogICAgICAg
ICBpZiAoIWRvbnRQb3B1bGF0ZSAmJiBub2RlICYmIG5vZGUuaGFzQ2hpbGRyZW4pCkBAIC0xODE0
LDkgKzE4MDIsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudDsKLSAg
ICB9LAorICAgIH0KIAotICAgIGlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGU6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIGlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJpYW5nbGUoZXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuaGFzQ2hpbGRyZW4pCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xODI2LDkgKzE4MTQsNTcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIGxlZnQgPSBjZWxsLnRvdGFsT2Zmc2V0TGVmdCAr
IHRoaXMubGVmdFBhZGRpbmc7CiAgICAgICAgIHJldHVybiBldmVudC5wYWdlWCA+PSBsZWZ0ICYm
IGV2ZW50LnBhZ2VYIDw9IGxlZnQgKyB0aGlzLmRpc2Nsb3N1cmVUb2dnbGVXaWR0aDsKLSAgICB9
LAorICAgIH0KIAotICAgIF9hdHRhY2g6IGZ1bmN0aW9uKCkKKyAgICBzYXZlUG9zaXRpb24oKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NhdmVkUG9zaXRpb24pCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKCF0aGlzLnBhcmVudCkKKyAgICAgICAgICAgIHRocm93KCJzYXZl
UG9zaXRpb246IE5vZGUgbXVzdCBoYXZlIGEgcGFyZW50LiIpOworICAgICAgICB0aGlzLl9zYXZl
ZFBvc2l0aW9uID0geworICAgICAgICAgICAgcGFyZW50OiB0aGlzLnBhcmVudCwKKyAgICAgICAg
ICAgIGluZGV4OiB0aGlzLnBhcmVudC5jaGlsZHJlbi5pbmRleE9mKHRoaXMpCisgICAgICAgIH07
CisgICAgfQorCisgICAgcmVzdG9yZVBvc2l0aW9uKCkKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5fc2F2ZWRQb3NpdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodGhp
cy5wYXJlbnQgIT09IHRoaXMuX3NhdmVkUG9zaXRpb24ucGFyZW50KQorICAgICAgICAgICAgdGhp
cy5fc2F2ZWRQb3NpdGlvbi5wYXJlbnQuaW5zZXJ0Q2hpbGQodGhpcywgdGhpcy5fc2F2ZWRQb3Np
dGlvbi5pbmRleCk7CisKKyAgICAgICAgZGVsZXRlIHRoaXMuX3NhdmVkUG9zaXRpb247CisgICAg
fQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX3JlY2FsY3VsYXRlU2libGluZ3MobXlJbmRleCkK
KyAgICB7CisgICAgICAgIGlmICghdGhpcy5wYXJlbnQpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgdmFyIHByZXZpb3VzQ2hpbGQgPSAobXlJbmRleCA+IDAgPyB0aGlzLnBhcmVudC5j
aGlsZHJlbltteUluZGV4IC0gMV0gOiBudWxsKTsKKworICAgICAgICBpZiAocHJldmlvdXNDaGls
ZCkgeworICAgICAgICAgICAgcHJldmlvdXNDaGlsZC5uZXh0U2libGluZyA9IHRoaXM7CisgICAg
ICAgICAgICB0aGlzLnByZXZpb3VzU2libGluZyA9IHByZXZpb3VzQ2hpbGQ7CisgICAgICAgIH0g
ZWxzZQorICAgICAgICAgICAgdGhpcy5wcmV2aW91c1NpYmxpbmcgPSBudWxsOworCisgICAgICAg
IHZhciBuZXh0Q2hpbGQgPSB0aGlzLnBhcmVudC5jaGlsZHJlbltteUluZGV4ICsgMV07CisKKyAg
ICAgICAgaWYgKG5leHRDaGlsZCkgeworICAgICAgICAgICAgbmV4dENoaWxkLnByZXZpb3VzU2li
bGluZyA9IHRoaXM7CisgICAgICAgICAgICB0aGlzLm5leHRTaWJsaW5nID0gbmV4dENoaWxkOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMubmV4dFNpYmxpbmcgPSBudWxsOworICAg
IH0KKworICAgIF9hdHRhY2goKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkIHx8
IHRoaXMuX2F0dGFjaGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTg1NCw5ICsxODkwLDkg
QEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0
aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxk
cmVuLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0uX2F0dGFj
aCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RldGFjaDogZnVuY3Rpb24oKQorICAgIF9kZXRh
Y2goKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9hdHRhY2hlZCkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTE4NjgsNDkgKzE5MDQsMjIgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVu
Lmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltpXS5fZGV0YWNoKCk7Ci0g
ICAgfSwKLQotICAgIHNhdmVQb3NpdGlvbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX3NhdmVkUG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYg
KCF0aGlzLnBhcmVudCkKLSAgICAgICAgICAgIHRocm93KCJzYXZlUG9zaXRpb246IE5vZGUgbXVz
dCBoYXZlIGEgcGFyZW50LiIpOwotICAgICAgICB0aGlzLl9zYXZlZFBvc2l0aW9uID0gewotICAg
ICAgICAgICAgcGFyZW50OiB0aGlzLnBhcmVudCwKLSAgICAgICAgICAgIGluZGV4OiB0aGlzLnBh
cmVudC5jaGlsZHJlbi5pbmRleE9mKHRoaXMpCisgICAgfQogfTsKLSAgICB9LAotCi0gICAgcmVz
dG9yZVBvc2l0aW9uOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX3NhdmVk
UG9zaXRpb24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMucGFyZW50
ICE9PSB0aGlzLl9zYXZlZFBvc2l0aW9uLnBhcmVudCkKLSAgICAgICAgICAgIHRoaXMuX3NhdmVk
UG9zaXRpb24ucGFyZW50Lmluc2VydENoaWxkKHRoaXMsIHRoaXMuX3NhdmVkUG9zaXRpb24uaW5k
ZXgpOwotCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9zYXZlZFBvc2l0aW9uOwotICAgIH0KLX0KLQot
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGU7CiAKIC8vIFVzZWQgdG8gY3JlYXRlIGEgbmV3IHRhYmxlIHJv
dyB3aGVuIGVudGVyaW5nIG5ldyBkYXRhIGJ5IGVkaXRpbmcgY2VsbHMuCi1XZWJJbnNwZWN0b3Iu
UGxhY2Vob2xkZXJEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRhKQorV2ViSW5zcGVjdG9yLlBs
YWNlaG9sZGVyRGF0YUdyaWROb2RlID0gY2xhc3MgUGxhY2Vob2xkZXJEYXRhR3JpZE5vZGUgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkTm9kZS5jYWxsKHRoaXMsIGRhdGEsIGZhbHNlKTsKKyAgICBjb25zdHJ1Y3RvcihkYXRhKQor
ICAgIHsKKyAgICAgICAgc3VwZXIoZGF0YSwgZmFsc2UpOworCiAgICAgICAgIHRoaXMuaXNQbGFj
ZWhvbGRlck5vZGUgPSB0cnVlOwogICAgIH0KICAgICAKLVdlYkluc3BlY3Rvci5QbGFjZWhvbGRl
ckRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5QbGFjZWhvbGRlckRhdGFHcmlkTm9kZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUucHJvdG90eXBlLAotCi0gICAgbWFrZU5vcm1hbDogZnVuY3Rpb24oKQorICAg
IG1ha2VOb3JtYWwoKQogICAgIHsKICAgICAgICAgZGVsZXRlIHRoaXMuaXNQbGFjZWhvbGRlck5v
ZGU7CiAgICAgICAgIGRlbGV0ZSB0aGlzLm1ha2VOb3JtYWw7CiAgICAgfQotfQorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNl
Q29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EYXRhYmFzZUNvbnRlbnRWaWV3LmpzCmluZGV4IDI3ZWEwZDkuLjYzNWFlZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlQ29u
dGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGF0YWJhc2VDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50
VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkRhdGFiYXNl
Q29udGVudFZpZXcgPSBjbGFzcyBEYXRhYmFzZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhp
cywgcmVwcmVzZW50ZWRPYmplY3QpOworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0
KQorICAgIHsKKyAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QpOwogCiAgICAgICAgIHRo
aXMuZGF0YWJhc2UgPSByZXByZXNlbnRlZE9iamVjdDsKIApAQCAtNDEsMjggKzQzLDIxIEBAIFdl
Ykluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmpl
Y3QpCiAgICAgICAgIHRoaXMuX3Byb21wdEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wcm9tcHQu
ZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNr
IiwgdGhpcy5fbWVzc2FnZXNDbGlja2VkLmJpbmQodGhpcyksIHRydWUpOwotfTsKLQotV2ViSW5z
cGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcuRXZlbnQgPSB7Ci0gICAgU2NoZW1hVXBkYXRlZDog
IlNjaGVtYVVwZGF0ZWQiCi19OwotCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRl
bnRWaWV3LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGFsbG93ZWROYXZpZ2F0
aW9uU2lkZWJhclBhbmVscygpCiAgICAgewogICAgICAgICByZXR1cm4gW1dlYkluc3BlY3Rvci5y
ZXNvdXJjZVNpZGViYXJQYW5lbC5pZGVudGlmaWVyXTsKLSAgICB9LAorICAgIH0KIAotICAgIHNo
b3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdGhpcy5wcm9tcHQu
c2hvd24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQor
ICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB0aGlzLnByb21wdC51cGRhdGVMYXlv
dXQoKTsKIApAQCAtNzIsMTYgKzY3LDE2IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChyZXN1bHRFbGVtZW50LmRhdGFHcmlk
KQogICAgICAgICAgICAgICAgIHJlc3VsdEVsZW1lbnQuZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7
CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24o
Y29va2llKQorICAgIHNhdmVUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWUu
dHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuRGF0YWJhc2U7CiAgICAg
ICAgIGNvb2tpZS5ob3N0ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5ob3N0OwogICAgICAgICBj
b29raWUubmFtZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QubmFtZTsKLSAgICB9LAorICAgIH0K
IAotICAgIGNvbnNvbGVQcm9tcHRDb21wbGV0aW9uc05lZWRlZDogZnVuY3Rpb24ocHJvbXB0LCBk
ZWZhdWx0Q29tcGxldGlvbnMsIGJhc2UsIHByZWZpeCwgc3VmZml4KQorICAgIGNvbnNvbGVQcm9t
cHRDb21wbGV0aW9uc05lZWRlZChwcm9tcHQsIGRlZmF1bHRDb21wbGV0aW9ucywgYmFzZSwgcHJl
Zml4LCBzdWZmaXgpCiAgICAgewogICAgICAgICB2YXIgcmVzdWx0cyA9IFtdOwogCkBAIC0xMDUs
MjEgKzEwMCwyMSBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmRhdGFiYXNlLmdldFRhYmxlTmFtZXModGFi
bGVOYW1lc0NhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgY29uc29s
ZVByb21wdFRleHRDb21taXR0ZWQ6IGZ1bmN0aW9uKHByb21wdCwgcXVlcnkpCisgICAgY29uc29s
ZVByb21wdFRleHRDb21taXR0ZWQocHJvbXB0LCBxdWVyeSkKICAgICB7CiAgICAgICAgIHRoaXMu
ZGF0YWJhc2UuZXhlY3V0ZVNRTChxdWVyeSwgdGhpcy5fcXVlcnlGaW5pc2hlZC5iaW5kKHRoaXMs
IHF1ZXJ5KSwgdGhpcy5fcXVlcnlFcnJvci5iaW5kKHRoaXMsIHF1ZXJ5KSk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfbWVzc2FnZXNDbGlja2VkOiBmdW5jdGlvbigp
CisgICAgX21lc3NhZ2VzQ2xpY2tlZCgpCiAgICAgewogICAgICAgICB0aGlzLnByb21wdC5mb2N1
cygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3F1ZXJ5RmluaXNoZWQ6IGZ1bmN0aW9uKHF1ZXJ5
LCBjb2x1bW5OYW1lcywgdmFsdWVzKQorICAgIF9xdWVyeUZpbmlzaGVkKHF1ZXJ5LCBjb2x1bW5O
YW1lcywgdmFsdWVzKQogICAgIHsKICAgICAgICAgdmFyIGRhdGFHcmlkID0gV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLmNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQoY29sdW1uTmFtZXMsIHZhbHVlcyk7CiAg
ICAgICAgIHZhciB0cmltbWVkUXVlcnkgPSBxdWVyeS50cmltKCk7CkBAIC0xMzIsOSArMTI3LDkg
QEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGlmICh0cmltbWVkUXVlcnkubWF0Y2goL15jcmVhdGUgL2kpIHx8IHRyaW1tZWRRdWVyeS5t
YXRjaCgvXmRyb3AgdGFibGUgL2kpKQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcuRXZlbnQuU2NoZW1hVXBk
YXRlZCwgdGhpcy5kYXRhYmFzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcXVlcnlFcnJvcjog
ZnVuY3Rpb24ocXVlcnksIGVycm9yKQorICAgIF9xdWVyeUVycm9yKHF1ZXJ5LCBlcnJvcikKICAg
ICB7CiAgICAgICAgIGlmIChlcnJvci5tZXNzYWdlKQogICAgICAgICAgICAgdmFyIG1lc3NhZ2Ug
PSBlcnJvci5tZXNzYWdlOwpAQCAtMTQ0LDkgKzEzOSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFz
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJBbiB1bmV4cGVjdGVkIGVycm9yICVzIG9jY3VycmVkLiIpLmZv
cm1hdChlcnJvci5jb2RlKTsKIAogICAgICAgICB0aGlzLl9hcHBlbmRFcnJvclF1ZXJ5UmVzdWx0
KHF1ZXJ5LCBtZXNzYWdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hcHBlbmRWaWV3UXVlcnlS
ZXN1bHQ6IGZ1bmN0aW9uKHF1ZXJ5LCB2aWV3KQorICAgIF9hcHBlbmRWaWV3UXVlcnlSZXN1bHQo
cXVlcnksIHZpZXcpCiAgICAgewogICAgICAgICB2YXIgcmVzdWx0RWxlbWVudCA9IHRoaXMuX2Fw
cGVuZFF1ZXJ5UmVzdWx0KHF1ZXJ5KTsKIApAQCAtMTU1LDE4ICsxNTAsMTggQEAgV2ViSW5zcGVj
dG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICByZXN1bHRFbGVt
ZW50LmFwcGVuZENoaWxkKHZpZXcuZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fcHJvbXB0RWxl
bWVudC5zY3JvbGxJbnRvVmlldyhmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYXBwZW5k
RXJyb3JRdWVyeVJlc3VsdDogZnVuY3Rpb24ocXVlcnksIGVycm9yVGV4dCkKKyAgICBfYXBwZW5k
RXJyb3JRdWVyeVJlc3VsdChxdWVyeSwgZXJyb3JUZXh0KQogICAgIHsKICAgICAgICAgdmFyIHJl
c3VsdEVsZW1lbnQgPSB0aGlzLl9hcHBlbmRRdWVyeVJlc3VsdChxdWVyeSk7CiAgICAgICAgIHJl
c3VsdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZXJyb3IiKTsKICAgICAgICAgcmVzdWx0RWxlbWVu
dC50ZXh0Q29udGVudCA9IGVycm9yVGV4dDsKIAogICAgICAgICB0aGlzLl9wcm9tcHRFbGVtZW50
LnNjcm9sbEludG9WaWV3KGZhbHNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hcHBlbmRRdWVy
eVJlc3VsdDogZnVuY3Rpb24ocXVlcnkpCisgICAgX2FwcGVuZFF1ZXJ5UmVzdWx0KHF1ZXJ5KQog
ICAgIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAiZGF0YWJhc2UtdXNlci1xdWVyeSI7CkBA
IC0xODQsNCArMTc5LDYgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlOwor
V2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcuRXZlbnQgPSB7CisgICAgU2NoZW1hVXBk
YXRlZDogIlNjaGVtYVVwZGF0ZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZUhvc3RUcmVlRWxl
bWVudC5qcwppbmRleCA1YTUyZDIwLi44NWJjNzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZUhvc3RUcmVlRWxlbWVudC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZUhv
c3RUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMjkgKzIzLDI2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlSG9zdFRyZWVFbGVtZW50
ID0gZnVuY3Rpb24oaG9zdCkKK1dlYkluc3BlY3Rvci5EYXRhYmFzZUhvc3RUcmVlRWxlbWVudCA9
IGNsYXNzIERhdGFiYXNlSG9zdFRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlN0b3Jh
Z2VUcmVlRWxlbWVudAogewotICAgIFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQuY2Fs
bCh0aGlzLCBXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQuRm9sZGVySWNvblN0eWxlQ2xh
c3NOYW1lLCBXZWJJbnNwZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KGhvc3QpLCBudWxsKTsKKyAg
ICBjb25zdHJ1Y3Rvcihob3N0KQorICAgIHsKKyAgICAgICAgc3VwZXIoV2ViSW5zcGVjdG9yLkZv
bGRlclRyZWVFbGVtZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLmRp
c3BsYXlOYW1lRm9ySG9zdChob3N0KSwgbnVsbCk7CiAKICAgICAgICAgdGhpcy5faG9zdCA9IGhv
c3Q7CiAKICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IHRydWU7Ci19OwotCi1XZWJJbnNwZWN0
b3IuRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQsCisgICAgfQogCiAgICAgLy8g
UHVibGljCiAKICAgICBnZXQgbmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLmRpc3BsYXlOYW1lRm9ySG9zdCh0aGlzLl9ob3N0KTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBjYXRlZ29yeU5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiRGF0YWJhc2VzIik7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRhdGFiYXNl
SG9zdFRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3RvcmFn
ZVRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50Vmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVGFibGVDb250ZW50
Vmlldy5qcwppbmRleCBjMzgzODhhLi5jYTE2MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VU
YWJsZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMyw2MSArMjMsNTggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRW
aWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuRGF0YWJhc2VU
YWJsZUNvbnRlbnRWaWV3ID0gY2xhc3MgRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Cit7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRP
YmplY3QpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0aGlz
LCByZXByZXNlbnRlZE9iamVjdCk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7
CiAKICAgICAgICAgdGhpcy51cGRhdGUoKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRh
YmxlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZGF0YWJhc2UtdGFibGUiOwotCi1XZWJJ
bnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVDb250ZW50VmlldywKKyAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBhbGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFtXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFu
ZWwuaWRlbnRpZmllcl07Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkK
KyAgICB1cGRhdGUoKQogICAgIHsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kYXRh
YmFzZS5leGVjdXRlU1FMKCJTRUxFQ1QgKiBGUk9NIFwiIiArIHRoaXMuX2VzY2FwZVRhYmxlTmFt
ZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5hbWUpICsgIlwiIiwgdGhpcy5fcXVlcnlGaW5pc2hl
ZC5iaW5kKHRoaXMpLCB0aGlzLl9xdWVyeUVycm9yLmJpbmQodGhpcykpOwotICAgIH0sCisgICAg
fQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAg
ICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZCkKICAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBm
dW5jdGlvbihjb29raWUpCisgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAg
IGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5EYXRhYmFz
ZVRhYmxlOwogICAgICAgICBjb29raWUuaG9zdCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaG9z
dDsKICAgICAgICAgY29va2llLm5hbWUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5hbWU7CiAg
ICAgICAgIGNvb2tpZS5kYXRhYmFzZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGF0YWJhc2Uu
bmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkKICAgICAgICAgICAgIHJldHVybiBbXTsK
ICAgICAgICAgcmV0dXJuIFt0aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250YWluZXJdOwotICAgIH0s
CisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2VzY2FwZVRhYmxlTmFtZTogZnVuY3Rp
b24obmFtZSkKKyAgICBfZXNjYXBlVGFibGVOYW1lKG5hbWUpCiAgICAgewogICAgICAgICByZXR1
cm4gbmFtZS5yZXBsYWNlKC9cIi9nLCAiXCJcIiIpOwotICAgIH0sCisgICAgfQogCi0gICAgX3F1
ZXJ5RmluaXNoZWQ6IGZ1bmN0aW9uKGNvbHVtbk5hbWVzLCB2YWx1ZXMpCisgICAgX3F1ZXJ5Rmlu
aXNoZWQoY29sdW1uTmFtZXMsIHZhbHVlcykKICAgICB7CiAgICAgICAgIC8vIEl0IHdvdWxkIGJl
IG5pY2UgdG8gZG8gYmV0dGVyIHRoYW4gY3JlYXRpbmcgYSBuZXcgZGF0YSBncmlkIGVhY2ggdGlt
ZSB0aGUgdGFibGUgaXMgdXBkYXRlZCwgYnV0IHRoZSB0YWJsZSB1cGRhdGluZwogICAgICAgICAv
LyBkb2Vzbid0IGhhcHBlbiB2ZXJ5IGZyZXF1ZW50bHkuIEFkZGl0aW9uYWxseSwgdXNpbmcgRGF0
YUdyaWQncyBjcmVhdGVTb3J0YWJsZURhdGFHcmlkIG1ha2VzIG91ciBjb2RlIG11Y2ggY2xlYW5l
ciBhbmQgaXQga25vd3MKQEAgLTk1LDEzICs5MiwxMyBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VU
YWJsZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlk
LnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3F1ZXJ5RXJyb3I6IGZ1bmN0
aW9uKGVycm9yKQorICAgIF9xdWVyeUVycm9yKGVycm9yKQogICAgIHsKICAgICAgICAgdGhpcy5l
bGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZChXZWJJbnNwZWN0b3IuY3JlYXRlTWVzc2FnZVRleHRWaWV3KFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQW4gZXJyb3Igb2NjdXJlZCB0cnlpbmcgdG9cbnJlYWQgdGhlIOKAnCVz4oCdIHRhYmxlLiIp
LmZvcm1hdCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lm5hbWUpLCB0cnVlKSk7CiAgICAgfQogfTsK
IAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5E
YXRhYmFzZVRhYmxlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZGF0YWJhc2UtdGFibGUi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50LmpzCmluZGV4IGI0YTVkNDYu
LmE1MmJlMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RhdGFiYXNlVGFibGVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE5ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNl
bnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQgPSBjbGFz
cyBEYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRy
ZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5EYXRhYmFzZVRhYmxlT2JqZWN0KTsKIAotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFs
VHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZVRyZWVFbGVt
ZW50LkRhdGFiYXNlVGFibGVJY29uU3R5bGVDbGFzc05hbWUsIHJlcHJlc2VudGVkT2JqZWN0Lm5h
bWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCBmYWxzZSk7CisgICAgICAgIHN1cGVyKCJkYXRh
YmFzZS10YWJsZS1pY29uIiwgcmVwcmVzZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVwcmVzZW50
ZWRPYmplY3QsIGZhbHNlKTsKIAogICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKKyAgICB9CiB9
OwotCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50LkRhdGFiYXNlVGFibGVJ
Y29uU3R5bGVDbGFzc05hbWUgPSAiZGF0YWJhc2UtdGFibGUtaWNvbiI7Ci0KLVdlYkluc3BlY3Rv
ci5EYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50Ci19OwotCi1XZWJJbnNwZWN0
b3IuRGF0YWJhc2VUYWJsZVRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVHJlZUVsZW1lbnQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZVRyZWVF
bGVtZW50LmpzCmluZGV4IGNiNDc5OWUuLmJhY2M5NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVHJlZUVsZW1lbnQuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUcmVl
RWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsMTEgKzIzLDEzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlVHJlZUVsZW1lbnQgPSBmdW5jdGlv
bihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50ID0g
Y2xhc3MgRGF0YWJhc2VUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJl
ZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkRhdGFiYXNlT2JqZWN0KTsKIAotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVs
ZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VUcmVlRWxlbWVudC5EYXRhYmFz
ZUljb25TdHlsZUNsYXNzTmFtZSwgcmVwcmVzZW50ZWRPYmplY3QubmFtZSwgbnVsbCwgcmVwcmVz
ZW50ZWRPYmplY3QsIHRydWUpOworICAgICAgICBzdXBlcigiZGF0YWJhc2UtaWNvbiIsIHJlcHJl
c2VudGVkT2JqZWN0Lm5hbWUsIG51bGwsIHJlcHJlc2VudGVkT2JqZWN0LCB0cnVlKTsKIAogICAg
ICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZhbHNl
OwpAQCAtMzUsMjEgKzM3LDE2IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50ID0g
ZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgIC8vIFNpbmNlIHdlIGFyZSBpbml0
aWFsbHkgdGVsbGluZyB0aGUgdHJlZSBlbGVtZW50IHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVu
LCBtYWtlIHN1cmUgdGhhdCB3ZSB0cnkgdG8gcG9wdWxhdGUKICAgICAgICAgLy8gdGhlIHRyZWUg
ZWxlbWVudCAod2hpY2ggd2lsbCBnZXQgYSBsaXN0IG9mIHRhYmxlcykgd2hlbiB0aGUgZWxlbWVu
dCBpcyBjcmVhdGVkLgogICAgICAgICB0aGlzLm9ucG9wdWxhdGUoKTsKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50LkRhdGFiYXNlSWNvblN0eWxlQ2xhc3NOYW1lID0gImRh
dGFiYXNlLWljb24iOwotCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50
LAorICAgIH0KIAogICAgIC8vIE92ZXJyaWRlcyBmcm9tIFRyZWVFbGVtZW50IChQcml2YXRlKQog
Ci0gICAgb25jb2xsYXBzZTogZnVuY3Rpb24oKQorICAgIG9uY29sbGFwc2UoKQogICAgIHsKICAg
ICAgICAgdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0cnVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuY2hpbGRyZW4ubGVuZ3RoICYmICF0aGlzLnNob3VsZFJlZnJlc2hDaGls
ZHJlbikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTcxLDUgKzY4LDMgQEAgV2ViSW5zcGVjdG9y
LkRhdGFiYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnJlcHJlc2Vu
dGVkT2JqZWN0LmdldFRhYmxlTmFtZXModGFibGVOYW1lc0NhbGxiYWNrLmJpbmQodGhpcykpOwog
ICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVn
Z2VyRGFzaGJvYXJkVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RlYnVnZ2VyRGFzaGJvYXJkVmlldy5qcwppbmRleCBkZjYwYzRmLi4zNTcwOTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1
Z2dlckRhc2hib2FyZFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRGVidWdnZXJEYXNoYm9hcmRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyRGFzaGJvYXJkVmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVj
dG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldyA9IGNsYXNzIERlYnVnZ2VyRGFzaGJvYXJkVmlldyBl
eHRlbmRzIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRh
c2hib2FyZFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCwgImRlYnVnZ2VyIik7Cisg
ICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihy
ZXByZXNlbnRlZE9iamVjdCwgImRlYnVnZ2VyIik7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFn
ZXIuRXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9yZWJ1aWxkTG9jYXRpb24s
IHRoaXMpOwogCkBAIC01OCwyMiArNjAsMTEgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJv
YXJkVmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQobG9jYXRpb25FbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9yZWJ1aWxk
TG9jYXRpb24oKTsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRW
aWV3LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNhbGxGcmFtZVRy
ZWVFbGVtZW50LkZ1bmN0aW9uSWNvblN0eWxlQ2xhc3NOYW1lOwotV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyRGFzaGJvYXJkVmlldy5FdmVudExpc3RlbmVySWNvblN0eWxlQ2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLkNhbGxGcmFtZVRyZWVFbGVtZW50LkV2ZW50TGlzdGVuZXJJY29uU3R5bGVDbGFzc05h
bWU7CisgICAgLy8gUHJpdmF0ZQogCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3
Lkljb25TdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hi
b2FyZFZpZXcuTWVzc2FnZVN0eWxlQ2xhc3NOYW1lID0gIm1lc3NhZ2UiOwotV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5EaXZpZGVyU3R5bGVDbGFzc05hbWUgPSAiZGl2aWRlciI7
Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkxvY2F0aW9uU3R5bGVDbGFzc05h
bWUgPSAibG9jYXRpb24iOwotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5GdW5j
dGlvbk5hbWVTdHlsZUNsYXNzTmFtZSA9ICJmdW5jdGlvbi1uYW1lIjsKLQotV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNw
ZWN0b3IuRGFzaGJvYXJkVmlldy5wcm90b3R5cGUsCi0KLSAgICBfcmVidWlsZExvY2F0aW9uOiBm
dW5jdGlvbigpCisgICAgX3JlYnVpbGRMb2NhdGlvbigpCiAgICAgewogICAgICAgICBpZiAoIVdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTA3LDEwICs5OCwxOSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9h
cmRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNob3VsZFByZXZlbnRMaW5rRmxvYXQg
PSB0cnVlOwogICAgICAgICB2YXIgbGlua0VsZW1lbnQgPSBXZWJJbnNwZWN0b3IuY3JlYXRlU291
cmNlQ29kZUxvY2F0aW9uTGluayhzb3VyY2VDb2RlTG9jYXRpb24sIHNob3VsZFByZXZlbnRMaW5r
RmxvYXQpOwogICAgICAgICB0aGlzLl9sb2NhdGlvbkVsZW1lbnQuYXBwZW5kQ2hpbGQobGlua0Vs
ZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc3VtZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0
aW9uKCkKKyAgICBfcmVzdW1lQnV0dG9uQ2xpY2tlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rv
ci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuRnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWU7
CitXZWJJbnNwZWN0b3IuRGVidWdnZXJEYXNoYm9hcmRWaWV3LkV2ZW50TGlzdGVuZXJJY29uU3R5
bGVDbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRXZlbnRMaXN0
ZW5lckljb25TdHlsZUNsYXNzTmFtZTsKKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJk
Vmlldy5JY29uU3R5bGVDbGFzc05hbWUgPSAiaWNvbiI7CitXZWJJbnNwZWN0b3IuRGVidWdnZXJE
YXNoYm9hcmRWaWV3Lk1lc3NhZ2VTdHlsZUNsYXNzTmFtZSA9ICJtZXNzYWdlIjsKK1dlYkluc3Bl
Y3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcuRGl2aWRlclN0eWxlQ2xhc3NOYW1lID0gImRpdmlk
ZXIiOworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyRGFzaGJvYXJkVmlldy5Mb2NhdGlvblN0eWxlQ2xh
c3NOYW1lID0gImxvY2F0aW9uIjsKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlckRhc2hib2FyZFZpZXcu
RnVuY3Rpb25OYW1lU3R5bGVDbGFzc05hbWUgPSAiZnVuY3Rpb24tbmFtZSI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWJ1Z2dlclNpZGVi
YXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rl
YnVnZ2VyU2lkZWJhclBhbmVsLmpzCmluZGV4IDY3ODcyOTkuLjFjNGY0ZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlYnVnZ2VyU2lkZWJh
clBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0RlYnVnZ2VyU2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGNs
YXNzIERlYnVnZ2VyU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwKIHsKLSAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5j
YWxsKHRoaXMsICJkZWJ1Z2dlciIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGVidWdnZXIiKSwg
IkltYWdlcy9OYXZpZ2F0aW9uSXRlbUJ1Zy5zdmciLCAiMyIsIHRydWUpOworICAgIGNvbnN0cnVj
dG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJkZWJ1Z2dlciIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiRGVidWdnZXIiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUJ1Zy5zdmciLCAiMyIsIHRy
dWUpOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNv
dXJjZUNoYW5nZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUmVzb3VyY2VXYXNBZGRlZCwgdGhpcy5f
cmVzb3VyY2VBZGRlZCwgdGhpcyk7CkBAIC0xNTQsMjAgKzE1Niw3IEBAIFdlYkluc3BlY3Rvci5E
ZWJ1Z2dlclNpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKICAgICAgICAgdGhpcy5fcGF1c2VSZWFz
b25TZWN0aW9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQYXVzZSBSZWFzb24iKTsK
IAogICAgICAgICBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5CcmVha3BvaW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcy5f
YnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuT2Zmc2V0U2VjdGlvbnNTdHlsZUNsYXNzTmFtZSA9
ICJvZmZzZXQtc2VjdGlvbnMiOwotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLkRl
YnVnZ2VyUGF1c2VkU3R5bGVDbGFzc05hbWUgPSAicGF1c2VkIjsKLVdlYkluc3BlY3Rvci5EZWJ1
Z2dlclNpZGViYXJQYW5lbC5FeGNlcHRpb25JY29uU3R5bGVDbGFzc05hbWUgPSAiYnJlYWtwb2lu
dC1leGNlcHRpb24taWNvbiI7Ci1XZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuUGF1
c2VkQnJlYWtwb2ludEljb25TdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LXBhdXNlZC1pY29u
IjsKLVdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5HbG9iYWxJY29uU3R5bGVDbGFz
c05hbWUgPSAiZ2xvYmFsLWJyZWFrcG9pbnRzLWljb24iOwotCi1XZWJJbnNwZWN0b3IuRGVidWdn
ZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxFeGNlcHRpb25zQ29va2llS2V5ID0gImRlYnVnZ2Vy
LXNpZGViYXItcGFuZWwtYWxsLWV4Y2VwdGlvbnMtYnJlYWtwb2ludCI7Ci1XZWJJbnNwZWN0b3Iu
RGVidWdnZXJTaWRlYmFyUGFuZWwuU2VsZWN0ZWRBbGxVbmNhdWdodEV4Y2VwdGlvbnNDb29raWVL
ZXkgPSAiZGVidWdnZXItc2lkZWJhci1wYW5lbC1hbGwtdW5jYXVnaHQtZXhjZXB0aW9ucy1icmVh
a3BvaW50IjsKLQotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLAot
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90
eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBAIC0xNzYsMjUgKzE2NSwyNSBAQCBXZWJJ
bnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gISF0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVt
ZW50CiAgICAgICAgICAgICB8fCAhIXRoaXMuX2NhbGxTdGFja0NvbnRlbnRUcmVlT3V0bGluZS5z
ZWxlY3RlZFRyZWVFbGVtZW50CiAgICAgICAgICAgICB8fCAodGhpcy5fcGF1c2VSZWFzb25UcmVl
T3V0bGluZSAmJiAhIXRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxl
bWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3OiBmdW5j
dGlvbigpCisgICAgc2hvd0RlZmF1bHRDb250ZW50VmlldygpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd0RlZmF1bHRDb250ZW50VmlldygpOwot
ICAgIH0sCisgICAgfQogCi0gICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVu
Y3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9i
amVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIC8vIFRoZSBtYWluIHJlc291
cmNlIGlzIHVzZWQgYXMgdGhlIHJlcHJlc2VudGVkT2JqZWN0IGluc3RlYWQgb2YgRnJhbWUgaW4g
b3VyIHRyZWUuCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5GcmFtZSkKICAgICAgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0ID0gcmVwcmVzZW50
ZWRPYmplY3QubWFpblJlc291cmNlOwogCiAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRUcmVl
T3V0bGluZS5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHNhdmVTdGF0ZVRvQ29va2llOiBmdW5j
dGlvbihjb29raWUpCisgICAgc2F2ZVN0YXRlVG9Db29raWUoY29va2llKQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoY29va2llKTsKIApAQCAtMjExLDkgKzIwMCw5IEBAIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb29r
aWVbV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLlNlbGVjdGVkQWxsVW5jYXVnaHRF
eGNlcHRpb25zQ29va2llS2V5XSA9IHRydWU7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLnNhdmVTdGF0ZVRvQ29va2llLmNhbGwodGhpcywg
Y29va2llKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc3RvcmVTdGF0ZUZyb21Db29raWU6IGZ1
bmN0aW9uKGNvb2tpZSwgcmVsYXhlZE1hdGNoRGVsYXkpCisgICAgcmVzdG9yZVN0YXRlRnJvbUNv
b2tpZShjb29raWUsIHJlbGF4ZWRNYXRjaERlbGF5KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoY29va2llKTsKIApAQCAtMjI0LDExICsyMTMsMTEgQEAgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2FsbFVuY2F1
Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnRUcmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QoKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLnJlc3RvcmVTdGF0ZUZyb21Db29raWUuY2FsbCh0aGlzLCBjb29raWUsIHJl
bGF4ZWRNYXRjaERlbGF5KTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF9kZWJ1Z2dlclBhdXNlUmVzdW1lQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2RlYnVnZ2VyUGF1c2VSZXN1bWVCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucGF1c2VkKQogICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKQEAgLTIzNiwyNCArMjI1LDI0IEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9kZWJ1Z2dlclBhdXNlUmVzdW1lQnV0dG9uSXRlbS5lbmFibGVkID0gZmFsc2U7
CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnBhdXNlKCk7CiAgICAg
ICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9kZWJ1Z2dlclN0ZXBPdmVyQnV0dG9uQ2xpY2tl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RlYnVnZ2VyU3RlcE92ZXJCdXR0b25DbGlja2VkKGV2
ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5zdGVwT3Zl
cigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RlYnVnZ2VyU3RlcEludG9CdXR0b25DbGlja2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICBfZGVidWdnZXJTdGVwSW50b0J1dHRvbkNsaWNrZWQoZXZl
bnQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnN0ZXBJbnRv
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVidWdnZXJTdGVwT3V0QnV0dG9uQ2xpY2tlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX2RlYnVnZ2VyU3RlcE91dEJ1dHRvbkNsaWNrZWQoZXZlbnQp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnN0ZXBPdXQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9kZWJ1Z2dlckRpZFBhdXNlOiBmdW5jdGlvbihldmVudCkK
KyAgICBfZGVidWdnZXJEaWRQYXVzZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuY29udGVu
dEVsZW1lbnQuaW5zZXJ0QmVmb3JlKHRoaXMuX2NhbGxTdGFja1NlY3Rpb24uZWxlbWVudCwgdGhp
cy5jb250ZW50RWxlbWVudC5maXJzdENoaWxkKTsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZVBh
dXNlUmVhc29uKCkpCkBAIC0yNjUsOSArMjU0LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZGVidWdnZXJTdGVwSW50b0J1
dHRvbkl0ZW0uZW5hYmxlZCA9IHRydWU7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLkRlYnVnZ2VyUGF1c2VkU3R5
bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RlYnVnZ2VyRGlkUmVzdW1lOiBm
dW5jdGlvbihldmVudCkKKyAgICBfZGVidWdnZXJEaWRSZXN1bWUoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9jYWxsU3RhY2tTZWN0aW9uLmVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIHRo
aXMuX3BhdXNlUmVhc29uU2VjdGlvbi5lbGVtZW50LnJlbW92ZSgpOwpAQCAtMjc5LDE5ICsyNjgs
MTkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fZGVidWdnZXJTdGVwT3V0QnV0dG9uSXRlbS5lbmFibGVkID0gZmFsc2U7CiAK
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyU2lkZWJhclBhbmVsLkRlYnVnZ2VyUGF1c2VkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2JyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2JyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2RlYnVnZ2VyQnJlYWtwb2ludHNCdXR0b25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2JyZWFrcG9pbnRzVG9nZ2xlQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2JyZWFrcG9pbnRzVG9nZ2xlQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkID0gIXRoaXMu
X2RlYnVnZ2VyQnJlYWtwb2ludHNCdXR0b25JdGVtLmFjdGl2YXRlZDsKLSAgICB9LAorICAgIH0K
IAotICAgIF9hZGRCcmVha3BvaW50OiBmdW5jdGlvbihicmVha3BvaW50KQorICAgIF9hZGRCcmVh
a3BvaW50KGJyZWFrcG9pbnQpCiAgICAgewogICAgICAgICB2YXIgc291cmNlQ29kZSA9IGJyZWFr
cG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlTb3VyY2VDb2RlOwogICAgICAgICBpZiAo
IXNvdXJjZUNvZGUpCkBAIC0zMTEsMTYgKzMwMCwxNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJT
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAocGFyZW50VHJlZUVsZW1lbnQu
Y2hpbGRyZW4ubGVuZ3RoID09PSAxKQogICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuZXhw
YW5kKCk7CiAgICAgICAgIHJldHVybiBicmVha3BvaW50VHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfYWRkQnJlYWtwb2ludHNGb3JTb3VyY2VDb2RlOiBmdW5jdGlvbihzb3VyY2VD
b2RlKQorICAgIF9hZGRCcmVha3BvaW50c0ZvclNvdXJjZUNvZGUoc291cmNlQ29kZSkKICAgICB7
CiAgICAgICAgIHZhciBicmVha3BvaW50cyA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIu
YnJlYWtwb2ludHNGb3JTb3VyY2VDb2RlKHNvdXJjZUNvZGUpOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGJyZWFrcG9pbnRzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5fYWRk
QnJlYWtwb2ludChicmVha3BvaW50c1tpXSwgc291cmNlQ29kZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfYWRkVHJlZUVsZW1lbnRGb3JTb3VyY2VDb2RlVG9Db250ZW50VHJlZU91dGxpbmU6IGZ1
bmN0aW9uKHNvdXJjZUNvZGUpCisgICAgX2FkZFRyZWVFbGVtZW50Rm9yU291cmNlQ29kZVRvQ29u
dGVudFRyZWVPdXRsaW5lKHNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICB2YXIgdHJlZUVsZW1l
bnQgPSB0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZS5nZXRDYWNoZWRUcmVlRWxl
bWVudChzb3VyY2VDb2RlKTsKICAgICAgICAgaWYgKCF0cmVlRWxlbWVudCkgewpAQCAtMzQwLDkg
KzMyOSw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcmVzb3VyY2VBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jlc291cmNlQWRk
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcmVzb3VyY2UgPSBldmVudC5kYXRhLnJlc291
cmNlOwogCkBAIC0zNTEsMTYgKzM0MCwxNiBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFy
UGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50Rm9yU291
cmNlQ29kZVRvQ29udGVudFRyZWVPdXRsaW5lKHJlc291cmNlKTsKICAgICAgICAgdGhpcy5fYWRk
QnJlYWtwb2ludHNGb3JTb3VyY2VDb2RlKHJlc291cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9tYWluUmVzb3VyY2VDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbWFpblJlc291cmNl
Q2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IGV2ZW50LnRhcmdl
dC5tYWluUmVzb3VyY2U7CiAgICAgICAgIHRoaXMuX2FkZFRyZWVFbGVtZW50Rm9yU291cmNlQ29k
ZVRvQ29udGVudFRyZWVPdXRsaW5lKHJlc291cmNlKTsKICAgICAgICAgdGhpcy5fYWRkQnJlYWtw
b2ludHNGb3JTb3VyY2VDb2RlKHJlc291cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zY3Jp
cHRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NjcmlwdEFkZGVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdmFyIHNjcmlwdCA9IGV2ZW50LmRhdGEuc2NyaXB0OwogCkBAIC0zODAsOSArMzY5
LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICB0aGlzLl9hZGRUcmVlRWxlbWVudEZvclNvdXJjZUNvZGVUb0NvbnRlbnRUcmVlT3V0
bGluZShzY3JpcHQpOwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50c0ZvclNvdXJjZUNvZGUo
c2NyaXB0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zY3JpcHRzQ2xlYXJlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX3NjcmlwdHNDbGVhcmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgZm9yICh2
YXIgaSA9IHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuLmxlbmd0
aCAtIDE7IGkgPj0gMDsgLS1pKSB7CiAgICAgICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlz
Ll9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZS5jaGlsZHJlbltpXTsKQEAgLTM5MSwxNSAr
MzgwLDE1IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzQ29udGVudFRyZWVPdXRsaW5lLnJlbW92
ZUNoaWxkQXRJbmRleChpLCB0cnVlLCB0cnVlKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQog
Ci0gICAgX2JyZWFrcG9pbnRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JyZWFrcG9pbnRB
ZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQuZGF0YS5i
cmVha3BvaW50OwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2JyZWFrcG9pbnRSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfYnJlYWtwb2ludFJlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2lu
dCA9IGV2ZW50LmRhdGEuYnJlYWtwb2ludDsKIApAQCAtNDE1LDkgKzQwNCw5IEBAIFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludFRyZWVFbGVtZW50KGJyZWFrcG9p
bnRUcmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludERpc3BsYXlM
b2NhdGlvbkRpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JyZWFrcG9pbnREaXNwbGF5
TG9jYXRpb25EaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IGV2ZW50LnRhcmdldDsKICAgICAgICAgaWYgKGV2ZW50LmRhdGEub2xkRGlzcGxheVNvdXJjZUNv
ZGUgPT09IGJyZWFrcG9pbnQuZGlzcGxheVNvdXJjZUNvZGUpCkBAIC00MzcsMTcgKzQyNiwxNyBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGlmIChuZXdCcmVha3BvaW50VHJlZUVsZW1lbnQgJiYgd2FzU2VsZWN0ZWQpCiAgICAgICAg
ICAgICBuZXdCcmVha3BvaW50VHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUsIGZhbHNl
LCB0cnVlLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZW1vdmVCcmVha3BvaW50VHJl
ZUVsZW1lbnQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnRUcmVlRWxlbWVudCkKKyAgICBfcmVtb3ZlQnJl
YWtwb2ludFRyZWVFbGVtZW50KGJyZWFrcG9pbnRUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAg
IHZhciBwYXJlbnRUcmVlRWxlbWVudCA9IGJyZWFrcG9pbnRUcmVlRWxlbWVudC5wYXJlbnQ7CiAg
ICAgICAgIHBhcmVudFRyZWVFbGVtZW50LnJlbW92ZUNoaWxkKGJyZWFrcG9pbnRUcmVlRWxlbWVu
dCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQocGFyZW50VHJlZUVsZW1lbnQucGFyZW50ID09
PSB0aGlzLl9icmVha3BvaW50c0NvbnRlbnRUcmVlT3V0bGluZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZGVidWdnZXJDYWxsRnJhbWVzRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgX2RlYnVn
Z2VyQ2FsbEZyYW1lc0RpZENoYW5nZSgpCiAgICAgewogICAgICAgICB0aGlzLl9jYWxsU3RhY2tD
b250ZW50VHJlZU91dGxpbmUucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtNDcyLDkgKzQ2MSw5IEBA
IFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgaWYgKHRyZWVFbGVtZW50VG9TZWxlY3QpCiAgICAgICAgICAgICB0cmVlRWxlbWVudFRvU2Vs
ZWN0LnNlbGVjdCh0cnVlLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kZWJ1Z2dlckFj
dGl2ZUNhbGxGcmFtZURpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIF9kZWJ1Z2dlckFjdGl2ZUNh
bGxGcmFtZURpZENoYW5nZSgpCiAgICAgewogICAgICAgICB2YXIgY2FsbEZyYW1lcyA9IFdlYklu
c3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuY2FsbEZyYW1lczsKICAgICAgICAgaWYgKCFjYWxsRnJh
bWVzKQpAQCAtNDg1LDkgKzQ3NCw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIHNpbmNlIHRoZXJlIG1pZ2h0IGJlIGNhbGwgZnJh
bWVzIGluIHRoZSBiYWNrZW5kIHRoYXQgd2VyZSByZW1vdmVkIHdoZW4gcHJvY2Vzc2luZyB0aGUg
Y2FsbAogICAgICAgICAvLyBmcmFtZSBwYXlsb2FkLgogICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0
ZXBPdXRCdXR0b25JdGVtLmVuYWJsZWQgPSBpbmRleE9mQWN0aXZlQ2FsbEZyYW1lIDwgY2FsbEZy
YW1lcy5sZW5ndGggLSAxOwotICAgIH0sCisgICAgfQogCi0gICAgX2JyZWFrcG9pbnRzQmVuZWF0
aFRyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfYnJlYWtwb2ludHNCZW5l
YXRoVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50
IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50
KTsKICAgICAgICAgaWYgKCEodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUcmVlRWxlbWVudCkgJiYgISh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5TY3JpcHRUcmVlRWxlbWVudCkpCkBAIC01MDQsMjQgKzQ5MywyNCBAQCBXZWJJbnNwZWN0b3Iu
RGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIGJyZWFrcG9pbnRzOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZUFsbEJyZWFr
cG9pbnRzOiBmdW5jdGlvbihicmVha3BvaW50cykKKyAgICBfcmVtb3ZlQWxsQnJlYWtwb2ludHMo
YnJlYWtwb2ludHMpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJyZWFrcG9p
bnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGJyZWFrcG9p
bnRzW2ldOwogICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuaXNC
cmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQpKQogICAgICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICAg
ICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2dsZUFsbEJyZWFrcG9pbnRzOiBmdW5jdGlv
bihicmVha3BvaW50cywgZGlzYWJsZWQpCisgICAgX3RvZ2dsZUFsbEJyZWFrcG9pbnRzKGJyZWFr
cG9pbnRzLCBkaXNhYmxlZCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJl
YWtwb2ludHMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBicmVha3BvaW50c1tpXS5kaXNhYmxl
ZCA9IGRpc2FibGVkOwotICAgIH0sCisgICAgfQogCi0gICAgX2JyZWFrcG9pbnRUcmVlT3V0bGlu
ZURlbGV0ZVRyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfYnJlYWtwb2lu
dFRyZWVPdXRsaW5lRGVsZXRlVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudC5zZWxlY3RlZCk7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVs
ZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVs
ZW1lbnQpOwpAQCAtNTM4LDkgKzUyNyw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBuZXh0U2libGluZy5zZWxlY3QodHJ1ZSwg
dHJ1ZSk7CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYnJl
YWtwb2ludFRyZWVPdXRsaW5lQ29udGV4dE1lbnVUcmVlRWxlbWVudDogZnVuY3Rpb24oZXZlbnQs
IHRyZWVFbGVtZW50KQorICAgIF9icmVha3BvaW50VHJlZU91dGxpbmVDb250ZXh0TWVudVRyZWVF
bGVtZW50KGV2ZW50LCB0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQg
fHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQg
fHwgdHJlZUVsZW1lbnQuY29uc3RydWN0b3IgPT09IFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxl
bWVudCk7CiAgICAgICAgIGlmICghKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlJlc291cmNlVHJlZUVsZW1lbnQpICYmICEodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQpKQpAQCAtNTcyLDkgKzU2MSw5IEBAIFdlYkluc3BlY3Rv
ci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnRz
IiksIHRvZ2dsZUFsbFJlc291cmNlQnJlYWtwb2ludHMuYmluZCh0aGlzKSk7CiAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtw
b2ludHMiKSwgcmVtb3ZlQWxsUmVzb3VyY2VCcmVha3BvaW50cy5iaW5kKHRoaXMpKTsKICAgICAg
ICAgY29udGV4dE1lbnUuc2hvdygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50
U2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKKyAgICBfdHJl
ZUVsZW1lbnRTZWxlY3RlZCh0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCiAgICAgewogICAg
ICAgICBmdW5jdGlvbiBkZXNlbGVjdENhbGxTdGFja0NvbnRlbnRUcmVlRWxlbWVudHMoKQogICAg
ICAgICB7CkBAIC02NDMsOSArNjMyLDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd1NvdXJjZUNvZGVMb2NhdGlvbihicmVha3Bv
aW50LnNvdXJjZUNvZGVMb2NhdGlvbik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29tcGFyZVRv
cExldmVsVHJlZUVsZW1lbnRzOiBmdW5jdGlvbihhLCBiKQorICAgIF9jb21wYXJlVG9wTGV2ZWxU
cmVlRWxlbWVudHMoYSwgYikKICAgICB7CiAgICAgICAgIGlmIChhID09PSB0aGlzLl9nbG9iYWxC
cmVha3BvaW50c0ZvbGRlclRyZWVFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAt
NjUzLDkgKzY0Miw5IEBAIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gMTsKIAogICAgICAgICByZXR1cm4gYS5tYWluVGl0
bGUubG9jYWxlQ29tcGFyZShiLm1haW5UaXRsZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29t
cGFyZUJyZWFrcG9pbnRUcmVlRWxlbWVudHM6IGZ1bmN0aW9uKGEsIGIpCisgICAgX2NvbXBhcmVC
cmVha3BvaW50VHJlZUVsZW1lbnRzKGEsIGIpCiAgICAgewogICAgICAgICB2YXIgYUxvY2F0aW9u
ID0gYS5icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKICAgICAgICAgdmFyIGJMb2NhdGlv
biA9IGIuYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CkBAIC02NjUsMTcgKzY1NCwxNyBA
QCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuIGNvbXBhcmlzb25SZXN1bHQ7CiAKICAgICAgICAgcmV0dXJuIGFMb2NhdGlv
bi5kaXNwbGF5Q29sdW1uTnVtYmVyIC0gYkxvY2F0aW9uLmRpc3BsYXlDb2x1bW5OdW1iZXI7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlUGF1c2VSZWFzb246IGZ1bmN0aW9uKCkKKyAgICBf
dXBkYXRlUGF1c2VSZWFzb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVl
T3V0bGluZSA9IG51bGw7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlUGF1c2VSZWFzb25Hb3RvQXJy
b3coKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZVBhdXNlUmVhc29uU2VjdGlvbigpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVBhdXNlUmVhc29uU2VjdGlvbjogZnVuY3Rpb24o
KQorICAgIF91cGRhdGVQYXVzZVJlYXNvblNlY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHBh
dXNlRGF0YSA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucGF1c2VEYXRhOwogCkBAIC03
NDYsOSArNzM1LDkgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0K
IAotICAgIF91cGRhdGVQYXVzZVJlYXNvbkdvdG9BcnJvdzogZnVuY3Rpb24oKQorICAgIF91cGRh
dGVQYXVzZVJlYXNvbkdvdG9BcnJvdygpCiAgICAgewogICAgICAgICB0aGlzLl9wYXVzZVJlYXNv
bkxpbmtDb250YWluZXJFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKQEAgLTc2NCwzICs3NTMs
MTIgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fcGF1c2VSZWFzb25MaW5rQ29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChs
aW5rRWxlbWVudCk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBh
bmVsLk9mZnNldFNlY3Rpb25zU3R5bGVDbGFzc05hbWUgPSAib2Zmc2V0LXNlY3Rpb25zIjsKK1dl
Ykluc3BlY3Rvci5EZWJ1Z2dlclNpZGViYXJQYW5lbC5EZWJ1Z2dlclBhdXNlZFN0eWxlQ2xhc3NO
YW1lID0gInBhdXNlZCI7CitXZWJJbnNwZWN0b3IuRGVidWdnZXJTaWRlYmFyUGFuZWwuRXhjZXB0
aW9uSWNvblN0eWxlQ2xhc3NOYW1lID0gImJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24iOworV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLlBhdXNlZEJyZWFrcG9pbnRJY29uU3R5bGVD
bGFzc05hbWUgPSAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiI7CitXZWJJbnNwZWN0b3IuRGVidWdn
ZXJTaWRlYmFyUGFuZWwuR2xvYmFsSWNvblN0eWxlQ2xhc3NOYW1lID0gImdsb2JhbC1icmVha3Bv
aW50cy1pY29uIjsKKworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLlNlbGVjdGVk
QWxsRXhjZXB0aW9uc0Nvb2tpZUtleSA9ICJkZWJ1Z2dlci1zaWRlYmFyLXBhbmVsLWFsbC1leGNl
cHRpb25zLWJyZWFrcG9pbnQiOworV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2lkZWJhclBhbmVsLlNl
bGVjdGVkQWxsVW5jYXVnaHRFeGNlcHRpb25zQ29va2llS2V5ID0gImRlYnVnZ2VyLXNpZGViYXIt
cGFuZWwtYWxsLXVuY2F1Z2h0LWV4Y2VwdGlvbnMtYnJlYWtwb2ludCI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZWZhdWx0RGFzaGJvYXJk
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1
bHREYXNoYm9hcmRWaWV3LmpzCmluZGV4IGU2MjQyOTMuLjAxMjlkYWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RlZmF1bHREYXNoYm9hcmRW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rl
ZmF1bHREYXNoYm9hcmRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldyA9IGZ1bmN0aW9uKHJl
cHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3ID0gY2xh
c3MgRGVmYXVsdERhc2hib2FyZFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGFzaGJvYXJkVmll
dwogewotICAgIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50
ZWRPYmplY3QsICJkZWZhdWx0Iik7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3Qp
CisgICAgeworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCwgImRlZmF1bHQiKTsKIAog
ICAgICAgICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
ZWZhdWx0RGFzaGJvYXJkLkV2ZW50LkRhdGFEaWRDaGFuZ2UsIHdpbmRvdy5yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUuYmluZChudWxsLCB0aGlzLl91cGRhdGVEaXNwbGF5LmJpbmQodGhpcykpKTsKIApA
QCAtNTgsMTcgKzYwLDExIEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldyA9IGZ1
bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogCiAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhp
cy5faXRlbXMpCiAgICAgICAgICAgICB0aGlzLl9hcHBlbmRFbGVtZW50Rm9yTmFtZWRJdGVtKG5h
bWUpOwotfTsKLQotV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LkVuYWJsZWRJdGVt
U3R5bGVDbGFzc05hbWUgPSAiZW5hYmxlZCI7Ci0KLVdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJv
YXJkVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZWZh
dWx0RGFzaGJvYXJkVmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRW
aWV3LnByb3RvdHlwZSwKKyAgICB9CiAgICAgCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0
ZURpc3BsYXk6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRGlzcGxheSgpCiAgICAgewogICAgICAg
ICB2YXIgZGFzaGJvYXJkID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKIApAQCAtODYsMTQgKzgy
LDE0IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHZhciBzaXplSXRlbSA9IHRoaXMuX2l0ZW1zLnJlc291cmNlc1NpemU7CiAgICAgICAg
IHNpemVJdGVtLnRleHQgPSBkYXNoYm9hcmQucmVzb3VyY2VzU2l6ZSA/IE51bWJlci5ieXRlc1Rv
U3RyaW5nKGRhc2hib2FyZC5yZXNvdXJjZXNTaXplLCBmYWxzZSkgOiAiXHUyMDE0IjsKICAgICAg
ICAgdGhpcy5fc2V0SXRlbUVuYWJsZWQoc2l6ZUl0ZW0sIGRhc2hib2FyZC5yZXNvdXJjZXNTaXpl
ID4gMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0UG9zc2libGVMYXJnZU51bWJlcjog
ZnVuY3Rpb24obnVtYmVyKQorICAgIF9mb3JtYXRQb3NzaWJsZUxhcmdlTnVtYmVyKG51bWJlcikK
ICAgICB7CiAgICAgICAgIHJldHVybiBudW1iZXIgPiA5OTkgPyBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIjk5OSsiKSA6IG51bWJlcjsKLSAgICB9LAorICAgIH0KIAotICAgIF9hcHBlbmRFbGVtZW50
Rm9yTmFtZWRJdGVtOiBmdW5jdGlvbihuYW1lKQorICAgIF9hcHBlbmRFbGVtZW50Rm9yTmFtZWRJ
dGVtKG5hbWUpCiAgICAgewogICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2l0ZW1zW25hbWVdOwog
CkBAIC0xMDcsNyArMTAzLDcgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoaXRlbSwgInRleHQi
LAogICAgICAgICB7Ci0gICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uKG5ld1RleHQpCisgICAgICAg
ICAgICBzZXQobmV3VGV4dCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBpZiAobmV3
VGV4dCA9PT0gaXRlbS5vdXRsZXQudGV4dENvbnRlbnQpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTExOCw5ICsxMTQsOSBAQCBXZWJJbnNwZWN0b3IuRGVmYXVsdERhc2hib2FyZFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICBpdGVtLmNvbnRhaW5lci5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICB0aGlzLl9pdGVtV2FzQ2xp
Y2tlZChuYW1lKTsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9pdGVtV2FzQ2xpY2tlZDogZnVuY3Rpb24obmFtZSkKKyAgICBfaXRlbVdhc0NsaWNrZWQobmFt
ZSkKICAgICB7CiAgICAgICAgIHZhciBpdGVtID0gdGhpcy5faXRlbXNbbmFtZV07CiAgICAgICAg
IGlmICghaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5EZWZh
dWx0RGFzaGJvYXJkVmlldy5FbmFibGVkSXRlbVN0eWxlQ2xhc3NOYW1lKSkKQEAgLTEyOCwyNSAr
MTI0LDI1IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgaWYgKGl0ZW0uaGFuZGxlcikKICAgICAgICAgICAgIGl0ZW0uaGFuZGxlci5j
YWxsKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc291cmNlc1dhc0NsaWNrZWQ6IGZ1
bmN0aW9uKCkKKyAgICBfcmVzb3VyY2VzV2FzQ2xpY2tlZCgpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIuc2VsZWN0ZWRTaWRlYmFyUGFuZWwgPSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWw7CiAgICAgICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0
aW9uU2lkZWJhci5jb2xsYXBzZWQgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9uZXR3
b3JrSXRlbVdhc0NsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfbmV0d29ya0l0ZW1XYXNDbGlja2Vk
KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5zZWxlY3Rl
ZFNpZGViYXJQYW5lbCA9IFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbDsKLSAgICB9
LAorICAgIH0KIAotICAgIF9jb25zb2xlSXRlbVdhc0NsaWNrZWQ6IGZ1bmN0aW9uKHNjb3BlKQor
ICAgIF9jb25zb2xlSXRlbVdhc0NsaWNrZWQoc2NvcGUpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3Iuc2hvd0NvbnNvbGVWaWV3KHNjb3BlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZXRD
b25zb2xlSXRlbVZhbHVlOiBmdW5jdGlvbihpdGVtTmFtZSwgbmV3VmFsdWUpCisgICAgX3NldENv
bnNvbGVJdGVtVmFsdWUoaXRlbU5hbWUsIG5ld1ZhbHVlKQogICAgIHsKICAgICAgICAgdmFyIGlW
YXJOYW1lID0gIl8iICsgaXRlbU5hbWU7CiAgICAgICAgIHZhciBwcmV2aW91c1ZhbHVlID0gdGhp
c1tpVmFyTmFtZV07CkBAIC0xNzgsOSArMTc0LDkgQEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNo
Ym9hcmRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnRhaW5lci5hZGRFdmVudExp
c3RlbmVyKCJ3ZWJraXRBbmltYXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCk7CiAKICAgICAgICAg
Y29udGFpbmVyLmNsYXNzTGlzdC5hZGQoInB1bHNpbmciKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9zZXRJdGVtRW5hYmxlZDogZnVuY3Rpb24oaXRlbSwgZW5hYmxlZCkKKyAgICBfc2V0SXRlbUVu
YWJsZWQoaXRlbSwgZW5hYmxlZCkKICAgICB7CiAgICAgICAgIGlmIChlbmFibGVkKQogICAgICAg
ICAgICAgaXRlbS5jb250YWluZXIuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGVmYXVsdERh
c2hib2FyZFZpZXcuRW5hYmxlZEl0ZW1TdHlsZUNsYXNzTmFtZSk7CkBAIC0xODgsMyArMTg0LDUg
QEAgV2ViSW5zcGVjdG9yLkRlZmF1bHREYXNoYm9hcmRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGl0ZW0uY29udGFpbmVyLmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkRlZmF1
bHREYXNoYm9hcmRWaWV3LkVuYWJsZWRJdGVtU3R5bGVDbGFzc05hbWUpOwogICAgIH0KIH07CisK
K1dlYkluc3BlY3Rvci5EZWZhdWx0RGFzaGJvYXJkVmlldy5FbmFibGVkSXRlbVN0eWxlQ2xhc3NO
YW1lID0gImVuYWJsZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qcwppbmRleCAzOTY1NTUwLi45ZWNk
YzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EZXRhaWxzU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbi5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b24gPSBmdW5jdGlvbihpZGVudGlmaWVyLCB0aXRsZSwgZ3JvdXBzLCBvcHRpb25zRWxlbWVudCwg
ZGVmYXVsdENvbGxhcHNlZFNldHRpbmdWYWx1ZSkgewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgot
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKK1dlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvbiA9IGNsYXNzIERldGFpbHNTZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAoreworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIHRpdGxlLCBncm91cHMsIG9wdGlv
bnNFbGVtZW50LCBkZWZhdWx0Q29sbGFwc2VkU2V0dGluZ1ZhbHVlKQorICAgIHsKKyAgICAgICAg
c3VwZXIoKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChpZGVudGlmaWVyKTsKIApAQCAtNjAs
NDggKzYyLDM0IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbiA9IGZ1bmN0aW9uKGlkZW50
aWZpZXIsIHRpdGxlLCBncm91cHMsIG9wdGlvbnNFbGVtZW50CiAKICAgICAgICAgdGhpcy5fY29s
bGFwc2VkU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZyhpZGVudGlmaWVyICsgIi1k
ZXRhaWxzLXNlY3Rpb24tY29sbGFwc2VkIiwgISFkZWZhdWx0Q29sbGFwc2VkU2V0dGluZ1ZhbHVl
KTsKICAgICAgICAgdGhpcy5jb2xsYXBzZWQgPSB0aGlzLl9jb2xsYXBzZWRTZXR0aW5nLnZhbHVl
OwotfTsKLQotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLlN0eWxlQ2xhc3NOYW1lID0gImRl
dGFpbHMtc2VjdGlvbiI7Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uSGVhZGVyRWxlbWVu
dFN0eWxlQ2xhc3NOYW1lID0gImhlYWRlciI7Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24u
VGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidGl0bGUiOwotV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uLkNvbnRlbnRFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiY29udGVudCI7Ci1XZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUgPSAiY29sbGFw
c2VkIjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5Nb3VzZU92ZXJPcHRpb25zRWxlbWVu
dFN0eWxlQ2xhc3NOYW1lID0gIm1vdXNlLW92ZXItb3B0aW9ucy1lbGVtZW50IjsKLVdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVPcGVuQ2FudmFzSWRlbnRpZmll
ciA9ICJkZXRhaWxzLXNlY3Rpb24tZGlzY2xvc3VyZS10cmlhbmdsZS1vcGVuIjsKLVdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVDbG9zZWRDYW52YXNJZGVudGlm
aWVyID0gImRldGFpbHMtc2VjdGlvbi1kaXNjbG9zdXJlLXRyaWFuZ2xlLWNsb3NlZCI7Ci1XZWJJ
bnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uRGlzY2xvc3VyZVRyaWFuZ2xlTm9ybWFsQ2FudmFzSWRl
bnRpZmllclN1ZmZpeCA9ICItbm9ybWFsIjsKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5E
aXNjbG9zdXJlVHJpYW5nbGVBY3RpdmVDYW52YXNJZGVudGlmaWVyU3VmZml4ID0gIi1hY3RpdmUi
OwotCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24ucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24sCisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxl
bWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpZGVudGlmaWVyKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9pZGVudGlmaWVyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRp
dGxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90aXRsZUVsZW1lbnQudGV4dENvbnRl
bnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgdGl0bGUodGl0bGUpCiAgICAgewogICAgICAg
ICB0aGlzLl90aXRsZUVsZW1lbnQudGV4dENvbnRlbnQgPSB0aXRsZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBjb2xsYXBzZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1l
bnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5Db2xsYXBz
ZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29sbGFwc2VkKGZs
YWcpCiAgICAgewpAQCAtMTExLDEyICs5OSwxMiBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7
CiAKICAgICAgICAgdGhpcy5fY29sbGFwc2VkU2V0dGluZy52YWx1ZSA9IGZsYWcgfHwgZmFsc2U7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZ3JvdXBzKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9ncm91cHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZ3JvdXBzKGdyb3VwcykK
ICAgICB7CkBAIC0xMjYsMTEgKzExNCwxMSBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24u
cHJvdG90eXBlID0gewogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fZ3JvdXBz
Lmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5fY29udGVudEVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fZ3JvdXBzW2ldLmVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQogCi0gICAgX2hlYWRlckVsZW1lbnRDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
aGVhZGVyRWxlbWVudENsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFy
Z2V0LmlzU2VsZk9yRGVzY2VuZGFudCh0aGlzLl9vcHRpb25zRWxlbWVudCkpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0xMzgsMTkgKzEyNiwxOSBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rp
b24ucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmNvbGxhcHNlZCA9ICF0aGlzLmNvbGxhcHNl
ZDsKIAogICAgICAgICB0aGlzLl9lbGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2Up
OwotICAgIH0sCisgICAgfQogCi0gICAgX29wdGlvbnNFbGVtZW50TW91c2VEb3duOiBmdW5jdGlv
bihldmVudCkKKyAgICBfb3B0aW9uc0VsZW1lbnRNb3VzZURvd24oZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uLk1vdXNlT3Zlck9wdGlvbnNFbGVtZW50U3R5bGVDbGFzc05hbWUpOwotICAgIH0s
CisgICAgfQogCi0gICAgX29wdGlvbnNFbGVtZW50TW91c2VVcDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX29wdGlvbnNFbGVtZW50TW91c2VVcChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2hl
YWRlckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24u
TW91c2VPdmVyT3B0aW9uc0VsZW1lbnRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZ2VuZXJhdGVEaXNjbG9zdXJlVHJpYW5nbGVzSWZOZWVkZWQ6IGZ1bmN0aW9uKCkKKyAg
ICBfZ2VuZXJhdGVEaXNjbG9zdXJlVHJpYW5nbGVzSWZOZWVkZWQoKQogICAgIHsKICAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5fZ2VuZXJhdGVkRGlzY2xvc3VyZVRyaWFu
Z2xlcykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3Myw0ICsxNjEsMTMgQEAgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb24ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmpl
Y3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uLlN0eWxlQ2xhc3NOYW1l
ID0gImRldGFpbHMtc2VjdGlvbiI7CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uSGVhZGVy
RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImhlYWRlciI7CitXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb24uVGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidGl0bGUiOworV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uLkNvbnRlbnRFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiY29udGVudCI7
CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUgPSAi
Y29sbGFwc2VkIjsKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5Nb3VzZU92ZXJPcHRpb25z
RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm1vdXNlLW92ZXItb3B0aW9ucy1lbGVtZW50IjsKK1dl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVPcGVuQ2FudmFzSWRl
bnRpZmllciA9ICJkZXRhaWxzLXNlY3Rpb24tZGlzY2xvc3VyZS10cmlhbmdsZS1vcGVuIjsKK1dl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVDbG9zZWRDYW52YXNJ
ZGVudGlmaWVyID0gImRldGFpbHMtc2VjdGlvbi1kaXNjbG9zdXJlLXRyaWFuZ2xlLWNsb3NlZCI7
CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb24uRGlzY2xvc3VyZVRyaWFuZ2xlTm9ybWFsQ2Fu
dmFzSWRlbnRpZmllclN1ZmZpeCA9ICItbm9ybWFsIjsKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2Vj
dGlvbi5EaXNjbG9zdXJlVHJpYW5nbGVBY3RpdmVDYW52YXNJZGVudGlmaWVyU3VmZml4ID0gIi1h
Y3RpdmUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uRGF0YUdyaWRSb3cuanMKaW5kZXgg
OTViN2JkNC4uOTY0ZDY5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvbkRhdGFHcmlk
Um93LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMywyNSArMjMsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdyA9IGZ1bmN0
aW9uKGRhdGFHcmlkLCBlbXB0eU1lc3NhZ2UpIHsKLSAgICBXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25Sb3cuY2FsbCh0aGlzLCBlbXB0eU1lc3NhZ2UpOworV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uRGF0YUdyaWRSb3cgPSBjbGFzcyBEZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93Cit7CisgICAgY29uc3RydWN0b3IoZGF0
YUdyaWQsIGVtcHR5TWVzc2FnZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGVtcHR5TWVzc2FnZSk7
CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGV0YWlsc1Nl
Y3Rpb25EYXRhR3JpZFJvdy5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJkYXRhLWdyaWQiKTsKIAogICAgICAgICB0aGlzLmRhdGFHcmlkID0gZGF0
YUdyaWQ7Ci19OwotCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25EYXRhR3JpZFJvdy5TdHls
ZUNsYXNzTmFtZSA9ICJkYXRhLWdyaWQiOwotCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25E
YXRhR3JpZFJvdy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAg
Z2V0IGRhdGFHcmlkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhR3JpZDsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCBkYXRhR3JpZChkYXRhR3JpZCkKICAgICB7CkBAIC01OSw1
ICs1NywzIEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSgpOwogICAgIH0KIH07Ci0K
LVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkRhdGFHcmlkUm93LnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rp
b25Hcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rl
dGFpbHNTZWN0aW9uR3JvdXAuanMKaW5kZXggNjcyOWZhYS4uZWRjYzQwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25H
cm91cC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZXRhaWxzU2VjdGlvbkdyb3VwLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMiArMjMsMjkgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91
cCA9IGZ1bmN0aW9uKHJvd3MpIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2Vi
SW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJ
bnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25H
cm91cCA9IGNsYXNzIERldGFpbHNTZWN0aW9uR3JvdXAgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0Cit7CisgICAgY29uc3RydWN0b3Iocm93cykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAK
ICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
R3JvdXAuU3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0g
Imdyb3VwIjsKIAogICAgICAgICB0aGlzLnJvd3MgPSByb3dzOwotfTsKLQotV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uR3JvdXAuU3R5bGVDbGFzc05hbWUgPSAiZ3JvdXAiOwotCi1XZWJJbnNw
ZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3VwLAorICAgIH0KIAogICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1l
bnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcm93cygpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcm93czsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCByb3dzKHJvd3MpCiAgICAg
ewpAQCAtNjAsNSArNTcsMyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Jv
d3NbaV0uZWxlbWVudCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
R3JvdXAucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RGV0YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93LmpzCmluZGV4IGE5
ODYxNTIuLmE0YmQ0ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uUHJvcGVydGllc1Jvdy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblByb3BlcnRp
ZXNSb3cuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDI2ICsyMywyNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblByb3BlcnRpZXNSb3cgPSBm
dW5jdGlvbihwcm9wZXJ0aWVzU2VjdGlvbiwgZW1wdHlNZXNzYWdlKSB7Ci0gICAgV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUm93LmNhbGwodGhpcywgZW1wdHlNZXNzYWdlKTsKK1dlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblByb3BlcnRpZXNSb3cgPSBjbGFzcyBEZXRhaWxzU2VjdGlvblBy
b3BlcnRpZXNSb3cgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cKK3sKKyAg
ICBjb25zdHJ1Y3Rvcihwcm9wZXJ0aWVzU2VjdGlvbiwgZW1wdHlNZXNzYWdlKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoZW1wdHlNZXNzYWdlKTsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblByb3BlcnRpZXNSb3cuU3R5bGVDbGFzc05h
bWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicHJvcGVydGllcyIpOwog
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuU3ludGF4SGln
aGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzU2VjdGlv
biA9IHByb3BlcnRpZXNTZWN0aW9uOwotfTsKLQotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9u
UHJvcGVydGllc1Jvdy5TdHlsZUNsYXNzTmFtZSA9ICJwcm9wZXJ0aWVzIjsKLQotV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uUHJvcGVydGllc1Jvdy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblByb3BlcnRpZXNSb3csCisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgcHJvcGVydGllc1NlY3Rpb24oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXNTZWN0aW9uOwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IHByb3BlcnRpZXNTZWN0aW9uKHByb3BlcnRpZXNTZWN0aW9uKQogICAgIHsKQEAgLTU4
LDUgKzU2LDMgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUHJvcGVydGllc1Jvdy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnNob3dFbXB0eU1lc3NhZ2UoKTsKICAgICB9CiB9
OwotCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Qcm9wZXJ0aWVzUm93LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cucHJvdG90eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWls
c1NlY3Rpb25Sb3cuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EZXRhaWxzU2VjdGlvblJvdy5qcwppbmRleCBhYzViODA5Li44ZTk4ZGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlv
blJvdy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
ZXRhaWxzU2VjdGlvblJvdy5qcwpAQCAtMjMsMzMgKzIzLDI5IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93
ID0gZnVuY3Rpb24oZW1wdHlNZXNzYWdlKSB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0
byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAg
Ly8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uUm93ID0gY2xhc3MgRGV0YWlsc1NlY3Rpb25Sb3cgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoZW1wdHlNZXNzYWdlKQorICAgIHsKKyAgICAgICAg
c3VwZXIoKTsKIAogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25Sb3cuU3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NOYW1lID0gInJvdyI7CiAKICAgICAgICAgdGhpcy5fZW1wdHlNZXNzYWdlID0gZW1wdHlNZXNz
YWdlIHx8ICIiOwotfTsKLQotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LlN0eWxlQ2xh
c3NOYW1lID0gInJvdyI7Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuRW1wdHlTdHls
ZUNsYXNzTmFtZSA9ICJlbXB0eSI7Ci0KLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blJvdywKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGVtcHR5TWVzc2FnZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZW1wdHlNZXNzYWdl
OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVtcHR5TWVzc2FnZShlbXB0eU1lc3NhZ2UpCiAg
ICAgewpAQCAtNTcsOSArNTMsOSBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cucHJv
dG90eXBlID0gewogCiAgICAgICAgIGlmICghdGhpcy5fZWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0
aCkKICAgICAgICAgICAgIHRoaXMuc2hvd0VtcHR5TWVzc2FnZSgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgc2hvd0VtcHR5TWVzc2FnZTogZnVuY3Rpb24oKQorICAgIHNob3dFbXB0eU1lc3NhZ2Uo
KQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LkRldGFpbHNTZWN0aW9uUm93LkVtcHR5U3R5bGVDbGFzc05hbWUpOwogCkBAIC02OCwxMyArNjQs
MTMgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9lbXB0eU1lc3NhZ2UpOwogICAg
ICAgICB9IGVsc2UKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMu
X2VtcHR5TWVzc2FnZTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGVFbXB0eU1lc3NhZ2U6IGZ1
bmN0aW9uKCkKKyAgICBoaWRlRW1wdHlNZXNzYWdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5FbXB0
eVN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7
CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblJvdy5FbXB0eVN0eWxlQ2xhc3NOYW1lID0gImVtcHR5IjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0
aW9uU2ltcGxlUm93LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cuanMKaW5kZXggOWU0OWNiOC4uZTQ0OWM3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWls
c1NlY3Rpb25TaW1wbGVSb3cuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwICsyMywxMyBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvblNpbXBsZVJvdyA9IGZ1bmN0aW9uKGxhYmVsLCB2YWx1ZSkgewotICAgIFdl
Ykluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5jYWxsKHRoaXMpOworV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uU2ltcGxlUm93ID0gY2xhc3MgRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cKK3sKKyAgICBjb25zdHJ1Y3Rvcihs
YWJlbCwgdmFsdWUpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LlN0eWxl
Q2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNpbXBsZSIp
OwogCiAgICAgICAgIHRoaXMuX2xhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgICAgICB0aGlzLl9sYWJlbEVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LkxhYmVsRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwpA
QCAtNDAsNyArNDMsNyBAQCBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cgPSBm
dW5jdGlvbihsYWJlbCwgdmFsdWUpIHsKICAgICAgICAgLy8gPGRpdj4gc2V0IHRvICJkaXNwbGF5
OiB0YWJsZS1jZWxsIiBzZWxlY3RzIHRleHQgb3V0c2lkZSB0aGUgY2VsbC4KICAgICAgICAgLy8K
ICAgICAgICAgLy8gT24gdHJpcGxlLWNsaWNrLCBhZGp1c3QgdGhlIHNlbGVjdGlvbiByYW5nZSB0
byBpbmNsdWRlIG9ubHkgdGhlIHZhbHVlCi0gICAgLy8gZWxlbWVudCBpZiB0aGUgc2VsZWN0aW9u
IGV4dGVuZHMgYmV5b25kIGl0LgorICAgICAgICAvLyBlbGVtZW50IGlmIHRoZSBzZWxlY3Rpb24g
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuYmV5b25kIGl0LgogICAgICAgICB2YXIgdmFsdWVFbGVtZW50
Q2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKIApAQCAtNjQsMzMgKzY3LDI0IEBAIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blNpbXBsZVJvdyA9IGZ1bmN0aW9uKGxhYmVsLCB2YWx1ZSkgewogCiAgICAgICAgIHRoaXMubGFi
ZWwgPSBsYWJlbDsKICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwotfTsKLQotV2ViSW5zcGVj
dG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LlN0eWxlQ2xhc3NOYW1lID0gInNpbXBsZSI7Ci1X
ZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cuRGF0YVN0eWxlQ2xhc3NOYW1lID0g
ImRhdGEiOwotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93LkVtcHR5U3R5bGVD
bGFzc05hbWUgPSAiZW1wdHkiOwotV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
LkxhYmVsRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImxhYmVsIjsKLVdlYkluc3BlY3Rvci5EZXRh
aWxzU2VjdGlvblNpbXBsZVJvdy5WYWx1ZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ2YWx1ZSI7
Ci0KLVdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdywKKyAg
ICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBsYWJlbCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fbGFiZWxFbGVtZW50LnRleHRDb250ZW50OwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IGxhYmVsKGxhYmVsKQogICAgIHsKICAgICAgICAgdGhpcy5fbGFiZWxFbGVtZW50LnRl
eHRDb250ZW50ID0gbGFiZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFsdWUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHZhbHVlKHZhbHVlKQogICAgIHsKQEAgLTExNyw0ICsxMTEsNyBAQCBXZWJJbnNwZWN0b3IuRGV0
YWlsc1NlY3Rpb25TaW1wbGVSb3cucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3Bl
Y3Rvci5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uUm93LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5EZXRhaWxz
U2VjdGlvblNpbXBsZVJvdy5EYXRhU3R5bGVDbGFzc05hbWUgPSAiZGF0YSI7CitXZWJJbnNwZWN0
b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cuRW1wdHlTdHlsZUNsYXNzTmFtZSA9ICJlbXB0eSI7
CitXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3cuTGFiZWxFbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAibGFiZWwiOworV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93
LlZhbHVlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInZhbHVlIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTZWN0aW9uVGV4dFJv
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNT
ZWN0aW9uVGV4dFJvdy5qcwppbmRleCA5NDkwZmZlLi41YjhlYjkwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2VjdGlvblRleHRS
b3cuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0
YWlsc1NlY3Rpb25UZXh0Um93LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyNyArMjMsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25UZXh0
Um93ID0gZnVuY3Rpb24odGV4dCkKK1dlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblRleHRSb3cg
PSBjbGFzcyBEZXRhaWxzU2VjdGlvblRleHRSb3cgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb25Sb3cKIHsKLSAgICBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3cuY2FsbCh0
aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcih0ZXh0KQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAot
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlv
blRleHRSb3cuU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgidGV4dCIpOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7
Ci19OwotCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25UZXh0Um93LlN0eWxlQ2xhc3NOYW1l
ID0gInRleHQiOwotCi1XZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25UZXh0Um93LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uVGV4dFJv
dywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvblJvdy5wcm90b3R5
cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdGV4dCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5lbGVtZW50LnRleHRDb250ZW50OwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IHRleHQodGV4dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpp
bmRleCAxMzhlNjg0Li5jMDA3YjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RldGFpbHNTaWRlYmFyUGFuZWwuanMK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDQ3ICsyMyw0OCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oaWRlbnRpZmll
ciwgZGlzcGxheU5hbWUsIHNpbmd1bGFyRGlzcGxheU5hbWUsIGltYWdlLCBrZXlib2FyZFNob3J0
Y3V0S2V5LCBlbGVtZW50KQorV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFz
cyBEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbAog
eworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaW5ndWxhckRpc3Bs
YXlOYW1lLCBpbWFnZSwga2V5Ym9hcmRTaG9ydGN1dEtleSwgZWxlbWVudCkKKyAgICB7CisgICAg
ICAgIHZhciBrZXlib2FyZFNob3J0Y3V0ID0gbnVsbDsKICAgICAgICAgaWYgKGtleWJvYXJkU2hv
cnRjdXRLZXkpCi0gICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZp
ZXIuQ29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0
LCBrZXlib2FyZFNob3J0Y3V0S2V5LCB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpKTsKKyAgICAgICAg
ICAgIGtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQo
V2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCB8IFdlYkluc3Bl
Y3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLlNoaWZ0LCBrZXlib2FyZFNob3J0Y3V0S2V5
KTsKIAotICAgIGlmICh0aGlzLl9rZXlib2FyZFNob3J0Y3V0KSB7Ci0gICAgICAgIHZhciBzaG93
VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUgJXMgZGV0YWlscyBzaWRl
YmFyICglcykiKS5mb3JtYXQoc2luZ3VsYXJEaXNwbGF5TmFtZSwgdGhpcy5fa2V5Ym9hcmRTaG9y
dGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgICAgIHZhciBoaWRlVG9vbFRpcCA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiSGlkZSB0aGUgJXMgZGV0YWlscyBzaWRlYmFyICglcykiKS5mb3JtYXQoc2lu
Z3VsYXJEaXNwbGF5TmFtZSwgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Cisg
ICAgICAgIGlmIChrZXlib2FyZFNob3J0Y3V0KSB7CisgICAgICAgICAgICB2YXIgc2hvd1Rvb2xU
aXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdGhlICVzIGRldGFpbHMgc2lkZWJhciAo
JXMpIikuZm9ybWF0KHNpbmd1bGFyRGlzcGxheU5hbWUsIGtleWJvYXJkU2hvcnRjdXQuZGlzcGxh
eU5hbWUpOworICAgICAgICAgICAgdmFyIGhpZGVUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJIaWRlIHRoZSAlcyBkZXRhaWxzIHNpZGViYXIgKCVzKSIpLmZvcm1hdChzaW5ndWxhckRp
c3BsYXlOYW1lLCBrZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIHZhciBzaG93VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2hvdyB0aGUgJXMgZGV0YWlscyBzaWRlYmFyIikuZm9ybWF0KHNpbmd1bGFyRGlzcGxheU5hbWUp
OwogICAgICAgICAgICAgdmFyIGhpZGVUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJI
aWRlIHRoZSAlcyBkZXRhaWxzIHNpZGViYXIiKS5mb3JtYXQoc2luZ3VsYXJEaXNwbGF5TmFtZSk7
CiAgICAgICAgIH0KIAotICAgIFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCBp
ZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgc2hvd1Rvb2xUaXAsIGhpZGVUb29sVGlwLCBpbWFnZSwg
ZWxlbWVudCk7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9v
bFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50KTsKIAotICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NO
YW1lKTsKLX07CisgICAgICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQgPSBrZXlib2FyZFNob3J0
Y3V0OworICAgICAgICBpZiAodGhpcy5fa2V5Ym9hcmRTaG9ydGN1dCkKKyAgICAgICAgICAgIHRo
aXMuX2tleWJvYXJkU2hvcnRjdXQuY2FsbGJhY2sgPSB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpOwog
Ci1XZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJkZXRh
aWxzIjsKLQotV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbCwKLSAgICBf
X3Byb3RvX186IFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwucHJvdG90eXBlLAorICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZGV0YWlscyIpOworICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCi0gICAgaW5zcGVjdDogZnVuY3Rpb24ob2JqZWN0cykKKyAgICBpbnNwZWN0KG9iamVj
dHMpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQor
ICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9uZWVkc1JlZnJlc2gpIHsKICAg
ICAgICAgICAgIGRlbGV0ZSB0aGlzLl9uZWVkc1JlZnJlc2g7CiAgICAgICAgICAgICB0aGlzLnJl
ZnJlc2goKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgbmVlZHNSZWZyZXNoOiBm
dW5jdGlvbigpCisgICAgbmVlZHNSZWZyZXNoKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5z
ZWxlY3RlZCkgewogICAgICAgICAgICAgdGhpcy5fbmVlZHNSZWZyZXNoID0gdHJ1ZTsKQEAgLTcx
LDkgKzcyLDkgQEAgV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5yZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaCgpCiAgICAgewogICAgICAgICAv
LyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RpdmlkZXJOYXZpZ2F0aW9uSXRlbS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RpdmlkZXJOYXZp
Z2F0aW9uSXRlbS5qcwppbmRleCA1ZTk3NjdhMC4uOTEwYzA0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVt
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Rpdmlk
ZXJOYXZpZ2F0aW9uSXRlbS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTggKzIzLDE3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRpdmlkZXJOYXZpZ2F0aW9uSXRl
bSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIpIHsKLSAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0
ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyKTsKK1dlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlv
bkl0ZW0gPSBjbGFzcyBEaXZpZGVyTmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvbkl0ZW0KK3sKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyKQorICAgIHsKKyAg
ICAgICAgc3VwZXIoaWRlbnRpZmllcik7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAg
ICBnZXQgYWRkaXRpb25hbENsYXNzTmFtZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFsiZGl2
aWRlciJdOworICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW0u
U3R5bGVDbGFzc05hbWUgPSAiZGl2aWRlciI7Ci0KLVdlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdh
dGlvbkl0ZW0ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGl2
aWRlck5hdmlnYXRpb25JdGVtLAotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2FkZGl0aW9uYWxD
bGFzc05hbWVzOiBbV2ViSW5zcGVjdG9yLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNz
TmFtZV0sCi19OwotCi1XZWJJbnNwZWN0b3IuRGl2aWRlck5hdmlnYXRpb25JdGVtLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRWRpdGlu
Z1N1cHBvcnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9F
ZGl0aW5nU3VwcG9ydC5qcwppbmRleCBhYzU4NjQ2Li4zZmEzNmFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FZGl0aW5nU3VwcG9ydC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FZGl0aW5nU3Vw
cG9ydC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtNTcsNyArNTcsNyBAQCBXZWJJbnNwZWN0b3IuaXNFZGl0aW5nQW55RmllbGQgPSBm
dW5jdGlvbigpCiAKIFdlYkluc3BlY3Rvci5pc0V2ZW50VGFyZ2V0QW5FZGl0YWJsZUZpZWxkID0g
ZnVuY3Rpb24oZXZlbnQpCiB7Ci0gICAgY29uc3QgdGV4dElucHV0VHlwZXMgPSB7InRleHQiOiB0
cnVlLCAic2VhcmNoIjogdHJ1ZSwgInRlbCI6IHRydWUsICJ1cmwiOiB0cnVlLCAiZW1haWwiOiB0
cnVlLCAicGFzc3dvcmQiOiB0cnVlfTsKKyAgICB2YXIgdGV4dElucHV0VHlwZXMgPSB7InRleHQi
OiB0cnVlLCAic2VhcmNoIjogdHJ1ZSwgInRlbCI6IHRydWUsICJ1cmwiOiB0cnVlLCAiZW1haWwi
OiB0cnVlLCAicGFzc3dvcmQiOiB0cnVlfTsKICAgICBpZiAoZXZlbnQudGFyZ2V0IGluc3RhbmNl
b2YgSFRNTElucHV0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGV2ZW50LnRhcmdldC50eXBlIGlu
IHRleHRJbnB1dFR5cGVzOwogCkBAIC03NCwyNiArNzQsMjkgQEAgV2ViSW5zcGVjdG9yLmlzRXZl
bnRUYXJnZXRBbkVkaXRhYmxlRmllbGQgPSBmdW5jdGlvbihldmVudCkKICAgICByZXR1cm4gZmFs
c2U7CiB9OwogCi1XZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZyA9IGZ1bmN0aW9uKGNvbW1pdEhh
bmRsZXIsIGNhbmNlbEhhbmRsZXIsIGNvbnRleHQpCitXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZp
ZyA9IGNsYXNzIEVkaXRpbmdDb25maWcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Cisg
ICAgY29uc3RydWN0b3IoY29tbWl0SGFuZGxlciwgY2FuY2VsSGFuZGxlciwgY29udGV4dCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCk7CisKICAgICAgICAgdGhpcy5jb21taXRIYW5kbGVyID0gY29t
bWl0SGFuZGxlcjsKICAgICAgICAgdGhpcy5jYW5jZWxIYW5kbGVyID0gY2FuY2VsSGFuZGxlcjsK
ICAgICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDsKICAgICAgICAgdGhpcy5zcGVsbGNoZWNr
ID0gZmFsc2U7Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLkVkaXRpbmdDb25maWcucHJvdG90
eXBlID0gewotICAgIHNldFBhc3RlSGFuZGxlcjogZnVuY3Rpb24ocGFzdGVIYW5kbGVyKQorICAg
IHNldFBhc3RlSGFuZGxlcihwYXN0ZUhhbmRsZXIpCiAgICAgewogICAgICAgICB0aGlzLnBhc3Rl
SGFuZGxlciA9IHBhc3RlSGFuZGxlcjsKLSAgICB9LAorICAgIH0KIAotICAgIHNldE11bHRpbGlu
ZTogZnVuY3Rpb24obXVsdGlsaW5lKQorICAgIHNldE11bHRpbGluZShtdWx0aWxpbmUpCiAgICAg
ewogICAgICAgICB0aGlzLm11bHRpbGluZSA9IG11bHRpbGluZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNldEN1c3RvbUZpbmlzaEhhbmRsZXI6IGZ1bmN0aW9uKGN1c3RvbUZpbmlzaEhhbmRsZXIp
CisgICAgc2V0Q3VzdG9tRmluaXNoSGFuZGxlcihjdXN0b21GaW5pc2hIYW5kbGVyKQogICAgIHsK
ICAgICAgICAgdGhpcy5jdXN0b21GaW5pc2hIYW5kbGVyID0gY3VzdG9tRmluaXNoSGFuZGxlcjsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uLmpzCmluZGV4IDljYzM4NmMuLjk2
NzBiNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uLmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyNCArMjMsMjMg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb24gPSBmdW5jdGlvbih0eXBlLCBub2RlSWQpCitXZWJJbnNw
ZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb24gPSBjbGFzcyBFdmVudExpc3RlbmVyU2VjdGlvbiBl
eHRlbmRzIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbgogewotICAgIFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2VjdGlvbi5jYWxsKHRoaXMsIHR5cGUgKyAiLWV2ZW50LWxpc3RlbmVyLXNlY3Rpb24i
LCB0eXBlLCBbXSwgbnVsbCwgdHJ1ZSk7CisgICAgY29uc3RydWN0b3IodHlwZSwgbm9kZUlkKQor
ICAgIHsKKyAgICAgICAgc3VwZXIodHlwZSArICItZXZlbnQtbGlzdGVuZXItc2VjdGlvbiIsIHR5
cGUsIFtdLCBudWxsLCB0cnVlKTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgiZXZlbnQtbGlzdGVuZXItc2VjdGlvbiIpOwogCiAgICAgICAgIHRoaXMuX25vZGVJZCA9IG5v
ZGVJZDsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb24ucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNl
Y3Rpb24sCisgICAgLy8gUHVibGljCiAKLSAgICBhZGRMaXN0ZW5lcjogZnVuY3Rpb24oZXZlbnRM
aXN0ZW5lcikKKyAgICBhZGRMaXN0ZW5lcihldmVudExpc3RlbmVyKQogICAgIHsKICAgICAgICAg
dmFyIGdyb3VwcyA9IHRoaXMuZ3JvdXBzOwogICAgICAgICBncm91cHMucHVzaChuZXcgV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAoZXZlbnRMaXN0ZW5lciwgdGhpcy5fbm9k
ZUlkKSk7CiAgICAgICAgIHRoaXMuZ3JvdXBzID0gZ3JvdXBzOwogICAgIH0KIH07Ci0KLVdlYklu
c3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbi5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3Rl
bmVyU2VjdGlvbkdyb3VwLmpzCmluZGV4IDQxOGZkYjEuLjRlNmQzMzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0
aW9uR3JvdXAuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjMgKzIzLDI0IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkV2ZW50TGlz
dGVuZXJTZWN0aW9uR3JvdXAgPSBmdW5jdGlvbihldmVudExpc3RlbmVyLCBub2RlSWQpCitXZWJJ
bnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cCA9IGNsYXNzIEV2ZW50TGlzdGVuZXJT
ZWN0aW9uR3JvdXAgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Hcm91cAorewor
ICAgIGNvbnN0cnVjdG9yKGV2ZW50TGlzdGVuZXIsIG5vZGVJZCkKICAgICB7Ci0gICAgdGhpcy5f
ZXZlbnRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7Ci0gICAgdGhpcy5fbm9kZUlkID0gbm9kZUlk
OwotCiAgICAgICAgIHZhciByb3dzID0gW107CiAgICAgICAgIHJvd3MucHVzaChuZXcgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm9k
ZSIpLCB0aGlzLl9ub2RlVGV4dE9yTGluaygpKSk7CiAgICAgICAgIHJvd3MucHVzaChuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uU2ltcGxlUm93KFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RnVuY3Rpb24iKSwgdGhpcy5fZnVuY3Rpb25UZXh0T3JMaW5rKCkpKTsKICAgICAgICAgcm93cy5w
dXNoKG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3coV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJUeXBlIiksIHRoaXMuX3R5cGUoKSkpOwogCi0gICAgV2ViSW5zcGVjdG9yLkRl
dGFpbHNTZWN0aW9uR3JvdXAuY2FsbCh0aGlzLCByb3dzKTsKLX07CisgICAgICAgIHN1cGVyKHJv
d3MpOwogCi1XZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2VjdGlvbkdy
b3VwLAorICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsKKyAgICAg
ICAgdGhpcy5fbm9kZUlkID0gbm9kZUlkOworICAgIH0KIAotICAgIF9ub2RlVGV4dE9yTGluazog
ZnVuY3Rpb24oKQorICAgIC8vIFByaXZhdGUKKworICAgIF9ub2RlVGV4dE9yTGluaygpCiAgICAg
ewogICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2V2ZW50TGlzdGVuZXIubm9kZTsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQobm9kZSk7CkBAIC01MCw5ICs1MSw5IEBAIFdlYkluc3BlY3Rvci5FdmVu
dExpc3RlbmVyU2VjdGlvbkdyb3VwLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiAi
ZG9jdW1lbnQiOwogCiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IubGlua2lmeU5vZGVSZWZl
cmVuY2Uobm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHlwZTogZnVuY3Rpb24oKQorICAg
IF90eXBlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9ldmVudExpc3RlbmVyLnVzZUNhcHR1
cmUpCiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYXB0dXJpbmci
KTsKQEAgLTYxLDkgKzYyLDkgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3Jv
dXAucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQXR0cmlidXRlIik7CiAKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
QnViYmxpbmciKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mdW5jdGlvblRleHRPckxpbms6IGZ1
bmN0aW9uKCkKKyAgICBfZnVuY3Rpb25UZXh0T3JMaW5rKCkKICAgICB7CiAgICAgICAgIHZhciBt
YXRjaCA9IHRoaXMuX2V2ZW50TGlzdGVuZXIuaGFuZGxlckJvZHkubWF0Y2goL2Z1bmN0aW9uIChb
XlwoXSs/KVwoLyk7CiAgICAgICAgIGlmIChtYXRjaCkgewpAQCAtOTgsNSArOTksMyBAQCBXZWJJ
bnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHJldHVybiBmcmFnbWVudDsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5l
clNlY3Rpb25Hcm91cC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uR3JvdXAucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyLmpzCmluZGV4IDJhYzgyMDcuLmE5ZjA2MDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Zp
bHRlckJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9GaWx0ZXJCYXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDEyICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5GaWx0ZXJCYXIgPSBmdW5jdGlvbihlbGVt
ZW50KSB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmpl
Y3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOworV2ViSW5zcGVjdG9yLkZpbHRlckJhciA9IGNsYXNzIEZpbHRlckJhciBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50KQor
ICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVu
dCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZpbHRlckJhci5TdHlsZUNsYXNzTmFtZSk7CisgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZmlsdGVyLWJhciIpOwogCiAgICAgICAg
IHRoaXMuX2ZpbHRlcnNOYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
QmFyOwogICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ZpbHRlcnNOYXZp
Z2F0aW9uQmFyLmVsZW1lbnQpOwpAQCAtNDEsNDcgKzQzLDM0IEBAIFdlYkluc3BlY3Rvci5GaWx0
ZXJCYXIgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAgICAgIHRoaXMuX2lucHV0RmllbGQuaW5j
cmVtZW50YWwgPSB0cnVlOwogICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLmFkZEV2ZW50TGlzdGVu
ZXIoInNlYXJjaCIsIHRoaXMuX2hhbmRsZUZpbHRlckNoYW5nZWQuYmluZCh0aGlzKSwgZmFsc2Up
OwogICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2lucHV0RmllbGQpOwot
fTsKLQotLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFu
ZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRD
b25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRmlsdGVyQmFyKTsKLQotV2ViSW5zcGVj
dG9yLkZpbHRlckJhci5TdHlsZUNsYXNzTmFtZSA9ICJmaWx0ZXItYmFyIjsKLQotV2ViSW5zcGVj
dG9yLkZpbHRlckJhci5FdmVudCA9IHsKLSAgICBGaWx0ZXJEaWRDaGFuZ2U6ICJmaWx0ZXItYmFy
LXRleHQtZmlsdGVyLWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJbnNwZWN0b3IuRmlsdGVyQmFyLnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZpbHRlckJhciwKLSAg
ICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGxhY2Vob2xkZXIoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0RmllbGQuZ2V0QXR0cmlidXRlKCJwbGFjZWhv
bGRlciIpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHBsYWNlaG9sZGVyKHRleHQpCiAgICAg
ewogICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCB0
ZXh0KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbnB1dEZpZWxkKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9pbnB1dEZpZWxkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZp
bHRlcnMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHt0ZXh0OiB0aGlzLl9pbnB1dEZpZWxkLnZh
bHVlLCBmdW5jdGlvbnM6IFsuLi50aGlzLl9maWx0ZXJGdW5jdGlvbnNNYXAudmFsdWVzKCldfTsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCBmaWx0ZXJzKGZpbHRlcnMpCiAgICAgewpAQCAtOTEs
OSArODAsOSBAQCBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5faW5wdXRGaWVsZC52YWx1ZSA9IGZpbHRlcnMudGV4dCB8fCAiIjsKICAgICAgICAgaWYg
KG9sZFRleHRWYWx1ZSAhPT0gdGhpcy5faW5wdXRGaWVsZC52YWx1ZSkKICAgICAgICAgICAgIHRo
aXMuX2hhbmRsZUZpbHRlckNoYW5nZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZEZpbHRl
ckJhckJ1dHRvbjogZnVuY3Rpb24oaWRlbnRpZmllciwgZmlsdGVyRnVuY3Rpb24sIGFjdGl2YXRl
ZEJ5RGVmYXVsdCwgZGVmYXVsdFRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGltYWdlLCBpbWFn
ZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MpCisgICAgYWRkRmlsdGVyQmFyQnV0
dG9uKGlkZW50aWZpZXIsIGZpbHRlckZ1bmN0aW9uLCBhY3RpdmF0ZWRCeURlZmF1bHQsIGRlZmF1
bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWln
aHQsIHN1cHByZXNzRW1ib3NzKQogICAgIHsKICAgICAgICAgdmFyIGZpbHRlckJhckJ1dHRvbiA9
IG5ldyBXZWJJbnNwZWN0b3IuRmlsdGVyQmFyQnV0dG9uKGlkZW50aWZpZXIsIGZpbHRlckZ1bmN0
aW9uLCBhY3RpdmF0ZWRCeURlZmF1bHQsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlw
LCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzKTsKICAgICAg
ICAgZmlsdGVyQmFyQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5h
dmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX2hhbmRsZUZpbHRlckJhckJ1dHRvbkNs
aWNrZWQsIHRoaXMpOwpAQCAtMTAzLDEyICs5MiwxMiBAQCBXZWJJbnNwZWN0b3IuRmlsdGVyQmFy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2ZpbHRlckZ1bmN0aW9uc01hcC5zZXQo
ZmlsdGVyQmFyQnV0dG9uLmlkZW50aWZpZXIsIGZpbHRlckJhckJ1dHRvbi5maWx0ZXJGdW5jdGlv
bik7CiAgICAgICAgICAgICB0aGlzLl9oYW5kbGVGaWx0ZXJDaGFuZ2VkKCk7CiAgICAgICAgIH0K
LSAgICB9LAorICAgIH0KIAotICAgIGhhc0FjdGl2ZUZpbHRlcnM6IGZ1bmN0aW9uKCkKKyAgICBo
YXNBY3RpdmVGaWx0ZXJzKCkKICAgICB7CiAgICAgICAgIHJldHVybiAhIXRoaXMuX2lucHV0Rmll
bGQudmFsdWUgfHwgISF0aGlzLl9maWx0ZXJGdW5jdGlvbnNNYXAuc2l6ZTsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByaXZhdGUKIApAQCAtMTE2LDkgKzEwNSw5IEBAIFdlYkluc3BlY3Rvci5G
aWx0ZXJCYXIucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIGZpbHRlckJhckJ1dHRv
biA9IGV2ZW50LnRhcmdldDsKICAgICAgICAgZmlsdGVyQmFyQnV0dG9uLnRvZ2dsZSgpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2hhbmRsZUZpbHRlckJ1dHRvblRvZ2dsZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9oYW5kbGVGaWx0ZXJCdXR0b25Ub2dnbGVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdmFyIGZpbHRlckJhckJ1dHRvbiA9IGV2ZW50LnRhcmdldDsKICAgICAgICAgaWYgKGZpbHRl
ckJhckJ1dHRvbi5hY3RpdmF0ZWQpCkBAIC0xMjYsMTAgKzExNSwxNCBAQCBXZWJJbnNwZWN0b3Iu
RmlsdGVyQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5f
ZmlsdGVyRnVuY3Rpb25zTWFwLmRlbGV0ZShmaWx0ZXJCYXJCdXR0b24uaWRlbnRpZmllcik7CiAg
ICAgICAgIHRoaXMuX2hhbmRsZUZpbHRlckNoYW5nZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9oYW5kbGVGaWx0ZXJDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgX2hhbmRsZUZpbHRlckNoYW5n
ZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkZpbHRlckJhci5FdmVudC5GaWx0ZXJEaWRDaGFuZ2UpOwogICAgIH0KIH07CisKK1dl
Ykluc3BlY3Rvci5GaWx0ZXJCYXIuRXZlbnQgPSB7CisgICAgRmlsdGVyRGlkQ2hhbmdlOiAiZmls
dGVyLWJhci10ZXh0LWZpbHRlci1kaWQtY2hhbmdlIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhckJ1dHRvbi5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbHRlckJhckJ1dHRvbi5q
cwppbmRleCBiMDljZTZlLi5mODZjMzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9GaWx0ZXJCYXJCdXR0b24uanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmlsdGVyQmFyQnV0dG9uLmpzCkBAIC0y
MywzOCArMjMsMzQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuRmlsdGVyQmFyQnV0dG9uID0gZnVuY3Rpb24oaWRlbnRpZmllciwgZmls
dGVyRnVuY3Rpb24sIGFjdGl2YXRlZEJ5RGVmYXVsdCwgZGVmYXVsdFRvb2xUaXAsIGFjdGl2YXRl
ZFRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3Ms
IHJvbGUpCitXZWJJbnNwZWN0b3IuRmlsdGVyQmFyQnV0dG9uID0gY2xhc3MgRmlsdGVyQmFyQnV0
dG9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0KIHsK
LSAgICBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMs
IGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwgaW1h
Z2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzLCByb2xlKTsKKyAgICBjb25zdHJ1
Y3RvcihpZGVudGlmaWVyLCBmaWx0ZXJGdW5jdGlvbiwgYWN0aXZhdGVkQnlEZWZhdWx0LCBkZWZh
dWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVp
Z2h0LCBzdXBwcmVzc0VtYm9zcywgcm9sZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGlkZW50aWZp
ZXIsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwg
aW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzLCByb2xlKTsKIAogICAgICAgICB0aGlzLl9maWx0
ZXJGdW5jdGlvbiA9IGZpbHRlckZ1bmN0aW9uOwogCiAgICAgICAgIHRoaXMuX2FjdGl2YXRlZFNl
dHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoaWRlbnRpZmllciwgYWN0aXZhdGVkQnlE
ZWZhdWx0KTsKIAogICAgICAgICB0aGlzLmFjdGl2YXRlZCA9ICEhdGhpcy5fYWN0aXZhdGVkU2V0
dGluZy52YWx1ZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5GaWx0ZXJCYXJCdXR0b24uU3R5bGVDbGFz
c05hbWUgPSAiZmlsdGVyLWJhci1idXR0b24iOwotCi1XZWJJbnNwZWN0b3IuRmlsdGVyQmFyQnV0
dG9uLkV2ZW50ID0gewotICAgIEFjdGl2YXRlZFN0YXRlVG9nZ2xlZDogImZpbHRlci1iYXItYWN0
aXZhdGVkLXN0YXRlLXRvZ2dsZWQiCi19OwotCi1XZWJJbnNwZWN0b3IuRmlsdGVyQmFyQnV0dG9u
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZpbHRlckJhckJ1
dHRvbiwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRp
b25JdGVtLnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBmaWx0
ZXJGdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyRnVuY3Rpb247
Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0b2dnbGU6IGZ1bmN0aW9uKCkKKyAgICB0b2dnbGUoKQog
ICAgIHsKICAgICAgICAgdGhpcy5hY3RpdmF0ZWQgPSAhdGhpcy5hY3RpdmF0ZWQ7CiAgICAgICAg
IHRoaXMuX2FjdGl2YXRlZFNldHRpbmcudmFsdWUgPSB0aGlzLmFjdGl2YXRlZDsKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbHRlckJhckJ1dHRv
bi5FdmVudC5BY3RpdmF0ZWRTdGF0ZVRvZ2dsZWQpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rv
ci5GaWx0ZXJCYXJCdXR0b24uRXZlbnQgPSB7CisgICAgQWN0aXZhdGVkU3RhdGVUb2dnbGVkOiAi
ZmlsdGVyLWJhci1hY3RpdmF0ZWQtc3RhdGUtdG9nZ2xlZCIKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GaW5kQmFubmVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmluZEJhbm5lci5qcwppbmRl
eCBiZjljZWFlLi42Zjc3NDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9GaW5kQmFubmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZpbmRCYW5uZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE0ICsyMywxNiBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5GaW5k
QmFubmVyID0gZnVuY3Rpb24oZGVsZWdhdGUsIGVsZW1lbnQpIHsKLSAgICAvLyBGSVhNRTogQ29u
dmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3Vw
ZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CitXZWJJbnNwZWN0
b3IuRmluZEJhbm5lciA9IGNsYXNzIEZpbmRCYW5uZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0Cit7CisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUsIGVsZW1lbnQpCisgICAgeworICAgICAg
ICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsK
IAogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LkZpbmRCYW5uZXIuU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoImZpbmQtYmFubmVyIik7CiAKICAgICAgICAgdGhpcy5fcmVzdWx0Q291bnRMYWJl
bCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fcmVzdWx0Q291bnRMYWJlbCk7CkBAIC04NSw2NSArODcsNDQg
QEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIgPSBmdW5jdGlvbihkZWxlZ2F0ZSwgZWxlbWVudCkg
ewogICAgICAgICB0aGlzLl9maW5kUHJldmlvdXNLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1v
ZGlmaWVyLlNoaWZ0IHwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29t
bWFuZE9yQ29udHJvbCwgIkciLCB0aGlzLl9wcmV2aW91c1Jlc3VsdEJ1dHRvbkNsaWNrZWQuYmlu
ZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5fZ2VuZXJhdGVCdXR0b25zR2x5cGhzSWZOZWVkZWQo
KTsKLX07Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVk
QWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIpOwotCi1XZWJJ
bnNwZWN0b3IuRmluZEJhbm5lci5TdHlsZUNsYXNzTmFtZSA9ICJmaW5kLWJhbm5lciI7Ci1XZWJJ
bnNwZWN0b3IuRmluZEJhbm5lci5TdXBwb3J0c0ZpbmRCYW5uZXJTdHlsZUNsYXNzTmFtZSA9ICJz
dXBwb3J0cy1maW5kLWJhbm5lciI7Ci1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TaG93aW5nRmlu
ZEJhbm5lclN0eWxlQ2xhc3NOYW1lID0gInNob3dpbmctZmluZC1iYW5uZXIiOwotV2ViSW5zcGVj
dG9yLkZpbmRCYW5uZXIuTm9UcmFuc2l0aW9uU3R5bGVDbGFzc05hbWUgPSAibm8tZmluZC1iYW5u
ZXItdHJhbnNpdGlvbiI7Ci1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TaG93aW5nU3R5bGVDbGFz
c05hbWUgPSAic2hvd2luZyI7Ci1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TZWdtZW50ZWRCdXR0
b25TdHlsZUNsYXNzTmFtZSA9ICJzZWdtZW50ZWQiOwotV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIu
TGVmdFNlZ21lbnRCdXR0b25TdHlsZUNsYXNzTmFtZSA9ICJsZWZ0IjsKLVdlYkluc3BlY3Rvci5G
aW5kQmFubmVyLlJpZ2h0U2VnbWVudEJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gInJpZ2h0IjsKLVdl
Ykluc3BlY3Rvci5GaW5kQmFubmVyLlNlZ21lbnRHbHlwaFN0eWxlQ2xhc3NOYW1lID0gImdseXBo
IjsKLQotV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuRXZlbnQgPSB7Ci0gICAgRGlkU2hvdzogImZp
bmQtYmFubmVyLWRpZC1zaG93IiwKLSAgICBEaWRIaWRlOiAiZmluZC1iYW5uZXItZGlkLWhpZGUi
Ci19OwotCi1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IGRlbGVnYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBkZWxlZ2F0ZShuZXdEZWxlZ2F0ZSkKICAgICB7
CiAgICAgICAgIHRoaXMuX2RlbGVnYXRlID0gbmV3RGVsZWdhdGUgfHwgbnVsbDsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9l
bGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGlucHV0RmllbGQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2lucHV0RmllbGQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c2VhcmNoUXVlcnkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2lucHV0RmllbGQudmFs
dWUgfHwgIiI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VhcmNoUXVlcnkocXVlcnkpCiAg
ICAgewogICAgICAgICB0aGlzLl9pbnB1dEZpZWxkLnZhbHVlID0gcXVlcnkgfHwgIiI7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgbnVtYmVyT2ZSZXN1bHRzKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9udW1iZXJPZlJlc3VsdHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgbnVt
YmVyT2ZSZXN1bHRzKG51bWJlck9mUmVzdWx0cykKICAgICB7CkBAIC0xNjIsMTUgKzE0MywyMSBA
QCBXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlz
Ll9yZXN1bHRDb3VudExhYmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIx
IG1hdGNoIik7CiAgICAgICAgIGVsc2UgaWYgKG51bWJlck9mUmVzdWx0cyA+IDEpCiAgICAgICAg
ICAgICB0aGlzLl9yZXN1bHRDb3VudExhYmVsLnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCIlZCBtYXRjaGVzIikuZm9ybWF0KG51bWJlck9mUmVzdWx0cyk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgdGFyZ2V0RWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fdGFyZ2V0RWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB0YXJnZXRFbGVtZW50
KGVsZW1lbnQpCiAgICAgeworICAgICAgICBmdW5jdGlvbiBkZWxheWVkV29yaygpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG9sZFRhcmdldEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNw
ZWN0b3IuRmluZEJhbm5lci5Ob1RyYW5zaXRpb25TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIu
Tm9UcmFuc2l0aW9uU3R5bGVDbGFzc05hbWUpOworICAgICAgICB9CisKICAgICAgICAgaWYgKHRo
aXMuX3RhcmdldEVsZW1lbnQpIHsKICAgICAgICAgICAgIHZhciBvbGRUYXJnZXRFbGVtZW50ID0g
dGhpcy5fdGFyZ2V0RWxlbWVudDsKIApAQCAtMTgxLDEyICsxNjgsNiBAQCBXZWJJbnNwZWN0b3Iu
RmluZEJhbm5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuTm9UcmFuc2l0aW9uU3R5bGVDbGFzc05h
bWUpOwogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5GaW5kQmFubmVyLlNob3dpbmdTdHlsZUNsYXNzTmFtZSk7CiAKLSAgICAgICAgICAgIGZ1
bmN0aW9uIGRlbGF5ZWRXb3JrKCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvbGRU
YXJnZXRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuTm9U
cmFuc2l0aW9uU3R5bGVDbGFzc05hbWUpOwotICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5Ob1RyYW5zaXRpb25TdHls
ZUNsYXNzTmFtZSk7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIC8vIERlbGF5IHNvIHdl
IGNhbiByZW1vdmUgdGhlIG5vIHRyYW5zaXRpb24gc3R5bGUgY2xhc3MgYWZ0ZXIgdGhlIG90aGVy
IHN0eWxlIGNoYW5nZXMgYXJlIGNvbW1pdHRlZC4KICAgICAgICAgICAgIHNldFRpbWVvdXQoZGVs
YXllZFdvcmsuYmluZCh0aGlzKSwgMCk7CiAgICAgICAgIH0KQEAgLTE5NSwxNCArMTc2LDE0IEBA
IFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhp
cy5fdGFyZ2V0RWxlbWVudCkKICAgICAgICAgICAgIHRoaXMuX3RhcmdldEVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TdXBwb3J0c0ZpbmRCYW5uZXJTdHlsZUNs
YXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2hvd2luZygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9y
LkZpbmRCYW5uZXIuU2hvd2luZ1N0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHNob3c6IGZ1bmN0aW9uKCkKKyAgICBzaG93KCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuX3RhcmdldEVsZW1lbnQpOwogICAgICAgICBpZiAoIXRoaXMuX3RhcmdldEVsZW1l
bnQpCkBAIC0yMjgsOSArMjA5LDkgQEAgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIucHJvdG90eXBl
ID0gewogICAgICAgICBzZXRUaW1lb3V0KGRlbGF5ZWRXb3JrLmJpbmQodGhpcyksIDApOwogCiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5GaW5kQmFu
bmVyLkV2ZW50LkRpZFNob3cpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZTogZnVuY3Rpb24o
KQorICAgIGhpZGUoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fdGFyZ2V0
RWxlbWVudCk7CiAgICAgICAgIGlmICghdGhpcy5fdGFyZ2V0RWxlbWVudCkKQEAgLTI0MiwyNyAr
MjIzLDI3IEBAIFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLlNo
b3dpbmdTdHlsZUNsYXNzTmFtZSk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuRXZlbnQuRGlkSGlkZSk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaW5wdXRGaWVsZEtleURvd246IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9pbnB1dEZpZWxkS2V5RG93bihldmVudCkKICAgICB7CiAgICAgICAgIGlm
IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiU2hpZnQiKQogICAgICAgICAgICAgdGhpcy5fc2Vh
cmNoQmFja3dhcmRzID0gdHJ1ZTsKICAgICAgICAgZWxzZSBpZiAoZXZlbnQua2V5SWRlbnRpZmll
ciA9PT0gIkVudGVyIikKICAgICAgICAgICAgIHRoaXMuX3NlYXJjaEtleVByZXNzZWQgPSB0cnVl
OwotICAgIH0sCisgICAgfQogCi0gICAgX2lucHV0RmllbGRLZXlVcDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2lucHV0RmllbGRLZXlVcChldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5r
ZXlJZGVudGlmaWVyID09PSAiU2hpZnQiKQogICAgICAgICAgICAgdGhpcy5fc2VhcmNoQmFja3dh
cmRzID0gZmFsc2U7CiAgICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJF
bnRlciIpCiAgICAgICAgICAgICB0aGlzLl9zZWFyY2hLZXlQcmVzc2VkID0gZmFsc2U7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfaW5wdXRGaWVsZFNlYXJjaDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2lucHV0RmllbGRTZWFyY2goZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faW5wdXRG
aWVsZC52YWx1ZSkgewogICAgICAgICAgICAgaWYgKHRoaXMuX3ByZXZpb3VzU2VhcmNoVmFsdWUg
IT09IHRoaXMuc2VhcmNoUXVlcnkpIHsKQEAgLTI4NSw5ICsyNjYsOSBAQCBXZWJJbnNwZWN0b3Iu
RmluZEJhbm5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9wcmV2
aW91c1NlYXJjaFZhbHVlID0gdGhpcy5zZWFyY2hRdWVyeTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9wb3B1bGF0ZVNlYXJjaFF1ZXJ5RnJvbVNlbGVjdGlvbjogZnVuY3Rpb24oZXZlbnQpCisgICAg
X3BvcHVsYXRlU2VhcmNoUXVlcnlGcm9tU2VsZWN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5maW5kQmFubmVyU2Vh
cmNoUXVlcnlGb3JTZWxlY3Rpb24gPT09ICJmdW5jdGlvbiIpIHsKICAgICAgICAgICAgIHZhciBx
dWVyeSA9IHRoaXMuX2RlbGVnYXRlLmZpbmRCYW5uZXJTZWFyY2hRdWVyeUZvclNlbGVjdGlvbih0
aGlzKTsKQEAgLTI5OCwyNiArMjc5LDI2IEBAIFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGVsZWdhdGUuZmluZEJhbm5lclBl
cmZvcm1TZWFyY2godGhpcywgdGhpcy5zZWFyY2hRdWVyeSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9wcmV2aW91c1Jlc3VsdEJ1dHRvbkNsaWNrZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wcmV2aW91c1Jlc3VsdEJ1dHRvbkNsaWNrZWQoZXZlbnQp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVn
YXRlLmZpbmRCYW5uZXJSZXZlYWxQcmV2aW91c1Jlc3VsdCA9PT0gImZ1bmN0aW9uIikKICAgICAg
ICAgICAgIHRoaXMuX2RlbGVnYXRlLmZpbmRCYW5uZXJSZXZlYWxQcmV2aW91c1Jlc3VsdCh0aGlz
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9uZXh0UmVzdWx0QnV0dG9uQ2xpY2tlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX25leHRSZXN1bHRCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5maW5kQmFu
bmVyUmV2ZWFsTmV4dFJlc3VsdCA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuX2Rl
bGVnYXRlLmZpbmRCYW5uZXJSZXZlYWxOZXh0UmVzdWx0KHRoaXMpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2RvbmVCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZG9uZUJ1dHRv
bkNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmhpZGUoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9nZW5lcmF0ZUJ1dHRvbnNHbHlwaHNJZk5lZWRlZDogZnVuY3Rpb24oKQorICAg
IF9nZW5lcmF0ZUJ1dHRvbnNHbHlwaHNJZk5lZWRlZCgpCiAgICAgewogICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yLkZpbmRCYW5uZXIuX2dlbmVyYXRlZEJ1dHRvbnNHbHlwaHMpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zNDIsNCArMzIzLDE2IEBAIFdlYkluc3BlY3Rvci5GaW5kQmFubmVyLnBy
b3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRmluZEJhbm5lci5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0
b3IuRmluZEJhbm5lci5TdXBwb3J0c0ZpbmRCYW5uZXJTdHlsZUNsYXNzTmFtZSA9ICJzdXBwb3J0
cy1maW5kLWJhbm5lciI7CitXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TaG93aW5nRmluZEJhbm5l
clN0eWxlQ2xhc3NOYW1lID0gInNob3dpbmctZmluZC1iYW5uZXIiOworV2ViSW5zcGVjdG9yLkZp
bmRCYW5uZXIuTm9UcmFuc2l0aW9uU3R5bGVDbGFzc05hbWUgPSAibm8tZmluZC1iYW5uZXItdHJh
bnNpdGlvbiI7CitXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TaG93aW5nU3R5bGVDbGFzc05hbWUg
PSAic2hvd2luZyI7CitXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5TZWdtZW50ZWRCdXR0b25TdHls
ZUNsYXNzTmFtZSA9ICJzZWdtZW50ZWQiOworV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuTGVmdFNl
Z21lbnRCdXR0b25TdHlsZUNsYXNzTmFtZSA9ICJsZWZ0IjsKK1dlYkluc3BlY3Rvci5GaW5kQmFu
bmVyLlJpZ2h0U2VnbWVudEJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gInJpZ2h0IjsKK1dlYkluc3Bl
Y3Rvci5GaW5kQmFubmVyLlNlZ21lbnRHbHlwaFN0eWxlQ2xhc3NOYW1lID0gImdseXBoIjsKKwor
V2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIuRXZlbnQgPSB7CisgICAgRGlkU2hvdzogImZpbmQtYmFu
bmVyLWRpZC1zaG93IiwKKyAgICBEaWRIaWRlOiAiZmluZC1iYW5uZXItZGlkLWhpZGUiCit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmxl
eGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLmpzCmluZGV4IGFlNTc2
ZmYuLjg1YzlmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0
ZW0uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDE4ICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0gPSBmdW5j
dGlvbihpZGVudGlmaWVyKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtLmNhbGwo
dGhpcywgaWRlbnRpZmllcik7CitXZWJJbnNwZWN0b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25J
dGVtID0gY2xhc3MgRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25JdGVtCit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKKyAgICB7
CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIpOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAor
CisgICAgZ2V0IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBb
ImZsZXhpYmxlLXNwYWNlIl07CisgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkZsZXhpYmxlU3Bh
Y2VOYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZSA9ICJmbGV4aWJsZS1zcGFjZSI7Ci0KLVdl
Ykluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLAot
Ci0gICAgLy8gUHJpdmF0ZQotCi0gICAgX2FkZGl0aW9uYWxDbGFzc05hbWVzOiBbV2ViSW5zcGVj
dG9yLkZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZV0sCi19OwotCi1X
ZWJJbnNwZWN0b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRm9sZGVyVHJlZUVsZW1l
bnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJU
cmVlRWxlbWVudC5qcwppbmRleCA4Y2FlOGI3Li4yYTA4ODM1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJUcmVlRWxlbWVudC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Gb2xkZXJUcmVl
RWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsNyArMjMsOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHRp
dGxlLCBzdWJ0aXRsZSwgYWRkaXRpb25hbENsYXNzTmFtZXMsIHJlcHJlc2VudGVkT2JqZWN0KQor
V2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50ID0gY2xhc3MgRm9sZGVyVHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0
b3IodGl0bGUsIHN1YnRpdGxlLCBhZGRpdGlvbmFsQ2xhc3NOYW1lcywgcmVwcmVzZW50ZWRPYmpl
Y3QpCiAgICAgewogICAgICAgICB2YXIgY2xhc3NOYW1lczsKICAgICAgICAgaWYgKCFhZGRpdGlv
bmFsQ2xhc3NOYW1lcykKQEAgLTM1LDE3ICszNywxMiBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyVHJl
ZUVsZW1lbnQgPSBmdW5jdGlvbih0aXRsZSwgc3VidGl0bGUsIGFkZGl0aW9uYWxDbGFzc05hbWVz
LAogCiAgICAgICAgIGNsYXNzTmFtZXMudW5zaGlmdChXZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVs
ZW1lbnQuRm9sZGVySWNvblN0eWxlQ2xhc3NOYW1lKTsKIAotICAgIFdlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJl
cHJlc2VudGVkT2JqZWN0LCB0cnVlKTsKKyAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUs
IHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCwgdHJ1ZSk7CiAKICAgICAgICAgdGhpcy5zbWFs
bCA9IHRydWU7Ci19OwotCi1XZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQuRm9sZGVySWNv
blN0eWxlQ2xhc3NOYW1lID0gImZvbGRlci1pY29uIjsKLQotV2ViSW5zcGVjdG9yLkZvbGRlclRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZv
bGRlclRyZWVFbGVtZW50CisgICAgfQogCiAgICAgLy8gTm8gTWV0aG9kcyBvciBQcm9wZXJ0aWVz
CiB9OwogCi1XZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlOworV2ViSW5zcGVj
dG9yLkZvbGRlclRyZWVFbGVtZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSA9ICJmb2xkZXIt
aWNvbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Gb2xkZXJpemVkVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Gb2xkZXJpemVkVHJlZUVsZW1lbnQuanMKaW5kZXggNGZmMDEwNy4u
MWY4YzRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRm9sZGVyaXplZFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZvbGRlcml6ZWRUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5ICsyMywx
MSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihjbGFzc05hbWVzLCB0aXRsZSwg
c3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKK1dlYkluc3BlY3Rvci5G
b2xkZXJpemVkVHJlZUVsZW1lbnQgPSBjbGFzcyBGb2xkZXJpemVkVHJlZUVsZW1lbnQgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwg
cmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKTsKKyAgICBjb25zdHJ1Y3RvcihjbGFzc05h
bWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKKyAg
ICB7CisgICAgICAgIHN1cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50
ZWRPYmplY3QsIGhhc0NoaWxkcmVuKTsKIAogICAgICAgICB0aGlzLnNob3VsZFJlZnJlc2hDaGls
ZHJlbiA9IHRydWU7CiAKQEAgLTM0LDMwICszNiwyMSBAQCBXZWJJbnNwZWN0b3IuRm9sZGVyaXpl
ZFRyZWVFbGVtZW50ID0gZnVuY3Rpb24oY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCByZXBy
ZQogICAgICAgICB0aGlzLl9mb2xkZXJpemVTZXR0aW5nc01hcCA9IG5ldyBNYXA7CiAgICAgICAg
IHRoaXMuX2dyb3VwZWRJbnRvRm9sZGVycyA9IGZhbHNlOwogICAgICAgICB0aGlzLl9jbGVhck5l
d0NoaWxkUXVldWUoKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQu
TWVkaXVtQ2hpbGRDb3VudFRocmVzaG9sZCA9IDU7Ci1XZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRy
ZWVFbGVtZW50LkxhcmdlQ2hpbGRDb3VudFRocmVzaG9sZCA9IDE1OwotV2ViSW5zcGVjdG9yLkZv
bGRlcml6ZWRUcmVlRWxlbWVudC5OdW1iZXJPZk1lZGl1bUNhdGVnb3JpZXNUaHJlc2hvbGQgPSAy
OwotV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5OZXdDaGlsZFF1ZXVlVXBkYXRl
SW50ZXJ2YWwgPSA1MDA7Ci0KLVdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVF
bGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5w
cm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZ3JvdXBlZEludG9G
b2xkZXJzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnM7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZm9sZGVyU2V0dGluZ3NLZXkoeCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2ZvbGRlclNldHRpbmdzS2V5ID0geDsKLSAgICB9LAorICAgIH0KIAotICAg
IHJlZ2lzdGVyRm9sZGVyaXplU2V0dGluZ3M6IGZ1bmN0aW9uKHR5cGUsIGZvbGRlckRpc3BsYXlO
YW1lLCB2YWxpZGF0ZVJlcHJlc2VudGVkT2JqZWN0Q2FsbGJhY2ssIGNvdW50Q2hpbGRyZW5DYWxs
YmFjaywgdHJlZUVsZW1lbnRDb25zdHJ1Y3RvcikKKyAgICByZWdpc3RlckZvbGRlcml6ZVNldHRp
bmdzKHR5cGUsIGZvbGRlckRpc3BsYXlOYW1lLCB2YWxpZGF0ZVJlcHJlc2VudGVkT2JqZWN0Q2Fs
bGJhY2ssIGNvdW50Q2hpbGRyZW5DYWxsYmFjaywgdHJlZUVsZW1lbnRDb25zdHJ1Y3RvcikKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGUpOwogICAgICAgICBjb25zb2xlLmFzc2Vy
dChmb2xkZXJEaXNwbGF5TmFtZSk7CkBAIC03NCwxMyArNjcsMTMgQEAgV2ViSW5zcGVjdG9yLkZv
bGRlcml6ZWRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH07CiAKICAgICAgICAg
dGhpcy5fZm9sZGVyaXplU2V0dGluZ3NNYXAuc2V0KHR5cGUsIHNldHRpbmdzKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIE92ZXJyaWRlcyBmcm9tIFRyZWVFbGVtZW50IChQcml2YXRlKS4KIAot
ICAgIHJlbW92ZUNoaWxkcmVuOiBmdW5jdGlvbigpCisgICAgcmVtb3ZlQ2hpbGRyZW4oKQogICAg
IHsKLSAgICAgICAgVHJlZUVsZW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuLmNhbGwodGhp
cyk7CisgICAgICAgIHN1cGVyLnJlbW92ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgdGhpcy5fY2xl
YXJOZXdDaGlsZFF1ZXVlKCk7CiAKQEAgLTkwLDExICs4MywxMSBAQCBXZWJJbnNwZWN0b3IuRm9s
ZGVyaXplZFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZm9sZGVyVHlw
ZU1hcC5jbGVhcigpOwogCiAgICAgICAgIHRoaXMuX2dyb3VwZWRJbnRvRm9sZGVycyA9IGZhbHNl
OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBhZGRDaGlsZEZvclJl
cHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICBhZGRDaGls
ZEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAg
dmFyIHNldHRpbmdzID0gdGhpcy5fc2V0dGluZ3NGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNl
bnRlZE9iamVjdCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNldHRpbmdzKTsKQEAgLTEwOCwx
OCArMTAxLDE4IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgY2hpbGRUcmVlRWxlbWVudCA9IG5ldyBzZXR0aW5ncy50cmVlRWxl
bWVudENvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KTsKIAogICAgICAgICB0aGlzLl9hZGRU
cmVlRWxlbWVudChjaGlsZFRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFJl
cHJlc2VudGVkT2JqZWN0VG9OZXdDaGlsZFF1ZXVlOiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVj
dCkKKyAgICBhZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShyZXByZXNlbnRlZE9i
amVjdCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgcXVldWUgcmVkdWNlcyBmbGFzaGluZyBhcyBy
ZXNvdXJjZXMgbG9hZCBhbmQgY2hhbmdlIGZvbGRlcnMgd2hlbiB0aGVpciB0eXBlIGJlY29tZXMg
a25vd24uCiAKICAgICAgICAgdGhpcy5fbmV3Q2hpbGRRdWV1ZS5wdXNoKHJlcHJlc2VudGVkT2Jq
ZWN0KTsKICAgICAgICAgaWYgKCF0aGlzLl9uZXdDaGlsZFF1ZXVlVGltZW91dElkZW50aWZpZXIp
CiAgICAgICAgICAgICB0aGlzLl9uZXdDaGlsZFF1ZXVlVGltZW91dElkZW50aWZpZXIgPSBzZXRU
aW1lb3V0KHRoaXMuX3BvcHVsYXRlRnJvbU5ld0NoaWxkUXVldWUuYmluZCh0aGlzKSwgV2ViSW5z
cGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5OZXdDaGlsZFF1ZXVlVXBkYXRlSW50ZXJ2YWwp
OwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdDog
ZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgcmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRl
ZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlbW92ZVJl
cHJlc2VudGVkT2JqZWN0RnJvbU5ld0NoaWxkUXVldWUocmVwcmVzZW50ZWRPYmplY3QpOwogICAg
ICAgICB0aGlzLnVwZGF0ZVBhcmVudFN0YXR1cygpOwpAQCAtMTM3LDE0ICsxMzAsMTQgQEAgV2Vi
SW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fcmVtb3ZlVHJlZUVsZW1lbnQoY2hpbGRUcmVlRWxl
bWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb21wYXJlQ2hpbGRUcmVlRWxlbWVudHM6IGZ1
bmN0aW9uKGEsIGIpCisgICAgY29tcGFyZUNoaWxkVHJlZUVsZW1lbnRzKGEsIGIpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZVRyZWVFbGVtZW50c0J5TWFpblRpdGxlKGEsIGIp
OwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlUGFyZW50U3RhdHVzOiBmdW5jdGlvbigpCisg
ICAgdXBkYXRlUGFyZW50U3RhdHVzKCkKICAgICB7CiAgICAgICAgIHZhciBoYXNDaGlsZHJlbiA9
IGZhbHNlOwogICAgICAgICBmb3IgKHZhciBzZXR0aW5ncyBvZiB0aGlzLl9mb2xkZXJpemVTZXR0
aW5nc01hcC52YWx1ZXMoKSkgewpAQCAtMTU3LDI2ICsxNTAsMjYgQEAgV2ViSW5zcGVjdG9yLkZv
bGRlcml6ZWRUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuaGFzQ2hpbGRy
ZW4gPSBoYXNDaGlsZHJlbjsKICAgICAgICAgaWYgKCF0aGlzLmhhc0NoaWxkcmVuKQogICAgICAg
ICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwotICAgIH0sCisgICAgfQogCi0gICAgcHJlcGFy
ZVRvUG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBwcmVwYXJlVG9Qb3B1bGF0ZSgpCiAgICAgewog
ICAgICAgICBpZiAoIXRoaXMuX2dyb3VwZWRJbnRvRm9sZGVycyAmJiB0aGlzLl9zaG91bGRHcm91
cEludG9Gb2xkZXJzKCkpCiAgICAgICAgICAgICB0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnMgPSB0
cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2NsZWFyTmV3Q2hp
bGRRdWV1ZTogZnVuY3Rpb24oKQorICAgIF9jbGVhck5ld0NoaWxkUXVldWUoKQogICAgIHsKICAg
ICAgICAgdGhpcy5fbmV3Q2hpbGRRdWV1ZSA9IFtdOwogICAgICAgICBpZiAodGhpcy5fbmV3Q2hp
bGRRdWV1ZVRpbWVvdXRJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhp
cy5fbmV3Q2hpbGRRdWV1ZVRpbWVvdXRJZGVudGlmaWVyKTsKICAgICAgICAgICAgIHRoaXMuX25l
d0NoaWxkUXVldWVUaW1lb3V0SWRlbnRpZmllciA9IG51bGw7CiAgICAgICAgIH0KLSAgICB9LAor
ICAgIH0KIAotICAgIF9wb3B1bGF0ZUZyb21OZXdDaGlsZFF1ZXVlOiBmdW5jdGlvbigpCisgICAg
X3BvcHVsYXRlRnJvbU5ld0NoaWxkUXVldWUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmNo
aWxkcmVuLmxlbmd0aCkgewogICAgICAgICAgICAgdGhpcy51cGRhdGVQYXJlbnRTdGF0dXMoKTsK
QEAgLTE5MCwxNCArMTgzLDE0IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5hZGRDaGlsZEZvclJlcHJlc2VudGVkT2Jq
ZWN0KHRoaXMuX25ld0NoaWxkUXVldWVbaV0pOwogCiAgICAgICAgIHRoaXMuX2NsZWFyTmV3Q2hp
bGRRdWV1ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbW92ZVJlcHJlc2VudGVkT2JqZWN0
RnJvbU5ld0NoaWxkUXVldWU6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIF9yZW1v
dmVSZXByZXNlbnRlZE9iamVjdEZyb21OZXdDaGlsZFF1ZXVlKHJlcHJlc2VudGVkT2JqZWN0KQog
ICAgIHsKICAgICAgICAgdGhpcy5fbmV3Q2hpbGRRdWV1ZS5yZW1vdmUocmVwcmVzZW50ZWRPYmpl
Y3QpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZFRyZWVFbGVtZW50OiBmdW5jdGlvbihjaGls
ZFRyZWVFbGVtZW50KQorICAgIF9hZGRUcmVlRWxlbWVudChjaGlsZFRyZWVFbGVtZW50KQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY2hpbGRUcmVlRWxlbWVudCk7CiAgICAgICAgIGlm
ICghY2hpbGRUcmVlRWxlbWVudCkKQEAgLTIxNSwyNyArMjA4LDI3IEBAIFdlYkluc3BlY3Rvci5G
b2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh3YXNTZWxl
Y3RlZCkKICAgICAgICAgICAgIGNoaWxkVHJlZUVsZW1lbnQucmV2ZWFsQW5kU2VsZWN0KHRydWUs
IGZhbHNlLCB0cnVlLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb21wYXJlVHJlZUVs
ZW1lbnRzQnlNYWluVGl0bGU6IGZ1bmN0aW9uKGEsIGIpCisgICAgX2NvbXBhcmVUcmVlRWxlbWVu
dHNCeU1haW5UaXRsZShhLCBiKQogICAgIHsKICAgICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmxv
Y2FsZUNvbXBhcmUoYi5tYWluVGl0bGUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2luc2VydEZv
bGRlclRyZWVFbGVtZW50OiBmdW5jdGlvbihmb2xkZXJUcmVlRWxlbWVudCkKKyAgICBfaW5zZXJ0
Rm9sZGVyVHJlZUVsZW1lbnQoZm9sZGVyVHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnMpOwogICAgICAgICBjb25zb2xlLmFz
c2VydCghZm9sZGVyVHJlZUVsZW1lbnQucGFyZW50KTsKICAgICAgICAgdGhpcy5pbnNlcnRDaGls
ZChmb2xkZXJUcmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRC
eUZ1bmN0aW9uKGZvbGRlclRyZWVFbGVtZW50LCB0aGlzLmNoaWxkcmVuLCB0aGlzLl9jb21wYXJl
VHJlZUVsZW1lbnRzQnlNYWluVGl0bGUpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pbnNlcnRD
aGlsZFRyZWVFbGVtZW50OiBmdW5jdGlvbihwYXJlbnRUcmVlRWxlbWVudCwgY2hpbGRUcmVlRWxl
bWVudCkKKyAgICBfaW5zZXJ0Q2hpbGRUcmVlRWxlbWVudChwYXJlbnRUcmVlRWxlbWVudCwgY2hp
bGRUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjaGlsZFRyZWVF
bGVtZW50LnBhcmVudCk7CiAgICAgICAgIHBhcmVudFRyZWVFbGVtZW50Lmluc2VydENoaWxkKGNo
aWxkVHJlZUVsZW1lbnQsIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5j
dGlvbihjaGlsZFRyZWVFbGVtZW50LCBwYXJlbnRUcmVlRWxlbWVudC5jaGlsZHJlbiwgdGhpcy5j
b21wYXJlQ2hpbGRUcmVlRWxlbWVudHMuYmluZCh0aGlzKSkpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3JlbW92ZVRyZWVFbGVtZW50OiBmdW5jdGlvbihjaGlsZFRyZWVFbGVtZW50LCBzdXBwcmVz
c09uRGVzZWxlY3QsIHN1cHByZXNzU2VsZWN0U2libGluZykKKyAgICBfcmVtb3ZlVHJlZUVsZW1l
bnQoY2hpbGRUcmVlRWxlbWVudCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNp
YmxpbmcpCiAgICAgewogICAgICAgICB2YXIgb2xkUGFyZW50ID0gY2hpbGRUcmVlRWxlbWVudC5w
YXJlbnQ7CiAgICAgICAgIGlmICghb2xkUGFyZW50KQpAQCAtMjUzLDkgKzI0Niw5IEBAIFdlYklu
c3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAvLyBS
ZW1vdmUgdGhlIG9sZCBwYXJlbnQgZm9sZGVyIGlmIGl0IGlzIG5vdyBlbXB0eS4KICAgICAgICAg
aWYgKCFvbGRQYXJlbnQuY2hpbGRyZW4ubGVuZ3RoKQogICAgICAgICAgICAgb2xkUGFyZW50LnBh
cmVudC5yZW1vdmVDaGlsZChvbGRQYXJlbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhcmVu
dFRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2Jq
ZWN0KQorICAgIF9wYXJlbnRUcmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2Vu
dGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9ncm91cGVkSW50b0ZvbGRlcnMp
CiAgICAgICAgICAgICByZXR1cm4gdGhpczsKQEAgLTI4NiwyNCArMjc5LDI0IEBAIFdlYkluc3Bl
Y3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBmb2xkZXIg
PSBjcmVhdGVGb2xkZXJUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHNldHRpbmdzLnR5cGUsIHNldHRp
bmdzLmZvbGRlckRpc3BsYXlOYW1lKTsKICAgICAgICAgdGhpcy5fZm9sZGVyVHlwZU1hcC5zZXQo
c2V0dGluZ3MudHlwZSwgZm9sZGVyKTsKICAgICAgICAgcmV0dXJuIGZvbGRlcjsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9mb2xkZXJUcmVlRWxlbWVudEV4cGFuZGVkU3RhdGVDaGFuZ2U6IGZ1bmN0
aW9uKGZvbGRlclRyZWVFbGVtZW50KQorICAgIF9mb2xkZXJUcmVlRWxlbWVudEV4cGFuZGVkU3Rh
dGVDaGFuZ2UoZm9sZGVyVHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dChmb2xkZXJUcmVlRWxlbWVudC5fX2V4cGFuZGVkU2V0dGluZyk7CiAgICAgICAgIGZvbGRlclRy
ZWVFbGVtZW50Ll9fZXhwYW5kZWRTZXR0aW5nLnZhbHVlID0gZm9sZGVyVHJlZUVsZW1lbnQuZXhw
YW5kZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2V0dGluZ3NGb3JSZXByZXNlbnRlZE9iamVj
dDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgX3NldHRpbmdzRm9yUmVwcmVzZW50
ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICBmb3IgKHZhciBzZXR0
aW5ncyBvZiB0aGlzLl9mb2xkZXJpemVTZXR0aW5nc01hcC52YWx1ZXMoKSkgewogICAgICAgICAg
ICAgaWYgKHNldHRpbmdzLnZhbGlkYXRlUmVwcmVzZW50ZWRPYmplY3RDYWxsYmFjayhyZXByZXNl
bnRlZE9iamVjdCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHNldHRpbmdzOwogICAgICAgICB9
CiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3VsZEdyb3Vw
SW50b0ZvbGRlcnM6IGZ1bmN0aW9uKCkKKyAgICBfc2hvdWxkR3JvdXBJbnRvRm9sZGVycygpCiAg
ICAgewogICAgICAgICAvLyBBbHJlYWR5IGdyb3VwZWQgaW50byBmb2xkZXJzLCBrZWVwIGl0IHRo
YXQgd2F5LgogICAgICAgICBpZiAodGhpcy5fZ3JvdXBlZEludG9Gb2xkZXJzKQpAQCAtMzU4LDMg
KzM1MSw4IEBAIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkZvbGRl
cml6ZWRUcmVlRWxlbWVudC5NZWRpdW1DaGlsZENvdW50VGhyZXNob2xkID0gNTsKK1dlYkluc3Bl
Y3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQuTGFyZ2VDaGlsZENvdW50VGhyZXNob2xkID0gMTU7
CitXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50Lk51bWJlck9mTWVkaXVtQ2F0ZWdv
cmllc1RocmVzaG9sZCA9IDI7CitXZWJJbnNwZWN0b3IuRm9sZGVyaXplZFRyZWVFbGVtZW50Lk5l
d0NoaWxkUXVldWVVcGRhdGVJbnRlcnZhbCA9IDUwMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRm9udFJlc291cmNl
Q29udGVudFZpZXcuanMKaW5kZXggYmUzYTFmNS4uYmExODgzOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRm9udFJlc291cmNlQ29udGVudFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRm9u
dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMzICsyMywxNSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250
ZW50VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQorV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNv
bnRlbnRWaWV3ID0gY2xhc3MgRm9udFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VDb250ZW50VmlldwogewotICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNv
bnRlbnRWaWV3LmNhbGwodGhpcywgcmVzb3VyY2UsIFdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VD
b250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7CisgICAgY29uc3RydWN0b3IocmVzb3VyY2UpCisg
ICAgeworICAgICAgICBzdXBlcihyZXNvdXJjZSwgImZvbnQiKTsKIAogICAgICAgICB0aGlzLl9z
dHlsZUVsZW1lbnQgPSBudWxsOwogICAgICAgICB0aGlzLl9wcmV2aWV3RWxlbWVudCA9IG51bGw7
Ci19OwotCi1XZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuX3VuaXF1ZUZvbnRJ
ZGVudGlmaWVyID0gMDsKLQotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LlN0
eWxlQ2xhc3NOYW1lID0gImZvbnQiOwotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRW
aWV3LlByZXZpZXdFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAicHJldmlldyI7Ci1XZWJJbnNwZWN0
b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuTGluZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJs
aW5lIjsKLVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5Db250ZW50RWxlbWVu
dFN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQiOwotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNv
bnRlbnRWaWV3Lk1ldHJpY0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJtZXRyaWMiOwotV2ViSW5z
cGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LlRvcE1ldHJpY0VsZW1lbnRTdHlsZUNsYXNz
TmFtZSA9ICJ0b3AiOwotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LlhIZWln
aHRNZXRyaWNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAieGhlaWdodCI7Ci1XZWJJbnNwZWN0b3Iu
Rm9udFJlc291cmNlQ29udGVudFZpZXcuTWlkZGxlTWV0cmljRWxlbWVudFN0eWxlQ2xhc3NOYW1l
ID0gIm1pZGRsZSI7Ci1XZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuQmFzZWxp
bmVNZXRyaWNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiYmFzZWxpbmUiOwotV2ViSW5zcGVjdG9y
LkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LkJvdHRvbU1ldHJpY0VsZW1lbnRTdHlsZUNsYXNzTmFt
ZSA9ICJib3R0b20iOwotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LlByZXZp
ZXdMaW5lcyA9IFsiQUJDREVGR0hJSktMTSIsICJOT1BRUlNUVVZXWFlaIiwgImFiY2RlZmdoaWpr
bG0iLCAibm9wcXJzdHV2d3h5eiIsICIxMjM0NTY3ODkwIl07Ci0KLVdlYkluc3BlY3Rvci5Gb250
UmVzb3VyY2VDb250ZW50Vmlldy5NYXhpbXVtRm9udFNpemUgPSA3MjsKLVdlYkluc3BlY3Rvci5G
b250UmVzb3VyY2VDb250ZW50Vmlldy5NaW5pbXVtRm9udFNpemUgPSAxMjsKLQotV2ViSW5zcGVj
dG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LAorICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCkBAIC01OSwxNCArNDEsMTQgQEAgV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNv
bnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVNpZGViYXJQYW5lbC5pZGVudGlmaWVyLAogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVs
aW5lU2lkZWJhclBhbmVsLmlkZW50aWZpZXIKICAgICAgICAgXTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBwcmV2aWV3RWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJl
dmlld0VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaXplVG9GaXQ6IGZ1bmN0aW9uKCkK
KyAgICBzaXplVG9GaXQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9wcmV2aWV3RWxlbWVu
dCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc3LDEzICs1OSwxMyBAQCBXZWJJbnNwZWN0b3Iu
Rm9udFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHRo
aXMuX3ByZXZpZXdFbGVtZW50Lm9mZnNldFdpZHRoIDw9IHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0
aCkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0g
ICAgY29udGVudEF2YWlsYWJsZTogZnVuY3Rpb24oY29udGVudCwgYmFzZTY0RW5jb2RlZCkKKyAg
ICBjb250ZW50QXZhaWxhYmxlKGNvbnRlbnQsIGJhc2U2NEVuY29kZWQpCiAgICAgewogICAgICAg
ICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAotICAgICAgICBjb25zdCB1bmlxdWVG
b250TmFtZSA9ICJXZWJJbnNwZWN0b3JGb250UHJldmlldyIgKyAoKytXZWJJbnNwZWN0b3IuRm9u
dFJlc291cmNlQ29udGVudFZpZXcuX3VuaXF1ZUZvbnRJZGVudGlmaWVyKTsKKyAgICAgICAgdmFy
IHVuaXF1ZUZvbnROYW1lID0gIldlYkluc3BlY3RvckZvbnRQcmV2aWV3IiArICgrK1dlYkluc3Bl
Y3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5fdW5pcXVlRm9udElkZW50aWZpZXIpOwogCiAg
ICAgICAgIHZhciBmb3JtYXQgPSAiIjsKIApAQCAtMTM2LDI4ICsxMTgsMjggQEAgV2ViSW5zcGVj
dG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3ByZXZpZXdFbGVtZW50KTsKIAogICAgICAgICB0aGlz
LnNpemVUb0ZpdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlv
bigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRoaXMuc2l6ZVRvRml0KCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAg
ICB7CiAgICAgICAgIC8vIEFkZCB0aGUgc3R5bGUgZWxlbWVudCBzaW5jZSBpdCBpcyByZW1vdmVk
IHdoZW4gaGlkZGVuLgogICAgICAgICBpZiAodGhpcy5fc3R5bGVFbGVtZW50KQogICAgICAgICAg
ICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0aGlzLl9zdHlsZUVsZW1lbnQpOwotICAgIH0s
CisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7CiAg
ICAgICAgIC8vIFJlbW92ZSB0aGUgc3R5bGUgZWxlbWVudCBzbyBpdCB3aWxsIG5vdCBzdGljayBh
cm91bmQgd2hlbiB0aGlzIGNvbnRlbnQgdmlldyBpcyBkZXN0cm95ZWQuCiAgICAgICAgIGlmICh0
aGlzLl9zdHlsZUVsZW1lbnQgJiYgdGhpcy5fc3R5bGVFbGVtZW50LnBhcmVudE5vZGUpCiAgICAg
ICAgICAgICB0aGlzLl9zdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9z
dHlsZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisg
ICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgaXMgYSB3b3JrYXJvdW5kIGZvciB0
aGUgZmFjdCB0aGF0IHRoZSBicm93c2VyIGRvZXMgbm90IHNlbmQgYW55IGV2ZW50cwogICAgICAg
ICAvLyB3aGVuIGEgQGZvbnQtZmFjZSByZXNvdXJjZSBpcyBsb2FkZWQuIFNvLCB3ZSBhc3N1bWUg
aXQgY291bGQgYmUgbmVlZGVkIHVudGlsCkBAIC0xNjgsNCArMTUwLDE4IEBAIFdlYkluc3BlY3Rv
ci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2Vi
SW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3Iu
Rm9udFJlc291cmNlQ29udGVudFZpZXcuX3VuaXF1ZUZvbnRJZGVudGlmaWVyID0gMDsKKworV2Vi
SW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LlByZXZpZXdFbGVtZW50U3R5bGVDbGFz
c05hbWUgPSAicHJldmlldyI7CitXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcu
TGluZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJsaW5lIjsKK1dlYkluc3BlY3Rvci5Gb250UmVz
b3VyY2VDb250ZW50Vmlldy5Db250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQi
OworV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3Lk1ldHJpY0VsZW1lbnRTdHls
ZUNsYXNzTmFtZSA9ICJtZXRyaWMiOworV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRW
aWV3LlRvcE1ldHJpY0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ0b3AiOworV2ViSW5zcGVjdG9y
LkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LlhIZWlnaHRNZXRyaWNFbGVtZW50U3R5bGVDbGFzc05h
bWUgPSAieGhlaWdodCI7CitXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuTWlk
ZGxlTWV0cmljRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm1pZGRsZSI7CitXZWJJbnNwZWN0b3Iu
Rm9udFJlc291cmNlQ29udGVudFZpZXcuQmFzZWxpbmVNZXRyaWNFbGVtZW50U3R5bGVDbGFzc05h
bWUgPSAiYmFzZWxpbmUiOworV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LkJv
dHRvbU1ldHJpY0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJib3R0b20iOworV2ViSW5zcGVjdG9y
LkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LlByZXZpZXdMaW5lcyA9IFsiQUJDREVGR0hJSktMTSIs
ICJOT1BRUlNUVVZXWFlaIiwgImFiY2RlZmdoaWprbG0iLCAibm9wcXJzdHV2d3h5eiIsICIxMjM0
NTY3ODkwIl07CisKK1dlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5NYXhpbXVt
Rm9udFNpemUgPSA3MjsKK1dlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5NaW5p
bXVtRm9udFNpemUgPSAxMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0ZyYW1lQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZUNvbnRlbnRWaWV3LmpzCmluZGV4IDQ4NDVmOTku
LmIyOTdkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0ZyYW1lQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOSArMjMsMTEgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRnJh
bWVDb250ZW50VmlldyA9IGZ1bmN0aW9uKGZyYW1lKQorV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVu
dFZpZXcgPSBjbGFzcyBGcmFtZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNsdXN0
ZXJDb250ZW50VmlldwogewotICAgIFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcuY2Fs
bCh0aGlzLCBmcmFtZSk7CisgICAgY29uc3RydWN0b3IoZnJhbWUpCisgICAgeworICAgICAgICBz
dXBlcihmcmFtZSk7CiAKICAgICAgICAgdGhpcy5fZnJhbWUgPSBmcmFtZTsKIApAQCAtNDIsMjYg
KzQ0LDE3IEBAIFdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24oZnJhbWUp
CiAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVQYXRoQ29tcG9uZW50Lm5leHRTaWJsaW5nID0gdGhp
cy5fZG9tVHJlZVBhdGhDb21wb25lbnQ7CiAgICAgICAgIHRoaXMuX2RvbVRyZWVQYXRoQ29tcG9u
ZW50LnByZXZpb3VzU2libGluZyA9IHRoaXMuX3NvdXJjZUNvZGVQYXRoQ29tcG9uZW50OwogCi0g
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZp
ZXcuU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
ZnJhbWUiKTsKIAogICAgICAgICB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5nID0gbmV3
IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJmcmFtZS1jdXJyZW50LXZpZXctIiArIHRoaXMuX2ZyYW1l
LnVybC5oYXNoLCBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5ET01UcmVlSWRlbnRpZmll
cik7Ci19OwotCi1XZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9
ICJmcmFtZSI7Ci1XZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5Tb3VyY2VDb2RlSWNvblN0
eWxlQ2xhc3NOYW1lID0gInNvdXJjZS1jb2RlLWljb24iOwotV2ViSW5zcGVjdG9yLkZyYW1lQ29u
dGVudFZpZXcuU291cmNlQ29kZUlkZW50aWZpZXIgPSAic291cmNlLWNvZGUiOwotV2ViSW5zcGVj
dG9yLkZyYW1lQ29udGVudFZpZXcuRE9NVHJlZUljb25TdHlsZUNsYXNzTmFtZSA9ICJkb20tdHJl
ZS1pY29uIjsKLVdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LkRPTVRyZWVJZGVudGlmaWVy
ID0gImRvbS10cmVlIjsKLQotV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50VmlldywKKyAg
ICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBmcmFtZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZnJhbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0
aENvbXBvbmVudHMoKQogICAgIHsKQEAgLTcxLDkgKzY0LDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1l
Q29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyBBcHBlbmQgdGhlIGN1cnJlbnQg
dmlldydzIHBhdGggY29tcG9uZW50cyB0byB0aGUgcGF0aCBjb21wb25lbnQgcmVwcmVzZW50aW5n
IHRoZSBjdXJyZW50IHZpZXcuCiAgICAgICAgIHZhciBjb21wb25lbnRzID0gW3RoaXMuX3BhdGhD
b21wb25lbnRGb3JDb250ZW50Vmlldyh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50
Q29udGVudFZpZXcpXTsKICAgICAgICAgcmV0dXJuIGNvbXBvbmVudHMuY29uY2F0KHRoaXMuX2Nv
bnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50Vmlldy5zZWxlY3Rpb25QYXRoQ29tcG9u
ZW50cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3du
KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90
eXBlLnNob3duLmNhbGwodGhpcyk7CiAKQEAgLTgxLDM4ICs3NCwzOCBAQCBXZWJJbnNwZWN0b3Iu
RnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgdGhpcy5fc2hvd0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmllcih0aGlzLl9jdXJyZW50Q29u
dGVudFZpZXdTZXR0aW5nLnZhbHVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlZDogZnVu
Y3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuQ2x1c3Rl
ckNvbnRlbnRWaWV3LnByb3RvdHlwZS5jbG9zZWQuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlz
Ll9zaG93bkluaXRpYWxDb250ZW50ID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZl
VG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlVG9Db29raWUoY29va2llKQogICAg
IHsKICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVU
eXBlLlJlc291cmNlOwogICAgICAgICBjb29raWUuc3VidmlldyA9IHRoaXMuX2N1cnJlbnRDb250
ZW50Vmlld1NldHRpbmcudmFsdWU7CiAgICAgICAgIGlmICghdGhpcy5yZXByZXNlbnRlZE9iamVj
dC5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgY29va2llLnVybCA9IHRoaXMucmVwcmVzZW50
ZWRPYmplY3QudXJsOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzdG9yZUZyb21Db29raWU6IGZ1
bmN0aW9uKGNvb2tpZSkKKyAgICByZXN0b3JlRnJvbUNvb2tpZShjb29raWUpCiAgICAgewogICAg
ICAgICB2YXIgc2hvd25WaWV3ID0gdGhpcy5fc2hvd0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmllcihj
b29raWUuc3Vidmlldyk7CiAgICAgICAgIGlmICgibGluZU51bWJlciIgaW4gY29va2llICYmICJj
b2x1bW5OdW1iZXIiIGluIGNvb2tpZSkKICAgICAgICAgICAgIHRoaXMuc2hvd1NvdXJjZUNvZGUo
bmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlUG9zaXRpb24oY29va2llLmxpbmVOdW1iZXIsIGNv
b2tpZS5jb2x1bW5OdW1iZXIpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dSZXNvdXJjZTog
ZnVuY3Rpb24oKQorICAgIHNob3dSZXNvdXJjZSgpCiAgICAgewogICAgICAgICB0aGlzLl9zaG93
bkluaXRpYWxDb250ZW50ID0gdHJ1ZTsKIAogICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0NvbnRl
bnRWaWV3Rm9ySWRlbnRpZmllcihXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5Tb3VyY2VD
b2RlSWRlbnRpZmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93U291cmNlQ29kZTogZnVu
Y3Rpb24ocG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0
ZWQpCisgICAgc2hvd1NvdXJjZUNvZGUocG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxl
Y3QsIGZvcmNlVW5mb3JtYXR0ZWQpCiAgICAgewogICAgICAgICB2YXIgcmVzb3VyY2VDb250ZW50
VmlldyA9IHRoaXMuc2hvd1Jlc291cmNlKCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291
cmNlQ29udGVudFZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29u
dGVudFZpZXcpOwpAQCAtMTIwLDkgKzExMyw5IEBAIFdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJl
dHVybiByZXNvdXJjZUNvbnRlbnRWaWV3LnNob3dSZXNwb25zZShwb3NpdGlvblRvUmV2ZWFsLCB0
ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBzaG93RE9NVHJlZTogZnVuY3Rpb24oZG9tTm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFu
Z2UpCisgICAgc2hvd0RPTVRyZWUoZG9tTm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2Up
CiAgICAgewogICAgICAgICB0aGlzLl9zaG93bkluaXRpYWxDb250ZW50ID0gdHJ1ZTsKIApAQCAt
MTM0LDExICsxMjcsMTEgQEAgV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICBkb21UcmVlQ29udGVudFZpZXcuc2VsZWN0QW5kUmV2ZWFsRE9NTm9kZShk
b21Ob2RlVG9TZWxlY3QsIHByZXZlbnRGb2N1c0NoYW5nZSk7CiAKICAgICAgICAgcmV0dXJuIGRv
bVRyZWVDb250ZW50VmlldzsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF9wYXRoQ29tcG9uZW50Rm9yQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAg
IF9wYXRoQ29tcG9uZW50Rm9yQ29udGVudFZpZXcoY29udGVudFZpZXcpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChjb250ZW50Vmlldyk7CiAgICAgICAgIGlmICghY29udGVudFZpZXcp
CkBAIC0xNDksOSArMTQyLDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbVRyZWVQYXRoQ29tcG9uZW50Owog
ICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIGNvbnRlbnRWaWV3LiIpOwogICAgICAgICBy
ZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIF9pZGVudGlmaWVyRm9yQ29udGVudFZp
ZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAgIF9pZGVudGlmaWVyRm9yQ29udGVudFZpZXco
Y29udGVudFZpZXcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50Vmlldyk7
CiAgICAgICAgIGlmICghY29udGVudFZpZXcpCkBAIC0xNjIsOSArMTU1LDkgQEAgV2ViSW5zcGVj
dG9yLkZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIFdl
Ykluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LkRPTVRyZWVJZGVudGlmaWVyOwogICAgICAgICBj
b25zb2xlLmVycm9yKCJVbmtub3duIGNvbnRlbnRWaWV3LiIpOwogICAgICAgICByZXR1cm4gbnVs
bDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyOiBm
dW5jdGlvbihpZGVudGlmaWVyKQorICAgIF9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiAgICAgewogICAgICAgICB2YXIgcmVwcmVzZW50ZWRPYmplY3RUb1Nob3cgPSBu
dWxsOwogCkBAIC0xODQsMTIgKzE3NywxNSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcu
dmFsdWUgPSBpZGVudGlmaWVyOwogCiAgICAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRWaWV3Q29u
dGFpbmVyLnNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2Jq
ZWN0VG9TaG93KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0ZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKGV2ZW50LmRhdGEu
cGF0aENvbXBvbmVudC5yZXByZXNlbnRlZE9iamVjdCk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVj
dG9yLkZyYW1lQ29udGVudFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5D
bHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZp
ZXcuU291cmNlQ29kZUljb25TdHlsZUNsYXNzTmFtZSA9ICJzb3VyY2UtY29kZS1pY29uIjsKK1dl
Ykluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LlNvdXJjZUNvZGVJZGVudGlmaWVyID0gInNvdXJj
ZS1jb2RlIjsKK1dlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LkRPTVRyZWVJY29uU3R5bGVD
bGFzc05hbWUgPSAiZG9tLXRyZWUtaWNvbiI7CitXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmll
dy5ET01UcmVlSWRlbnRpZmllciA9ICJkb20tdHJlZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZURPTVRyZWVDb250ZW50Vmlldy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lRE9NVHJl
ZUNvbnRlbnRWaWV3LmpzCmluZGV4IGM4Y2VjNmUuLjNkNjgxOTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lRE9NVHJlZUNvbnRlbnRW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Zy
YW1lRE9NVHJlZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw1MSArMjMsNDggQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRnJhbWVET01UcmVlQ29u
dGVudFZpZXcgPSBmdW5jdGlvbihkb21UcmVlKQorV2ViSW5zcGVjdG9yLkZyYW1lRE9NVHJlZUNv
bnRlbnRWaWV3ID0gY2xhc3MgRnJhbWVET01UcmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3Cit7CisgICAgY29uc3RydWN0b3IoZG9tVHJlZSkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbVRyZWUpOwogCi0gICAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVDb250ZW50Vmlldy5jYWxsKHRoaXMsIGRvbVRyZWUpOworICAgICAgICBzdXBlcihk
b21UcmVlKTsKIAogICAgICAgICB0aGlzLl9kb21UcmVlID0gZG9tVHJlZTsKICAgICAgICAgdGhp
cy5fZG9tVHJlZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlLkV2ZW50LlJv
b3RET01Ob2RlSW52YWxpZGF0ZWQsIHRoaXMuX3Jvb3RET01Ob2RlSW52YWxpZGF0ZWQsIHRoaXMp
OwogCiAgICAgICAgIHRoaXMuX3JlcXVlc3RSb290RE9NTm9kZSgpOwotfTsKLQotCi1XZWJJbnNw
ZWN0b3IuRnJhbWVET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuRnJhbWVET01UcmVlQ29udGVudFZpZXcsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCBhbGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIFtXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwu
aWRlbnRpZmllcl07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZG9tVHJlZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fZG9tVHJlZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsb3Nl
ZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9kb21UcmVl
LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZC5jYWxsKHRoaXMpOwotICAg
IH0sCisgICAgfQogCi0gICAgZ2V0U2VhcmNoQ29udGV4dE5vZGVzOiBmdW5jdGlvbihjYWxsYmFj
aykKKyAgICBnZXRTZWFyY2hDb250ZXh0Tm9kZXMoY2FsbGJhY2spCiAgICAgewogICAgICAgICB0
aGlzLl9kb21UcmVlLnJlcXVlc3RSb290RE9NTm9kZShmdW5jdGlvbihyb290RE9NTm9kZSkgewog
ICAgICAgICAgICAgY2FsbGJhY2soW3Jvb3RET01Ob2RlLmlkXSk7CiAgICAgICAgIH0pOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Jvb3RET01Ob2RlQXZhaWxhYmxl
OiBmdW5jdGlvbihyb290RE9NTm9kZSkKKyAgICBfcm9vdERPTU5vZGVBdmFpbGFibGUocm9vdERP
TU5vZGUpCiAgICAgewogICAgICAgICB0aGlzLmRvbVRyZWVPdXRsaW5lLnJvb3RET01Ob2RlID0g
cm9vdERPTU5vZGU7CiAKQEAgLTc3LDE0ICs3NCwxNCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVET01U
cmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5f
cmVzdG9yZVNlbGVjdGVkTm9kZUFmdGVyVXBkYXRlKHRoaXMuX2RvbVRyZWUuZnJhbWUudXJsLCBy
b290RE9NTm9kZS5ib2R5IHx8IHJvb3RET01Ob2RlLmRvY3VtZW50RWxlbWVudCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfcm9vdERPTU5vZGVJbnZhbGlkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX3Jvb3RET01Ob2RlSW52YWxpZGF0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9y
ZXF1ZXN0Um9vdERPTU5vZGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXF1ZXN0Um9vdERP
TU5vZGU6IGZ1bmN0aW9uKCkKKyAgICBfcmVxdWVzdFJvb3RET01Ob2RlKCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2RvbVRyZWUucmVxdWVzdFJvb3RET01Ob2RlKHRoaXMuX3Jvb3RET01Ob2RlQXZh
aWxhYmxlLmJpbmQodGhpcykpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZVRyZWVFbGVtZW50LmpzCmluZGV4
IDZiOTk5MzcuLmI4ZmU0ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0ZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTEgKzIz
LDEzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihmcmFtZSwgcmVwcmVzZW50ZWRPYmpl
Y3QpCitXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIEZyYW1lVHJlZUVsZW1l
bnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudAoreworICAgIGNvbnN0
cnVjdG9yKGZyYW1lLCByZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGZyYW1lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKTsKIAotICAgIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LmNhbGwodGhpcywgZnJhbWUubWFpblJlc291cmNl
LCByZXByZXNlbnRlZE9iamVjdCB8fCBmcmFtZSk7CisgICAgICAgIHN1cGVyKGZyYW1lLm1haW5S
ZXNvdXJjZSwgcmVwcmVzZW50ZWRPYmplY3QgfHwgZnJhbWUpOwogCiAgICAgICAgIHRoaXMuX2Zy
YW1lID0gZnJhbWU7CiAKQEAgLTg0LDQwICs4NiwzNiBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVl
RWxlbWVudCA9IGZ1bmN0aW9uKGZyYW1lLCByZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAgfQog
CiAgICAgICAgIHRoaXMudXBkYXRlUGFyZW50U3RhdHVzKCk7Ci19OwotCi1XZWJJbnNwZWN0b3Iu
RnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5GcmFtZVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAg
Z2V0IGZyYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mcmFtZTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGRlc2NlbmRhbnRSZXNvdXJjZVRyZWVFbGVtZW50VHlwZURpZENoYW5nZTog
ZnVuY3Rpb24ocmVzb3VyY2VUcmVlRWxlbWVudCwgb2xkVHlwZSkKKyAgICBkZXNjZW5kYW50UmVz
b3VyY2VUcmVlRWxlbWVudFR5cGVEaWRDaGFuZ2UocmVzb3VyY2VUcmVlRWxlbWVudCwgb2xkVHlw
ZSkKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBieSBkZXNjZW5kYW50IFJlc291cmNlVHJlZUVs
ZW1lbnRzLgogCiAgICAgICAgIC8vIEFkZCB0aGUgdHJlZSBlbGVtZW50IGFnYWluLCB3aGljaCB3
aWxsIG1vdmUgaXQgdG8gdGhlIG5ldyBsb2NhdGlvbgogICAgICAgICAvLyBiYXNlZCBvbiBzb3J0
aW5nIGFuZCBwb3NzaWJsZSBmb2xkZXIgY2hhbmdlcy4KICAgICAgICAgdGhpcy5fYWRkVHJlZUVs
ZW1lbnQocmVzb3VyY2VUcmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkZXNjZW5k
YW50UmVzb3VyY2VUcmVlRWxlbWVudE1haW5UaXRsZURpZENoYW5nZTogZnVuY3Rpb24ocmVzb3Vy
Y2VUcmVlRWxlbWVudCwgb2xkTWFpblRpdGxlKQorICAgIGRlc2NlbmRhbnRSZXNvdXJjZVRyZWVF
bGVtZW50TWFpblRpdGxlRGlkQ2hhbmdlKHJlc291cmNlVHJlZUVsZW1lbnQsIG9sZE1haW5UaXRs
ZSkKICAgICB7CiAgICAgICAgIC8vIENhbGxlZCBieSBkZXNjZW5kYW50IFJlc291cmNlVHJlZUVs
ZW1lbnRzLgogCiAgICAgICAgIC8vIEFkZCB0aGUgdHJlZSBlbGVtZW50IGFnYWluLCB3aGljaCB3
aWxsIG1vdmUgaXQgdG8gdGhlIG5ldyBsb2NhdGlvbgogICAgICAgICAvLyBiYXNlZCBvbiBzb3J0
aW5nIGFuZCBwb3NzaWJsZSBmb2xkZXIgY2hhbmdlcy4KICAgICAgICAgdGhpcy5fYWRkVHJlZUVs
ZW1lbnQocmVzb3VyY2VUcmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBPdmVy
cmlkZXMgZnJvbSBTb3VyY2VDb2RlVHJlZUVsZW1lbnQuCiAKLSAgICB1cGRhdGVTb3VyY2VNYXBS
ZXNvdXJjZXM6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVTb3VyY2VNYXBSZXNvdXJjZXMoKQogICAg
IHsKICAgICAgICAgLy8gRnJhbWVzIGhhbmRsZSB0aGVpciBvd24gU291cmNlTWFwUmVzb3VyY2Vz
LgogCkBAIC0xMzEsOSArMTI5LDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJv
dG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLnJlc291cmNlICYmIHRoaXMucmVzb3VyY2Uu
c291cmNlTWFwcy5sZW5ndGgpCiAgICAgICAgICAgICB0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJl
biA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAg
IG9uYXR0YWNoKCkKICAgICB7CiAgICAgICAgIC8vIEltbWVkaWF0ZSBzdXBlcmNsYXNzZXMgYXJl
IHNraXBwZWQsIHNpbmNlIEZyYW1lcyBoYW5kbGUgdGhlaXIgb3duIFNvdXJjZU1hcFJlc291cmNl
cy4KICAgICAgICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUub25h
dHRhY2guY2FsbCh0aGlzKTsKQEAgLTE0Miw5ICsxNDAsOSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iubm90aWZp
Y2F0aW9ucy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Ob3RpZmljYXRpb24uUGFnZUFy
Y2hpdmVTdGFydGVkLCB0aGlzLl9wYWdlQXJjaGl2ZVN0YXJ0ZWQsIHRoaXMpOwogICAgICAgICAg
ICAgV2ViSW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuTm90aWZpY2F0aW9uLlBhZ2VBcmNoaXZlRW5kZWQsIHRoaXMuX3BhZ2VBcmNoaXZlRW5kZWQs
IHRoaXMpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmRldGFjaDogZnVuY3Rp
b24oKQorICAgIG9uZGV0YWNoKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRldGFjaC5jYWxsKHRoaXMpOwogCkBAIC0xNTIsMTEg
KzE1MCwxMSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3Iubm90aWZpY2F0aW9ucy5yZW1vdmVFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Ob3RpZmljYXRpb24uUGFnZUFyY2hpdmVTdGFydGVkLCB0aGlzLl9wYWdl
QXJjaGl2ZVN0YXJ0ZWQsIHRoaXMpOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLm5vdGlmaWNh
dGlvbnMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZpY2F0aW9uLlBhZ2VB
cmNoaXZlRW5kZWQsIHRoaXMuX3BhZ2VBcmNoaXZlRW5kZWQsIHRoaXMpOwogICAgICAgICB9Ci0g
ICAgfSwKKyAgICB9CiAKICAgICAvLyBPdmVycmlkZXMgZnJvbSBGb2xkZXJpemVkVHJlZUVsZW1l
bnQgKFByb3RlY3RlZCkuCiAKLSAgICBjb21wYXJlQ2hpbGRUcmVlRWxlbWVudHM6IGZ1bmN0aW9u
KGEsIGIpCisgICAgY29tcGFyZUNoaWxkVHJlZUVsZW1lbnRzKGEsIGIpCiAgICAgewogICAgICAg
ICBpZiAoYSA9PT0gYikKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTc1LDExICsxNzMsMTEg
QEAgV2ViSW5zcGVjdG9yLkZyYW1lVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAv
LyBOb24tcmVzb3VyY2VzIHNob3VsZCBhcHBlYXIgYmVmb3JlIHRoZSByZXNvdXJjZXMuCiAgICAg
ICAgIC8vIEZJWE1FOiBUaGVyZSBzaG91bGQgYmUgYSBiZXR0ZXIgd2F5IHRvIGdyb3VwIHRoZSBl
bGVtZW50cyBieSB0aGVpciB0eXBlLgogICAgICAgICByZXR1cm4gYUlzUmVzb3VyY2UgPyAxIDog
LTE7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBDYWxsZWQgZnJvbSBSZXNvdXJjZVRyZWVFbGVt
ZW50LgogCi0gICAgdXBkYXRlU3RhdHVzRm9yTWFpbkZyYW1lOiBmdW5jdGlvbigpCisgICAgdXBk
YXRlU3RhdHVzRm9yTWFpbkZyYW1lKCkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGxvYWRlZElt
YWdlcygpCiAgICAgICAgIHsKQEAgLTIyMSwxMSArMjE5LDExIEBAIFdlYkluc3BlY3Rvci5GcmFt
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBsb2FkZWRJbWFnZXMu
Y2FsbCh0aGlzKTsKICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAgICAgICAgIH0KLSAgICB9
LAorICAgIH0KIAogICAgIC8vIE92ZXJyaWRlcyBmcm9tIFRyZWVFbGVtZW50IChQcml2YXRlKS4K
IAotICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCAmJiAhdGhpcy5zaG91bGRSZWZyZXNoQ2hp
bGRyZW4pCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yNTIsMzQgKzI1MCwzNCBAQCBXZWJJbnNw
ZWN0b3IuRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGZs
b3dLZXkgaW4gZmxvd01hcCkKICAgICAgICAgICAgIHRoaXMuYWRkQ2hpbGRGb3JSZXByZXNlbnRl
ZE9iamVjdChmbG93TWFwW2Zsb3dLZXldKTsKIAotICAgIH0sCisgICAgfQogCi0gICAgb25leHBh
bmQ6IGZ1bmN0aW9uKCkKKyAgICBvbmV4cGFuZCgpCiAgICAgewogICAgICAgICB0aGlzLl9leHBh
bmRlZFNldHRpbmcudmFsdWUgPSB0cnVlOwogICAgICAgICB0aGlzLl9mcmFtZS5kb21UcmVlLnJl
cXVlc3RDb250ZW50Rmxvd0xpc3QoKTsKLSAgICB9LAorICAgIH0KIAotICAgIG9uY29sbGFwc2U6
IGZ1bmN0aW9uKCkKKyAgICBvbmNvbGxhcHNlKCkKICAgICB7CiAgICAgICAgIC8vIE9ubHkgc3Rv
cmUgdGhlIHNldHRpbmcgaWYgd2UgaGF2ZSBjaGlsZHJlbiwgc2luY2Ugc2V0dGluZyBoYXNDaGls
ZHJlbiB0byBmYWxzZSB3aWxsIGNhdXNlIGEgY29sbGFwc2UsCiAgICAgICAgIC8vIGFuZCB3ZSBv
bmx5IGNhcmUgYWJvdXQgdXNlciB0cmlnZ2VyZWQgY29sbGFwc2VzLgogICAgICAgICBpZiAodGhp
cy5oYXNDaGlsZHJlbikKICAgICAgICAgICAgIHRoaXMuX2V4cGFuZGVkU2V0dGluZy52YWx1ZSA9
IGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZUV4
cGFuZGVkU2V0dGluZzogZnVuY3Rpb24oKQorICAgIF91cGRhdGVFeHBhbmRlZFNldHRpbmcoKQog
ICAgIHsKICAgICAgICAgdGhpcy5fZXhwYW5kZWRTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5T
ZXR0aW5nKCJmcmFtZS1leHBhbmRlZC0iICsgdGhpcy5fZnJhbWUudXJsLmhhc2gsIHRoaXMuX2Zy
YW1lLmlzTWFpbkZyYW1lKCkgPyB0cnVlIDogZmFsc2UpOwogICAgICAgICBpZiAodGhpcy5fZXhw
YW5kZWRTZXR0aW5nLnZhbHVlKQogICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgdGhpcy5jb2xsYXBzZSgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X21haW5SZXNvdXJjZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX21haW5SZXNvdXJj
ZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVJlc291cmNlKHRo
aXMuX2ZyYW1lLm1haW5SZXNvdXJjZSk7CiAKQEAgLTI5NCw1NiArMjkyLDU2IEBAIFdlYkluc3Bl
Y3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZURvd25sb2FkQnV0dG9uKCk7CiAKICAgICAgICAgdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRy
ZW4gPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc291cmNlV2FzQWRkZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9yZXNvdXJjZVdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAg
dGhpcy5hZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShldmVudC5kYXRhLnJlc291
cmNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZVdhc1JlbW92ZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9yZXNvdXJjZVdhc1JlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0
aGlzLnJlbW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3QoZXZlbnQuZGF0YS5yZXNvdXJjZSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2hpbGRGcmFtZVdhc0FkZGVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfY2hpbGRGcmFtZVdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5h
ZGRSZXByZXNlbnRlZE9iamVjdFRvTmV3Q2hpbGRRdWV1ZShldmVudC5kYXRhLmNoaWxkRnJhbWUp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2NoaWxkRnJhbWVXYXNSZW1vdmVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfY2hpbGRGcmFtZVdhc1JlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0
aGlzLnJlbW92ZUNoaWxkRm9yUmVwcmVzZW50ZWRPYmplY3QoZXZlbnQuZGF0YS5jaGlsZEZyYW1l
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jaGlsZENvbnRlbnRGbG93V2FzQWRkZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9jaGlsZENvbnRlbnRGbG93V2FzQWRkZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICB0aGlzLmFkZFJlcHJlc2VudGVkT2JqZWN0VG9OZXdDaGlsZFF1ZXVlKGV2ZW50LmRh
dGEuZmxvdyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2hpbGRDb250ZW50Rmxvd1dhc1JlbW92
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jaGlsZENvbnRlbnRGbG93V2FzUmVtb3ZlZChldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRGb3JSZXByZXNlbnRlZE9iamVjdChl
dmVudC5kYXRhLmZsb3cpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jvb3RET01Ob2RlSW52YWxp
ZGF0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcm9vdERPTU5vZGVJbnZhbGlkYXRlZCgpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5leHBhbmRlZCkKICAgICAgICAgICAgIHRoaXMuX2ZyYW1lLmRvbVRy
ZWUucmVxdWVzdENvbnRlbnRGbG93TGlzdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlbG9h
ZFBhZ2VDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVsb2FkUGFnZUNsaWNrZWQoZXZl
bnQpCiAgICAgewogICAgICAgICAvLyBJZ25vcmUgY2FjaGUgd2hlbiB0aGUgc2hpZnQga2V5IGlz
IHByZXNzZWQuCiAgICAgICAgIFBhZ2VBZ2VudC5yZWxvYWQoZXZlbnQuZGF0YS5zaGlmdEtleSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZG93bmxvYWRCdXR0b25DbGlja2VkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfZG93bmxvYWRCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLmFyY2hpdmVNYWluRnJhbWUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91
cGRhdGVEb3dubG9hZEJ1dHRvbjogZnVuY3Rpb24oKQorICAgIF91cGRhdGVEb3dubG9hZEJ1dHRv
bigpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9mcmFtZS5pc01haW5GcmFt
ZSgpKTsKICAgICAgICAgaWYgKCF0aGlzLl9kb3dubG9hZEJ1dHRvbikKQEAgLTM2MCwxNSArMzU4
LDE1IEBAIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX2Rvd25sb2FkQnV0dG9uLmVuYWJsZWQgPSBXZWJJbnNwZWN0
b3IuY2FuQXJjaGl2ZU1haW5GcmFtZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhZ2VBcmNo
aXZlU3RhcnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BhZ2VBcmNoaXZlU3RhcnRlZChldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Rvd25sb2FkaW5nUGFnZSA9IHRydWU7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZURvd25sb2FkQnV0dG9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGFn
ZUFyY2hpdmVFbmRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BhZ2VBcmNoaXZlRW5kZWQoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLl9kb3dubG9hZGluZ1BhZ2UgPSBmYWxzZTsKICAgICAg
ICAgdGhpcy5fdXBkYXRlRG93bmxvYWRCdXR0b24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUcmVlRWxlbWVudC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUcmVlRWxlbWVu
dC5qcwppbmRleCAwMzIwZjE0Li4zOTQ1NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVHJlZUVsZW1lbnQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50
LmpzCkBAIC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihjbGFz
c05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikK
K1dlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQgPSBjbGFzcyBHZW5lcmFsVHJlZUVsZW1l
bnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQKIHsKLSAgICBUcmVlRWxlbWVudC5j
YWxsKHRoaXMsICIiLCByZXByZXNlbnRlZE9iamVjdCwgaGFzQ2hpbGRyZW4pOworICAgIGNvbnN0
cnVjdG9yKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhh
c0NoaWxkcmVuKQorICAgIHsKKyAgICAgICAgc3VwZXIoIiIsIHJlcHJlc2VudGVkT2JqZWN0LCBo
YXNDaGlsZHJlbik7CiAKICAgICAgICAgdGhpcy5jbGFzc05hbWVzID0gY2xhc3NOYW1lczsKIApA
QCAtMzMsNjMgKzM1LDQ0IEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQgPSBmdW5j
dGlvbihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VuCiAgICAgICAgIHRoaXMu
X21haW5UaXRsZSA9IHRpdGxlIHx8ICIiOwogICAgICAgICB0aGlzLl9zdWJ0aXRsZSA9IHN1YnRp
dGxlIHx8ICIiOwogICAgICAgICB0aGlzLl9zdGF0dXMgPSAiIjsKLX07Ci0KLVdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAiaXRlbSI7Ci1XZWJJbnNwZWN0
b3IuR2VuZXJhbFRyZWVFbGVtZW50LkRpc2Nsb3N1cmVCdXR0b25TdHlsZUNsYXNzTmFtZSA9ICJk
aXNjbG9zdXJlLWJ1dHRvbiI7Ci1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Lkljb25F
bGVtZW50U3R5bGVDbGFzc05hbWUgPSAiaWNvbiI7Ci1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50LlN0YXR1c0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzdGF0dXMiOwotV2ViSW5zcGVj
dG9yLkdlbmVyYWxUcmVlRWxlbWVudC5UaXRsZXNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidGl0
bGVzIjsKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuTWFpblRpdGxlRWxlbWVudFN0
eWxlQ2xhc3NOYW1lID0gInRpdGxlIjsKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQu
U3VidGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAic3VidGl0bGUiOwotV2ViSW5zcGVjdG9y
LkdlbmVyYWxUcmVlRWxlbWVudC5Ob1N1YnRpdGxlU3R5bGVDbGFzc05hbWUgPSAibm8tc3VidGl0
bGUiOwotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5TbWFsbFN0eWxlQ2xhc3NOYW1l
ID0gInNtYWxsIjsKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuVHdvTGluZVN0eWxl
Q2xhc3NOYW1lID0gInR3by1saW5lIjsKLQotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5FdmVudCA9IHsKLSAgICBNYWluVGl0bGVEaWRDaGFuZ2U6ICJnZW5lcmFsLXRyZWUtZWxlbWVu
dC1tYWluLXRpdGxlLWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkdlbmVy
YWxUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAg
ICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9saXN0SXRlbU5vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaWNv
bkVsZW1lbnQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY3JlYXRlRWxlbWVudHNJZk5lZWRlZCgp
OwogICAgICAgICByZXR1cm4gdGhpcy5faWNvbkVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgdGl0bGVzRWxlbWVudCgpCiAgICAgewogICAgICAgICB0aGlzLl9jcmVhdGVFbGVtZW50
c0lmTmVlZGVkKCk7CiAgICAgICAgIHJldHVybiB0aGlzLl90aXRsZXNFbGVtZW50OwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IG1haW5UaXRsZUVsZW1lbnQoKQogICAgIHsKICAgICAgICAgdGhp
cy5fY3JlYXRlRWxlbWVudHNJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gdGhpcy5fbWFpblRp
dGxlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdWJ0aXRsZUVsZW1lbnQoKQog
ICAgIHsKICAgICAgICAgdGhpcy5fY3JlYXRlRWxlbWVudHNJZk5lZWRlZCgpOwogICAgICAgICB0
aGlzLl9jcmVhdGVTdWJ0aXRsZUVsZW1lbnRJZk5lZWRlZCgpOwogICAgICAgICByZXR1cm4gdGhp
cy5fc3VidGl0bGVFbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNsYXNzTmFtZXMo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZXM7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBzZXQgY2xhc3NOYW1lcyh4KQogICAgIHsKQEAgLTEwNyw5ICs5MCw5IEBAIFdlYklu
c3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jbGFzc05hbWVzLmxlbmd0aDsgKytpKQogICAgICAgICAg
ICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFzc0xpc3QuYWRkKHRoaXMuX2NsYXNzTmFtZXNb
aV0pOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRDbGFzc05hbWU6IGZ1bmN0
aW9uKGNsYXNzTmFtZSkKKyAgICBhZGRDbGFzc05hbWUoY2xhc3NOYW1lKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2NsYXNzTmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTExOCw5ICsxMDEsOSBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlKQogICAg
ICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlbW92ZUNsYXNzTmFtZTogZnVuY3Rpb24oY2xhc3NOYW1lKQor
ICAgIHJlbW92ZUNsYXNzTmFtZShjbGFzc05hbWUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X2NsYXNzTmFtZXMuY29udGFpbnMoY2xhc3NOYW1lKSkKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTEyOSwxMiArMTEyLDEyIEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLl9saXN0SXRlbU5vZGUpCiAgICAgICAgICAgICB0
aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZShjbGFzc05hbWUpOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHNtYWxsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zbWFs
bDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzbWFsbCh4KQogICAgIHsKQEAgLTE0NiwxMiAr
MTI5LDEyIEBAIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5jbGFz
c0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU21hbGxTdHlsZUNs
YXNzTmFtZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0d29MaW5lKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90d29MaW5lOwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IHR3b0xpbmUoeCkKICAgICB7CkBAIC0xNjMsMTIgKzE0NiwxMiBAQCBXZWJJbnNwZWN0
b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlR3b0xpbmVTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAg
IH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtYWluVGl0bGUoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX21haW5UaXRsZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBtYWluVGl0
bGUoeCkKICAgICB7CkBAIC0xNzYsMjQgKzE1OSwyNCBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGVFbGVtZW50
cygpOwogICAgICAgICB0aGlzLmRpZENoYW5nZSgpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LkV2ZW50Lk1haW5U
aXRsZURpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VidGl0bGUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnRpdGxlOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IHN1YnRpdGxlKHgpCiAgICAgewogICAgICAgICB0aGlzLl9zdWJ0aXRsZSA9IHggfHwgIiI7
CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlRWxlbWVudHMoKTsKICAgICAgICAgdGhpcy5kaWRD
aGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGF0dXMoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0YXR1czsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzdGF0dXMo
eCkKICAgICB7CkBAIC0yMDcsMzYgKzE5MCwzNiBAQCBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9zdGF0dXMgPSB4IHx8ICIiOwog
ICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXNFbGVtZW50KCk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgZmlsdGVyYWJsZURhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHt0ZXh0OiBbdGhp
cy5tYWluVGl0bGUsIHRoaXMuc3VidGl0bGVdfTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0
b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Rv
b2x0aXBIYW5kbGVkU2VwYXJhdGVseTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB0b29sdGlw
SGFuZGxlZFNlcGFyYXRlbHkoeCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Rvb2x0aXBIYW5kbGVk
U2VwYXJhdGVseSA9IHggfHwgZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBPdmVycmlk
ZXMgZnJvbSBUcmVlRWxlbWVudCAoUHJpdmF0ZSkKIAotICAgIGlzRXZlbnRXaXRoaW5EaXNjbG9z
dXJlVHJpYW5nbGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGlzRXZlbnRXaXRoaW5EaXNjbG9zdXJl
VHJpYW5nbGUoZXZlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gZXZlbnQudGFyZ2V0ID09PSB0
aGlzLl9kaXNjbG9zdXJlQnV0dG9uOwotICAgIH0sCisgICAgfQogCi0gICAgb25hdHRhY2g6IGZ1
bmN0aW9uKCkKKyAgICBvbmF0dGFjaCgpCiAgICAgewogICAgICAgICB0aGlzLl9jcmVhdGVFbGVt
ZW50c0lmTmVlZGVkKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlRWxlbWVudHMoKTsKIAot
ICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fbGlzdEl0ZW1O
b2RlLmNsYXNzTGlzdC5hZGQoIml0ZW0iKTsKIAogICAgICAgICBpZiAodGhpcy5fY2xhc3NOYW1l
cykgewogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jbGFzc05hbWVzLmxl
bmd0aDsgKytpKQpAQCAtMjY0LDI1ICsyNDcsMjUgQEAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl91cGRhdGVT
dGF0dXNFbGVtZW50KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbmRldGFjaDogZnVuY3Rpb24o
KQorICAgIG9uZGV0YWNoKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9ib3VuZENvbnRleHRN
ZW51RXZlbnRIYW5kbGVyKSB7CiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUucmVtb3Zl
RXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9ib3VuZENvbnRleHRNZW51RXZlbnRI
YW5kbGVyLCB0cnVlKTsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9ib3VuZENvbnRleHRNZW51
RXZlbnRIYW5kbGVyOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvbnJldmVhbDog
ZnVuY3Rpb24oKQorICAgIG9ucmV2ZWFsKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9saXN0
SXRlbU5vZGUpCiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuc2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZChmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAg
IGNhbGxGaXJzdEFuY2VzdG9yRnVuY3Rpb246IGZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgYXJncykK
KyAgICBjYWxsRmlyc3RBbmNlc3RvckZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgYXJncykKICAgICB7
CiAgICAgICAgIC8vIENhbGwgdGhlIGZpcnN0IGFuY2VzdG9yIHRoYXQgaW1wbGVtZW50cyBhIGZ1
bmN0aW9uIG5hbWVkIGZ1bmN0aW9uTmFtZSAoaWYgYW55KS4KICAgICAgICAgdmFyIGN1cnJlbnRO
b2RlID0gdGhpcy5wYXJlbnQ7CkBAIC0yOTQsMTEgKzI3NywxMSBAQCBXZWJJbnNwZWN0b3IuR2Vu
ZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgY3VycmVudE5vZGUg
PSBjdXJyZW50Tm9kZS5wYXJlbnQ7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF9jcmVhdGVFbGVtZW50c0lmTmVlZGVkOiBmdW5jdGlvbigpCisgICAg
X2NyZWF0ZUVsZW1lbnRzSWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NyZWF0
ZWRFbGVtZW50cykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTMyMSw5ICszMDQsOSBAQCBXZWJJ
bnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
dGl0bGVzRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9tYWluVGl0bGVFbGVtZW50KTsKIAogICAg
ICAgICB0aGlzLl9jcmVhdGVkRWxlbWVudHMgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAg
X2NyZWF0ZVN1YnRpdGxlRWxlbWVudElmTmVlZGVkOiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZVN1
YnRpdGxlRWxlbWVudElmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zdWJ0aXRs
ZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMzEsOSArMzE0LDkgQEAgV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3N1
YnRpdGxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAg
dGhpcy5fc3VidGl0bGVFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJl
ZUVsZW1lbnQuU3VidGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWU7CiAgICAgICAgIHRoaXMuX3Rp
dGxlc0VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc3VidGl0bGVFbGVtZW50KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF91cGRhdGVUaXRsZUVsZW1lbnRzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0
ZVRpdGxlRWxlbWVudHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jcmVhdGVkRWxlbWVu
dHMpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNzcsOSArMzYwLDkgQEAgV2ViSW5zcGVjdG9y
LkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLnRpdGxlID0gc3VidGl0bGVUZXh0OwogICAg
ICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3RhdHVzRWxlbWVudDogZnVuY3Rp
b24oKQorICAgIF91cGRhdGVTdGF0dXNFbGVtZW50KCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5fc3RhdHVzRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM5NCwzICszNzcsMTcg
QEAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9zdGF0dXNFbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fc3RhdHVzOwogICAg
IH0KIH07CisKK1dlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuRGlzY2xvc3VyZUJ1dHRv
blN0eWxlQ2xhc3NOYW1lID0gImRpc2Nsb3N1cmUtYnV0dG9uIjsKK1dlYkluc3BlY3Rvci5HZW5l
cmFsVHJlZUVsZW1lbnQuSWNvbkVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKK1dlYklu
c3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuU3RhdHVzRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0g
InN0YXR1cyI7CitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LlRpdGxlc0VsZW1lbnRT
dHlsZUNsYXNzTmFtZSA9ICJ0aXRsZXMiOworV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5NYWluVGl0bGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidGl0bGUiOworV2ViSW5zcGVjdG9y
LkdlbmVyYWxUcmVlRWxlbWVudC5TdWJ0aXRsZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzdWJ0
aXRsZSI7CitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Lk5vU3VidGl0bGVTdHlsZUNs
YXNzTmFtZSA9ICJuby1zdWJ0aXRsZSI7CitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50
LlNtYWxsU3R5bGVDbGFzc05hbWUgPSAic21hbGwiOworV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVl
RWxlbWVudC5Ud29MaW5lU3R5bGVDbGFzc05hbWUgPSAidHdvLWxpbmUiOworCitXZWJJbnNwZWN0
b3IuR2VuZXJhbFRyZWVFbGVtZW50LkV2ZW50ID0geworICAgIE1haW5UaXRsZURpZENoYW5nZTog
ImdlbmVyYWwtdHJlZS1lbGVtZW50LW1haW4tdGl0bGUtZGlkLWNoYW5nZSIKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9HZW5lcmFsVHJl
ZUVsZW1lbnRQYXRoQ29tcG9uZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvR2VuZXJhbFRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5qcwppbmRleCBkYjRh
OTViLi40YTFkZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyYWxUcmVlRWxlbWVudFBh
dGhDb21wb25lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDIyICsyMywyMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29t
cG9uZW50ID0gZnVuY3Rpb24oZ2VuZXJhbFRyZWVFbGVtZW50LCByZXByZXNlbnRlZE9iamVjdCkg
ewotICAgIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LmNhbGwodGhpcywg
Z2VuZXJhbFRyZWVFbGVtZW50Lm1haW5UaXRsZSwgZ2VuZXJhbFRyZWVFbGVtZW50LmNsYXNzTmFt
ZXMsIHJlcHJlc2VudGVkT2JqZWN0IHx8IGdlbmVyYWxUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9i
amVjdCk7CitXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50UGF0aENvbXBvbmVudCA9IGNs
YXNzIEdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
SGllcmFyY2hpY2FsUGF0aENvbXBvbmVudAoreworICAgIGNvbnN0cnVjdG9yKGdlbmVyYWxUcmVl
RWxlbWVudCwgcmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihnZW5lcmFs
VHJlZUVsZW1lbnQubWFpblRpdGxlLCBnZW5lcmFsVHJlZUVsZW1lbnQuY2xhc3NOYW1lcywgcmVw
cmVzZW50ZWRPYmplY3QgfHwgZ2VuZXJhbFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KTsK
IAogICAgICAgICB0aGlzLl9nZW5lcmFsVHJlZUVsZW1lbnQgPSBnZW5lcmFsVHJlZUVsZW1lbnQ7
CiAgICAgICAgIGdlbmVyYWxUcmVlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQuRXZlbnQuTWFpblRpdGxlRGlkQ2hhbmdlLCB0aGlzLl9tYWlu
VGl0bGVEaWRDaGFuZ2UsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxl
bWVudFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50UGF0aENvbXBvbmVudCwKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCBnZW5lcmFsVHJlZUVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2dlbmVyYWxUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBw
cmV2aW91c1NpYmxpbmcoKQogICAgIHsKQEAgLTUwLDcgKzUwLDcgQEAgV2ViSW5zcGVjdG9yLkdl
bmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRy
ZWVFbGVtZW50UGF0aENvbXBvbmVudChwcmV2aW91c1NpYmxpbmcpOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IG5leHRTaWJsaW5nKCkKICAgICB7CkBAIC02MiwxNCArNjIsMTIgQEAgV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3Iu
R2VuZXJhbFRyZWVFbGVtZW50UGF0aENvbXBvbmVudChuZXh0U2libGluZyk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfbWFpblRpdGxlRGlkQ2hhbmdlOiBmdW5jdGlv
bihldmVudCkKKyAgICBfbWFpblRpdGxlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAg
dGhpcy5kaXNwbGF5TmFtZSA9IHRoaXMuX2dlbmVyYWxUcmVlRWxlbWVudC5tYWluVGl0bGU7CiAg
ICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudFBhdGhDb21wb25lbnQu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9u
ZW50LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0dlbmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJpY1Jlc291cmNlQ29udGVudFZpZXcu
anMKaW5kZXggMmVhODczOC4uYmNhN2I2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJpY1Jlc291cmNlQ29udGVudFZpZXcuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJpY1Jlc291
cmNlQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE1ICsyMywxMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5HZW5lcmljUmVzb3VyY2VDb250ZW50
VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQorV2ViSW5zcGVjdG9yLkdlbmVyaWNSZXNvdXJjZUNv
bnRlbnRWaWV3ID0gY2xhc3MgR2VuZXJpY1Jlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcu
Y2FsbCh0aGlzLCByZXNvdXJjZSwgV2ViSW5zcGVjdG9yLkdlbmVyaWNSZXNvdXJjZUNvbnRlbnRW
aWV3LlN0eWxlQ2xhc3NOYW1lKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5HZW5lcmljUmVzb3VyY2VD
b250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJnZW5lcmljIjsKLQotV2ViSW5zcGVjdG9yLkdl
bmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLkdlbmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3CisgICAgY29uc3RydWN0b3Io
cmVzb3VyY2UpCisgICAgeworICAgICAgICBzdXBlcihyZXNvdXJjZSwgImdlbmVyaWMiKTsKKyAg
ICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuR2VuZXJpY1Jlc291cmNlQ29udGVudFZpZXcucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0dvVG9MaW5lRGlhbG9nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvR29Ub0xpbmVEaWFsb2cuanMKaW5kZXggZjVmN2Q2ZC4uZGM0MGMzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR29Ub0xpbmVEaWFs
b2cuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR29U
b0xpbmVEaWFsb2cuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDEzICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Hb1RvTGluZURpYWxvZyA9IGZ1bmN0aW9u
KCkKK1dlYkluc3BlY3Rvci5Hb1RvTGluZURpYWxvZyA9IGNsYXNzIEdvVG9MaW5lRGlhbG9nIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMg
dG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAg
IC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcigpCisg
ICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5Hb1RvTGluZURpYWxvZy5TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc05hbWUgPSAiZ28tdG8tbGluZS1kaWFsb2ciOwogCiAgICAgICAgIHZhciBm
aWVsZCA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikpOwogCkBAIC00NywyNiArNDgsMTggQEAgV2ViSW5zcGVjdG9yLkdvVG9MaW5lRGlhbG9n
ID0gZnVuY3Rpb24oKQogICAgICAgICB0aGlzLl9jbGVhckljb24uYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9kaXNtaXNzaW5nID0gZmFsc2U7Ci19Owot
Ci1XZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cuU3R5bGVDbGFzc05hbWUgPSAiZ28tdG8tbGlu
ZS1kaWFsb2ciOwotV2ViSW5zcGVjdG9yLkdvVG9MaW5lRGlhbG9nLk5vbkVtcHR5Q2xhc3NOYW1l
ID0gIm5vbi1lbXB0eSI7Ci0KLVdlYkluc3BlY3Rvci5Hb1RvTGluZURpYWxvZy5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Hb1RvTGluZURpYWxvZywKLQotICAg
IF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKLSAgICBwcmVzZW50OiBmdW5jdGlvbihwYXJlbnQpCisgICAgcHJlc2VudChw
YXJlbnQpCiAgICAgewogICAgICAgICBwYXJlbnQuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCk7
CiAgICAgICAgIHRoaXMuX2lucHV0LmZvY3VzKCk7CiAgICAgICAgIHRoaXMuX2NsZWFyKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBkaXNtaXNzOiBmdW5jdGlvbigpCisgICAgZGlzbWlzcygpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fZGlzbWlzc2luZykKICAgICAgICAgICAgIHJldHVybjsK
QEAgLTgzLDExICs3NiwxMSBAQCBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5kZWxlZ2F0ZS5nb1RvTGluZURpYWxvZ1dhc0Rpc21pc3Nl
ZCh0aGlzKTsKIAogICAgICAgICB0aGlzLl9kaXNtaXNzaW5nID0gZmFsc2U7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVu
dCkKKyAgICBoYW5kbGVFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoZXZlbnQu
dHlwZSkgewogICAgICAgICBjYXNlICJpbnB1dCI6CkBAIC0xMDYsMTkgKzk5LDE5IEBAIFdlYklu
c3BlY3Rvci5Hb1RvTGluZURpYWxvZy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9o
YW5kbGVDbGlja0V2ZW50KGV2ZW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfaGFuZGxlSW5wdXRFdmVudDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZUlucHV0RXZlbnQoZXZlbnQpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5faW5wdXQudmFsdWUgPT09ICIiKQogICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Hb1RvTGluZURpYWxvZy5Ob25FbXB0
eUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cuTm9uRW1wdHlDbGFzc05hbWUp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZUtleWRvd25FdmVudDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2hhbmRsZUtleWRvd25FdmVudChldmVudCkKICAgICB7CiAgICAgICAgIGlmIChl
dmVudC5rZXlDb2RlID09PSBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBl
LmtleUNvZGUpIHsKICAgICAgICAgICAgIGlmICh0aGlzLl9pbnB1dC52YWx1ZSA9PT0gIiIpCkBA
IC0xNDEsMjkgKzEzNCwzMSBAQCBXZWJJbnNwZWN0b3IuR29Ub0xpbmVEaWFsb2cucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5faW5wdXQuc2VsZWN0KCk7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JGcm9udGVuZEhvc3QuYmVlcCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfaGFuZGxlQmx1ckV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlQmx1ckV2ZW50
KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNtaXNzKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGFuZGxlTW91c2Vkb3duRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVN
b3VzZWRvd25FdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2lucHV0LnNlbGVjdCgp
OwogICAgICAgICAvLyBUaGlzIGVuc3VyZXMgd2UgZG9uJ3QgZ2V0IGEgImJsdXIiIGV2ZW50IHRy
aWdnZXJlZCBmb3IgdGhlIHRleHQgZmllbGQKICAgICAgICAgLy8gd2hpY2ggd291bGQgZW5kIHVw
IGRpbWlzc2luZyB0aGUgZGlhbG9nLCB3aGljaCBpcyBub3QgdGhlIGludGVudC4KICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVDbGlj
a0V2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlQ2xpY2tFdmVudChldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2NsZWFyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXI6
IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXIoKQogICAgIHsKICAgICAgICAgdGhpcy5faW5wdXQudmFs
dWUgPSAiIjsKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5Hb1RvTGluZURpYWxvZy5Ob25FbXB0eUNsYXNzTmFtZSk7CiAgICAgfQogfTsKKworV2Vi
SW5zcGVjdG9yLkdvVG9MaW5lRGlhbG9nLk5vbkVtcHR5Q2xhc3NOYW1lID0gIm5vbi1lbXB0eSI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9H
cmFkaWVudFNsaWRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0dyYWRpZW50U2xpZGVyLmpzCmluZGV4IGRkNDEzNzMuLmM4ZTU5MWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRpZW50U2xpZGVy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0dyYWRp
ZW50U2xpZGVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjYsOCArMjYsMTIgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLkdyYWRpZW50U2xpZGVyID0gZnVuY3Rpb24oZGVsZWdhdGUpCitXZWJJbnNwZWN0b3Iu
R3JhZGllbnRTbGlkZXIgPSBjbGFzcyBHcmFkaWVudFNsaWRlciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKIHsKKyAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHN1
cGVyKCk7CisKICAgICAgICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogICAgICAgICAKICAg
ICAgICAgdGhpcy5fZWxlbWVudCA9IG51bGw7CkBAIC00MCwyNCArNDQsMTMgQEAgV2ViSW5zcGVj
dG9yLkdyYWRpZW50U2xpZGVyID0gZnVuY3Rpb24oZGVsZWdhdGUpCiAgICAgICAgIHRoaXMuX2tl
eWJvYXJkU2hvcnRjdXRFc2MgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVs
bCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVzY2FwZSk7CiAgICAgfQogCi1X
ZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuV2lkdGggPSAyMzg7Ci1XZWJJbnNwZWN0b3IuR3Jh
ZGllbnRTbGlkZXIuSGVpZ2h0ID0gMTk7Ci0KLVdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5T
dHlsZUNsYXNzTmFtZSA9ICJncmFkaWVudC1zbGlkZXIiOwotV2ViSW5zcGVjdG9yLkdyYWRpZW50
U2xpZGVyLkFkZEFyZWFDbGFzc05hbWUgPSAiYWRkLWFyZWEiOwotV2ViSW5zcGVjdG9yLkdyYWRp
ZW50U2xpZGVyLkRldGFjaGluZ0NsYXNzTmFtZSA9ICJkZXRhY2hpbmciOwotV2ViSW5zcGVjdG9y
LkdyYWRpZW50U2xpZGVyLlNoYWRvd0NsYXNzTmFtZSA9ICJzaGFkb3ciOwotCi1XZWJJbnNwZWN0
b3IuR3JhZGllbnRTbGlkZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuR3JhZGllbnRTbGlkZXIsCi0KICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZWxlbWVudCkgewogICAgICAgICAgICAgdGhp
cy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuU3R5
bGVDbGFzc05hbWU7CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJncmFk
aWVudC1zbGlkZXIiOwogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9jYW52YXMpOwogCiAgICAgICAgICAgICB0aGlzLl9hZGRBcmVhID0gdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CkBAIC02OCwyOCArNjEs
MjggQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX2FkZEFyZWEuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVy
LkFkZEFyZWFDbGFzc05hbWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1l
bnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3RvcHMoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3N0b3BzOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHN0b3BzKHN0b3BzKQog
ICAgIHsKICAgICAgICAgdGhpcy5fc3RvcHMgPSBzdG9wczsKIAogICAgICAgICB0aGlzLl91cGRh
dGVTdG9wcygpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGVkU3RvcCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRLbm9iID8gdGhpcy5fc2VsZWN0ZWRLbm9i
LnN0b3AgOiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBo
YW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlRXZlbnQoZXZlbnQpCiAgICAg
ewogICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKICAgICAgICAgY2FzZSAibW91c2VvdmVy
IjoKQEAgLTEwNSw5ICs5OCw5IEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9oYW5kbGVDbGljayhldmVudCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgaGFuZGxlS2V5ZG93bkV2
ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVLZXlkb3duRXZlbnQoZXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX2tleWJvYXJkU2hvcnRjdXRFc2MubWF0Y2hlc0V2ZW50KGV2
ZW50KSB8fCAhdGhpcy5fc2VsZWN0ZWRLbm9iIHx8ICF0aGlzLl9zZWxlY3RlZEtub2Iuc2VsZWN0
ZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMTUsMjEgKzEwOCwyMSBAQCBXZWJJ
bnNwZWN0b3IuR3JhZGllbnRTbGlkZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zZWxl
Y3RlZEtub2Iuc2VsZWN0ZWQgPSBmYWxzZTsKIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
LAorICAgIH0KIAotICAgIGtub2JYRGlkQ2hhbmdlOiBmdW5jdGlvbihrbm9iKQorICAgIGtub2JY
RGlkQ2hhbmdlKGtub2IpCiAgICAgewogICAgICAgICBrbm9iLnN0b3Aub2Zmc2V0ID0ga25vYi54
IC8gV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLldpZHRoOwogICAgICAgICB0aGlzLl9zb3J0
U3RvcHMoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlQ2FudmFzKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBrbm9iQ2FuRGV0YWNoOiBmdW5jdGlvbihrbm9iKQorICAgIGtub2JDYW5EZXRhY2goa25v
YikKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9rbm9icy5sZW5ndGggPiAyOwotICAgIH0s
CisgICAgfQogCi0gICAga25vYldpbGxEZXRhY2g6IGZ1bmN0aW9uKGtub2IpCisgICAga25vYldp
bGxEZXRhY2goa25vYikKICAgICB7CiAgICAgICAgIGtub2IuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5EZXRhY2hpbmdDbGFzc05hbWUpOwogICAgICAg
ICAKQEAgLTEzNyw5ICsxMzAsOSBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9rbm9icy5yZW1vdmUoa25vYik7CiAgICAgICAgIHRoaXMu
X3NvcnRTdG9wcygpOwogICAgICAgICB0aGlzLl91cGRhdGVDYW52YXMoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGtub2JTZWxlY3Rpb25DaGFuZ2VkOiBmdW5jdGlvbihrbm9iKQorICAgIGtub2JT
ZWxlY3Rpb25DaGFuZ2VkKGtub2IpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRL
bm9iICYmIHRoaXMuX3NlbGVjdGVkS25vYiAhPT0ga25vYiAmJiBrbm9iLnNlbGVjdGVkKQogICAg
ICAgICAgICAgdGhpcy5fc2VsZWN0ZWRLbm9iLnNlbGVjdGVkID0gZmFsc2U7CkBAIC0xNTMsMzAg
KzE0NiwzMCBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLmFkZFdpbmRvd0tleWRvd25MaXN0ZW5lcih0aGlzKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnJlbW92ZVdpbmRvd0tleWRvd25M
aXN0ZW5lcih0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9o
YW5kbGVNb3VzZW92ZXI6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVNb3VzZW92ZXIoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVTaGFkb3dLbm9iKGV2ZW50KTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZW1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9o
YW5kbGVNb3VzZW1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVTaGFkb3dL
bm9iKGV2ZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZW91dDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlb3V0KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl9zaGFkb3dLbm9iKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
X3NoYWRvd0tub2IuZWxlbWVudC5yZW1vdmUoKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX3NoYWRv
d0tub2I7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9oYW5kbGVDbGljayhldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNo
YWRvd0tub2IoZXZlbnQpOwogCkBAIC0xOTIsOSArMTg1LDkgQEAgV2ViSW5zcGVjdG9yLkdyYWRp
ZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fa25vYnNbdGhpcy5fc3RvcHMu
aW5kZXhPZihzdG9wKV0uc2VsZWN0ZWQgPSB0cnVlOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9z
aGFkb3dLbm9iOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVNoYWRvd0tub2I6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF91cGRhdGVTaGFkb3dLbm9iKGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9zaGFkb3dLbm9iKSB7CiAgICAgICAgICAgICB0aGlzLl9zaGFkb3dLbm9iID0g
bmV3IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IodGhpcyk7CkBAIC0yMDYsMjIgKzE5
OSwyMiBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIucHJvdG90eXBlID0gewogCiAgICAg
ICAgIHZhciBjb2xvckRhdGEgPSB0aGlzLl9jYW52YXMuZ2V0Q29udGV4dCgiMmQiKS5nZXRJbWFn
ZURhdGEodGhpcy5fc2hhZG93S25vYi54IC0gMSwgMCwgMSwgMSkuZGF0YTsKICAgICAgICAgdGhp
cy5fc2hhZG93S25vYi53ZWxsQ29sb3IgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbG9yKFdlYkluc3Bl
Y3Rvci5Db2xvci5Gb3JtYXQuUkdCLCBbY29sb3JEYXRhWzBdLCBjb2xvckRhdGFbMV0sIGNvbG9y
RGF0YVsyXSwgY29sb3JEYXRhWzNdIC8gMjU1XSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc29y
dFN0b3BzOiBmdW5jdGlvbigpCisgICAgX3NvcnRTdG9wcygpCiAgICAgewogICAgICAgICB0aGlz
Ll9zdG9wcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKICAgICAgICAgICAgIHJldHVybiBhLm9mZnNl
dCAtIGIub2Zmc2V0OwogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVT
dG9wczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVTdG9wcygpCiAgICAgewogICAgICAgICB0aGlz
Ll91cGRhdGVDYW52YXMoKTsKICAgICAgICAgdGhpcy5fdXBkYXRlS25vYnMoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF91cGRhdGVDYW52YXM6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlQ2FudmFz
KCkKICAgICB7CiAgICAgICAgIHZhciB3ID0gV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLldp
ZHRoOwogICAgICAgICB2YXIgaCA9IFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5IZWlnaHQ7
CkBAIC0yNDAsOSArMjMzLDkgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0
ZS5ncmFkaWVudFNsaWRlclN0b3BzRGlkQ2hhbmdlID09PSAiZnVuY3Rpb24iKQogICAgICAgICAg
ICAgdGhpcy5kZWxlZ2F0ZS5ncmFkaWVudFNsaWRlclN0b3BzRGlkQ2hhbmdlKHRoaXMpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUtub2JzOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUtu
b2JzKCkKICAgICB7CiAgICAgICAgIHZhciBzZWxlY3RlZFN0b3AgPSB0aGlzLl9zZWxlY3RlZEtu
b2IgPyB0aGlzLl9zZWxlY3RlZEtub2Iuc3RvcCA6IG51bGw7CiAgICAgICAgIApAQCAtMjY0LDEw
ICsyNTcsMjEgQEAgV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIGtub2Iuc2VsZWN0ZWQgPSBzdG9wID09PSBzZWxlY3RlZFN0b3A7CiAgICAgICAg
IH0KICAgICB9Ci19Cit9OwogCi1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iID0gZnVu
Y3Rpb24oZGVsZWdhdGUpCitXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuV2lkdGggPSAyMzg7
CitXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXIuSGVpZ2h0ID0gMTk7CisKK1dlYkluc3BlY3Rv
ci5HcmFkaWVudFNsaWRlci5BZGRBcmVhQ2xhc3NOYW1lID0gImFkZC1hcmVhIjsKK1dlYkluc3Bl
Y3Rvci5HcmFkaWVudFNsaWRlci5EZXRhY2hpbmdDbGFzc05hbWUgPSAiZGV0YWNoaW5nIjsKK1dl
Ykluc3BlY3Rvci5HcmFkaWVudFNsaWRlci5TaGFkb3dDbGFzc05hbWUgPSAic2hhZG93IjsKKwor
V2ViSW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYiA9IGNsYXNzIEdyYWRpZW50U2xpZGVyS25v
YiBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKKyAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0
ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CisKICAgICAgICAgdGhpcy5feCA9IDA7CiAgICAg
ICAgIHRoaXMuX3kgPSAwOwogICAgICAgICB0aGlzLl9zdG9wID0gbnVsbDsKQEAgLTI3NSw3ICsy
NzksNyBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iID0gZnVuY3Rpb24oZGVsZWdh
dGUpCiAgICAgICAgIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIAogICAgICAgICB0aGlzLl9l
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVu
dC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLlN0eWxlQ2xhc3NO
YW1lOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJncmFkaWVudC1zbGlkZXIt
a25vYiI7CiAKICAgICAgICAgLy8gQ2hlY2tlcnMgcGF0dGVybi4KICAgICAgICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKSk7CkBAIC0yODMs
NjggKzI4Nyw2MSBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iID0gZnVuY3Rpb24o
ZGVsZWdhdGUpCiAgICAgICAgIHRoaXMuX3dlbGwgPSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKIAogICAgICAgICB0aGlzLl9lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9y
LkdyYWRpZW50U2xpZGVyS25vYi5TdHlsZUNsYXNzTmFtZSA9ICJncmFkaWVudC1zbGlkZXIta25v
YiI7Ci1XZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLlNlbGVjdGVkQ2xhc3NOYW1lID0g
InNlbGVjdGVkIjsKLVdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IuRmFkZU91dENsYXNz
TmFtZSA9ICJmYWRlLW91dCI7Ci0KLVdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJL
bm9iLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c3RvcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RvcDsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBzdG9wKHN0b3ApCiAgICAgewogICAgICAgICB0aGlzLndlbGxDb2xvciA9IHN0
b3AuY29sb3I7CiAgICAgICAgIHRoaXMuX3N0b3AgPSBzdG9wOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3g7Ci0gICAgfSwKKyAgICB9
CiAgICAgCiAgICAgc2V0IHgoeCkgewogICAgICAgICB0aGlzLl94ID0geDsKICAgICAgICAgdGhp
cy5fdXBkYXRlVHJhbnNmb3JtKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgeSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5feDsKLSAgICB9LAorICAgIH0KICAgICAKICAgICBzZXQg
eSh5KSB7CiAgICAgICAgIHRoaXMuX3kgPSB5OwogICAgICAgICB0aGlzLl91cGRhdGVUcmFuc2Zv
cm0oKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB3ZWxsQ29sb3IoY29sb3IpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fd2VsbENvbG9yOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHdlbGxDb2xvcihjb2xvcikKICAgICB7CiAgICAgICAgIHRoaXMuX3dlbGxDb2xvciA9IGNvbG9y
OwogICAgICAgICB0aGlzLl93ZWxsLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IGNvbG9yOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlk
ZXJLbm9iLlNlbGVjdGVkQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWxl
Y3RlZChzZWxlY3RlZCkKICAgICB7CkBAIC0zNTUsMTEgKzM1MiwxMSBAQCBXZWJJbnNwZWN0b3Iu
R3JhZGllbnRTbGlkZXJLbm9iLnByb3RvdHlwZSA9IHsKICAgICAgICAgCiAgICAgICAgIGlmICh0
aGlzLmRlbGVnYXRlICYmIHR5cGVvZiB0aGlzLmRlbGVnYXRlLmtub2JTZWxlY3Rpb25DaGFuZ2Vk
ID09PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhpcy5kZWxlZ2F0ZS5rbm9iU2VsZWN0aW9u
Q2hhbmdlZCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAg
aGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUV2ZW50KGV2ZW50KQogICAg
IHsKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCk7CkBAIC0zNzgsMTEgKzM3NSwxMSBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnRT
bGlkZXJLbm9iLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVRyYW5zaXRp
b25FbmQoZXZlbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9oYW5kbGVNb3VzZWRvd246IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9oYW5kbGVNb3VzZWRvd24oZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9t
b3ZlZCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9kZXRhY2hpbmcgPSBmYWxzZTsKQEAgLTM5Myw5
ICszOTAsOSBAQCBXZWJJbnNwZWN0b3IuR3JhZGllbnRTbGlkZXJLbm9iLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdGhpcy5fc3RhcnRYID0gdGhpcy54OwogICAgICAgICB0aGlzLl9zdGFydE1vdXNl
WCA9IGV2ZW50LnBhZ2VYOwogICAgICAgICB0aGlzLl9zdGFydE1vdXNlWSA9IGV2ZW50LnBhZ2VZ
OwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZU1vdXNlbW92ZTogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2hhbmRsZU1vdXNlbW92ZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciB3ID0gV2Vi
SW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyLldpZHRoOwogCkBAIC00MjEsOSArNDE4LDkgQEAgV2Vi
SW5zcGVjdG9yLkdyYWRpZW50U2xpZGVyS25vYi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLnkgPSBldmVudC5wYWdlWSAtIHRoaXMuX3N0YXJ0TW91c2VZOwogICAgICAgICBlbHNlIGlm
ICh0aGlzLmRlbGVnYXRlICYmIHR5cGVvZiB0aGlzLmRlbGVnYXRlLmtub2JYRGlkQ2hhbmdlID09
PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgdGhpcy5kZWxlZ2F0ZS5rbm9iWERpZENoYW5nZSh0
aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZXVwOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfaGFuZGxlTW91c2V1cChldmVudCkKICAgICB7CiAgICAgICAgIHdpbmRvdy5yZW1v
dmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLCB0cnVlKTsKICAgICAgICAgd2luZG93
LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLCB0cnVlKTsKQEAgLTQzNCwxNyAr
NDMxLDIwIEBAIFdlYkluc3BlY3Rvci5HcmFkaWVudFNsaWRlcktub2IucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5zZWxlY3RlZCA9IGZhbHNlOwogICAgICAgICB9IGVsc2UgaWYgKCF0
aGlzLl9tb3ZlZCkKICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSAhdGhpcy5zZWxlY3RlZDsK
LSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVUcmFuc2l0aW9uRW5kOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfaGFuZGxlVHJhbnNpdGlvbkVuZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
ZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgdGhpcyk7CiAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5HcmFkaWVudFNs
aWRlcktub2IuRmFkZU91dENsYXNzTmFtZSk7CiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmUo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVUcmFuc2Zvcm06IGZ1bmN0aW9uKCkKKyAg
ICBfdXBkYXRlVHJhbnNmb3JtKCkKICAgICB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS53
ZWJraXRUcmFuc2Zvcm0gPSAidHJhbnNsYXRlM2QoIiArIHRoaXMuX3ggKyAicHgsICIgKyB0aGlz
Ll95ICsgInB4LCAwKSI7CiAgICAgfQotfQorfTsKKworV2ViSW5zcGVjdG9yLkdyYWRpZW50U2xp
ZGVyS25vYi5TZWxlY3RlZENsYXNzTmFtZSA9ICJzZWxlY3RlZCI7CitXZWJJbnNwZWN0b3IuR3Jh
ZGllbnRTbGlkZXJLbm9iLkZhZGVPdXRDbGFzc05hbWUgPSAiZmFkZS1vdXQiOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2Fs
UGF0aENvbXBvbmVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0hpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuanMKaW5kZXggYWQxMzNhMi4uY2ZiNGYwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSGll
cmFyY2hpY2FsUGF0aENvbXBvbmVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LmpzCkBAIC0yMywxMCAr
MjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudCA9IGZ1bmN0aW9uKGRpc3BsYXlOYW1l
LCBzdHlsZUNsYXNzTmFtZXMsIHJlcHJlc2VudGVkT2JqZWN0LCB0ZXh0T25seSwgc2hvd1NlbGVj
dG9yQXJyb3dzKQorV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQgPSBjbGFz
cyBIaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAog
ewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1
YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihkaXNwbGF5TmFtZSwgc3R5bGVDbGFzc05hbWVzLCBy
ZXByZXNlbnRlZE9iamVjdCwgdGV4dE9ubHksIHNob3dTZWxlY3RvckFycm93cykKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgY29uc29sZS5hc3NlcnQoZGlzcGxheU5hbWUpOwog
ICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZUNsYXNzTmFtZXMpOwpAQCAtMzQsNyArMzUsNyBA
QCBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudCA9IGZ1bmN0aW9uKGRpc3Bs
YXlOYW1lLCBzdHlsZUNsYXNzTmFtZXMsCiAgICAgICAgIHRoaXMuX3JlcHJlc2VudGVkT2JqZWN0
ID0gcmVwcmVzZW50ZWRPYmplY3QgfHwgbnVsbDsKIAogICAgICAgICB0aGlzLl9lbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TdHlsZUNsYXNzTmFt
ZTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAiaGllcmFyY2hpY2FsLXBhdGgt
Y29tcG9uZW50IjsKIAogICAgICAgICBpZiAoIShzdHlsZUNsYXNzTmFtZXMgaW5zdGFuY2VvZiBB
cnJheSkpCiAgICAgICAgICAgICBzdHlsZUNsYXNzTmFtZXMgPSBbc3R5bGVDbGFzc05hbWVzXTsK
QEAgLTc5LDQ4ICs4MCwyNCBAQCBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVu
dCA9IGZ1bmN0aW9uKGRpc3BsYXlOYW1lLCBzdHlsZUNsYXNzTmFtZXMsCiAKICAgICAgICAgdGhp
cy5zZWxlY3RvckFycm93cyA9IHNob3dTZWxlY3RvckFycm93czsKICAgICAgICAgdGhpcy5kaXNw
bGF5TmFtZSA9IGRpc3BsYXlOYW1lOwotfTsKLQotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBh
dGhDb21wb25lbnQuU3R5bGVDbGFzc05hbWUgPSAiaGllcmFyY2hpY2FsLXBhdGgtY29tcG9uZW50
IjsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkhpZGRlblN0eWxlQ2xh
c3NOYW1lID0gImhpZGRlbiI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVu
dC5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQiOwotV2ViSW5zcGVjdG9yLkhp
ZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuSWNvbkVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJpY29u
IjsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlRleHRPbmx5U3R5bGVD
bGFzc05hbWUgPSAidGV4dC1vbmx5IjsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50LlNob3dTZWxlY3RvckFycm93c1N0eWxlQ2xhc3NOYW1lID0gInNob3ctc2VsZWN0b3It
YXJyb3dzIjsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlRpdGxlRWxl
bWVudFN0eWxlQ2xhc3NOYW1lID0gInRpdGxlIjsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQ
YXRoQ29tcG9uZW50LlRpdGxlQ29udGVudEVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50
IjsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlNlbGVjdG9yQXJyb3dz
RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdG9yLWFycm93cyI7Ci1XZWJJbnNwZWN0b3Iu
SGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TZXBhcmF0b3JFbGVtZW50U3R5bGVDbGFzc05hbWUg
PSAic2VwYXJhdG9yIjsKLQotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQu
TWluaW11bVdpZHRoID0gMzI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVu
dC5NaW5pbXVtV2lkdGhDb2xsYXBzZWQgPSAyNDsKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQ
YXRoQ29tcG9uZW50Lk1pbmltdW1XaWR0aEZvck9uZUNoYXJhY3RlclRydW5jYXRlZFRpdGxlID0g
NTQ7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TZWxlY3RvckFycm93
c1dpZHRoID0gMTI7Ci0KLVdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkV2
ZW50ID0gewotICAgIFNpYmxpbmdXYXNTZWxlY3RlZDogImhpZXJhcmNoaWNhbC1wYXRoLWNvbXBv
bmVudC1zaWJsaW5nLXdhcy1zZWxlY3RlZCIsCi0gICAgQ2xpY2tlZDogImhpZXJhcmNoaWNhbC1w
YXRoLWNvbXBvbmVudC1jbGlja2VkIgotfTsKLQotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBh
dGhDb21wb25lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
SGllcmFyY2hpY2FsUGF0aENvbXBvbmVudCwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAg
IGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHJlcHJlc2VudGVkT2JqZWN0KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9yZXByZXNlbnRlZE9iamVjdDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBkaXNwbGF5TmFtZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZGlzcGxheU5hbWUobmV3RGlzcGxheU5hbWUpCiAg
ICAgewpAQCAtMTMxLDEyICsxMDgsMTIgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhD
b21wb25lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IG5ld0Rp
c3BsYXlOYW1lOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnRUaXRsZUFuZFRleHQoKTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCB0cnVuY2F0ZWREaXNwbGF5TmFtZUxlbmd0aCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5ndGg7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgdHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5ndGgodHJ1bmNh
dGVkRGlzcGxheU5hbWVMZW5ndGgpCiAgICAgewpAQCAtMTQ4LDcgKzEyNSw3IEBAIFdlYkluc3Bl
Y3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fdHJ1bmNhdGVkRGlzcGxheU5hbWVMZW5ndGggPSB0cnVuY2F0ZWREaXNwbGF5TmFtZUxlbmd0
aDsKIAogICAgICAgICB0aGlzLl91cGRhdGVFbGVtZW50VGl0bGVBbmRUZXh0KCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgbWluaW11bVdpZHRoKCkKICAgICB7CkBAIC0xNTcsNyArMTM0LDcg
QEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAodGhpcy5zZWxlY3RvckFycm93cykKICAgICAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5NaW5pbXVtV2lkdGggKyBXZWJJbnNw
ZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TZWxlY3RvckFycm93c1dpZHRoOwogICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuTWluaW11
bVdpZHRoOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGZvcmNlZFdpZHRoKCkKICAgICB7CkBA
IC0xNjUsNyArMTQyLDcgQEAgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQu
cHJvdG90eXBlID0gewogICAgICAgICBpZiAodHlwZW9mIG1heFdpZHRoID09PSAic3RyaW5nIikK
ICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChtYXhXaWR0aCk7CiAgICAgICAgIHJldHVybiBu
dWxsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGZvcmNlZFdpZHRoKHdpZHRoKQogICAgIHsK
QEAgLTE4NCwxMiArMTYxLDEyIEBAIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9u
ZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuc2V0UHJv
cGVydHkoIndpZHRoIiwgTWF0aC5tYXgoMSwgd2lkdGgpICsgInB4Iik7CiAgICAgICAgIH0gZWxz
ZQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSgid2lkdGgi
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoaWRkZW4oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5IaWVyYXJj
aGljYWxQYXRoQ29tcG9uZW50LkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBoaWRkZW4oZmxhZykKICAgICB7CkBAIC0xOTcsMTIgKzE3NCwxMiBAQCBXZWJJ
bnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNh
bFBhdGhDb21wb25lbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkhpZXJh
cmNoaWNhbFBhdGhDb21wb25lbnQuSGlkZGVuU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGNvbGxhcHNlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21w
b25lbnQuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IGNvbGxhcHNlZChmbGFnKQogICAgIHsKQEAgLTIxMCwxMiArMTg3LDEyIEBAIFdlYkluc3BlY3Rv
ci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENv
bXBvbmVudC5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuSGllcmFyY2hp
Y2FsUGF0aENvbXBvbmVudC5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgc2VsZWN0b3JBcnJvd3MoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRo
Q29tcG9uZW50LlNob3dTZWxlY3RvckFycm93c1N0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCBzZWxlY3RvckFycm93cyhmbGFnKQogICAgIHsKQEAgLTIzMywzMSArMjEw
LDMxIEBAIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlNob3dTZWxlY3RvckFycm93c1N0eWxlQ2xh
c3NOYW1lKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByZXZpb3VzU2li
bGluZygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJldmlvdXNTaWJsaW5nOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IHByZXZpb3VzU2libGluZyhuZXdTbGlibGluZykKICAgICB7
CiAgICAgICAgIHRoaXMuX3ByZXZpb3VzU2libGluZyA9IG5ld1NsaWJsaW5nIHx8IG51bGw7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmV4dFNpYmxpbmcoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX25leHRTaWJsaW5nOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IG5leHRTaWJs
aW5nKG5ld1NsaWJsaW5nKQogICAgIHsKICAgICAgICAgdGhpcy5fbmV4dFNpYmxpbmcgPSBuZXdT
bGlibGluZyB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAg
X3VwZGF0ZUVsZW1lbnRUaXRsZUFuZFRleHQ6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRWxlbWVu
dFRpdGxlQW5kVGV4dCgpCiAgICAgewogICAgICAgICB2YXIgdHJ1bmNhdGVkRGlzcGxheU5hbWUg
PSB0aGlzLl9kaXNwbGF5TmFtZTsKICAgICAgICAgaWYgKHRoaXMuX3RydW5jYXRlZERpc3BsYXlO
YW1lTGVuZ3RoICYmIHRydW5jYXRlZERpc3BsYXlOYW1lLmxlbmd0aCA+IHRoaXMuX3RydW5jYXRl
ZERpc3BsYXlOYW1lTGVuZ3RoKQpAQCAtMjY1LDE2ICsyNDIsMTYgQEAgV2ViSW5zcGVjdG9yLkhp
ZXJhcmNoaWNhbFBhdGhDb21wb25lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQudGl0bGUgPSB0aGlzLl9kaXNwbGF5TmFtZTsKICAgICAgICAgdGhpcy5fdGl0bGVDb250
ZW50RWxlbWVudC50ZXh0Q29udGVudCA9IHRydW5jYXRlZERpc3BsYXlOYW1lOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3VwZGF0ZVNlbGVjdEVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRl
U2VsZWN0RWxlbWVudCgpCiAgICAgewogICAgICAgICB0aGlzLl9zZWxlY3RFbGVtZW50LnJlbW92
ZUNoaWxkcmVuKCk7CiAKICAgICAgICAgZnVuY3Rpb24gY3JlYXRlT3B0aW9uKGNvbXBvbmVudCkK
ICAgICAgICAgewogICAgICAgICAgICAgdmFyIG9wdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJvcHRpb24iKTsKLSAgICAgICAgICAgIGNvbnN0IG1heFBvcHVwTWVudUxlbmd0
aCA9IDEzMDsgLy8gPHJkYXI6Ly9wcm9ibGVtLzEzNDQ1Mzc0PiA8c2VsZWN0PiB3aXRoIHZlcnkg
bG9uZyBvcHRpb24gaGFzIGNsaXBwZWQgdGV4dCBhbmQgcG9wdXAgbWVudSBpcyBzdGlsbCB2ZXJ5
IHdpZGUKKyAgICAgICAgICAgIHZhciBtYXhQb3B1cE1lbnVMZW5ndGggPSAxMzA7IC8vIDxyZGFy
Oi8vcHJvYmxlbS8xMzQ0NTM3ND4gPHNlbGVjdD4gd2l0aCB2ZXJ5IGxvbmcgb3B0aW9uIGhhcyBj
bGlwcGVkIHRleHQgYW5kIHBvcHVwIG1lbnUgaXMgc3RpbGwgdmVyeSB3aWRlCiAgICAgICAgICAg
ICBvcHRpb25FbGVtZW50LnRleHRDb250ZW50ID0gY29tcG9uZW50LmRpc3BsYXlOYW1lLmxlbmd0
aCA8PSBtYXhQb3B1cE1lbnVMZW5ndGggPyBjb21wb25lbnQuZGlzcGxheU5hbWUgOiBjb21wb25l
bnQuZGlzcGxheU5hbWUuc3Vic3RyaW5nKDAsIG1heFBvcHVwTWVudUxlbmd0aCkgKyAiXHUyMDI2
IjsKICAgICAgICAgICAgIG9wdGlvbkVsZW1lbnQuX3BhdGhDb21wb25lbnQgPSBjb21wb25lbnQ7
CiAgICAgICAgICAgICByZXR1cm4gb3B0aW9uRWxlbWVudDsKQEAgLTMwNywzNCArMjg0LDUyIEBA
IFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX3NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IC0xOwogICAgICAg
ICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSBw
cmV2aW91c1NpYmxpbmdDb3VudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWxlY3RFbGVtZW50
TW91c2VPdmVyOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2VsZWN0RWxlbWVudE1vdXNlT3Zlcihl
dmVudCkKICAgICB7CiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5tb3VzZU92ZXIgPT09ICJmdW5j
dGlvbiIpCiAgICAgICAgICAgICB0aGlzLm1vdXNlT3ZlcigpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3NlbGVjdEVsZW1lbnRNb3VzZU91dDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NlbGVjdEVs
ZW1lbnRNb3VzZU91dChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5tb3Vz
ZU91dCA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMubW91c2VPdXQoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9zZWxlY3RFbGVtZW50TW91c2VEb3duOiBmdW5jdGlvbihldmVudCkK
KyAgICBfc2VsZWN0RWxlbWVudE1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZVNlbGVjdEVsZW1lbnQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZWxlY3RFbGVt
ZW50TW91c2VVcDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NlbGVjdEVsZW1lbnRNb3VzZVVwKGV2
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuRXZlbnQuQ2xpY2tlZCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfc2VsZWN0RWxlbWVudFNlbGVjdGlvbkNoYW5nZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9zZWxlY3RFbGVtZW50U2VsZWN0aW9uQ2hhbmdlZChldmVudCkKICAgICB7CiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5IaWVyYXJj
aGljYWxQYXRoQ29tcG9uZW50LkV2ZW50LlNpYmxpbmdXYXNTZWxlY3RlZCwge3BhdGhDb21wb25l
bnQ6IHRoaXMuX3NlbGVjdEVsZW1lbnRbdGhpcy5fc2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4
XS5fcGF0aENvbXBvbmVudH0pOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5IaWVyYXJjaGlj
YWxQYXRoQ29tcG9uZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkhpZGRl
blN0eWxlQ2xhc3NOYW1lID0gImhpZGRlbiI7CitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0
aENvbXBvbmVudC5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQiOworV2ViSW5z
cGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuSWNvbkVsZW1lbnRTdHlsZUNsYXNzTmFt
ZSA9ICJpY29uIjsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlRleHRP
bmx5U3R5bGVDbGFzc05hbWUgPSAidGV4dC1vbmx5IjsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGlj
YWxQYXRoQ29tcG9uZW50LlNob3dTZWxlY3RvckFycm93c1N0eWxlQ2xhc3NOYW1lID0gInNob3ct
c2VsZWN0b3ItYXJyb3dzIjsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50
LlRpdGxlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInRpdGxlIjsKK1dlYkluc3BlY3Rvci5IaWVy
YXJjaGljYWxQYXRoQ29tcG9uZW50LlRpdGxlQ29udGVudEVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9
ICJjb250ZW50IjsKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LlNlbGVj
dG9yQXJyb3dzRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdG9yLWFycm93cyI7CitXZWJJ
bnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TZXBhcmF0b3JFbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAic2VwYXJhdG9yIjsKKworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhD
b21wb25lbnQuTWluaW11bVdpZHRoID0gMzI7CitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0
aENvbXBvbmVudC5NaW5pbXVtV2lkdGhDb2xsYXBzZWQgPSAyNDsKK1dlYkluc3BlY3Rvci5IaWVy
YXJjaGljYWxQYXRoQ29tcG9uZW50Lk1pbmltdW1XaWR0aEZvck9uZUNoYXJhY3RlclRydW5jYXRl
ZFRpdGxlID0gNTQ7CitXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5TZWxl
Y3RvckFycm93c1dpZHRoID0gMTI7CisKK1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50LkV2ZW50ID0geworICAgIFNpYmxpbmdXYXNTZWxlY3RlZDogImhpZXJhcmNoaWNhbC1w
YXRoLWNvbXBvbmVudC1zaWJsaW5nLXdhcy1zZWxlY3RlZCIsCisgICAgQ2xpY2tlZDogImhpZXJh
cmNoaWNhbC1wYXRoLWNvbXBvbmVudC1jbGlja2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0
aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hp
ZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5qcwppbmRleCBkZWZhYzU5Li5lMGU4NTgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9IaWVy
YXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MywyOCArMjMsMjEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24o
aWRlbnRpZmllciwgY29tcG9uZW50cykgewotICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRl
bS5jYWxsKHRoaXMsIGlkZW50aWZpZXIpOworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhO
YXZpZ2F0aW9uSXRlbSA9IGNsYXNzIEhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbSBleHRl
bmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbQoreworICAgIGNvbnN0cnVjdG9yKGlkZW50
aWZpZXIsIGNvbXBvbmVudHMpCisgICAgeworICAgICAgICBzdXBlcihpZGVudGlmaWVyKTsKIAog
ICAgICAgICB0aGlzLmNvbXBvbmVudHMgPSBjb21wb25lbnRzOwotfTsKLQotV2ViSW5zcGVjdG9y
LkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZSA9ICJoaWVyYXJj
aGljYWwtcGF0aCI7Ci1XZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVt
LkFsd2F5c1Nob3dMYXN0UGF0aENvbXBvbmVudFNlcGFyYXRvclN0eWxlQ2xhc3NOYW1lID0gImFs
d2F5cy1zaG93LWxhc3QtcGF0aC1jb21wb25lbnQtc2VwYXJhdG9yIjsKLQotV2ViSW5zcGVjdG9y
LkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5FdmVudCA9IHsKLSAgICBQYXRoQ29tcG9u
ZW50V2FzU2VsZWN0ZWQ6ICJoaWVyYXJjaGljYWwtcGF0aC1uYXZpZ2F0aW9uLWl0ZW0tcGF0aC1j
b21wb25lbnQtd2FzLXNlbGVjdGVkIgotfTsKLQotV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBh
dGhOYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0sCisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKICAgICBnZXQgY29tcG9uZW50cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
Y29tcG9uZW50czsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBjb21wb25lbnRzKG5ld0NvbXBv
bmVudHMpCiAgICAgewpAQCAtNjksMTcgKzYyLDE3IEBAIFdlYkluc3BlY3Rvci5IaWVyYXJjaGlj
YWxQYXRoTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICAvLyBVcGRhdGUgbGF5
b3V0IGZvciB0aGUgc28gb3RoZXIgaXRlbXMgY2FuIGFkanVzdCB0byB0aGUgZXh0cmEgc3BhY2Ug
KG9yIGxhY2sgdGhlcmVvZikgdG9vLgogICAgICAgICBpZiAodGhpcy5wYXJlbnROYXZpZ2F0aW9u
QmFyKQogICAgICAgICAgICAgdGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dFNv
b24oKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsYXN0Q29tcG9uZW50KCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRzLmxhc3RWYWx1ZSB8fCBudWxsOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGFsd2F5c1Nob3dMYXN0UGF0aENvbXBvbmVudFNlcGFyYXRvcigp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhX
ZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLkFsd2F5c1Nob3dMYXN0
UGF0aENvbXBvbmVudFNlcGFyYXRvclN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCBhbHdheXNTaG93TGFzdFBhdGhDb21wb25lbnRTZXBhcmF0b3IoZmxhZykKICAgICB7
CkBAIC04Nyw5ICs4MCw5IEBAIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlv
bkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5BbHdheXNTaG93
TGFzdFBhdGhDb21wb25lbnRTZXBhcmF0b3JTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5I
aWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uQWx3YXlzU2hvd0xhc3RQYXRoQ29tcG9uZW50
U2VwYXJhdG9yU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5
b3V0OiBmdW5jdGlvbihleHBhbmRPbmx5KQorICAgIHVwZGF0ZUxheW91dChleHBhbmRPbmx5KQog
ICAgIHsKICAgICAgICAgdmFyIG5hdmlnYXRpb25CYXIgPSB0aGlzLnBhcmVudE5hdmlnYXRpb25C
YXI7CiAgICAgICAgIGlmICghbmF2aWdhdGlvbkJhcikKQEAgLTIyMiwxNiArMjE1LDI1IEBAIFdl
Ykluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewog
CiAgICAgICAgIC8vIFNldCB0aGUgdG9vbCB0aXAgb2YgdGhlIGNvbGxhcHNlZCBjb21wb25lbnQu
CiAgICAgICAgIHRoaXMuX2NvbGxhcHNlZENvbXBvbmVudC5lbGVtZW50LnRpdGxlID0gaGlkZGVu
RGlzcGxheU5hbWVzLmpvaW4oIlxuIik7Ci0gICAgfSwKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0
ZWQKKworICAgIGdldCBhZGRpdGlvbmFsQ2xhc3NOYW1lcygpCisgICAgeworICAgICAgICByZXR1
cm4gWyJoaWVyYXJjaGljYWwtcGF0aCJdOworICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF9hZGRpdGlvbmFsQ2xhc3NOYW1lczogW1dlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2
aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWVdLAotCi0gICAgX3NpYmxpbmdQYXRoQ29tcG9uZW50
V2FzU2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zaWJsaW5nUGF0aENvbXBvbmVudFdh
c1NlbGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5FdmVudC5Q
YXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQsIGV2ZW50LmRhdGEpOwogICAgIH0KIH07CiAKLVdlYklu
c3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3Iu
SGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLkFsd2F5c1Nob3dMYXN0UGF0aENvbXBvbmVu
dFNlcGFyYXRvclN0eWxlQ2xhc3NOYW1lID0gImFsd2F5cy1zaG93LWxhc3QtcGF0aC1jb21wb25l
bnQtc2VwYXJhdG9yIjsKKworV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9u
SXRlbS5FdmVudCA9IHsKKyAgICBQYXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQ6ICJoaWVyYXJjaGlj
YWwtcGF0aC1uYXZpZ2F0aW9uLWl0ZW0tcGF0aC1jb21wb25lbnQtd2FzLXNlbGVjdGVkIgorfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hv
dmVyTWVudS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0hv
dmVyTWVudS5qcwppbmRleCBiOWJhZjIyLi5lNWVkYjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ib3Zlck1lbnUuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSG92ZXJNZW51LmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNSAr
MjMsMTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuSG92ZXJNZW51ID0gZnVuY3Rpb24oZGVsZWdhdGUpCitXZWJJbnNwZWN0b3IuSG92
ZXJNZW51ID0gY2xhc3MgSG92ZXJNZW51IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewot
ICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNs
YXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7
CiAKICAgICAgICAgdGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCiAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUuU3R5bGVDbGFzc05hbWU7CisgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImhvdmVyLW1lbnUiOwogICAgICAgICB0aGlz
Ll9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCB0aGlzLCB0cnVlKTsK
IAogICAgICAgICB0aGlzLl9vdXRsaW5lRWxlbWVudCA9IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIs
ICJzdmciKSk7CkBAIC00MCwyMSArNDEsMTQgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudSA9IGZ1
bmN0aW9uKGRlbGVnYXRlKQogICAgICAgICB0aGlzLl9idXR0b24uYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzKTsKICAgICB9CiAKLVdlYkluc3BlY3Rvci5Ib3Zlck1lbnUuU3R5bGVDbGFz
c05hbWUgPSAiaG92ZXItbWVudSI7Ci1XZWJJbnNwZWN0b3IuSG92ZXJNZW51LlZpc2libGVDbGFz
c05hbWUgPSAidmlzaWJsZSI7Ci0KLVdlYkluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSG92ZXJNZW51LAotICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCi0KICAgICAvLyBQdWJsaWMKIAogICAg
IGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAg
IH0sCisgICAgfQogCi0gICAgcHJlc2VudDogZnVuY3Rpb24ocmVjdHMpCisgICAgcHJlc2VudChy
ZWN0cykKICAgICB7CiAgICAgICAgIHRoaXMuX291dGxpbmVFbGVtZW50LnRleHRDb250ZW50ID0g
IiI7CiAKQEAgLTYzLDkgKzU3LDkgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSG92
ZXJNZW51LlZpc2libGVDbGFzc05hbWUpOwogCiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCJzY3JvbGwiLCB0aGlzLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRpc21pc3M6
IGZ1bmN0aW9uKGRpc2NyZXRlKQorICAgIGRpc21pc3MoZGlzY3JldGUpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlICE9PSBkb2N1bWVudC5ib2R5KQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNzYsMTEgKzcwLDExIEBAIFdlYkluc3BlY3Rvci5Ib3Zlck1lbnUu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2Vi
SW5zcGVjdG9yLkhvdmVyTWVudS5WaXNpYmxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB3aW5kb3cu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcywgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkK
KyAgICBoYW5kbGVFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlw
ZSkgewogICAgICAgICBjYXNlICJzY3JvbGwiOgpAQCAtOTUsMTcgKzg5LDE3IEBAIFdlYkluc3Bl
Y3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQucmVtb3ZlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgIH0sCisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2hhbmRsZUNsaWNrRXZlbnQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9oYW5kbGVDbGlja0V2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuaG92ZXJNZW51QnV0dG9uV2FzUHJl
c3NlZCA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUuaG92ZXJNZW51
QnV0dG9uV2FzUHJlc3NlZCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kcmF3T3V0bGlu
ZTogZnVuY3Rpb24ocmVjdHMpCisgICAgX2RyYXdPdXRsaW5lKHJlY3RzKQogICAgIHsKICAgICAg
ICAgdmFyIGJ1dHRvbldpZHRoID0gdGhpcy5fYnV0dG9uLndpZHRoOwogICAgICAgICB2YXIgYnV0
dG9uSGVpZ2h0ID0gdGhpcy5fYnV0dG9uLmhlaWdodDsKQEAgLTEzNSwxMSArMTI5LDExIEBAIFdl
Ykluc3BlY3Rvci5Ib3Zlck1lbnUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2J1dHRv
bi5zdHlsZS5sZWZ0ID0gKGxhc3RSZWN0Lm1heFgoKSAtIGJvdW5kcy5taW5YKCkgLSBidXR0b25X
aWR0aCkgKyAicHgiOwogICAgICAgICB0aGlzLl9idXR0b24uc3R5bGUudG9wID0gKGxhc3RSZWN0
Lm1heFkoKSAtIGJvdW5kcy5taW5ZKCkgLSBidXR0b25IZWlnaHQpICsgInB4IjsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9hZGRSZWN0OiBmdW5jdGlvbihyZWN0KQorICAgIF9hZGRSZWN0KHJlY3Qp
CiAgICAgewotICAgICAgICBjb25zdCByID0gNDsKKyAgICAgICAgdmFyIHIgPSA0OwogCiAgICAg
ICAgIHZhciBzdmdSZWN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2ZyIsICJyZWN0Iik7CiAgICAgICAgIHN2Z1JlY3Quc2V0QXR0cmlidXRlKCJ4
IiwgMSk7CkBAIC0xNDksMjQgKzE0MywyNCBAQCBXZWJJbnNwZWN0b3IuSG92ZXJNZW51LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgc3ZnUmVjdC5zZXRBdHRyaWJ1dGUoInJ4Iiwgcik7CiAgICAgICAg
IHN2Z1JlY3Quc2V0QXR0cmlidXRlKCJyeSIsIHIpOwogICAgICAgICByZXR1cm4gdGhpcy5fb3V0
bGluZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc3ZnUmVjdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
YWRkUGF0aDogZnVuY3Rpb24oY29tbWFuZHMsIHR4LCB0eSkKKyAgICBfYWRkUGF0aChjb21tYW5k
cywgdHgsIHR5KQogICAgIHsKICAgICAgICAgdmFyIHBhdGggPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwgInBhdGgiKTsKICAgICAgICAgcGF0
aC5zZXRBdHRyaWJ1dGUoImQiLCBjb21tYW5kcy5qb2luKCIgIikpOwogICAgICAgICBwYXRoLnNl
dEF0dHJpYnV0ZSgidHJhbnNmb3JtIiwgInRyYW5zbGF0ZSgiICsgKHR4ICsgMSkgKyAiLCIgKyAo
dHkgKyAxKSArICIpIik7CiAgICAgICAgIHJldHVybiB0aGlzLl9vdXRsaW5lRWxlbWVudC5hcHBl
bmRDaGlsZChwYXRoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kcmF3U2luZ2xlTGluZTogZnVu
Y3Rpb24ocmVjdCkKKyAgICBfZHJhd1NpbmdsZUxpbmUocmVjdCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2FkZFJlY3QocmVjdC5wYWQoMikpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RyYXdUd29O
b25PdmVybGFwcGluZ0xpbmVzOiBmdW5jdGlvbihyZWN0cykKKyAgICBfZHJhd1R3b05vbk92ZXJs
YXBwaW5nTGluZXMocmVjdHMpCiAgICAgewotICAgICAgICBjb25zdCByID0gNDsKKyAgICAgICAg
dmFyIHIgPSA0OwogCiAgICAgICAgIHZhciBmaXJzdFJlY3QgPSByZWN0c1swXS5wYWQoMik7CiAg
ICAgICAgIHZhciBzZWNvbmRSZWN0ID0gcmVjdHNbMV0ucGFkKDIpOwpAQCAtMTkzLDEyICsxODcs
MTIgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAi
cSIsIDAsIHIsIC1yLCByLAogICAgICAgICAgICAgIkgiLCByZWN0Lm1pblgoKQogICAgICAgICBd
LCB0eCwgdHkpOwotICAgIH0sCisgICAgfQogICAgIAotICAgIF9kcmF3T3ZlcmxhcHBpbmdMaW5l
czogZnVuY3Rpb24ocmVjdHMpCisgICAgX2RyYXdPdmVybGFwcGluZ0xpbmVzKHJlY3RzKQogICAg
IHsKLSAgICAgICAgY29uc3QgUEFERElORyA9IDI7Ci0gICAgICAgIGNvbnN0IHIgPSA0OworICAg
ICAgICB2YXIgUEFERElORyA9IDI7CisgICAgICAgIHZhciByID0gNDsKIAogICAgICAgICB2YXIg
bWluWCA9IE51bWJlci5NQVhfVkFMVUU7CiAgICAgICAgIHZhciBtYXhYID0gLU51bWJlci5NQVhf
VkFMVUU7CkBAIC0yMTksNyArMjEzLDcgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRkUmVjdChuZXcgV2ViSW5zcGVjdG9y
LlJlY3QobWluWCwgbWluWSwgbWF4WCAtIG1pblgsIG1heFkgLSBtaW5ZKSk7CiAgICAgICAgIAog
ICAgICAgICB2YXIgbGFzdExpbmVNaW5ZID0gcmVjdHMubGFzdFZhbHVlLm1pblkoKSArIFBBRERJ
Tkc7Ci0gICAgICAgIGlmIChyZWN0c1swXS5taW5YKCkgPT09IG1pblggKyBQQURESU5HKQorICAg
ICAgICBpZiAocmVjdHNbMF0ubWluWCgpID09PSBtaW5YICsgUEFERElORykgewogICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2FkZFBhdGgoWwogICAgICAgICAgICAgICAgICJNIiwgbWluWCArIHIs
IG1pblksCiAgICAgICAgICAgICAgICAgIkgiLCBtYXhYIC0gciwKQEAgLTIzNSw5ICsyMjksMTAg
QEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
IlYiLCBtaW5ZICsgciwKICAgICAgICAgICAgICAgICAicSIsIDAsIC1yLCByLCAtcgogICAgICAg
ICAgICAgXSwgLW1pblgsIC1taW5ZKTsKKyAgICAgICAgfQogCiAgICAgICAgIHZhciBmaXJzdExp
bmVNYXhZID0gcmVjdHNbMF0ubWF4WSgpIC0gUEFERElORzsKLSAgICAgICAgaWYgKHJlY3RzLmxh
c3RWYWx1ZS5tYXhYKCkgPT09IG1heFggLSBQQURESU5HKQorICAgICAgICBpZiAocmVjdHMubGFz
dFZhbHVlLm1heFgoKSA9PT0gbWF4WCAtIFBBRERJTkcpIHsKICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9hZGRQYXRoKFsKICAgICAgICAgICAgICAgICAiTSIsIGZpcnN0TGluZU1pblggKyByLCBt
aW5ZLAogICAgICAgICAgICAgICAgICJIIiwgbWF4WCAtIHIsCkBAIC0yNTMsNiArMjQ4LDcgQEAg
V2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgIlYi
LCBtaW5ZICsgciwKICAgICAgICAgICAgICAgICAicSIsIDAsIC1yLCByLCAtcgogICAgICAgICAg
ICAgXSwgLW1pblgsIC1taW5ZKTsKKyAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0aGlzLl9h
ZGRQYXRoKFsKICAgICAgICAgICAgICJNIiwgZmlyc3RMaW5lTWluWCArIHIsIG1pblksCkBAIC0y
NzQsNCArMjcwLDYgQEAgV2ViSW5zcGVjdG9yLkhvdmVyTWVudS5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICAicSIsIDAsIC1yLCByLCAtcgogICAgICAgICBdLCAtbWluWCwgLW1pblkpOwogICAg
IH0KLX0KK307CisKK1dlYkluc3BlY3Rvci5Ib3Zlck1lbnUuVmlzaWJsZUNsYXNzTmFtZSA9ICJ2
aXNpYmxlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0ltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5qcwppbmRleCAy
Nzk2NzhjLi45ZGVlNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9JbWFnZVJlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywyNiArMjMsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24o
cmVzb3VyY2UpCitXZWJJbnNwZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3Mg
SW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29u
dGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5jYWxsKHRo
aXMsIHJlc291cmNlLCBXZWJJbnNwZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LlN0eWxl
Q2xhc3NOYW1lKTsKKyAgICBjb25zdHJ1Y3RvcihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHN1
cGVyKHJlc291cmNlLCAiaW1hZ2UiKTsKIAogICAgICAgICB0aGlzLl9pbWFnZUVsZW1lbnQgPSBu
dWxsOwotfTsKLQotV2ViSW5zcGVjdG9yLkltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5TdHlsZUNs
YXNzTmFtZSA9ICJpbWFnZSI7Ci0KLVdlYkluc3BlY3Rvci5JbWFnZVJlc291cmNlQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW1hZ2VSZXNv
dXJjZUNvbnRlbnRWaWV3LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGltYWdl
RWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW1hZ2VFbGVtZW50OwotICAg
IH0sCisgICAgfQogCi0gICAgY29udGVudEF2YWlsYWJsZTogZnVuY3Rpb24oY29udGVudCwgYmFz
ZTY0RW5jb2RlZCkKKyAgICBjb250ZW50QXZhaWxhYmxlKGNvbnRlbnQsIGJhc2U2NEVuY29kZWQp
CiAgICAgewogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtNTQs
NSArNTEsMyBAQCBXZWJJbnNwZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ltYWdlRWxlbWVu
dCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuanMK
aW5kZXggNWJmMmQ3Ni4uNTJhMGY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRldGVybWluYXRl
UHJvZ3Jlc3NTcGlubmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMywxOSArMjMsMTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSW5kZXRlcm1pbmF0ZVByb2dyZXNz
U3Bpbm5lciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NT
cGlubmVyID0gY2xhc3MgSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lciBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5z
cGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNw
ZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAg
ICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3Iu
SW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5TdHlsZUNsYXNzTmFtZTsKLX07Ci0KLVdlYklu
c3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLlN0eWxlQ2xhc3NOYW1lID0gImlu
ZGV0ZXJtaW5hdGUtcHJvZ3Jlc3Mtc3Bpbm5lciI7Ci0KLVdlYkluc3BlY3Rvci5JbmRldGVybWlu
YXRlUHJvZ3Jlc3NTcGlubmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIsCisgICAgICAgIHRoaXMuX2VsZW1l
bnQuY2xhc3NOYW1lID0gImluZGV0ZXJtaW5hdGUtcHJvZ3Jlc3Mtc3Bpbm5lciI7CisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKQEAgLTQ0LDUgKzQwLDMgQEAgV2ViSW5zcGVjdG9yLkluZGV0ZXJt
aW5hdGVQcm9ncmVzc1NwaW5uZXIucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5f
ZWxlbWVudDsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuSW5kZXRlcm1pbmF0ZVByb2dyZXNz
U3Bpbm5lci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9JbmRleGVkRGF0YWJhc2VFbnRyeURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2Rl
LmpzCmluZGV4IGQ4MzlmZmMuLmRlMDJiZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2Rl
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4
ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2RlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMwICsyMywyOCBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0
YWJhc2VFbnRyeURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGVudHJ5KQorV2ViSW5zcGVjdG9yLklu
ZGV4ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2RlID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlRW50
cnlEYXRhR3JpZE5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlCiB7Ci0gICAg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIGVudHJ5KTsKKyAgICBjb25zdHJ1
Y3RvcihlbnRyeSkKKyAgICB7CisgICAgICAgIHN1cGVyKGVudHJ5KTsKIAogICAgICAgICB0aGlz
Ll9lbnRyeSA9IGVudHJ5OwotfTsKLQotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZUVudHJ5
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LkluZGV4ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2RlLAotICAgIF9fcHJvdG9fXzogV2ViSW5z
cGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAK
ICAgICBnZXQgZW50cnkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VudHJ5OwotICAg
IH0sCisgICAgfQogCi0gICAgY3JlYXRlQ2VsbENvbnRlbnQ6IGZ1bmN0aW9uKGNvbHVtbklkZW50
aWZpZXIsIGNlbGwpCisgICAgY3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwgY2Vs
bCkKICAgICB7CiAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuX2VudHJ5W2NvbHVtbklkZW50aWZp
ZXJdOwogICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0KQogICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRWYWx1ZS5jcmVh
dGVPYmplY3RUcmVlT3JGb3JtYXR0ZWRWYWx1ZUZvclJlbW90ZU9iamVjdCh2YWx1ZSwgbnVsbCwg
dHJ1ZSk7CiAKLSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90
eXBlLmNyZWF0ZUNlbGxDb250ZW50LmNhbGwodGhpcywgY29sdW1uSWRlbnRpZmllciwgY2VsbCk7
CisgICAgICAgIHJldHVybiBzdXBlci5jcmVhdGVDZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVy
LCBjZWxsKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlSG9z
dFRyZWVFbGVtZW50LmpzCmluZGV4IGQ2NDI0MzAuLjBiMjA1YmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZUhvc3RU
cmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9JbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQuanMKQEAgLTIzLDI1ICsyMywyMyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5JbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihob3N0KQorV2ViSW5z
cGVjdG9yLkluZGV4ZWREYXRhYmFzZUhvc3RUcmVlRWxlbWVudCA9IGNsYXNzIEluZGV4ZWREYXRh
YmFzZUhvc3RUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1l
bnQKIHsKLSAgICBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LmNhbGwodGhpcywgV2Vi
SW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50LkZvbGRlckljb25TdHlsZUNsYXNzTmFtZSwgV2Vi
SW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9ySG9zdChob3N0KSwgbnVsbCk7CisgICAgY29uc3RydWN0
b3IoaG9zdCkKKyAgICB7CisgICAgICAgIHN1cGVyKFdlYkluc3BlY3Rvci5Gb2xkZXJUcmVlRWxl
bWVudC5Gb2xkZXJJY29uU3R5bGVDbGFzc05hbWUsIFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZv
ckhvc3QoaG9zdCksIG51bGwpOwogCiAgICAgICAgIHRoaXMuX2hvc3QgPSBob3N0OwogCiAgICAg
ICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlOwotfTsKLQotV2ViSW5zcGVjdG9yLkluZGV4ZWRE
YXRhYmFzZUhvc3RUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAogICAgIGdldCBuYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJ
bnNwZWN0b3IuZGlzcGxheU5hbWVGb3JIb3N0KHRoaXMuX2hvc3QpOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGNhdGVnb3J5TmFtZSgpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVD
b250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZpZXcuanMKaW5kZXggOGQ0MzA2Ny4u
ODIzOWZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmpl
Y3RTdG9yZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDExICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmpl
Y3RTdG9yZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ob2JqZWN0U3RvcmVPckluZGV4KQorV2ViSW5z
cGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZpZXcgPSBjbGFzcyBJbmRl
eGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgb2Jq
ZWN0U3RvcmVPckluZGV4KTsKKyAgICBjb25zdHJ1Y3RvcihvYmplY3RTdG9yZU9ySW5kZXgpCisg
ICAgeworICAgICAgICBzdXBlcihvYmplY3RTdG9yZU9ySW5kZXgpOwogCi0gICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3Jl
Q29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUiKTsKIAogICAgICAgICBpZiAo
b2JqZWN0U3RvcmVPckluZGV4IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFz
ZU9iamVjdFN0b3JlKSB7CiAgICAgICAgICAgICB0aGlzLl9vYmplY3RTdG9yZSA9IG9iamVjdFN0
b3JlT3JJbmRleDsKQEAgLTczLDM4ICs3NSwzMiBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFi
YXNlT2JqZWN0U3RvcmVDb250ZW50VmlldyA9IGZ1bmN0aW9uKG9iamVjdFN0b3JlT3JJbmRleAog
ICAgICAgICB0aGlzLl9lbnRyaWVzID0gW107CiAKICAgICAgICAgdGhpcy5fZmV0Y2hNb3JlRGF0
YSgpOwotfTsKLQotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVu
dFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUiOwot
Ci1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VP
YmplY3RTdG9yZUNvbnRlbnRWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGNsb3NlZDog
ZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9yZXNldCgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAg
c2F2ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZTsK
ICAgICAgICAgY29va2llLnNlY3VyaXR5T3JpZ2luID0gdGhpcy5fb2JqZWN0U3RvcmUucGFyZW50
RGF0YWJhc2Uuc2VjdXJpdHlPcmlnaW47CiAgICAgICAgIGNvb2tpZS5kYXRhYmFzZU5hbWUgPSB0
aGlzLl9vYmplY3RTdG9yZS5wYXJlbnREYXRhYmFzZS5uYW1lOwogICAgICAgICBjb29raWUub2Jq
ZWN0U3RvcmVOYW1lID0gdGhpcy5fb2JqZWN0U3RvcmUubmFtZTsKICAgICAgICAgY29va2llLm9i
amVjdFN0b3JlSW5kZXhOYW1lID0gdGhpcy5fb2JqZWN0U3RvcmVJbmRleCAmJiB0aGlzLl9vYmpl
Y3RTdG9yZUluZGV4Lm5hbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1
bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUdy
aWQudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAg
ICBfcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVzZXQoKQogICAgIHsKICAgICAgICAgZm9yICh2
YXIgZW50cnkgb2YgdGhpcy5fZW50cmllcykgewogICAgICAgICAgICAgZW50cnkucHJpbWFyeUtl
eS5yZWxlYXNlKCk7CkBAIC0xMTQsMTcgKzExMCwxNyBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhp
cy5fZW50cmllcyA9IFtdOwogICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkU2Nyb2xsZWQ6IGZ1bmN0aW9uKCkKKyAg
ICBfZGF0YUdyaWRTY3JvbGxlZCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX21vcmVFbnRy
aWVzQXZhaWxhYmxlIHx8ICF0aGlzLl9kYXRhR3JpZC5pc1Njcm9sbGVkVG9MYXN0Um93KCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fZmV0Y2hNb3JlRGF0YSgpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2ZldGNoTW9yZURhdGE6IGZ1bmN0aW9uKCkKKyAgICBfZmV0Y2hN
b3JlRGF0YSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZmV0Y2hpbmdNb3JlRGF0YSkKICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxlbWVu
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWRE
YXRhYmFzZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxlbWVudC5qcwppbmRleCBlZWJkMWNhLi5jYTgx
MjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2Jq
ZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50LmpzCkBAIC0yMywyMiArMjMsMTggQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0U3RvcmVJ
bmRleCkKK1dlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVs
ZW1lbnQgPSBjbGFzcyBJbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4VHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0
b3Iob2JqZWN0U3RvcmVJbmRleCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9iamVj
dFN0b3JlSW5kZXggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0
U3RvcmVJbmRleCk7CiAKKyAgICAgICAgc3VwZXIoImRhdGFiYXNlLXRhYmxlLWljb24iLCBvYmpl
Y3RTdG9yZUluZGV4Lm5hbWUsIG51bGwsIG9iamVjdFN0b3JlSW5kZXgsIGZhbHNlKTsKKwogICAg
ICAgICB0aGlzLl9vYmplY3RTdG9yZUluZGV4ID0gb2JqZWN0U3RvcmVJbmRleDsKIAotICAgIFdl
Ykluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5JY29uU3R5bGVDbGFzc05hbWUsIG9i
amVjdFN0b3JlSW5kZXgubmFtZSwgbnVsbCwgb2JqZWN0U3RvcmVJbmRleCwgZmFsc2UpOwotCiAg
ICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwotfTsKLQotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRh
YmFzZU9iamVjdFN0b3JlSW5kZXhUcmVlRWxlbWVudC5JY29uU3R5bGVDbGFzc05hbWUgPSAiZGF0
YWJhc2UtdGFibGUtaWNvbiI7Ci0KLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RT
dG9yZUluZGV4VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleFRyZWVFbGVtZW50LAotICAg
IF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUsCisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1l
bnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVk
RGF0YWJhc2VPYmplY3RTdG9yZVRyZWVFbGVtZW50LmpzCmluZGV4IDhmOWM3YzEuLjc5OWI5YmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0lu
ZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVU
cmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywzOCArMjMsMzQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVU
cmVlRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVjdFN0b3JlKQorV2ViSW5zcGVjdG9yLkluZGV4ZWRE
YXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQgPSBjbGFzcyBJbmRleGVkRGF0YWJhc2VPYmpl
Y3RTdG9yZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dAoreworICAgIGNvbnN0cnVjdG9yKG9iamVjdFN0b3JlKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQob2JqZWN0U3RvcmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFi
YXNlT2JqZWN0U3RvcmUpOwogCisgICAgICAgIHN1cGVyKFdlYkluc3BlY3Rvci5JbmRleGVkRGF0
YWJhc2VPYmplY3RTdG9yZVRyZWVFbGVtZW50Lkljb25TdHlsZUNsYXNzTmFtZSwgb2JqZWN0U3Rv
cmUubmFtZSwgbnVsbCwgb2JqZWN0U3RvcmUsICEhdGhpcy5fb2JqZWN0U3RvcmUuaW5kZXhlcy5s
ZW5ndGgpOworCiAgICAgICAgIHRoaXMuX29iamVjdFN0b3JlID0gb2JqZWN0U3RvcmU7CiAKLSAg
ICBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9y
LkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1lbnQuSWNvblN0eWxlQ2xhc3NOYW1l
LCBvYmplY3RTdG9yZS5uYW1lLCBudWxsLCBvYmplY3RTdG9yZSwgISF0aGlzLl9vYmplY3RTdG9y
ZS5pbmRleGVzLmxlbmd0aCk7Ci0KICAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudC5JY29uU3R5
bGVDbGFzc05hbWUgPSAiZGF0YWJhc2UtdGFibGUtaWNvbiI7Ci0KLVdlYkluc3BlY3Rvci5JbmRl
eGVkRGF0YWJhc2VPYmplY3RTdG9yZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlVHJlZUVsZW1l
bnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3Rv
dHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBvYmplY3RTdG9yZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0U3RvcmU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBPdmVycmlkZXMgZnJvbSBUcmVlRWxlbWVudCAoUHJvdGVjdGVkKQogCi0gICAgb25j
b2xsYXBzZTogZnVuY3Rpb24oKQorICAgIG9uY29sbGFwc2UoKQogICAgIHsKICAgICAgICAgdGhp
cy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4gPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgb25w
b3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuY2hpbGRyZW4ubGVuZ3RoICYmICF0aGlzLnNob3VsZFJlZnJlc2hDaGlsZHJlbikKICAg
ICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1l
bnQuanMKaW5kZXggMGY3YjI2Ny4uYTk1OGM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERh
dGFiYXNlVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzcgKzIzLDM0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVF
bGVtZW50ID0gZnVuY3Rpb24oaW5kZXhlZERhdGFiYXNlKQorV2ViSW5zcGVjdG9yLkluZGV4ZWRE
YXRhYmFzZVRyZWVFbGVtZW50ID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3Io
aW5kZXhlZERhdGFiYXNlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXhlZERh
dGFiYXNlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZSk7CiAKICAgICAg
ICAgdGhpcy5faW5kZXhlZERhdGFiYXNlID0gaW5kZXhlZERhdGFiYXNlOwogCi0gICAgV2ViSW5z
cGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5JbmRleGVk
RGF0YWJhc2VUcmVlRWxlbWVudC5JY29uU3R5bGVDbGFzc05hbWUsIGluZGV4ZWREYXRhYmFzZS5u
YW1lLCBudWxsLCBpbmRleGVkRGF0YWJhc2UsICEhdGhpcy5faW5kZXhlZERhdGFiYXNlLm9iamVj
dFN0b3Jlcy5sZW5ndGgpOworICAgICAgICBzdXBlcigiZGF0YWJhc2UtaWNvbiIsIGluZGV4ZWRE
YXRhYmFzZS5uYW1lLCBudWxsLCBpbmRleGVkRGF0YWJhc2UsICEhdGhpcy5faW5kZXhlZERhdGFi
YXNlLm9iamVjdFN0b3Jlcy5sZW5ndGgpOwogCiAgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwot
fTsKLQotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50Lkljb25TdHlsZUNs
YXNzTmFtZSA9ICJkYXRhYmFzZS1pY29uIjsKLQotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFz
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LkluZGV4ZWREYXRhYmFzZVRyZWVFbGVtZW50LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAg
ICAgZ2V0IGluZGV4ZWREYXRhYmFzZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faW5k
ZXhlZERhdGFiYXNlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gT3ZlcnJpZGVzIGZyb20gVHJl
ZUVsZW1lbnQgKFByb3RlY3RlZCkKIAotICAgIG9uY29sbGFwc2U6IGZ1bmN0aW9uKCkKKyAgICBv
bmNvbGxhcHNlKCkKICAgICB7CiAgICAgICAgIHRoaXMuc2hvdWxkUmVmcmVzaENoaWxkcmVuID0g
dHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBv
bnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCAmJiAh
dGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4pCiAgICAgICAgICAgICByZXR1cm47CkBAIC02Niw1
ICs2MywzIEBAIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuSW5k
ZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVUcmVlRWxlbWVudChvYmplY3RTdG9yZSkpOwogICAgIH0K
IH07Ci0KLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXll
clRyZWVEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9MYXllclRyZWVEYXRhR3JpZE5vZGUuanMKaW5kZXggMTUxYTVhMy4uNjY0MDM5MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5
ZXJUcmVlRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0xheWVyVHJlZURhdGFHcmlkTm9kZS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDAgKzIzLDM5IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkxh
eWVyVHJlZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGxheWVyKQorV2ViSW5zcGVjdG9yLkxheWVy
VHJlZURhdGFHcmlkTm9kZSA9IGNsYXNzIExheWVyVHJlZURhdGFHcmlkTm9kZSBleHRlbmRzIFdl
Ykluc3BlY3Rvci5EYXRhR3JpZE5vZGUKIHsKLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2Rl
LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IobGF5ZXIpCisgICAgeworICAgICAgICBzdXBl
cigpOwogCiAgICAgICAgIHRoaXMuX291dGxldHMgPSB7fTsKIAogICAgICAgICB0aGlzLmxheWVy
ID0gbGF5ZXI7Ci19OwotCi1XZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGF0YUdyaWROb2RlLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZSwKKyAg
ICB9CiAKICAgICAvLyBEYXRhR3JpZE5vZGUgT3ZlcnJpZGVzLgogCi0gICAgY3JlYXRlQ2VsbHM6
IGZ1bmN0aW9uKCkKKyAgICBjcmVhdGVDZWxscygpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxscy5jYWxsKHRoaXMpOwogCiAgICAg
ICAgIHRoaXMuX2NlbGxzV2VyZUNyZWF0ZWQgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAg
Y3JlYXRlQ2VsbENvbnRlbnQ6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCisgICAg
Y3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCkKICAgICB7CiAgICAgICAg
IHZhciBjZWxsID0gY29sdW1uSWRlbnRpZmllciA9PT0gIm5hbWUiID8gdGhpcy5fbWFrZU5hbWVD
ZWxsKCkgOiB0aGlzLl9tYWtlT3V0bGV0KGNvbHVtbklkZW50aWZpZXIsIGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCkpOwogICAgICAgICB0aGlzLl91cGRhdGVDZWxsKGNvbHVtbklkZW50aWZpZXIp
OwogICAgICAgICByZXR1cm4gY2VsbDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IGxheWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9sYXllcjsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCBsYXllcihsYXllcikKICAgICB7CkBAIC02OSwxMiArNjgs
MTIgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBwYWludENvdW50OiBsYXllci5wYWludENvdW50IHx8ICJcdTIwMTQiLAogICAg
ICAgICAgICAgbWVtb3J5OiBOdW1iZXIuYnl0ZXNUb1N0cmluZyhsYXllci5tZW1vcnkgfHwgMCkK
ICAgICAgICAgfTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkYXRhKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9kYXRhOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRhdGEoZGF0
YSkKICAgICB7CkBAIC04NiwxNyArODUsMTcgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURhdGFH
cmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fY2VsbHNXZXJlQ3Jl
YXRlZCkKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDZWxsKGNvbHVtbklkZW50aWZpZXIp
OwogICAgICAgICB9LCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9tYWtlT3V0bGV0OiBmdW5jdGlvbihuYW1lLCBlbGVtZW50KQorICAgIF9tYWtlT3V0bGV0
KG5hbWUsIGVsZW1lbnQpCiAgICAgewogICAgICAgICB0aGlzLl9vdXRsZXRzW25hbWVdID0gZWxl
bWVudDsKICAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWFr
ZU5hbWVDZWxsOiBmdW5jdGlvbigpCisgICAgX21ha2VOYW1lQ2VsbCgpCiAgICAgewogICAgICAg
ICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CiAKQEAg
LTExOSwxOCArMTE4LDE4IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVEYXRhR3JpZE5vZGUucHJv
dG90eXBlID0gewogICAgICAgICByZWZsZWN0aW9uTGFiZWwudGV4dENvbnRlbnQgPSAiIFx1MjAx
NCAiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZsZWN0aW9uIik7CiAKICAgICAgICAgcmV0
dXJuIGZyYWdtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUNlbGw6IGZ1bmN0aW9u
KGNvbHVtbklkZW50aWZpZXIpCisgICAgX3VwZGF0ZUNlbGwoY29sdW1uSWRlbnRpZmllcikKICAg
ICB7CiAgICAgICAgIHZhciBkYXRhID0gdGhpcy5fZGF0YVtjb2x1bW5JZGVudGlmaWVyXTsKICAg
ICAgICAgaWYgKGNvbHVtbklkZW50aWZpZXIgPT09ICJuYW1lIikKICAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZU5hbWVDZWxsRGF0YShkYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhp
cy5fb3V0bGV0c1tjb2x1bW5JZGVudGlmaWVyXS50ZXh0Q29udGVudCA9IGRhdGE7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdXBkYXRlTmFtZUNlbGxEYXRhOiBmdW5jdGlvbihkYXRhKQorICAgIF91
cGRhdGVOYW1lQ2VsbERhdGEoZGF0YSkKICAgICB7CiAgICAgICAgIHZhciBsYXllciA9IHRoaXMu
X2xheWVyOwogICAgICAgICB2YXIgbGFiZWwgPSB0aGlzLl9vdXRsZXRzLmxhYmVsOwpAQCAtMTU3
LDEzICsxNTYsMTEgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURhdGFHcmlkTm9kZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoInJlZmxlY3Rpb24iKTsK
ICAgICAgICAgZWxzZSBpZiAobGF5ZXIucHNldWRvRWxlbWVudCkKICAgICAgICAgICAgIGVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgicHNldWRvLWVsZW1lbnQiKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9nb1RvQXJyb3dXYXNDbGlja2VkOiBmdW5jdGlvbigpCisgICAgX2dvVG9BcnJvd1dhc0NsaWNr
ZWQoKQogICAgIHsKICAgICAgICAgdmFyIGRvbU5vZGUgPSBXZWJJbnNwZWN0b3IuZG9tVHJlZU1h
bmFnZXIubm9kZUZvcklkKHRoaXMuX2xheWVyLm5vZGVJZCk7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93TWFpbkZyYW1lRE9NVHJlZShkb21Ob2RlLCB0cnVl
KTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGF0YUdyaWROb2RlLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVy
VHJlZURldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDM2YTE4
NWUuLjNmZDg4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQ
YW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsMTMgKzIzLDE1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwgPSBm
dW5jdGlvbigpCitXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNs
YXNzIExheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRE9N
RGV0YWlsc1NpZGViYXJQYW5lbAogewotICAgIFdlYkluc3BlY3Rvci5ET01EZXRhaWxzU2lkZWJh
clBhbmVsLmNhbGwodGhpcywgImxheWVyLXRyZWUiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxh
eWVycyIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxheWVyIiksICJJbWFnZXMvTmF2aWdhdGlv
bkl0ZW1MYXllcnMuc3ZnIiwgIjMiKTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAg
ICBzdXBlcigibGF5ZXItdHJlZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTGF5ZXJzIiksIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiTGF5ZXIiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUxheWVy
cy5zdmciLCAiMyIpOwogCiAgICAgICAgIHRoaXMuX2RhdGFHcmlkTm9kZXNCeUxheWVySWQgPSB7
fTsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5MYXllclRy
ZWVEZXRhaWxzU2lkZWJhclBhbmVsLlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoImxheWVyLXRyZWUiKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3Iu
c2hvd1NoYWRvd0RPTVNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2V0dGlu
Zy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93U2hhZG93RE9NU2V0dGluZ0NoYW5nZWQsIHRoaXMp
OwogCkBAIC0zOCwxNyArNDAsMTEgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRl
YmFyUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgICAgIHRoaXMuX2J1aWxkTGF5ZXJJbmZvU2VjdGlv
bigpOwogICAgICAgICB0aGlzLl9idWlsZERhdGFHcmlkU2VjdGlvbigpOwogICAgICAgICB0aGlz
Ll9idWlsZEJvdHRvbUJhcigpOwotfTsKLQotV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNT
aWRlYmFyUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAibGF5ZXItdHJlZSI7Ci0KLVdlYkluc3BlY3Rv
ci5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUsCisg
ICAgfQogICAgIAogICAgIC8vIERldGFpbHNTaWRlYmFyUGFuZWwgT3ZlcnJpZGVzLgogCi0gICAg
c2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IubGF5ZXJUcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5MYXllclRy
ZWVNYW5hZ2VyLkV2ZW50LkxheWVyVHJlZURpZENoYW5nZSwgdGhpcy5fbGF5ZXJUcmVlRGlkQ2hh
bmdlLCB0aGlzKTsKIApAQCAtNTcsMTYgKzUzLDE2IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVE
ZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5uZWVkc1JlZnJl
c2goKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90
b3R5cGUuc2hvd24uY2FsbCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVu
Y3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IubGF5ZXJU
cmVlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5MYXllclRyZWVNYW5h
Z2VyLkV2ZW50LkxheWVyVHJlZURpZENoYW5nZSwgdGhpcy5fbGF5ZXJUcmVlRGlkQ2hhbmdlLCB0
aGlzKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuRE9NRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90
b3R5cGUuaGlkZGVuLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBm
dW5jdGlvbigpCisgICAgcmVmcmVzaCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuZG9tTm9k
ZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTc1LDM1ICs3MSwzNSBAQCBXZWJJbnNwZWN0b3Iu
TGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLl91bmZpbHRlcmVkQ2hpbGRMYXllcnMgPSBjaGlsZExheWVyczsKICAgICAgICAgICAgIHRo
aXMuX3VwZGF0ZURpc3BsYXlXaXRoTGF5ZXJzKGxheWVyRm9yTm9kZSwgY2hpbGRMYXllcnMpOwog
ICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gRE9NRGV0YWls
c1NpZGViYXJQYW5lbCBPdmVycmlkZXMKIAotICAgIHN1cHBvcnRzRE9NTm9kZTogZnVuY3Rpb24o
bm9kZVRvSW5zcGVjdCkKKyAgICBzdXBwb3J0c0RPTU5vZGUobm9kZVRvSW5zcGVjdCkKICAgICB7
CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IubGF5ZXJUcmVlTWFuYWdlci5zdXBwb3J0ZWQg
JiYgbm9kZVRvSW5zcGVjdC5ub2RlVHlwZSgpID09PSBOb2RlLkVMRU1FTlRfTk9ERTsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9sYXllclRyZWVEaWRDaGFuZ2U6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9sYXllclRyZWVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLm5lZWRzUmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dTaGFk
b3dET01TZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Nob3dTaGFkb3dET01T
ZXR0aW5nQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkKQog
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlRGlzcGxheVdpdGhMYXllcnModGhpcy5fbGF5ZXJGb3JO
b2RlLCB0aGlzLl91bmZpbHRlcmVkQ2hpbGRMYXllcnMpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3dpbmRvd1Jlc2l6ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF93aW5kb3dSZXNpemVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXIgJiYgdGhpcy5fcG9wb3Zlci52aXNp
YmxlKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlUG9wb3ZlckZvclNlbGVjdGVkTm9kZSgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2J1aWxkTGF5ZXJJbmZvU2VjdGlvbjogZnVuY3Rpb24oKQor
ICAgIF9idWlsZExheWVySW5mb1NlY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHJvd3MgPSB0
aGlzLl9sYXllckluZm9Sb3dzID0ge307CiAgICAgICAgIHZhciByb3dzQXJyYXkgPSBbXTsKQEAg
LTEyMiw5ICsxMTgsOSBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2xheWVySW5mb1NlY3Rpb24gPSBuZXcgV2Vi
SW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uKCJsYXllci1pbmZvIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJMYXllciBJbmZvIiksIFt0aGlzLl9ub0xheWVySW5mb3JtYXRpb25Hcm91cF0pOwogCiAg
ICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGF5ZXJJbmZvU2Vj
dGlvbi5lbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9idWlsZERhdGFHcmlkU2VjdGlv
bjogZnVuY3Rpb24oKQorICAgIF9idWlsZERhdGFHcmlkU2VjdGlvbigpCiAgICAgewogICAgICAg
ICB2YXIgY29sdW1ucyA9IHtuYW1lOiB7fSwgcGFpbnRDb3VudDoge30sIG1lbW9yeToge319Owog
CkBAIC0xNjAsOSArMTU2LDkgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFy
UGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5jb250ZW50
RWxlbWVudC5hcHBlbmRDaGlsZChzZWN0aW9uLmVsZW1lbnQpOwogICAgICAgICBlbGVtZW50LmNs
YXNzTGlzdC5hZGQoc2VjdGlvbi5pZGVudGlmaWVyKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9i
dWlsZEJvdHRvbUJhcjogZnVuY3Rpb24oKQorICAgIF9idWlsZEJvdHRvbUJhcigpCiAgICAgewog
ICAgICAgICB2YXIgYm90dG9tQmFyID0gdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgYm90dG9tQmFyLmNsYXNzTmFtZSA9ICJi
b3R0b20tYmFyIjsKQEAgLTE3Miw5ICsxNjgsOSBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0
YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fbGF5ZXJzTWVt
b3J5TGFiZWwgPSBib3R0b21CYXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2IikpOwogICAgICAgICB0aGlzLl9sYXllcnNNZW1vcnlMYWJlbC5jbGFzc05hbWUgPSAibGF5
ZXJzLW1lbW9yeS1sYWJlbCI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc29ydERhdGFHcmlkOiBm
dW5jdGlvbigpCisgICAgX3NvcnREYXRhR3JpZCgpCiAgICAgewogICAgICAgICB2YXIgc29ydENv
bHVtbklkZW50aWZpZXIgPSB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllcjsKIApA
QCAtMTg3LDkgKzE4Myw5IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Tm9kZXMoY29t
cGFyYXRvcik7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVBvcG92ZXJGb3JTZWxlY3RlZE5vZGUoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9zZWxlY3RlZERhdGFHcmlkTm9kZUNoYW5nZWQ6IGZ1bmN0
aW9uKCkKKyAgICBfc2VsZWN0ZWREYXRhR3JpZE5vZGVDaGFuZ2VkKCkKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpIHsKICAgICAgICAgICAgIHRoaXMuX2hp
Z2hsaWdodFNlbGVjdGVkTm9kZSgpOwpAQCAtMTk4LDI3ICsxOTQsMjcgQEAgV2ViSW5zcGVjdG9y
LkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
V2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAgICAg
ICAgICAgICB0aGlzLl9oaWRlUG9wb3ZlcigpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZGF0YUdyaWRHYWluZWRGb2N1czogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlk
R2FpbmVkRm9jdXMoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9oaWdobGlnaHRTZWxlY3Rl
ZE5vZGUoKTsKICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JTZWxlY3RlZE5vZGUoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9kYXRhR3JpZExvc3RGb2N1czogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2RhdGFHcmlkTG9zdEZvY3VzKGV2ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9y
LmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAgICAgICAgIHRoaXMuX2hp
ZGVQb3BvdmVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWRXYXNDbGlja2VkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWRXYXNDbGlja2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSAmJiBldmVudC50YXJnZXQucGFy
ZW50Tm9kZS5jbGFzc0xpc3QuY29udGFpbnMoImZpbGxlciIpKQogICAgICAgICAgICAgdGhpcy5f
ZGF0YUdyaWQuc2VsZWN0ZWROb2RlLmRlc2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
aGlnaGxpZ2h0U2VsZWN0ZWROb2RlOiBmdW5jdGlvbigpCisgICAgX2hpZ2hsaWdodFNlbGVjdGVk
Tm9kZSgpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQu
c2VsZWN0ZWROb2RlOwogICAgICAgICBpZiAoIWRhdGFHcmlkTm9kZSkKQEAgLTIyOSw5ICsyMjUs
OSBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0UmVj
dChsYXllci5ib3VuZHMsIHRydWUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlnaGxpZ2h0RE9NTm9kZShsYXllci5ub2RlSWQpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3VwZGF0ZURpc3BsYXlXaXRoTGF5ZXJzOiBmdW5jdGlvbihsYXll
ckZvck5vZGUsIGNoaWxkTGF5ZXJzKQorICAgIF91cGRhdGVEaXNwbGF5V2l0aExheWVycyhsYXll
ckZvck5vZGUsIGNoaWxkTGF5ZXJzKQogICAgIHsKICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3Iu
c2hvd1NoYWRvd0RPTVNldHRpbmcudmFsdWUpIHsKICAgICAgICAgICAgIGNoaWxkTGF5ZXJzID0g
Y2hpbGRMYXllcnMuZmlsdGVyKGZ1bmN0aW9uKGxheWVyKSB7CkBAIC0yNDUsMTEgKzI0MSwxMSBA
QCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdGhpcy5fbGF5ZXJGb3JOb2RlID0gbGF5ZXJGb3JOb2RlOwogICAgICAgICB0
aGlzLl9jaGlsZExheWVycyA9IGNoaWxkTGF5ZXJzOwotICAgIH0sCisgICAgfQogCi0gICAgX3Vw
ZGF0ZUxheWVySW5mb1NlY3Rpb246IGZ1bmN0aW9uKGxheWVyKQorICAgIF91cGRhdGVMYXllcklu
Zm9TZWN0aW9uKGxheWVyKQogICAgIHsKLSAgICAgICAgY29uc3QgZW1EYXNoID0gIlx1MjAxNCI7
CisgICAgICAgIHZhciBlbURhc2ggPSAiXHUyMDE0IjsKIAogICAgICAgICB0aGlzLl9sYXllcklu
Zm9TZWN0aW9uLmdyb3VwcyA9IGxheWVyID8gW3RoaXMuX2xheWVySW5mb0dyb3VwXSA6IFt0aGlz
Ll9ub0xheWVySW5mb3JtYXRpb25Hcm91cF07CiAKQEAgLTI2MCw5ICsyNTYsOSBAQCBXZWJJbnNw
ZWN0b3IuTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX2xheWVySW5mb1Jvd3NbIldpZHRoIl0udmFsdWUgPSBsYXllci5jb21wb3NpdGVkQm91
bmRzLndpZHRoICsgInB4IjsKICAgICAgICAgdGhpcy5fbGF5ZXJJbmZvUm93c1siSGVpZ2h0Il0u
dmFsdWUgPSBsYXllci5jb21wb3NpdGVkQm91bmRzLmhlaWdodCArICJweCI7CiAgICAgICAgIHRo
aXMuX2xheWVySW5mb1Jvd3NbIlBhaW50cyJdLnZhbHVlID0gbGF5ZXIucGFpbnRDb3VudCArICIi
OwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZURhdGFHcmlkOiBmdW5jdGlvbihsYXllckZv
ck5vZGUsIGNoaWxkTGF5ZXJzKQorICAgIF91cGRhdGVEYXRhR3JpZChsYXllckZvck5vZGUsIGNo
aWxkTGF5ZXJzKQogICAgIHsKICAgICAgICAgdmFyIGRhdGFHcmlkID0gdGhpcy5fZGF0YUdyaWQ7
CiAKQEAgLTI5MSwxOCArMjg3LDE4IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVEZXRhaWxzU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc29ydERhdGFHcmlkKCk7CiAK
ICAgICAgICAgdGhpcy5fY2hpbGRMYXllcnNSb3cuZGF0YUdyaWQgPSAhaXNFbXB0eU9iamVjdChj
aGlsZExheWVycykgPyB0aGlzLl9kYXRhR3JpZCA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZGF0YUdyaWROb2RlRm9yTGF5ZXI6IGZ1bmN0aW9uKGxheWVyKQorICAgIF9kYXRhR3JpZE5v
ZGVGb3JMYXllcihsYXllcikKICAgICB7CiAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3Bl
Y3Rvci5MYXllclRyZWVEYXRhR3JpZE5vZGUobGF5ZXIpOwogCiAgICAgICAgIHRoaXMuX2RhdGFH
cmlkTm9kZXNCeUxheWVySWRbbGF5ZXIubGF5ZXJJZF0gPSBub2RlOwogCiAgICAgICAgIHJldHVy
biBub2RlOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU1ldHJpY3M6IGZ1bmN0aW9uKGxh
eWVyRm9yTm9kZSwgY2hpbGRMYXllcnMpCisgICAgX3VwZGF0ZU1ldHJpY3MobGF5ZXJGb3JOb2Rl
LCBjaGlsZExheWVycykKICAgICB7CiAgICAgICAgIHZhciBsYXllckNvdW50ID0gMDsKICAgICAg
ICAgdmFyIHRvdGFsTWVtb3J5ID0gMDsKQEAgLTMxOSw5ICszMTUsOSBAQCBXZWJJbnNwZWN0b3Iu
TGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhp
cy5fbGF5ZXJzQ291bnRMYWJlbC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TGF5ZXIgQ291bnQ6ICVkIikuZm9ybWF0KGxheWVyQ291bnQpOwogICAgICAgICB0aGlzLl9sYXll
cnNNZW1vcnlMYWJlbC50ZXh0Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWVtb3J5
OiAlcyIpLmZvcm1hdChOdW1iZXIuYnl0ZXNUb1N0cmluZyh0b3RhbE1lbW9yeSkpOwotICAgIH0s
CisgICAgfQogCi0gICAgX3Nob3dQb3BvdmVyRm9yU2VsZWN0ZWROb2RlOiBmdW5jdGlvbigpCisg
ICAgX3Nob3dQb3BvdmVyRm9yU2VsZWN0ZWROb2RlKCkKICAgICB7CiAgICAgICAgIHZhciBkYXRh
R3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGU7CiAgICAgICAgIGlmICghZGF0
YUdyaWROb2RlKQpAQCAtMzMxLDkgKzMyNyw5IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVEZXRh
aWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChkYXRhR3JpZE5v
ZGUgPT09IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSkKICAgICAgICAgICAgICAgICB0aGlz
Ll91cGRhdGVQb3BvdmVyRm9yU2VsZWN0ZWROb2RlKGNvbnRlbnQpOwogICAgICAgICB9LmJpbmQo
dGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVBvcG92ZXJGb3JTZWxlY3RlZE5v
ZGU6IGZ1bmN0aW9uKGNvbnRlbnQpCisgICAgX3VwZGF0ZVBvcG92ZXJGb3JTZWxlY3RlZE5vZGUo
Y29udGVudCkKICAgICB7CiAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3Jp
ZC5zZWxlY3RlZE5vZGU7CiAgICAgICAgIGlmICghZGF0YUdyaWROb2RlKQpAQCAtMzQ5LDE1ICsz
NDUsMTUgQEAgV2ViSW5zcGVjdG9yLkxheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKIAogICAgICAg
ICBwb3BvdmVyLnByZXNlbnQodGFyZ2V0RnJhbWUucGFkKDIpLCBbV2ViSW5zcGVjdG9yLlJlY3RF
ZGdlLk1JTl9YXSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGlkZVBvcG92ZXI6IGZ1bmN0aW9u
KCkKKyAgICBfaGlkZVBvcG92ZXIoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXIp
CiAgICAgICAgICAgICB0aGlzLl9wb3BvdmVyLmRpc21pc3MoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9jb250ZW50Rm9yUG9wb3ZlcjogZnVuY3Rpb24obGF5ZXIsIGNhbGxiYWNrKQorICAgIF9j
b250ZW50Rm9yUG9wb3ZlcihsYXllciwgY2FsbGJhY2spCiAgICAgewogICAgICAgICB2YXIgY29u
dGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBjb250ZW50LmNs
YXNzTmFtZSA9ICJsYXllci10cmVlLXBvcG92ZXIiOwpAQCAtMzc4LDkgKzM3NCw5IEBAIFdlYklu
c3BlY3Rvci5MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfS5iaW5kKHRoaXMpKTsKIAogICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICB9LAorICAg
IH0KIAotICAgIF9wb3B1bGF0ZUxpc3RPZkNvbXBvc2l0aW5nUmVhc29uczogZnVuY3Rpb24obGlz
dCwgY29tcG9zaXRpbmdSZWFzb25zKQorICAgIF9wb3B1bGF0ZUxpc3RPZkNvbXBvc2l0aW5nUmVh
c29ucyhsaXN0LCBjb21wb3NpdGluZ1JlYXNvbnMpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBh
ZGRSZWFzb24ocmVhc29uKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURhdGFHcmlkLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVEYXRh
R3JpZC5qcwppbmRleCA1ZmIwOTQyLi5kOGJlMTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURhdGFHcmlkLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVs
aW5lRGF0YUdyaWQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDIwICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlkID0g
ZnVuY3Rpb24odHJlZU91dGxpbmUsIGNvbHVtbnMsIGRlbGVnYXRlLCBlZGl0Q2FsbGJhY2ssIGRl
bGV0ZUNhbGxiYWNrKQorV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWQgPSBjbGFz
cyBMYXlvdXRUaW1lbGluZURhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0
YUdyaWQKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5jYWxsKHRoaXMsIHRy
ZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFj
ayk7Ci19OwotCi1XZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlk
LAorICAgIGNvbnN0cnVjdG9yKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENh
bGxiYWNrLCBkZWxldGVDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHN1cGVyKHRyZWVPdXRsaW5l
LCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjayk7CisgICAg
fQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBjYWxsRnJhbWVQb3BvdmVyQW5jaG9yRWxlbWVu
dDogZnVuY3Rpb24oKQorICAgIGNhbGxGcmFtZVBvcG92ZXJBbmNob3JFbGVtZW50KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTm9kZS5lbGVtZW50V2l0aENvbHVtbklkZW50
aWZpZXIoImluaXRpYXRvckNhbGxGcmFtZSIpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5M
YXlvdXRUaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZS5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5l
RGF0YUdyaWROb2RlLmpzCmluZGV4IGEwNjJhZWUuLmE3NWEzN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lRGF0YUdy
aWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0xheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0NCArMjMsMzYgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTGF5b3V0VGlt
ZWxpbmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihsYXlvdXRUaW1lbGluZVJlY29yZCwgYmFzZVN0
YXJ0VGltZSkKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZSA9IGNsYXNz
IExheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
RGF0YUdyaWROb2RlCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLmNh
bGwodGhpcywgZmFsc2UsIG51bGwpOworICAgIGNvbnN0cnVjdG9yKGxheW91dFRpbWVsaW5lUmVj
b3JkLCBiYXNlU3RhcnRUaW1lKQorICAgIHsKKyAgICAgICAgc3VwZXIoZmFsc2UsIG51bGwpOwog
CiAgICAgICAgIHRoaXMuX3JlY29yZCA9IGxheW91dFRpbWVsaW5lUmVjb3JkOwogICAgICAgICB0
aGlzLl9iYXNlU3RhcnRUaW1lID0gYmFzZVN0YXJ0VGltZSB8fCAwOwotfTsKLQotLy8gRklYTUU6
IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3Zl
IHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0
aW9ucyhXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUpOwotCi1XZWJJbnNw
ZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xhc3NOYW1lID0gImlj
b24iOwotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLlN1YnRpdGxlU3R5
bGVDbGFzc05hbWUgPSAic3VidGl0bGUiOwotCi1XZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVE
YXRhR3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
TGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IHJlY29yZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlY29yZHMoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IFt0aGlzLl9yZWNvcmRdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZDsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0
ZUNlbGxDb250ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQorICAgIGNyZWF0
ZUNlbGxDb250ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCiAgICAgewotICAgICAgICBjb25z
dCBlbXB0eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgPSAiXHUyMDE0IjsKKyAgICAgICAgdmFyIGVt
cHR5VmFsdWVQbGFjZWhvbGRlclN0cmluZyA9ICJcdTIwMTQiOwogICAgICAgICB2YXIgdmFsdWUg
PSB0aGlzLmRhdGFbY29sdW1uSWRlbnRpZmllcl07CiAKICAgICAgICAgc3dpdGNoIChjb2x1bW5J
ZGVudGlmaWVyKSB7CkBAIC04NCwzICs3Niw2IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGlu
ZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGxDb250ZW50LmNhbGwodGhp
cywgY29sdW1uSWRlbnRpZmllciwgY2VsbCk7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLkxh
eW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLkljb25TdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKK1dl
Ykluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlkTm9kZS5TdWJ0aXRsZVN0eWxlQ2xhc3NO
YW1lID0gInN1YnRpdGxlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lT3ZlcnZpZXdH
cmFwaC5qcwppbmRleCBmNzQ4OWRjLi4yNWU3M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3JhcGgu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0
VGltZWxpbmVPdmVydmlld0dyYXBoLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDExICsyMywxMyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZU92
ZXJ2aWV3R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZSkKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1l
bGluZU92ZXJ2aWV3R3JhcGggPSBjbGFzcyBMYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3JhcGggZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoCiB7Ci0gICAgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jYWxsKHRoaXMsIHRpbWVsaW5lKTsKKyAgICBjb25z
dHJ1Y3Rvcih0aW1lbGluZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHRpbWVsaW5lKTsKIAotICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZU92
ZXJ2aWV3R3JhcGguU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgibGF5b3V0Iik7CiAKICAgICAgICAgdGhpcy5fbGF5b3V0VGltZWxpbmUgPSB0aW1l
bGluZTsKICAgICAgICAgdGhpcy5fbGF5b3V0VGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX2xheW91dFRpbWVsaW5l
UmVjb3JkQWRkZWQsIHRoaXMpOwpAQCAtMzUsMjYgKzM3LDIwIEBAIFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZSkKICAgICAgICAgdGhp
cy5fdGltZWxpbmVSZWNvcmRCYXJzID0gW107CiAKICAgICAgICAgdGhpcy5yZXNldCgpOwotfTsK
LQotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5TdHlsZUNsYXNzTmFt
ZSA9ICJsYXlvdXQiOwotCi1XZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVPdmVydmlld0dyYXBo
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkxheW91dFRpbWVs
aW5lT3ZlcnZpZXdHcmFwaCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZU92
ZXJ2aWV3R3JhcGgucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgcmVz
ZXQ6IGZ1bmN0aW9uKCkKKyAgICByZXNldCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpOwogCiAgICAg
ICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFyTWFwID0gbmV3IE1hcDsKIAogICAgICAgICB0aGlz
LmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxh
eW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZS51cGRhdGVMYXlvdXQuY2Fs
bCh0aGlzKTsKIApAQCAtODQsMTEgKzgwLDExIEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGlu
ZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVS
ZWNvcmRCYXJzW3JlY29yZEJhckluZGV4XS5yZWNvcmRzID0gbnVsbDsKICAgICAgICAgICAgIHRo
aXMuX3RpbWVsaW5lUmVjb3JkQmFyc1tyZWNvcmRCYXJJbmRleF0uZWxlbWVudC5yZW1vdmUoKTsK
ICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2xheW91
dFRpbWVsaW5lUmVjb3JkQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9sYXlvdXRUaW1lbGlu
ZVJlY29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0xheW91dFRpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lVmlldy5qcwppbmRleCAxMzc3NmViLi5jNTcyMTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9M
YXlvdXRUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE2ICsyMywxOCBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5M
YXlvdXRUaW1lbGluZVZpZXcgPSBmdW5jdGlvbih0aW1lbGluZSkKK1dlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVZpZXcgPSBjbGFzcyBMYXlvdXRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5jYWxs
KHRoaXMsIHRpbWVsaW5lKTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZSkKKyAgICB7CisgICAg
ICAgIHN1cGVyKHRpbWVsaW5lKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZS50
eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5MYXlvdXQgfHwgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuUnVuTG9vcCk7CiAKICAgICAgICAgdGhpcy5uYXZp
Z2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnRTZWxl
Y3RlZC5iaW5kKHRoaXMpOwogICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxp
bmUub25kZXNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50RGVzZWxlY3RlZC5iaW5kKHRoaXMpOwog
ICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhpZGVEaXNjbG9zdXJl
QnV0dG9uc1N0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91
dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZp
ZXcuVHJlZU91dGxpbmVTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNp
ZGViYXJUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxheW91dCIpOwogCiAgICAg
ICAgIHZhciBjb2x1bW5zID0ge2V2ZW50VHlwZToge30sIGluaXRpYXRvckNhbGxGcmFtZToge30s
IHdpZHRoOiB7fSwgaGVpZ2h0OiB7fSwgc3RhcnRUaW1lOiB7fSwgZHVyYXRpb246IHt9fTsKIApA
QCAtODUsODkgKzg3LDgyIEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcgPSBmdW5j
dGlvbih0aW1lbGluZSkKICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5l
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fbW91c2VPdmVyVHJl
ZU91dGxpbmUuYmluZCh0aGlzKSk7CiAgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVl
T3V0bGluZS5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9tb3Vz
ZUxlYXZlVHJlZU91dGxpbmUuYmluZCh0aGlzKSk7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LlN0eWxlQ2xhc3NOYW1lKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxheW91dCIpOwogICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAKICAgICAg
ICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQu
UmVjb3JkQWRkZWQsIHRoaXMuX2xheW91dFRpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogCiAg
ICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107Ci19OwotCi1XZWJJbnNwZWN0b3IuTGF5
b3V0VGltZWxpbmVWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImxheW91dCI7Ci1XZWJJbnNwZWN0b3Iu
TGF5b3V0VGltZWxpbmVWaWV3LlRyZWVPdXRsaW5lU3R5bGVDbGFzc05hbWUgPSAibGF5b3V0IjsK
LQotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCBuYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lTGFiZWwoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVjb3JkcyIpOwotICAg
IH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLnNob3duLmNhbGwodGhp
cyk7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlSGlnaGxpZ2h0KCk7CiAKICAgICAgICAgdGhpcy5f
ZGF0YUdyaWQuc2hvd24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24o
KQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICB0aGlzLl9oaWRlSGlnaGxpZ2h0SWZOZWVk
ZWQoKTsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5oaWRkZW4oKTsKIAogICAgICAgICBXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwotICAgIH0s
CisgICAgfQogCi0gICAgZmlsdGVyRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgZmlsdGVyRGlk
Q2hhbmdlKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90
eXBlLmZpbHRlckRpZENoYW5nZS5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUhp
Z2hsaWdodCgpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigp
CisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dC5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwogCiAgICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5kaW5n
UmVjb3JkcygpOwotICAgIH0sCisgICAgfQogCi0gICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RD
dXN0b21GaWx0ZXJzOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVtZW50
QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fZGF0YUdyaWQudHJlZUVsZW1lbnRNYXRjaGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRyZWVF
bGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgcmVz
ZXQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUu
cmVzZXQuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl9oaWRlSGlnaGxpZ2h0SWZOZWVkZWQo
KTsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZXNldCgpOwotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gUHJvdGVjdGVkCiAKLSAgICB0cmVlRWxlbWVudFBhdGhDb21wb25lbnRTZWxlY3RlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0ZWQoZXZl
bnQpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuZGF0
YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LmdlbmVyYWxU
cmVlRWxlbWVudCk7CiAgICAgICAgIGlmICghZGF0YUdyaWROb2RlKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBkYXRhR3JpZE5vZGUucmV2ZWFsQW5kU2VsZWN0KCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfcHJvY2Vzc1BlbmRpbmdSZWNvcmRzOiBmdW5j
dGlvbigpCisgICAgX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX3BlbmRpbmdSZWNvcmRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4
MCw5ICsxNzUsOSBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfbGF5b3V0VGltZWxpbmVSZWNvcmRBZGRlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2xheW91dFRpbWVsaW5lUmVjb3JkQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICB2YXIgbGF5b3V0VGltZWxpbmVSZWNvcmQgPSBldmVudC5kYXRhLnJlY29yZDsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQobGF5b3V0VGltZWxpbmVSZWNvcmQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQgfHwgbGF5b3V0VGltZWxpbmVSZWNvcmQgaW5zdGFuY2Vv
ZiBXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lUmVjb3JkKTsKQEAgLTE5MCwyNyArMTg1LDI3
IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9wZW5kaW5nUmVjb3Jkcy5wdXNoKGxheW91dFRpbWVsaW5lUmVjb3JkKTsKIAogICAg
ICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWRG
aWx0ZXJzRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWRGaWx0ZXJzRGlk
Q2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJh
clBhbmVsLnVwZGF0ZUZpbHRlcigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkTm9k
ZVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2RlU2VsZWN0ZWQoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2Up
OwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50RGVzZWxlY3RlZDogZnVuY3Rpb24o
dHJlZUVsZW1lbnQpCisgICAgX3RyZWVFbGVtZW50RGVzZWxlY3RlZCh0cmVlRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGlmICh0cmVlRWxlbWVudC5zdGF0dXMpCiAgICAgICAgICAgICB0cmVlRWxl
bWVudC5zdGF0dXMgPSAiIjsKIAogICAgICAgICB0aGlzLl91cGRhdGVIaWdobGlnaHQoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxl
bWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAgX3RyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1l
bnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RhdGFHcmlkLnNo
b3VsZElnbm9yZVNlbGVjdGlvbkV2ZW50KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMzUs
OSArMjMwLDkgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVsLnNob3dPcmlnaW5h
bE9yRm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9uKHRyZWVFbGVtZW50LnJlY29yZC5zb3VyY2VD
b2RlTG9jYXRpb24pOwogICAgICAgICB0aGlzLl91cGRhdGVUcmVlRWxlbWVudFdpdGhDbG9zZUJ1
dHRvbih0cmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlVHJlZUVsZW1l
bnRXaXRoQ2xvc2VCdXR0b246IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF91cGRhdGVUcmVl
RWxlbWVudFdpdGhDbG9zZUJ1dHRvbih0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9jbG9zZVN0YXR1c0J1dHRvbikgewogICAgICAgICAgICAgdHJlZUVsZW1lbnQuc3RhdHVz
ID0gdGhpcy5fY2xvc2VTdGF0dXNCdXR0b24uZWxlbWVudDsKQEAgLTI1MCwxNSArMjQ1LDE1IEBA
IFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgaWYgKHRyZWVFbGVtZW50ID09PSB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUu
c2VsZWN0ZWRUcmVlRWxlbWVudCkKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVUcmVlRWxl
bWVudFdpdGhDbG9zZUJ1dHRvbih0cmVlRWxlbWVudCk7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xvc2VTdGF0dXNCdXR0b25DbGlja2VkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfY2xvc2VTdGF0dXNCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1l
bnQuZGVzZWxlY3QoKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVs
LnNob3dUaW1lbGluZVZpZXdGb3JUaW1lbGluZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF91cGRhdGVIaWdobGlnaHQ6IGZ1bmN0aW9uKCkKKyAgICBfdXBk
YXRlSGlnaGxpZ2h0KCkKICAgICB7CiAgICAgICAgIHZhciByZWNvcmQgPSB0aGlzLl9ob3ZlcmVk
T3JTZWxlY3RlZFJlY29yZCgpOwogICAgICAgICBpZiAoIXJlY29yZCkgewpAQCAtMjY3LDE3ICsy
NjIsMTcgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICB0aGlzLl9zaG93SGlnaGxpZ2h0Rm9yUmVjb3JkKHJlY29yZCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd0hpZ2hsaWdodEZvclJlY29yZDogZnVuY3Rpb24o
cmVjb3JkKQorICAgIF9zaG93SGlnaGxpZ2h0Rm9yUmVjb3JkKHJlY29yZCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9zaG93aW5nSGlnaGxpZ2h0Rm9yUmVjb3JkID09PSByZWNvcmQpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2hvd2luZ0hpZ2hsaWdodEZvclJlY29y
ZCA9IHJlY29yZDsKIAotICAgICAgICBjb25zdCBjb250ZW50Q29sb3IgPSB7cjogMTExLCBnOiAx
NjgsIGI6IDIyMCwgYTogMC42Nn07Ci0gICAgICAgIGNvbnN0IG91dGxpbmVDb2xvciA9IHtyOiAy
NTUsIGc6IDIyOSwgYjogMTUzLCBhOiAwLjY2fTsKKyAgICAgICAgdmFyIGNvbnRlbnRDb2xvciA9
IHtyOiAxMTEsIGc6IDE2OCwgYjogMjIwLCBhOiAwLjY2fTsKKyAgICAgICAgdmFyIG91dGxpbmVD
b2xvciA9IHtyOiAyNTUsIGc6IDIyOSwgYjogMTUzLCBhOiAwLjY2fTsKIAogICAgICAgICB2YXIg
cXVhZCA9IHJlY29yZC5xdWFkOwogICAgICAgICBpZiAocXVhZCAmJiBET01BZ2VudC5oaWdobGln
aHRRdWFkKSB7CkBAIC0yOTksOSArMjk0LDkgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5l
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9zaG93aW5nSGlnaGxpZ2h0ID0g
ZmFsc2U7CiAgICAgICAgICAgICBET01BZ2VudC5oaWRlSGlnaGxpZ2h0KCk7CiAgICAgICAgIH0K
LSAgICB9LAorICAgIH0KIAotICAgIF9oaWRlSGlnaGxpZ2h0SWZOZWVkZWQ6IGZ1bmN0aW9uKCkK
KyAgICBfaGlkZUhpZ2hsaWdodElmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dp
bmdIaWdobGlnaHRGb3JSZWNvcmQgPSBudWxsOwogCkBAIC0zMDksOSArMzA0LDkgQEAgV2ViSW5z
cGVjdG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlz
Ll9zaG93aW5nSGlnaGxpZ2h0ID0gZmFsc2U7CiAgICAgICAgICAgICBET01BZ2VudC5oaWRlSGln
aGxpZ2h0KCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9ob3ZlcmVkT3JTZWxl
Y3RlZFJlY29yZDogZnVuY3Rpb24oKQorICAgIF9ob3ZlcmVkT3JTZWxlY3RlZFJlY29yZCgpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5faG92ZXJlZERhdGFHcmlkTm9kZSkKICAgICAgICAgICAg
IHJldHVybiB0aGlzLl9ob3ZlcmVkRGF0YUdyaWROb2RlLnJlY29yZDsKQEAgLTMyNiw5ICszMjEs
OSBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNl
T3ZlckRhdGFHcmlkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VPdmVyRGF0YUdyaWQoZXZl
bnQpCiAgICAgewogICAgICAgICB2YXIgaG92ZXJlZERhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFH
cmlkLmRhdGFHcmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIGlmICghaG92
ZXJlZERhdGFHcmlkTm9kZSkKQEAgLTMzNiwxNSArMzMxLDE1IEBAIFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2hvdmVyZWREYXRh
R3JpZE5vZGUgPSBob3ZlcmVkRGF0YUdyaWROb2RlOwogICAgICAgICB0aGlzLl91cGRhdGVIaWdo
bGlnaHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZUxlYXZlRGF0YUdyaWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9tb3VzZUxlYXZlRGF0YUdyaWQoZXZlbnQpCiAgICAgewogICAgICAg
ICB0aGlzLl9ob3ZlcmVkRGF0YUdyaWROb2RlID0gbnVsbDsKICAgICAgICAgdGhpcy5fdXBkYXRl
SGlnaGxpZ2h0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2VPdmVyVHJlZU91dGxpbmU6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZU92ZXJUcmVlT3V0bGluZShldmVudCkKICAgICB7
CiAgICAgICAgIHZhciBob3ZlcmVkVHJlZUVsZW1lbnQgPSB0aGlzLm5hdmlnYXRpb25TaWRlYmFy
VHJlZU91dGxpbmUudHJlZUVsZW1lbnRGcm9tTm9kZShldmVudC50YXJnZXQpOwogICAgICAgICBp
ZiAoIWhvdmVyZWRUcmVlRWxlbWVudCkKQEAgLTM1Miw5ICszNDcsOSBAQCBXZWJJbnNwZWN0b3Iu
TGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9ob3ZlcmVk
VHJlZUVsZW1lbnQgPSBob3ZlcmVkVHJlZUVsZW1lbnQ7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUhp
Z2hsaWdodCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlTGVhdmVUcmVlT3V0bGluZTog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX21vdXNlTGVhdmVUcmVlT3V0bGluZShldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuX2hvdmVyZWRUcmVlRWxlbWVudCA9IG51bGw7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZUhpZ2hsaWdodCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2UuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lDb25zb2xlTWVzc2FnZS5qcwppbmRl
eCBkZjhkNzEyLi41NGNmOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9MZWdhY3lDb25zb2xlTWVzc2FnZS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lDb25zb2xlTWVzc2FnZS5qcwpA
QCAtMSw2ICsxLDYgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMsIDIw
MTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
NywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybwogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjgsNyAr
MjgsOSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1l
c3NhZ2UgPSBmdW5jdGlvbihzb3VyY2UsIGxldmVsLCB1cmwsIGxpbmUsIGNvbHVtbiwgcmVwZWF0
Q291bnQpCitXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UgPSBjbGFzcyBMZWdhY3lD
b25zb2xlTWVzc2FnZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1
Y3Rvcihzb3VyY2UsIGxldmVsLCB1cmwsIGxpbmUsIGNvbHVtbiwgcmVwZWF0Q291bnQpCiAgICAg
ewogICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTsKICAgICAgICAgdGhpcy5sZXZlbCA9IGxl
dmVsOwpAQCAtNDAsMjggKzQyLDMxIEBAIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2Fn
ZSA9IGZ1bmN0aW9uKHNvdXJjZSwgbGV2ZWwsIHVybCwgbGluZSwgY29sdW1uLCByCiAgICAgICAg
IHRoaXMucmVwZWF0Q291bnQgPSByZXBlYXRDb3VudDsKICAgICAgICAgdGhpcy5yZXBlYXREZWx0
YSA9IHJlcGVhdENvdW50OwogICAgICAgICB0aGlzLnRvdGFsUmVwZWF0Q291bnQgPSByZXBlYXRD
b3VudDsKLX07Ci0KLVdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5wcm90b3R5cGUg
PSB7Ci0gICAgaXNFcnJvck9yV2FybmluZzogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0
dXJuICh0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVz
c2FnZUxldmVsLldhcm5pbmcgfHwgdGhpcy5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcik7Ci0gICAgfSwKLQotICAgIHVwZGF0ZVJl
cGVhdENvdW50OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBj
b25jcmV0ZSBpbnN0YW5jZXMKLSAgICB9LAotCi0gICAgY2xvbmU6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IGNvbmNyZXRlIGluc3RhbmNlcwogICAgIH0KLX07
CiAKLVdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5jcmVhdGUgPSBmdW5jdGlvbihz
b3VyY2UsIGxldmVsLCBtZXNzYWdlLCB0eXBlLCB1cmwsIGxpbmUsIGNvbHVtbiwgcmVwZWF0Q291
bnQsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpCisgICAgLy8gU3RhdGljCisKKyAg
ICBzdGF0aWMgY3JlYXRlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHR5cGUsIHVybCwgbGluZSwg
Y29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdl
SW1wbChzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBudWxsLCB0eXBlLCB1cmwsIGxpbmUsIGNvbHVt
biwgcmVwZWF0Q291bnQsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpOworICAgIH0K
KworICAgIC8vIFB1YmxpYworCisgICAgaXNFcnJvck9yV2FybmluZygpCisgICAgeworICAgICAg
ICByZXR1cm4gKHRoaXMubGV2ZWwgPT09IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2Fn
ZS5NZXNzYWdlTGV2ZWwuV2FybmluZyB8fCB0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuTGVn
YWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yKTsKKyAgICB9CisKKyAgICB1cGRh
dGVSZXBlYXRDb3VudCgpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBjb25jcmV0
ZSBpbnN0YW5jZXMKKyAgICB9CisKKyAgICBjbG9uZSgpCisgICAgeworICAgICAgICAvLyBJbXBs
ZW1lbnRlZCBieSBjb25jcmV0ZSBpbnN0YW5jZXMKKyAgICB9CiB9OwogCiAvLyBGSVhNRTogU3dp
dGNoIHRvIENvbnNvbGVBZ2VudC5Db25zb2xlTWVzc2FnZVNvdXJjZS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUNvbnNvbGVNZXNz
YWdlSW1wbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xl
Z2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5qcwppbmRleCBmM2E5ZDY1Li5mZjcwZDhmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lDb25z
b2xlTWVzc2FnZUltcGwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLmpzCkBAIC0xLDYgKzEsNiBAQAogLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywgMjAxNSBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBo
IFBlY29yYXJvCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yOCw5ICsyOCwxMSBAQAogICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsID0gZnVuY3Rp
b24oc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbGlua2lmaWVyLCB0eXBlLCB1cmwsIGxpbmUsIGNv
bHVtbiwgcmVwZWF0Q291bnQsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpCitXZWJJ
bnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsID0gY2xhc3MgTGVnYWN5Q29uc29sZU1l
c3NhZ2VJbXBsIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlCiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLmNhbGwodGhpcywgc291cmNlLCBs
ZXZlbCwgdXJsLCBsaW5lLCBjb2x1bW4sIHJlcGVhdENvdW50KTsKKyAgICBjb25zdHJ1Y3Rvcihz
b3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5raWZpZXIsIHR5cGUsIHVybCwgbGluZSwgY29sdW1u
LCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKHNvdXJjZSwgbGV2ZWwsIHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3Vu
dCk7CiAKICAgICAgICAgdGhpcy5fbGlua2lmaWVyID0gbGlua2lmaWVyOwogICAgICAgICB0aGlz
LnR5cGUgPSB0eXBlIHx8IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdl
VHlwZS5Mb2c7CkBAIC01MCwxMyArNTIsMTQgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVN
ZXNzYWdlSW1wbCA9IGZ1bmN0aW9uKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIGxpbmtpZmkKICAg
ICAgICAgICAgICJub2RlIjogICB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJBc05vZGUsCiAgICAgICAg
ICAgICAic3RyaW5nIjogdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNTdHJpbmcKICAgICAgICAgfTsK
LX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3Rv
dHlwZSA9IHsKKyAgICBnZXQgZW5mb3JjZXNDbGlwYm9hcmRQcmVmaXhTdHJpbmcoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0gICAgZW5mb3JjZXNDbGlwYm9hcmRQcmVm
aXhTdHJpbmc6IHRydWUsCi0KLSAgICBfZm9ybWF0TWVzc2FnZTogZnVuY3Rpb24oKQorICAgIF9m
b3JtYXRNZXNzYWdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHRoaXMuX2Zvcm1hdHRlZE1l
c3NhZ2UuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZS10ZXh0IjsKQEAgLTEzOSwxMCArMTQy
LDEwIEBAIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0g
ewogICAgICAgICBpZiAodGhpcy5fc2hvdWxkRHVtcFN0YWNrVHJhY2UoKSkgewogICAgICAgICAg
ICAgdmFyIG9sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wiKTsKICAgICAgICAgICAgIG9s
LmNsYXNzTmFtZSA9ICJvdXRsaW5lLWRpc2Nsb3N1cmUiOwotICAgICAgICAgICAgdmFyIHRyZWVP
dXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKG9sKTsKKyAgICAgICAgICAgIHZhciB0cmVlT3V0bGlu
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUob2wpOwogCiAgICAgICAgICAgICB2YXIg
Y29udGVudCA9IHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2U7Ci0gICAgICAgICAgICB2YXIgcm9vdCA9
IG5ldyBUcmVlRWxlbWVudChjb250ZW50LCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgIHZhciBy
b290ID0gbmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChjb250ZW50LCBudWxsLCB0cnVlKTsK
ICAgICAgICAgICAgIGNvbnRlbnQudHJlZUVsZW1lbnRGb3JUZXN0ID0gcm9vdDsKICAgICAgICAg
ICAgIHRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHJvb3QpOwogICAgICAgICAgICAgaWYgKHRoaXMu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRy
YWNlKQpAQCAtMTU0LDE5ICsxNTcsMTkgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNz
YWdlSW1wbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBpbmxp
bmUgbWVzc2FnZSBidWJibGVzIGluIFNvdXJjZUZyYW1lcywgb3Igb3RoZXIgcGxhaW4tdGV4dCBy
ZXByZXNlbnRhdGlvbnMuCiAgICAgICAgIHRoaXMuX21lc3NhZ2UgPSBtZXNzYWdlVGV4dC50ZXh0
Q29udGVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG91bGREdW1wU3RhY2tUcmFjZTogZnVu
Y3Rpb24oKQorICAgIF9zaG91bGREdW1wU3RhY2tUcmFjZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gISF0aGlzLl9zdGFja1RyYWNlICYmIHRoaXMuX3N0YWNrVHJhY2UubGVuZ3RoICYmICh0aGlz
LnNvdXJjZSA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3Vy
Y2UuTmV0d29yayB8fCB0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1l
c3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yIHx8IHRoaXMudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkxl
Z2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLlRyYWNlKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9zaG91bGRIaWRlVVJMOiBmdW5jdGlvbih1cmwpCisgICAgX3Nob3VsZEhpZGVVUkwodXJs
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHVybCA9PT0gInVuZGVmaW5lZCIgfHwgdXJsID09PSAi
W25hdGl2ZSBjb2RlXSI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZmlyc3ROb25OYXRpdmVDYWxs
RnJhbWU6IGZ1bmN0aW9uKCkKKyAgICBfZmlyc3ROb25OYXRpdmVDYWxsRnJhbWUoKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9zdGFja1RyYWNlKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7
CkBAIC0xNzksNDIgKzE4Miw0MiBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJ
bXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBudWxsOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IG1lc3NhZ2UoKQogICAgIHsKICAgICAgICAgLy8gZm9yY2Ug
bWVzc2FnZSBmb3JtYXR0aW5nCiAgICAgICAgIHZhciBmb3JtYXR0ZWRNZXNzYWdlID0gdGhpcy5m
b3JtYXR0ZWRNZXNzYWdlOwogICAgICAgICByZXR1cm4gdGhpcy5fbWVzc2FnZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBmb3JtYXR0ZWRNZXNzYWdlKCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fZm9ybWF0dGVkTWVzc2FnZSkKICAgICAgICAgICAgIHRoaXMuX2Zvcm1hdE1lc3NhZ2Uo
KTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2U7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfbGlua2lmeUxvY2F0aW9uOiBmdW5jdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcikKKyAgICBfbGlua2lmeUxvY2F0aW9uKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKQogICAgIHsKICAgICAgICAgLy8gQ29uc29sZU1lc3NhZ2Ugc3RhY2sgdHJhY2UgbGluZSBu
dW1iZXJzIGFyZSBvbmUtYmFzZWQuCiAgICAgICAgIGxpbmVOdW1iZXIgPSBsaW5lTnVtYmVyID8g
bGluZU51bWJlciAtIDEgOiAwOwogICAgICAgICBjb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXIg
PyBjb2x1bW5OdW1iZXIgLSAxIDogMDsKIAogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmxp
bmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgImNvbnNvbGUtbWVz
c2FnZS11cmwiKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9saW5raWZ5Q2FsbEZyYW1lOiBmdW5j
dGlvbihjYWxsRnJhbWUpCisgICAgX2xpbmtpZnlDYWxsRnJhbWUoY2FsbEZyYW1lKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2xpbmtpZnlMb2NhdGlvbihjYWxsRnJhbWUudXJsLCBjYWxs
RnJhbWUubGluZU51bWJlciwgY2FsbEZyYW1lLmNvbHVtbk51bWJlcik7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBpc0Vycm9yT3JXYXJuaW5nOiBmdW5jdGlvbigpCisgICAgaXNFcnJvck9yV2Fybmlu
ZygpCiAgICAgewogICAgICAgICByZXR1cm4gKHRoaXMubGV2ZWwgPT09IFdlYkluc3BlY3Rvci5M
ZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuV2FybmluZyB8fCB0aGlzLmxldmVsID09
PSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9mb3JtYXQ6IGZ1bmN0aW9uKHBhcmFtZXRlcnMpCisgICAg
X2Zvcm1hdChwYXJhbWV0ZXJzKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBub2RlIGlzIHVzZWQg
bGlrZSBhIEJ1aWxkZXIuIFZhbHVlcyBhcmUgY29udGludWFsbHkgYXBwZW5kZWQgb250byBpdC4K
ICAgICAgICAgdmFyIGZvcm1hdHRlZFJlc3VsdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNw
YW4iKTsKQEAgLTI2Niw5ICsyNjksOSBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3Nh
Z2VJbXBsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmb3JtYXR0
ZWRSZXN1bHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaXNFeHBhbmRhYmxlOiBmdW5jdGlvbihy
ZW1vdGVPYmplY3QpIHsKKyAgICBfaXNFeHBhbmRhYmxlKHJlbW90ZU9iamVjdCkgewogICAgICAg
ICBpZiAoIXJlbW90ZU9iamVjdCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjc2
LDkgKzI3OSw5IEBAIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHJldHVybiByZW1v
dGVPYmplY3QuaGFzQ2hpbGRyZW47Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0UGFyYW1l
dGVyOiBmdW5jdGlvbihvdXRwdXQsIGZvcmNlT2JqZWN0Rm9ybWF0KQorICAgIF9mb3JtYXRQYXJh
bWV0ZXIob3V0cHV0LCBmb3JjZU9iamVjdEZvcm1hdCkKICAgICB7CiAgICAgICAgIHZhciB0eXBl
OwogICAgICAgICBpZiAoZm9yY2VPYmplY3RGb3JtYXQpCkBAIC0yOTksNDYgKzMwMiw0NiBAQCBX
ZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBmb3JtYXR0ZXIuY2FsbCh0aGlzLCBvdXRwdXQsIHNwYW4sIGZvcmNlT2JqZWN0Rm9ybWF0
KTsKICAgICAgICAgcmV0dXJuIHNwYW47Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0UGFy
YW1ldGVyQXNWYWx1ZTogZnVuY3Rpb24odmFsdWUsIGVsZW0pCisgICAgX2Zvcm1hdFBhcmFtZXRl
ckFzVmFsdWUodmFsdWUsIGVsZW0pCiAgICAgewogICAgICAgICBlbGVtLmFwcGVuZENoaWxkKFdl
Ykluc3BlY3Rvci5Gb3JtYXR0ZWRWYWx1ZS5jcmVhdGVFbGVtZW50Rm9yUmVtb3RlT2JqZWN0KHZh
bHVlKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0UGFyYW1ldGVyQXNPYmplY3Q6IGZ1
bmN0aW9uKG9iaiwgZWxlbSwgZm9yY2VFeHBhbnNpb24pCisgICAgX2Zvcm1hdFBhcmFtZXRlckFz
T2JqZWN0KG9iaiwgZWxlbSwgZm9yY2VFeHBhbnNpb24pCiAgICAgewogICAgICAgICB0aGlzLl9v
YmplY3RUcmVlID0gbmV3IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldyhvYmosIFdlYkluc3Bl
Y3Rvci5PYmplY3RUcmVlVmlldy5Nb2RlLlByb3BlcnRpZXMsIHRoaXMuX3Jvb3RQcm9wZXJ0eVBh
dGhGb3JPYmplY3Qob2JqKSwgZm9yY2VFeHBhbnNpb24pOwogICAgICAgICBlbGVtLmFwcGVuZENo
aWxkKHRoaXMuX29iamVjdFRyZWUuZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9y
bWF0UGFyYW1ldGVyQXNTdHJpbmc6IGZ1bmN0aW9uKG91dHB1dCwgZWxlbSkKKyAgICBfZm9ybWF0
UGFyYW1ldGVyQXNTdHJpbmcob3V0cHV0LCBlbGVtKQogICAgIHsKICAgICAgICAgdmFyIHNwYW4g
PSBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRlTGlua2lmaWVkRWxlbWVudFN0cmlu
ZyhvdXRwdXQuZGVzY3JpcHRpb24pOwogICAgICAgICBlbGVtLmFwcGVuZENoaWxkKHNwYW4pOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2Zvcm1hdFBhcmFtZXRlckFzTm9kZTogZnVuY3Rpb24ob2Jq
ZWN0LCBlbGVtKQorICAgIF9mb3JtYXRQYXJhbWV0ZXJBc05vZGUob2JqZWN0LCBlbGVtKQogICAg
IHsKICAgICAgICAgdmFyIHNwYW4gPSBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRl
RWxlbWVudEZvck5vZGUob2JqZWN0KTsKICAgICAgICAgZWxlbS5hcHBlbmRDaGlsZChzcGFuKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9mb3JtYXRQYXJhbWV0ZXJBc0FycmF5OiBmdW5jdGlvbihh
cnIsIGVsZW0pCisgICAgX2Zvcm1hdFBhcmFtZXRlckFzQXJyYXkoYXJyLCBlbGVtKQogICAgIHsK
ICAgICAgICAgdGhpcy5fb2JqZWN0VHJlZSA9IG5ldyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZp
ZXcoYXJyLCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuTW9kZS5Qcm9wZXJ0aWVzLCB0aGlz
Ll9yb290UHJvcGVydHlQYXRoRm9yT2JqZWN0KGFycikpOwogICAgICAgICBlbGVtLmFwcGVuZENo
aWxkKHRoaXMuX29iamVjdFRyZWUuZWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcm9v
dFByb3BlcnR5UGF0aEZvck9iamVjdDogZnVuY3Rpb24ob2JqZWN0KQorICAgIF9yb290UHJvcGVy
dHlQYXRoRm9yT2JqZWN0KG9iamVjdCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5zYXZlZFJl
c3VsdEluZGV4KQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUHJvcGVydHlQYXRoKG9iamVjdCwgIiQiICsgdGhpcy5zYXZlZFJlc3Vs
dEluZGV4KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91c2VyUHJvdmlkZWRDb2x1bW5OYW1lczog
ZnVuY3Rpb24oY29sdW1uTmFtZXNBcmd1bWVudCkKKyAgICBfdXNlclByb3ZpZGVkQ29sdW1uTmFt
ZXMoY29sdW1uTmFtZXNBcmd1bWVudCkKICAgICB7CiAgICAgICAgIGlmICghY29sdW1uTmFtZXNB
cmd1bWVudCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtMzYxLDkgKzM2NCw5IEBAIFdl
Ykluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgcmV0dXJuIGV4dHJhY3RlZENvbHVtbk5hbWVzLmxlbmd0aCA/IGV4dHJh
Y3RlZENvbHVtbk5hbWVzIDogbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIF9mb3JtYXRQYXJh
bWV0ZXJBc1RhYmxlOiBmdW5jdGlvbihwYXJhbWV0ZXJzKQorICAgIF9mb3JtYXRQYXJhbWV0ZXJB
c1RhYmxlKHBhcmFtZXRlcnMpCiAgICAgewogICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgdmFyIHRhYmxlID0gcGFyYW1ldGVyc1sw
XTsKQEAgLTM5Miw3ICszOTUsNyBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJ
bXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgICAgICAgICB2YXIgcm93VmFsdWUgPSB7fTsKLSAgICAgICAgICAgICAgICBjb25zdCBtYXhD
b2x1bW5zVG9SZW5kZXIgPSAxMDsKKyAgICAgICAgICAgICAgICB2YXIgbWF4Q29sdW1uc1RvUmVu
ZGVyID0gMTA7CiAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCByb3dQcmV2aWV3
LnByb3BlcnR5UHJldmlld3MubGVuZ3RoOyArK2opIHsKICAgICAgICAgICAgICAgICAgICAgdmFy
IGNlbGxQcm9wZXJ0eSA9IHJvd1ByZXZpZXcucHJvcGVydHlQcmV2aWV3c1tqXTsKICAgICAgICAg
ICAgICAgICAgICAgdmFyIGNvbHVtblJlbmRlcmVkID0gY29sdW1uTmFtZXMuY29udGFpbnMoY2Vs
bFByb3BlcnR5Lm5hbWUpOwpAQCAtNDExLDcgKzQxNCw3IEBAIFdlYkluc3BlY3Rvci5MZWdhY3lD
b25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIElmIHRoZXJlIHdl
cmUgdmFsdWVQcmV2aWV3cywgY29udmVydCB0byBhIGZsYXQgbGlzdC4KICAgICAgICAgaWYgKHJv
d3MubGVuZ3RoKSB7Ci0gICAgICAgICAgICBjb25zdCBlbURhc2ggPSAiXHUyMDE0IjsKKyAgICAg
ICAgICAgIHZhciBlbURhc2ggPSAiXHUyMDE0IjsKICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnVu
c2hpZnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIoSW5kZXgpIikpOwogICAgICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByb3dzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICAgICAgdmFy
IHJvd05hbWUgPSByb3dzW2ldWzBdOwpAQCAtNDU3LDkgKzQ2MCw5IEBAIFdlYkluc3BlY3Rvci5M
ZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0gewogICAgICAgICBkYXRhR3JpZENv
bnRhaW5lci5hcHBlbmRDaGlsZChkYXRhR3JpZC5lbGVtZW50KTsKIAogICAgICAgICByZXR1cm4g
ZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9mb3JtYXRXaXRoU3Vic3RpdHV0aW9uU3Ry
aW5nOiBmdW5jdGlvbihwYXJhbWV0ZXJzLCBmb3JtYXR0ZWRSZXN1bHQpCisgICAgX2Zvcm1hdFdp
dGhTdWJzdGl0dXRpb25TdHJpbmcocGFyYW1ldGVycywgZm9ybWF0dGVkUmVzdWx0KQogICAgIHsK
ICAgICAgICAgdmFyIGZvcm1hdHRlcnMgPSB7fTsKIApAQCAtNTQ4LDkgKzU1MSw5IEBAIFdlYklu
c3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0gewogCiAgICAgICAg
IC8vIFN0cmluZy5mb3JtYXQgZG9lcyB0cmVhdCBmb3JtYXR0ZWRSZXN1bHQgbGlrZSBhIEJ1aWxk
ZXIsIHJlc3VsdCBpcyBhbiBvYmplY3QuCiAgICAgICAgIHJldHVybiBTdHJpbmcuZm9ybWF0KHBh
cmFtZXRlcnNbMF0uZGVzY3JpcHRpb24sIHBhcmFtZXRlcnMuc2xpY2UoMSksIGZvcm1hdHRlcnMs
IGZvcm1hdHRlZFJlc3VsdCwgYXBwZW5kKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRlY29yYXRl
TWVzc2FnZUVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgZGVjb3JhdGVNZXNzYWdlRWxl
bWVudChlbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpCiAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKQEAgLTU5Miw5ICs1OTUsOSBAQCBXZWJJbnNwZWN0
b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMudXBkYXRlUmVwZWF0Q291bnQoKTsKIAogICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9
LAorICAgIH0KIAotICAgIHRvTWVzc2FnZUVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICB0b01lc3Nh
Z2VFbGVtZW50KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50KQogICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CkBAIC02MDIsOSArNjA1LDkgQEAgV2ViSW5zcGVjdG9y
LkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBlbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAKICAgICAgICAgcmV0dXJuIHRo
aXMuZGVjb3JhdGVNZXNzYWdlRWxlbWVudChlbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9wb3B1bGF0ZVN0YWNrVHJhY2VUcmVlRWxlbWVudDogZnVuY3Rpb24ocGFyZW50VHJlZUVsZW1l
bnQpCisgICAgX3BvcHVsYXRlU3RhY2tUcmFjZVRyZWVFbGVtZW50KHBhcmVudFRyZWVFbGVtZW50
KQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zdGFja1RyYWNlLmxl
bmd0aDsgaSsrKSB7CiAgICAgICAgICAgICB2YXIgZnJhbWUgPSB0aGlzLl9zdGFja1RyYWNlW2ld
OwpAQCAtNjIxLDEyICs2MjQsMTIgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdl
SW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh1
cmxFbGVtZW50KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50
ID0gbmV3IFRyZWVFbGVtZW50KGNvbnRlbnQpOworICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50
ID0gbmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChjb250ZW50KTsKICAgICAgICAgICAgIHBh
cmVudFRyZWVFbGVtZW50LmFwcGVuZENoaWxkKHRyZWVFbGVtZW50KTsKICAgICAgICAgfQotICAg
IH0sCisgICAgfQogCi0gICAgdXBkYXRlUmVwZWF0Q291bnQ6IGZ1bmN0aW9uKCkgeworICAgIHVw
ZGF0ZVJlcGVhdENvdW50KCkgewogICAgICAgICBpZiAoIXRoaXMucmVwZWF0Q291bnRFbGVtZW50
KSB7CiAgICAgICAgICAgICB0aGlzLnJlcGVhdENvdW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50LmNs
YXNzTmFtZSA9ICJidWJibGUiOwpAQCAtNjM0LDkgKzYzNyw5IEBAIFdlYkluc3BlY3Rvci5MZWdh
Y3lDb25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5pbnNlcnRCZWZvcmUodGhpcy5yZXBlYXRDb3VudEVsZW1lbnQsIHRoaXMuX2VsZW1lbnQu
Zmlyc3RDaGlsZCk7CiAgICAgICAgIH0KICAgICAgICAgdGhpcy5yZXBlYXRDb3VudEVsZW1lbnQu
dGV4dENvbnRlbnQgPSB0aGlzLnJlcGVhdENvdW50OwotICAgIH0sCisgICAgfQogCi0gICAgdG9T
dHJpbmc6IGZ1bmN0aW9uKCkKKyAgICB0b1N0cmluZygpCiAgICAgewogICAgICAgICB2YXIgc291
cmNlU3RyaW5nOwogICAgICAgICBzd2l0Y2ggKHRoaXMuc291cmNlKSB7CkBAIC02OTAsMTQgKzY5
MywxNCBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBzb3VyY2VTdHJpbmcgKyAiICIgKyB0eXBl
U3RyaW5nICsgIiAiICsgdGhpcy5sZXZlbFN0cmluZyArICI6ICIgKyB0aGlzLmZvcm1hdHRlZE1l
c3NhZ2UudGV4dENvbnRlbnQgKyAiXG4iICsgdGhpcy51cmwgKyAiIGxpbmUgIiArIHRoaXMubGlu
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9tZXNzYWdlVGV4dDsKLSAgICB9LAorICAgIH0KIAotICAgIGlzRXF1YWw6IGZ1bmN0
aW9uKG1zZykKKyAgICBpc0VxdWFsKG1zZykKICAgICB7CiAgICAgICAgIGlmICghbXNnKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzIzLDE3ICs3MjYsMTcgQEAgV2ViSW5zcGVjdG9y
LkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAmJiAo
dGhpcy51cmwgPT09IG1zZy51cmwpCiAgICAgICAgICAgICAmJiAodGhpcy5tZXNzYWdlID09PSBt
c2cubWVzc2FnZSkKICAgICAgICAgICAgICYmICh0aGlzLl9yZXF1ZXN0ID09PSBtc2cuX3JlcXVl
c3QpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0YWNrVHJhY2UoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0YWNrVHJhY2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9uZTog
ZnVuY3Rpb24oKQorICAgIGNsb25lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UuY3JlYXRlKHRoaXMuc291cmNlLCB0aGlzLmxldmVsLCB0
aGlzLl9tZXNzYWdlVGV4dCwgdGhpcy50eXBlLCB0aGlzLnVybCwgdGhpcy5saW5lLCB0aGlzLmNv
bHVtbiwgdGhpcy5yZXBlYXRDb3VudCwgdGhpcy5fcGFyYW1ldGVycywgdGhpcy5fc3RhY2tUcmFj
ZSwgdGhpcy5fcmVxdWVzdCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGV2ZWxTdHJpbmco
KQogICAgIHsKQEAgLTc0OSwxNCArNzUyLDE0IEBAIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xl
TWVzc2FnZUltcGwucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
TGVnYWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkVycm9yOgogICAgICAgICAgICAgICAg
IHJldHVybiAiRXJyb3IiOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2xp
cGJvYXJkUHJlZml4U3RyaW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiAiWyIgKyB0aGlzLmxl
dmVsU3RyaW5nICsgIl0gIjsKLSAgICB9LAorICAgIH0KIAotICAgIHRvQ2xpcGJvYXJkU3RyaW5n
OiBmdW5jdGlvbihpc1ByZWZpeE9wdGlvbmFsKQorICAgIHRvQ2xpcGJvYXJkU3RyaW5nKGlzUHJl
Zml4T3B0aW9uYWwpCiAgICAgewogICAgICAgICB2YXIgaXNUcmFjZSA9IHRoaXMuX3Nob3VsZER1
bXBTdGFja1RyYWNlKCk7CiAKQEAgLTc5Nyw1ICs4MDAsMyBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5
Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGNsaXBib2Fy
ZFN0cmluZzsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJ
bXBsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3Nh
Z2UucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTG9nQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwppbmRleCA4YWU3YTFkLi43OGVlODNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9M
b2dDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcg
PSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmll
dyA9IGNsYXNzIExvZ0NvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRP
YmplY3QpOworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAg
ICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QpOwogCiAgICAgICAgIHRoaXMuX25lc3RpbmdMZXZl
bCA9IDA7CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkTWVzc2FnZXMgPSBbXTsKQEAgLTMzLDcgKzM1
LDcgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRP
YmplY3QpCiAgICAgICAgIC8vIEZJWE1FOiBUcnkgdG8gdXNlIGEgbWFya2VyLCBpbnN0ZWFkIG9m
IGEgbGlzdCBvZiBtZXNzYWdlcyB0aGF0IGdldCByZS1hZGRlZC4KICAgICAgICAgdGhpcy5fcHJv
dmlzaW9uYWxNZXNzYWdlcyA9IFtdOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxvZyIpOwogCiAgICAgICAgIHRoaXMubWVzc2FnZXNF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMubWVz
c2FnZXNFbGVtZW50LmNsYXNzTmFtZSA9ICJjb25zb2xlLW1lc3NhZ2VzIjsKQEAgLTkzLDg1ICs5
NSw2NyBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRl
ZE9iamVjdCkKICAgICAgICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5BY3RpdmVMb2dDbGVhcmVkLCB0aGlzLl9h
Y3RpdmVMb2dDbGVhcmVkLCB0aGlzKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuRnJhbWUuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRnJhbWUuRXZlbnQuUHJvdmlzaW9uYWxMb2FkU3Rh
cnRlZCwgdGhpcy5fcHJvdmlzaW9uYWxMb2FkU3RhcnRlZCwgdGhpcyk7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuTG9nQ29udGVudFZpZXcuU2NvcGVzID0gewotICAgIEFsbDogImxvZy1hbGwiLAotICAg
IEVycm9yczogImxvZy1lcnJvcnMiLAotICAgIFdhcm5pbmdzOiAibG9nLXdhcm5pbmdzIiwKLSAg
ICBMb2dzOiAibG9nLWxvZ3MiCi19OwotCi1XZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU3R5
bGVDbGFzc05hbWUgPSAibG9nIjsKLVdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5JdGVtV3Jh
cHBlclN0eWxlQ2xhc3NOYW1lID0gImNvbnNvbGUtaXRlbSI7Ci1XZWJJbnNwZWN0b3IuTG9nQ29u
dGVudFZpZXcuRmlsdGVyZWRPdXRTdHlsZUNsYXNzTmFtZSA9ICJmaWx0ZXJlZC1vdXQiOwotV2Vi
SW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNlbGVjdGVkU3R5bGVDbGFzc05hbWUgPSAic2VsZWN0
ZWQiOwotV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNlYXJjaEluUHJvZ3Jlc3NTdHlsZUNs
YXNzTmFtZSA9ICJzZWFyY2gtaW4tcHJvZ3Jlc3MiOwotV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRW
aWV3LkZpbHRlcmVkT3V0QnlTZWFyY2hTdHlsZUNsYXNzTmFtZSA9ICJmaWx0ZXJlZC1vdXQtYnkt
c2VhcmNoIjsKLVdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5IaWdobGlnaHRlZFN0eWxlQ2xh
c3NOYW1lID0gImhpZ2hsaWdodGVkIjsKLQotV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3
LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogICAgIGdldCBhbGxvd2VkTmF2aWdhdGlvblNpZGVi
YXJQYW5lbHMoKQogICAgIHsKICAgICAgICAgLy8gRG9uJ3Qgc2hvdyBhbnkgc2lkZWJhcnMgd2hl
biB0aGUgQ29uc29sZSBpcyBvcGVuZWQuCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewogICAgICAgICByZXR1cm4g
W3RoaXMuX3NlYXJjaEJhciwgdGhpcy5fc2NvcGVCYXIsIHRoaXMuX2NsZWFyTG9nTmF2aWdhdGlv
bkl0ZW0sIHRoaXMuX3RvZ2dsZVNwbGl0TmF2aWdhdGlvbkl0ZW1dOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHNjb3BlQmFyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zY29wZUJh
cjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsb2dWaWV3Q29udHJvbGxlcigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fbG9nVmlld0NvbnRyb2xsZXI7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQu
Y2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl9zY3JvbGxFbGVtZW50SGVpZ2h0ID0gdGhpcy5t
ZXNzYWdlc0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0OwotICAgIH0sCisg
ICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAg
ICB0aGlzLl90b2dnbGVTcGxpdE5hdmlnYXRpb25JdGVtLnRvZ2dsZWQgPSBXZWJJbnNwZWN0b3Iu
aXNTaG93aW5nU3BsaXRDb25zb2xlKCk7CiAKICAgICAgICAgdGhpcy5wcm9tcHQuZm9jdXMoKTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIFt0aGlzLmVsZW1lbnRdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNo
b3VsZEtlZXBFbGVtZW50c1Njcm9sbGVkVG9Cb3R0b20oKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VhcmNoSW5Qcm9ncmVzcygpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlc0VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5z
KFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TZWFyY2hJblByb2dyZXNzU3R5bGVDbGFzc05h
bWUpOwotICAgIH0sCisgICAgfQogCi0gICAgZGlkQ2xlYXJNZXNzYWdlczogZnVuY3Rpb24oKQor
ICAgIGRpZENsZWFyTWVzc2FnZXMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2lnbm9yZURp
ZENsZWFyTWVzc2FnZXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5sb2dNYW5hZ2VyLnJlcXVlc3RDbGVhck1lc3NhZ2VzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBkaWRBcHBlbmRDb25zb2xlTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkKKyAgICBkaWRBcHBl
bmRDb25zb2xlTWVzc2FnZShtZXNzYWdlKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnF1
aWNrQ29uc29sZS51cGRhdGVMYXlvdXQoKTsKIApAQCAtMjA5LDI0ICsxOTMsMjQgQEAgV2ViSW5z
cGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3Bl
Y3Rvci5zaG93U3BsaXRDb25zb2xlKCk7CiAKICAgICAgICAgdGhpcy5fbG9nVmlld0NvbnRyb2xs
ZXIuc2Nyb2xsVG9Cb3R0b20oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHByb21wdERpZENoYW5n
ZUhlaWdodDogZnVuY3Rpb24oKQorICAgIHByb21wdERpZENoYW5nZUhlaWdodCgpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3IucXVpY2tDb25zb2xlLnVwZGF0ZUxheW91dCgpOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU2F2ZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzYXZlRGF0YSgpCiAgICAgewogICAgICAg
ICByZXR1cm4ge3VybDogIndlYi1pbnNwZWN0b3I6Ly8vQ29uc29sZS50eHQiLCBjb250ZW50OiB0
aGlzLl9mb3JtYXRNZXNzYWdlc0FzRGF0YShmYWxzZSksIGZvcmNlU2F2ZUFzOiB0cnVlfTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGhhbmRsZUNvcHlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAg
aGFuZGxlQ29weUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3Rl
ZE1lc3NhZ2VzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIzNCw0OSArMjE4LDQ5
IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGV2
ZW50LmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dC9wbGFpbiIsIHRoaXMuX2Zvcm1hdE1lc3Nh
Z2VzQXNEYXRhKHRydWUpKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb2N1c1Nl
YXJjaEJhcjogZnVuY3Rpb24oKQorICAgIGZvY3VzU2VhcmNoQmFyKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3NlYXJjaEJhci5mb2N1cygpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlnaGxpZ2h0
UHJldmlvdXNTZWFyY2hNYXRjaDogZnVuY3Rpb24oKQorICAgIGhpZ2hsaWdodFByZXZpb3VzU2Vh
cmNoTWF0Y2goKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlYXJjaEluUHJvZ3Jlc3MgfHwg
aXNFbXB0eU9iamVjdCh0aGlzLl9zZWFyY2hNYXRjaGVzKSkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9zZWxlY3RlZFNlYXJjaE1hdGNoID8gdGhpcy5f
c2VhcmNoTWF0Y2hlcy5pbmRleE9mKHRoaXMuX3NlbGVjdGVkU2VhcmNoTWF0Y2gpIDogdGhpcy5f
c2VhcmNoTWF0Y2hlcy5sZW5ndGg7CiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFNlYXJjaE1hdGNo
QXRJbmRleChpbmRleCAtIDEpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlnaGxpZ2h0TmV4dFNl
YXJjaE1hdGNoOiBmdW5jdGlvbigpCisgICAgaGlnaGxpZ2h0TmV4dFNlYXJjaE1hdGNoKCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5zZWFyY2hJblByb2dyZXNzIHx8IGlzRW1wdHlPYmplY3Qo
dGhpcy5fc2VhcmNoTWF0Y2hlcykpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFy
IGluZGV4ID0gdGhpcy5fc2VsZWN0ZWRTZWFyY2hNYXRjaCA/IHRoaXMuX3NlYXJjaE1hdGNoZXMu
aW5kZXhPZih0aGlzLl9zZWxlY3RlZFNlYXJjaE1hdGNoKSArIDEgOiAwOwogICAgICAgICB0aGlz
Ll9oaWdobGlnaHRTZWFyY2hNYXRjaEF0SW5kZXgoaW5kZXgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2VhcmNoQmFyV2FudHNUb0xvc2VGb2N1czogZnVuY3Rpb24oc2VhcmNoQmFyKQorICAgIHNl
YXJjaEJhcldhbnRzVG9Mb3NlRm9jdXMoc2VhcmNoQmFyKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX3NlbGVjdGVkTWVzc2FnZXMubGVuZ3RoKQogICAgICAgICAgICAgdGhpcy5tZXNzYWdlc0Vs
ZW1lbnQuZm9jdXMoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5wcm9tcHQuZm9j
dXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlYXJjaEJhckRpZEFjdGl2YXRlOiBmdW5jdGlv
bihzZWFyY2hCYXIpCisgICAgc2VhcmNoQmFyRGlkQWN0aXZhdGUoc2VhcmNoQmFyKQogICAgIHsK
ICAgICAgICAgaWYgKCFpc0VtcHR5T2JqZWN0KHRoaXMuX3NlYXJjaE1hdGNoZXMpKQogICAgICAg
ICAgICAgdGhpcy5faGlnaGxpZ2h0U2VhcmNoTWF0Y2hBdEluZGV4KDApOwogICAgICAgICB0aGlz
LnByb21wdC5mb2N1cygpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAg
X2Zvcm1hdE1lc3NhZ2VzQXNEYXRhOiBmdW5jdGlvbihvbmx5U2VsZWN0ZWQpCisgICAgX2Zvcm1h
dE1lc3NhZ2VzQXNEYXRhKG9ubHlTZWxlY3RlZCkKICAgICB7CiAgICAgICAgIHZhciBtZXNzYWdl
cyA9IHRoaXMuX2FsbE1lc3NhZ2VzKCk7CiAKQEAgLTMwMiwxNiArMjg2LDE2IEBAIFdlYkluc3Bl
Y3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0pOwogCiAgICAgICAg
IHJldHVybiBkYXRhOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nlc3Npb25zQ2xlYXJlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX3Nlc3Npb25zQ2xlYXJlZChldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2lnbm9yZURpZENsZWFyTWVzc2FnZXMgPSB0cnVlOwogICAgICAgICB0aGlzLl9sb2dW
aWV3Q29udHJvbGxlci5jbGVhcigpOwogICAgICAgICB0aGlzLl9pZ25vcmVEaWRDbGVhck1lc3Nh
Z2VzID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2Vzc2lvblN0YXJ0ZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9zZXNzaW9uU3RhcnRlZChldmVudCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLl9jbGVhckxvZ09uUmVsb2FkU2V0dGluZy52YWx1ZSkgIHsKICAgICAgICAgICAgIHRo
aXMuX2NsZWFyTG9nKCk7CkBAIC0zMjIsOSArMzA2LDkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbG9nVmlld0NvbnRyb2xsZXIuc3Rh
cnROZXdTZXNzaW9uKCk7CiAKICAgICAgICAgdGhpcy5fY2xlYXJQcm92aXNpb25hbFN0YXRlKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWVzc2FnZUFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfbWVzc2FnZUFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3N0YXJ0ZWRQ
cm92aXNpb25hbExvYWQpCiAgICAgICAgICAgICB0aGlzLl9wcm92aXNpb25hbE1lc3NhZ2VzLnB1
c2goZXZlbnQuZGF0YS5tZXNzYWdlKTsKQEAgLTMzMiwxNCArMzE2LDE0IEBAIFdlYkluc3BlY3Rv
ci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBtZXNzYWdlID0gdGhp
cy5fbG9nVmlld0NvbnRyb2xsZXIuYXBwZW5kQ29uc29sZU1lc3NhZ2UoZXZlbnQuZGF0YS5tZXNz
YWdlKTsKICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNv
bnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkVuZEdyb3VwKQogICAgICAgICAgICAgdGhpcy5fZmls
dGVyTWVzc2FnZXMoW21lc3NhZ2UudG9NZXNzYWdlRWxlbWVudCgpXSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfcHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5fbG9nVmlld0NvbnRyb2xsZXIudXBkYXRlUHJldmlvdXNNZXNzYWdlUmVw
ZWF0Q291bnQoZXZlbnQuZGF0YS5jb3VudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGFuZGxl
Q29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZUNvbnRleHRNZW51
RXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXdpbmRvdy5nZXRTZWxlY3Rpb24oKS5p
c0NvbGxhcHNlZCkgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBzZWxlY3Rpb24sIHdl
IHdhbnQgdG8gc2hvdyBvdXIgbm9ybWFsIGNvbnRleHQgbWVudQpAQCAtMzYwLDkgKzM0NCw5IEBA
IFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oY2xlYXJMb2dPblJlbG9hZFVJU3RyaW5nLCB0aGlzLl90b2dnbGVD
bGVhckxvZ09uUmVsb2FkU2V0dGluZy5iaW5kKHRoaXMpKTsKIAogICAgICAgICBjb250ZXh0TWVu
dS5zaG93KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2Vkb3duOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfbW91c2Vkb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRv
biAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzg3LDE2
ICszNzEsMTYgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcyk7CiAgICAg
ICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdGFyZ2V0SW5NZXNzYWdlQ2FuQmVTZWxlY3RlZDogZnVuY3Rpb24odGFyZ2V0
LCBtZXNzYWdlKQorICAgIF90YXJnZXRJbk1lc3NhZ2VDYW5CZVNlbGVjdGVkKHRhcmdldCwgbWVz
c2FnZSkKICAgICB7CiAgICAgICAgIGlmICh0YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhO
b2RlTmFtZSgiYSIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZW1vdmU6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9tb3VzZW1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2lu
ZG93LmdldFNlbGVjdGlvbigpOwogICAgICAgICB2YXIgd3JhcHBlciA9IGV2ZW50LnRhcmdldC5l
bmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5J
dGVtV3JhcHBlclN0eWxlQ2xhc3NOYW1lKTsKQEAgLTQyOSw5ICs0MTMsOSBAQCBXZWJJbnNwZWN0
b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAg
fQogCi0gICAgX21vdXNldXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZXVwKGV2ZW50KQog
ICAgIHsKICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRo
aXMpOwogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIHRoaXMp
OwpAQCAtNDYxLDE3ICs0NDUsMTcgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX21vdXNlRG93bldyYXBwZXI7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9tb3VzZURvd25TaGlmdEtleTsKICAgICAgICAgZGVsZXRlIHRoaXMuX21v
dXNlRG93bkNvbW1hbmRLZXk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfb25kcmFnc3RhcnQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9vbmRyYWdzdGFydChldmVudCkKICAgICB7CiAgICAgICAgIGlm
IChldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyhXZWJJbnNwZWN0b3Iu
RE9NVHJlZU91dGxpbmUuU3R5bGVDbGFzc05hbWUpKSB7CiAgICAgICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAg
ICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkK
KyAgICBoYW5kbGVFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlw
ZSkgewogICAgICAgICBjYXNlICJtb3VzZW1vdmUiOgpAQCAtNDgxLDkgKzQ2NSw5IEBAIFdlYklu
c3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9t
b3VzZXVwKGV2ZW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdXBkYXRlTWVzc2FnZXNTZWxlY3Rpb246IGZ1bmN0aW9uKG1lc3NhZ2UsIG11
bHRpcGxlU2VsZWN0aW9uLCByYW5nZVNlbGVjdGlvbiwgc2hvdWxkU2Nyb2xsSW50b1ZpZXcpCisg
ICAgX3VwZGF0ZU1lc3NhZ2VzU2VsZWN0aW9uKG1lc3NhZ2UsIG11bHRpcGxlU2VsZWN0aW9uLCBy
YW5nZVNlbGVjdGlvbiwgc2hvdWxkU2Nyb2xsSW50b1ZpZXcpCiAgICAgewogICAgICAgICB2YXIg
YWxyZWFkeVNlbGVjdGVkTWVzc2FnZSA9IHRoaXMuX3NlbGVjdGVkTWVzc2FnZXMuY29udGFpbnMo
bWVzc2FnZSk7CiAgICAgICAgIGlmIChhbHJlYWR5U2VsZWN0ZWRNZXNzYWdlICYmIHRoaXMuX3Nl
bGVjdGVkTWVzc2FnZXMubGVuZ3RoICYmIG11bHRpcGxlU2VsZWN0aW9uKSB7CkBAIC01MzEsOSAr
NTE1LDkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBpZiAoc2hvdWxkU2Nyb2xsSW50b1ZpZXcgJiYgIWFscmVhZHlTZWxlY3RlZE1lc3NhZ2Up
CiAgICAgICAgICAgICB0aGlzLl9lbnN1cmVNZXNzYWdlSXNWaXNpYmxlKHRoaXMuX3NlbGVjdGVk
TWVzc2FnZXMubGFzdFZhbHVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9lbnN1cmVNZXNzYWdl
SXNWaXNpYmxlOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIF9lbnN1cmVNZXNzYWdlSXNWaXNpYmxl
KG1lc3NhZ2UpCiAgICAgewogICAgICAgICBpZiAoIW1lc3NhZ2UpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC01NTQsMTUgKzUzOCwxNSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJv
dG90eXBlID0gewogICAgICAgICAgICAgaWYgKHkgPiB0aGlzLl9zY3JvbGxFbGVtZW50SGVpZ2h0
KQogICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zY3JvbGxUb3AgKz0geSAtIHRoaXMuX3Nj
cm9sbEVsZW1lbnRIZWlnaHQ7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9wb3Np
dGlvbkZvck1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgX3Bvc2l0aW9uRm9yTWVzc2Fn
ZShtZXNzYWdlKQogICAgIHsKICAgICAgICAgdmFyIHBhZ2VQb2ludCA9IHdpbmRvdy53ZWJraXRD
b252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZShtZXNzYWdlLCBuZXcgV2ViS2l0UG9pbnQoMCwgMCkp
OwogICAgICAgICByZXR1cm4gd2luZG93LndlYmtpdENvbnZlcnRQb2ludEZyb21QYWdlVG9Ob2Rl
KHRoaXMuZWxlbWVudCwgcGFnZVBvaW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pc01lc3Nh
Z2VWaXNpYmxlOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIF9pc01lc3NhZ2VWaXNpYmxlKG1lc3Nh
Z2UpCiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IG1lc3NhZ2U7CiAKQEAgLTU4MiwyMyArNTY2
LDIzIEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pc01lc3Nh
Z2VTZWxlY3RlZDogZnVuY3Rpb24obWVzc2FnZSkKKyAgICBfaXNNZXNzYWdlU2VsZWN0ZWQobWVz
c2FnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtZXNzYWdlLmNsYXNzTGlzdC5jb250YWlucyhX
ZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfY2xlYXJNZXNzYWdlc1NlbGVjdGlvbjogZnVuY3Rpb24oKQorICAg
IF9jbGVhck1lc3NhZ2VzU2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3NlbGVjdGVk
TWVzc2FnZXMuZm9yRWFjaChmdW5jdGlvbihtZXNzYWdlKSB7CiAgICAgICAgICAgICBtZXNzYWdl
LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNlbGVjdGVkU3R5
bGVDbGFzc05hbWUpOwogICAgICAgICB9KTsKICAgICAgICAgdGhpcy5fc2VsZWN0ZWRNZXNzYWdl
cyA9IFtdOwogICAgICAgICBkZWxldGUgdGhpcy5fcmVmZXJlbmNlTWVzc2FnZUZvclJhbmdlU2Vs
ZWN0aW9uOwotICAgIH0sCisgICAgfQogCi0gICAgX3NlbGVjdEFsbE1lc3NhZ2VzOiBmdW5jdGlv
bigpCisgICAgX3NlbGVjdEFsbE1lc3NhZ2VzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NsZWFy
TWVzc2FnZXNTZWxlY3Rpb24oKTsKIApAQCAtNjA4LDIxICs1OTIsMjEgQEAgV2ViSW5zcGVjdG9y
LkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIG1lc3NhZ2UuY2xhc3NM
aXN0LmFkZChXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2VsZWN0ZWRTdHlsZUNsYXNzTmFt
ZSk7CiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLnB1c2gobWVzc2FnZSk7CiAg
ICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9hbGxNZXNzYWdlczogZnVuY3Rpb24oKQor
ICAgIF9hbGxNZXNzYWdlcygpCiAgICAgewogICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlz
Lm1lc3NhZ2VzRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY29uc29sZS1tZXNzYWdlLCAuY29u
c29sZS11c2VyLWNvbW1hbmQiKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdW5maWx0ZXJlZE1l
c3NhZ2VzOiBmdW5jdGlvbigpCisgICAgX3VuZmlsdGVyZWRNZXNzYWdlcygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fYWxsTWVzc2FnZXMoKS5maWx0ZXIoZnVuY3Rpb24obWVzc2FnZSkg
ewogICAgICAgICAgICAgcmV0dXJuICFtZXNzYWdlLmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNw
ZWN0b3IuTG9nQ29udGVudFZpZXcuRmlsdGVyZWRPdXRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAg
IH0pOwotICAgIH0sCisgICAgfQogCi0gICAgX3Zpc2libGVNZXNzYWdlczogZnVuY3Rpb24oKQor
ICAgIF92aXNpYmxlTWVzc2FnZXMoKQogICAgIHsKICAgICAgICAgdmFyIHVuZmlsdGVyZWRNZXNz
YWdlcyA9IHRoaXMuX3VuZmlsdGVyZWRNZXNzYWdlcygpOwogCkBAIC02MzIsNDEgKzYxNiw0MSBA
QCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gdW5maWx0ZXJlZE1lc3NhZ2VzLmZpbHRlcihmdW5jdGlvbihtZXNzYWdlKSB7CiAgICAgICAg
ICAgICByZXR1cm4gIW1lc3NhZ2UuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5Mb2dD
b250ZW50Vmlldy5GaWx0ZXJlZE91dEJ5U2VhcmNoU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hY3RpdmVMb2dDbGVhcmVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfYWN0aXZlTG9nQ2xlYXJlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2ln
bm9yZURpZENsZWFyTWVzc2FnZXMgPSB0cnVlOwogICAgICAgICB0aGlzLl9sb2dWaWV3Q29udHJv
bGxlci5jbGVhcigpOwogICAgICAgICB0aGlzLl9pZ25vcmVEaWRDbGVhck1lc3NhZ2VzID0gZmFs
c2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlU3BsaXQ6IGZ1bmN0aW9uKCkKKyAgICBf
dG9nZ2xlU3BsaXQoKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc1Nob3dpbmdT
cGxpdENvbnNvbGUoKSkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93RnVsbEhlaWdodENv
bnNvbGUoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTcGxp
dENvbnNvbGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90b2dnbGVDbGVhckxvZ09uUmVsb2Fk
U2V0dGluZzogZnVuY3Rpb24oKQorICAgIF90b2dnbGVDbGVhckxvZ09uUmVsb2FkU2V0dGluZygp
CiAgICAgewogICAgICAgICB0aGlzLl9jbGVhckxvZ09uUmVsb2FkU2V0dGluZy52YWx1ZSA9ICF0
aGlzLl9jbGVhckxvZ09uUmVsb2FkU2V0dGluZy52YWx1ZTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9jbGVhckxvZzogZnVuY3Rpb24oKQorICAgIF9jbGVhckxvZygpCiAgICAgewogICAgICAgICB0
aGlzLl9pZ25vcmVEaWRDbGVhck1lc3NhZ2VzID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fbG9nVmll
d0NvbnRyb2xsZXIuY2xlYXIoKTsKICAgICAgICAgdGhpcy5faWdub3JlRGlkQ2xlYXJNZXNzYWdl
cyA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX3Njb3BlQmFyU2VsZWN0aW9uRGlkQ2hh
bmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2NvcGVCYXJTZWxlY3Rpb25EaWRDaGFuZ2UoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLl9maWx0ZXJNZXNzYWdlcyh0aGlzLl9hbGxNZXNzYWdl
cygpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9maWx0ZXJNZXNzYWdlczogZnVuY3Rpb24obWVz
c2FnZXMpCisgICAgX2ZpbHRlck1lc3NhZ2VzKG1lc3NhZ2VzKQogICAgIHsKICAgICAgICAgdmFy
IHNob3dzQWxsID0gdGhpcy5fc2NvcGVCYXIuaXRlbShXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZp
ZXcuU2NvcGVzLkFsbCkuc2VsZWN0ZWQ7CiAgICAgICAgIHZhciBzaG93c0Vycm9ycyA9IHRoaXMu
X3Njb3BlQmFyLml0ZW0oV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Blcy5FcnJvcnMp
LnNlbGVjdGVkOwpAQCAtNzAxLDE5ICs2ODUsMTkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfSwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5fcGVy
Zm9ybVNlYXJjaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RpZEZvY3VzOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfZGlkRm9jdXMoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9mb2N1c2Vk
ID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kaWRCbHVyOiBmdW5jdGlvbihldmVudCkK
KyAgICBfZGlkQmx1cihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2ZvY3VzZWQgPSBmYWxz
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9rZXlEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBf
a2V5RG93bihldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9rZXlib2FyZFNob3J0Y3V0
Q29tbWFuZEEubWF0Y2hlc0V2ZW50KGV2ZW50KSkKICAgICAgICAgICAgIHRoaXMuX2NvbW1hbmRB
V2FzUHJlc3NlZChldmVudCk7CkBAIC03MjcsMTUgKzcxMSwxNSBAQCBXZWJJbnNwZWN0b3IuTG9n
Q29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fbGVmdEFycm93V2Fz
UHJlc3NlZChldmVudCk7CiAgICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIgPT09
ICJSaWdodCIpCiAgICAgICAgICAgICB0aGlzLl9yaWdodEFycm93V2FzUHJlc3NlZChldmVudCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29tbWFuZEFXYXNQcmVzc2VkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfY29tbWFuZEFXYXNQcmVzc2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5f
c2VsZWN0QWxsTWVzc2FnZXMoKTsKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9lc2NhcGVXYXNQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfZXNjYXBlV2FzUHJlc3NlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zZWxl
Y3RlZE1lc3NhZ2VzLmxlbmd0aCkKICAgICAgICAgICAgIHRoaXMuX2NsZWFyTWVzc2FnZXNTZWxl
Y3Rpb24oKTsKQEAgLTc0Myw5ICs3MjcsOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5wcm9tcHQuZm9jdXMoKTsKIAogICAgICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwQXJyb3dX
YXNQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfdXBBcnJvd1dhc1ByZXNzZWQoZXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgbWVzc2FnZXMgPSB0aGlzLl92aXNpYmxlTWVzc2FnZXMoKTsK
IApAQCAtNzY1LDkgKzc0OSw5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2Rvd25BcnJvd1dhc1ByZXNzZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9kb3duQXJyb3dXYXNQcmVzc2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIG1lc3Nh
Z2VzID0gdGhpcy5fdmlzaWJsZU1lc3NhZ2VzKCk7CiAKQEAgLTc4Nyw5ICs3NzEsOSBAQCBXZWJJ
bnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9sZWZ0QXJy
b3dXYXNQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbGVmdEFycm93V2FzUHJlc3NlZChl
dmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLmxlbmd0aCAh
PT0gMSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgxMSw5ICs3OTUsOSBAQCBXZWJJbnNwZWN0
b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgICAgICBvdXRs
aW5lU2VjdGlvbi5fc2VjdGlvbi5jb2xsYXBzZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmlnaHRBcnJvd1dhc1ByZXNzZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9yaWdodEFycm93V2FzUHJlc3NlZChldmVudCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLmxlbmd0aCAhPT0gMSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTg0NSw5ICs4MjksOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAg
IH0sCisgICAgfQogCi0gICAgX3Byb3BlcnRpZXNTZWN0aW9uRGlkVXBkYXRlQ29udGVudDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX3Byb3BlcnRpZXNTZWN0aW9uRGlkVXBkYXRlQ29udGVudChldmVu
dCkKICAgICB7CiAgICAgICAgIHZhciBzZWN0aW9uID0gZXZlbnQudGFyZ2V0OwogICAgICAgICBz
ZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNlY3Rpb24uRXZlbnQuVmlz
aWJsZUNvbnRlbnREaWRDaGFuZ2UsIHRoaXMuX3Byb3BlcnRpZXNTZWN0aW9uRGlkVXBkYXRlQ29u
dGVudCwgdGhpcyk7CkBAIC04NjAsMzkgKzg0NCwzOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZW5zdXJlTWVzc2FnZUlzVmlz
aWJsZShtZXNzYWdlKTsKICAgICAgICAgICAgIHRoaXMuX2NsZWFyRm9jdXNhYmxlQ2hpbGRyZW4o
KTsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wcmV2aW91
c01lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgX3ByZXZpb3VzTWVzc2FnZShtZXNzYWdl
KQogICAgIHsKICAgICAgICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fdmlzaWJsZU1lc3NhZ2VzKCk7
CiAgICAgICAgIGZvciAodmFyIGkgPSBtZXNzYWdlcy5pbmRleE9mKG1lc3NhZ2UpIC0gMTsgaSA+
PSAwOyAtLWkpIHsKICAgICAgICAgICAgIGlmICh0aGlzLl9pc01lc3NhZ2VWaXNpYmxlKG1lc3Nh
Z2VzW2ldKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZXNbaV07CiAgICAgICAgIH0K
LSAgICB9LAorICAgIH0KIAotICAgIF9uZXh0TWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkKKyAg
ICBfbmV4dE1lc3NhZ2UobWVzc2FnZSkKICAgICB7CiAgICAgICAgIHZhciBtZXNzYWdlcyA9IHRo
aXMuX3Zpc2libGVNZXNzYWdlcygpOwogICAgICAgICBmb3IgKHZhciBpID0gbWVzc2FnZXMuaW5k
ZXhPZihtZXNzYWdlKSArIDE7IGkgPCBtZXNzYWdlcy5sZW5ndGg7ICsraSkgewogICAgICAgICAg
ICAgaWYgKHRoaXMuX2lzTWVzc2FnZVZpc2libGUobWVzc2FnZXNbaV0pKQogICAgICAgICAgICAg
ICAgIHJldHVybiBtZXNzYWdlc1tpXTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAg
X2NsZWFyRm9jdXNhYmxlQ2hpbGRyZW46IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXJGb2N1c2FibGVD
aGlsZHJlbigpCiAgICAgewogICAgICAgICB2YXIgZm9jdXNhYmxlRWxlbWVudHMgPSB0aGlzLm1l
c3NhZ2VzRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbdGFiaW5kZXhdIik7CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwLCBjb3VudCA9IGZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aDsgaSA8IGNvdW50
OyArK2kpCiAgICAgICAgICAgICBmb2N1c2FibGVFbGVtZW50c1tpXS5yZW1vdmVBdHRyaWJ1dGUo
InRhYmluZGV4Iik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2VhcmNoVGV4dERpZENoYW5nZTog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX3NlYXJjaFRleHREaWRDaGFuZ2UoZXZlbnQpCiAgICAgewog
ICAgICAgICB0aGlzLl9wZXJmb3JtU2VhcmNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGVy
Zm9ybVNlYXJjaDogZnVuY3Rpb24oKQorICAgIF9wZXJmb3JtU2VhcmNoKCkKICAgICB7CiAgICAg
ICAgIGlmICghaXNFbXB0eU9iamVjdCh0aGlzLl9zZWFyY2hIaWdobGlnaHRET01DaGFuZ2VzKSkK
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXZlcnREb21DaGFuZ2VzKHRoaXMuX3NlYXJjaEhp
Z2hsaWdodERPTUNoYW5nZXMpOwpAQCAtOTM2LDkgKzkyMCw5IEBAIFdlYkluc3BlY3Rvci5Mb2dD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFNlYXJj
aE1hdGNoLmhpZ2hsaWdodC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5Mb2dDb250ZW50
Vmlldy5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9z
ZWxlY3RlZFNlYXJjaE1hdGNoOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGln
aGxpZ2h0UmFuZ2VzOiBmdW5jdGlvbihtZXNzYWdlLCBtYXRjaFJhbmdlcykKKyAgICBfaGlnaGxp
Z2h0UmFuZ2VzKG1lc3NhZ2UsIG1hdGNoUmFuZ2VzKQogICAgIHsKICAgICAgICAgdmFyIGhpZ2hs
aWdodGVkRWxlbWVudHMgPSBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0UmFuZ2VzV2l0aFN0eWxlQ2xh
c3MobWVzc2FnZSwgbWF0Y2hSYW5nZXMsIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5IaWdo
bGlnaHRlZFN0eWxlQ2xhc3NOYW1lLCB0aGlzLl9zZWFyY2hIaWdobGlnaHRET01DaGFuZ2VzKTsK
IApAQCAtOTU5LDE0ICs5NDMsMTQgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sIHRo
aXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jhbmdlc092ZXJsYXA6IGZ1bmN0aW9uKHJhbmdl
MSwgcmFuZ2UyKQorICAgIF9yYW5nZXNPdmVybGFwKHJhbmdlMSwgcmFuZ2UyKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHJhbmdlMS5vZmZzZXQgPD0gcmFuZ2UyLm9mZnNldCArIHJhbmdlMi5sZW5n
dGggJiYgcmFuZ2UyLm9mZnNldCA8PSByYW5nZTEub2Zmc2V0ICsgcmFuZ2UxLmxlbmd0aDsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9oaWdobGlnaHRTZWFyY2hNYXRjaEF0SW5kZXg6IGZ1bmN0aW9u
KGluZGV4KQorICAgIF9oaWdobGlnaHRTZWFyY2hNYXRjaEF0SW5kZXgoaW5kZXgpCiAgICAgewog
ICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5fc2VhcmNoTWF0Y2hlcy5sZW5ndGgpCiAgICAgICAg
ICAgICBpbmRleCA9IDA7CkBAIC05ODAsMTQgKzk2NCwxNCBAQCBXZWJJbnNwZWN0b3IuTG9nQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zZWxlY3RlZFNlYXJjaE1hdGNo
LmhpZ2hsaWdodC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TZWxl
Y3RlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLl9lbnN1cmVNZXNzYWdlSXNWaXNp
YmxlKHRoaXMuX3NlbGVjdGVkU2VhcmNoTWF0Y2gubWVzc2FnZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfcHJvdmlzaW9uYWxMb2FkU3RhcnRlZDogZnVuY3Rpb24oKQorICAgIF9wcm92aXNpb25h
bExvYWRTdGFydGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3N0YXJ0ZWRQcm92aXNpb25hbExv
YWQgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlYXBwZW5kUHJvdmlzaW9uYWxNZXNz
YWdlczogZnVuY3Rpb24oKQorICAgIF9yZWFwcGVuZFByb3Zpc2lvbmFsTWVzc2FnZXMoKQogICAg
IHsKICAgICAgICAgaWYgKCF0aGlzLl9zdGFydGVkUHJvdmlzaW9uYWxMb2FkKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTAwMSwxMyArOTg1LDI1IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9wcm92aXNpb25h
bE1lc3NhZ2VzID0gW107Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXJQcm92aXNpb25hbFN0
YXRlOiBmdW5jdGlvbigpCisgICAgX2NsZWFyUHJvdmlzaW9uYWxTdGF0ZSgpCiAgICAgewogICAg
ICAgICB0aGlzLl9zdGFydGVkUHJvdmlzaW9uYWxMb2FkID0gZmFsc2U7CiAgICAgICAgIHRoaXMu
X3Byb3Zpc2lvbmFsTWVzc2FnZXMgPSBbXTsgICAgICAgIAogICAgIH0KIH07CiAKLVdlYkluc3Bl
Y3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMg
PSB7CisgICAgQWxsOiAibG9nLWFsbCIsCisgICAgRXJyb3JzOiAibG9nLWVycm9ycyIsCisgICAg
V2FybmluZ3M6ICJsb2ctd2FybmluZ3MiLAorICAgIExvZ3M6ICJsb2ctbG9ncyIKK307CisKK1dl
Ykluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5JdGVtV3JhcHBlclN0eWxlQ2xhc3NOYW1lID0gImNv
bnNvbGUtaXRlbSI7CitXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuRmlsdGVyZWRPdXRTdHls
ZUNsYXNzTmFtZSA9ICJmaWx0ZXJlZC1vdXQiOworV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3
LlNlbGVjdGVkU3R5bGVDbGFzc05hbWUgPSAic2VsZWN0ZWQiOworV2ViSW5zcGVjdG9yLkxvZ0Nv
bnRlbnRWaWV3LlNlYXJjaEluUHJvZ3Jlc3NTdHlsZUNsYXNzTmFtZSA9ICJzZWFyY2gtaW4tcHJv
Z3Jlc3MiOworV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LkZpbHRlcmVkT3V0QnlTZWFyY2hT
dHlsZUNsYXNzTmFtZSA9ICJmaWx0ZXJlZC1vdXQtYnktc2VhcmNoIjsKK1dlYkluc3BlY3Rvci5M
b2dDb250ZW50Vmlldy5IaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lID0gImhpZ2hsaWdodGVkIjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xv
Z1RyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTG9nVHJlZUVsZW1lbnQuanMKaW5kZXggYTczZDBkYi4uN2ZmZDhkYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nVHJlZUVsZW1lbnQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nVHJl
ZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDIxICsyMywxOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Mb2dUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJl
cHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkxvZ1RyZWVFbGVtZW50ID0gY2xhc3MgTG9n
VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7Cisg
ICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Mb2dPYmpl
Y3QpOwogCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFdl
Ykluc3BlY3Rvci5Mb2dUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJDb25zb2xlIiksIHJlcHJlc2VudGVkT2JqZWN0LnN0YXJ0RGF0ZS50b0xvY2FsZVRp
bWVTdHJpbmcoKSwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKKyAgICAgICAgc3VwZXIoImxv
Zy1pY29uIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb25zb2xlIiksIHJlcHJlc2VudGVkT2Jq
ZWN0LnN0YXJ0RGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKSwgcmVwcmVzZW50ZWRPYmplY3QsIGZh
bHNlKTsKIAogICAgICAgICB0aGlzLl9sb2dPYmplY3QgPSByZXByZXNlbnRlZE9iamVjdDsKIAog
ICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Mb2dUcmVlRWxl
bWVudC5TdHlsZUNsYXNzTmFtZSA9ICJsb2ctaWNvbiI7Ci0KLVdlYkluc3BlY3Rvci5Mb2dUcmVl
RWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Mb2dU
cmVlRWxlbWVudCwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNDYsNSArNDMsMyBAQCBX
ZWJJbnNwZWN0b3IuTG9nVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4g
dGhpcy5fbG9nT2JqZWN0OwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5Mb2dUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuanMKaW5kZXgg
ZDI4YTgzMi4uODg5NTQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL01ldHJpY3NTdHlsZURldGFpbHNQYW5l
bC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsID0gZnVuY3Rpb24o
KQorV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIE1ldHJpY3NT
dHlsZURldGFpbHNQYW5lbCBleHRlbmRzIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbAog
ewotICAgIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5jYWxsKHRoaXMsIFdlYkluc3Bl
Y3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFzc05hbWUsICJtZXRyaWNzIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJNZXRyaWNzIikpOworICAgIGNvbnN0cnVjdG9yKCkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCJtZXRyaWNzIiwgIm1ldHJpY3MiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIk1ldHJpY3MiKSk7CiAKICAgICAgICAgdGhpcy5fYm94TW9kZWxEaWFncmFtUm93ID0g
bmV3IFdlYkluc3BlY3Rvci5Cb3hNb2RlbERldGFpbHNTZWN0aW9uUm93OwogCkBAIC0zMywxOSAr
MzUsMTIgQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQYW5lbCA9IGZ1bmN0aW9u
KCkKICAgICAgICAgdmFyIGJveE1vZGVsU2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWls
c1NlY3Rpb24oInN0eWxlLWJveC1tb2RlbCIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQm94IE1v
ZGVsIiksIFtib3hNb2RlbEdyb3VwXSk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKGJveE1vZGVsU2VjdGlvbi5lbGVtZW50KTsKLX07Ci0KLVdlYkluc3BlY3Rvci5NZXRyaWNz
U3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVDbGFzc05hbWUgPSAibWV0cmljcyI7Ci0KLVdlYkluc3Bl
Y3Rvci5NZXRyaWNzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuTWV0cmljc1N0eWxlRGV0YWlsc1BhbmVsLAorICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAg
IHsKICAgICAgICAgdGhpcy5fYm94TW9kZWxEaWFncmFtUm93Lm5vZGVTdHlsZXMgPSB0aGlzLm5v
ZGVTdHlsZXM7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLk1ldHJpY3NTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVs
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uQmFyLmpzCmluZGV4IGZiMzM2MmEuLjFkNWU5YTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmln
YXRpb25CYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTmF2aWdhdGlvbkJhci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTIgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBmdW5j
dGlvbihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMsIHJvbGUsIGxhYmVsKSB7Ci0gICAgLy8gRklY
TUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBj
YWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOworV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5hdmlnYXRpb25J
dGVtcywgcm9sZSwgbGFiZWwpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRo
aXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnN0cnVjdG9yLlN0eWxlQ2xh
c3NOYW1lIHx8IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLlN0eWxlQ2xhc3NOYW1lKTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuY29uc3RydWN0b3IuU3R5bGVD
bGFzc05hbWUpOwogICAgICAgICB0aGlzLl9lbGVtZW50LnRhYkluZGV4ID0gMDsKIAogICAgICAg
ICBpZiAocm9sZSkKQEAgLTUzLDI5ICs1NSwxNiBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJh
ciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcywgcm9sZSwgbGFiZWwpIHsKICAg
ICAgICAgfQogCiAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5fc3R5bGVF
bGVtZW50KTsKLX07Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBz
dWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXBy
ZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIp
OwotCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5TdHlsZUNsYXNzTmFtZSA9ICJuYXZpZ2F0
aW9uLWJhciI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNz
TmFtZSA9ICJjb2xsYXBzZWQiOwotCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5FdmVudCA9
IHsKLSAgICBOYXZpZ2F0aW9uSXRlbVNlbGVjdGVkOiAibmF2aWdhdGlvbi1iYXItbmF2aWdhdGlv
bi1pdGVtLXNlbGVjdGVkIgotfTsKLQotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciwKKyAg
ICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGFkZE5hdmlnYXRpb25JdGVtOiBmdW5jdGlvbihu
YXZpZ2F0aW9uSXRlbSwgcGFyZW50RWxlbWVudCkKKyAgICBhZGROYXZpZ2F0aW9uSXRlbShuYXZp
Z2F0aW9uSXRlbSwgcGFyZW50RWxlbWVudCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmlu
c2VydE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtLCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMu
bGVuZ3RoLCBwYXJlbnRFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGluc2VydE5hdmln
YXRpb25JdGVtOiBmdW5jdGlvbihuYXZpZ2F0aW9uSXRlbSwgaW5kZXgsIHBhcmVudEVsZW1lbnQp
CisgICAgaW5zZXJ0TmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0sIGluZGV4LCBwYXJlbnRF
bGVtZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQobmF2aWdhdGlvbkl0ZW0gaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0pOwogICAgICAgICBpZiAoIShuYXZp
Z2F0aW9uSXRlbSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSkpCkBAIC0x
MDcsOSArOTYsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMudXBkYXRlTGF5b3V0U29vbigpOwogCiAgICAgICAgIHJldHVybiBuYXZpZ2F0
aW9uSXRlbTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbW92ZU5hdmlnYXRpb25JdGVtOiBmdW5j
dGlvbihuYXZpZ2F0aW9uSXRlbU9ySWRlbnRpZmllck9ySW5kZXgsIGluZGV4KQorICAgIHJlbW92
ZU5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtT3JJZGVudGlmaWVyT3JJbmRleCwgaW5kZXgp
CiAgICAgewogICAgICAgICB2YXIgbmF2aWdhdGlvbkl0ZW0gPSB0aGlzLl9maW5kTmF2aWdhdGlv
bkl0ZW0obmF2aWdhdGlvbkl0ZW1PcklkZW50aWZpZXJPckluZGV4KTsKICAgICAgICAgaWYgKCFu
YXZpZ2F0aW9uSXRlbSkKQEAgLTEyOSw5ICsxMTgsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0U29vbigpOwogCiAg
ICAgICAgIHJldHVybiBuYXZpZ2F0aW9uSXRlbTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0
ZUxheW91dFNvb246IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXRTb29uKCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl91cGRhdGVMYXlvdXRUaW1lb3V0KQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTQ3LDkgKzEzNiw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUxheW91dFRpbWVvdXQgPSBz
ZXRUaW1lb3V0KHVwZGF0ZS5iaW5kKHRoaXMpLCAwKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVw
ZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fdXBkYXRlTGF5b3V0VGltZW91dCkgewogICAgICAgICAgICAgY2xlYXJUaW1l
b3V0KHRoaXMuX3VwZGF0ZUxheW91dFRpbWVvdXQpOwpAQCAtMTkxLDEyICsxODAsMTIgQEAgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlID0gewogICAgICAgICAvLyBHaXZlIGVh
Y2ggbmF2aWdhdGlvbiBpdGVtIHRoZSBvcHBvcnR1bml0eSB0byBjb2xsYXBzZSBmdXJ0aGVyLgog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX25hdmlnYXRpb25JdGVtcy5sZW5ndGg7
ICsraSkKICAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtc1tpXS51cGRhdGVMYXlvdXQo
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3RlZE5hdmlnYXRpb25JdGVtKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZE5hdmlnYXRpb25JdGVtIHx8IG51bGw7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0
aW9uSXRlbU9ySWRlbnRpZmllck9ySW5kZXgpCiAgICAgewpAQCAtMjIxLDE3ICsyMTAsMTcgQEAg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlID0gewogICAgICAgICAvLyBUaGlz
IHByZXZlbnRzIHNlbmRpbmcgdGhlIGV2ZW50IHdoaWxlIHRoZSB1c2VyIGlzIHNjcnViYmluZyB0
aGUgYmFyLgogICAgICAgICBpZiAoIXRoaXMuX21vdXNlSXNEb3duKQogICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuRXZl
bnQuTmF2aWdhdGlvbkl0ZW1TZWxlY3RlZCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF2
aWdhdGlvbkl0ZW1zKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uSXRl
bXM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtaW5pbXVtV2lk
dGgoKQogICAgIHsKQEAgLTI0MSwxNyArMjMwLDE3IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
QmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0aGlzLl9taW5p
bXVtV2lkdGg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2l6ZXNUb0ZpdCgpCiAgICAgewog
ICAgICAgICAvLyBDYW4gYmUgb3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9maW5kTmF2
aWdhdGlvbkl0ZW06IGZ1bmN0aW9uKG5hdmlnYXRpb25JdGVtT3JJZGVudGlmaWVyT3JJbmRleCkK
KyAgICBfZmluZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtT3JJZGVudGlmaWVyT3JJbmRl
eCkKICAgICB7CiAgICAgICAgIHZhciBuYXZpZ2F0aW9uSXRlbSA9IG51bGw7CiAKQEAgLTI3MCw5
ICsyNTksOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICByZXR1cm4gbmF2aWdhdGlvbkl0ZW07Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfbW91c2VEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VEb3duKGV2ZW50KQog
ICAgIHsKICAgICAgICAgLy8gT25seSBoYW5kbGUgbGVmdCBtb3VzZSBjbGlja3MuCiAgICAgICAg
IGlmIChldmVudC5idXR0b24gIT09IDApCkBAIC0zMDEsOSArMjkwLDkgQEAgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25CYXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX21vdXNlTW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZU1vdmVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fbW91c2VJc0Rvd24pOwpAQCAtMzMyLDkgKzMyMSw5
IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5zZWxlY3RlZE5hdmlnYXRpb25JdGVtID0gaXRlbUVsZW1lbnQubmF2aWdhdGlvbkl0ZW07CiAK
ICAgICAgICAgdGhpcy5zZWxlY3RlZE5hdmlnYXRpb25JdGVtLmFjdGl2ZSA9IHRydWU7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfbW91c2VVcDogZnVuY3Rpb24oZXZlbnQpCisgICAgX21vdXNlVXAo
ZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5idXR0b24gPT09IDAp
OwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9tb3VzZUlzRG93bik7CkBAIC0zNjQsOSAr
MzUzLDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlv
bigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2tleURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9rZXlEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9mb2N1c2VkKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMzk2LDE5ICszODUsMTkgQEAgV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRo
aXMuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA9IHRoaXMuX25hdmlnYXRpb25JdGVtc1tzZWxlY3Rl
ZE5hdmlnYXRpb25JdGVtSW5kZXhdOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZvY3VzOiBmdW5j
dGlvbihldmVudCkKKyAgICBfZm9jdXMoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9mb2N1
c2VkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9ibHVyOiBmdW5jdGlvbihldmVudCkK
KyAgICBfYmx1cihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2ZvY3VzZWQgPSBmYWxzZTsK
LSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVTdHlsZTogZnVuY3Rpb24oKQorICAgIF91cGRh
dGVTdHlsZSgpCiAgICAgewogICAgICAgICB0aGlzLl9uZWVkc1N0eWxlVXBkYXRlZCA9IGZhbHNl
OwogCkBAIC00MjQsOSArNDEzLDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc3R5bGVFbGVtZW50LnRleHRDb250
ZW50ID0gc3R5bGVUZXh0OwotICAgIH0sCisgICAgfQogCi0gICAgX2NhbGN1bGF0ZU1pbmltdW1X
aWR0aDogZnVuY3Rpb24oKQorICAgIF9jYWxjdWxhdGVNaW5pbXVtV2lkdGgoKQogICAgIHsKICAg
ICAgICAgdmFyIHdhc0NvbGxhcHNlZCA9IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5z
KFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lKTsKIApA
QCAtNDUwLDQgKzQzOSw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9
IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkJhci5TdHlsZUNsYXNzTmFtZSA9ICJuYXZpZ2F0aW9uLWJhciI7CitXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQiOwor
CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5FdmVudCA9IHsKKyAgICBOYXZpZ2F0aW9uSXRl
bVNlbGVjdGVkOiAibmF2aWdhdGlvbi1iYXItbmF2aWdhdGlvbi1pdGVtLXNlbGVjdGVkIgorfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05h
dmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvTmF2aWdhdGlvbkl0ZW0uanMKaW5kZXggYTMxMjU2OS4uYTdhMDU5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvbkl0ZW0u
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdh
dGlvbkl0ZW0uanMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24o
aWRlbnRpZmllciwgcm9sZSwgbGFiZWwpIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAv
LyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkl0ZW0gPSBjbGFzcyBOYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QK
K3sKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCByb2xlLCBsYWJlbCkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXIgfHwg
bnVsbDsKIApAQCAtNDIsNDEgKzQ0LDM0IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbSA9
IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHJvbGUsIGxhYmVsKSB7CiAgICAgICAgICAgICB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lc1tpXSk7CiAKICAgICAgICAgdGhpcy5fZWxl
bWVudC5uYXZpZ2F0aW9uSXRlbSA9IHRoaXM7Ci19OwotCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkl0ZW0uU3R5bGVDbGFzc05hbWUgPSAiaXRlbSI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0
ZW0uSGlkZGVuU3R5bGVDbGFzc05hbWUgPSAiaGlkZGVuIjsKLQotCi1XZWJJbnNwZWN0b3IuTmF2
aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvbkl0ZW0sCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgaWRlbnRp
ZmllcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faWRlbnRpZmllcjsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9l
bGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBhcmVudE5hdmlnYXRpb25CYXIoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudE5hdmlnYXRpb25CYXI7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKGV4cGFuZE9ubHkpCisgICAgdXBk
YXRlTGF5b3V0KGV4cGFuZE9ubHkpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBz
dWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhpZGRlbigpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5faGlkZGVuOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGhpZGRl
bihmbGFnKQogICAgIHsKQEAgLTg1LDI2ICs4MCwyMSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkl0ZW0ucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2hpZGRlbiA9IGZsYWc7CiAKLSAg
ICAgICAgaWYgKGZsYWcpCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtLkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5IaWRkZW5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZSgiaGlkZGVuIiwgZmxhZyk7CiAKICAgICAgICAg
aWYgKHRoaXMuX3BhcmVudE5hdmlnYXRpb25CYXIpCiAgICAgICAgICAgICB0aGlzLl9wYXJlbnRO
YXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dFNvb24oKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByaXZhdGUKIAogICAgIGdldCBfY2xhc3NOYW1lcygpCiAgICAgewotICAgICAgICB2YXIgY2xh
c3NOYW1lcyA9IFtXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWVdOwor
ICAgICAgICB2YXIgY2xhc3NOYW1lcyA9IFsiaXRlbSJdOwogICAgICAgICBpZiAodGhpcy5faWRl
bnRpZmllcikKICAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaCh0aGlzLl9pZGVudGlmaWVyKTsK
LSAgICAgICAgaWYgKHRoaXMuX2FkZGl0aW9uYWxDbGFzc05hbWVzIGluc3RhbmNlb2YgQXJyYXkp
Ci0gICAgICAgICAgICBjbGFzc05hbWVzID0gY2xhc3NOYW1lcy5jb25jYXQodGhpcy5fYWRkaXRp
b25hbENsYXNzTmFtZXMpOworICAgICAgICBpZiAodGhpcy5hZGRpdGlvbmFsQ2xhc3NOYW1lcyBp
bnN0YW5jZW9mIEFycmF5KQorICAgICAgICAgICAgY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXMuY29u
Y2F0KHRoaXMuYWRkaXRpb25hbENsYXNzTmFtZXMpOwogICAgICAgICByZXR1cm4gY2xhc3NOYW1l
czsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmln
YXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggODBlMDk4Yi4uYWIwZWU1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMiArMjMsMjggQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBpbWFnZSwga2V5
Ym9hcmRTaG9ydGN1dEtleSwgYXV0b1BydW5lT2xkVG9wTGV2ZWxSZXNvdXJjZVRyZWVFbGVtZW50
cywgYXV0b0hpZGVUb29sYmFySXRlbVdoZW5FbXB0eSwgd2FudHNUb3BPdmVyZmxvd1NoYWRvdywg
ZWxlbWVudCwgcm9sZSwgbGFiZWwpCitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5l
bCA9IGNsYXNzIE5hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU2lk
ZWJhclBhbmVsCiB7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgZGlzcGxheU5hbWUsIGlt
YWdlLCBrZXlib2FyZFNob3J0Y3V0S2V5LCBhdXRvUHJ1bmVPbGRUb3BMZXZlbFJlc291cmNlVHJl
ZUVsZW1lbnRzLCBhdXRvSGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5LCB3YW50c1RvcE92ZXJmbG93
U2hhZG93LCBlbGVtZW50LCByb2xlLCBsYWJlbCkKKyAgICB7CisgICAgICAgIHZhciBrZXlib2Fy
ZFNob3J0Y3V0ID0gbnVsbDsKICAgICAgICAgaWYgKGtleWJvYXJkU2hvcnRjdXRLZXkpCi0gICAg
ICAgIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29udHJvbCwga2V5
Ym9hcmRTaG9ydGN1dEtleSwgdGhpcy50b2dnbGUuYmluZCh0aGlzKSk7CisgICAgICAgICAgICBr
ZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIGtleWJvYXJkU2hvcnRj
dXRLZXkpOwogCi0gICAgaWYgKHRoaXMuX2tleWJvYXJkU2hvcnRjdXQpIHsKLSAgICAgICAgdmFy
IHNob3dUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRoZSAlcyBuYXZpZ2F0
aW9uIHNpZGViYXIgKCVzKSIpLmZvcm1hdChkaXNwbGF5TmFtZSwgdGhpcy5fa2V5Ym9hcmRTaG9y
dGN1dC5kaXNwbGF5TmFtZSk7Ci0gICAgICAgIHZhciBoaWRlVG9vbFRpcCA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiSGlkZSB0aGUgJXMgbmF2aWdhdGlvbiBzaWRlYmFyICglcykiKS5mb3JtYXQo
ZGlzcGxheU5hbWUsIHRoaXMuX2tleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUpOworICAgICAg
ICBpZiAoa2V5Ym9hcmRTaG9ydGN1dCkgeworICAgICAgICAgICAgdmFyIHNob3dUb29sVGlwID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHRoZSAlcyBuYXZpZ2F0aW9uIHNpZGViYXIgKCVz
KSIpLmZvcm1hdChkaXNwbGF5TmFtZSwga2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSk7Cisg
ICAgICAgICAgICB2YXIgaGlkZVRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkhpZGUg
dGhlICVzIG5hdmlnYXRpb24gc2lkZWJhciAoJXMpIikuZm9ybWF0KGRpc3BsYXlOYW1lLCBrZXli
b2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHZhciBzaG93VG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUgJXMgbmF2
aWdhdGlvbiBzaWRlYmFyIikuZm9ybWF0KGRpc3BsYXlOYW1lKTsKICAgICAgICAgICAgIHZhciBo
aWRlVG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0aGUgJXMgbmF2aWdhdGlv
biBzaWRlYmFyIikuZm9ybWF0KGRpc3BsYXlOYW1lKTsKICAgICAgICAgfQogCi0gICAgV2ViSW5z
cGVjdG9yLlNpZGViYXJQYW5lbC5jYWxsKHRoaXMsIGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBz
aG93VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50LCByb2xlLCBsYWJlbCB8fCBk
aXNwbGF5TmFtZSk7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93
VG9vbFRpcCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50LCByb2xlLCBsYWJlbCB8fCBkaXNw
bGF5TmFtZSk7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJuYXZpZ2F0aW9uIik7CisKKyAgICAgICAgdGhpcy5fa2V5Ym9h
cmRTaG9ydGN1dCA9IGtleWJvYXJkU2hvcnRjdXQ7CisgICAgICAgIHRoaXMuX2tleWJvYXJkU2hv
cnRjdXQuY2FsbGJhY2sgPSB0aGlzLnRvZ2dsZS5iaW5kKHRoaXMpOwogCiAgICAgICAgIHRoaXMu
X2F1dG9IaWRlVG9vbGJhckl0ZW1XaGVuRW1wdHkgPSBhdXRvSGlkZVRvb2xiYXJJdGVtV2hlbkVt
cHR5IHx8IGZhbHNlOwogCkBAIC04NiwzNiArOTIsMTkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBkaXNwbGF5TmFtZSwgaW1hZ2Us
IGsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5GcmFtZS5FdmVudC5DaGlsZEZyYW1lV2FzUmVtb3ZlZCwgdGhpcy5fY2hlY2tGb3JP
bGRSZXNvdXJjZXMsIHRoaXMpOwogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZyYW1lLkV2ZW50LlJlc291cmNlV2FzUmVtb3ZlZCwg
dGhpcy5fY2hlY2tGb3JPbGRSZXNvdXJjZXMsIHRoaXMpOwogICAgICAgICB9Ci19OwotCi1XZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJuYXZpZ2F0
aW9uIjsKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLk92ZXJmbG93U2hhZG93
RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm92ZXJmbG93LXNoYWRvdyI7Ci1XZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5Ub3BPdmVyZmxvd1NoYWRvd0VsZW1lbnRTdHlsZUNsYXNz
TmFtZSA9ICJ0b3AiOwotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuQ29udGVu
dFRyZWVPdXRsaW5lRWxlbWVudEhpZGRlblN0eWxlQ2xhc3NOYW1lID0gImhpZGRlbiI7Ci1XZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5Db250ZW50VHJlZU91dGxpbmVFbGVtZW50
U3R5bGVDbGFzc05hbWUgPSAibmF2aWdhdGlvbi1zaWRlYmFyLXBhbmVsLWNvbnRlbnQtdHJlZS1v
dXRsaW5lIjsKLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhpZGVEaXNjbG9z
dXJlQnV0dG9uc1N0eWxlQ2xhc3NOYW1lID0gImhpZGUtZGlzY2xvc3VyZS1idXR0b25zIjsKLVdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkVtcHR5Q29udGVudFBsYWNlaG9sZGVy
RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImVtcHR5LWNvbnRlbnQtcGxhY2Vob2xkZXIiOwotV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRW1wdHlDb250ZW50UGxhY2Vob2xkZXJN
ZXNzYWdlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm1lc3NhZ2UiOwotV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFuZ2xlT3BlbkNhbnZhc0lkZW50aWZp
ZXIgPSAibmF2aWdhdGlvbi1zaWRlYmFyLXBhbmVsLWRpc2Nsb3N1cmUtdHJpYW5nbGUtb3BlbiI7
Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5EaXNjbG9zdXJlVHJpYW5nbGVD
bG9zZWRDYW52YXNJZGVudGlmaWVyID0gIm5hdmlnYXRpb24tc2lkZWJhci1wYW5lbC1kaXNjbG9z
dXJlLXRyaWFuZ2xlLWNsb3NlZCI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5l
bC5EaXNjbG9zdXJlVHJpYW5nbGVOb3JtYWxDYW52YXNJZGVudGlmaWVyU3VmZml4ID0gIi1ub3Jt
YWwiOwotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFu
Z2xlU2VsZWN0ZWRDYW52YXNJZGVudGlmaWVyU3VmZml4ID0gIi1zZWxlY3RlZCI7Ci0KLVdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCBjb250ZW50VHJlZU91dGxpbmVFbGVtZW50KCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUuZWxlbWVudDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBjb250ZW50VHJlZU91dGxpbmUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBjb250
ZW50VHJlZU91dGxpbmUobmV3VHJlZU91dGxpbmUpCiAgICAgewpAQCAtMTMzLDM0ICsxMjIsMzQg
QEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl92aXNpYmxlQ29udGVudFRyZWVPdXRsaW5lcy5hZGQobmV3VHJlZU91dGxpbmUp
OwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcigpOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGNvbnRlbnRUcmVlT3V0bGluZVRvQXV0b1BydW5lKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9jb250ZW50VHJlZU91dGxpbmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmlz
aWJsZUNvbnRlbnRUcmVlT3V0bGluZXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Zp
c2libGVDb250ZW50VHJlZU91dGxpbmVzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhhc1Nl
bGVjdGVkRWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9jb250ZW50VHJl
ZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBm
aWx0ZXJCYXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbHRlckJhcjsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCByZXN0b3JpbmdTdGF0ZSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcmVzdG9yaW5nU3RhdGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVDb250
ZW50VHJlZU91dGxpbmU6IGZ1bmN0aW9uKGRvbnRIaWRlQnlEZWZhdWx0LCBzdXBwcmVzc0ZpbHRl
cmluZykKKyAgICBjcmVhdGVDb250ZW50VHJlZU91dGxpbmUoZG9udEhpZGVCeURlZmF1bHQsIHN1
cHByZXNzRmlsdGVyaW5nKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnRUcmVlT3V0bGluZUVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwogICAgICAgICBjb250ZW50VHJl
ZU91dGxpbmVFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLkNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKQEAgLTE2OCw3
ICsxNTcsNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBjb250ZW50VHJlZU91dGxpbmVFbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuQ29udGVudFRyZWVPdXRsaW5lRWxl
bWVudEhpZGRlblN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5h
cHBlbmRDaGlsZChjb250ZW50VHJlZU91dGxpbmVFbGVtZW50KTsKIAotICAgICAgICB2YXIgY29u
dGVudFRyZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKGNvbnRlbnRUcmVlT3V0bGluZUVsZW1l
bnQpOworICAgICAgICB2YXIgY29udGVudFRyZWVPdXRsaW5lID0gbmV3IFdlYkluc3BlY3Rvci5U
cmVlT3V0bGluZShjb250ZW50VHJlZU91dGxpbmVFbGVtZW50KTsKICAgICAgICAgY29udGVudFRy
ZWVPdXRsaW5lLmFsbG93c1JlcGVhdFNlbGVjdGlvbiA9IHRydWU7CiAKICAgICAgICAgaWYgKCFz
dXBwcmVzc0ZpbHRlcmluZykgewpAQCAtMTgyLDI3ICsxNzEsMjcgQEAgV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdmlz
aWJsZUNvbnRlbnRUcmVlT3V0bGluZXMuYWRkKGNvbnRlbnRUcmVlT3V0bGluZSk7CiAKICAgICAg
ICAgcmV0dXJuIGNvbnRlbnRUcmVlT3V0bGluZTsKLSAgICB9LAorICAgIH0KIAotICAgIHRyZWVF
bGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQor
ICAgIHRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFRyZWVPdXRsaW5lLmdldENhY2hlZFRy
ZWVFbGVtZW50KHJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dE
ZWZhdWx0Q29udGVudFZpZXc6IGZ1bmN0aW9uKCkKKyAgICBzaG93RGVmYXVsdENvbnRlbnRWaWV3
KCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbW5ldGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVk
IHRvIHNob3cgYSBjb250ZW50IHZpZXcgd2hlbiBubyBleGlzdGluZyB0cmVlIGVsZW1lbnQgaXMg
c2VsZWN0ZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93Q29udGVudFZpZXdGb3JDdXJyZW50
U2VsZWN0aW9uOiBmdW5jdGlvbigpCisgICAgc2hvd0NvbnRlbnRWaWV3Rm9yQ3VycmVudFNlbGVj
dGlvbigpCiAgICAgewogICAgICAgICAvLyBSZXNlbGVjdCB0aGUgc2VsZWN0ZWQgdHJlZSBlbGVt
ZW50IHRvIGNhdXNlIHRoZSBjb250ZW50IHZpZXcgdG8gYmUgc2hvd24gYXMgd2VsbC4gPHJkYXI6
Ly9wcm9ibGVtLzEwODU0NzI3PgogICAgICAgICB2YXIgc2VsZWN0ZWRUcmVlRWxlbWVudCA9IHRo
aXMuX2NvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwogICAgICAgICBpZiAo
c2VsZWN0ZWRUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHNlbGVjdGVkVHJlZUVsZW1lbnQuc2Vs
ZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlU3RhdGVUb0Nvb2tpZTogZnVuY3Rpb24o
Y29va2llKQorICAgIHNhdmVTdGF0ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGNvb2tpZSk7CiAKQEAgLTIyNiwxMCArMjE1LDEwIEBAIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJlcHJl
c2VudGVkT2JqZWN0LnNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkVycm9yOiBUcmVlRWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdCBpcyBtaXNzaW5nIGEgc2F2ZUlkZW50aXR5VG9Db29raWUgaW1wbGVtZW50YXRpb24u
IFRyZWVFbGVtZW50LmNvbnN0cnVjdG9yOiAiLCBzZWxlY3RlZFRyZWVFbGVtZW50LmNvbnN0cnVj
dG9yKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFRoaXMgY2FuIGJlIHN1cHBsZW1lbnRlZCBi
eSBzdWJjbGFzc2VzIHRoYXQgYWRtaXQgYSBzaW1wbGVyIHN0cmF0ZWd5IGZvciBzdGF0aWMgdHJl
ZSBlbGVtZW50cy4KLSAgICByZXN0b3JlU3RhdGVGcm9tQ29va2llOiBmdW5jdGlvbihjb29raWUs
IHJlbGF4ZWRNYXRjaERlbGF5KQorICAgIHJlc3RvcmVTdGF0ZUZyb21Db29raWUoY29va2llLCBy
ZWxheGVkTWF0Y2hEZWxheSkKICAgICB7CiAgICAgICAgIHRoaXMuX3BlbmRpbmdWaWV3U3RhdGVD
b29raWUgPSBjb29raWU7CiAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ1N0YXRlID0gdHJ1ZTsKQEAg
LTI1Myw5ICsyNDIsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIC8vIElmIHRoZSBzcGVjaWZpYyB0cmVlIGVsZW1lbnQgd2Fzbid0
IGZvdW5kLCB3ZSBtYXkgbmVlZCB0byB3YWl0IGZvciB0aGUgcmVzb3VyY2VzCiAgICAgICAgIC8v
IHRvIGJlIHJlZ2lzdGVyZWQuIFdlIHRyeSBvbmUgbGFzdCB0aW1lIChtYXRjaCB0eXBlIG9ubHkp
IGFmdGVyIGFuIGFyYml0cmFyeSBhbW91bnQgb2YgdGltZW91dC4KICAgICAgICAgdGhpcy5fZmlu
YWxBdHRlbXB0VG9SZXN0b3JlVmlld1N0YXRlVGltZW91dCA9IHNldFRpbWVvdXQoZmluYWxBdHRl
bXB0VG9SZXN0b3JlVmlld1N0YXRlRnJvbUNvb2tpZS5iaW5kKHRoaXMpLCByZWxheGVkTWF0Y2hE
ZWxheSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93RW1wdHlDb250ZW50UGxhY2Vob2xkZXI6
IGZ1bmN0aW9uKG1lc3NhZ2UsIGhpZGVUb29sYmFySXRlbSkKKyAgICBzaG93RW1wdHlDb250ZW50
UGxhY2Vob2xkZXIobWVzc2FnZSwgaGlkZVRvb2xiYXJJdGVtKQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQobWVzc2FnZSk7CiAKQEAgLTI2OCw5ICsyNTcsOSBAQCBXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2hpZGVU
b29sYmFySXRlbVdoZW5FbXB0eSA9IGhpZGVUb29sYmFySXRlbSB8fCBmYWxzZTsKICAgICAgICAg
dGhpcy5fdXBkYXRlVG9vbGJhckl0ZW1WaXNpYmlsaXR5KCk7CiAgICAgICAgIHRoaXMuX3VwZGF0
ZUNvbnRlbnRPdmVyZmxvd1NoYWRvd1Zpc2liaWxpdHkoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGhpZGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRlcjogZnVuY3Rpb24oKQorICAgIGhpZGVFbXB0eUNv
bnRlbnRQbGFjZWhvbGRlcigpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VtcHR5Q29udGVu
dFBsYWNlaG9sZGVyRWxlbWVudC5wYXJlbnROb2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjgwLDkgKzI2OSw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5faGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5ID0gZmFsc2U7
CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRvb2xiYXJJdGVtVmlzaWJpbGl0eSgpOwogICAgICAgICB0
aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICB1cGRhdGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRlcjogZnVuY3Rpb24obWVzc2Fn
ZSkKKyAgICB1cGRhdGVFbXB0eUNvbnRlbnRQbGFjZWhvbGRlcihtZXNzYWdlKQogICAgIHsKICAg
ICAgICAgdGhpcy5fdXBkYXRlVG9vbGJhckl0ZW1WaXNpYmlsaXR5KCk7CiAKQEAgLTI5MywzNSAr
MjgyLDM1IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIC8vIFRoZXJlIGFyZSB0cmVlIGVsZW1lbnRzLCBhbmQgbm90IGFsbCBv
ZiB0aGVtIGFyZSBoaWRkZW4gYnkgdGhlIGZpbHRlci4KICAgICAgICAgICAgIHRoaXMuaGlkZUVt
cHR5Q29udGVudFBsYWNlaG9sZGVyKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAg
IHVwZGF0ZUZpbHRlcjogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUZpbHRlcigpCiAgICAgewogICAg
ICAgICB0aGlzLl91cGRhdGVGaWx0ZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhhc0N1c3Rv
bUZpbHRlcnM6IGZ1bmN0aW9uKCkKKyAgICBoYXNDdXN0b21GaWx0ZXJzKCkKICAgICB7CiAgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1
c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIG1hdGNoVHJlZUVsZW1lbnRB
Z2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIC8vIEltcGxl
bWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0RmlsdGVyRnVuY3Rpb25z
OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEZpbHRl
ckZ1bmN0aW9ucyh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGZpbHRlckZ1
bmN0aW9uIG9mIHRoaXMuX2ZpbHRlckZ1bmN0aW9ucykgewogICAgICAgICAgICAgaWYgKGZpbHRl
ckZ1bmN0aW9uKHRyZWVFbGVtZW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhcHBs
eUZpbHRlcnNUb1RyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBhcHBseUZp
bHRlcnNUb1RyZWVFbGVtZW50KHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9maWx0ZXJCYXIuaGFzQWN0aXZlRmlsdGVycygpICYmICF0aGlzLmhhc0N1c3RvbUZpbHRlcnMo
KSkgewogICAgICAgICAgICAgLy8gTm8gZmlsdGVycywgc28gbWFrZSBldmVyeXRoaW5nIHZpc2li
bGUuCkBAIC0zOTksOSArMzg4LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIE1ha2UgdGhpcyBlbGVtZW50IGludmlzaWJs
ZSBzaW5jZSBpdCBkb2VzIG5vdCBtYXRjaC4KICAgICAgICAgdHJlZUVsZW1lbnQuaGlkZGVuID0g
dHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3c6IGZ1bmN0aW9uKCkKKyAgICBzaG93KCkK
ICAgICB7CiAgICAgICAgIGlmICghdGhpcy5wYXJlbnRTaWRlYmFyKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNDA5LDkgKzM5OCw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5wcm90
b3R5cGUuc2hvdy5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuY29udGVudFRyZWVPdXRsaW5l
RWxlbWVudC5mb2N1cygpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkK
KyAgICBzaG93bigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLnBy
b3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCkBAIC00MjAsMjYgKzQwOSwyNiBAQCBXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEZv
cmNlIHRoZSBuYXZpZ2F0aW9uIGl0ZW0gdG8gYmUgdmlzaWJsZS4gVGhpcyBtYWtlcyBzdXJlIGl0
IGlzCiAgICAgICAgIC8vIGFsd2F5cyB2aXNpYmxlIHdoZW4gdGhlIHBhbmVsIGlzIHNob3duLgog
ICAgICAgICB0aGlzLnRvb2xiYXJJdGVtLmhpZGRlbiA9IGZhbHNlOwotICAgIH0sCisgICAgfQog
Ci0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5TaWRlYmFyUGFuZWwucHJvdG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwogCiAg
ICAgICAgIHRoaXMuX3VwZGF0ZVRvb2xiYXJJdGVtVmlzaWJpbGl0eSgpOwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogICAgIAotICAgIF91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFk
b3dWaXNpYmlsaXR5U29vbjogZnVuY3Rpb24oKQorICAgIF91cGRhdGVDb250ZW50T3ZlcmZsb3dT
aGFkb3dWaXNpYmlsaXR5U29vbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdXBkYXRlQ29u
dGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0
eUlkZW50aWZpZXIgPSBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0ZUNvbnRlbnRPdmVyZmxvd1NoYWRv
d1Zpc2liaWxpdHkuYmluZCh0aGlzKSwgMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRl
Q29udGVudE92ZXJmbG93U2hhZG93VmlzaWJpbGl0eTogZnVuY3Rpb24oKQorICAgIF91cGRhdGVD
b250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCkKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLl91cGRhdGVDb250ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5SWRlbnRpZmllcjsKIApA
QCAtNDU0LDkgKzQ0Myw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZv
cm0uaXNMZWdhY3lNYWNPUykKLSAgICAgICAgICAgIGNvbnN0IGVkZ2VUaHJlc2hvbGQgPSAxMDsK
KyAgICAgICAgICAgIHZhciBlZGdlVGhyZXNob2xkID0gMTA7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNvbnN0IGVkZ2VUaHJlc2hvbGQgPSAxOworICAgICAgICAgICAgdmFyIGVkZ2VUaHJl
c2hvbGQgPSAxOwogCiAgICAgICAgIHZhciBzY3JvbGxUb3AgPSB0aGlzLmNvbnRlbnRFbGVtZW50
LnNjcm9sbFRvcDsKIApAQCAtNDY2LDE2ICs0NTUsMTYgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fdG9wT3ZlcmZs
b3dTaGFkb3dFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5fdG9wT3ZlcmZsb3dTaGFkb3dFbGVt
ZW50LnN0eWxlLm9wYWNpdHkgPSAodG9wQ292ZXJhZ2UgLyBlZGdlVGhyZXNob2xkKS50b0ZpeGVk
KDEpOwogICAgICAgICB0aGlzLl9ib3R0b21PdmVyZmxvd1NoYWRvd0VsZW1lbnQuc3R5bGUub3Bh
Y2l0eSA9ICgxIC0gKGJvdHRvbUNvdmVyYWdlIC8gZWRnZVRocmVzaG9sZCkpLnRvRml4ZWQoMSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlVG9vbGJhckl0ZW1WaXNpYmlsaXR5OiBmdW5j
dGlvbigpCisgICAgX3VwZGF0ZVRvb2xiYXJJdGVtVmlzaWJpbGl0eSgpCiAgICAgewogICAgICAg
ICAvLyBIaWRlIHRoZSBuYXZpZ2F0aW9uIGl0ZW0gaWYgcmVxdWVzdGVkIG9yIGF1dG8taGlkaW5n
IGFuZCB3ZSBhcmUgbm90IHZpc2libGUgYW5kIHdlIGFyZSBlbXB0eS4KICAgICAgICAgdmFyIHNo
b3VsZEhpZGUgPSAoKHRoaXMuX2hpZGVUb29sYmFySXRlbVdoZW5FbXB0eSB8fCB0aGlzLl9hdXRv
SGlkZVRvb2xiYXJJdGVtV2hlbkVtcHR5KSAmJiAhdGhpcy5zZWxlY3RlZCAmJiAhdGhpcy5fY29u
dGVudFRyZWVPdXRsaW5lLmNoaWxkcmVuLmxlbmd0aCk7CiAgICAgICAgIHRoaXMudG9vbGJhckl0
ZW0uaGlkZGVuID0gc2hvdWxkSGlkZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jaGVja0ZvckVt
cHR5RmlsdGVyUmVzdWx0czogZnVuY3Rpb24oKQorICAgIF9jaGVja0ZvckVtcHR5RmlsdGVyUmVz
dWx0cygpCiAgICAgewogICAgICAgICAvLyBObyB0cmVlIGVsZW1lbnRzLCBzbyBkb24ndCB0b3Vj
aCB0aGUgZW1wdHkgY29udGVudCBwbGFjZWhvbGRlci4KICAgICAgICAgaWYgKCF0aGlzLl9jb250
ZW50VHJlZU91dGxpbmUuY2hpbGRyZW4ubGVuZ3RoKQpAQCAtNDk3LDE0ICs0ODYsMTQgQEAgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAv
LyBBbGwgdG9wIGxldmVsIHRyZWUgZWxlbWVudHMgYXJlIGhpZGRlbiwgc28gZmlsdGVyaW5nIGhp
ZCBldmVyeXRoaW5nLiBTaG93IGEgbWVzc2FnZS4KICAgICAgICAgdGhpcy5zaG93RW1wdHlDb250
ZW50UGxhY2Vob2xkZXIoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBGaWx0ZXIgUmVzdWx0cyIp
KTsKICAgICAgICAgdGhpcy5fZW1wdHlGaWx0ZXJSZXN1bHRzID0gdHJ1ZTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9maWx0ZXJEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBfZmlsdGVyRGlkQ2hh
bmdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUZpbHRlcigpOwotICAgIH0sCisgICAg
fQogCi0gICAgX3VwZGF0ZUZpbHRlcjogZnVuY3Rpb24oKQorICAgIF91cGRhdGVGaWx0ZXIoKQog
ICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLl9jb250ZW50VHJl
ZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKICAgICAgICAgdmFyIHNlbGVjdGlvbldhc0hp
ZGRlbiA9IHNlbGVjdGVkVHJlZUVsZW1lbnQgJiYgc2VsZWN0ZWRUcmVlRWxlbWVudC5oaWRkZW47
CkBAIC01MzQsOSArNTIzLDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldyBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ICYmIHR5cGVvZiBj
dXJyZW50Q29udGVudFZpZXcuY3VycmVudFRpbWVsaW5lVmlldy5maWx0ZXJVcGRhdGVkID09PSAi
ZnVuY3Rpb24iKQogICAgICAgICAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5jdXJyZW50VGlt
ZWxpbmVWaWV3LmZpbHRlclVwZGF0ZWQoKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0g
ICAgX3RyZWVFbGVtZW50QWRkZWRPckNoYW5nZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAg
IF90cmVlRWxlbWVudEFkZGVkT3JDaGFuZ2VkKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAg
Ly8gRG9uJ3QgcG9wdWxhdGUgaWYgd2UgZG9uJ3QgaGF2ZSBhbnkgYWN0aXZlIGZpbHRlcnMuCiAg
ICAgICAgIC8vIFdlIG9ubHkgbmVlZCB0byBwb3B1bGF0ZSB3aGVuIGEgZmlsdGVyIG5lZWRzIHRv
IHJldmVhbC4KQEAgLTU1NCwyMyArNTQzLDIzIEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5zZWxlY3RlZCkKICAg
ICAgICAgICAgIHRoaXMuX2NoZWNrRWxlbWVudHNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llKHRy
ZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudEV4cGFuZGVkT3JD
b2xsYXBzZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF90cmVlRWxlbWVudEV4cGFuZGVk
T3JDb2xsYXBzZWQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVDb250
ZW50T3ZlcmZsb3dTaGFkb3dWaXNpYmlsaXR5KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ2Vu
ZXJhdGVTdHlsZVJ1bGVzSWZOZWVkZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZ2VuZXJhdGVTdHlsZVJ1
bGVzSWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLl9zdHlsZUVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuX3N0eWxlRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7CiAKLSAgICAgICAgY29uc3QgbWF4aW11bVNp
ZGViYXJUcmVlRGVwdGggPSAzMjsKLSAgICAgICAgY29uc3QgYmFzZUxlZnRQYWRkaW5nID0gNTsg
Ly8gTWF0Y2hlcyB0aGUgcGFkZGluZyBpbiBOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmNzcyBmb3Ig
dGhlIGl0ZW0gY2xhc3MuIEtlZXAgaW4gc3luYy4KLSAgICAgICAgY29uc3QgZGVwdGhQYWRkaW5n
ID0gMTA7CisgICAgICAgIHZhciBtYXhpbXVtU2lkZWJhclRyZWVEZXB0aCA9IDMyOworICAgICAg
ICB2YXIgYmFzZUxlZnRQYWRkaW5nID0gNTsgLy8gTWF0Y2hlcyB0aGUgcGFkZGluZyBpbiBOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLmNzcyBmb3IgdGhlIGl0ZW0gY2xhc3MuIEtlZXAgaW4gc3luYy4K
KyAgICAgICAgdmFyIGRlcHRoUGFkZGluZyA9IDEwOwogCiAgICAgICAgIHZhciBzdHlsZVRleHQg
PSAiIjsKICAgICAgICAgdmFyIGNoaWxkcmVuU3Vic3RyaW5nID0gIiI7CkBAIC01ODQsOSArNTcz
LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5fc3R5bGVFbGVtZW50
LnRleHRDb250ZW50ID0gc3R5bGVUZXh0OwogCiAgICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5k
Q2hpbGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuX3N0eWxlRWxlbWVudCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ2VuZXJhdGVEaXNjbG9zdXJlVHJpYW5nbGVzSWZOZWVk
ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfZ2VuZXJhdGVEaXNjbG9zdXJlVHJpYW5nbGVzSWZOZWVkZWQo
KQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVs
Ll9nZW5lcmF0ZWREaXNjbG9zdXJlVHJpYW5nbGVzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NjI1LDkgKzYxNCw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICBnZW5lcmF0ZUNvbG9yZWRJbWFnZXNGb3JDU1MoIkltYWdlcy9E
aXNjbG9zdXJlVHJpYW5nbGVTbWFsbE9wZW4uc3ZnIiwgc3BlY2lmaWNhdGlvbnMsIDEzLCAxMywg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFuZ2xlT3Bl
bkNhbnZhc0lkZW50aWZpZXIpOwogICAgICAgICBnZW5lcmF0ZUNvbG9yZWRJbWFnZXNGb3JDU1Mo
IkltYWdlcy9EaXNjbG9zdXJlVHJpYW5nbGVTbWFsbENsb3NlZC5zdmciLCBzcGVjaWZpY2F0aW9u
cywgMTMsIDEzLCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5EaXNjbG9zdXJl
VHJpYW5nbGVDbG9zZWRDYW52YXNJZGVudGlmaWVyKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9j
aGVja0Zvck9sZFJlc291cmNlczogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NoZWNrRm9yT2xkUmVz
b3VyY2VzKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NoZWNrRm9yT2xkUmVzb3Vy
Y2VzVGltZW91dElkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02NTcsMTcgKzY0
NiwxNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgLy8gQ2hlY2sgb24gYSBkZWxheSB0byBjb2FsZXNjZSBtdWx0aXBsZSBjYWxs
cyB0byBfY2hlY2tGb3JPbGRSZXNvdXJjZXMuCiAgICAgICAgIHRoaXMuX2NoZWNrRm9yT2xkUmVz
b3VyY2VzVGltZW91dElkZW50aWZpZXIgPSBzZXRUaW1lb3V0KGRlbGF5ZWRXb3JrLmJpbmQodGhp
cyksIDApOwotICAgIH0sCisgICAgfQogCi0gICAgX2lzVHJlZUVsZW1lbnRXaXRob3V0UmVwcmVz
ZW50ZWRPYmplY3Q6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF9pc1RyZWVFbGVtZW50V2l0
aG91dFJlcHJlc2VudGVkT2JqZWN0KHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50CiAg
ICAgICAgICAgICB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFz
ZUhvc3RUcmVlRWxlbWVudAogICAgICAgICAgICAgfHwgdHlwZW9mIHRyZWVFbGVtZW50LnJlcHJl
c2VudGVkT2JqZWN0ID09PSAic3RyaW5nIgogICAgICAgICAgICAgfHwgdHJlZUVsZW1lbnQucmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBTdHJpbmc7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
Y2hlY2tPdXRsaW5lc0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWU6IGZ1bmN0aW9uKG1hdGNoVHlw
ZU9ubHkpCisgICAgX2NoZWNrT3V0bGluZXNGb3JQZW5kaW5nVmlld1N0YXRlQ29va2llKG1hdGNo
VHlwZU9ubHkpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3BlbmRpbmdWaWV3U3RhdGVDb29r
aWUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02ODIsOSArNjcxLDkgQEAgV2ViSW5zcGVjdG9y
Lk5hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9KTsKIAogICAg
ICAgICByZXR1cm4gdGhpcy5fY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWUo
dmlzaWJsZVRyZWVFbGVtZW50cywgbWF0Y2hUeXBlT25seSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3U3RhdGVDb29raWU6IGZ1bmN0aW9uKHRyZWVF
bGVtZW50cywgbWF0Y2hUeXBlT25seSkKKyAgICBfY2hlY2tFbGVtZW50c0ZvclBlbmRpbmdWaWV3
U3RhdGVDb29raWUodHJlZUVsZW1lbnRzLCBtYXRjaFR5cGVPbmx5KQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9wZW5kaW5nVmlld1N0YXRlQ29va2llKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtNzQ2LDMgKzczNSwxNSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5PdmVyZmxvd1NoYWRvd0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJv
dmVyZmxvdy1zaGFkb3ciOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuVG9w
T3ZlcmZsb3dTaGFkb3dFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAidG9wIjsKK1dlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkNvbnRlbnRUcmVlT3V0bGluZUVsZW1lbnRIaWRkZW5T
dHlsZUNsYXNzTmFtZSA9ICJoaWRkZW4iOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFy
UGFuZWwuQ29udGVudFRyZWVPdXRsaW5lRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm5hdmlnYXRp
b24tc2lkZWJhci1wYW5lbC1jb250ZW50LXRyZWUtb3V0bGluZSI7CitXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5IaWRlRGlzY2xvc3VyZUJ1dHRvbnNTdHlsZUNsYXNzTmFtZSA9
ICJoaWRlLWRpc2Nsb3N1cmUtYnV0dG9ucyI7CitXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5FbXB0eUNvbnRlbnRQbGFjZWhvbGRlckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJl
bXB0eS1jb250ZW50LXBsYWNlaG9sZGVyIjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLkVtcHR5Q29udGVudFBsYWNlaG9sZGVyTWVzc2FnZUVsZW1lbnRTdHlsZUNsYXNzTmFt
ZSA9ICJtZXNzYWdlIjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkRpc2Ns
b3N1cmVUcmlhbmdsZU9wZW5DYW52YXNJZGVudGlmaWVyID0gIm5hdmlnYXRpb24tc2lkZWJhci1w
YW5lbC1kaXNjbG9zdXJlLXRyaWFuZ2xlLW9wZW4iOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25T
aWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFuZ2xlQ2xvc2VkQ2FudmFzSWRlbnRpZmllciA9ICJu
YXZpZ2F0aW9uLXNpZGViYXItcGFuZWwtZGlzY2xvc3VyZS10cmlhbmdsZS1jbG9zZWQiOworV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuRGlzY2xvc3VyZVRyaWFuZ2xlTm9ybWFs
Q2FudmFzSWRlbnRpZmllclN1ZmZpeCA9ICItbm9ybWFsIjsKK1dlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLkRpc2Nsb3N1cmVUcmlhbmdsZVNlbGVjdGVkQ2FudmFzSWRlbnRpZmll
clN1ZmZpeCA9ICItc2VsZWN0ZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZU92
ZXJ2aWV3R3JhcGguanMKaW5kZXggODU2Nzc4Yi4uOGQzMzllNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lT3ZlcnZp
ZXdHcmFwaC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLmpzCkBAIC0xLDYgKzEsNiBAQAogCiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMzIgKzI0LDIzIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk5ldHdv
cmtUaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZSkKK1dlYkluc3BlY3Rv
ci5OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoID0gY2xhc3MgTmV0d29ya1RpbWVsaW5lT3Zl
cnZpZXdHcmFwaCBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgKIHsK
LSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLmNhbGwodGhpcywgdGltZWxp
bmUpOworICAgIGNvbnN0cnVjdG9yKHRpbWVsaW5lKQorICAgIHsKKyAgICAgICAgc3VwZXIodGlt
ZWxpbmUpOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5l
dHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibmV0d29yayIpOwogCiAgICAgICAgIHRpbWVsaW5lLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0
aGlzLl9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAgICAgICAgIHRpbWVsaW5l
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlRpbWVzVXBkYXRl
ZCwgdGhpcy5uZWVkc0xheW91dCwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5yZXNldCgpOwotfTsK
LQotV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguU3R5bGVDbGFzc05h
bWUgPSAibmV0d29yayI7Ci1XZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFw
aC5HcmFwaFJvd1N0eWxlQ2xhc3NOYW1lID0gImdyYXBoLXJvdyI7Ci1XZWJJbnNwZWN0b3IuTmV0
d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5CYXJTdHlsZUNsYXNzTmFtZSA9ICJiYXIiOwotV2Vi
SW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguSW5hY3RpdmVCYXJTdHlsZUNs
YXNzTmFtZSA9ICJpbmFjdGl2ZSI7Ci1XZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZp
ZXdHcmFwaC5VbmZpbmlzaGVkU3R5bGVDbGFzc05hbWUgPSAidW5maW5pc2hlZCI7Ci1XZWJJbnNw
ZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5NYXhpbXVtUm93Q291bnQgPSA2Owot
Ci1XZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVPdmVydmlld0dy
YXBoLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5w
cm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICByZXNldDogZnVuY3Rpb24o
KQorICAgIHJlc2V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2
aWV3R3JhcGgucHJvdG90eXBlLnJlc2V0LmNhbGwodGhpcyk7CiAKQEAgLTY4LDkgKzU5LDkgQEAg
V2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewog
CiAgICAgICAgICAgICByb3dSZWNvcmRzLl9fcmVjb3JkQmFycyA9IFtdOwogICAgICAgICB9Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVM
YXlvdXQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFw
aC5wcm90b3R5cGUudXBkYXRlTGF5b3V0LmNhbGwodGhpcyk7CiAKQEAgLTEwNywxMSArOTgsMTEg
QEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIHJvd1JlY29yZEJhcnNbcmVjb3JkQmFySW5kZXhdLmVsZW1lbnQu
cmVtb3ZlKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAg
IC8vIFByaXZhdGUKIAotICAgIF9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdmFyIHJlc291cmNlVGltZWxpbmVSZWNvcmQgPSBldmVudC5kYXRhLnJlY29yZDsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2VUaW1lbGluZVJlY29yZCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lUmVjb3JkKTsKQEAgLTE2MSwzICsxNTIsOSBAQCBX
ZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuTmV0
d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5HcmFwaFJvd1N0eWxlQ2xhc3NOYW1lID0gImdyYXBo
LXJvdyI7CitXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5CYXJTdHls
ZUNsYXNzTmFtZSA9ICJiYXIiOworV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3
R3JhcGguSW5hY3RpdmVCYXJTdHlsZUNsYXNzTmFtZSA9ICJpbmFjdGl2ZSI7CitXZWJJbnNwZWN0
b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5VbmZpbmlzaGVkU3R5bGVDbGFzc05hbWUg
PSAidW5maW5pc2hlZCI7CitXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFw
aC5NYXhpbXVtUm93Q291bnQgPSA2OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZVZpZXcuanMKaW5k
ZXggODQzZTNjNy4uMWRhY2M3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDE2ICsyMywxOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3ID0gZnVuY3Rpb24odGltZWxpbmUpCitX
ZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lVmlldyA9IGNsYXNzIE5ldHdvcmtUaW1lbGluZVZp
ZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lVmlldy5jYWxsKHRoaXMsIHRpbWVsaW5lKTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1l
bGluZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHRpbWVsaW5lKTsKIAogICAgICAgICBjb25zb2xl
LmFzc2VydCh0aW1lbGluZS50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlw
ZS5OZXR3b3JrKTsKIAogICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUu
b25zZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7CiAgICAgICAg
IHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5vbmRlc2VsZWN0ID0gdGhpcy5fdHJl
ZUVsZW1lbnREZXNlbGVjdGVkLmJpbmQodGhpcyk7ICAgIAogICAgICAgICB0aGlzLm5hdmlnYXRp
b25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhpZGVEaXNjbG9zdXJlQnV0dG9uc1N0eWxlQ2xhc3NOYW1l
KTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LlRyZWVPdXRsaW5lU3R5bGVD
bGFzc05hbWUpOworICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxl
bWVudC5jbGFzc0xpc3QuYWRkKCJuZXR3b3JrIik7CiAKICAgICAgICAgdmFyIGNvbHVtbnMgPSB7
ZG9tYWluOiB7fSwgdHlwZToge30sIG1ldGhvZDoge30sIHNjaGVtZToge30sIHN0YXR1c0NvZGU6
IHt9LCBjYWNoZWQ6IHt9LCBzaXplOiB7fSwgdHJhbnNmZXJTaXplOiB7fSwgcmVxdWVzdFNlbnQ6
IHt9LCBsYXRlbmN5OiB7fSwgZHVyYXRpb246IHt9fTsKIApAQCAtOTEsNzYgKzkzLDY5IEBAIFdl
Ykluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3ID0gZnVuY3Rpb24odGltZWxpbmUpCiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyID0gInJlcXVlc3RTZW50IjsK
ICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydE9yZGVyID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LlNvcnRPcmRlci5Bc2NlbmRpbmc7CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lVmlldy5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuZXR3b3JrIik7CiAgICAgICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKIAogICAgICAgICB0aW1l
bGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRB
ZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogCiAgICAgICAg
IHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107Ci19OwotCi1XZWJJbnNwZWN0b3IuTmV0d29ya1Rp
bWVsaW5lVmlldy5TdHlsZUNsYXNzTmFtZSA9ICJuZXR3b3JrIjsKLVdlYkluc3BlY3Rvci5OZXR3
b3JrVGltZWxpbmVWaWV3LlRyZWVPdXRsaW5lU3R5bGVDbGFzc05hbWUgPSAibmV0d29yayI7Ci0K
LVdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCBuYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lTGFiZWwoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3VyY2VzIik7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUuc2hvd24uY2FsbCh0
aGlzKTsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5zaG93bigpOwotICAgIH0sCisgICAgfQog
Ci0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2RhdGFHcmlkLmhpZGRlbigpOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dy5wcm90b3R5cGUuaGlkZGVuLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRh
dGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0LmNhbGwodGhp
cyk7CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAg
dGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBtYXRj
aFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQor
ICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhR3JpZC50cmVlRWxlbWVudE1hdGNoZXNBY3Rp
dmVTY29wZUZpbHRlcnModHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzZXQ6
IGZ1bmN0aW9uKCkKKyAgICByZXNldCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVWaWV3LnByb3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2Rh
dGFHcmlkLnJlc2V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAg
IHRyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICB0
cmVlRWxlbWVudFBhdGhDb21wb25lbnRTZWxlY3RlZChldmVudCkKICAgICB7CiAgICAgICAgIHZh
ciBkYXRhR3JpZE5vZGUgPSB0aGlzLl9kYXRhR3JpZC5kYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVu
dChldmVudC5kYXRhLnBhdGhDb21wb25lbnQuZ2VuZXJhbFRyZWVFbGVtZW50KTsKICAgICAgICAg
aWYgKCFkYXRhR3JpZE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRhdGFHcmlk
Tm9kZS5yZXZlYWxBbmRTZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUK
IAotICAgIF9wcm9jZXNzUGVuZGluZ1JlY29yZHM6IGZ1bmN0aW9uKCkKKyAgICBfcHJvY2Vzc1Bl
bmRpbmdSZWNvcmRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1JlY29yZHMu
bGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTc4LDkgKzE3Myw5IEBAIFdlYkluc3Bl
Y3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbmV0
d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9uZXR3b3JrVGlt
ZWxpbmVSZWNvcmRBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZVRpbWVs
aW5lUmVjb3JkID0gZXZlbnQuZGF0YS5yZWNvcmQ7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJl
c291cmNlVGltZWxpbmVSZWNvcmQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1l
bGluZVJlY29yZCk7CkBAIC0xODgsMjUgKzE4MywyNSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1Rp
bWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzLnB1
c2gocmVzb3VyY2VUaW1lbGluZVJlY29yZCk7CiAKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkRmlsdGVyc0RpZENoYW5nZTogZnVuY3Rp
b24oZXZlbnQpCisgICAgX2RhdGFHcmlkRmlsdGVyc0RpZENoYW5nZShldmVudCkKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC51cGRhdGVGaWx0ZXIoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhR3JpZE5vZGVTZWxlY3RlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX2RhdGFHcmlkTm9kZVNlbGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50
LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF90cmVlRWxlbWVudERlc2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF90cmVl
RWxlbWVudERlc2VsZWN0ZWQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAodHJlZUVs
ZW1lbnQuc3RhdHVzKQogICAgICAgICAgICAgdHJlZUVsZW1lbnQuc3RhdHVzID0gIiI7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1l
bnQsIHNlbGVjdGVkQnlVc2VyKQorICAgIF90cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50
LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZC5zaG91
bGRJZ25vcmVTZWxlY3Rpb25FdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjI0LDkg
KzIxOSw5IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfQogCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gdHJlZSBlbGVtZW50
IHNlbGVjdGVkLiIpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVRyZWVFbGVtZW50V2l0
aENsb3NlQnV0dG9uOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdXBkYXRlVHJlZUVsZW1l
bnRXaXRoQ2xvc2VCdXR0b24odHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5f
Y2xvc2VTdGF0dXNCdXR0b24pIHsKICAgICAgICAgICAgIHRyZWVFbGVtZW50LnN0YXR1cyA9IHRo
aXMuX2Nsb3NlU3RhdHVzQnV0dG9uLmVsZW1lbnQ7CkBAIC0yMzksOSArMjM0LDkgQEAgV2ViSW5z
cGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYg
KHRyZWVFbGVtZW50ID09PSB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuc2VsZWN0
ZWRUcmVlRWxlbWVudCkKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVUcmVlRWxlbWVudFdp
dGhDbG9zZUJ1dHRvbih0cmVlRWxlbWVudCk7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfY2xvc2VTdGF0dXNCdXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfY2xvc2VTdGF0dXNCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
dGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQuZGVz
ZWxlY3QoKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVsLnNob3dU
aW1lbGluZVZpZXdGb3JUaW1lbGluZSh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFByZXZp
ZXdWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2Jq
ZWN0UHJldmlld1ZpZXcuanMKaW5kZXggYTFjYmI5Mi4uZTgxMjI5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJldmlld1ZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0
UHJldmlld1ZpZXcuanMKQEAgLTIzLDEzICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3VmlldyA9IGZ1
bmN0aW9uKHByZXZpZXcsIG1vZGUpCitXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcgPSBj
bGFzcyBPYmplY3RQcmV2aWV3VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAg
ICBjb25zdHJ1Y3RvcihwcmV2aWV3LCBtb2RlKQogICAgIHsKLSAgICAvLyBGSVhNRTogQ29udmVy
dCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIo
KS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KICAgICAgICAgY29u
c29sZS5hc3NlcnQocHJldmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3
KTsKIAorICAgICAgICBzdXBlcigpOworCiAgICAgICAgIHRoaXMuX3ByZXZpZXcgPSBwcmV2aWV3
OwogICAgICAgICB0aGlzLl9tb2RlID0gbW9kZSB8fCBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmll
d1ZpZXcuTW9kZS5GdWxsOwogCkBAIC01Myw1MCArNTQsNDEgQEAgV2ViSW5zcGVjdG9yLk9iamVj
dFByZXZpZXdWaWV3ID0gZnVuY3Rpb24ocHJldmlldywgbW9kZSkKIAogICAgICAgICBpZiAodGhp
cy5fbG9zc2xlc3MpCiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxv
c3NsZXNzIik7Ci19OwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcuTW9kZSA9IHsK
LSAgICBCcmllZjogU3ltYm9sKCJvYmplY3QtcHJldmlldy1icmllZiIpLAotICAgIEZ1bGw6IFN5
bWJvbCgib2JqZWN0LXByZXZpZXctZnVsbCIpLAotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdFBy
ZXZpZXdWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9i
amVjdFByZXZpZXdWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgcHJldmlldygpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fcHJldmlldzsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IG1vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX21v
ZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbG9zc2xlc3MoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2xvc3NsZXNzOwotICAgIH0sCisgICAgfQogCiAgICAgc2hvd1RpdGxlKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5oaWRkZW4gPSBmYWxzZTsKICAgICAg
ICAgdGhpcy5fcHJldmlld0VsZW1lbnQuaGlkZGVuID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNob3dQcmV2aWV3KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC5oaWRk
ZW4gPSB0cnVlOwogICAgICAgICB0aGlzLl9wcmV2aWV3RWxlbWVudC5oaWRkZW4gPSBmYWxzZTsK
LSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApAQCAtMTA3LDEyICs5OSwxMiBAQCBX
ZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5fdGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5Gb3JtYXR0ZWRWYWx1
ZS5jcmVhdGVFbGVtZW50Rm9yT2JqZWN0UHJldmlldyh0aGlzLl9wcmV2aWV3KSk7CiAgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHRoaXMuX3RpdGxlRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMu
X3ByZXZpZXcuZGVzY3JpcHRpb24gfHwgIiI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfbnVtYmVy
T2ZQcm9wZXJ0aWVzVG9TaG93SW5Nb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9t
b2RlID09PSBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlld1ZpZXcuTW9kZS5CcmllZiA/IDMgOiBJ
bmZpbml0eTsKLSAgICB9LAorICAgIH0KIAogICAgIF9hcHBlbmRQcmV2aWV3KGVsZW1lbnQsIHBy
ZXZpZXcpCiAgICAgewpAQCAtMTM5LDcgKzEzMSw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2
aWV3Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FwcGVu
ZFByb3BlcnR5UHJldmlld3MoYm9keUVsZW1lbnQsIHByZXZpZXcpOwogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiB0aGlzLl9hcHBlbmRWYWx1ZVByZXZpZXcoYm9keUVsZW1lbnQsIHByZXZpZXcp
OwotICAgIH0sCisgICAgfQogCiAgICAgX2FwcGVuZEVudHJ5UHJldmlld3MoZWxlbWVudCwgcHJl
dmlldykKICAgICB7CkBAIC0xNzIsNyArMTY0LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZp
ZXdWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShpc0l0ZXJhdG9yID8gIl0iIDogIn0iKSk7CiAKICAgICAgICAgcmV0
dXJuIGxvc3NsZXNzOwotICAgIH0sCisgICAgfQogCiAgICAgX2FwcGVuZFByb3BlcnR5UHJldmll
d3MoZWxlbWVudCwgcHJldmlldykKICAgICB7CkBAIC0yMjQsNyArMjE2LDcgQEAgV2ViSW5zcGVj
dG9yLk9iamVjdFByZXZpZXdWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxlbWVudC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShpc0FycmF5ID8gIl0iIDogIn0iKSk7CiAK
ICAgICAgICAgcmV0dXJuIHByZXZpZXcubG9zc2xlc3M7Ci0gICAgfSwKKyAgICB9CiAKICAgICBf
YXBwZW5kVmFsdWVQcmV2aWV3KGVsZW1lbnQsIHByZXZpZXcpCiAgICAgewpAQCAtMjMyLDMgKzIy
NCw4IEBAIFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3
Vmlldy5Nb2RlID0geworICAgIEJyaWVmOiBTeW1ib2woIm9iamVjdC1wcmV2aWV3LWJyaWVmIiks
CisgICAgRnVsbDogU3ltYm9sKCJvYmplY3QtcHJldmlldy1mdWxsIiksCit9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUFy
cmF5SW5kZXhUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL09iamVjdFRyZWVBcnJheUluZGV4VHJlZUVsZW1lbnQuanMKaW5kZXggMmU5ZWZm
Zi4uNjg5NWRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlQXJyYXlJbmRleFRy
ZWVFbGVtZW50LmpzCkBAIC0yMywxMSArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVl
RWxlbWVudCA9IGZ1bmN0aW9uKHByb3BlcnR5LCBwcm9wZXJ0eVBhdGgpCitXZWJJbnNwZWN0b3Iu
T2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVBcnJheUlu
ZGV4VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxl
bWVudAogewotICAgIGNvbnNvbGUuYXNzZXJ0KHByb3BlcnR5LmlzSW5kZXhQcm9wZXJ0eSgpLCAi
QXJyYXlJbmRleFRyZWVFbGVtZW50IGV4cGVjdHMgbnVtZXJpYyBwcm9wZXJ0eSBuYW1lcyIpOwor
ICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5LCBwcm9wZXJ0eVBhdGgpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydChwcm9wZXJ0eS5pc0luZGV4UHJvcGVydHkoKSwgIk9iamVjdFRyZWVBcnJh
eUluZGV4VHJlZUVsZW1lbnQgZXhwZWN0cyBudW1lcmljIHByb3BlcnR5IG5hbWVzIik7CiAKLSAg
ICBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5jYWxsKHRoaXMsIHByb3Bl
cnR5LCBwcm9wZXJ0eVBhdGgsIHByb3BlcnR5KTsKKyAgICAgICAgc3VwZXIocHJvcGVydHksIHBy
b3BlcnR5UGF0aCwgcHJvcGVydHkpOwogCiAgICAgICAgIHRoaXMubWFpblRpdGxlID0gdGhpcy5f
dGl0bGVGcmFnbWVudCgpOwogICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgib2JqZWN0LXRyZWUt
cHJvcGVydHkiKTsKQEAgLTM1LDExICszNyw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQXJy
YXlJbmRleFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocHJvcGVydHksIHByb3BlcnR5UGF0aCkKIAog
ICAgICAgICBpZiAoIXRoaXMucHJvcGVydHkuaGFzVmFsdWUoKSkKICAgICAgICAgICAgIHRoaXMu
YWRkQ2xhc3NOYW1lKCJhY2Nlc3NvciIpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVB
cnJheUluZGV4VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICB9
CiAKICAgICAvLyBQcm90ZWN0ZWQKIApAQCAtNDgsNyArNDYsNyBAQCBXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZUFycmF5SW5kZXhUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
bWFpblRpdGxlID0gdGhpcy5fdGl0bGVGcmFnbWVudCgpOwogCiAgICAgICAgIHRoaXMucmVtb3Zl
Q2xhc3NOYW1lKCJhY2Nlc3NvciIpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9P
YmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5qcwppbmRleCBmNDBlYmY5
Li41NWE0ZmJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQuanMK
QEAgLTIzLDQ1ICsyMyw0MyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24o
cmVwcmVzZW50ZWRPYmplY3QsIHByb3BlcnR5UGF0aCwgcHJvcGVydHkpCitXZWJJbnNwZWN0b3Iu
T2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudCA9IGNsYXNzIE9iamVjdFRyZWVCYXNlVHJlZUVsZW1l
bnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50Cit7CisgICAgY29uc3Ry
dWN0b3IocmVwcmVzZW50ZWRPYmplY3QsIHByb3BlcnR5UGF0aCwgcHJvcGVydHkpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHByb3BlcnR5UGF0aCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBh
dGgpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghcHJvcGVydHkgfHwgcHJvcGVydHkgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yKTsKIAorICAgICAgICBzdXBlcihu
dWxsLCBudWxsLCBudWxsLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOworCiAgICAgICAgIHRo
aXMuX3Byb3BlcnR5ID0gcHJvcGVydHk7CiAgICAgICAgIHRoaXMuX3Byb3BlcnR5UGF0aCA9IHBy
b3BlcnR5UGF0aDsKIAotICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQuY2FsbCh0
aGlzLCBudWxsLCBudWxsLCBudWxsLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOwotCiAgICAg
ICAgIHRoaXMuc21hbGwgPSB0cnVlOwogICAgICAgICB0aGlzLnRvZ2dsZU9uQ2xpY2sgPSB0cnVl
OwogICAgICAgICB0aGlzLnNlbGVjdGFibGUgPSBmYWxzZTsKICAgICAgICAgdGhpcy50b29sdGlw
SGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVC
YXNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IHByb3BlcnR5KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0
eTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcm9wZXJ0eVBhdGgoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3Byb3BlcnR5UGF0aDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFBy
b3RlY3RlZAogCiAgICAgb25jb250ZXh0bWVudShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
X2NvbnRleHRNZW51SGFuZGxlcihldmVudCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICByZXNvbHZl
ZFZhbHVlKCkKICAgICB7CkBAIC03MSw3ICs2OSw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVl
QmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3Byb3BlcnR5
Lmhhc1ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHkudmFsdWU7CiAg
ICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgcmVzb2x2ZWRWYWx1ZVBy
b3BlcnR5UGF0aCgpCiAgICAgewpAQCAtODEsMTkgKzc5LDE5IEBAIFdlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3By
b3BlcnR5Lmhhc1ZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvcGVydHlQYXRo
LmFwcGVuZFByb3BlcnR5RGVzY3JpcHRvcih0aGlzLl9wcm9wZXJ0eS52YWx1ZSwgdGhpcy5fcHJv
cGVydHksIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5WYWx1ZSk7CiAgICAgICAgIHJl
dHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgdGhpc1Byb3BlcnR5UGF0aCgpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wcm9wZXJ0eSk7CiAgICAgICAgIHJldHVy
biB0aGlzLl9wcm9wZXJ0eVBhdGguYXBwZW5kUHJvcGVydHlEZXNjcmlwdG9yKG51bGwsIHRoaXMu
X3Byb3BlcnR5LCB0aGlzLnByb3BlcnR5UGF0aFR5cGUoKSk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBoYWRFcnJvcigpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wcm9wZXJ0
eSk7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0eS53YXNUaHJvd24gfHwgdGhpcy5fZ2V0
dGVySGFkRXJyb3I7Ci0gICAgfSwKKyAgICB9CiAKICAgICBwcm9wZXJ0eVBhdGhUeXBlKCkKICAg
ICB7CkBAIC0xMDUsNyArMTAzLDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVCYXNlVHJlZUVs
ZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fcHJvcGVydHkuaGFzU2V0dGVy
KCkpCiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aC5UeXBlLlNl
dHRlcjsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eVBhdGguVHlwZS5WYWx1
ZTsKLSAgICB9LAorICAgIH0KIAogICAgIHByb3BlcnR5UGF0aFN0cmluZyhwcm9wZXJ0eVBhdGgp
CiAgICAgewpAQCAtMTEzLDcgKzExMSw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIlVuYWJsZSB0byBkZXRlcm1pbmUgcGF0aCB0byBwcm9wZXJ0eSBmcm9tIHJvb3Qi
KTsKIAogICAgICAgICByZXR1cm4gcHJvcGVydHlQYXRoLmRpc3BsYXlQYXRoKHRoaXMucHJvcGVy
dHlQYXRoVHlwZSgpKTsKLSAgICB9LAorICAgIH0KIAogICAgIGNyZWF0ZUludGVyYWN0aXZlR2V0
dGVyRWxlbWVudCgpCiAgICAgewpAQCAtMTM0LDcgKzEzMiw3IEBAIFdlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfS5iaW5kKHRoaXMp
KTsKIAogICAgICAgICByZXR1cm4gZ2V0dGVyRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAg
IGNyZWF0ZVJlYWRPbmx5SWNvbkVsZW1lbnQoKQogICAgIHsKQEAgLTE0Miw3ICsxNDAsNyBAQCBX
ZWJJbnNwZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJlYWRPbmx5RWxlbWVudC5jbGFzc05hbWUgPSAicmVhZC1vbmx5IjsKICAgICAgICAgcmVh
ZE9ubHlFbGVtZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWFkIG9ubHkiKTsK
ICAgICAgICAgcmV0dXJuIHJlYWRPbmx5RWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByaXZhdGUKIApAQCAtMTYwLDcgKzE1OCw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFz
ZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5xdWlj
a0NvbnNvbGUucHJvbXB0LnB1c2hIaXN0b3J5SXRlbSh0ZXh0KTsKIAogICAgICAgICBXZWJJbnNw
ZWN0b3IuY29uc29sZUxvZ1ZpZXdDb250cm9sbGVyLmFwcGVuZEltbWVkaWF0ZUV4ZWN1dGlvbldp
dGhSZXN1bHQodGV4dCwgcmVzb2x2ZWRWYWx1ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfY29u
dGV4dE1lbnVIYW5kbGVyKGV2ZW50KQogICAgIHsKQEAgLTE4NCw3ICsxODIsNyBAQCBXZWJJbnNw
ZWN0b3IuT2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
aWYgKCFjb250ZXh0TWVudS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBjb250ZXh0TWVudS5zaG93
KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfYXBwZW5kTWVudXNJdGVtc0Zvck9iamVjdChjb250
ZXh0TWVudSwgcmVzb2x2ZWRWYWx1ZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVu
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRy
ZWVNYXBFbnRyeVRyZWVFbGVtZW50LmpzCmluZGV4IGZiOTJkOGYuLmQ2YmE0N2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVN
YXBFbnRyeVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LmpzCkBAIC0yMyw0MiAr
MjMsNDAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihvYmplY3Qs
IHByb3BlcnR5UGF0aCkKK1dlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVu
dCA9IGNsYXNzIE9iamVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihvYmplY3Qs
IHByb3BlcnR5UGF0aCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG9iamVjdCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpOwogCi0gICAgdGhpcy5fb2JqZWN0ID0g
b2JqZWN0OwotCiAgICAgICAgIC8vIFRyZWF0IHRoZSBzYW1lIGFzIGFuIGFycmF5LWluZGV4IGp1
c3Qgd2l0aCBkaWZmZXJlbnQgc3RyaW5ncyBhbmQgd2lkdGhzLgotICAgIFdlYkluc3BlY3Rvci5P
YmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmNhbGwodGhpcywgdGhpcy5fb2JqZWN0LCBwcm9wZXJ0
eVBhdGgpOworICAgICAgICBzdXBlcih0aGlzLl9vYmplY3QsIHByb3BlcnR5UGF0aCk7CisKKyAg
ICAgICAgdGhpcy5fb2JqZWN0ID0gb2JqZWN0OwogCiAgICAgICAgIHRoaXMubWFpblRpdGxlID0g
dGhpcy5fdGl0bGVGcmFnbWVudCgpOwogICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSgib2JqZWN0
LXRyZWUtYXJyYXktaW5kZXgiKTsKICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoIm9iamVjdC10
cmVlLW1hcC1lbnRyeSIpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBFbnRyeVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVNYXBFbnRyeVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IG9iamVjdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb2Jq
ZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICByZXNvbHZlZFZh
bHVlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3Q7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBwcm9wZXJ0eVBhdGhUeXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuUHJvcGVydHlQYXRoLlR5cGUuVmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cml2YXRlCiAKQEAgLTgzLDIzICs4MSwyMSBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVu
dHJ5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKK1dlYkluc3BlY3Rvci5P
YmplY3RUcmVlTWFwS2V5VHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlTWFwS2V5VHJlZUVs
ZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQK
K3sKKyAgICBjb25zdHJ1Y3RvcihvYmplY3QsIHByb3BlcnR5UGF0aCkKKyAgICB7CisgICAgICAg
IHN1cGVyKG9iamVjdCwgcHJvcGVydHlQYXRoKTsKIAotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVN
YXBLZXlUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHlQYXRoKQotewotICAg
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50cnlUcmVlRWxlbWVudC5jYWxsKHRoaXMsIG9i
amVjdCwgcHJvcGVydHlQYXRoKTsKICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoImtleSIpOwot
fTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVNYXBLZXlUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwS2V5VHJlZUVs
ZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJl
ZUVsZW1lbnQucHJvdG90eXBlLAorICAgIH0KICAgICAKICAgICAvLyBQcm90ZWN0ZWQKIAogICAg
IGRpc3BsYXlQcm9wZXJ0eU5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygia2V5Iik7Ci0gICAgfSwKKyAgICB9CiAKICAgICByZXNvbHZlZFZhbHVlUHJv
cGVydHlQYXRoKCkKICAgICB7CkBAIC0xMDcsMjQgKzEwMywyMyBAQCBXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZU1hcEtleVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCitXZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZU1hcFZhbHVlVHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVl
TWFwVmFsdWVUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlTWFwRW50
cnlUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKG9iamVjdCwgcHJvcGVydHlQYXRoLCBr
ZXkpCisgICAgeworICAgICAgICBzdXBlcihvYmplY3QsIHByb3BlcnR5UGF0aCk7CiAKLVdlYklu
c3BlY3Rvci5PYmplY3RUcmVlTWFwVmFsdWVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVjdCwg
cHJvcGVydHlQYXRoLCBrZXkpCi17CiAgICAgICAgIHRoaXMuX2tleSA9IGtleTsKLSAgICBXZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5VHJlZUVsZW1lbnQuY2FsbCh0aGlzLCBvYmplY3Qs
IHByb3BlcnR5UGF0aCk7CisKICAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUoInZhbHVlIik7Ci19
OwotCi1XZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcFZhbHVlVHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcFZhbHVlVHJl
ZUVsZW1lbnQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZU1hcEVudHJ5
VHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgIH0KICAgICAKICAgICAvLyBQcm90ZWN0ZWQKIAog
ICAgIGRpc3BsYXlQcm9wZXJ0eU5hbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygidmFsdWUiKTsKLSAgICB9LAorICAgIH0KIAogICAgIHJlc29sdmVkVmFs
dWVQcm9wZXJ0eVBhdGgoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVByb3Bl
cnR5VHJlZUVsZW1lbnQuanMKaW5kZXggMzUxNmI2Yy4uOGM3NjJiZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVByb3BlcnR5
VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQuanMKQEAgLTIzLDEzICsyMywxNSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHByb3BlcnR5LCBwcm9w
ZXJ0eVBhdGgsIG1vZGUsIHByb3RvdHlwZU5hbWUpCitXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVBy
b3BlcnR5VHJlZUVsZW1lbnQgPSBjbGFzcyBPYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudCBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50CiB7CisgICAgY29u
c3RydWN0b3IocHJvcGVydHksIHByb3BlcnR5UGF0aCwgbW9kZSwgcHJvdG90eXBlTmFtZSkKKyAg
ICB7CisgICAgICAgIHN1cGVyKHByb3BlcnR5LCBwcm9wZXJ0eVBhdGgsIHByb3BlcnR5KTsKKwog
ICAgICAgICB0aGlzLl9tb2RlID0gbW9kZSB8fCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcu
TW9kZS5Qcm9wZXJ0aWVzOwogICAgICAgICB0aGlzLl9wcm90b3R5cGVOYW1lID0gcHJvdG90eXBl
TmFtZTsKIAotICAgIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LmNhbGwo
dGhpcywgcHJvcGVydHksIHByb3BlcnR5UGF0aCwgcHJvcGVydHkpOwotCiAgICAgICAgIHRoaXMu
bWFpblRpdGxlID0gdGhpcy5fdGl0bGVGcmFnbWVudCgpOwogICAgICAgICB0aGlzLmFkZENsYXNz
TmFtZSgib2JqZWN0LXRyZWUtcHJvcGVydHkiKTsKIApAQCAtNDcsMzAgKzQ5LDI2IEBAIFdlYklu
c3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHByb3BlcnR5
LCBwcm9wZXJ0eVBhdGgsIG1vCiAKICAgICAgICAgdGhpcy5fdXBkYXRlVG9vbHRpcHMoKTsKICAg
ICAgICAgdGhpcy5fdXBkYXRlSGFzQ2hpbGRyZW4oKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudCwKLSAgICBfX3Byb3Rv
X186IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlQmFzZVRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAg
ICB9CiAgICAgCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAg
ICAgICAgIHRoaXMuX3VwZGF0ZUNoaWxkcmVuKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBvbmV4
cGFuZCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fcHJldmlld1ZpZXcpCiAgICAgICAgICAg
ICB0aGlzLl9wcmV2aWV3Vmlldy5zaG93VGl0bGUoKTsKLSAgICB9LAorICAgIH0KIAogICAgIG9u
Y29sbGFwc2UoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3ByZXZpZXdWaWV3KQogICAgICAg
ICAgICAgdGhpcy5fcHJldmlld1ZpZXcuc2hvd1ByZXZpZXcoKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGludm9rZWRHZXR0ZXIoKQogICAgIHsKQEAgLTg1LDcgKzgzLDcgQEAgV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5yZW1vdmVDbGFzc05hbWUoImFjY2Vzc29yIik7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlSGFz
Q2hpbGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApAQCAtOTksNyAr
OTcsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9ICF3YXNUaHJvd24gJiYgdmFs
dWVIYXNDaGlsZHJlbjsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5oYXNDaGlsZHJl
biA9ICF3YXNUaHJvd24gJiYgdmFsdWVIYXNDaGlsZHJlbiAmJiAodGhpcy5wcm9wZXJ0eS5uYW1l
ID09PSAiX19wcm90b19fIiB8fCB0aGlzLl9hbHdheXNEaXNwbGF5QXNQcm9wZXJ0eSgpKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIF91cGRhdGVUb29sdGlwcygpCiAgICAgewpAQCAtMTEzLDcgKzEx
MSw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBhdHRyaWJ1dGVzLnB1c2goIndyaXRhYmxlIik7CiAKICAgICAg
ICAgdGhpcy5pY29uRWxlbWVudC50aXRsZSA9IGF0dHJpYnV0ZXMuam9pbigiICIpOwotICAgIH0s
CisgICAgfQogCiAgICAgX3RpdGxlRnJhZ21lbnQoKQogICAgIHsKQEAgLTEyNCw3ICsxMjIsNyBA
QCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRpdGxlUHJvcGVydHlTdHlsZSgpOwog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY3JlYXRlVGl0bGVBUElTdHls
ZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgX2NyZWF0ZVRpdGxlUHJvdG90eXBlKCkKICAgICB7
CkBAIC0xMzYsNyArMTM0LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVF
bGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgbmFtZUVsZW1lbnQudGV4dENvbnRlbnQgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiVzIFByb3RvdHlwZSIpLmZvcm1hdCh0aGlzLl9zYW5pdGl6
ZWRQcm90b3R5cGVTdHJpbmcodGhpcy5wcm9wZXJ0eS52YWx1ZSkpOwogICAgICAgICBuYW1lRWxl
bWVudC50aXRsZSA9IHRoaXMucHJvcGVydHlQYXRoU3RyaW5nKHRoaXMudGhpc1Byb3BlcnR5UGF0
aCgpKTsKICAgICAgICAgcmV0dXJuIG5hbWVFbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAg
X2NyZWF0ZVRpdGxlUHJvcGVydHlTdHlsZSgpCiAgICAgewpAQCAtMTg0LDcgKzE4Miw3IEBAIFdl
Ykluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChuYW1lRWxlbWVudCk7CiAgICAgICAgIGNvbnRh
aW5lci5hcHBlbmRDaGlsZCh2YWx1ZU9yR2V0dGVyRWxlbWVudCk7CiAgICAgICAgIHJldHVybiBj
b250YWluZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfY3JlYXRlVGl0bGVBUElTdHlsZSgpCiAg
ICAgewpAQCAtMjIwLDcgKzIxOCw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gY29u
dGFpbmVyOwotICAgIH0sCisgICAgfQogCiAgICAgX2Fsd2F5c0Rpc3BsYXlBc1Byb3BlcnR5KCkK
ICAgICB7CkBAIC0yMzcsMTIgKzIzNSwxMiBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3Bl
cnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgX2Z1bmN0aW9uUHJv
cGVydHlTdHJpbmcoKQogICAgIHsKICAgICAgICAgcmV0dXJuICJmdW5jdGlvbiIgKyB0aGlzLl9m
dW5jdGlvblBhcmFtZXRlclN0cmluZygpOwotICAgIH0sCisgICAgfQogCiAgICAgX2Z1bmN0aW9u
UGFyYW1ldGVyU3RyaW5nKCkKICAgICB7CkBAIC0yODMsNyArMjgxLDcgQEAgV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2
YXIgbWF0Y2ggPSByZXNvbHZlZFZhbHVlLmRlc2NyaXB0aW9uLm1hdGNoKC9eZnVuY3Rpb24uKj8o
XChbXildKz9cKSkvKTsKICAgICAgICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiAiKCkiOwot
ICAgIH0sCisgICAgfQogCiAgICAgX3Nhbml0aXplZFByb3RvdHlwZVN0cmluZyh2YWx1ZSkKICAg
ICB7CkBAIC0yOTYsNyArMjk0LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiAiUmVnRXhwIjsKIAog
ICAgICAgICByZXR1cm4gdmFsdWUuZGVzY3JpcHRpb24ucmVwbGFjZSgvUHJvdG90eXBlJC8sICIi
KTsKLSAgICB9LAorICAgIH0KIAogICAgIF91cGRhdGVDaGlsZHJlbigpCiAgICAgewpAQCAtMzEw
LDIwICszMDgsMjAgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9ycyh0aGlzLl91cGRhdGVDaGlsZHJlbkludGVybmFsLmJpbmQodGhpcywgdGhpcy5f
dXBkYXRlUHJvcGVydGllcywgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUuQVBJKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJlc29sdmVkVmFsdWUuZ2V0RGlzcGxheWFibGVQ
cm9wZXJ0eURlc2NyaXB0b3JzKHRoaXMuX3VwZGF0ZUNoaWxkcmVuSW50ZXJuYWwuYmluZCh0aGlz
LCB0aGlzLl91cGRhdGVQcm9wZXJ0aWVzLCB0aGlzLl9tb2RlKSk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBfdXBkYXRlQ2hpbGRyZW5JbnRlcm5hbChoYW5kbGVyLCBtb2RlLCBsaXN0KQogICAgIHsK
ICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZHJlbigpOwogCiAgICAgICAgIGlmICghbGlzdCkgewot
ICAgICAgICAgICAgdmFyIGVycm9yTWVzc2FnZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZVZpZXcuZW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvdWxk
IG5vdCBmZXRjaCBwcm9wZXJ0aWVzLiBPYmplY3QgbWF5IG5vIGxvbmdlciBleGlzdC4iKSk7Ci0g
ICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5ldyBUcmVlRWxlbWVudChlcnJvck1lc3NhZ2VF
bGVtZW50LCBudWxsLCBmYWxzZSkpOworICAgICAgICAgICAgdmFyIGVycm9yTWVzc2FnZUVsZW1l
bnQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY3JlYXRlRW1wdHlNZXNzYWdlRWxlbWVu
dChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvdWxkIG5vdCBmZXRjaCBwcm9wZXJ0aWVzLiBPYmpl
Y3QgbWF5IG5vIGxvbmdlciBleGlzdC4iKSk7CisgICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxk
KG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoZXJyb3JNZXNzYWdlRWxlbWVudCwgbnVsbCwg
ZmFsc2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGhhbmRs
ZXIuY2FsbCh0aGlzLCBsaXN0LCB0aGlzLnJlc29sdmVkVmFsdWVQcm9wZXJ0eVBhdGgoKSwgbW9k
ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfdXBkYXRlRW50cmllcyhlbnRyaWVzLCBwcm9wZXJ0
eVBhdGgsIG1vZGUpCiAgICAgewpAQCAtMzM2LDggKzMzNCw4IEBAIFdlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIXRoaXMuY2hpbGRyZW4ubGVuZ3RoKSB7Ci0gICAgICAgICAgICB2YXIgZW1wdHlN
ZXNzYWdlRWxlbWVudCA9IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VF
bGVtZW50KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gRW50cmllcy4iKSk7Ci0gICAgICAgICAg
ICB0aGlzLmFwcGVuZENoaWxkKG5ldyBUcmVlRWxlbWVudChlbXB0eU1lc3NhZ2VFbGVtZW50LCBu
dWxsLCBmYWxzZSkpOworICAgICAgICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQgPSBXZWJJ
bnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY3JlYXRlRW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5vIEVudHJpZXMuIikpOworICAgICAgICAgICAgdGhpcy5hcHBlbmRD
aGlsZChuZXcgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50KGVtcHR5TWVzc2FnZUVsZW1lbnQsIG51
bGwsIGZhbHNlKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBTaG93IHRoZSBwcm90b3R5cGUg
c28gdXNlcnMgY2FuIHNlZSB0aGUgQVBJLgpAQCAtMzQ2LDExICszNDQsMTEgQEAgV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGlmIChwcm9wZXJ0eURlc2NyaXB0b3IpCiAgICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRD
aGlsZChuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVQcm9wZXJ0eVRyZWVFbGVtZW50KHByb3Bl
cnR5RGVzY3JpcHRvciwgcHJvcGVydHlQYXRoLCBtb2RlKSk7CiAgICAgICAgIH0uYmluZCh0aGlz
KSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfdXBkYXRlUHJvcGVydGllcyhwcm9wZXJ0aWVzLCBw
cm9wZXJ0eVBhdGgsIG1vZGUpCiAgICAgewotICAgICAgICBwcm9wZXJ0aWVzLnNvcnQoV2ViSW5z
cGVjdG9yLk9iamVjdFRyZWVWaWV3LkNvbXBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzKTsKKyAgICAg
ICAgcHJvcGVydGllcy5zb3J0KFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5jb21wYXJlUHJv
cGVydHlEZXNjcmlwdG9ycyk7CiAKICAgICAgICAgdmFyIHJlc29sdmVkVmFsdWUgPSB0aGlzLnJl
c29sdmVkVmFsdWUoKTsKICAgICAgICAgdmFyIGlzQXJyYXkgPSByZXNvbHZlZFZhbHVlLmlzQXJy
YXkoKTsKQEAgLTM4MCw4ICszNzgsOCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgaWYgKCF0aGlz
LmNoaWxkcmVuLmxlbmd0aCkgewotICAgICAgICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQg
PSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuZW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5vIFByb3BlcnRpZXMuIikpOwotICAgICAgICAgICAgdGhpcy5hcHBl
bmRDaGlsZChuZXcgVHJlZUVsZW1lbnQoZW1wdHlNZXNzYWdlRWxlbWVudCwgbnVsbCwgZmFsc2Up
KTsKKyAgICAgICAgICAgIHZhciBlbXB0eU1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVWaWV3LmNyZWF0ZUVtcHR5TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJObyBQcm9wZXJ0aWVzLiIpKTsKKyAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3
IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChlbXB0eU1lc3NhZ2VFbGVtZW50LCBudWxsLCBmYWxz
ZSkpOwogICAgICAgICB9CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVTZXRJbmRleFRyZWVFbGVtZW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVNl
dEluZGV4VHJlZUVsZW1lbnQuanMKaW5kZXggNzg1ZGE2MC4uNDMzMzQxMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0VHJlZVNldElu
ZGV4VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvT2JqZWN0VHJlZVNldEluZGV4VHJlZUVsZW1lbnQuanMKQEAgLTIzLDQxICsyMywz
OSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5PYmplY3RUcmVlU2V0SW5kZXhUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG9iamVjdCwgcHJv
cGVydHlQYXRoKQorV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVTZXRJbmRleFRyZWVFbGVtZW50ID0g
Y2xhc3MgT2JqZWN0VHJlZVNldEluZGV4VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0VHJlZUJhc2VUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKG9iamVjdCwgcHJv
cGVydHlQYXRoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQob2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7CiAKLSAgICB0aGlzLl9vYmplY3QgPSBvYmpl
Y3Q7Ci0KICAgICAgICAgLy8gVHJlYXQgdGhlIHNhbWUgYXMgYW4gYXJyYXktaW5kZXgganVzdCB3
aXRoIGRpZmZlcmVudCBzdHJpbmdzIGFuZCB3aWR0aHMuCi0gICAgV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVCYXNlVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCB0aGlzLl9vYmplY3QsIHByb3BlcnR5UGF0
aCk7CisgICAgICAgIHN1cGVyKHRoaXMuX29iamVjdCwgcHJvcGVydHlQYXRoKTsKKworICAgICAg
ICB0aGlzLl9vYmplY3QgPSBvYmplY3Q7CiAKICAgICAgICAgdGhpcy5tYWluVGl0bGUgPSB0aGlz
Ll90aXRsZUZyYWdtZW50KCk7CiAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKCJvYmplY3QtdHJl
ZS1hcnJheS1pbmRleCIpOwotfTsKLQotV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVTZXRJbmRleFRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk9i
amVjdFRyZWVTZXRJbmRleFRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVCYXNlVHJlZUVsZW1lbnQucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IG9iamVjdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb2Jq
ZWN0OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICByZXNvbHZlZFZh
bHVlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3Q7Ci0gICAgfSwKKyAgICB9
CiAKICAgICByZXNvbHZlZFZhbHVlUHJvcGVydHlQYXRoKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLnByb3BlcnR5UGF0aC5hcHBlbmRTZXRJbmRleCh0aGlzLl9vYmplY3QpOwotICAgIH0s
CisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PYmplY3RUcmVlVmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCmluZGV4IDBk
NTUzZDAuLjRhZmJlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFRyZWVWaWV3LmpzCkBAIC0yMywxMCArMjMsMTEg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuT2JqZWN0VHJlZVZpZXcgPSBmdW5jdGlvbihvYmplY3QsIG1vZGUsIHByb3BlcnR5UGF0aCwg
Zm9yY2VFeHBhbmRpbmcpCitXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcgPSBjbGFzcyBPYmpl
Y3RUcmVlVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTog
Q29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwg
c3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29u
c3RydWN0b3Iob2JqZWN0LCBtb2RlLCBwcm9wZXJ0eVBhdGgsIGZvcmNlRXhwYW5kaW5nKQorICAg
IHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydChvYmplY3QgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KTsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXByb3BlcnR5UGF0aCB8fCBwcm9wZXJ0eVBhdGggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvcGVydHlQYXRoKTsKQEAgLTY0LDI2ICs2NSwyMyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJl
ZVZpZXcgPSBmdW5jdGlvbihvYmplY3QsIG1vZGUsIHByb3BlcnR5UGF0aCwgZm9yY2VFeHBhbmRp
bgogCiAgICAgICAgIHRoaXMuX291dGxpbmVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgib2wiKTsKICAgICAgICAgdGhpcy5fb3V0bGluZUVsZW1lbnQuY2xhc3NOYW1lID0gIm9iamVj
dC10cmVlLW91dGxpbmUiOwotICAgIHRoaXMuX291dGxpbmUgPSBuZXcgVHJlZU91dGxpbmUodGhp
cy5fb3V0bGluZUVsZW1lbnQpOworICAgICAgICB0aGlzLl9vdXRsaW5lID0gbmV3IFdlYkluc3Bl
Y3Rvci5UcmVlT3V0bGluZSh0aGlzLl9vdXRsaW5lRWxlbWVudCk7CiAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fb3V0bGluZUVsZW1lbnQpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IGVkaXRhYmxlIE9iamVjdFRyZWVzLgotfTsKKyAgICB9CiAKLVdlYkluc3Bl
Y3Rvci5PYmplY3RUcmVlVmlldy5lbXB0eU1lc3NhZ2VFbGVtZW50ID0gZnVuY3Rpb24obWVzc2Fn
ZSkKKyAgICAvLyBTdGF0aWMKKworICAgIHN0YXRpYyBjcmVhdGVFbXB0eU1lc3NhZ2VFbGVtZW50
KG1lc3NhZ2UpCiAgICAgewogICAgICAgICB2YXIgZW1wdHlNZXNzYWdlRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBlbXB0eU1lc3NhZ2VFbGVtZW50LmNs
YXNzTmFtZSA9ICJlbXB0eS1tZXNzYWdlIjsKICAgICAgICAgZW1wdHlNZXNzYWdlRWxlbWVudC50
ZXh0Q29udGVudCA9IG1lc3NhZ2U7CiAgICAgICAgIHJldHVybiBlbXB0eU1lc3NhZ2VFbGVtZW50
OwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5Nb2RlID0gewotICAg
IFByb3BlcnRpZXM6IFN5bWJvbCgib2JqZWN0LXRyZWUtcHJvcGVydGllcyIpLAotICAgIEFQSTog
U3ltYm9sKCJvYmplY3QtdHJlZS1hcGkiKSwKLX07Ci0KLVdlYkluc3BlY3Rvci5PYmplY3RUcmVl
Vmlldy5Db21wYXJlUHJvcGVydHlEZXNjcmlwdG9ycyA9IGZ1bmN0aW9uKHByb3BlcnR5QSwgcHJv
cGVydHlCKQorICAgIHN0YXRpYyBjb21wYXJlUHJvcGVydHlEZXNjcmlwdG9ycyhwcm9wZXJ0eUEs
IHByb3BlcnR5QikKICAgICB7CiAgICAgICAgIHZhciBhID0gcHJvcGVydHlBLm5hbWU7CiAgICAg
ICAgIHZhciBiID0gcHJvcGVydHlCLm5hbWU7CkBAIC0xMzQsMzMgKzEzMiwyOSBAQCBXZWJJbnNw
ZWN0b3IuT2JqZWN0VHJlZVZpZXcuQ29tcGFyZVByb3BlcnR5RGVzY3JpcHRvcnMgPSBmdW5jdGlv
bihwcm9wZXJ0eUEsIHBybwogICAgICAgICAgICAgYiA9IGIuc3Vic3RyaW5nKGNodW5rYi5sZW5n
dGgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBkaWZmOwotfTsKLQotV2ViSW5zcGVjdG9y
Lk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgb2JqZWN0KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9vYmplY3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCB0cmVlT3V0bGluZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fb3V0bGluZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBleHBhbmRlZCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBl
eHBhbmQoKQogICAgIHsKQEAgLTE3Niw3ICsxNzAsNyBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJl
ZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90cmFja1dlYWtFbnRyaWVzKCk7CiAK
ICAgICAgICAgdGhpcy51cGRhdGUoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGNvbGxhcHNlKCkK
ICAgICB7CkBAIC0xOTAsMTQgKzE4NCwxNCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fcHJldmlld1ZpZXcuc2hvd1ByZXZpZXco
KTsKIAogICAgICAgICB0aGlzLl91bnRyYWNrV2Vha0VudHJpZXMoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNob3dPbmx5UHJvcGVydGllcygpCiAgICAgewogICAgICAgICB0aGlzLl9pbkNvbnNv
bGUgPSBmYWxzZTsKIAogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInByb3Bl
cnRpZXMtb25seSIpOwotICAgIH0sCisgICAgfQogCiAgICAgYXBwZW5kVGl0bGVTdWZmaXgoc3Vm
Zml4RWxlbWVudCkKICAgICB7CkBAIC0yMDUsNyArMTk5LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVj
dFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3ByZXZpZXdWaWV3LmVs
ZW1lbnQuYXBwZW5kQ2hpbGQoc3VmZml4RWxlbWVudCk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHRoaXMuX3RpdGxlRWxlbWVudC5hcHBlbmRDaGlsZChzdWZmaXhFbGVtZW50KTsKLSAgICB9
LAorICAgIH0KIAogICAgIGFwcGVuZEV4dHJhUHJvcGVydHlEZXNjcmlwdG9yKHByb3BlcnR5RGVz
Y3JpcHRvcikKICAgICB7CkBAIC0yMTMsNyArMjA3LDcgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRy
ZWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2V4dHJhUHJvcGVydGllcyA9
IFtdOwogCiAgICAgICAgIHRoaXMuX2V4dHJhUHJvcGVydGllcy5wdXNoKHByb3BlcnR5RGVzY3Jp
cHRvcik7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIApAQCAtMjIzLDcgKzIx
Nyw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9vYmplY3QuZ2V0Q29sbGVjdGlvbkVudHJpZXMoMCwgMTAwLCB0aGlzLl91cGRh
dGVDaGlsZHJlbi5iaW5kKHRoaXMsIHRoaXMuX3VwZGF0ZUVudHJpZXMpKTsKICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgdGhpcy5fb2JqZWN0LmdldERpc3BsYXlhYmxlUHJvcGVydHlEZXNjcmlw
dG9ycyh0aGlzLl91cGRhdGVDaGlsZHJlbi5iaW5kKHRoaXMsIHRoaXMuX3VwZGF0ZVByb3BlcnRp
ZXMpKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIApAQCAtMjMyLDEzICsyMjYs
MTMgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fb3V0bGluZS5yZW1vdmVDaGlsZHJlbigpOwogCiAgICAgICAgIGlmICghbGlzdCkgewot
ICAgICAgICAgICAgdmFyIGVycm9yTWVzc2FnZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0
VHJlZVZpZXcuZW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvdWxk
IG5vdCBmZXRjaCBwcm9wZXJ0aWVzLiBPYmplY3QgbWF5IG5vIGxvbmdlciBleGlzdC4iKSk7Ci0g
ICAgICAgICAgICB0aGlzLl9vdXRsaW5lLmFwcGVuZENoaWxkKG5ldyBUcmVlRWxlbWVudChlcnJv
ck1lc3NhZ2VFbGVtZW50LCBudWxsLCBmYWxzZSkpOworICAgICAgICAgICAgdmFyIGVycm9yTWVz
c2FnZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuY3JlYXRlRW1wdHlNZXNz
YWdlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNvdWxkIG5vdCBmZXRjaCBwcm9wZXJ0
aWVzLiBPYmplY3QgbWF5IG5vIGxvbmdlciBleGlzdC4iKSk7CisgICAgICAgICAgICB0aGlzLl9v
dXRsaW5lLmFwcGVuZENoaWxkKG5ldyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQoZXJyb3JNZXNz
YWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCiAgICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBsaXN0LCB0aGlzLl9wcm9wZXJ0eVBhdGgp
OwotICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZUVudHJpZXMoZW50cmllcywgcHJvcGVydHlQ
YXRoKQogICAgIHsKQEAgLTI1MSw4ICsyNDUsOCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgaWYgKCF0aGlzLl9vdXRsaW5l
LmNoaWxkcmVuLmxlbmd0aCkgewotICAgICAgICAgICAgdmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQg
PSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuZW1wdHlNZXNzYWdlRWxlbWVudChXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIk5vIEVudHJpZXMuIikpOwotICAgICAgICAgICAgdGhpcy5fb3V0bGlu
ZS5hcHBlbmRDaGlsZChuZXcgVHJlZUVsZW1lbnQoZW1wdHlNZXNzYWdlRWxlbWVudCwgbnVsbCwg
ZmFsc2UpKTsKKyAgICAgICAgICAgIHZhciBlbXB0eU1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVj
dG9yLk9iamVjdFRyZWVWaWV3LmNyZWF0ZUVtcHR5TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJObyBFbnRyaWVzLiIpKTsKKyAgICAgICAgICAgIHRoaXMuX291dGxpbmUuYXBw
ZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudChlbXB0eU1lc3NhZ2VFbGVtZW50
LCBudWxsLCBmYWxzZSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU2hvdyB0aGUgcHJvdG90
eXBlIHNvIHVzZXJzIGNhbiBzZWUgdGhlIEFQSS4KQEAgLTI2MCwxNCArMjU0LDE0IEBAIFdlYklu
c3BlY3Rvci5PYmplY3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAocHJv
cGVydHlEZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgIHRoaXMuX291dGxpbmUuYXBwZW5kQ2hp
bGQobmV3IFdlYkluc3BlY3Rvci5PYmplY3RUcmVlUHJvcGVydHlUcmVlRWxlbWVudChwcm9wZXJ0
eURlc2NyaXB0b3IsIHByb3BlcnR5UGF0aCwgdGhpcy5fbW9kZSkpOwogICAgICAgICB9LmJpbmQo
dGhpcykpOwotICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZVByb3BlcnRpZXMocHJvcGVydGll
cywgcHJvcGVydHlQYXRoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2V4dHJhUHJvcGVydGll
cykKICAgICAgICAgICAgIHByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzLmNvbmNhdCh0aGlzLl9leHRy
YVByb3BlcnRpZXMpOwogCi0gICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3IuT2Jq
ZWN0VHJlZVZpZXcuQ29tcGFyZVByb3BlcnR5RGVzY3JpcHRvcnMpOworICAgICAgICBwcm9wZXJ0
aWVzLnNvcnQoV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LmNvbXBhcmVQcm9wZXJ0eURlc2Ny
aXB0b3JzKTsKIAogICAgICAgICB2YXIgaXNBcnJheSA9IHRoaXMuX29iamVjdC5pc0FycmF5KCk7
CiAgICAgICAgIHZhciBpc1Byb3BlcnR5TW9kZSA9IHRoaXMuX21vZGUgPT09IFdlYkluc3BlY3Rv
ci5PYmplY3RUcmVlVmlldy5Nb2RlLlByb3BlcnRpZXM7CkBAIC0yODMsMTAgKzI3NywxMCBAQCBX
ZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKCF0aGlzLl9vdXRsaW5lLmNoaWxkcmVuLmxlbmd0aCkgewotICAgICAgICAgICAg
dmFyIGVtcHR5TWVzc2FnZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuZW1w
dHlNZXNzYWdlRWxlbWVudChXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vIFByb3BlcnRpZXMuIikp
OwotICAgICAgICAgICAgdGhpcy5fb3V0bGluZS5hcHBlbmRDaGlsZChuZXcgVHJlZUVsZW1lbnQo
ZW1wdHlNZXNzYWdlRWxlbWVudCwgbnVsbCwgZmFsc2UpKTsKKyAgICAgICAgICAgIHZhciBlbXB0
eU1lc3NhZ2VFbGVtZW50ID0gV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3LmNyZWF0ZUVtcHR5
TWVzc2FnZUVsZW1lbnQoV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBQcm9wZXJ0aWVzLiIpKTsK
KyAgICAgICAgICAgIHRoaXMuX291dGxpbmUuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5U
cmVlRWxlbWVudChlbXB0eU1lc3NhZ2VFbGVtZW50LCBudWxsLCBmYWxzZSkpOworICAgICAgICB9
CiAgICAgfQotICAgIH0sCiAKICAgICBfaGFuZGxlUHJldmlld09yVGl0bGVFbGVtZW50Q2xpY2so
ZXZlbnQpCiAgICAgewpAQCAtMjk5LDcgKzI5Myw3IEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmNvbGxhcHNlKCk7CiAKICAgICAg
ICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfdHJhY2tX
ZWFrRW50cmllcygpCiAgICAgewpAQCAtMzE2LDcgKzMxMCw3IEBAIFdlYkluc3BlY3Rvci5PYmpl
Y3RUcmVlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IubG9nTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50LkFjdGl2
ZUxvZ0NsZWFyZWQsIHRoaXMuX3VudHJhY2tXZWFrRW50cmllcywgdGhpcyk7CiAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5M
b2dNYW5hZ2VyLkV2ZW50LlNlc3Npb25TdGFydGVkLCB0aGlzLl91bnRyYWNrV2Vha0VudHJpZXMs
IHRoaXMpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICBfdW50cmFja1dlYWtFbnRy
aWVzKCkKICAgICB7CkBAIC0zMzksNSArMzMzLDEwIEBAIFdlYkluc3BlY3Rvci5PYmplY3RUcmVl
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG9ubHkgdHJpZXMgdG8g
cmVsZWFzZSB3ZWFrIGVudHJpZXMgaWYgdGhpcyBvYmplY3Qgd2FzIGEgV2Vha01hcC4KICAgICAg
ICAgLy8gSWYgdGhlcmUgd2FzIGEgV2Vha01hcCBleHBhbmRlZCBpbiBhIHN1Yi1vYmplY3QsIHdl
IHdpbGwgbmV2ZXIgcmVsZWFzZSB0aG9zZSB2YWx1ZXMuCiAgICAgICAgIC8vIFNob3VsZCB3ZSBh
dHRlbXB0IHdhbGtpbmcgdGhlIGVudGlyZSB0cmVlIGFuZCByZWxlYXNlIHdlYWsgY29sbGVjdGlv
bnM/Ci0gICAgfSwKKyAgICB9Cit9OworCitXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcuTW9k
ZSA9IHsKKyAgICBQcm9wZXJ0aWVzOiBTeW1ib2woIm9iamVjdC10cmVlLXByb3BlcnRpZXMiKSwK
KyAgICBBUEk6IFN5bWJvbCgib2JqZWN0LXRyZWUtYXBpIiksCiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT3ZlcnZpZXdUaW1lbGluZVZp
ZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVydmll
d1RpbWVsaW5lVmlldy5qcwppbmRleCBiZDgwZWQyLi43MmNlN2ZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9PdmVy
dmlld1RpbWVsaW5lVmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcg
PSBmdW5jdGlvbihyZWNvcmRpbmcpCitXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcg
PSBjbGFzcyBPdmVydmlld1RpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LmNhbGwodGhpcywgcmVjb3Jk
aW5nKTsKKyAgICBjb25zdHJ1Y3RvcihyZWNvcmRpbmcpCisgICAgeworICAgICAgICBzdXBlcihy
ZWNvcmRpbmcpOwogCiAgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5v
bnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50U2VsZWN0ZWQuYmluZCh0aGlzKTsKICAgICAgICAg
dGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLm9uZGVzZWxlY3QgPSB0aGlzLl90cmVl
RWxlbWVudERlc2VsZWN0ZWQuYmluZCh0aGlzKTsKQEAgLTQ3LDcgKzQ5LDcgQEAgV2ViSW5zcGVj
dG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3ID0gZnVuY3Rpb24ocmVjb3JkaW5nKQogICAgICAgICB0
aGlzLl9jdXJyZW50VGltZU1hcmtlciA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIo
MCwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyLlR5cGUuQ3VycmVudFRpbWUpOwogICAgICAg
ICB0aGlzLl90aW1lbGluZVJ1bGVyLmFkZE1hcmtlcih0aGlzLl9jdXJyZW50VGltZU1hcmtlcik7
CiAKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdU
aW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgib3ZlcnZpZXciKTsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2RhdGFHcmlkLmVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX25ldHdvcmtUaW1lbGluZSA9
IHJlY29yZGluZy50aW1lbGluZXMuZ2V0KFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBl
Lk5ldHdvcmspOwpAQCAtNTYsMzkgKzU4LDMzIEBAIFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVs
aW5lVmlldyA9IGZ1bmN0aW9uKHJlY29yZGluZykKICAgICAgICAgcmVjb3JkaW5nLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlNvdXJjZUNvZGVU
aW1lbGluZUFkZGVkLCB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmVBZGRlZCwgdGhpcyk7CiAKICAg
ICAgICAgdGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cyA9IFtdOwotfTsKLQotV2ViSW5z
cGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LlN0eWxlQ2xhc3NOYW1lID0gIm92ZXJ2aWV3IjsK
LQotV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LAotICAgIF9fcHJv
dG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUsCisgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKICAgICBnZXQgbmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZUxhYmVsKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRpbWVsaW5lIEV2
ZW50cyIpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlY29uZHNQZXJQaXhlbCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fdGltZWxpbmVSdWxlci5zZWNvbmRzUGVyUGl4ZWw7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2Vjb25kc1BlclBpeGVsKHgpCiAgICAgewogICAgICAg
ICB0aGlzLl90aW1lbGluZVJ1bGVyLnNlY29uZHNQZXJQaXhlbCA9IHg7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUuc2hvd24uY2FsbCh0aGlzKTsKIAogICAg
ICAgICB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnN5bmNocm9uaXplKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRh
dGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90
b3R5cGUudXBkYXRlTGF5b3V0LmNhbGwodGhpcyk7CiAKQEAgLTExNSw3ICsxMTEsNyBAQCBXZWJJ
bnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll90aW1lbGluZVJ1bGVyLnVwZGF0ZUxheW91dCgpOwogCiAgICAgICAgIHRoaXMuX3Byb2Nlc3NQ
ZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2Vs
ZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsKQEAgLTE0MSwyMSArMTM3LDIxIEBAIFdlYklu
c3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICByZXR1cm4gcGF0aENvbXBvbmVudHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cm90ZWN0ZWQKIAotICAgIHRyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICB0cmVlRWxlbWVudFBhdGhDb21wb25lbnRTZWxlY3RlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlk
U3luY2hyb25pemVyLmRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50KGV2ZW50LmRhdGEucGF0aENv
bXBvbmVudC5nZW5lcmFsVHJlZUVsZW1lbnQpOwogICAgICAgICBpZiAoIWRhdGFHcmlkTm9kZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZGF0YUdyaWROb2RlLnJldmVhbEFuZFNlbGVj
dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2NvbXBhcmVUcmVl
RWxlbWVudHNCeURldGFpbHM6IGZ1bmN0aW9uKGEsIGIpCisgICAgX2NvbXBhcmVUcmVlRWxlbWVu
dHNCeURldGFpbHMoYSwgYikKICAgICB7CiAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50ICYmIGIgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAg
LTE4NSw5ICsxODEsOSBAQCBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcucHJvdG90
eXBlID0gewogCiAgICAgICAgIC8vIEZhbGxiYWNrIHRvIGNvbXBhcmluZyBieSBzdGFydCB0aW1l
IGZvciBSZXNvdXJjZVRyZWVFbGVtZW50IG9yIGFueXRoaW5nIGVsc2UuCiAgICAgICAgIHJldHVy
biB0aGlzLl9jb21wYXJlVHJlZUVsZW1lbnRzQnlTdGFydFRpbWUoYSwgYik7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfY29tcGFyZVRyZWVFbGVtZW50c0J5U3RhcnRUaW1lOiBmdW5jdGlvbihhLCBi
KQorICAgIF9jb21wYXJlVHJlZUVsZW1lbnRzQnlTdGFydFRpbWUoYSwgYikKICAgICB7CiAgICAg
ICAgIGZ1bmN0aW9uIGdldFN0YXJ0VGltZSh0cmVlRWxlbWVudCkKICAgICAgICAgewpAQCAtMjA2
LDE4ICsyMDIsMTggQEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICAvLyBGYWxsYmFjayB0byBjb21wYXJpbmcgdGl0bGVzLgogICAgICAg
ICByZXR1cm4gYS5tYWluVGl0bGUubG9jYWxlQ29tcGFyZShiLm1haW5UaXRsZSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfaW5zZXJ0VHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBw
YXJlbnRUcmVlRWxlbWVudCkKKyAgICBfaW5zZXJ0VHJlZUVsZW1lbnQodHJlZUVsZW1lbnQsIHBh
cmVudFRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1l
bnQpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghdHJlZUVsZW1lbnQucGFyZW50KTsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQocGFyZW50VHJlZUVsZW1lbnQpOwogCiAgICAgICAgIHBhcmVudFRy
ZWVFbGVtZW50Lmluc2VydENoaWxkKHRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleEZvck9iamVj
dEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24odHJlZUVsZW1lbnQsIHBhcmVudFRyZWVFbGVtZW50LmNo
aWxkcmVuLCB0aGlzLl9jb21wYXJlVHJlZUVsZW1lbnRzQnlTdGFydFRpbWUuYmluZCh0aGlzKSkp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZFJlc291cmNlVG9UcmVlSWZOZWVkZWQ6IGZ1bmN0
aW9uKHJlc291cmNlKQorICAgIF9hZGRSZXNvdXJjZVRvVHJlZUlmTmVlZGVkKHJlc291cmNlKQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UpOwogICAgICAgICBpZiAoIXJl
c291cmNlKQpAQCAtMjYyLDkgKzI1OCw5IEBAIFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5l
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2luc2VydFRyZWVFbGVtZW50KHJlc291
cmNlVHJlZUVsZW1lbnQsIHBhcmVudFRyZWVFbGVtZW50KTsKIAogICAgICAgICByZXR1cm4gcmVz
b3VyY2VUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRTb3VyY2VDb2RlVGlt
ZWxpbmU6IGZ1bmN0aW9uKHNvdXJjZUNvZGVUaW1lbGluZSkKKyAgICBfYWRkU291cmNlQ29kZVRp
bWVsaW5lKHNvdXJjZUNvZGVUaW1lbGluZSkKICAgICB7CiAgICAgICAgIHZhciBwYXJlbnRUcmVl
RWxlbWVudCA9IHNvdXJjZUNvZGVUaW1lbGluZS5zb3VyY2VDb2RlTG9jYXRpb24gPyB0aGlzLl9h
ZGRSZXNvdXJjZVRvVHJlZUlmTmVlZGVkKHNvdXJjZUNvZGVUaW1lbGluZS5zb3VyY2VDb2RlKSA6
IHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZTsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQocGFyZW50VHJlZUVsZW1lbnQpOwpAQCAtMjc2LDkgKzI3Miw5IEBAIFdlYkluc3BlY3Rvci5P
dmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fdHJlZU91
dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5hc3NvY2lhdGUoc291cmNlQ29kZVRpbWVsaW5lVHJl
ZUVsZW1lbnQsIHNvdXJjZUNvZGVUaW1lbGluZURhdGFHcmlkTm9kZSk7CiAgICAgICAgIHRoaXMu
X2luc2VydFRyZWVFbGVtZW50KHNvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50LCBwYXJlbnRU
cmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcHJvY2Vzc1BlbmRpbmdSZXByZXNl
bnRlZE9iamVjdHM6IGZ1bmN0aW9uKCkKKyAgICBfcHJvY2Vzc1BlbmRpbmdSZXByZXNlbnRlZE9i
amVjdHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9wZW5kaW5nUmVwcmVzZW50ZWRPYmpl
Y3RzIHx8ICF0aGlzLl9wZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzLmxlbmd0aCkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTI5Myw5ICsyODksOSBAQCBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1l
bGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcGVuZGlu
Z1JlcHJlc2VudGVkT2JqZWN0cyA9IFtdOwotICAgIH0sCisgICAgfQogCi0gICAgX25ldHdvcmtU
aW1lbGluZVJlY29yZEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbmV0d29ya1RpbWVsaW5l
UmVjb3JkQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcmVzb3VyY2VUaW1lbGluZVJl
Y29yZCA9IGV2ZW50LmRhdGEucmVjb3JkOwogICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJj
ZVRpbWVsaW5lUmVjb3JkIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVS
ZWNvcmQpOwpAQCAtMzA2LDkgKzMwMiw5IEBAIFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5l
Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gV2UgZG9uJ3QgZXhwZWN0IHRvIGhhdmUg
YW55IHNvdXJjZSBjb2RlIHRpbWVsaW5lcyB5ZXQuIFRob3NlIHNob3VsZCBiZSBhZGRlZCB3aXRo
IF9zb3VyY2VDb2RlVGltZWxpbmVBZGRlZC4KICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMu
X3JlY29yZGluZy5zb3VyY2VDb2RlVGltZWxpbmVzRm9yU291cmNlQ29kZShyZXNvdXJjZVRpbWVs
aW5lUmVjb3JkLnJlc291cmNlKS5sZW5ndGgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NvdXJj
ZUNvZGVUaW1lbGluZUFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc291cmNlQ29kZVRpbWVs
aW5lQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc291cmNlQ29kZVRpbWVsaW5lID0g
ZXZlbnQuZGF0YS5zb3VyY2VDb2RlVGltZWxpbmU7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNv
dXJjZUNvZGVUaW1lbGluZSk7CkBAIC0zMTgsMjAgKzMxNCwyMCBAQCBXZWJJbnNwZWN0b3IuT3Zl
cnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9wZW5kaW5nUmVw
cmVzZW50ZWRPYmplY3RzLnB1c2goc291cmNlQ29kZVRpbWVsaW5lKTsKIAogICAgICAgICB0aGlz
Lm5lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWROb2RlU2VsZWN0
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZE5vZGVTZWxlY3RlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnREZXNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxl
bWVudCkKKyAgICBfdHJlZUVsZW1lbnREZXNlbGVjdGVkKHRyZWVFbGVtZW50KQogICAgIHsKICAg
ICAgICAgaWYgKHRyZWVFbGVtZW50LnN0YXR1cykKICAgICAgICAgICAgIHRyZWVFbGVtZW50LnN0
YXR1cyA9ICIiOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50U2VsZWN0ZWQ6IGZ1
bmN0aW9uKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKKyAgICBfdHJlZUVsZW1lbnRTZWxl
Y3RlZCh0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCiAgICAgewogICAgICAgICBpZiAoIVdl
Ykluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC5jYW5TaG93RGlmZmVyZW50Q29udGVudFZp
ZXcoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM1OCw5ICszNTQsOSBAQCBXZWJJbnNwZWN0
b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93T3JpZ2luYWxPckZvcm1hdHRlZFNvdXJjZUNv
ZGVMb2NhdGlvbih0cmVlRWxlbWVudC5zb3VyY2VDb2RlVGltZWxpbmUuc291cmNlQ29kZUxvY2F0
aW9uKTsKICAgICAgICAgdGhpcy5fdXBkYXRlVHJlZUVsZW1lbnRXaXRoQ2xvc2VCdXR0b24odHJl
ZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVRyZWVFbGVtZW50V2l0aENs
b3NlQnV0dG9uOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdXBkYXRlVHJlZUVsZW1lbnRX
aXRoQ2xvc2VCdXR0b24odHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY2xv
c2VTdGF0dXNCdXR0b24pIHsKICAgICAgICAgICAgIHRyZWVFbGVtZW50LnN0YXR1cyA9IHRoaXMu
X2Nsb3NlU3RhdHVzQnV0dG9uLmVsZW1lbnQ7CkBAIC0zNzMsOSArMzY5LDkgQEAgV2ViSW5zcGVj
dG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0
cmVlRWxlbWVudCA9PT0gdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLnNlbGVjdGVk
VHJlZUVsZW1lbnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVHJlZUVsZW1lbnRXaXRo
Q2xvc2VCdXR0b24odHJlZUVsZW1lbnQpOwogICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2Nsb3NlU3RhdHVzQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2Nsb3NlU3RhdHVzQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIHRo
aXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LmRlc2Vs
ZWN0KCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC5zaG93VGlt
ZWxpbmVPdmVydmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUG9wb3Zlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1BvcG92ZXIuanMKaW5kZXggZjZkOTljNS4uYzU4N2IyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUG9wb3Zlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qb3BvdmVyLmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMyw5ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5Qb3BvdmVyID0gZnVuY3Rpb24oZGVsZWdhdGUpIHsKLSAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CitX
ZWJJbnNwZWN0b3IuUG9wb3ZlciA9IGNsYXNzIFBvcG92ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoZGVsZWdhdGUpCisgICAgeworICAgICAgICBzdXBl
cigpOwogCiAgICAgICAgIHRoaXMuZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICAgICAgdGhpcy5f
ZWRnZSA9IG51bGw7CkBAIC0zOCw0NSArNDAsMzEgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIgPSBm
dW5jdGlvbihkZWxlZ2F0ZSkgewogICAgICAgICB0aGlzLl9jb250ZW50TmVlZHNVcGRhdGUgPSBm
YWxzZTsKIAogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuUG9wb3Zl
ci5TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAicG9w
b3ZlciI7CiAgICAgICAgIHRoaXMuX2NhbnZhc0lkID0gInBvcG92ZXItIiArIChXZWJJbnNwZWN0
b3IuUG9wb3Zlci5jYW52YXNJZCsrKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5iYWNr
Z3JvdW5kSW1hZ2UgPSAiLXdlYmtpdC1jYW52YXMoIiArIHRoaXMuX2NhbnZhc0lkICsgIikiOwog
ICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLCB0
aGlzLCB0cnVlKTsKIAogICAgICAgICB0aGlzLl9jb250YWluZXIgPSB0aGlzLl9lbGVtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTsKICAgICAgICAgdGhpcy5f
Y29udGFpbmVyLmNsYXNzTmFtZSA9ICJjb250YWluZXIiOwotfTsKLQotV2ViSW5zcGVjdG9yLlBv
cG92ZXIuU3R5bGVDbGFzc05hbWUgPSAicG9wb3ZlciI7Ci1XZWJJbnNwZWN0b3IuUG9wb3Zlci5G
YWRlT3V0Q2xhc3NOYW1lID0gImZhZGUtb3V0IjsKLVdlYkluc3BlY3Rvci5Qb3BvdmVyLmNhbnZh
c0lkID0gMDsKLVdlYkluc3BlY3Rvci5Qb3BvdmVyLkNvcm5lclJhZGl1cyA9IDU7Ci1XZWJJbnNw
ZWN0b3IuUG9wb3Zlci5NaW5XaWR0aCA9IDQwOwotV2ViSW5zcGVjdG9yLlBvcG92ZXIuTWluSGVp
Z2h0ID0gNDA7Ci1XZWJJbnNwZWN0b3IuUG9wb3Zlci5TaGFkb3dQYWRkaW5nID0gNTsKLVdlYklu
c3BlY3Rvci5Qb3BvdmVyLkNvbnRlbnRQYWRkaW5nID0gNTsKLVdlYkluc3BlY3Rvci5Qb3BvdmVy
LkFuY2hvclNpemUgPSBuZXcgV2ViSW5zcGVjdG9yLlNpemUoMjIsIDExKTsKLVdlYkluc3BlY3Rv
ci5Qb3BvdmVyLlNoYWRvd0VkZ2VJbnNldHMgPSBuZXcgV2ViSW5zcGVjdG9yLkVkZ2VJbnNldHMo
V2ViSW5zcGVjdG9yLlBvcG92ZXIuU2hhZG93UGFkZGluZyk7Ci0KLVdlYkluc3BlY3Rvci5Qb3Bv
dmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlBvcG92ZXIs
CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmcmFt
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgdmlzaWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5w
YXJlbnROb2RlID09PSBkb2N1bWVudC5ib2R5ICYmICF0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5j
b250YWlucyhXZWJJbnNwZWN0b3IuUG9wb3Zlci5GYWRlT3V0Q2xhc3NOYW1lKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIHNldCBmcmFtZShmcmFtZSkKICAgICB7CkBAIC04Niw3ICs3NCw3IEBAIFdl
Ykluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWxlbWVudC5z
dHlsZS5oZWlnaHQgPSBmcmFtZS5zaXplLmhlaWdodCArICJweCI7CiAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuc3R5bGUuYmFja2dyb3VuZFNpemUgPSBmcmFtZS5zaXplLndpZHRoICsgInB4ICIgKyBm
cmFtZS5zaXplLmhlaWdodCArICJweCI7CiAgICAgICAgIHRoaXMuX2ZyYW1lID0gZnJhbWU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29udGVudChjb250ZW50KQogICAgIHsKQEAgLTk5LDkg
Kzg3LDkgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlm
ICh0aGlzLnZpc2libGUpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGUodHJ1ZSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGUoKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLnZpc2libGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTMsOSAr
MTAxLDkgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlm
IChwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpCiAgICAgICAgICAgICBwcmV2aW91c2x5Rm9jdXNl
ZEVsZW1lbnQuZm9jdXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHByZXNlbnQ6IGZ1bmN0aW9u
KHRhcmdldEZyYW1lLCBwcmVmZXJyZWRFZGdlcykKKyAgICBwcmVzZW50KHRhcmdldEZyYW1lLCBw
cmVmZXJyZWRFZGdlcykKICAgICB7CiAgICAgICAgIHRoaXMuX3RhcmdldEZyYW1lID0gdGFyZ2V0
RnJhbWU7CiAgICAgICAgIHRoaXMuX3ByZWZlcnJlZEVkZ2VzID0gcHJlZmVycmVkRWRnZXM7CkBA
IC0xMjYsOSArMTE0LDkgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9hZGRMaXN0ZW5lcnNJZk5lZWRlZCgpOwogCiAgICAgICAgIHRoaXMuX3VwZGF0
ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgcHJlc2VudE5ld0NvbnRlbnRXaXRoRnJhbWU6IGZ1
bmN0aW9uKGNvbnRlbnQsIHRhcmdldEZyYW1lLCBwcmVmZXJyZWRFZGdlcykKKyAgICBwcmVzZW50
TmV3Q29udGVudFdpdGhGcmFtZShjb250ZW50LCB0YXJnZXRGcmFtZSwgcHJlZmVycmVkRWRnZXMp
CiAgICAgewogICAgICAgICB0aGlzLl9jb250ZW50ID0gY29udGVudDsKICAgICAgICAgdGhpcy5f
Y29udGVudE5lZWRzVXBkYXRlID0gdHJ1ZTsKQEAgLTE0MCw5ICsxMjgsOSBAQCBXZWJJbnNwZWN0
b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHNob3VsZEFuaW1hdGUgPSB0
aGlzLnZpc2libGU7CiAgICAgICAgIHRoaXMuX3VwZGF0ZShzaG91bGRBbmltYXRlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGRpc21pc3M6IGZ1bmN0aW9uKCkKKyAgICBkaXNtaXNzKCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgIT09IGRvY3VtZW50LmJvZHkp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNTYsOSArMTQ0LDkgQEAgV2ViSW5zcGVjdG9yLlBv
cG92ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLmRlbGVnYXRlICYmIHR5cGVv
ZiB0aGlzLmRlbGVnYXRlLndpbGxEaXNtaXNzUG9wb3ZlciA9PT0gImZ1bmN0aW9uIikKICAgICAg
ICAgICAgIHRoaXMuZGVsZWdhdGUud2lsbERpc21pc3NQb3BvdmVyKHRoaXMpOwotICAgIH0sCisg
ICAgfQogCi0gICAgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGhhbmRsZUV2ZW50
KGV2ZW50KQogICAgIHsKICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7CiAgICAgICAgIGNh
c2UgIm1vdXNlZG93biI6CkBAIC0xNzYsMTEgKzE2NCwxMSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF91cGRhdGU6
IGZ1bmN0aW9uKHNob3VsZEFuaW1hdGUpCisgICAgX3VwZGF0ZShzaG91bGRBbmltYXRlKQogICAg
IHsKICAgICAgICAgaWYgKHNob3VsZEFuaW1hdGUpCiAgICAgICAgICAgICB2YXIgcHJldmlvdXNF
ZGdlID0gdGhpcy5fZWRnZTsKQEAgLTIxMiw3ICsyMDAsNyBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9wcmVmZXJyZWRTaXplID0gbmV3IFdl
Ykluc3BlY3Rvci5TaXplKE1hdGguY2VpbChwb3BvdmVyQm91bmRzLndpZHRoKSwgTWF0aC5jZWls
KHBvcG92ZXJCb3VuZHMuaGVpZ2h0KSk7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCB0aXRs
ZUJhck9mZnNldCA9IFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5uYW1lID09PSAibWFjIiAmJiAhV2Vi
SW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MgPyAyMiA6IDA7CisgICAgICAgIHZhciB0
aXRsZUJhck9mZnNldCA9IFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5uYW1lID09PSAibWFjIiAmJiAh
V2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MgPyAyMiA6IDA7CiAgICAgICAgIHZh
ciBjb250YWluZXJGcmFtZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVjdCgwLCB0aXRsZUJhck9mZnNl
dCwgd2luZG93LmlubmVyV2lkdGgsIHdpbmRvdy5pbm5lckhlaWdodCAtIHRpdGxlQmFyT2Zmc2V0
KTsKICAgICAgICAgLy8gVGhlIGZyYW1lIG9mIHRoZSB3aW5kb3cgd2l0aCBhIGxpdHRsZSBpbnNl
dCB0byBtYWtlIHN1cmUgd2UgaGF2ZSByb29tIGZvciBzaGFkb3dzLgogICAgICAgICBjb250YWlu
ZXJGcmFtZSA9IGNvbnRhaW5lckZyYW1lLmluc2V0KFdlYkluc3BlY3Rvci5Qb3BvdmVyLlNoYWRv
d0VkZ2VJbnNldHMpOwpAQCAtMjk3LDkgKzI4NSw5IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2NvbnRlbnROZWVkc1VwZGF0
ZSA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nzc0NsYXNzTmFtZUZvckVkZ2U6IGZ1
bmN0aW9uKCkKKyAgICBfY3NzQ2xhc3NOYW1lRm9yRWRnZSgpCiAgICAgewogICAgICAgICBzd2l0
Y2ggKHRoaXMuX2VkZ2UpIHsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlO
X1g6IC8vIERpc3BsYXllZCBvbiB0aGUgbGVmdCBvZiB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMg
cmlnaHQuCkBAIC0zMTMsMTUgKzMwMSwxNSBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBlZGdlLiIp
OwogICAgICAgICByZXR1cm4gImFycm93LXVwIjsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZXRB
bmNob3JQb2ludDogZnVuY3Rpb24oYW5jaG9yUG9pbnQpIHsKKyAgICBfc2V0QW5jaG9yUG9pbnQo
YW5jaG9yUG9pbnQpIHsKICAgICAgICAgYW5jaG9yUG9pbnQueCA9IE1hdGguZmxvb3IoYW5jaG9y
UG9pbnQueCk7CiAgICAgICAgIGFuY2hvclBvaW50LnkgPSBNYXRoLmZsb29yKGFuY2hvclBvaW50
LnkpOwogICAgICAgICB0aGlzLl9hbmNob3JQb2ludCA9IGFuY2hvclBvaW50OwotICAgIH0sCisg
ICAgfQogCi0gICAgX2FuaW1hdGVGcmFtZTogZnVuY3Rpb24odG9GcmFtZSwgdG9BbmNob3IpCisg
ICAgX2FuaW1hdGVGcmFtZSh0b0ZyYW1lLCB0b0FuY2hvcikKICAgICB7CiAgICAgICAgIHZhciBz
dGFydFRpbWUgPSBEYXRlLm5vdygpOwogICAgICAgICB2YXIgZHVyYXRpb24gPSAzNTA7CkBAIC0z
NTksOSArMzQ3LDkgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgZHJhd0JhY2tncm91bmQuY2FsbCh0aGlzKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9kcmF3QmFja2dyb3VuZDogZnVuY3Rpb24oKQorICAgIF9kcmF3QmFja2dyb3VuZCgp
CiAgICAgewogICAgICAgICB2YXIgc2NhbGVGYWN0b3IgPSB3aW5kb3cuZGV2aWNlUGl4ZWxSYXRp
bzsKIApAQCAtNDI5LDkgKzQxNyw5IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgZmluYWxDb250ZXh0LnNoYWRvd0NvbG9yID0gInJnYmEoMCwgMCwgMCwgMC41
KSI7CiAKICAgICAgICAgZmluYWxDb250ZXh0LmRyYXdJbWFnZShzY3JhdGNoQ2FudmFzLCAwLCAw
LCBzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9iZXN0
TWV0cmljc0ZvckVkZ2U6IGZ1bmN0aW9uKHByZWZlcnJlZFNpemUsIHRhcmdldEZyYW1lLCBjb250
YWluZXJGcmFtZSwgZWRnZSkKKyAgICBfYmVzdE1ldHJpY3NGb3JFZGdlKHByZWZlcnJlZFNpemUs
IHRhcmdldEZyYW1lLCBjb250YWluZXJGcmFtZSwgZWRnZSkKICAgICB7CiAgICAgICAgIHZhciB4
LCB5OwogICAgICAgICB2YXIgd2lkdGggPSBwcmVmZXJyZWRTaXplLndpZHRoICsgKFdlYkluc3Bl
Y3Rvci5Qb3BvdmVyLlNoYWRvd1BhZGRpbmcgKiAyKSArIChXZWJJbnNwZWN0b3IuUG9wb3Zlci5D
b250ZW50UGFkZGluZyAqIDIpOwpAQCAtNDk0LDkgKzQ4Miw5IEBAIFdlYkluc3BlY3Rvci5Qb3Bv
dmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGZyYW1lOiBiZXN0RnJhbWUsCiAgICAgICAg
ICAgICBjb250ZW50U2l6ZTogbmV3IFdlYkluc3BlY3Rvci5TaXplKHdpZHRoLCBoZWlnaHQpCiAg
ICAgICAgIH07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZHJhd0ZyYW1lOiBmdW5jdGlvbihjdHgs
IGJvdW5kcywgYW5jaG9yRWRnZSkKKyAgICBfZHJhd0ZyYW1lKGN0eCwgYm91bmRzLCBhbmNob3JF
ZGdlKQogICAgIHsKICAgICAgICAgdmFyIHIgPSBXZWJJbnNwZWN0b3IuUG9wb3Zlci5Db3JuZXJS
YWRpdXM7CiAgICAgICAgIHZhciBhcnJvd0hhbGZMZW5ndGggPSBXZWJJbnNwZWN0b3IuUG9wb3Zl
ci5BbmNob3JTaXplLndpZHRoIC8gMjsKQEAgLTU0Niw5ICs1MzQsOSBAQCBXZWJJbnNwZWN0b3Iu
UG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjdHguY2xvc2VQYXRoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWRkTGlzdGVuZXJz
SWZOZWVkZWQ6IGZ1bmN0aW9uKCkKKyAgICBfYWRkTGlzdGVuZXJzSWZOZWVkZWQoKQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9pc0xpc3RlbmluZ0ZvclBvcG92ZXJFdmVudHMpIHsKICAgICAg
ICAgICAgIHRoaXMuX2lzTGlzdGVuaW5nRm9yUG9wb3ZlckV2ZW50cyA9IHRydWU7CkBAIC01NTgs
NCArNTQ2LDEyIEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9IHsKICAgICB9CiB9
OwogCi1XZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuUG9wb3Zlci5GYWRlT3V0Q2xhc3NO
YW1lID0gImZhZGUtb3V0IjsKK1dlYkluc3BlY3Rvci5Qb3BvdmVyLmNhbnZhc0lkID0gMDsKK1dl
Ykluc3BlY3Rvci5Qb3BvdmVyLkNvcm5lclJhZGl1cyA9IDU7CitXZWJJbnNwZWN0b3IuUG9wb3Zl
ci5NaW5XaWR0aCA9IDQwOworV2ViSW5zcGVjdG9yLlBvcG92ZXIuTWluSGVpZ2h0ID0gNDA7CitX
ZWJJbnNwZWN0b3IuUG9wb3Zlci5TaGFkb3dQYWRkaW5nID0gNTsKK1dlYkluc3BlY3Rvci5Qb3Bv
dmVyLkNvbnRlbnRQYWRkaW5nID0gNTsKK1dlYkluc3BlY3Rvci5Qb3BvdmVyLkFuY2hvclNpemUg
PSBuZXcgV2ViSW5zcGVjdG9yLlNpemUoMjIsIDExKTsKK1dlYkluc3BlY3Rvci5Qb3BvdmVyLlNo
YWRvd0VkZ2VJbnNldHMgPSBuZXcgV2ViSW5zcGVjdG9yLkVkZ2VJbnNldHMoV2ViSW5zcGVjdG9y
LlBvcG92ZXIuU2hhZG93UGFkZGluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZURldGFpbHNTaWRlYmFy
UGFuZWwuanMKaW5kZXggOWRkNjk1Mi4uYWU3NGJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0
YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMSw2ICsxLDYgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsOSArMjQsMTEgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGZ1
bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBQ
cm9iZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGVi
YXJQYW5lbAogewotICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsLmNhbGwodGhp
cywgInByb2JlIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQcm9iZXMiKSwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJQcm9iZXMiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVByb2Jlcy5zdmciLCAi
NiIpOworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJwcm9iZSIsIFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUHJvYmVzIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJv
YmVzIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1Qcm9iZXMuc3ZnIiwgIjYiKTsKIAogICAgICAg
ICBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlByb2JlTWFuYWdlci5FdmVudC5Qcm9iZVNldEFkZGVkLCB0aGlzLl9wcm9iZVNldEFkZGVkLCB0
aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRSZW1vdmVkLCB0aGlzLl9w
cm9iZVNldFJlbW92ZWQsIHRoaXMpOwpAQCAtMzcsMjAgKzM5LDE0IEBAIFdlYkluc3BlY3Rvci5Q
cm9iZURldGFpbHNTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgICAgIC8vIEluaXRpYWxp
emUgc2lkZWJhciBzZWN0aW9ucyBmb3IgcHJvYmUgc2V0cyB0aGF0IGFscmVhZHkgZXhpc3QuCiAg
ICAgICAgIGZvciAodmFyIHByb2JlU2V0IG9mIFdlYkluc3BlY3Rvci5wcm9iZU1hbmFnZXIucHJv
YmVTZXRzKQogICAgICAgICAgICAgdGhpcy5fcHJvYmVTZXRBZGRlZChwcm9iZVNldCk7Ci19Owot
Ci1XZWJJbnNwZWN0b3IuUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLk9mZnNldFNlY3Rpb25zU3R5
bGVDbGFzc05hbWUgID0gIm9mZnNldC1zZWN0aW9ucyI7Ci0KLVdlYkluc3BlY3Rvci5Qcm9iZURl
dGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNw
ZWN0b3IuUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1Ymxp
YwogCiAgICAgZ2V0IGluc3BlY3RlZFByb2JlU2V0cygpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5faW5zcGVjdGVkUHJvYmVTZXRzLnNsaWNlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgaW5zcGVjdGVkUHJvYmVTZXRzKG5ld1Byb2JlU2V0cykKICAgICB7CkBAIC02NSw5ICs2MSw5
IEBAIFdlYkluc3BlY3Rvci5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdmFyIHNob3duU2VjdGlvbiA9IHRoaXMuX3Byb2JlU2V0U2VjdGlvbnMuZ2V0
KHByb2JlU2V0KTsKICAgICAgICAgICAgIHRoaXMuY29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQo
c2hvd25TZWN0aW9uLmVsZW1lbnQpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBp
bnNwZWN0OiBmdW5jdGlvbihvYmplY3RzKQorICAgIGluc3BlY3Qob2JqZWN0cykKICAgICB7CiAg
ICAgICAgIGlmICghKG9iamVjdHMgaW5zdGFuY2VvZiBBcnJheSkpCiAgICAgICAgICAgICBvYmpl
Y3RzID0gW29iamVjdHNdOwpAQCAtOTMsMTEgKzg5LDExIEBAIFdlYkluc3BlY3Rvci5Qcm9iZURl
dGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmluc3BlY3RlZFBy
b2JlU2V0cyA9IGluc3BlY3RlZFByb2JlU2V0czsKIAogICAgICAgICByZXR1cm4gISF0aGlzLl9p
bnNwZWN0ZWRQcm9iZVNldHMubGVuZ3RoOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX3Byb2JlU2V0QWRkZWQ6IGZ1bmN0aW9uKHByb2JlU2V0T3JFdmVudCkKKyAgICBf
cHJvYmVTZXRBZGRlZChwcm9iZVNldE9yRXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcHJvYmVT
ZXQ7CiAgICAgICAgIGlmIChwcm9iZVNldE9yRXZlbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
UHJvYmVTZXQpCkBAIC0xMDgsMTAgKzEwNCwxMCBAQCBXZWJJbnNwZWN0b3IuUHJvYmVEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgbmV3U2VjdGlvbiA9IG5l
dyBXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbihwcm9iZVNldCk7CiAgICAgICAg
IHRoaXMuX3Byb2JlU2V0U2VjdGlvbnMuc2V0KHByb2JlU2V0LCBuZXdTZWN0aW9uKTsKLSAgICB9
LAorICAgIH0KIAogCi0gICAgX3Byb2JlU2V0UmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X3Byb2JlU2V0UmVtb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBwcm9iZVNldCA9IGV2
ZW50LmRhdGEucHJvYmVTZXQ7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Byb2JlU2V0
U2VjdGlvbnMuaGFzKHByb2JlU2V0KSwgIlJlbW92ZWQgcHJvYmUgZ3JvdXAgIiwgcHJvYmVTZXQs
ICIgZG9lc24ndCBoYXZlIGEgc2lkZWJhci4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGF0YUdyaWQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERhdGFHcmlkLmpzCmlu
ZGV4IDFjYjdlYmMuLmJiZTU5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGF0YUdyaWQuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREYXRhR3JpZC5qcwpAQCAtMSw2
ICsxLDYgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNo
aW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjQsMTAgKzI0LDExIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5Qcm9iZVNldERhdGFHcmlkID0gZnVuY3Rpb24ocHJvYmVTZXQpCitXZWJJbnNwZWN0b3IuUHJv
YmVTZXREYXRhR3JpZCA9IGNsYXNzIFByb2JlU2V0RGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQKK3sKKyAgICBjb25zdHJ1Y3Rvcihwcm9iZVNldCkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2V0
LCAiSW52YWxpZCBQcm9iZVNldCBhcmd1bWVudDogIiwgcHJvYmVTZXQpOwotICAgIHRoaXMucHJv
YmVTZXQgPSBwcm9iZVNldDsKIAogICAgICAgICB2YXIgY29sdW1uc0RhdGEgPSB7fTsKICAgICAg
ICAgZm9yICh2YXIgcHJvYmUgb2YgcHJvYmVTZXQucHJvYmVzKSB7CkBAIC0zNSw3ICszNiw5IEBA
IFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkID0gZnVuY3Rpb24ocHJvYmVTZXQpCiAgICAg
ICAgICAgICBjb2x1bW5zRGF0YVtwcm9iZS5pZF0gPSB7IHRpdGxlOiBwcm9iZVRpdGxlIH07CiAg
ICAgICAgIH0KIAotICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnNE
YXRhKTsKKyAgICAgICAgc3VwZXIoY29sdW1uc0RhdGEpOworCisgICAgICAgIHRoaXMucHJvYmVT
ZXQgPSBwcm9iZVNldDsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiaW5s
aW5lIik7CiAKQEAgLTUyLDQ3ICs1NSwzNyBAQCBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3Jp
ZCA9IGZ1bmN0aW9uKHByb2JlU2V0KQogICAgICAgICB0aGlzLl9zZXR1cERhdGEoKTsKICAgICB9
CiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLkRhdGFVcGRhdGVkU3R5bGVDbGFzc05h
bWUgPSAiZGF0YS11cGRhdGVkIjsKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLlBhc3RG
cmFtZVN0eWxlQ2xhc3NOYW1lID0gInBhc3QtdmFsdWUiOwotV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGF0YUdyaWQuSGlnaGxpZ2h0ZWRGcmFtZVN0eWxlQ2xhc3NOYW1lID0gImhpZ2hsaWdodGVkIjsK
LQotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQuRGF0YVVwZGF0ZWRBbmltYXRpb25EdXJh
dGlvbiA9IDMwMDsgLy8gbWlsbGlzZWNvbmRzCi0KLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFH
cmlkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGF0YUdyaWQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBl
LAotCiAgICAgLy8gUHVibGljCiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQo
KQogICAgIHsKICAgICAgICAgZm9yICh2YXIgcHJvYmUgb2YgdGhpcy5wcm9iZVNldCkKICAgICAg
ICAgICAgIHRoaXMuX3RlYXJkb3duUHJvYmUocHJvYmUpOwogCiAgICAgICAgIHRoaXMuX2xpc3Rl
bmVycy51bmluc3RhbGwodHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAK
LSAgICBfc2V0dXBQcm9iZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NldHVwUHJvYmUoZXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgcHJvYmUgPSBldmVudC5kYXRhOwogICAgICAgICB0aGlzLmlu
c2VydENvbHVtbihwcm9iZS5pZCwge3RpdGxlOiBwcm9iZS5leHByZXNzaW9ufSk7CiAKICAgICAg
ICAgZm9yICh2YXIgZnJhbWUgb2YgdGhpcy5fZGF0YS5mcmFtZXMpCiAgICAgICAgICAgICB0aGlz
Ll91cGRhdGVOb2RlRm9yRnJhbWUoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RlYXJk
b3duUHJvYmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90ZWFyZG93blByb2JlKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIHByb2JlID0gZXZlbnQuZGF0YTsKICAgICAgICAgdGhpcy5yZW1vdmVD
b2x1bW4ocHJvYmUuaWQpOwogCiAgICAgICAgIGZvciAodmFyIGZyYW1lIG9mIHRoaXMuX2RhdGEu
ZnJhbWVzKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlTm9kZUZvckZyYW1lKGZyYW1lKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9zZXR1cERhdGE6IGZ1bmN0aW9uKCkKKyAgICBfc2V0dXBEYXRh
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLnByb2JlU2V0LmRhdGFUYWJsZTsK
ICAgICAgICAgZm9yICh2YXIgZnJhbWUgb2YgdGhpcy5fZGF0YS5mcmFtZXMpCkBAIC0xMDMsMTgg
Kzk2LDE4IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fZGF0YUxpc3RlbmVycy5yZWdpc3Rlcih0aGlzLl9kYXRhLCBXZWJJbnNwZWN0
b3IuUHJvYmVTZXREYXRhVGFibGUuRXZlbnQuU2VwYXJhdG9ySW5zZXJ0ZWQsIHRoaXMuX2RhdGFT
ZXBhcmF0b3JJbnNlcnRlZCk7CiAgICAgICAgIHRoaXMuX2RhdGFMaXN0ZW5lcnMucmVnaXN0ZXIo
dGhpcy5fZGF0YSwgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLkV2ZW50LldpbGxSZW1v
dmUsIHRoaXMuX3RlYXJkb3duRGF0YSk7CiAgICAgICAgIHRoaXMuX2RhdGFMaXN0ZW5lcnMuaW5z
dGFsbCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RlYXJkb3duRGF0YTogZnVuY3Rpb24oKQor
ICAgIF90ZWFyZG93bkRhdGEoKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUxpc3RlbmVycy51
bmluc3RhbGwodHJ1ZSk7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAg
dGhpcy5fZnJhbWVOb2RlcyA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX3NlcGFyYXRvcnMgPSBu
ZXcgTWFwOwogICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFVwZGF0ZWRGcmFtZTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF91cGRhdGVOb2RlRm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1lKQorICAgIF91
cGRhdGVOb2RlRm9yRnJhbWUoZnJhbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChm
cmFtZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFGcmFtZSwgIkludmFsaWQg
UHJvYmVTZXREYXRhRnJhbWUgYXJndW1lbnQ6ICIsIGZyYW1lKTsKICAgICAgICAgdmFyIG5vZGUg
PSBudWxsOwpAQCAtMTQ4LDkgKzE0MSw5IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlk
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfSwgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQu
RGF0YVVwZGF0ZWRBbmltYXRpb25EdXJhdGlvbik7CiAKICAgICAgICAgdGhpcy5fbm9kZXNTaW5j
ZUxhc3ROYXZpZ2F0aW9uLnB1c2gobm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRl
Tm9kZUZvclNlcGFyYXRvcjogZnVuY3Rpb24oZnJhbWUpCisgICAgX3VwZGF0ZU5vZGVGb3JTZXBh
cmF0b3IoZnJhbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9mcmFtZU5v
ZGVzLmhhcyhmcmFtZSksICJUcmllZCB0byBhZGQgc2VwYXJhdG9yIGZvciB1bmtub3duIGRhdGEg
ZnJhbWU6ICIsIGZyYW1lKTsKICAgICAgICAgdGhpcy5fZnJhbWVOb2Rlcy5nZXQoZnJhbWUpLnVw
ZGF0ZUNlbGxzRm9yU2VwYXJhdG9yKGZyYW1lLCB0aGlzLnByb2JlU2V0KTsKQEAgLTE1OSwyMiAr
MTUyLDIyIEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIG5vZGUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Qcm9iZVNl
dERhdGFHcmlkLlBhc3RGcmFtZVN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLl9ub2Rl
c1NpbmNlTGFzdE5hdmlnYXRpb24gPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhRnJh
bWVJbnNlcnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFGcmFtZUluc2VydGVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdmFyIGZyYW1lID0gZXZlbnQuZGF0YTsKICAgICAgICAgdGhpcy5f
bGFzdFVwZGF0ZWRGcmFtZSA9IGZyYW1lOwogICAgICAgICB0aGlzLl91cGRhdGVOb2RlRm9yRnJh
bWUoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFTZXBhcmF0b3JJbnNlcnRlZDog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFTZXBhcmF0b3JJbnNlcnRlZChldmVudCkKICAgICB7
CiAgICAgICAgIHZhciBmcmFtZSA9IGV2ZW50LmRhdGE7CiAgICAgICAgIHRoaXMuX3VwZGF0ZU5v
ZGVGb3JTZXBhcmF0b3IoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Byb2JlRXhwcmVz
c2lvbkNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wcm9iZUV4cHJlc3Npb25DaGFuZ2Vk
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlID0gZXZlbnQudGFyZ2V0OwogICAgICAg
ICBpZiAocHJvYmUuYnJlYWtwb2ludCAhPT0gdGhpcy5wcm9iZVNldC5icmVha3BvaW50KQpAQCAt
MTkyLDQgKzE4NSwxMCBAQCBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIGZvciAodmFyIGZyYW1lIG9mIHRoaXMuX2RhdGEuZnJhbWVzKQogICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlTm9kZUZvckZyYW1lKGZyYW1lKTsKICAgICB9Ci19Cit9OworCitX
ZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5EYXRhVXBkYXRlZFN0eWxlQ2xhc3NOYW1lID0g
ImRhdGEtdXBkYXRlZCI7CitXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5QYXN0RnJhbWVT
dHlsZUNsYXNzTmFtZSA9ICJwYXN0LXZhbHVlIjsKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFH
cmlkLkhpZ2hsaWdodGVkRnJhbWVTdHlsZUNsYXNzTmFtZSA9ICJoaWdobGlnaHRlZCI7CisKK1dl
Ykluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLkRhdGFVcGRhdGVkQW5pbWF0aW9uRHVyYXRpb24g
PSAzMDA7IC8vIG1pbGxpc2Vjb25kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERhdGFHcmlkTm9kZS5qcwpp
bmRleCAzYjViMWJhLi44Y2U1MWM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREYXRhR3JpZE5vZGUu
anMKQEAgLTEsNiArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIFVuaXZlcnNp
dHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI0LDM3ICsyNCwzMyBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRhR3JpZCkKK1dl
Ykluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkTm9kZSA9IGNsYXNzIFByb2JlU2V0RGF0YUdyaWRO
b2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZQoreworICAgIGNvbnN0cnVjdG9y
KGRhdGFHcmlkKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YUdyaWQgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZCwgIkludmFsaWQgUHJvYmVTZXREYXRh
R3JpZCBhcmd1bWVudDoiLCBkYXRhR3JpZCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWRO
b2RlLmNhbGwodGhpcywgdGhpcy5kYXRhKTsKKyAgICAgICAgc3VwZXIodGhpcy5kYXRhKTsKKwog
ICAgICAgICB0aGlzLmRhdGFHcmlkID0gZGF0YUdyaWQ7IC8vIFRoaXMgaXMgc2V0IHRvIG51bGwg
aW4gRGF0YUdyaWROb2RlJ3MgY29uc3RydWN0b3IuCiAgICAgICAgIHRoaXMuX2RhdGEgPSB7fTsK
IAogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsK
ICAgICAgICAgdGhpcy5fZWxlbWVudC5kYXRhR3JpZE5vZGUgPSB0aGlzOwogICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJldmVhbGVkIik7Ci19OwotCi1XZWJJbnNwZWN0b3Iu
UHJvYmVTZXREYXRhR3JpZE5vZGUuU2VwYXJhdG9yU3R5bGVDbGFzc05hbWUgPSAic2VwYXJhdG9y
IjsKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkTm9kZS5Vbmtub3duVmFsdWVTdHlsZUNs
YXNzTmFtZSA9ICJ1bmtub3duLXZhbHVlIjsKLQotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdy
aWROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2Jl
U2V0RGF0YUdyaWROb2RlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9k
ZS5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBkYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhOwotICAgIH0s
CisgICAgfQogCiAgICAgc2V0IGZyYW1lKHZhbHVlKQogICAgIHsKQEAgLTcwLDE0ICs2NiwxNCBA
QCBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgICAgIGRhdGFbcHJvYmUuaWRdID0gc2FtcGxlLm9iamVjdDsKICAgICAgICAgfQogICAg
ICAgICB0aGlzLl9kYXRhID0gZGF0YTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmcmFtZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZnJhbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBjcmVhdGVDZWxsQ29udGVudDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgY2VsbCkKKyAg
ICBjcmVhdGVDZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQogICAgIHsKICAgICAg
ICAgdmFyIHNhbXBsZSA9IHRoaXMuZGF0YVtjb2x1bW5JZGVudGlmaWVyXTsKICAgICAgICAgaWYg
KHNhbXBsZSA9PT0gV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUZyYW1lLk1pc3NpbmdWYWx1ZSkg
ewpAQCAtODksMTQgKzg1LDE3IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkTm9kZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZh
bHVlLmNyZWF0ZU9iamVjdFRyZWVPckZvcm1hdHRlZFZhbHVlRm9yUmVtb3RlT2JqZWN0KHNhbXBs
ZSwgbnVsbCk7CiAKICAgICAgICAgcmV0dXJuIHNhbXBsZTsKLSAgICB9LAorICAgIH0KIAotICAg
IHVwZGF0ZUNlbGxzRnJvbUZyYW1lOiBmdW5jdGlvbihmcmFtZSwgcHJvYmVTZXQpCisgICAgdXBk
YXRlQ2VsbHNGcm9tRnJhbWUoZnJhbWUsIHByb2JlU2V0KQogICAgIHsKLSAgICB9LAorICAgIH0K
IAotICAgIHVwZGF0ZUNlbGxzRm9yU2VwYXJhdG9yOiBmdW5jdGlvbihmcmFtZSwgcHJvYmVTZXQp
CisgICAgdXBkYXRlQ2VsbHNGb3JTZXBhcmF0b3IoZnJhbWUsIHByb2JlU2V0KQogICAgIHsKICAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Qcm9iZVNldERh
dGFHcmlkTm9kZS5TZXBhcmF0b3JTdHlsZUNsYXNzTmFtZSk7CiAgICAgfQogfTsKKworV2ViSW5z
cGVjdG9yLlByb2JlU2V0RGF0YUdyaWROb2RlLlNlcGFyYXRvclN0eWxlQ2xhc3NOYW1lID0gInNl
cGFyYXRvciI7CitXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZE5vZGUuVW5rbm93blZhbHVl
U3R5bGVDbGFzc05hbWUgPSAidW5rbm93bi12YWx1ZSI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9uLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRh
aWxzU2VjdGlvbi5qcwppbmRleCA3N2FhMjEzLi42NmE4ZWZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9u
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2Jl
U2V0RGV0YWlsc1NlY3Rpb24uanMKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CkBAIC0yMywxNiArMjQsMzAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbiA9
IGZ1bmN0aW9uKHByb2JlU2V0KQorV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24g
PSBjbGFzcyBQcm9iZVNldERldGFpbHNTZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRldGFp
bHNTZWN0aW9uCit7CisgICAgY29uc3RydWN0b3IocHJvYmVTZXQpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldCwg
IkludmFsaWQgUHJvYmVTZXQgYXJndW1lbnQ6IiwgcHJvYmVTZXQpOwogCi0gICAgdGhpcy5fbGlz
dGVuZXJzID0gbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2V0KHRoaXMsICJQcm9iZVNl
dERldGFpbHNTZWN0aW9uIFVJIGxpc3RlbmVycyIpOwotICAgIHRoaXMuX3Byb2JlU2V0ID0gcHJv
YmVTZXQ7Ci0KICAgICAgICAgdmFyIG9wdGlvbnNFbGVtZW50ID0gdGhpcy5fb3B0aW9uc0VsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgb3B0aW9uc0VsZW1l
bnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5TZWN0
aW9uT3B0aW9uc1N0eWxlQ2xhc3NOYW1lKTsKIAorICAgICAgICB2YXIgZGF0YUdyaWQgPSBuZXcg
V2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQocHJvYmVTZXQpOworCisgICAgICAgIHZhciBz
aW5nbGV0b25Sb3cgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0aW9uUm93OworICAgICAg
ICBzaW5nbGV0b25Sb3cuZWxlbWVudC5hcHBlbmRDaGlsZChkYXRhR3JpZC5lbGVtZW50KTsKKwor
ICAgICAgICB2YXIgcHJvYmVTZWN0aW9uR3JvdXAgPSBuZXcgV2ViSW5zcGVjdG9yLkRldGFpbHNT
ZWN0aW9uR3JvdXAoW3NpbmdsZXRvblJvd10pOworCisgICAgICAgIHZhciBkdW1teVRpdGxlID0g
IiI7CisgICAgICAgIFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbi5jYWxsKHRoaXMsICJwcm9i
ZSIsIGR1bW15VGl0bGUsIFtwcm9iZVNlY3Rpb25Hcm91cF0sIG9wdGlvbnNFbGVtZW50KTsKKyAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInByb2JlLXNldCIpOworCisgICAgICAg
IHRoaXMuX2xpc3RlbmVycyA9IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNldCh0aGlz
LCAiUHJvYmVTZXREZXRhaWxzU2VjdGlvbiBVSSBsaXN0ZW5lcnMiKTsKKyAgICAgICAgdGhpcy5f
cHJvYmVTZXQgPSBwcm9iZVNldDsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQgPSBkYXRhR3JpZDsK
KwogICAgICAgICB2YXIgcmVtb3ZlUHJvYmVCdXR0b24gPSBvcHRpb25zRWxlbWVudC5jcmVhdGVD
aGlsZCgiaW1nIik7CiAgICAgICAgIHJlbW92ZVByb2JlQnV0dG9uLmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uUHJvYmVSZW1vdmVTdHlsZUNsYXNzTmFt
ZSk7CiAgICAgICAgIHJlbW92ZVByb2JlQnV0dG9uLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uUHJvYmVCdXR0b25FbmFibGVkU3R5bGVDbGFzc05hbWUp
OwpAQCAtNTIsNDIgKzY3LDIwIEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9u
ID0gZnVuY3Rpb24ocHJvYmVTZXQpCiAgICAgICAgIHRoaXMuX3VwZGF0ZUxpbmtFbGVtZW50KCk7
CiAgICAgICAgIHRoaXMuX2xpc3RlbmVycy5yZWdpc3Rlcih0aGlzLl9wcm9iZVNldC5icmVha3Bv
aW50LCBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdl
LCB0aGlzLl91cGRhdGVMaW5rRWxlbWVudCk7CiAKLSAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBX
ZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZChwcm9iZVNldCk7Ci0gICAgdmFyIHNpbmdsZXRv
blJvdyA9IG5ldyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NlY3Rpb25Sb3c7Ci0gICAgc2luZ2xldG9u
Um93LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7Ci0gICAgdmFy
IHByb2JlU2VjdGlvbkdyb3VwID0gbmV3IFdlYkluc3BlY3Rvci5EZXRhaWxzU2VjdGlvbkdyb3Vw
KFtzaW5nbGV0b25Sb3ddKTsKLQotICAgIHZhciBkdW1teVRpdGxlID0gIiI7Ci0gICAgV2ViSW5z
cGVjdG9yLkRldGFpbHNTZWN0aW9uLmNhbGwodGhpcywgInByb2JlIiwgZHVtbXlUaXRsZSwgW3By
b2JlU2VjdGlvbkdyb3VwXSwgb3B0aW9uc0VsZW1lbnQpOwotICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlN0eWxlQ2xhc3NO
YW1lKTsKLQogICAgICAgICB0aGlzLl9saXN0ZW5lcnMuaW5zdGFsbCgpOwotfTsKLQotV2ViSW5z
cGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uQWRkUHJvYmVWYWx1ZVN0eWxlQ2xhc3NOYW1l
ID0gInByb2JlLWFkZCI7Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5Eb250
RmxvYXRMaW5rU3R5bGVDbGFzc05hbWUgPSAiZG9udC1mbG9hdCI7Ci1XZWJJbnNwZWN0b3IuUHJv
YmVTZXREZXRhaWxzU2VjdGlvbi5Qcm9iZUJ1dHRvbkVuYWJsZWRTdHlsZUNsYXNzTmFtZSA9ICJl
bmFibGVkIjsKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlUG9wb3Zl
ckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJwcm9iZS1wb3BvdmVyIjsKLVdlYkluc3BlY3Rvci5Q
cm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlQ2xlYXJTYW1wbGVzU3R5bGVDbGFzc05hbWUgPSAi
cHJvYmUtY2xlYXItc2FtcGxlcyI7Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlv
bi5Qcm9iZVJlbW92ZVN0eWxlQ2xhc3NOYW1lID0gInByb2JlLXJlbW92ZSI7Ci1XZWJJbnNwZWN0
b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5TZWN0aW9uT3B0aW9uc1N0eWxlQ2xhc3NOYW1lID0g
Im9wdGlvbnMiOwotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uU3R5bGVDbGFz
c05hbWUgPSAicHJvYmUtc2V0IjsKLQotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rp
b24ucHJvdG90eXBlID0gewotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRldGFpbHNTZWN0
aW9uLnByb3RvdHlwZSwKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0
YWlsc1NlY3Rpb24sCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBjbG9zZWQ6IGZ1bmN0
aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnVuaW5z
dGFsbCh0cnVlKTsKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZSgpOwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZUxpbmtFbGVtZW50OiBmdW5jdGlvbigp
CisgICAgX3VwZGF0ZUxpbmtFbGVtZW50KCkKICAgICB7CiAgICAgICAgIHZhciBicmVha3BvaW50
ID0gdGhpcy5fcHJvYmVTZXQuYnJlYWtwb2ludDsKICAgICAgICAgdmFyIHRpdGxlRWxlbWVudCA9
IG51bGw7CkBAIC0xMDgsOSArMTAxLDkgQEAgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1Nl
Y3Rpb24ucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2xpbmtFbGVtZW50ID0gdGl0bGVF
bGVtZW50OwogICAgICAgICB0aGlzLl9vcHRpb25zRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9s
aW5rRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWRkUHJvYmVCdXR0b25DbGlja2Vk
OiBmdW5jdGlvbihldmVudCkKKyAgICBfYWRkUHJvYmVCdXR0b25DbGlja2VkKGV2ZW50KQogICAg
IHsKICAgICAgICAgZnVuY3Rpb24gY3JlYXRlUHJvYmVGcm9tRW50ZXJlZEV4cHJlc3Npb24odmlz
aWJsZVBvcG92ZXIsIGV2ZW50KQogICAgICAgICB7CkBAIC0xMzQsMTUgKzEyNywyNCBAQCBXZWJJ
bnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZh
ciB0YXJnZXQgPSBXZWJJbnNwZWN0b3IuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoZXZlbnQudGFy
Z2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKICAgICAgICAgcG9wb3Zlci5wcmVzZW50KHRh
cmdldCwgW1dlYkluc3BlY3Rvci5SZWN0RWRnZS5NQVhfWSwgV2ViSW5zcGVjdG9yLlJlY3RFZGdl
Lk1JTl9ZLCBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1hdKTsKICAgICAgICAgdGV4dEJveC5z
ZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZW1vdmVCdXR0b25DbGlja2VkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfcmVtb3ZlQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3Byb2JlU2V0LmNsZWFyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXJT
YW1wbGVzQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NsZWFyU2FtcGxlc0J1
dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcm9iZVNldC5jbGVhclNh
bXBsZXMoKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUHJvYmVTZXREZXRhaWxzU2VjdGlv
bi5BZGRQcm9iZVZhbHVlU3R5bGVDbGFzc05hbWUgPSAicHJvYmUtYWRkIjsKK1dlYkluc3BlY3Rv
ci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLkRvbnRGbG9hdExpbmtTdHlsZUNsYXNzTmFtZSA9ICJk
b250LWZsb2F0IjsKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlQnV0
dG9uRW5hYmxlZFN0eWxlQ2xhc3NOYW1lID0gImVuYWJsZWQiOworV2ViSW5zcGVjdG9yLlByb2Jl
U2V0RGV0YWlsc1NlY3Rpb24uUHJvYmVQb3BvdmVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInBy
b2JlLXBvcG92ZXIiOworV2ViSW5zcGVjdG9yLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24uUHJvYmVD
bGVhclNhbXBsZXNTdHlsZUNsYXNzTmFtZSA9ICJwcm9iZS1jbGVhci1zYW1wbGVzIjsKK1dlYklu
c3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlByb2JlUmVtb3ZlU3R5bGVDbGFzc05hbWUg
PSAicHJvYmUtcmVtb3ZlIjsKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERldGFpbHNTZWN0aW9uLlNl
Y3Rpb25PcHRpb25zU3R5bGVDbGFzc05hbWUgPSAib3B0aW9ucyI7CitXZWJJbnNwZWN0b3IuUHJv
YmVTZXREZXRhaWxzU2VjdGlvbi5TdHlsZUNsYXNzTmFtZSA9ICJwcm9iZS1zZXQiOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvZmlsZU5v
ZGVEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Qcm9maWxlTm9kZURhdGFHcmlkTm9kZS5qcwppbmRleCBlZGUxMWM2Li5iMDgxNTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9m
aWxlTm9kZURhdGFHcmlkTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Qcm9maWxlTm9kZURhdGFHcmlkTm9kZS5qcwpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMSArMjMsMTMgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
UHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihwcm9maWxlTm9kZSwgYmFzZVN0YXJ0
VGltZSwgcmFuZ2VTdGFydFRpbWUsIHJhbmdlRW5kVGltZSkKK1dlYkluc3BlY3Rvci5Qcm9maWxl
Tm9kZURhdGFHcmlkTm9kZSA9IGNsYXNzIFByb2ZpbGVOb2RlRGF0YUdyaWROb2RlIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlCit7CisgICAgY29uc3RydWN0b3IocHJv
ZmlsZU5vZGUsIGJhc2VTdGFydFRpbWUsIHJhbmdlU3RhcnRUaW1lLCByYW5nZUVuZFRpbWUpCiAg
ICAgewogICAgICAgICB2YXIgaGFzQ2hpbGRyZW4gPSAhIXByb2ZpbGVOb2RlLmNoaWxkTm9kZXMu
bGVuZ3RoOwogCi0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLmNhbGwodGhp
cywgZmFsc2UsIG51bGwsIGhhc0NoaWxkcmVuKTsKKyAgICAgICAgc3VwZXIoZmFsc2UsIG51bGws
IGhhc0NoaWxkcmVuKTsKIAogICAgICAgICB0aGlzLl9wcm9maWxlTm9kZSA9IHByb2ZpbGVOb2Rl
OwogICAgICAgICB0aGlzLl9iYXNlU3RhcnRUaW1lID0gYmFzZVN0YXJ0VGltZSB8fCAwOwpAQCAt
MzYsNTAgKzM4LDQxIEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZURhdGFHcmlkTm9kZSA9IGZ1
bmN0aW9uKHByb2ZpbGVOb2RlLCBiYXNlU3RhcnRUaW1lLCByYW5nCiAKICAgICAgICAgdGhpcy5f
ZGF0YSA9IHRoaXMuX3Byb2ZpbGVOb2RlLmNvbXB1dGVDYWxsSW5mb0ZvclRpbWVSYW5nZSh0aGlz
Ll9yYW5nZVN0YXJ0VGltZSwgdGhpcy5fcmFuZ2VFbmRUaW1lKTsKICAgICAgICAgdGhpcy5fZGF0
YS5sb2NhdGlvbiA9IHRoaXMuX3Byb2ZpbGVOb2RlLnNvdXJjZUNvZGVMb2NhdGlvbjsKLX07Ci0K
LS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2Ug
Y2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3Ry
dWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWROb2RlKTsKLQot
V2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWROb2RlLkljb25TdHlsZUNsYXNzTmFtZSA9
ICJpY29uIjsKLQotV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWROb2RlLnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWRO
b2RlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnBy
b3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBwcm9maWxlTm9kZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcHJvZmlsZU5vZGU7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgcmVjb3JkcygpCiAgICAgewogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBiYXNlU3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9iYXNlU3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJhbmdlU3Rh
cnRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yYW5nZVN0YXJ0VGltZTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCByYW5nZUVuZFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3JhbmdlRW5kVGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkYXRhKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhOwotICAgIH0sCisgICAgfQogCi0gICAg
dXBkYXRlUmFuZ2VUaW1lczogZnVuY3Rpb24oc3RhcnRUaW1lLCBlbmRUaW1lKQorICAgIHVwZGF0
ZVJhbmdlVGltZXMoc3RhcnRUaW1lLCBlbmRUaW1lKQogICAgIHsKICAgICAgICAgdmFyIG9sZFJh
bmdlU3RhcnRUaW1lID0gdGhpcy5fcmFuZ2VTdGFydFRpbWU7CiAgICAgICAgIHZhciBvbGRSYW5n
ZUVuZFRpbWUgPSB0aGlzLl9yYW5nZUVuZFRpbWU7CkBAIC0xMDAsMTkgKzkzLDE5IEBAIFdlYklu
c3BlY3Rvci5Qcm9maWxlTm9kZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
aWYgKG9sZFN0YXJ0Qm91bmRhcnkgIT09IG5ld1N0YXJ0Qm91bmRhcnkgfHwgb2xkRW5kQm91bmRh
cnkgIT09IG5ld0VuZEJvdW5kYXJ5KQogICAgICAgICAgICAgdGhpcy5uZWVkc1JlZnJlc2goKTsK
LSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLl9wcm9maWxlTm9kZS5jb21wdXRlQ2Fs
bEluZm9Gb3JUaW1lUmFuZ2UodGhpcy5fcmFuZ2VTdGFydFRpbWUsIHRoaXMuX3JhbmdlRW5kVGlt
ZSk7CiAgICAgICAgIHRoaXMuX2RhdGEubG9jYXRpb24gPSB0aGlzLl9wcm9maWxlTm9kZS5zb3Vy
Y2VDb2RlTG9jYXRpb247CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWRO
b2RlLnByb3RvdHlwZS5yZWZyZXNoLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBj
cmVhdGVDZWxsQ29udGVudDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgY2VsbCkKKyAgICBj
cmVhdGVDZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQogICAgIHsKLSAgICAgICAg
Y29uc3QgZW1wdHlWYWx1ZVBsYWNlaG9sZGVyU3RyaW5nID0gIlx1MjAxNCI7CisgICAgICAgIHZh
ciBlbXB0eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgPSAiXHUyMDE0IjsKICAgICAgICAgdmFyIHZh
bHVlID0gdGhpcy5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwogCiAgICAgICAgIHN3aXRjaCAoY29s
dW1uSWRlbnRpZmllcikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUHJvZmlsZU5vZGVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2ZpbGVOb2RlVHJlZUVsZW1lbnQuanMKaW5k
ZXggMTFhYjI0OS4uMjJiYmY5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUHJvZmlsZU5vZGVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9maWxlTm9kZVRyZWVFbGVtZW50
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjEwNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDEzICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocHJv
ZmlsZU5vZGUsIGRlbGVnYXRlKQorV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQg
PSBjbGFzcyBQcm9maWxlTm9kZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVy
YWxUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKHByb2ZpbGVOb2RlLCBkZWxlZ2F0ZSkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2ZpbGVOb2RlKTsKIAotICAgIHRoaXMu
X3Byb2ZpbGVOb2RlID0gcHJvZmlsZU5vZGU7Ci0gICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0
ZSB8fCBudWxsOwotCiAgICAgICAgIHZhciB0aXRsZSA9IHByb2ZpbGVOb2RlLmZ1bmN0aW9uTmFt
ZTsKICAgICAgICAgdmFyIHN1YnRpdGxlID0gIiI7CiAKQEAgLTQ3LDcgKzQ2LDcgQEAgV2ViSW5z
cGVjdG9yLlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihwcm9maWxlTm9kZSwgZGVs
ZWdhdGUpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgIHZhciBzb3VyY2VDb2RlTG9j
YXRpb24gPSB0aGlzLl9wcm9maWxlTm9kZS5zb3VyY2VDb2RlTG9jYXRpb247CisgICAgICAgIHZh
ciBzb3VyY2VDb2RlTG9jYXRpb24gPSBwcm9maWxlTm9kZS5zb3VyY2VDb2RlTG9jYXRpb247CiAg
ICAgICAgIGlmIChzb3VyY2VDb2RlTG9jYXRpb24pIHsKICAgICAgICAgICAgIHN1YnRpdGxlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgc291cmNlQ29kZUxv
Y2F0aW9uLnBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblN0cmluZyhzdWJ0aXRsZSwgInRleHRD
b250ZW50Iik7CkBAIC01NSw3ICs1NCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZVRyZWVF
bGVtZW50ID0gZnVuY3Rpb24ocHJvZmlsZU5vZGUsIGRlbGVnYXRlKQogCiAgICAgICAgIHZhciBj
bGFzc05hbWU7CiAKLSAgICBzd2l0Y2ggKHRoaXMuX3Byb2ZpbGVOb2RlLnR5cGUpIHsKKyAgICAg
ICAgc3dpdGNoIChwcm9maWxlTm9kZS50eXBlKSB7CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9y
LlByb2ZpbGVOb2RlLlR5cGUuRnVuY3Rpb246CiAgICAgICAgICAgICBjbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuQ2FsbEZyYW1lVHJlZUVsZW1lbnQuRnVuY3Rpb25JY29uU3R5bGVDbGFzc05hbWU7
CiAgICAgICAgICAgICBpZiAoIXNvdXJjZUNvZGVMb2NhdGlvbikKQEAgLTc1LDM1ICs3NCwzNCBA
QCBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHByb2ZpbGVO
b2RlLCBkZWxlZ2F0ZSkKIAogICAgICAgICB2YXIgaGFzQ2hpbGRyZW4gPSAhIXByb2ZpbGVOb2Rl
LmNoaWxkTm9kZXMubGVuZ3RoOwogCi0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVu
dC5jYWxsKHRoaXMsIFtjbGFzc05hbWVdLCB0aXRsZSwgc3VidGl0bGUsIHByb2ZpbGVOb2RlLCBo
YXNDaGlsZHJlbik7CisgICAgICAgIHN1cGVyKFtjbGFzc05hbWVdLCB0aXRsZSwgc3VidGl0bGUs
IHByb2ZpbGVOb2RlLCBoYXNDaGlsZHJlbik7CisKKyAgICAgICAgdGhpcy5fcHJvZmlsZU5vZGUg
PSBwcm9maWxlTm9kZTsKKyAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxs
OwogCiAgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwogICAgICAgICB0aGlzLnNob3VsZFJlZnJl
c2hDaGlsZHJlbiA9IHRydWU7CiAKICAgICAgICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbikKICAg
ICAgICAgICAgIHRoaXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5Qcm9maWxlTm9kZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlVHJlZUVsZW1lbnQsCi0gICAgX19wcm90
b19fOiBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICB9CiAK
ICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBwcm9maWxlTm9kZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fcHJvZmlsZU5vZGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZmlsdGVy
YWJsZURhdGEoKQogICAgIHsKICAgICAgICAgdmFyIHVybCA9IHRoaXMuX3Byb2ZpbGVOb2RlLnNv
dXJjZUNvZGVMb2NhdGlvbiA/IHRoaXMuX3Byb2ZpbGVOb2RlLnNvdXJjZUNvZGVMb2NhdGlvbi5z
b3VyY2VDb2RlLnVybCA6ICIiOwogICAgICAgICByZXR1cm4ge3RleHQ6IFt0aGlzLm1haW5UaXRs
ZSwgdXJsIHx8ICIiXX07Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAg
IG9uYXR0YWNoOiBmdW5jdGlvbigpCisgICAgb25hdHRhY2goKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlz
KTsKIApAQCAtMTE0LDkgKzExMiw5IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlTm9kZVRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgdG9vbHRpcFByZWZpeCA9IHRoaXMubWFp
blRpdGxlICsgIlxuIjsKICAgICAgICAgdGhpcy5fcHJvZmlsZU5vZGUuc291cmNlQ29kZUxvY2F0
aW9uLnBvcHVsYXRlTGl2ZURpc3BsYXlMb2NhdGlvblRvb2x0aXAodGhpcy5lbGVtZW50LCB0b29s
dGlwUHJlZml4KTsKLSAgICB9LAorICAgIH0KIAotICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkK
KyAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbiB8
fCAhdGhpcy5zaG91bGRSZWZyZXNoQ2hpbGRyZW4pCiAgICAgICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9wZXJ0
aWVzU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Byb3BlcnRpZXNTZWN0aW9uLmpzCmluZGV4IDU3MTQ3MmIuLmRkOWQ5OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb3BlcnRpZXNTZWN0
aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1By
b3BlcnRpZXNTZWN0aW9uLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMywxNyArMjMsMTggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24gPSBm
dW5jdGlvbih0aXRsZSwgc3VidGl0bGUpCitXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24g
PSBjbGFzcyBQcm9wZXJ0aWVzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5TZWN0aW9uCiB7
CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIodGl0bGUsIHN1YnRpdGxl
KTsKKwogICAgICAgICB0aGlzLnByb3BlcnRpZXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgib2wiKTsKICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzRWxlbWVudC5jbGFzc05hbWUgPSAi
cHJvcGVydGllcyBwcm9wZXJ0aWVzLXRyZWUiOwogICAgICAgICB0aGlzLnByb3BlcnRpZXNFbGVt
ZW50LnRhYkluZGV4ID0gMDsKLSAgICB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZSA9IG5ldyBU
cmVlT3V0bGluZSh0aGlzLnByb3BlcnRpZXNFbGVtZW50KTsKKyAgICAgICAgdGhpcy5wcm9wZXJ0
aWVzVHJlZU91dGxpbmUgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lKHRoaXMucHJvcGVy
dGllc0VsZW1lbnQpOwogICAgICAgICB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5zZWN0aW9u
ID0gdGhpczsKIAotICAgIFdlYkluc3BlY3Rvci5TZWN0aW9uLmNhbGwodGhpcywgdGl0bGUsIHN1
YnRpdGxlKTsKLQogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wcm9wZXJ0
aWVzRWxlbWVudCk7CisgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9u
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5cGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlj
a0NvbnNvbGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9R
dWlja0NvbnNvbGUuanMKaW5kZXggNzgxNTI0Mi4uY2FhYWM2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZS5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsMTAgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCitXZWJJ
bnNwZWN0b3IuUXVpY2tDb25zb2xlID0gY2xhc3MgUXVpY2tDb25zb2xlIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50KQorICAgIHsK
KyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLl90b2dnbGVPckZvY3VzS2V5Ym9hcmRT
aG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNw
ZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlLCB0aGlzLl90b2dnbGVPckZvY3VzLmJp
bmQodGhpcykpOwogCkBAIC0zOCw3ICszOSw3IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUg
PSBmdW5jdGlvbihlbGVtZW50KQogICAgICAgICB0aGlzLl9mcmFtZUlkZW50aWZpZXJUb0V4ZWN1
dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50TWFwID0ge307CiAKICAgICAgICAgdGhpcy5fZWxlbWVu
dCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuU3R5bGVDbGFz
c05hbWUpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInF1aWNrLWNvbnNv
bGUiKTsKIAogICAgICAgICB0aGlzLnByb21wdCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZVBy
b21wdChudWxsLCAidGV4dC9qYXZhc2NyaXB0Iik7CiAgICAgICAgIHRoaXMucHJvbXB0LmVsZW1l
bnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLlRleHRQcm9tcHRTdHls
ZUNsYXNzTmFtZSk7CkBAIC03Niw1MiArNzcsMzMgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29s
ZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCiAgICAgICAgIH0KIAogICAgICAgICBXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5BY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHRoaXMuX2RlYnVnZ2VyQWN0aXZl
Q2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5RdWlja0NvbnNv
bGUuU3R5bGVDbGFzc05hbWUgPSAicXVpY2stY29uc29sZSI7Ci1XZWJJbnNwZWN0b3IuUXVpY2tD
b25zb2xlLlNob3dpbmdMb2dDbGFzc05hbWUgPSAic2hvd2luZy1sb2ciOwotV2ViSW5zcGVjdG9y
LlF1aWNrQ29uc29sZS5OYXZpZ2F0aW9uQmFyQ29udGFpbmVyU3R5bGVDbGFzc05hbWUgPSAibmF2
aWdhdGlvbi1iYXItY29udGFpbmVyIjsKLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuTmF2aWdh
dGlvbkJhclNwYWNlclN0eWxlQ2xhc3NOYW1lID0gIm5hdmlnYXRpb24tYmFyLXNwYWNlciI7Ci1X
ZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLlRleHRQcm9tcHRTdHlsZUNsYXNzTmFtZSA9ICJ0ZXh0
LXByb21wdCI7Ci0KLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuVG9vbGJhclNpbmdsZUxpbmVI
ZWlnaHQgPSAyMTsKLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuVG9vbGJhclByb21wdFBhZGRp
bmcgPSA0OwotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5Ub29sYmFyVG9wQm9yZGVyID0gMTsK
LQotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5NYWluRnJhbWVDb250ZXh0RXhlY3V0aW9uSWRl
bnRpZmllciA9IHVuZGVmaW5lZDsKLQotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5FdmVudCA9
IHsKLSAgICBEaWRSZXNpemU6ICJxdWljay1jb25zb2xlLWRpZC1yZXNpemUiCi19OwotCi1XZWJJ
bnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlF1aWNrQ29uc29sZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdl
dCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25CYXIoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX25hdmlnYXRpb25CYXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZXhlY3V0aW9u
Q29udGV4dElkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVk
RXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQuX2V4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVy
OwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBk
YXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIC8vIEEgaGFyZCBtYXhpbXVtIHNpemUgb2YgMzMl
IG9mIHRoZSB3aW5kb3cuCi0gICAgICAgIGNvbnN0IG1heGltdW1BbGxvd2VkSGVpZ2h0ID0gTWF0
aC5yb3VuZCh3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjMzKTsKKyAgICAgICAgdmFyIG1heGltdW1B
bGxvd2VkSGVpZ2h0ID0gTWF0aC5yb3VuZCh3aW5kb3cuaW5uZXJIZWlnaHQgKiAwLjMzKTsKICAg
ICAgICAgdGhpcy5wcm9tcHQuZWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSBtYXhpbXVtQWxsb3dl
ZEhlaWdodCArICJweCI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb25zb2xlTG9nVmlzaWJpbGl0
eUNoYW5nZWQ6IGZ1bmN0aW9uKHZpc2libGUpCisgICAgY29uc29sZUxvZ1Zpc2liaWxpdHlDaGFu
Z2VkKHZpc2libGUpCiAgICAgewogICAgICAgICBpZiAodmlzaWJsZSkKICAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuU2hvd2lu
Z0xvZ0NsYXNzTmFtZSk7CkBAIC0xMjksMTEgKzExMSwxMSBAQCBXZWJJbnNwZWN0b3IuUXVpY2tD
b25zb2xlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuU2hvd2luZ0xvZ0NsYXNzTmFtZSk7CiAK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlF1aWNr
Q29uc29sZS5FdmVudC5EaWRSZXNpemUpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0
ZQogCi0gICAgX2V4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50c1RvRGlzcGxheTogZnVuY3Rp
b24oKQorICAgIF9leGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHNUb0Rpc3BsYXkoKQogICAg
IHsKICAgICAgICAgLy8gSWYgd2UgYXJlIGluIHRoZSBkZWJ1Z2dlciB0aGUgY29uc29sZSB3aWxs
IHVzZSB0aGUgYWN0aXZlIGNhbGwgZnJhbWUsIGRvbid0IHNob3cgdGhlIHNlbGVjdG9yLgogICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUpCkBA
IC0xNDQsOSArMTI2LDkgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm4gW107CiAKICAgICAgICAgcmV0dXJuIFt0aGlzLl9zZWxlY3Rl
ZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50XTsKLSAgICB9LAorICAgIH0KIAotICAgIF9y
ZWJ1aWxkRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzOiBmdW5jdGlvbigpCisgICAgX3Jl
YnVpbGRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHMoKQogICAgIHsKICAgICAgICAgdmFy
IGNvbXBvbmVudHMgPSB0aGlzLl9leGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudHNUb0Rpc3Bs
YXkoKTsKICAgICAgICAgdmFyIGlzRW1wdHkgPSAhY29tcG9uZW50cy5sZW5ndGg7CkBAIC0xNTUs
OSArMTM3LDkgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgdGhpcy5fZXhlY3V0aW9uQ29udGV4dFNlbGVjdG9ySXRlbS5oaWRkZW4gPSBpc0VtcHR5
OwogICAgICAgICB0aGlzLl9leGVjdXRpb25Db250ZXh0U2VsZWN0b3JEaXZpZGVyLmhpZGRlbiA9
IGlzRW1wdHk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZnJhbWVQYWdlRXhlY3V0aW9uQ29udGV4
dHNDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZnJhbWVQYWdlRXhlY3V0aW9uQ29udGV4
dHNDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGZyYW1lID0gZXZlbnQudGFyZ2V0
OwogCkBAIC0xNzAsOSArMTUyLDkgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29t
cG9uZW50ID0gbmV3RXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQ7CiAgICAgICAgICAgICB0
aGlzLl9yZWJ1aWxkRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzKCk7CiAgICAgICAgIH0K
LSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZUV4ZWN1dGlvbkNvbnRleHRzQ2xlYXJlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX2ZyYW1lRXhlY3V0aW9uQ29udGV4dHNDbGVhcmVkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdmFyIGZyYW1lID0gZXZlbnQudGFyZ2V0OwogCkBAIC0xODcsMjcgKzE2
OSwyNyBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
fQogCiAgICAgICAgIHRoaXMuX3JlbW92ZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50Rm9y
RnJhbWUoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZyYW1lQWRkZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9mcmFtZUFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGZyYW1l
ID0gZXZlbnQuZGF0YS5mcmFtZTsKICAgICAgICAgdGhpcy5faW5zZXJ0RXhlY3V0aW9uQ29udGV4
dFBhdGhDb21wb25lbnRGb3JGcmFtZShmcmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZnJh
bWVSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZnJhbWVSZW1vdmVkKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIGZyYW1lID0gZXZlbnQuZGF0YS5mcmFtZTsKICAgICAgICAgdGhpcy5f
cmVtb3ZlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRGb3JGcmFtZShmcmFtZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfZnJhbWVNYWluUmVzb3VyY2VDaGFuZ2VkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfZnJhbWVNYWluUmVzb3VyY2VDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
dmFyIGZyYW1lID0gZXZlbnQudGFyZ2V0OwogICAgICAgICB0aGlzLl91cGRhdGVFeGVjdXRpb25D
b250ZXh0UGF0aENvbXBvbmVudEZvckZyYW1lKGZyYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9jcmVhdGVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudDogZnVuY3Rpb24obmFtZSwgaWRl
bnRpZmllcikKKyAgICBfY3JlYXRlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnQobmFtZSwg
aWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIHZhciBwYXRoQ29tcG9uZW50ID0gbmV3IFdlYklu
c3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50KG5hbWUsICJleGVjdXRpb24tY29udGV4
dCIsIGlkZW50aWZpZXIsIHRydWUsIHRydWUpOwogICAgICAgICBwYXRoQ29tcG9uZW50LmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuRXZlbnQu
U2libGluZ1dhc1NlbGVjdGVkLCB0aGlzLl9wYXRoQ29tcG9uZW50U2VsZWN0ZWQsIHRoaXMpOwpA
QCAtMjE1LDkgKzE5Nyw5IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlID0g
ewogICAgICAgICBwYXRoQ29tcG9uZW50LnRydW5jYXRlZERpc3BsYXlOYW1lTGVuZ3RoID0gNTA7
CiAgICAgICAgIHBhdGhDb21wb25lbnQuX2V4ZWN1dGlvbkNvbnRleHRJZGVudGlmaWVyID0gaWRl
bnRpZmllcjsKICAgICAgICAgcmV0dXJuIHBhdGhDb21wb25lbnQ7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfY3JlYXRlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRGcm9tRnJhbWU6IGZ1bmN0
aW9uKGZyYW1lKQorICAgIF9jcmVhdGVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudEZyb21G
cmFtZShmcmFtZSkKICAgICB7CiAgICAgICAgIHZhciBuYW1lID0gZnJhbWUubmFtZSA/IGZyYW1l
Lm5hbWUgKyAiIFx1MjAxNCAiICsgZnJhbWUubWFpblJlc291cmNlLmRpc3BsYXlOYW1lIDogZnJh
bWUubWFpblJlc291cmNlLmRpc3BsYXlOYW1lOwogICAgICAgICB2YXIgaWRlbnRpZmllciA9IFdl
Ykluc3BlY3Rvci5FeGVjdXRpb25Db250ZXh0LnN1cHBvcnRlZCgpID8gZnJhbWUucGFnZUV4ZWN1
dGlvbkNvbnRleHQuaWQgOiBmcmFtZS5pZDsKQEAgLTIyNiw5ICsyMDgsOSBAQCBXZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcGF0aENvbXBvbmVudC5fZnJh
bWUgPSBmcmFtZTsKIAogICAgICAgICByZXR1cm4gcGF0aENvbXBvbmVudDsKLSAgICB9LAorICAg
IH0KIAotICAgIF9jb21wYXJlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzOiBmdW5jdGlv
bihhLCBiKQorICAgIF9jb21wYXJlRXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRzKGEsIGIp
CiAgICAgewogICAgICAgICAvLyAiTWFpbiBGcmFtZSIgYWx3YXlzIG9uIHRvcC4KICAgICAgICAg
aWYgKCFhLl9mcmFtZSkKQEAgLTI0Myw5ICsyMjUsOSBAQCBXZWJJbnNwZWN0b3IuUXVpY2tDb25z
b2xlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiAxOwogCiAgICAgICAgIHJldHVy
biBhLmRpc3BsYXlOYW1lLmxvY2FsZUNvbXBhcmUoYi5kaXNwbGF5TmFtZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfaW5zZXJ0RXhlY3V0aW9uQ29udGV4dFBhdGhDb21wb25lbnRGb3JGcmFtZTog
ZnVuY3Rpb24oZnJhbWUsIHNraXBSZWJ1aWxkKQorICAgIF9pbnNlcnRFeGVjdXRpb25Db250ZXh0
UGF0aENvbXBvbmVudEZvckZyYW1lKGZyYW1lLCBza2lwUmVidWlsZCkKICAgICB7CiAgICAgICAg
IGlmIChmcmFtZS5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX21haW5G
cmFtZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50OwpAQCAtMjc2LDkgKzI1OCw5IEBAIFdl
Ykluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5f
cmVidWlsZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50cygpOwogCiAgICAgICAgIHJldHVy
biBleGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9y
ZW1vdmVFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudEZvckZyYW1lOiBmdW5jdGlvbihmcmFt
ZSwgc2tpcFJlYnVpbGQpCisgICAgX3JlbW92ZUV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50
Rm9yRnJhbWUoZnJhbWUsIHNraXBSZWJ1aWxkKQogICAgIHsKICAgICAgICAgaWYgKGZyYW1lLmlz
TWFpbkZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zMDYsOSArMjg4LDkgQEAgV2Vi
SW5zcGVjdG9yLlF1aWNrQ29uc29sZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCFza2lw
UmVidWlsZCkKICAgICAgICAgICAgIHRoaXMuX3JlYnVpbGRFeGVjdXRpb25Db250ZXh0UGF0aENv
bXBvbmVudHMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVFeGVjdXRpb25Db250ZXh0
UGF0aENvbXBvbmVudEZvckZyYW1lOiBmdW5jdGlvbihmcmFtZSkKKyAgICBfdXBkYXRlRXhlY3V0
aW9uQ29udGV4dFBhdGhDb21wb25lbnRGb3JGcmFtZShmcmFtZSkKICAgICB7CiAgICAgICAgIGlm
IChmcmFtZS5pc01haW5GcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzI2LDkgKzMw
OCw5IEBAIFdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRFeGVjdXRpb25Db250ZXh0UGF0aENvbXBvbmVudCA9IG5ld0V4ZWN1
dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50OwogCiAgICAgICAgIHRoaXMuX3JlYnVpbGRFeGVjdXRp
b25Db250ZXh0UGF0aENvbXBvbmVudHMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXRoQ29t
cG9uZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50ID09
PSB0aGlzLl9zZWxlY3RlZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50KQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMzM2LDE5ICszMTgsMTkgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29s
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkRXhlY3V0aW9uQ29udGV4dFBh
dGhDb21wb25lbnQgPSBldmVudC5kYXRhLnBhdGhDb21wb25lbnQ7CiAKICAgICAgICAgdGhpcy5f
cmVidWlsZEV4ZWN1dGlvbkNvbnRleHRQYXRoQ29tcG9uZW50cygpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3BhdGhDb21wb25lbnRDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcGF0aENv
bXBvbmVudENsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnByb21wdC5mb2N1cygp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2RlYnVnZ2VyQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdl
OiBmdW5jdGlvbihldmVudCkKKyAgICBfZGVidWdnZXJBY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2Uo
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWJ1aWxkRXhlY3V0aW9uQ29udGV4dFBhdGhD
b21wb25lbnRzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlT3JGb2N1czogZnVuY3Rp
b24oZXZlbnQpCisgICAgX3RvZ2dsZU9yRm9jdXMoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5wcm9tcHQuZm9jdXNlZCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci50b2dnbGVTcGxp
dENvbnNvbGUoKTsKQEAgLTM1Nyw0ICszMzksMTcgQEAgV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29s
ZS5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJ
bnNwZWN0b3IuUXVpY2tDb25zb2xlLlNob3dpbmdMb2dDbGFzc05hbWUgPSAic2hvd2luZy1sb2ci
OworV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5OYXZpZ2F0aW9uQmFyQ29udGFpbmVyU3R5bGVD
bGFzc05hbWUgPSAibmF2aWdhdGlvbi1iYXItY29udGFpbmVyIjsKK1dlYkluc3BlY3Rvci5RdWlj
a0NvbnNvbGUuTmF2aWdhdGlvbkJhclNwYWNlclN0eWxlQ2xhc3NOYW1lID0gIm5hdmlnYXRpb24t
YmFyLXNwYWNlciI7CitXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlLlRleHRQcm9tcHRTdHlsZUNs
YXNzTmFtZSA9ICJ0ZXh0LXByb21wdCI7CisKK1dlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuVG9v
bGJhclNpbmdsZUxpbmVIZWlnaHQgPSAyMTsKK1dlYkluc3BlY3Rvci5RdWlja0NvbnNvbGUuVG9v
bGJhclByb21wdFBhZGRpbmcgPSA0OworV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5Ub29sYmFy
VG9wQm9yZGVyID0gMTsKKworV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZS5NYWluRnJhbWVDb250
ZXh0RXhlY3V0aW9uSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKworV2ViSW5zcGVjdG9yLlF1aWNr
Q29uc29sZS5FdmVudCA9IHsKKyAgICBEaWRSZXNpemU6ICJxdWljay1jb25zb2xlLWRpZC1yZXNp
emUiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZU5hdmlnYXRpb25CYXIuanMKaW5kZXgg
MjkxMDhlNy4uMTQzNmU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9RdWlja0NvbnNvbGVOYXZpZ2F0aW9u
QmFyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMywyNCArMjMsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhciA9IGZ1bmN0
aW9uKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcykKK1dlYkluc3BlY3Rvci5RdWlja0NvbnNvbGVO
YXZpZ2F0aW9uQmFyID0gY2xhc3MgUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyCiB7Ci0gICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25C
YXIuY2FsbCh0aGlzLCBlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMpOwotfTsKKyAgICBjb25zdHJ1
Y3RvcihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMpCisgICAgeworICAgICAgICBzdXBlcihlbGVt
ZW50LCBuYXZpZ2F0aW9uSXRlbXMpOworICAgIH0KIAotV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29s
ZU5hdmlnYXRpb25CYXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0
b3IuUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhciwKKyAgICAvLyBQdWJsaWMKIAogICAgIGdldCBz
aXplc1RvRml0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgYWRkTmF2aWdhdGlvbkl0ZW06IGZ1bmN0aW9uKG5hdmlnYXRpb25JdGVtKQorICAgIGFk
ZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtKQogICAgIHsKICAgICAgICAgLy8gQWRkIG5l
dyBuYXZpZ2F0aW9uIGl0ZW1zIHRvIHRoZSBsZWZ0LgogICAgICAgICByZXR1cm4gdGhpcy5pbnNl
cnROYXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRlbSwgMCk7CiAgICAgfQogfTsKLQotV2ViSW5z
cGVjdG9yLlF1aWNrQ29uc29sZU5hdmlnYXRpb25CYXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JhZGlvQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SYWRpb0J1
dHRvbk5hdmlnYXRpb25JdGVtLmpzCmluZGV4IGFjODJkOTkuLmJlYmZlYmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JhZGlvQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjMgKzIzLDE5IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJhZGlv
QnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFn
ZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpIHsKLSAgICBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VX
aWR0aCwgaW1hZ2VIZWlnaHQsIG51bGwsICJ0YWIiKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5SYWRp
b0J1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lID0gInJhZGlvIjsKLVdlYkluc3Bl
Y3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLkFjdGl2ZVN0eWxlQ2xhc3NOYW1lID0gImFj
dGl2ZSI7Ci1XZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5TZWxlY3RlZFN0
eWxlQ2xhc3NOYW1lID0gInNlbGVjdGVkIjsKLQotV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2
aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
UmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbSwKK1dlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmln
YXRpb25JdGVtID0gY2xhc3MgUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbQoreworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZp
ZXIsIHRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCkKKyAgICB7CisgICAg
ICAgIHN1cGVyKGlkZW50aWZpZXIsIHRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhl
aWdodCwgbnVsbCwgInRhYiIpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHNl
bGVjdGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmNv
bnRhaW5zKFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLlNlbGVjdGVkU3R5
bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlbGVjdGVkKGZsYWcpCiAg
ICAgewpAQCAtNTAsMTIgKzQ2LDEyIEBAIFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRp
b25JdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
cmVtb3ZlKFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLlNlbGVjdGVkU3R5
bGVDbGFzc05hbWUpOwogICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJp
YS1zZWxlY3RlZCIsICJmYWxzZSIpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgYWN0aXZlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLkFjdGl2ZVN0
eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhY3RpdmUoZmxhZykKICAg
ICB7CkBAIC02Myw5ICs1OSw5IEBAIFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25J
dGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLkFjdGl2ZVN0eWxlQ2xhc3NO
YW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uQWN0aXZlU3R5bGVD
bGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgZ2VuZXJhdGVTdHlsZVRleHQ6IGZ1bmN0
aW9uKHBhcmVudFNlbGVjdG9yKQorICAgIGdlbmVyYXRlU3R5bGVUZXh0KHBhcmVudFNlbGVjdG9y
KQogICAgIHsKICAgICAgICAgdmFyIGNsYXNzTmFtZXMgPSB0aGlzLl9jbGFzc05hbWVzLmpvaW4o
Ii4iKTsKIApAQCAtNzksOSArNzUsOSBAQCBXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0
aW9uSXRlbS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHN0eWxlVGV4dCArPSBwYXJlbnRTZWxlY3Rv
ciArICIgLiIgKyBjbGFzc05hbWVzICsgIi5zZWxlY3RlZDpub3QoLmRpc2FibGVkKTphY3RpdmUg
PiAuZ2x5cGggeyBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWNhbnZhcygiICsgdGhpcy5fY2Fu
dmFzSWRlbnRpZmllcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3RhdGVzLkFj
dGl2ZUZvY3VzKSArICIpOyB9XG4iOwogCiAgICAgICAgIHJldHVybiBzdHlsZVRleHQ7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKGV4cGFuZE9ubHkpCisgICAg
dXBkYXRlTGF5b3V0KGV4cGFuZE9ubHkpCiAgICAgewogICAgICAgICBpZiAoZXhwYW5kT25seSkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMSwxMSArOTcsMTUgQEAgV2ViSW5zcGVjdG9yLlJh
ZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
c2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwgImZhbHNlIik7CiAgICAgICAgIH0KLSAgICB9
LAorICAgIH0KIAotICAgIC8vIFByaXZhdGUKKyAgICAvLyBQcm90ZWN0ZWQKIAotICAgIF9hZGRp
dGlvbmFsQ2xhc3NOYW1lczogW1dlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVt
LlN0eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVD
bGFzc05hbWVdLAorICAgIGdldCBhZGRpdGlvbmFsQ2xhc3NOYW1lcygpCisgICAgeworICAgICAg
ICByZXR1cm4gc3VwZXIuYWRkaXRpb25hbENsYXNzTmFtZXMudW5zaGlmdCgicmFkaW8iKTsKKyAg
ICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlw
ZTsKK1dlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLkFjdGl2ZVN0eWxlQ2xh
c3NOYW1lID0gImFjdGl2ZSI7CitXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRl
bS5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlcGxheURhc2hib2FyZFZpZXcu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXBsYXlEYXNo
Ym9hcmRWaWV3LmpzCmluZGV4IGE1M2VhMTEuLjkyY2JmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JlcGxheURhc2hib2FyZFZpZXcuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVwbGF5RGFz
aGJvYXJkVmlldy5qcwpAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE0IFVu
aXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTIzLDkgKzI0LDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZpZXcgPSBmdW5jdGlvbihy
ZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5SZXBsYXlEYXNoYm9hcmRWaWV3ID0gY2xh
c3MgUmVwbGF5RGFzaGJvYXJkVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXNoYm9hcmRWaWV3
CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRhc2hib2FyZFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRl
ZE9iamVjdCwgInJlcGxheSIpOworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQor
ICAgIHsKKyAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QsICJyZXBsYXkiKTsKIAogICAg
ICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFy
OwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5l
bGVtZW50KTsKQEAgLTU4LDMwICs2MSwxOSBAQCBXZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJk
VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQogICAgICAgICAvLyBSZXBsYXlNYW5h
Z2VyLnNlc3Npb25TdGF0ZSBtdXN0IGJlIFVubG9hZGVkIG9yIExvYWRlZCwgc28gZXhlY3V0aW9u
IGlzIHBhdXNlZC4KICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fcGxheWJhY2tQYXVz
ZWQoKTsKLX07Ci0KLS8vIENsYXNzIG5hbWVzIGZvciB0b3AtbGV2ZWwgZmxleCBpdGVtcyB3aXRo
aW4gdGhlIHJlcGxheSBkYXNoYm9hcmQuCi1XZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJkVmll
dy5SZWNvcmRpbmdDb250YWluZXJTdHlsZUNsYXNzTmFtZSA9ICJyZWNvcmRpbmctY29udGFpbmVy
IjsKLQotLy8gQ2xhc3MgbmFtZXMgZm9yIHNpbmdsZSBidXR0b25zLgotV2ViSW5zcGVjdG9yLlJl
cGxheURhc2hib2FyZFZpZXcuUmVjb3JkQnV0dG9uU3R5bGVDbGFzc05hbWUgPSAicmVjb3JkLWJ1
dHRvbiI7Ci1XZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJkVmlldy5SZXBsYXlCdXR0b25TdHls
ZUNsYXNzTmFtZSA9ICJyZXBsYXktYnV0dG9uIjsKLQotV2ViSW5zcGVjdG9yLlJlcGxheURhc2hi
b2FyZFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVw
bGF5RGFzaGJvYXJkVmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EYXNoYm9hcmRW
aWV3LnByb3RvdHlwZSwKKyAgICB9CiAgICAgCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2NhcHR1
cmVCdXR0b25JdGVtQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9jYXB0dXJlQnV0dG9uSXRlbUNs
aWNrZWQoKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNl
c3Npb25TdGF0ZSAhPT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLkNh
cHR1cmluZykKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnN0YXJ0Q2Fw
dHVyaW5nKCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlN
YW5hZ2VyLnN0b3BDYXB0dXJpbmcoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXBsYXlCdXR0
b25JdGVtQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3JlcGxheUJ1dHRvbkl0ZW1DbGlj
a2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoV2ViSW5zcGVjdG9yLnJl
cGxheU1hbmFnZXIuc2Vzc2lvblN0YXRlICE9PSBXZWJJbnNwZWN0b3IuUmVwbGF5TWFuYWdlci5T
ZXNzaW9uU3RhdGUuQ2FwdHVyaW5nLCAiVHJpZWQgdG8gc3RhcnQgcmVwbGF5aW5nIHdoaWxlIFNl
c3Npb25TdGF0ZSBpcyBDYXB0dXJpbmchIik7CiAKQEAgLTkxLDM0ICs4MywzOCBAQCBXZWJJbnNw
ZWN0b3IuUmVwbGF5RGFzaGJvYXJkVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IucmVwbGF5TWFuYWdlci5wYXVzZVBsYXliYWNrKCk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnJlcGxheVRvQ29tcGxldGlvbigp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2NhcHR1cmVTdGFydGVkOiBmdW5jdGlvbigpCisgICAg
X2NhcHR1cmVTdGFydGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NhcHR1cmVCdXR0b25JdGVt
LmhpZGRlbiA9IGZhbHNlOwogICAgICAgICB0aGlzLl9jYXB0dXJlQnV0dG9uSXRlbS5hY3RpdmF0
ZWQgPSB0cnVlOwogICAgICAgICB0aGlzLl9yZXBsYXlCdXR0b25JdGVtLmhpZGRlbiA9IHRydWU7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2FwdHVyZVN0b3BwZWQ6IGZ1bmN0aW9uKCkKKyAgICBf
Y2FwdHVyZVN0b3BwZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY2FwdHVyZUJ1dHRvbkl0ZW0u
YWN0aXZhdGVkID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX2NhcHR1cmVCdXR0b25JdGVtLmhpZGRl
biA9IHRydWU7CiAgICAgICAgIHRoaXMuX3JlcGxheUJ1dHRvbkl0ZW0uaGlkZGVuID0gZmFsc2U7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGxheWJhY2tTdGFydGVkOiBmdW5jdGlvbigpCisgICAg
X3BsYXliYWNrU3RhcnRlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9yZXBsYXlCdXR0b25JdGVt
LnRvZ2dsZWQgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3BsYXliYWNrUGF1c2VkOiBm
dW5jdGlvbigpCisgICAgX3BsYXliYWNrUGF1c2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jl
cGxheUJ1dHRvbkl0ZW0udG9nZ2xlZCA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX3Bs
YXliYWNrRmluaXNoZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcGxheWJhY2tGaW5pc2hlZCgpCiAgICAg
ewogICAgICAgICB0aGlzLl9yZXBsYXlCdXR0b25JdGVtLnRvZ2dsZWQgPSBmYWxzZTsKICAgICB9
CiB9OworCitXZWJJbnNwZWN0b3IuUmVwbGF5RGFzaGJvYXJkVmlldy5SZWNvcmRpbmdDb250YWlu
ZXJTdHlsZUNsYXNzTmFtZSA9ICJyZWNvcmRpbmctY29udGFpbmVyIjsKK1dlYkluc3BlY3Rvci5S
ZXBsYXlEYXNoYm9hcmRWaWV3LlJlY29yZEJ1dHRvblN0eWxlQ2xhc3NOYW1lID0gInJlY29yZC1i
dXR0b24iOworV2ViSW5zcGVjdG9yLlJlcGxheURhc2hib2FyZFZpZXcuUmVwbGF5QnV0dG9uU3R5
bGVDbGFzc05hbWUgPSAicmVwbGF5LWJ1dHRvbiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNpemVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzaXplci5qcwppbmRleCA3MTI2MTE5Li44OTNl
ZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9SZXNpemVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Jlc2l6ZXIuanMKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBV
bml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yMyw2MSArMjQs
NDkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuUmVzaXplciA9IGZ1bmN0aW9uKHJ1bGVPcmllbnRhdGlvbiwgZGVsZWdhdGUpIHsKLSAg
ICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFz
cywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhp
cyk7Ci0KK1dlYkluc3BlY3Rvci5SZXNpemVyID0gY2xhc3MgUmVzaXplciBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcihydWxlT3JpZW50YXRpb24sIGRlbGVn
YXRlKQorICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZGVsZWdhdGUpOwogCisgICAgICAg
IHN1cGVyKCk7CisKICAgICAgICAgdGhpcy5fZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKICAgICAgICAg
dGhpcy5fb3JpZW50YXRpb24gPSBydWxlT3JpZW50YXRpb247CiAgICAgICAgIHRoaXMuX2VsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlJlc2l6ZXIuU3R5bGVDbGFzc05hbWUpOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJlc2l6ZXIiKTsKIAogICAgICAgICBpZiAo
dGhpcy5fb3JpZW50YXRpb24gPT09IFdlYkluc3BlY3Rvci5SZXNpemVyLlJ1bGVPcmllbnRhdGlv
bi5Ib3Jpem9udGFsKQotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLlJlc2l6ZXIuSG9yaXpvbnRhbFJ1bGVTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoImhvcml6b250YWwtcnVsZSIpOwogICAgICAg
ICBlbHNlIGlmICh0aGlzLl9vcmllbnRhdGlvbiA9PT0gV2ViSW5zcGVjdG9yLlJlc2l6ZXIuUnVs
ZU9yaWVudGF0aW9uLlZlcnRpY2FsKQotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLlJlc2l6ZXIuVmVydGljYWxSdWxlU3R5bGVDbGFzc05hbWUpOworICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ2ZXJ0aWNhbC1ydWxlIik7CiAK
ICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlz
Ll9yZXNpemVyTW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICAgICAgdGhpcy5fcmVz
aXplck1vdXNlTW92ZWRFdmVudExpc3RlbmVyID0gdGhpcy5fcmVzaXplck1vdXNlTW92ZWQuYmlu
ZCh0aGlzKTsKICAgICAgICAgdGhpcy5fcmVzaXplck1vdXNlVXBFdmVudExpc3RlbmVyID0gdGhp
cy5fcmVzaXplck1vdXNlVXAuYmluZCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5SZXNpemVy
LlJ1bGVPcmllbnRhdGlvbiA9IHsKLSAgICBIb3Jpem9udGFsOiBTeW1ib2woInJlc2l6ZXItcnVs
ZS1vcmllbnRhdGlvbi1ob3Jpem9udGFsIiksCi0gICAgVmVydGljYWw6IFN5bWJvbCgicmVzaXpl
ci1ydWxlLW9yaWVudGF0aW9uLXZlcnRpY2FsIiksCi19OwotCi1XZWJJbnNwZWN0b3IuUmVzaXpl
ci5TdHlsZUNsYXNzTmFtZSA9ICJyZXNpemVyIjsKLVdlYkluc3BlY3Rvci5SZXNpemVyLkhvcml6
b250YWxSdWxlU3R5bGVDbGFzc05hbWUgPSAiaG9yaXpvbnRhbC1ydWxlIjsKLVdlYkluc3BlY3Rv
ci5SZXNpemVyLlZlcnRpY2FsUnVsZVN0eWxlQ2xhc3NOYW1lID0gInZlcnRpY2FsLXJ1bGUiOwot
V2ViSW5zcGVjdG9yLlJlc2l6ZXIuR2xhc3NQYW5lU3R5bGVDbGFzc05hbWUgPSAiZ2xhc3MtcGFu
ZS1mb3ItZHJhZyI7Ci0KLVdlYkluc3BlY3Rvci5SZXNpemVyLnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlc2l6ZXIsCi0gICAgX19wcm90b19fOiBXZWJJbnNw
ZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdl
dCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IG9yaWVudGF0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9vcmllbnRhdGlvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBpbml0aWFsUG9zaXRp
b24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc2l6ZXJNb3VzZURvd25Qb3NpdGlv
biB8fCBOYU47Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfY3VycmVu
dFBvc2l0aW9uOiBmdW5jdGlvbigpCisgICAgX2N1cnJlbnRQb3NpdGlvbigpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fb3JpZW50YXRpb24gPT09IFdlYkluc3BlY3Rvci5SZXNpemVyLlJ1bGVP
cmllbnRhdGlvbi5WZXJ0aWNhbCkKICAgICAgICAgICAgIHJldHVybiBldmVudC5wYWdlWDsKQEAg
LTg1LDkgKzc0LDkgQEAgV2ViSW5zcGVjdG9yLlJlc2l6ZXIucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgcmV0dXJuIGV2ZW50LnBhZ2VZOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNl
LCAiU2hvdWxkIG5vdCBiZSByZWFjaGVkISIpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc2l6
ZXJNb3VzZURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZXNpemVyTW91c2VEb3duKGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTI0LDIxICsxMTMsMjEgQEAgV2ViSW5zcGVjdG9y
LlJlc2l6ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLl9lbGVtZW50
RHJhZ2dpbmdHbGFzc1BhbmUucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChXZWJJbnNwZWN0b3Iu
X2VsZW1lbnREcmFnZ2luZ0dsYXNzUGFuZSk7CiAKICAgICAgICAgdmFyIGdsYXNzUGFuZUVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgZ2xhc3NQYW5lRWxl
bWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuUmVzaXplci5HbGFzc1BhbmVTdHlsZUNsYXNz
TmFtZTsKKyAgICAgICAgZ2xhc3NQYW5lRWxlbWVudC5jbGFzc05hbWUgPSAiZ2xhc3MtcGFuZS1m
b3ItZHJhZyI7CiAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZ2xhc3NQYW5lRWxl
bWVudCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5fZWxlbWVudERyYWdnaW5nR2xhc3NQYW5lID0g
Z2xhc3NQYW5lRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNpemVyTW91c2VNb3Zl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jlc2l6ZXJNb3VzZU1vdmVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCk7CiAKICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS5yZXNpemVyRHJh
Z2dpbmcgPT09ICJmdW5jdGlvbiIpCiAgICAgICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5yZXNpemVy
RHJhZ2dpbmcodGhpcywgdGhpcy5fcmVzaXplck1vdXNlRG93blBvc2l0aW9uIC0gdGhpcy5fY3Vy
cmVudFBvc2l0aW9uKCkpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc2l6ZXJNb3VzZVVwOiBm
dW5jdGlvbihldmVudCkKKyAgICBfcmVzaXplck1vdXNlVXAoZXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8IGV2ZW50LmN0cmxLZXkpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC0xNjIsMyArMTUxLDggQEAgV2ViSW5zcGVjdG9yLlJlc2l6ZXIucHJvdG90eXBl
ID0gewogICAgICAgICBkZWxldGUgdGhpcy5fcmVzaXplck1vdXNlRG93blBvc2l0aW9uOwogICAg
IH0KIH07CisKK1dlYkluc3BlY3Rvci5SZXNpemVyLlJ1bGVPcmllbnRhdGlvbiA9IHsKKyAgICBI
b3Jpem9udGFsOiBTeW1ib2woInJlc2l6ZXItcnVsZS1vcmllbnRhdGlvbi1ob3Jpem9udGFsIiks
CisgICAgVmVydGljYWw6IFN5bWJvbCgicmVzaXplci1ydWxlLW9yaWVudGF0aW9uLXZlcnRpY2Fs
IiksCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcwppbmRl
eCBlZTZkYWRiLi5kMTQ3OTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250
ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcgPSBm
dW5jdGlvbihyZXNvdXJjZSkKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmll
dyA9IGNsYXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9y
LkNsdXN0ZXJDb250ZW50VmlldwogewotICAgIFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZp
ZXcuY2FsbCh0aGlzLCByZXNvdXJjZSk7CisgICAgY29uc3RydWN0b3IocmVzb3VyY2UpCisgICAg
eworICAgICAgICBzdXBlcihyZXNvdXJjZSk7CiAKICAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSBy
ZXNvdXJjZTsKICAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHlwZURpZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VUeXBlRGlk
Q2hhbmdlLCB0aGlzKTsKQEAgLTQ1LDE3ICs0Nyw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNs
dXN0ZXJDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQogICAgICAgICB0aGlzLl9yZXNw
b25zZVBhdGhDb21wb25lbnQucHJldmlvdXNTaWJsaW5nID0gdGhpcy5fcmVxdWVzdFBhdGhDb21w
b25lbnQ7CiAKICAgICAgICAgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3U2V0dGluZyA9IG5ldyBX
ZWJJbnNwZWN0b3IuU2V0dGluZygicmVzb3VyY2UtY3VycmVudC12aWV3LSIgKyB0aGlzLl9yZXNv
dXJjZS51cmwuaGFzaCwgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJl
c3BvbnNlSWRlbnRpZmllcik7Ci19OwotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29u
dGVudFZpZXcuQ29udGVudFZpZXdJZGVudGlmaWVyQ29va2llS2V5ID0gInJlc291cmNlLWNsdXN0
ZXItY29udGVudC12aWV3LWlkZW50aWZpZXIiOwotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVz
dGVyQ29udGVudFZpZXcuUmVxdWVzdEljb25TdHlsZUNsYXNzTmFtZSA9ICJyZXF1ZXN0LWljb24i
OwotV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWNvblN0
eWxlQ2xhc3NOYW1lID0gInJlc3BvbnNlLWljb24iOwotV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1
c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJZGVudGlmaWVyID0gInJlcXVlc3QiOwotV2ViSW5zcGVj
dG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWRlbnRpZmllciA9ICJyZXNw
b25zZSI7Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250
ZW50VmlldywKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNzMsMTIgKzY1LDEyIEBAIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVsLmlkZW50aWZpZXIK
ICAgICAgICAgICAgIF07CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXNv
dXJjZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgcmVzcG9uc2VDb250ZW50VmlldygpCiAgICAgewpAQCAtMTA3LDcgKzk5
LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZUNvbnRlbnRWaWV3
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlcXVlc3RDb250ZW50VmlldygpCiAgICAgewpA
QCAtMTIwLDcgKzExMiw3IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3JlcXVlc3RDb250ZW50VmlldyA9IG5ldyBX
ZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRWaWV3KHRoaXMuX3Jlc291cmNlLnJlcXVlc3REYXRhIHx8
ICIiLCB0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0RGF0YUNvbnRlbnRUeXBlKTsKIAogICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVxdWVzdENvbnRlbnRWaWV3OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CkBAIC0xMzQsOSArMTI2LDkgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgLy8gQXBwZW5kIHRoZSBjdXJyZW50IHZpZXcncyBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIHBh
dGggY29tcG9uZW50IHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB2aWV3LgogICAgICAgICB2YXIg
Y29tcG9uZW50cyA9IFt0aGlzLl9wYXRoQ29tcG9uZW50Rm9yQ29udGVudFZpZXcoY3VycmVudENv
bnRlbnRWaWV3KV07CiAgICAgICAgIHJldHVybiBjb21wb25lbnRzLmNvbmNhdChjdXJyZW50Q29u
dGVudFZpZXcuc2VsZWN0aW9uUGF0aENvbXBvbmVudHMpOwotICAgIH0sCisgICAgfQogCi0gICAg
c2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IuQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCkBAIC0x
NDQsMzUgKzEzNiwzNSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3Nob3dD
b250ZW50Vmlld0ZvcklkZW50aWZpZXIodGhpcy5fY3VycmVudENvbnRlbnRWaWV3U2V0dGluZy52
YWx1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9z
ZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90
b3R5cGUuY2xvc2VkLmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fc2hvd25Jbml0aWFsQ29u
dGVudCA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBmdW5jdGlv
bihjb29raWUpCisgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tp
ZVtXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuQ29udGVudFZpZXdJZGVu
dGlmaWVyQ29va2llS2V5XSA9IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcudmFsdWU7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXN0b3JlRnJvbUNvb2tpZTogZnVuY3Rpb24oY29va2ll
KQorICAgIHJlc3RvcmVGcm9tQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIHZhciBjb250
ZW50VmlldyA9IHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIoY29va2llW1dlYklu
c3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5Db250ZW50Vmlld0lkZW50aWZpZXJD
b29raWVLZXldKTsKICAgICAgICAgaWYgKHR5cGVvZiBjb250ZW50Vmlldy5yZXZlYWxQb3NpdGlv
biA9PT0gImZ1bmN0aW9uIiAmJiAibGluZU51bWJlciIgaW4gY29va2llICYmICJjb2x1bW5OdW1i
ZXIiIGluIGNvb2tpZSkKICAgICAgICAgICAgIGNvbnRlbnRWaWV3LnJldmVhbFBvc2l0aW9uKG5l
dyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKGNvb2tpZS5saW5lTnVtYmVyLCBjb29r
aWUuY29sdW1uTnVtYmVyKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93UmVxdWVzdDogZnVu
Y3Rpb24oKQorICAgIHNob3dSZXF1ZXN0KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3duSW5p
dGlhbENvbnRlbnQgPSB0cnVlOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9zaG93Q29udGVudFZp
ZXdGb3JJZGVudGlmaWVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5S
ZXF1ZXN0SWRlbnRpZmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93UmVzcG9uc2U6IGZ1
bmN0aW9uKHBvc2l0aW9uVG9SZXZlYWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0
dGVkKQorICAgIHNob3dSZXNwb25zZShwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1NlbGVj
dCwgZm9yY2VVbmZvcm1hdHRlZCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3duSW5pdGlhbENv
bnRlbnQgPSB0cnVlOwogCkBAIC0xODYsMTEgKzE3OCwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAodHlwZW9mIHJl
c3BvbnNlQ29udGVudFZpZXcucmV2ZWFsUG9zaXRpb24gPT09ICJmdW5jdGlvbiIpCiAgICAgICAg
ICAgICByZXNwb25zZUNvbnRlbnRWaWV3LnJldmVhbFBvc2l0aW9uKHBvc2l0aW9uVG9SZXZlYWws
IHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKTsKICAgICAgICAgcmV0dXJuIHJl
c3BvbnNlQ29udGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAg
ICBfY2FuU2hvd1JlcXVlc3RDb250ZW50VmlldzogZnVuY3Rpb24oKQorICAgIF9jYW5TaG93UmVx
dWVzdENvbnRlbnRWaWV3KCkKICAgICB7CiAgICAgICAgIHZhciByZXF1ZXN0RGF0YSA9IHRoaXMu
X3Jlc291cmNlLnJlcXVlc3REYXRhOwogICAgICAgICBpZiAoIXJlcXVlc3REYXRhKQpAQCAtMjAx
LDkgKzE5Myw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGF0aENvbXBvbmVudEZvckNvbnRlbnRWaWV3OiBm
dW5jdGlvbihjb250ZW50VmlldykKKyAgICBfcGF0aENvbXBvbmVudEZvckNvbnRlbnRWaWV3KGNv
bnRlbnRWaWV3KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGVudFZpZXcpOwog
ICAgICAgICBpZiAoIWNvbnRlbnRWaWV3KQpAQCAtMjE0LDkgKzIwNiw5IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50OwogICAgICAgICBjb25zb2xlLmVycm9y
KCJVbmtub3duIGNvbnRlbnRWaWV3LiIpOwogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9pZGVudGlmaWVyRm9yQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRW
aWV3KQorICAgIF9pZGVudGlmaWVyRm9yQ29udGVudFZpZXcoY29udGVudFZpZXcpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50Vmlldyk7CiAgICAgICAgIGlmICghY29udGVu
dFZpZXcpCkBAIC0yMjcsOSArMjE5LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNv
bnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJZGVudGlmaWVyOwogICAgICAgICBj
b25zb2xlLmVycm9yKCJVbmtub3duIGNvbnRlbnRWaWV3LiIpOwogICAgICAgICByZXR1cm4gbnVs
bDsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyOiBm
dW5jdGlvbihpZGVudGlmaWVyKQorICAgIF9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKGlk
ZW50aWZpZXIpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXdUb1Nob3cgPSBudWxsOwog
CkBAIC0yNTAsMTQgKzI0MiwxNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0
aW5nLnZhbHVlID0gdGhpcy5faWRlbnRpZmllckZvckNvbnRlbnRWaWV3KGNvbnRlbnRWaWV3VG9T
aG93KTsKIAogICAgICAgICByZXR1cm4gdGhpcy5jb250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29u
dGVudFZpZXcoY29udGVudFZpZXdUb1Nob3cpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhdGhD
b21wb25lbnRTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BhdGhDb21wb25lbnRTZWxl
Y3RlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50
aWZpZXIoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9yZXNvdXJjZVR5cGVEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9yZXNvdXJjZVR5cGVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICAvLyBTaW5j
ZSByZXNvdXJjZSB2aWV3cyBhcmUgYmFzZWQgb24gdGhlIHR5cGUsIHdlIG5lZWQgdG8gbWFrZSBh
IG5ldyBjb250ZW50IHZpZXcgYW5kIHRlbGwgdGhlIGNvbnRhaW5lciB0byByZXBsYWNlIHRoaXMK
ICAgICAgICAgLy8gY29udGVudCB2aWV3IHdpdGggdGhlIG5ldyBvbmUuIE1ha2UgYSBuZXcgUmVz
b3VyY2VDb250ZW50VmlldyB3aGljaCB3aWxsIHVzZSB0aGUgbmV3IHJlc291cmNlIHR5cGUgdG8g
bWFrZSB0aGUgY29ycmVjdApAQCAtMjcwLDkgKzI2Miw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9y
ZXNwb25zZUNvbnRlbnRWaWV3OwogCiAgICAgICAgIHRoaXMuY29udGVudFZpZXdDb250YWluZXIu
cmVwbGFjZUNvbnRlbnRWaWV3KGN1cnJlbnRSZXNwb25zZUNvbnRlbnRWaWV3LCB0aGlzLnJlc3Bv
bnNlQ29udGVudFZpZXcpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jlc291cmNlTG9hZGluZ0Rp
ZEZpbmlzaDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jlc291cmNlTG9hZGluZ0RpZEZpbmlzaChl
dmVudCkKICAgICB7CiAgICAgICAgIGlmICgiX3Bvc2l0aW9uVG9SZXZlYWwiIGluIHRoaXMpIHsK
ICAgICAgICAgICAgIGlmICh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVu
dFZpZXcgPT09IHRoaXMuX3Jlc3BvbnNlQ29udGVudFZpZXcpCkBAIC0yODUsNCArMjc3LDkgQEAg
V2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBl
OworV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkNvbnRlbnRWaWV3SWRl
bnRpZmllckNvb2tpZUtleSA9ICJyZXNvdXJjZS1jbHVzdGVyLWNvbnRlbnQtdmlldy1pZGVudGlm
aWVyIjsKKworV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJ
Y29uU3R5bGVDbGFzc05hbWUgPSAicmVxdWVzdC1pY29uIjsKK1dlYkluc3BlY3Rvci5SZXNvdXJj
ZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUljb25TdHlsZUNsYXNzTmFtZSA9ICJyZXNwb25z
ZS1pY29uIjsKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0
SWRlbnRpZmllciA9ICJyZXF1ZXN0IjsKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250
ZW50Vmlldy5SZXNwb25zZUlkZW50aWZpZXIgPSAicmVzcG9uc2UiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNl
Q29udGVudFZpZXcuanMKaW5kZXggNThmNzQxNC4uZGQ4YmRhZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJj
ZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywxNiArMjMsMTggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50VmlldyA9IGZ1
bmN0aW9uKHJlc291cmNlLCBzdHlsZUNsYXNzTmFtZSkKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNv
bnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rv
ci5Db250ZW50VmlldworeworICAgIGNvbnN0cnVjdG9yKHJlc291cmNlLCBzdHlsZUNsYXNzTmFt
ZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoc3R5bGVDbGFzc05hbWUpOwogCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3LmNhbGwodGhpcywgcmVzb3VyY2UpOworICAgICAgICBzdXBlcihyZXNvdXJjZSk7CiAKICAg
ICAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1l
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJlc291cmNlIik7CiAgICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKHN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAg
ICAvLyBBcHBlbmQgYSBzcGlubmVyIHdoaWxlIHdhaXRpbmcgZm9yIGNvbnRlbnRBdmFpbGFibGUu
IFRoZSBzdWJjbGFzc2VzIGFyZSByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcKQEAgLTUyLDQyICs1
NCwzNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlc291
cmNlLCBzdHlsZUNsYXNzTmFtZSkKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXNz
dWVzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgICAgIHRoaXMuYWRkSXNzdWUoaXNzdWVzW2ld
KTsKICAgICAgICAgfQotfTsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcuU3R5
bGVDbGFzc05hbWUgPSAicmVzb3VyY2UiOwotCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SZXNvdXJj
ZUNvbnRlbnRWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnBy
b3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCByZXNvdXJjZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBjb250ZW50QXZhaWxhYmxlOiBmdW5jdGlvbihjb250ZW50LCBiYXNlNjRFbmNvZGVkKQorICAg
IGNvbnRlbnRBdmFpbGFibGUoY29udGVudCwgYmFzZTY0RW5jb2RlZCkKICAgICB7CiAgICAgICAg
IC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRJ
c3N1ZTogZnVuY3Rpb24oaXNzdWUpCisgICAgYWRkSXNzdWUoaXNzdWUpCiAgICAgewogICAgICAg
ICAvLyBUaGlzIGdlbmVyaWNhbGx5IHNob3dzIG9ubHkgdGhlIGxhc3QgaXNzdWUsIHN1YmNsYXNz
ZXMgY2FuIG92ZXJyaWRlIGZvciBiZXR0ZXIgaGFuZGxpbmcuCiAgICAgICAgIHRoaXMuZWxlbWVu
dC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoV2Vi
SW5zcGVjdG9yLmNyZWF0ZU1lc3NhZ2VUZXh0Vmlldyhpc3N1ZS50ZXh0LCBpc3N1ZS5sZXZlbCA9
PT0gV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5MZXZlbC5FcnJvcikpOwotICAgIH0sCisgICAg
fQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5tYW5hZ2VzT3duSXNzdWVzKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmlz
c3VlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Jc3N1ZU1hbmFnZXIu
RXZlbnQuSXNzdWVXYXNBZGRlZCwgdGhpcy5faXNzdWVXYXNBZGRlZCwgdGhpcyk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfY29udGVudEF2YWlsYWJsZTogZnVuY3Rp
b24ocGFyYW1ldGVycykKKyAgICBfY29udGVudEF2YWlsYWJsZShwYXJhbWV0ZXJzKQogICAgIHsK
ICAgICAgICAgaWYgKHBhcmFtZXRlcnMuZXJyb3IpIHsKICAgICAgICAgICAgIHRoaXMuX2NvbnRl
bnRFcnJvcih7IG1lc3NhZ2U6IHBhcmFtZXRlcnMuZXJyb3IgfSk7CkBAIC05Niw5ICs5Miw5IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICAvLyBDb250ZW50IGlzIHJlYWR5IHRvIHNob3csIGNhbGwgdGhlIHB1YmxpYyBtZXRob2Qgbm93
LgogICAgICAgICB0aGlzLmNvbnRlbnRBdmFpbGFibGUocGFyYW1ldGVycy5jb250ZW50LCBwYXJh
bWV0ZXJzLmJhc2U2NEVuY29kZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRFcnJv
cjogZnVuY3Rpb24oZXJyb3IpCisgICAgX2NvbnRlbnRFcnJvcihlcnJvcikKICAgICB7CiAgICAg
ICAgIC8vIERvbid0IHNob3cgYW4gZXJyb3IgbWVzc2FnZSBpZiB0aGVyZSBpcyBhbHJlYWR5IGFu
IGVycm9yIG1lc3NhZ2Ugc2hvd2luZyAobGlrZSBvbmUgYWRkZWQgYnkgYWRkSXNzdWUuKQogICAg
ICAgICBpZiAodGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIi5tZXNzYWdlLXRleHQtdmlldy5l
cnJvciIpKQpAQCAtMTA2LDkgKzEwMiw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRW
aWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4o
KTsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5jcmVhdGVN
ZXNzYWdlVGV4dFZpZXcoZXJyb3IubWVzc2FnZSwgdHJ1ZSkpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2lzc3VlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9pc3N1ZVdhc0FkZGVkKGV2
ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMubWFuYWdlc093bklzc3Vl
cyk7CiAKQEAgLTExOSw5ICsxMTUsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5hZGRJ
c3N1ZShpc3N1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2VXYXNDbGlja2VkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfbW91c2VXYXNDbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLmhhbmRsZVBvc3NpYmxlTGlua0NsaWNrKGV2ZW50LCB0aGlzLnJlc291cmNl
LnBhcmVudEZyYW1lKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZURldGFpbHNTaWRl
YmFyUGFuZWwuanMKaW5kZXggZWQzNjkxYi4uZjAxYzdlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBh
bmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
c291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTEgKzIzLDEzIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0
YWlsc1NpZGViYXJQYW5lbCA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5SZXNvdXJjZURldGFp
bHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBSZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbAogewotICAgIFdlYkluc3BlY3Rvci5E
ZXRhaWxzU2lkZWJhclBhbmVsLmNhbGwodGhpcywgInJlc291cmNlLWRldGFpbHMiLCBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzb3Vy
Y2UiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUZpbGUuc3ZnIiwgIjEiKTsKKyAgICBjb25zdHJ1
Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigicmVzb3VyY2UtZGV0YWlscyIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiUmVzb3VyY2UiKSwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNvdXJj
ZSIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtRmlsZS5zdmciLCAiMSIpOwogCi0gICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQ
YW5lbC5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJyZXNvdXJjZSIpOwogCiAgICAgICAgIHRoaXMuX3Jlc291cmNlID0gbnVsbDsKIApAQCAtMTA1
LDE3ICsxMDcsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbCA9
IGZ1bmN0aW9uKCkKICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9yZXF1ZXN0QW5kUmVzcG9uc2VTZWN0aW9uLmVsZW1lbnQpOwogICAgICAgICB0aGlzLmNvbnRl
bnRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JlcXVlc3RIZWFkZXJzU2VjdGlvbi5lbGVtZW50
KTsKICAgICAgICAgdGhpcy5jb250ZW50RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9yZXNwb25z
ZUhlYWRlcnNTZWN0aW9uLmVsZW1lbnQpOwotfTsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0
YWlsc1NpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJyZXNvdXJjZSI7Ci0KLVdlYkluc3Bl
Y3Rvci5SZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLAotICAgIF9f
cHJvdG9fXzogV2ViSW5zcGVjdG9yLkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLAorICAg
IH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgaW5zcGVjdDogZnVuY3Rpb24ob2JqZWN0cykKKyAg
ICBpbnNwZWN0KG9iamVjdHMpCiAgICAgewogICAgICAgICAvLyBDb252ZXJ0IHRvIGEgc2luZ2xl
IGl0ZW0gYXJyYXkgaWYgbmVlZGVkLgogICAgICAgICBpZiAoIShvYmplY3RzIGluc3RhbmNlb2Yg
QXJyYXkpKQpAQCAtMTM5LDEyICsxMzUsMTIgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWls
c1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMucmVzb3VyY2UgPSByZXNv
dXJjZVRvSW5zcGVjdDsKIAogICAgICAgICByZXR1cm4gISF0aGlzLl9yZXNvdXJjZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCByZXNvdXJjZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcmVzb3VyY2UocmVzb3VyY2Up
CiAgICAgewpAQCAtMTc2LDkgKzE3Miw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZURldGFpbHNT
aWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5uZWVk
c1JlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKCkKKyAg
ICByZWZyZXNoKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2UpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xOTIsMTEgKzE4OCwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VE
ZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcmVmcmVzaFJl
cXVlc3RIZWFkZXJzKCk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hJbWFnZVNpemVTZWN0aW9uKCk7
CiAgICAgICAgIHRoaXMuX3JlZnJlc2hSZXF1ZXN0RGF0YVNlY3Rpb24oKTsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9yZWZyZXNoVVJMOiBmdW5jdGlvbigpCisgICAg
X3JlZnJlc2hVUkwoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTIzOCwyNSArMjM0LDI1IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHF1ZXJ5
UGFyYW1ldGVyc1NlY3Rpb25FbGVtZW50LnBhcmVudE5vZGUpCiAgICAgICAgICAgICAgICAgcXVl
cnlQYXJhbWV0ZXJzU2VjdGlvbkVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChxdWVyeVBh
cmFtZXRlcnNTZWN0aW9uRWxlbWVudCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAg
IF9yZWZyZXNoUmVzb3VyY2VUeXBlOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hSZXNvdXJjZVR5
cGUoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZSkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICB0aGlzLl90eXBlUmVzb3VyY2VUeXBlUm93LnZhbHVlID0gV2ViSW5z
cGVjdG9yLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZSh0aGlzLl9yZXNvdXJjZS50eXBlKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9yZWZyZXNoTUlNRVR5cGU6IGZ1bmN0aW9uKCkKKyAgICBf
cmVmcmVzaE1JTUVUeXBlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVzb3VyY2UpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fdHlwZU1JTUVUeXBlUm93LnZhbHVl
ID0gdGhpcy5fcmVzb3VyY2UubWltZVR5cGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVz
aFJlcXVlc3RBbmRSZXNwb25zZTogZnVuY3Rpb24oKQorICAgIF9yZWZyZXNoUmVxdWVzdEFuZFJl
c3BvbnNlKCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlOwog
ICAgICAgICBpZiAoIXJlc291cmNlKQpAQCAtMjY0LDcgKzI2MCw3IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIElm
IHdlIGRvbid0IGhhdmUgYSB2YWx1ZSwgd2Ugc2V0IGFuIGVtLWRhc2ggdG8ga2VlcCB0aGUgcm93
IGZyb20gaGlkaW5nLgogICAgICAgICAvLyBUaGlzIGtlZXBzIHRoZSBVSSBmcm9tIHNoaWZ0aW5n
IGFyb3VuZCBhcyBkYXRhIGNvbWVzIGluLgotICAgICAgICBjb25zdCBlbURhc2ggPSAiXHUyMDE0
IjsKKyAgICAgICAgdmFyIGVtRGFzaCA9ICJcdTIwMTQiOwogCiAgICAgICAgIHRoaXMuX3JlcXVl
c3RNZXRob2RSb3cudmFsdWUgPSByZXNvdXJjZS5yZXF1ZXN0TWV0aG9kIHx8IGVtRGFzaDsKIApA
QCAtMjc1LDIzICsyNzEsMjMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1NpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fcmVmcmVzaFJlc3BvbnNlSGVhZGVy
cygpOwogICAgICAgICB0aGlzLl9yZWZyZXNoQ29tcHJlc3NlZCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3ZhbHVlRm9yU2l6ZTogZnVuY3Rpb24oc2l6ZSkKKyAgICBfdmFsdWVGb3JTaXplKHNp
emUpCiAgICAgewogICAgICAgICAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgdmFsdWUsIHdlIHNldCBh
biBlbS1kYXNoIHRvIGtlZXAgdGhlIHJvdyBmcm9tIGhpZGluZy4KICAgICAgICAgLy8gVGhpcyBr
ZWVwcyB0aGUgVUkgZnJvbSBzaGlmdGluZyBhcm91bmQgYXMgZGF0YSBjb21lcyBpbi4KLSAgICAg
ICAgY29uc3QgZW1EYXNoID0gIlx1MjAxNCI7CisgICAgICAgIHZhciBlbURhc2ggPSAiXHUyMDE0
IjsKICAgICAgICAgcmV0dXJuIHNpemUgPiAwID8gTnVtYmVyLmJ5dGVzVG9TdHJpbmcoc2l6ZSkg
OiBlbURhc2g7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaENvbXByZXNzZWQ6IGZ1bmN0
aW9uKCkKKyAgICBfcmVmcmVzaENvbXByZXNzZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY29t
cHJlc3NlZFJvdy52YWx1ZSA9IHRoaXMuX3Jlc291cmNlLmNvbXByZXNzZWQgPyBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlllcyIpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyIpOwogICAgICAg
ICB0aGlzLl9jb21wcmVzc2lvblJvdy52YWx1ZSA9IHRoaXMuX3Jlc291cmNlLmNvbXByZXNzZWQg
PyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiUuMmZcdTAwZDciKS5mb3JtYXQodGhpcy5fcmVzb3Vy
Y2Uuc2l6ZSAvIHRoaXMuX3Jlc291cmNlLmVuY29kZWRTaXplKSA6IG51bGw7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfcmVmcmVzaERlY29kZWRTaXplOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hE
ZWNvZGVkU2l6ZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3Jlc291cmNlKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMzAwLDkgKzI5Niw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZURl
dGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9kZWNvZGVkU2l6
ZVJvdy52YWx1ZSA9IHRoaXMuX3ZhbHVlRm9yU2l6ZSh0aGlzLl9yZXNvdXJjZS5zaXplKTsKIAog
ICAgICAgICB0aGlzLl9yZWZyZXNoQ29tcHJlc3NlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3JlZnJlc2hUcmFuc2ZlclNpemU6IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaFRyYW5zZmVyU2l6
ZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3Jlc291cmNlKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMzExLDI1ICszMDcsMjUgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlRGV0YWlsc1Np
ZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3RyYW5zZmVyU2l6ZVJvdy52
YWx1ZSA9IHRoaXMuX3ZhbHVlRm9yU2l6ZSh0aGlzLl9yZXNvdXJjZS50cmFuc2ZlclNpemUpOwog
CiAgICAgICAgIHRoaXMuX3JlZnJlc2hDb21wcmVzc2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcmVmcmVzaFJlcXVlc3RIZWFkZXJzOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hSZXF1ZXN0
SGVhZGVycygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3Jlc291cmNlKQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzUm93LmRhdGFHcmlkID0g
dGhpcy5fY3JlYXRlTmFtZVZhbHVlRGF0YUdyaWQodGhpcy5fcmVzb3VyY2UucmVxdWVzdEhlYWRl
cnMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hSZXNwb25zZUhlYWRlcnM6IGZ1bmN0
aW9uKCkKKyAgICBfcmVmcmVzaFJlc3BvbnNlSGVhZGVycygpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuX3Jlc291cmNlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3Jl
c3BvbnNlSGVhZGVyc1Jvdy5kYXRhR3JpZCA9IHRoaXMuX2NyZWF0ZU5hbWVWYWx1ZURhdGFHcmlk
KHRoaXMuX3Jlc291cmNlLnJlc3BvbnNlSGVhZGVycyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
Y3JlYXRlTmFtZVZhbHVlRGF0YUdyaWQ6IGZ1bmN0aW9uKGRhdGEpCisgICAgX2NyZWF0ZU5hbWVW
YWx1ZURhdGFHcmlkKGRhdGEpCiAgICAgewogICAgICAgICBpZiAoIWRhdGEgfHwgZGF0YSBpbnN0
YW5jZW9mIEFycmF5ID8gIWRhdGEubGVuZ3RoIDogaXNFbXB0eU9iamVjdChkYXRhKSkKICAgICAg
ICAgICAgIHJldHVybiBudWxsOwpAQCAtMzc0LDkgKzM3MCw5IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZURldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgcmV0dXJuIGRhdGFHcmlkOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hJbWFnZVNp
emVTZWN0aW9uOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hJbWFnZVNpemVTZWN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlOwogCkBAIC0zOTksMTQg
KzM5NSwxNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VEZXRhaWxzU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2ltYWdlV2lkdGhSb3cudmFsdWUgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIiVmcHgiKS5mb3JtYXQoc2l6ZS53aWR0aCk7CiAgICAgICAgICAgICB0
aGlzLl9pbWFnZUhlaWdodFJvdy52YWx1ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiJWZweCIp
LmZvcm1hdChzaXplLmhlaWdodCk7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfZ29Ub1JlcXVlc3REYXRhQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9nb1Rv
UmVxdWVzdERhdGFDbGlja2VkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJj
ZVNpZGViYXJQYW5lbC5zaG93UmVzb3VyY2VSZXF1ZXN0KHRoaXMuX3Jlc291cmNlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9yZWZyZXNoUmVxdWVzdERhdGFTZWN0aW9uOiBmdW5jdGlvbigpCisg
ICAgX3JlZnJlc2hSZXF1ZXN0RGF0YVNlY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHJlc291
cmNlID0gdGhpcy5fcmVzb3VyY2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMK
aW5kZXggMTM2NGE3Ni4uOGEwYjkyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VTaWRlYmFyUGFuZWwu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDggKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKSB7Ci0g
ICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuY2FsbCh0aGlzLCAicmVzb3Vy
Y2UiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlcyIpLCAiSW1hZ2VzL05hdmlnYXRp
b25JdGVtU3RvcmFnZS5zdmciLCAiMSIsIHRydWUsIGZhbHNlLCB0cnVlKTsKK1dlYkluc3BlY3Rv
ci5SZXNvdXJjZVNpZGViYXJQYW5lbCA9IGNsYXNzIFJlc291cmNlU2lkZWJhclBhbmVsIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwKK3sKKyAgICBjb25zdHJ1Y3Rv
cigpCisgICAgeworICAgICAgICBzdXBlcigicmVzb3VyY2UiLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlJlc291cmNlcyIpLCAiSW1hZ2VzL05hdmlnYXRpb25JdGVtU3RvcmFnZS5zdmciLCAiMSIs
IHRydWUsIGZhbHNlLCB0cnVlKTsKIAogICAgICAgICB2YXIgc2VhcmNoRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBzZWFyY2hFbGVtZW50LmNsYXNzTGlz
dC5hZGQoInNlYXJjaC1iYXIiKTsKQEAgLTk1LDE0ICs5OCwxMSBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTaWRlYmFyUGFuZWwgPSBmdW5jdGlvbigpIHsKIAogICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLmRlYnVnZ2FibGVUeXBlID09PSBXZWJJbnNwZWN0b3IuRGVidWdnYWJsZVR5cGUuSmF2YVNj
cmlwdCkKICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlc0NvbnRlbnRUcmVlT3V0bGluZS5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuSGlk
ZURpc2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOwotfTsKLQotV2ViSW5zcGVjdG9yLlJl
c291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0g
ICAgc2hvd0RlZmF1bHRDb250ZW50VmlldzogZnVuY3Rpb24oKQorICAgIHNob3dEZWZhdWx0Q29u
dGVudFZpZXcoKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNl
TWFuYWdlci5tYWluRnJhbWUpIHsKICAgICAgICAgICAgIHRoaXMuc2hvd01haW5GcmFtZSgpOwpA
QCAtMTEyLDQxICsxMTIsNDEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGZpcnN0VHJlZUVsZW1lbnQgPSB0aGlzLl9yZXNvdXJj
ZXNDb250ZW50VHJlZU91dGxpbmUuY2hpbGRyZW5bMF07CiAgICAgICAgIGlmIChmaXJzdFRyZWVF
bGVtZW50KQogICAgICAgICAgICAgZmlyc3RUcmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QoKTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBjb250ZW50VHJlZU91dGxpbmVUb0F1dG9QcnVuZSgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNoQ29udGVudFRyZWVPdXRsaW5lOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2hvd01haW5GcmFtZTogZnVuY3Rpb24obm9kZVRvU2VsZWN0
LCBwcmV2ZW50Rm9jdXNDaGFuZ2UpCisgICAgc2hvd01haW5GcmFtZShub2RlVG9TZWxlY3QsIHBy
ZXZlbnRGb2N1c0NoYW5nZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJv
d3Nlci5zaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChXZWJJbnNwZWN0b3IuZnJh
bWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dN
YWluRnJhbWVET01UcmVlOiBmdW5jdGlvbihub2RlVG9TZWxlY3QsIHByZXZlbnRGb2N1c0NoYW5n
ZSkKKyAgICBzaG93TWFpbkZyYW1lRE9NVHJlZShub2RlVG9TZWxlY3QsIHByZXZlbnRGb2N1c0No
YW5nZSkKICAgICB7CiAgICAgICAgIHZhciBjb250ZW50VmlldyA9IFdlYkluc3BlY3Rvci5jb250
ZW50QnJvd3Nlci5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KFdlYkluc3BlY3Rvci5m
cmFtZVJlc291cmNlTWFuYWdlci5tYWluRnJhbWUpOwogICAgICAgICBjb250ZW50Vmlldy5zaG93
RE9NVHJlZShub2RlVG9TZWxlY3QsIHByZXZlbnRGb2N1c0NoYW5nZSk7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcpOwotICAg
IH0sCisgICAgfQogCi0gICAgc2hvd01haW5GcmFtZVNvdXJjZUNvZGU6IGZ1bmN0aW9uKCkKKyAg
ICBzaG93TWFpbkZyYW1lU291cmNlQ29kZSgpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZp
ZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRl
ZE9iamVjdChXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFpbkZyYW1lKTsKICAg
ICAgICAgY29udGVudFZpZXcuc2hvd1NvdXJjZUNvZGUoKTsKICAgICAgICAgV2ViSW5zcGVjdG9y
LmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlldyhjb250ZW50Vmlldyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBzaG93Q29udGVudEZsb3dET01UcmVlOiBmdW5jdGlvbihjb250ZW50Rmxvdywg
bm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2UpCisgICAgc2hvd0NvbnRlbnRGbG93RE9N
VHJlZShjb250ZW50Rmxvdywgbm9kZVRvU2VsZWN0LCBwcmV2ZW50Rm9jdXNDaGFuZ2UpCiAgICAg
ewogICAgICAgICB2YXIgY29udGVudFZpZXcgPSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIu
Y29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChjb250ZW50Rmxvdyk7CiAgICAgICAgIGlm
IChub2RlVG9TZWxlY3QpCiAgICAgICAgICAgICBjb250ZW50Vmlldy5zZWxlY3RBbmRSZXZlYWxE
T01Ob2RlKG5vZGVUb1NlbGVjdCwgcHJldmVudEZvY3VzQ2hhbmdlKTsKICAgICAgICAgV2ViSW5z
cGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlldyhjb250ZW50Vmlldyk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBzaG93U291cmNlQ29kZUZvckZyYW1lOiBmdW5jdGlvbihmcmFtZUlk
ZW50aWZpZXIsIHJldmVhbEFuZFNlbGVjdFRyZWVFbGVtZW50KQorICAgIHNob3dTb3VyY2VDb2Rl
Rm9yRnJhbWUoZnJhbWVJZGVudGlmaWVyLCByZXZlYWxBbmRTZWxlY3RUcmVlRWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9mcmFtZUlkZW50aWZpZXJUb1Nob3dTb3VyY2VDb2Rl
V2hlbkF2YWlsYWJsZTsKIApAQCAtMTY4LDkgKzE2OCw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHJldmVhbEFuZFNlbGVj
dFRyZWVFbGVtZW50KQogICAgICAgICAgICAgdGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVk
T2JqZWN0KGZyYW1lKS5yZXZlYWxBbmRTZWxlY3QodHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzaG93U291cmNlQ29kZTogZnVuY3Rpb24oc291cmNlQ29kZSwg
cG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQpCisg
ICAgc2hvd1NvdXJjZUNvZGUoc291cmNlQ29kZSwgcG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdl
VG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dCghcG9zaXRpb25Ub1JldmVhbCB8fCBwb3NpdGlvblRvUmV2ZWFsIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbiwgcG9zaXRpb25Ub1JldmVhbCk7CiAgICAgICAgIHZh
ciByZXByZXNlbnRlZE9iamVjdCA9IHNvdXJjZUNvZGU7CkBAIC0xODYsNDEgKzE4Niw0MSBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAg
IHZhciBjb29raWUgPSBwb3NpdGlvblRvUmV2ZWFsID8ge2xpbmVOdW1iZXI6IHBvc2l0aW9uVG9S
ZXZlYWwubGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBwb3NpdGlvblRvUmV2ZWFsLmNvbHVtbk51
bWJlcn0gOiB7fTsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250
ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBjb29raWUpOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2hvd1NvdXJjZUNvZGVMb2NhdGlvbjogZnVuY3Rpb24oc291
cmNlQ29kZUxvY2F0aW9uKQorICAgIHNob3dTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxv
Y2F0aW9uKQogICAgIHsKICAgICAgICAgdGhpcy5zaG93U291cmNlQ29kZShzb3VyY2VDb2RlTG9j
YXRpb24uZGlzcGxheVNvdXJjZUNvZGUsIHNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5UG9zaXRp
b24oKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93T3JpZ2luYWxVbmZvcm1hdHRlZFNvdXJj
ZUNvZGVMb2NhdGlvbjogZnVuY3Rpb24oc291cmNlQ29kZUxvY2F0aW9uKQorICAgIHNob3dPcmln
aW5hbFVuZm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikKICAg
ICB7CiAgICAgICAgIHRoaXMuc2hvd1NvdXJjZUNvZGUoc291cmNlQ29kZUxvY2F0aW9uLnNvdXJj
ZUNvZGUsIHNvdXJjZUNvZGVMb2NhdGlvbi5wb3NpdGlvbigpLCB1bmRlZmluZWQsIHRydWUpOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9j
YXRpb246IGZ1bmN0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICBzaG93T3JpZ2luYWxPckZv
cm1hdHRlZFNvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pCiAgICAgewogICAg
ICAgICB0aGlzLnNob3dTb3VyY2VDb2RlKHNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlLCBz
b3VyY2VDb2RlTG9jYXRpb24uZm9ybWF0dGVkUG9zaXRpb24oKSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBzaG93U291cmNlQ29kZVRleHRSYW5nZTogZnVuY3Rpb24oc291cmNlQ29kZVRleHRSYW5n
ZSkKKyAgICBzaG93U291cmNlQ29kZVRleHRSYW5nZShzb3VyY2VDb2RlVGV4dFJhbmdlKQogICAg
IHsKICAgICAgICAgdmFyIHRleHRSYW5nZVRvU2VsZWN0ID0gc291cmNlQ29kZVRleHRSYW5nZS5k
aXNwbGF5VGV4dFJhbmdlOwogICAgICAgICB0aGlzLnNob3dTb3VyY2VDb2RlKHNvdXJjZUNvZGVU
ZXh0UmFuZ2UuZGlzcGxheVNvdXJjZUNvZGUsIHRleHRSYW5nZVRvU2VsZWN0LnN0YXJ0UG9zaXRp
b24oKSwgdGV4dFJhbmdlVG9TZWxlY3QpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd09yaWdp
bmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlVGV4dFJhbmdlOiBmdW5jdGlvbihzb3VyY2VDb2RlVGV4
dFJhbmdlKQorICAgIHNob3dPcmlnaW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZVRleHRSYW5nZShz
b3VyY2VDb2RlVGV4dFJhbmdlKQogICAgIHsKICAgICAgICAgdmFyIHRleHRSYW5nZVRvU2VsZWN0
ID0gc291cmNlQ29kZVRleHRSYW5nZS5mb3JtYXR0ZWRUZXh0UmFuZ2U7CiAgICAgICAgIHRoaXMu
c2hvd1NvdXJjZUNvZGUoc291cmNlQ29kZVRleHRSYW5nZS5zb3VyY2VDb2RlLCB0ZXh0UmFuZ2VU
b1NlbGVjdC5zdGFydFBvc2l0aW9uKCksIHRleHRSYW5nZVRvU2VsZWN0KTsKLSAgICB9LAorICAg
IH0KIAotICAgIHNob3dSZXNvdXJjZTogZnVuY3Rpb24ocmVzb3VyY2UpCisgICAgc2hvd1Jlc291
cmNlKHJlc291cmNlKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2Vy
LnNob3dDb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlc291cmNlLmlzTWFpblJlc291
cmNlKCkgPyByZXNvdXJjZS5wYXJlbnRGcmFtZSA6IHJlc291cmNlKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHNob3dSZXNvdXJjZVJlcXVlc3Q6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIHNob3dS
ZXNvdXJjZVJlcXVlc3QocmVzb3VyY2UpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXcg
PSBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuY29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9i
amVjdChyZXNvdXJjZS5pc01haW5SZXNvdXJjZSgpID8gcmVzb3VyY2UucGFyZW50RnJhbWUgOiBy
ZXNvdXJjZSk7CiAKQEAgLTIzNiw5ICsyMzYsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRl
YmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXNvdXJjZUNvbnRlbnRWaWV3LnNob3dS
ZXF1ZXN0KCk7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250
ZW50Vmlldyhjb250ZW50Vmlldyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmVlRWxlbWVudEZv
clJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB0cmVl
RWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAg
ICAgICAgLy8gQSBjdXN0b20gaW1wbGVtZW50YXRpb24gaXMgbmVlZGVkIGZvciB0aGlzIHNpbmNl
IHRoZSBmcmFtZXMgYXJlIHBvcHVsYXRlZCBsYXppbHkuCiAKQEAgLTMwNSw5ICszMDUsOSBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9hbm9ueW1vdXNTY3JpcHRzRm9sZGVyVHJlZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0
VHJlZUVsZW1lbnQpOwogCiAgICAgICAgIHJldHVybiBzY3JpcHRUcmVlRWxlbWVudDsKLSAgICB9
LAorICAgIH0KIAotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHNlYXJjaFRlcm0pCisgICAg
cGVyZm9ybVNlYXJjaChzZWFyY2hUZXJtKQogICAgIHsKICAgICAgICAgLy8gQmVmb3JlIHBlcmZv
cm1pbmcgYSBuZXcgc2VhcmNoLCBjbGVhciB0aGUgb2xkIHNlYXJjaC4KICAgICAgICAgdGhpcy5f
c2VhcmNoQ29udGVudFRyZWVPdXRsaW5lLnJlbW92ZUNoaWxkcmVuKCk7CkBAIC01MTUsMzUgKzUx
NSwzNSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICAvLyA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTMxMjUyPiBXZWIgSW5zcGVjdG9yOiBK
U0NvbnRleHQgaW5zcGVjdGlvbiBSZXNvdXJjZSBzZWFyY2ggZG9lcyBub3Qgd29yawogICAgICAg
ICBpZiAoIXdpbmRvdy5ET01BZ2VudCAmJiAhd2luZG93LlBhZ2VBZ2VudCkKICAgICAgICAgICAg
IHVwZGF0ZUVtcHR5Q29udGVudFBsYWNlaG9sZGVyU29vbi5jYWxsKHRoaXMpOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Nob3dSZXNvdXJjZXNDb250ZW50VHJlZU91
dGxpbmU6IGZ1bmN0aW9uKCkKKyAgICBfc2hvd1Jlc291cmNlc0NvbnRlbnRUcmVlT3V0bGluZSgp
CiAgICAgewogICAgICAgICB0aGlzLmZpbHRlckJhci5wbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRmlsdGVyIFJlc291cmNlIExpc3QiKTsKICAgICAgICAgdGhpcy5jb250ZW50
VHJlZU91dGxpbmUgPSB0aGlzLl9yZXNvdXJjZXNDb250ZW50VHJlZU91dGxpbmU7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfc2hvd1NlYXJjaENvbnRlbnRUcmVlT3V0bGluZTogZnVuY3Rpb24oKQor
ICAgIF9zaG93U2VhcmNoQ29udGVudFRyZWVPdXRsaW5lKCkKICAgICB7CiAgICAgICAgIHRoaXMu
ZmlsdGVyQmFyLnBsYWNlaG9sZGVyID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWx0ZXIgU2Vh
cmNoIFJlc3VsdHMiKTsKICAgICAgICAgdGhpcy5jb250ZW50VHJlZU91dGxpbmUgPSB0aGlzLl9z
ZWFyY2hDb250ZW50VHJlZU91dGxpbmU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2VhcmNoRmll
bGRDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2VhcmNoRmllbGRDaGFuZ2VkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKGV2ZW50LnRhcmdldC52YWx1ZSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2VhcmNoRmllbGRJbnB1dDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3NlYXJjaEZpZWxkSW5wdXQoZXZlbnQpCiAgICAgewogICAgICAgICAvLyBJZiB0aGUg
c2VhcmNoIGZpZWxkIGlzIGNsZWFyZWQsIGltbWVkaWF0ZWx5IGNsZWFyIHRoZSBzZWFyY2ggcmVz
dWx0cyB0cmVlIG91dGxpbmUuCiAgICAgICAgIGlmICghZXZlbnQudGFyZ2V0LnZhbHVlLmxlbmd0
aCAmJiB0aGlzLmNvbnRlbnRUcmVlT3V0bGluZSA9PT0gdGhpcy5fc2VhcmNoQ29udGVudFRyZWVP
dXRsaW5lKQogICAgICAgICAgICAgdGhpcy5wZXJmb3JtU2VhcmNoKCIiKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9zZWFyY2hUcmVlRWxlbWVudEZvclJlc291cmNlOiBmdW5jdGlvbihyZXNvdXJj
ZSkKKyAgICBfc2VhcmNoVHJlZUVsZW1lbnRGb3JSZXNvdXJjZShyZXNvdXJjZSkKICAgICB7CiAg
ICAgICAgIHZhciByZXNvdXJjZVRyZWVFbGVtZW50ID0gdGhpcy5fc2VhcmNoQ29udGVudFRyZWVP
dXRsaW5lLmdldENhY2hlZFRyZWVFbGVtZW50KHJlc291cmNlKTsKICAgICAgICAgaWYgKCFyZXNv
dXJjZVRyZWVFbGVtZW50KSB7CkBAIC01NTUsOSArNTU1LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVy
biByZXNvdXJjZVRyZWVFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX3NlYXJjaFRyZWVF
bGVtZW50Rm9yU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCisgICAgX3NlYXJjaFRyZWVFbGVtZW50
Rm9yU2NyaXB0KHNjcmlwdCkKICAgICB7CiAgICAgICAgIHZhciBzY3JpcHRUcmVlRWxlbWVudCA9
IHRoaXMuX3NlYXJjaENvbnRlbnRUcmVlT3V0bGluZS5nZXRDYWNoZWRUcmVlRWxlbWVudChzY3Jp
cHQpOwogICAgICAgICBpZiAoIXNjcmlwdFRyZWVFbGVtZW50KSB7CkBAIC01NjksMTYgKzU2OSwx
NiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICB9CiAKICAgICAgICAgcmV0dXJuIHNjcmlwdFRyZWVFbGVtZW50OwotICAgIH0sCisgICAg
fQogCi0gICAgX2ZvY3VzU2VhcmNoRmllbGQ6IGZ1bmN0aW9uKGtleWJvYXJkU2hvcnRjdXQsIGV2
ZW50KQorICAgIF9mb2N1c1NlYXJjaEZpZWxkKGtleWJvYXJkU2hvcnRjdXQsIGV2ZW50KQogICAg
IHsKICAgICAgICAgdGhpcy5zaG93KCk7CiAKICAgICAgICAgdGhpcy5faW5wdXRFbGVtZW50LnNl
bGVjdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX21haW5GcmFtZURpZENoYW5nZTogZnVuY3Rp
b24oZXZlbnQpCisgICAgX21haW5GcmFtZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLl9tYWluRnJhbWVUcmVlRWxlbWVudCkgewogICAgICAgICAgICAgdGhpcy5fbWFp
bkZyYW1lVHJlZUVsZW1lbnQuZnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
RnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluRnJhbWVNYWluUmVz
b3VyY2VEaWRDaGFuZ2UsIHRoaXMpOwpAQCAtNjE2LDkgKzYxNiw5IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gU2VhcmNoIGZv
ciB3aGF0ZXZlciBpcyBpbiB0aGUgaW5wdXQgZmllbGQuIFRoaXMgd2FzIHBvcHVsYXRlZCB3aXRo
IHRoZSBsYXN0IHVzZWQgc2VhcmNoIHRlcm0uCiAgICAgICAgIHRoaXMucGVyZm9ybVNlYXJjaCh0
aGlzLl9pbnB1dEVsZW1lbnQudmFsdWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX21haW5GcmFt
ZU1haW5SZXNvdXJjZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX21haW5GcmFtZU1h
aW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciB3YXNTaG93aW5n
UmVzb3VyY2VTaWRlYmFyID0gdGhpcy5zZWxlY3RlZDsKICAgICAgICAgdmFyIGN1cnJlbnRDb250
ZW50VmlldyA9IFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5jdXJyZW50Q29udGVudFZpZXc7
CkBAIC02NTUsOSArNjU1LDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgLy8gRGVsYXkgdGhpcyB3b3JrIGJlY2F1c2Ugb3RoZXIgbGlz
dGVuZXJzIG9mIHRoaXMgZXZlbnQgbWlnaHQgbm90IGhhdmUgZmlyZWQgeWV0LiBTbyBzZWxlY3Rp
bmcgdGhlIG1haW4gZnJhbWUKICAgICAgICAgLy8gYmVmb3JlIHRob3NlIGxpc3RlbmVycyBkbyB0
aGVpciB3b3JrIG1pZ2h0IGNhdXNlIHRoZSBjb250ZW50IG9mIHRoZSBvbGQgcGFnZSB0byBzaG93
IGluc3RlYWQgb2YgdGhlIG5ldyBwYWdlLgogICAgICAgICBzZXRUaW1lb3V0KGRlbGF5ZWRXb3Jr
LmJpbmQodGhpcyksIDApOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZyYW1lV2FzQWRkZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9mcmFtZVdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9mcmFtZUlkZW50aWZpZXJUb1Nob3dTb3VyY2VDb2RlV2hlbkF2YWlsYWJsZSkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTY2Nyw5ICs2NjcsOSBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHRoaXMuc2hvd1NvdXJjZUNvZGVGb3JGcmFtZShmcmFtZS5pZCwgdHJ1ZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfc2NyaXB0V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9z
Y3JpcHRXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzY3JpcHQgPSBldmVudC5k
YXRhLnNjcmlwdDsKIApAQCAtNzE1LDkgKzcxNSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNp
ZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIHBhcmVudEZvbGRlclRyZWVF
bGVtZW50LmFwcGVuZENoaWxkKHNjcmlwdFRyZWVFbGVtZW50KTsKICAgICAgICAgfQotICAgIH0s
CisgICAgfQogCi0gICAgX3NjcmlwdHNDbGVhcmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2Ny
aXB0c0NsZWFyZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZXh0ZW5zaW9uU2Ny
aXB0c0ZvbGRlclRyZWVFbGVtZW50KSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fZXh0ZW5zaW9u
U2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50LnBhcmVudCkKQEAgLTczNiw5ICs3MzYsOSBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgIHRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVudC5wYXJlbnQucmVtb3Zl
Q2hpbGQodGhpcy5fYW5vbnltb3VzU2NyaXB0c0ZvbGRlclRyZWVFbGVtZW50KTsKICAgICAgICAg
ICAgIHRoaXMuX2Fub255bW91c1NjcmlwdHNGb2xkZXJUcmVlRWxlbWVudCA9IG51bGw7CiAgICAg
ICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9zY3JpcHRzVG9TZWFyY2g6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9zY3JpcHRzVG9TZWFyY2goZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgbm9u
UmVzb3VyY2VTY3JpcHRzID0gW107CiAKQEAgLTc2Myw5ICs3NjMsOSBAQCBXZWJJbnNwZWN0b3Iu
UmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
cmV0dXJuIG5vblJlc291cmNlU2NyaXB0czsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxl
bWVudFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAg
X3RyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsK
ICAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRlclRy
ZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNl
SG9zdFRyZWVFbGVtZW50IHx8CiAgICAgICAgICAgICB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VIb3N0VHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQpCkBAIC03
ODgsMTQgKzc4OCwxNCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFyUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgdGhpcy5zaG93TWFpbkZyYW1lRE9NVHJlZSh0cmVlRWxlbWVu
dC5yZXByZXNlbnRlZE9iamVjdC5kb21Ob2RlLCB0cnVlKTsKICAgICAgICAgZWxzZSBpZiAodHJl
ZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVNlYXJjaE1hdGNoT2JqZWN0KQogICAgICAgICAgICAgdGhpcy5zaG93T3JpZ2luYWxPckZv
cm1hdHRlZFNvdXJjZUNvZGVUZXh0UmFuZ2UodHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3Qu
c291cmNlQ29kZVRleHRSYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZG9tTm9kZVdhc0lu
c3BlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RvbU5vZGVXYXNJbnNwZWN0ZWQoZXZlbnQp
CiAgICAgewogICAgICAgICB0aGlzLnNob3dNYWluRnJhbWVET01UcmVlKGV2ZW50LmRhdGEubm9k
ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZG9tU3RvcmFnZU9iamVjdFdhc0FkZGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfZG9tU3RvcmFnZU9iamVjdFdhc0FkZGVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSBldmVudC5kYXRhLmRvbVN0b3JhZ2U7CiAgICAgICAg
IHZhciBzdG9yYWdlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZVRyZWVFbGVt
ZW50KGRvbVN0b3JhZ2UpOwpAQCAtODA0LDE2ICs4MDQsMTYgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2xvY2FsU3Rv
cmFnZVJvb3RUcmVlRWxlbWVudCA9IHRoaXMuX2FkZFN0b3JhZ2VDaGlsZChzdG9yYWdlRWxlbWVu
dCwgdGhpcy5fbG9jYWxTdG9yYWdlUm9vdFRyZWVFbGVtZW50LCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkxvY2FsIFN0b3JhZ2UiKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3Nl
c3Npb25TdG9yYWdlUm9vdFRyZWVFbGVtZW50ID0gdGhpcy5fYWRkU3RvcmFnZUNoaWxkKHN0b3Jh
Z2VFbGVtZW50LCB0aGlzLl9zZXNzaW9uU3RvcmFnZVJvb3RUcmVlRWxlbWVudCwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTZXNzaW9uIFN0b3JhZ2UiKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
ZG9tU3RvcmFnZU9iamVjdFdhc0luc3BlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RvbVN0
b3JhZ2VPYmplY3RXYXNJbnNwZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZG9tU3Rv
cmFnZSA9IGV2ZW50LmRhdGEuZG9tU3RvcmFnZTsKICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0g
dGhpcy50cmVlRWxlbWVudEZvclJlcHJlc2VudGVkT2JqZWN0KGRvbVN0b3JhZ2UpOwogICAgICAg
ICB0cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QodHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZGF0YWJhc2VXYXNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFiYXNlV2FzQWRk
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZGF0YWJhc2UgPSBldmVudC5kYXRhLmRhdGFi
YXNlOwogCkBAIC04MjYsMTYgKzgyNiwxNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTaWRlYmFy
UGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBkYXRhYmFzZUVsZW1lbnQgPSBuZXcg
V2ViSW5zcGVjdG9yLkRhdGFiYXNlVHJlZUVsZW1lbnQoZGF0YWJhc2UpOwogICAgICAgICB0aGlz
Ll9kYXRhYmFzZUhvc3RUcmVlRWxlbWVudE1hcFtkYXRhYmFzZS5ob3N0XS5hcHBlbmRDaGlsZChk
YXRhYmFzZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFiYXNlV2FzSW5zcGVj
dGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YWJhc2VXYXNJbnNwZWN0ZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB2YXIgZGF0YWJhc2UgPSBldmVudC5kYXRhLmRhdGFiYXNlOwogICAgICAg
ICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLnRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3Qo
ZGF0YWJhc2UpOwogICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QodHJ1ZSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfaW5kZXhlZERhdGFiYXNlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9pbmRleGVkRGF0YWJhc2VXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAgICAg
IHZhciBpbmRleGVkRGF0YWJhc2UgPSBldmVudC5kYXRhLmluZGV4ZWREYXRhYmFzZTsKIApAQCAt
ODQ4LDE3ICs4NDgsMTcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICB2YXIgaW5kZXhlZERhdGFiYXNlRWxlbWVudCA9IG5ldyBXZWJJ
bnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlVHJlZUVsZW1lbnQoaW5kZXhlZERhdGFiYXNlKTsKICAg
ICAgICAgdGhpcy5faW5kZXhlZERhdGFiYXNlSG9zdFRyZWVFbGVtZW50TWFwW2luZGV4ZWREYXRh
YmFzZS5ob3N0XS5hcHBlbmRDaGlsZChpbmRleGVkRGF0YWJhc2VFbGVtZW50KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9jb29raWVTdG9yYWdlT2JqZWN0V2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9jb29raWVTdG9yYWdlT2JqZWN0V2FzQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChldmVudC5kYXRhLmNvb2tpZVN0b3JhZ2UgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdCk7CiAKICAgICAgICAgdmFyIGNvb2tpZUVsZW1l
bnQgPSBuZXcgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VUcmVlRWxlbWVudChldmVudC5kYXRh
LmNvb2tpZVN0b3JhZ2UpOwogICAgICAgICB0aGlzLl9jb29raWVTdG9yYWdlUm9vdFRyZWVFbGVt
ZW50ID0gdGhpcy5fYWRkU3RvcmFnZUNoaWxkKGNvb2tpZUVsZW1lbnQsIHRoaXMuX2Nvb2tpZVN0
b3JhZ2VSb290VHJlZUVsZW1lbnQsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29va2llcyIpKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9mcmFtZU1hbmlmZXN0QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9mcmFtZU1hbmlmZXN0QWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZnJh
bWVNYW5pZmVzdCA9IGV2ZW50LmRhdGEuZnJhbWVNYW5pZmVzdDsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoZnJhbWVNYW5pZmVzdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlRnJhbWUpOwpAQCAtODcyLDE0ICs4NzIsMTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgZnJhbWVDYWNoZUVsZW1lbnQg
PSBuZXcgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZVRyZWVFbGVtZW50KGZyYW1l
TWFuaWZlc3QpOwogICAgICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVVJMVHJlZUVsZW1lbnRN
YXBbbWFuaWZlc3RVUkxdLmFwcGVuZENoaWxkKGZyYW1lQ2FjaGVFbGVtZW50KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9mcmFtZU1hbmlmZXN0UmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2ZyYW1lTWFuaWZlc3RSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcy4KLSAgICB9LAorICAgIH0KIAotICAgIF9jb21wYXJlVHJlZUVsZW1lbnRz
OiBmdW5jdGlvbihhLCBiKQorICAgIF9jb21wYXJlVHJlZUVsZW1lbnRzKGEsIGIpCiAgICAgewog
ICAgICAgICAvLyBBbHdheXMgc29ydCB0aGUgbWFpbiBmcmFtZSBlbGVtZW50IGZpcnN0LgogICAg
ICAgICBpZiAoYSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5GcmFtZVRyZWVFbGVtZW50KQpAQCAt
ODkxLDkgKzg5MSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNpZGViYXJQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGIubWFpblRpdGxlKTsKIAogICAgICAgICBy
ZXR1cm4gKGEubWFpblRpdGxlIHx8ICIiKS5sb2NhbGVDb21wYXJlKGIubWFpblRpdGxlIHx8ICIi
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRTdG9yYWdlQ2hpbGQ6IGZ1bmN0aW9uKGNoaWxk
RWxlbWVudCwgcGFyZW50RWxlbWVudCwgZm9sZGVyTmFtZSkKKyAgICBfYWRkU3RvcmFnZUNoaWxk
KGNoaWxkRWxlbWVudCwgcGFyZW50RWxlbWVudCwgZm9sZGVyTmFtZSkKICAgICB7CiAgICAgICAg
IGlmICghcGFyZW50RWxlbWVudCkgewogICAgICAgICAgICAgY2hpbGRFbGVtZW50LmZsYXR0ZW5l
ZCA9IHRydWU7CkBAIC05MjMsOSArOTIzLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJh
clBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcGFyZW50RWxlbWVudC5pbnNlcnRDaGlsZChj
aGlsZEVsZW1lbnQsIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlv
bihjaGlsZEVsZW1lbnQsIHBhcmVudEVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVUcmVl
RWxlbWVudHMpKTsKIAogICAgICAgICByZXR1cm4gcGFyZW50RWxlbWVudDsKLSAgICB9LAorICAg
IH0KIAotICAgIF9zdG9yYWdlQ2xlYXJlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3N0b3JhZ2VD
bGVhcmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gQ2xvc2UgYWxsIERPTSBhbmQgY29va2ll
IHN0b3JhZ2UgY29udGVudCB2aWV3cyBzaW5jZSB0aGUgbWFpbiBmcmFtZSBoYXMgbmF2aWdhdGVk
IGFuZCBhbGwgc3RvcmFnZXMgYXJlIGNsZWFyZWQuCiAgICAgICAgIFdlYkluc3BlY3Rvci5jb250
ZW50QnJvd3Nlci5jb250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3c09mUHJv
dG90eXBlKFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcpOwpAQCAtOTYxLDEz
ICs5NjEsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fY29va2llU3RvcmFnZVJvb3RUcmVlRWxlbWVudCA9IG51bGw7CiAg
ICAgICAgIHRoaXMuX2FwcGxpY2F0aW9uQ2FjaGVSb290VHJlZUVsZW1lbnQgPSBudWxsOwogICAg
ICAgICB0aGlzLl9hcHBsaWNhdGlvbkNhY2hlVVJMVHJlZUVsZW1lbnRNYXAgPSB7fTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9leHRyYURvbWFpbnNBY3RpdmF0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBf
ZXh0cmFEb21haW5zQWN0aXZhdGVkKCkKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iu
ZGVidWdnYWJsZVR5cGUgPT09IFdlYkluc3BlY3Rvci5EZWJ1Z2dhYmxlVHlwZS5KYXZhU2NyaXB0
KQogICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2VzQ29udGVudFRyZWVPdXRsaW5lLmVsZW1lbnQu
Y2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5IaWRl
RGlzY2xvc3VyZUJ1dHRvbnNTdHlsZUNsYXNzTmFtZSk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVj
dG9yLlJlc291cmNlU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdy
aWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVz
b3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcwppbmRleCA4MzkzMzU3Li43MjI1ZTgzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJj
ZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIz
LDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5z
cGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihyZXNvdXJjZVRp
bWVsaW5lUmVjb3JkLCBncmFwaE9ubHksIGdyYXBoRGF0YVNvdXJjZSkKK1dlYkluc3BlY3Rvci5S
ZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlID0gY2xhc3MgUmVzb3VyY2VUaW1lbGluZURhdGFH
cmlkTm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZQogewotICAg
IFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIGdyYXBoT25seSwg
Z3JhcGhEYXRhU291cmNlKTsKKyAgICBjb25zdHJ1Y3RvcihyZXNvdXJjZVRpbWVsaW5lUmVjb3Jk
LCBncmFwaE9ubHksIGdyYXBoRGF0YVNvdXJjZSkKKyAgICB7CisgICAgICAgIHN1cGVyKGdyYXBo
T25seSwgZ3JhcGhEYXRhU291cmNlKTsKIAogICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291
cmNlVGltZWxpbmVSZWNvcmQucmVzb3VyY2U7CiAgICAgICAgIHRoaXMuX3JlY29yZCA9IHJlc291
cmNlVGltZWxpbmVSZWNvcmQ7CkBAIC00MCwyOSArNDIsMTkgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihyZXNvdXJjZVRpbWVsaW5lUmVjb3Jk
LCBncmEKICAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlJlc291cmNlLkV2ZW50LlNpemVEaWRDaGFuZ2UsIHRoaXMuX25lZWRzUmVmcmVzaCwg
dGhpcyk7CiAgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UcmFuc2ZlclNpemVEaWRDaGFuZ2UsIHRoaXMuX25lZWRz
UmVmcmVzaCwgdGhpcyk7CiAgICAgICAgIH0KLX07Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2Vi
SW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5z
cGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVj
dG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUpOwotCi1XZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VUaW1lbGluZURhdGFHcmlkTm9kZS5JY29uU3R5bGVDbGFzc05hbWUgPSAiaWNvbiI7Ci1XZWJJ
bnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5FcnJvclN0eWxlQ2xhc3NOYW1l
ID0gImVycm9yIjsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1l
bGluZURhdGFHcmlkTm9kZSwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZURh
dGFHcmlkTm9kZS5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
cmVjb3JkcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3JlY29yZF07Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgcmVzb3VyY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3Jlc291cmNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKQEAgLTkz
LDE2ICs4NSwxNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5w
cm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fY2FjaGVkRGF0YSA9IGRhdGE7CiAgICAgICAg
IHJldHVybiBkYXRhOwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlQ2VsbENvbnRlbnQ6IGZ1
bmN0aW9uKGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCisgICAgY3JlYXRlQ2VsbENvbnRlbnQoY29s
dW1uSWRlbnRpZmllciwgY2VsbCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9IHRoaXMu
X3Jlc291cmNlOwogCiAgICAgICAgIGlmIChyZXNvdXJjZS5mYWlsZWQgfHwgcmVzb3VyY2UuY2Fu
Y2VsZWQgfHwgcmVzb3VyY2Uuc3RhdHVzQ29kZSA+PSA0MDApCi0gICAgICAgICAgICBjZWxsLmNs
YXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuRXJy
b3JTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoImVycm9y
Iik7CiAKLSAgICAgICAgY29uc3QgZW1wdHlWYWx1ZVBsYWNlaG9sZGVyU3RyaW5nID0gIlx1MjAx
NCI7CisgICAgICAgIHZhciBlbXB0eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgPSAiXHUyMDE0IjsK
ICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwogCiAgICAg
ICAgIHN3aXRjaCAoY29sdW1uSWRlbnRpZmllcikgewpAQCAtMTE3LDcgKzEwOSw3IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGdvVG9CdXR0b24pOwogCiAgICAgICAgICAgICB2
YXIgaWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgaWNv
bi5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5J
Y29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBpY29uLmNsYXNzTmFtZSA9ICJpY29uIjsK
ICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGljb24pOwogCiAgICAgICAgICAgICB2
YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHZhbHVlKTsKQEAgLTE1MSw5ICsxNDMs
OSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0
YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxsQ29udGVudC5jYWxsKHRoaXMsIGNvbHVtbklk
ZW50aWZpZXIsIGNlbGwpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24o
KQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFJlZnJl
c2hJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9z
Y2hlZHVsZWRSZWZyZXNoSWRlbnRpZmllcik7CkBAIC0xNjMsMTEgKzE1NSwxMSBAQCBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9jYWNoZWREYXRhOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZURhdGFHcmlkTm9kZS5wcm90b3R5cGUucmVmcmVzaC5jYWxsKHRoaXMpOwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX25lZWRzUmVmcmVzaDogZnVuY3Rpb24oKQorICAg
IF9uZWVkc1JlZnJlc2goKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZGF0YUdyaWQgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZCkgewogICAgICAgICAgICAgdGhpcy5k
YXRhR3JpZC5kYXRhR3JpZE5vZGVOZWVkc1JlZnJlc2godGhpcyk7CkBAIC0xNzgsMTQgKzE3MCwx
NCBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2NoZWR1bGVkUmVmcmVz
aElkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5yZWZyZXNoLmJpbmQodGhp
cykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2dvVG9SZXNvdXJjZTogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2dvVG9SZXNvdXJjZShldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93U291cmNlQ29kZSh0aGlzLl9yZXNvdXJjZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVSZWNvcmRVcGRhdGVkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfdGltZWxpbmVSZWNvcmRVcGRhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuaXNSZWNvcmRWaXNpYmxlKHRoaXMuX3JlY29yZCkpCiAgICAgICAgICAgICB0aGlzLm5lZWRz
R3JhcGhSZWZyZXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVudC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGlt
ZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50LmpzCmluZGV4IGE0MzIyYjkuLjcxMDc5MDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
c291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3Jp
ZE5vZGVQYXRoQ29tcG9uZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMSArMjMsMzEgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURh
dGFHcmlkTm9kZVBhdGhDb21wb25lbnQgPSBmdW5jdGlvbihyZXNvdXJjZVRpbWVsaW5lRGF0YUdy
aWROb2RlKSB7CitXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhD
b21wb25lbnQgPSBjbGFzcyBSZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlUGF0aENvbXBvbmVu
dCBleHRlbmRzIFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50Cit7CisgICAg
Y29uc3RydWN0b3IocmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZSkKKyAgICB7CiAgICAgICAg
IHZhciByZXNvdXJjZSA9IHJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUucmVjb3JkLnJlc291
cmNlOwogICAgICAgICB2YXIgY2xhc3NOYW1lcyA9IFtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVl
RWxlbWVudC5SZXNvdXJjZUljb25TdHlsZUNsYXNzTmFtZSwgcmVzb3VyY2UudHlwZV07CiAKLSAg
ICBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIHJlc291
cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuZGF0YS5uYW1lLCBjbGFzc05hbWVzLCByZXNvdXJjZSk7
CisgICAgICAgIHN1cGVyKHJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuZGF0YS5uYW1lLCBj
bGFzc05hbWVzLCByZXNvdXJjZSk7CiAKICAgICAgICAgdGhpcy5fcmVzb3VyY2VUaW1lbGluZURh
dGFHcmlkTm9kZSA9IHJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGU7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFH
cmlkTm9kZVBhdGhDb21wb25lbnQsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
cmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fcmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBwcmV2aW91c1NpYmxpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNvdXJjZVRp
bWVsaW5lRGF0YUdyaWROb2RlLnByZXZpb3VzU2libGluZykKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwogICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0
YUdyaWROb2RlUGF0aENvbXBvbmVudCh0aGlzLl9yZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2Rl
LnByZXZpb3VzU2libGluZyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmV4dFNpYmxpbmco
KQogICAgIHsKQEAgLTU2LDUgKzU2LDMgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVE
YXRhR3JpZE5vZGVQYXRoQ29tcG9uZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZVBhdGhDb21wb25lbnQo
dGhpcy5fcmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5uZXh0U2libGluZyk7CiAgICAgfQog
fTsKLQotV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGVQYXRoQ29tcG9u
ZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENv
bXBvbmVudC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VUcmVlRWxlbWVudC5qcwppbmRleCBi
ODA5OGE5Li5lODg4ZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVHJlZUVsZW1lbnQuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIw
ICsyMywyMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVzb3VyY2UsIHJlcHJl
c2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQgPSBjbGFzcyBS
ZXNvdXJjZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUcmVlRWxl
bWVudAoreworICAgIGNvbnN0cnVjdG9yKHJlc291cmNlLCByZXByZXNlbnRlZE9iamVjdCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlJlc291cmNlKTsKIAotICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQu
Y2FsbCh0aGlzLCByZXNvdXJjZSwgW1dlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LlN0
eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUlj
b25TdHlsZUNsYXNzTmFtZSwgcmVzb3VyY2UudHlwZV0sICIiLCAiIiwgcmVwcmVzZW50ZWRPYmpl
Y3QgfHwgcmVzb3VyY2UsIGZhbHNlKTsKKyAgICAgICAgc3VwZXIocmVzb3VyY2UsIFsicmVzb3Vy
Y2UiLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5SZXNvdXJjZUljb25TdHlsZUNs
YXNzTmFtZSwgcmVzb3VyY2UudHlwZV0sICIiLCAiIiwgcmVwcmVzZW50ZWRPYmplY3QgfHwgcmVz
b3VyY2UsIGZhbHNlKTsKIAogICAgICAgICB0aGlzLl91cGRhdGVSZXNvdXJjZShyZXNvdXJjZSk7
Ci19OworICAgIH0KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuU3R5bGVDbGFz
c05hbWUgPSAicmVzb3VyY2UiOwotV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuUmVz
b3VyY2VJY29uU3R5bGVDbGFzc05hbWUgPSAicmVzb3VyY2UtaWNvbiI7Ci1XZWJJbnNwZWN0b3Iu
UmVzb3VyY2VUcmVlRWxlbWVudC5GYWlsZWRTdHlsZUNsYXNzTmFtZSA9ICJmYWlsZWQiOworICAg
IC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5jb21wYXJlUmVz
b3VyY2VUcmVlRWxlbWVudHMgPSBmdW5jdGlvbihhLCBiKQorICAgIHN0YXRpYyBjb21wYXJlUmVz
b3VyY2VUcmVlRWxlbWVudHMoYSwgYikKICAgICB7CiAgICAgICAgIC8vIENvbXBhcmUgYnkgdHlw
ZSBmaXJzdCB0byBrZWVwIHJlc291cmNlcyBncm91cGVkIGJ5IHR5cGUgd2hlbiBub3Qgc29ydGVk
IGludG8gZm9sZGVycy4KICAgICAgICAgdmFyIGNvbXBhcmlzb25SZXN1bHQgPSBhLnJlc291cmNl
LnR5cGUubG9jYWxlQ29tcGFyZShiLnJlc291cmNlLnR5cGUpOwpAQCAtNTcsOSArNTcsOSBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5jb21wYXJlUmVzb3VyY2VUcmVlRWxlbWVu
dHMgPSBmdW5jdGlvbihhLCBiKQogCiAgICAgICAgIC8vIENvbXBhcmUgYnkgdGl0bGUgd2hlbiB0
aGUgc3VidGl0bGVzIGFyZSB0aGUgc2FtZS4KICAgICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmxv
Y2FsZUNvbXBhcmUoYi5tYWluVGl0bGUpOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVFbGVtZW50LmNvbXBhcmVGb2xkZXJBbmRSZXNvdXJjZVRyZWVFbGVtZW50cyA9IGZ1
bmN0aW9uKGEsIGIpCisgICAgc3RhdGljIGNvbXBhcmVGb2xkZXJBbmRSZXNvdXJjZVRyZWVFbGVt
ZW50cyhhLCBiKQogICAgIHsKICAgICAgICAgdmFyIGFJc0ZvbGRlciA9IGEgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuRm9sZGVyVHJlZUVsZW1lbnQ7CiAgICAgICAgIHZhciBiSXNGb2xkZXIgPSBi
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZvbGRlclRyZWVFbGVtZW50OwpAQCAtNzIsMzIgKzcy
LDI4IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LmNvbXBhcmVGb2xkZXJBbmRS
ZXNvdXJjZVRyZWVFbGVtZW50cyA9IGZ1bmN0aW9uCiAgICAgICAgICAgICByZXR1cm4gYS5tYWlu
VGl0bGUubG9jYWxlQ29tcGFyZShiLm1haW5UaXRsZSk7CiAKICAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LmNvbXBhcmVSZXNvdXJjZVRyZWVFbGVtZW50cyhh
LCBiKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQsCi0g
ICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCByZXNvdXJjZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
ZmlsdGVyYWJsZURhdGEoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHt0ZXh0OiB0aGlzLl9yZXNv
dXJjZS51cmx9OwotICAgIH0sCisgICAgfQogCi0gICAgb25kYmxjbGljazogZnVuY3Rpb24oKQor
ICAgIG9uZGJsY2xpY2soKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0Lm9w
ZW5Jbk5ld1RhYih0aGlzLl9yZXNvdXJjZS51cmwpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJvdGVjdGVkIChVc2VkIGJ5IEZyYW1lVHJlZUVsZW1lbnQpCiAKLSAgICBfdXBkYXRlUmVzb3Vy
Y2U6IGZ1bmN0aW9uKHJlc291cmNlKQorICAgIF91cGRhdGVSZXNvdXJjZShyZXNvdXJjZSkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLlJlc291cmNlKTsKIApAQCAtMTI1LDExICsxMjEsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291
cmNlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl91cGRhdGVUaXRsZXMo
KTsKICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKCk7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRv
b2xUaXAoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgX3VwZGF0
ZVRpdGxlczogZnVuY3Rpb24oKQorICAgIF91cGRhdGVUaXRsZXMoKQogICAgIHsKICAgICAgICAg
dmFyIGZyYW1lID0gdGhpcy5fcmVzb3VyY2UucGFyZW50RnJhbWU7CiAgICAgICAgIHZhciBpc01h
aW5SZXNvdXJjZSA9IHRoaXMuX3Jlc291cmNlLmlzTWFpblJlc291cmNlKCk7CkBAIC0xNTIsMTEg
KzE0OCwxMSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgaWYgKG9sZE1haW5UaXRsZSAhPT0gdGhpcy5tYWluVGl0bGUpCiAgICAgICAg
ICAgICB0aGlzLmNhbGxGaXJzdEFuY2VzdG9yRnVuY3Rpb24oImRlc2NlbmRhbnRSZXNvdXJjZVRy
ZWVFbGVtZW50TWFpblRpdGxlRGlkQ2hhbmdlIiwgW3RoaXMsIG9sZE1haW5UaXRsZV0pOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3VwZGF0ZVN0YXR1czogZnVuY3Rp
b24oKQorICAgIF91cGRhdGVTdGF0dXMoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3Jlc291
cmNlLmZhaWxlZCkKICAgICAgICAgICAgIHRoaXMuYWRkQ2xhc3NOYW1lKFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRyZWVFbGVtZW50LkZhaWxlZFN0eWxlQ2xhc3NOYW1lKTsKQEAgLTE3NCwyMCArMTcw
LDIwIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHZhciBzcGlubmVyID0gbmV3IFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJv
Z3Jlc3NTcGlubmVyOwogICAgICAgICAgICAgdGhpcy5zdGF0dXMgPSBzcGlubmVyLmVsZW1lbnQ7
CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVUb29sVGlwOiBmdW5jdGlv
bigpCisgICAgX3VwZGF0ZVRvb2xUaXAoKQogICAgIHsKICAgICAgICAgdGhpcy50b29sdGlwID0g
dGhpcy5fcmVzb3VyY2UudXJsOwotICAgIH0sCisgICAgfQogCi0gICAgX3VybERpZENoYW5nZTog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX3VybERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3VwZGF0ZVRpdGxlcygpOwogICAgICAgICB0aGlzLl91cGRhdGVUb29sVGlwKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdHlwZURpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAg
X3R5cGVEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLnJlbW92ZUNsYXNzTmFt
ZShldmVudC5kYXRhLm9sZFR5cGUpOwogICAgICAgICB0aGlzLmFkZENsYXNzTmFtZSh0aGlzLl9y
ZXNvdXJjZS50eXBlKTsKQEAgLTE5NSwzICsxOTEsNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuY2FsbEZpcnN0QW5jZXN0b3JG
dW5jdGlvbigiZGVzY2VuZGFudFJlc291cmNlVHJlZUVsZW1lbnRUeXBlRGlkQ2hhbmdlIiwgW3Ro
aXMsIGV2ZW50LmRhdGEub2xkVHlwZV0pOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5SZXNv
dXJjZVRyZWVFbGVtZW50LlJlc291cmNlSWNvblN0eWxlQ2xhc3NOYW1lID0gInJlc291cmNlLWlj
b24iOworV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQuRmFpbGVkU3R5bGVDbGFzc05h
bWUgPSAiZmFpbGVkIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCmluZGV4
IDIxNWIxODYuLmNmZTM3M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1J1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVsZXNTdHlsZURldGFpbHNQYW5lbC5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsMjMgKzIzLDE4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBmdW5jdGlvbigpCitX
ZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFJ1bGVzU3R5bGVEZXRh
aWxzUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuUnVs
ZXNTdHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSwgInJ1bGVzIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSdWxlcyIpKTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBz
dXBlcigicnVsZXMiLCAicnVsZXMiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJ1bGVzIikpOwog
CiAgICAgICAgIHRoaXMuX3NlY3Rpb25zID0gW107Ci19OwotCi1XZWJJbnNwZWN0b3IuUnVsZXNT
dHlsZURldGFpbHNQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJydWxlcyI7Ci1XZWJJbnNwZWN0b3Iu
UnVsZXNTdHlsZURldGFpbHNQYW5lbC5MYWJlbEVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJsYWJl
bCI7Ci1XZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5OZXdSdWxlRWxlbWVudFN0
eWxlQ2xhc3NOYW1lID0gIm5ldy1ydWxlIjsKLQotV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRh
aWxzUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUnVs
ZXNTdHlsZURldGFpbHNQYW5lbCwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHJlZnJl
c2g6IGZ1bmN0aW9uKHNpZ25pZmljYW50Q2hhbmdlKQorICAgIHJlZnJlc2goc2lnbmlmaWNhbnRD
aGFuZ2UpCiAgICAgewogICAgICAgICAvLyBXZSBvbmx5IG5lZWQgdG8gZG8gYSByZWJ1aWxkIG9u
IHNpZ25pZmljYW50IGNoYW5nZXMuIE90aGVyIGNoYW5nZXMgYXJlIGhhbmRsZWQKICAgICAgICAg
Ly8gYnkgdGhlIHNlY3Rpb25zIGFuZCB0ZXh0IGVkaXRvcnMgdGhlbXNlbHZlcy4KQEAgLTE1MCw3
ICsxNDUsNyBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgICAgIGlmICghdGhpcy5ub2RlU3R5bGVzLm5vZGUuaXNJblNoYWRvd1Ry
ZWUoKSkgewogICAgICAgICAgICAgICAgIHZhciBuZXdSdWxlQnV0dG9uID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICAgICAgbmV3UnVsZUJ1dHRvbi5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5OZXdSdWxlRWxlbWVudFN0
eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgICAgIG5ld1J1bGVCdXR0b24uY2xhc3NOYW1lID0g
Im5ldy1ydWxlIjsKICAgICAgICAgICAgICAgICBuZXdSdWxlQnV0dG9uLmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5fbmV3UnVsZUNsaWNrZWQuYmluZCh0aGlzKSk7CiAKICAgICAgICAg
ICAgICAgICBuZXdSdWxlQnV0dG9uLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImltZyIpKTsKQEAgLTE4OSw3ICsxODQsNyBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFp
bHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcHJlZml4RWxlbWVudC50ZXh0
Q29udGVudCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5oZXJpdGVkIEZyb206ICIpOwogCiAg
ICAgICAgICAgICAgICAgdmFyIGluaGVyaXRlZExhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgICAgICAgICAgICAgaW5oZXJpdGVkTGFiZWwuY2xhc3NOYW1lID0gV2Vi
SW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuTGFiZWxFbGVtZW50U3R5bGVDbGFzc05h
bWU7CisgICAgICAgICAgICAgICAgaW5oZXJpdGVkTGFiZWwuY2xhc3NOYW1lID0gImxhYmVsIjsK
ICAgICAgICAgICAgICAgICBpbmhlcml0ZWRMYWJlbC5hcHBlbmRDaGlsZChwcmVmaXhFbGVtZW50
KTsKICAgICAgICAgICAgICAgICBpbmhlcml0ZWRMYWJlbC5hcHBlbmRDaGlsZChXZWJJbnNwZWN0
b3IubGlua2lmeU5vZGVSZWZlcmVuY2Uoc3R5bGUubm9kZSkpOwogICAgICAgICAgICAgICAgIG5l
d0RPTUZyYWdtZW50LmFwcGVuZENoaWxkKGluaGVyaXRlZExhYmVsKTsKQEAgLTIxMiw3ICsyMDcs
NyBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICAgICAgICAgIHByZWZpeEVsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIk1lZGlhOiAiKTsKIAogICAgICAgICAgICAgICAgICAgICB2YXIgbWVkaWFM
YWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgICAgICAg
ICBtZWRpYUxhYmVsLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5SdWxlc1N0eWxlRGV0YWlsc1Bh
bmVsLkxhYmVsRWxlbWVudFN0eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgICAgICAgICBtZWRp
YUxhYmVsLmNsYXNzTmFtZSA9ICJsYWJlbCI7CiAgICAgICAgICAgICAgICAgICAgIG1lZGlhTGFi
ZWwuYXBwZW5kQ2hpbGQocHJlZml4RWxlbWVudCk7CiAgICAgICAgICAgICAgICAgICAgIG1lZGlh
TGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVkaWEudGV4dCkpOwog
CkBAIC0yNDQsMTEgKzIzOSwxMSBAQCBXZWJJbnNwZWN0b3IuUnVsZXNTdHlsZURldGFpbHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHByZXZpb3VzRm9jdXNlZFNlY3Rpb24pCiAg
ICAgICAgICAgICBwcmV2aW91c0ZvY3VzZWRTZWN0aW9uLmZvY3VzKCk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24o
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlw
ZS5zaG93bi5jYWxsKHRoaXMpOwogCkBAIC0yNTksOSArMjU0LDkgQEAgV2ViSW5zcGVjdG9yLlJ1
bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgc2VjdGlvbi5z
dHlsZS5fX3J1bGVzU2VjdGlvbiA9IHNlY3Rpb247CiAgICAgICAgICAgICBzZWN0aW9uLnVwZGF0
ZUxheW91dCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0
aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0
YWlsc1BhbmVsLnByb3RvdHlwZS5oaWRkZW4uY2FsbCh0aGlzKTsKIApAQCAtMjY5LDIxICsyNjQs
MTkgQEAgV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICAvLyB0byByZWxlYXNlIHRoZWlyIG9iamVjdHMgd2hlbiB0aGlzIHBhbmVsIGlzIG5v
dCB2aXNpYmxlLgogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxl
bmd0aDsgKytpKQogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NlY3Rpb25zW2ldLnN0eWxlLl9f
cnVsZXNTZWN0aW9uOwotICAgIH0sCisgICAgfQogCi0gICAgd2lkdGhEaWRDaGFuZ2U6IGZ1bmN0
aW9uKCkKKyAgICB3aWR0aERpZENoYW5nZSgpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHRoaXMuX3NlY3Rpb25zLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5fc2Vj
dGlvbnNbaV0udXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRl
CiAKLSAgICBfbmV3UnVsZUNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9uZXdSdWxlQ2xp
Y2tlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2ZvY3VzTmV4dE5ld0luc3BlY3RvclJ1
bGUgPSB0cnVlOwogICAgICAgICB0aGlzLm5vZGVTdHlsZXMuYWRkRW1wdHlSdWxlKCk7CiAgICAg
fQogfTsKLQotV2ViSW5zcGVjdG9yLlJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SdW5Mb29w
VGltZWxpbmVPdmVydmlld0dyYXBoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwppbmRleCAyZDMwMGNi
Li5mYWVkZTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9SdW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBoLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguanMKQEAgLTIzLDExICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBoID0g
ZnVuY3Rpb24odGltZWxpbmUpCitXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdH
cmFwaCA9IGNsYXNzIFJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3JhcGggZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
T3ZlcnZpZXdHcmFwaC5jYWxsKHRoaXMsIHRpbWVsaW5lKTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1l
bGluZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHRpbWVsaW5lKTsKIAotICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBo
LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInJ1
bmxvb3AiKTsKIAogICAgICAgICB0aGlzLl9ydW5Mb29wVGltZWxpbmUgPSB0aW1lbGluZTsKICAg
ICAgICAgdGhpcy5fdGltZWxpbmVSZWNvcmRGcmFtZXMgPSBbXTsKQEAgLTM3LDE0ICszOSw3IEBA
IFdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBoID0gZnVuY3Rpb24odGlt
ZWxpbmUpCiAgICAgICAgIHRoaXMuX3J1bkxvb3BUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fdGltZWxpbmVSZWNv
cmRBZGRlZCwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5yZXNldCgpOwotfTsKLQotV2ViSW5zcGVj
dG9yLlJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3JhcGguU3R5bGVDbGFzc05hbWUgPSAicnVubG9v
cCI7Ci1XZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5NYXhpbXVtR3Jh
cGhIZWlnaHRTZWNvbmRzID0gMC4wNTsKLQotV2ViSW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZU92
ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
UnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1Ymxp
YwogCkBAIC02MCw3ICs1NSw3IEBAIFdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVPdmVydmll
d0dyYXBoLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZ3JhcGhIZWlnaHRTZWNvbmRzID0g
bWF4aW11bUZyYW1lRHVyYXRpb24gKiAxLjE7ICAvLyBBZGQgMTAlIG1hcmdpbiBhYm92ZSBmcmFt
ZXMuCiAgICAgICAgIHRoaXMuX2dyYXBoSGVpZ2h0U2Vjb25kcyA9IE1hdGgubWluKHRoaXMuX2dy
YXBoSGVpZ2h0U2Vjb25kcywgV2ViSW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguTWF4aW11bUdyYXBoSGVpZ2h0U2Vjb25kcyk7CiAgICAgICAgIHJldHVybiB0aGlzLl9ncmFw
aEhlaWdodFNlY29uZHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICByZXNldCgpCiAgICAgewpAQCAt
NjksNyArNjQsNyBAQCBXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogCiAg
ICAgICAgIHRoaXMuX2ZyYW1lc1BlclNlY29uZERpdmlkZXJzLmNsZWFyKCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKQEAgLTEwMiw3ICs5Nyw3IEBAIFdlYklu
c3BlY3Rvci5SdW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX3VwZGF0ZURpdmlkZXJzKCk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKQEAgLTExMSw3ICsxMDYsNyBAQCBXZWJJbnNwZWN0b3IuUnVuTG9v
cFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2dyYXBo
SGVpZ2h0U2Vjb25kcyA9IE5hTjsKIAogICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBfdXBkYXRlRGl2aWRlcnMoKQogICAgIHsKQEAgLTE0Niw3ICsxNDEs
NyBAQCBXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgY3JlYXRlRGl2aWRlckF0UG9zaXRpb24uY2FsbCh0aGlzLCA2MCk7CiAg
ICAgICAgIGNyZWF0ZURpdmlkZXJBdFBvc2l0aW9uLmNhbGwodGhpcywgMzApOwotICAgIH0sCisg
ICAgfQogCiAgICAgX3VwZGF0ZUVsZW1lbnRQb3NpdGlvbihlbGVtZW50LCBuZXdQb3NpdGlvbiwg
cHJvcGVydHkpCiAgICAgewpAQCAtMTU4LDMgKzE1Myw1IEBAIFdlYkluc3BlY3Rvci5SdW5Mb29w
VGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGVsZW1lbnQu
c3R5bGVbcHJvcGVydHldID0gbmV3UG9zaXRpb24gKyAiJSI7CiAgICAgfQogfTsKKworV2ViSW5z
cGVjdG9yLlJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3JhcGguTWF4aW11bUdyYXBoSGVpZ2h0U2Vj
b25kcyA9IDAuMDU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TY29wZUJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Njb3BlQmFyLmpzCmluZGV4IGViZGM0NGYuLjQxNjEzOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njb3BlQmFyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njb3BlQmFyLmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMyw1MyArMjMsNDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuU2NvcGVCYXIgPSBmdW5jdGlvbihpZGVudGlmaWVyLCBpdGVtcywg
ZGVmYXVsdEl0ZW0pIHsKLSAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0uY2FsbCh0aGlz
LCBpZGVudGlmaWVyKTsKK1dlYkluc3BlY3Rvci5TY29wZUJhciA9IGNsYXNzIFNjb3BlQmFyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtCit7CisgICAgY29uc3RydWN0b3IoaWRl
bnRpZmllciwgaXRlbXMsIGRlZmF1bHRJdGVtKQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRp
Zmllcik7CiAKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNj
b3BlQmFyLlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJzY29wZS1iYXIiKTsKIAogICAgICAgICB0aGlzLl9pdGVtcyA9IGl0ZW1zOwogICAgICAg
ICB0aGlzLl9kZWZhdWx0SXRlbSA9IGRlZmF1bHRJdGVtOwogCiAgICAgICAgIHRoaXMuX2l0ZW1z
QnlJZCA9IFtdOwogICAgICAgICB0aGlzLl9wb3B1bGF0ZSgpOwotfTsKLQotV2ViSW5zcGVjdG9y
LlNjb3BlQmFyLlN0eWxlQ2xhc3NOYW1lID0gInNjb3BlLWJhciI7Ci1XZWJJbnNwZWN0b3IuU2Nv
cGVCYXIuRXZlbnQgPSB7Ci0gICAgU2VsZWN0aW9uQ2hhbmdlZDogInNjb3BlYmFyLXNlbGVjdGlv
bi1kaWQtY2hhbmdlIgotfTsKLQotV2ViSW5zcGVjdG9yLlNjb3BlQmFyLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNjb3BlQmFyLAorICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IGRlZmF1bHRJdGVtKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9kZWZhdWx0SXRlbTsKLSAgICB9LAorICAgIH0KIAotICAgIGl0ZW06IGZ1bmN0aW9uKGlk
KQorICAgIGl0ZW0oaWQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNCeUlkW2lk
XTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3RlZEl0ZW1zKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9pdGVtcy5maWx0ZXIoZnVuY3Rpb24oaXRlbSkgewogICAgICAgICAg
ICAgcmV0dXJuIGl0ZW0uc2VsZWN0ZWQ7CiAgICAgICAgIH0pOwotICAgIH0sCisgICAgfQogCi0g
ICAgaGFzTm9uRGVmYXVsdEl0ZW1TZWxlY3RlZDogZnVuY3Rpb24oKQorICAgIGhhc05vbkRlZmF1
bHRJdGVtU2VsZWN0ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zLnNvbWUo
ZnVuY3Rpb24oaXRlbSkgewogICAgICAgICAgICAgcmV0dXJuIGl0ZW0uc2VsZWN0ZWQgJiYgaXRl
bSAhPT0gdGhpcy5fZGVmYXVsdEl0ZW07CiAgICAgICAgIH0sIHRoaXMpOwotICAgIH0sCisgICAg
fQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbihleHBhbmRPbmx5KQorICAgIHVwZGF0ZUxh
eW91dChleHBhbmRPbmx5KQogICAgIHsKICAgICAgICAgaWYgKGV4cGFuZE9ubHkpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC04OCwxMSArODMsMTEgQEAgV2ViSW5zcGVjdG9yLlNjb3BlQmFyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICghaXNTZWxlY3RlZCkKICAgICAgICAgICAgICAg
ICBpdGVtLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVt
LlNlbGVjdGVkU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcml2YXRlCiAKLSAgICBfcG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBfcG9wdWxhdGUo
KQogICAgIHsKICAgICAgICAgdmFyIGl0ZW07CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
dGhpcy5faXRlbXMubGVuZ3RoOyArK2kpIHsKQEAgLTEwNSw5ICsxMDAsOSBAQCBXZWJJbnNwZWN0
b3IuU2NvcGVCYXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZEl0
ZW1zLmxlbmd0aCAmJiB0aGlzLl9kZWZhdWx0SXRlbSkKICAgICAgICAgICAgIHRoaXMuX2RlZmF1
bHRJdGVtLnNlbGVjdGVkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pdGVtU2VsZWN0
aW9uRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfaXRlbVNlbGVjdGlvbkRpZENoYW5n
ZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzZW5kZXIgPSBldmVudC50YXJnZXQ7CiAgICAg
ICAgIHZhciBpdGVtOwpAQCAtMTM4LDQgKzEzMyw2IEBAIFdlYkluc3BlY3Rvci5TY29wZUJhci5w
cm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlNjb3BlQmFyLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlOworV2Vi
SW5zcGVjdG9yLlNjb3BlQmFyLkV2ZW50ID0geworICAgIFNlbGVjdGlvbkNoYW5nZWQ6ICJzY29w
ZWJhci1zZWxlY3Rpb24tZGlkLWNoYW5nZSIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUJhckl0ZW0uanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY29wZUJhckl0ZW0uanMKaW5kZXggZjM0
MDZlOS4uNmU3ODRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2NvcGVCYXJJdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Njb3BlQmFySXRlbS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOSArMjMsMTEgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU2NvcGVC
YXJJdGVtID0gZnVuY3Rpb24oaWQsIGxhYmVsLCBpc0V4Y2x1c2l2ZSkgewotICAgIC8vIEZJWE1F
OiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2Fs
bCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKK1dlYklu
c3BlY3Rvci5TY29wZUJhckl0ZW0gPSBjbGFzcyBTY29wZUJhckl0ZW0gZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0Cit7CisgICAgY29uc3RydWN0b3IoaWQsIGxhYmVsLCBpc0V4Y2x1c2l2ZSkK
KyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5pZCA9IGlkOwogICAgICAg
ICB0aGlzLmxhYmVsID0gbGFiZWw7CkBAIC0zNCwxNSArMzYsNyBAQCBXZWJJbnNwZWN0b3IuU2Nv
cGVCYXJJdGVtID0gZnVuY3Rpb24oaWQsIGxhYmVsLCBpc0V4Y2x1c2l2ZSkgewogICAgICAgICB0
aGlzLl9zZWxlY3RlZFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoInNjb3BlYmFy
aXRlbS0iICsgaWQsIGZhbHNlKTsKIAogICAgICAgICB0aGlzLl9tYXJrRWxlbWVudFNlbGVjdGVk
KHRoaXMuX3NlbGVjdGVkU2V0dGluZy52YWx1ZSk7Ci19OwotCi1XZWJJbnNwZWN0b3IuU2NvcGVC
YXJJdGVtLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUgPSAic2VsZWN0ZWQiOwotV2ViSW5zcGVjdG9y
LlNjb3BlQmFySXRlbS5FdmVudCA9IHsKLSAgICBTZWxlY3Rpb25DaGFuZ2VkOiAic2NvcGUtYmFy
LWl0ZW0tc2VsZWN0aW9uLWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJbnNwZWN0b3IuU2NvcGVCYXJJ
dGVtLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNjb3BlQmFy
SXRlbSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNTQsMTkgKzQ4LDE5IEBAIFdlYklu
c3BlY3Rvci5TY29wZUJhckl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2NsaWNrZWQuYmluZCh0aGlzKSwg
ZmFsc2UpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9zZWxlY3RlZFNldHRpbmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0
ZWQoc2VsZWN0ZWQpCiAgICAgewogICAgICAgICB0aGlzLnNldFNlbGVjdGVkKHNlbGVjdGVkLCBm
YWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXRTZWxlY3RlZDogZnVuY3Rpb24oc2VsZWN0
ZWQsIHdpdGhNb2RpZmllcikKKyAgICBzZXRTZWxlY3RlZChzZWxlY3RlZCwgd2l0aE1vZGlmaWVy
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkU2V0dGluZy52YWx1ZSA9PT0gc2Vs
ZWN0ZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC03NiwyMyArNzAsMjcgQEAgV2ViSW5zcGVj
dG9yLlNjb3BlQmFySXRlbS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3NlbGVjdGVkU2V0
dGluZy52YWx1ZSA9IHNlbGVjdGVkOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0uRXZlbnQuU2VsZWN0aW9uQ2hhbmdlZCwg
e3dpdGhNb2RpZmllcn0pOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAg
X21hcmtFbGVtZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKHNlbGVjdGVkKQorICAgIF9tYXJrRWxlbWVu
dFNlbGVjdGVkKHNlbGVjdGVkKQogICAgIHsKICAgICAgICAgaWYgKHNlbGVjdGVkKQogICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNjb3BlQmFySXRl
bS5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbS5TZWxl
Y3RlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jbGlja2VkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfY2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciB3aXRo
TW9kaWZpZXIgPSAoZXZlbnQubWV0YUtleSAmJiAhZXZlbnQuY3RybEtleSAmJiAhZXZlbnQuYWx0
S2V5ICYmICFldmVudC5zaGlmdEtleSk7CiAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWQoIXRoaXMu
c2VsZWN0ZWQsIHdpdGhNb2RpZmllcik7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlNjb3Bl
QmFySXRlbS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5
cGU7CitXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUgPSAi
c2VsZWN0ZWQiOworCitXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtLkV2ZW50ID0geworICAgIFNl
bGVjdGlvbkNoYW5nZWQ6ICJzY29wZS1iYXItaXRlbS1zZWxlY3Rpb24tZGlkLWNoYW5nZSIKK307
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9T
Y29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Njb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4
IGMyY2JjMDEuLjBkMGIzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1Njb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Njb3BlQ2hhaW5EZXRhaWxz
U2lkZWJhclBhbmVsLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywyMSArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFy
UGFuZWwgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFy
UGFuZWwgPSBjbGFzcyBTY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdlYklu
c3BlY3Rvci5EZXRhaWxzU2lkZWJhclBhbmVsCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRldGFpbHNT
aWRlYmFyUGFuZWwuY2FsbCh0aGlzLCAic2NvcGUtY2hhaW4iLCBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNjb3BlIENoYWluIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2NvcGUgQ2hhaW4iKSwg
IkltYWdlcy9OYXZpZ2F0aW9uSXRlbVZhcmlhYmxlLnN2ZyIsICI1Iik7CisgICAgY29uc3RydWN0
b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoInNjb3BlLWNoYWluIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJTY29wZSBDaGFpbiIpLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjb3BlIENoYWlu
IiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1WYXJpYWJsZS5zdmciLCAiNSIpOwogCiAgICAgICAg
IHRoaXMuX2NhbGxGcmFtZSA9IG51bGw7CiAKICAgICAgICAgLy8gVXBkYXRlIG9uIGNvbnNvbGUg
cHJvbXB0IGV2YWwgYXMgb2JqZWN0cyBpbiB0aGUgc2NvcGUgY2hhaW4gbWF5IGhhdmUgY2hhbmdl
ZC4KICAgICAgICAgV2ViSW5zcGVjdG9yLnJ1bnRpbWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlJ1bnRpbWVNYW5hZ2VyLkV2ZW50LkRpZEV2YWx1YXRlLCB0aGlzLm5lZWRz
UmVmcmVzaCwgdGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRl
YmFyUGFuZWwuYXV0b0V4cGFuZFByb3BlcnRpZXMgPSBuZXcgU2V0OwotCi1XZWJJbnNwZWN0b3Iu
U2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwsCi0gICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUsCisgICAg
fQogCiAgICAgLy8gUHVibGljCiAKQEAgLTYwLDEyICs1NiwxMiBAQCBXZWJJbnNwZWN0b3IuU2Nv
cGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmNh
bGxGcmFtZSA9IGNhbGxGcmFtZVRvSW5zcGVjdDsKIAogICAgICAgICByZXR1cm4gISF0aGlzLmNh
bGxGcmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjYWxsRnJhbWUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NhbGxGcmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBj
YWxsRnJhbWUoY2FsbEZyYW1lKQogICAgIHsKQEAgLTc1LDcgKzcxLDcgQEAgV2ViSW5zcGVjdG9y
LlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fY2FsbEZyYW1lID0gY2FsbEZyYW1lOwogCiAgICAgICAgIHRoaXMubmVlZHNSZWZyZXNoKCk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICByZWZyZXNoKCkKICAgICB7CkBAIC0xODEsMTMgKzE3Nywx
MyBAQCBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICAvLyBXZSBuZWVkIGEgdGltZW91dCBpbiBwbGFjZSBpbiBjYXNlIHRoZXJl
IGFyZSBsb25nIHJ1bm5pbmcsIHBlbmRpbmcgYmFja2VuZCBkaXNwYXRjaGVzLiBUaGlzIGNhbiBo
YXBwZW4KICAgICAgICAgLy8gaWYgdGhlIGRlYnVnZ2VyIGlzIHBhdXNlZCBpbiBjb2RlIHRoYXQg
d2FzIGV4ZWN1dGVkIGZyb20gdGhlIGNvbnNvbGUuIFRoZSBjb25zb2xlIHdpbGwgYmUgd2FpdGlu
ZyBmb3IKICAgICAgICAgLy8gdGhlIHJlc3VsdCBvZiB0aGUgZXhlY3V0aW9uIGFuZCB3aXRob3V0
IGEgdGltZW91dCB3ZSB3b3VsZCBuZXZlciB1cGRhdGUgdGhlIHNjb3BlIHZhcmlhYmxlcy4KLSAg
ICAgICAgdmFyIGRlbGF5ID0gV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBh
bmVsLmF1dG9FeHBhbmRQcm9wZXJ0aWVzLnNpemUgPT09IDAgPyA1MCA6IDI1MDsKKyAgICAgICAg
dmFyIGRlbGF5ID0gV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLl9h
dXRvRXhwYW5kUHJvcGVydGllcy5zaXplID09PSAwID8gNTAgOiAyNTA7CiAgICAgICAgIHZhciB0
aW1lb3V0ID0gc2V0VGltZW91dChkZWxheWVkV29yay5iaW5kKHRoaXMpLCBkZWxheSk7CiAKICAg
ICAgICAgLy8gU2luY2UgT2JqZWN0VHJlZVZpZXcgcG9wdWxhdGVzIGFzeW5jaHJvbm91c2x5LCB3
ZSB3YW50IHRvIHdhaXQgdG8gcmVwbGFjZSB0aGUgZXhpc3RpbmcgY29udGVudAogICAgICAgICAv
LyB1bnRpbCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgYXN5bmNocm9ub3VzIHJlcXVlc3RzIGFyZSBj
b21wbGV0ZWQuIFRoaXMgcHJldmVudHMgc2V2ZXJlIGZsYXNoaW5nIHdoaWxlIHN0ZXBwaW5nLgog
ICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZGVsYXll
ZFdvcmsuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBfcHJvcGVydHlQYXRoSWRl
bnRpZmllckZvclRyZWVFbGVtZW50KGlkZW50aWZpZXIsIG9iamVjdFByb3BlcnR5VHJlZUVsZW1l
bnQpCiAgICAgewpAQCAtMTk5LDcgKzE5NSw3IEBAIFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0
YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsK
IAogICAgICAgICByZXR1cm4gaWRlbnRpZmllciArICItIiArIHByb3BlcnR5UGF0aC5mdWxsUGF0
aDsKLSAgICB9LAorICAgIH0KIAogICAgIF9vYmplY3RUcmVlQWRkSGFuZGxlcihpZGVudGlmaWVy
LCB0cmVlRWxlbWVudCkKICAgICB7CkBAIC0yMDcsOSArMjAzLDkgQEAgV2ViSW5zcGVjdG9yLlNj
b3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFw
cm9wZXJ0eVBhdGhJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlm
IChXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFyUGFuZWwuYXV0b0V4cGFuZFBy
b3BlcnRpZXMuaGFzKHByb3BlcnR5UGF0aElkZW50aWZpZXIpKQorICAgICAgICBpZiAoV2ViSW5z
cGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLl9hdXRvRXhwYW5kUHJvcGVydGll
cy5oYXMocHJvcGVydHlQYXRoSWRlbnRpZmllcikpCiAgICAgICAgICAgICB0cmVlRWxlbWVudC5l
eHBhbmQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIF9vYmplY3RUcmVlRXhwYW5kSGFuZGxlcihp
ZGVudGlmaWVyLCB0cmVlRWxlbWVudCkKICAgICB7CkBAIC0yMTcsOCArMjEzLDggQEAgV2ViSW5z
cGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKCFwcm9wZXJ0eVBhdGhJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQYW5lbC5hdXRvRXhw
YW5kUHJvcGVydGllcy5hZGQocHJvcGVydHlQYXRoSWRlbnRpZmllcik7Ci0gICAgfSwKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLlNjb3BlQ2hhaW5EZXRhaWxzU2lkZWJhclBhbmVsLl9hdXRvRXhwYW5k
UHJvcGVydGllcy5hZGQocHJvcGVydHlQYXRoSWRlbnRpZmllcik7CisgICAgfQogCiAgICAgX29i
amVjdFRyZWVDb2xsYXBzZUhhbmRsZXIoaWRlbnRpZmllciwgdHJlZUVsZW1lbnQpCiAgICAgewpA
QCAtMjI2LDYgKzIyMiw4IEBAIFdlYkluc3BlY3Rvci5TY29wZUNoYWluRGV0YWlsc1NpZGViYXJQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghcHJvcGVydHlQYXRoSWRlbnRpZmllcikK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRl
dGFpbHNTaWRlYmFyUGFuZWwuYXV0b0V4cGFuZFByb3BlcnRpZXMuZGVsZXRlKHByb3BlcnR5UGF0
aElkZW50aWZpZXIpOworICAgICAgICBXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRl
YmFyUGFuZWwuX2F1dG9FeHBhbmRQcm9wZXJ0aWVzLmRlbGV0ZShwcm9wZXJ0eVBhdGhJZGVudGlm
aWVyKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuU2NvcGVDaGFpbkRldGFpbHNTaWRlYmFy
UGFuZWwuX2F1dG9FeHBhbmRQcm9wZXJ0aWVzID0gbmV3IFNldDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdENvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVu
dFZpZXcuanMKaW5kZXggZjNhN2FiZC4uMDQzZjMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZpZXcuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0Q29udGVudFZp
ZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDExICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50VmlldyA9IGZ1bmN0aW9uKHNjcmlw
dCkKK1dlYkluc3BlY3Rvci5TY3JpcHRDb250ZW50VmlldyA9IGNsYXNzIFNjcmlwdENvbnRlbnRW
aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LmNhbGwodGhpcywgc2NyaXB0KTsKKyAgICBjb25zdHJ1Y3RvcihzY3JpcHQp
CisgICAgeworICAgICAgICBzdXBlcihzY3JpcHQpOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNjcmlwdCIpOwogCiAgICAgICAg
IC8vIEFwcGVuZCBhIHNwaW5uZXIgd2hpbGUgd2FpdGluZyBmb3IgX2NvbnRlbnRXaWxsUG9wdWxh
dGUuCiAgICAgICAgIHZhciBzcGlubmVyID0gbmV3IFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRl
UHJvZ3Jlc3NTcGlubmVyOwpAQCAtNjcsMjkgKzY5LDI0IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRD
b250ZW50VmlldyA9IGZ1bmN0aW9uKHNjcmlwdCkKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9IGZhbHNlOwogCiAgICAgICAgIFdlYkluc3BlY3Rv
ci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuU2V0dGluZy5FdmVudC5DaGFuZ2VkLCB0aGlzLl9zaG93SmF2YVNjcmlwdFR5
cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5T
Y3JpcHRDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJzY3JpcHQiOwotCi1XZWJJbnNwZWN0
b3IuU2NyaXB0Q29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgbmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbdGhpcy5fcHJl
dHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdh
dGlvbkl0ZW1dOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjcmlwdCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fc2NyaXB0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRleHRF
ZGl0b3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFZGl0b3I7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzKCkKICAgICB7
CkBAIC05OSwxMDQgKzk2LDEwNCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJv
dG90eXBlID0gewogICAgICAgICAvLyBJZiB0aGUgU291cmNlQ29kZVRleHRFZGl0b3IgaGFzIGFu
IGV4ZWN1dGlvbkxpbmVOdW1iZXIsIHdlIGNhbiBhc3N1bWUKICAgICAgICAgLy8gaXQgaXMgYWx3
YXlzIHRoZSBhY3RpdmUgY2FsbCBmcmFtZS4KICAgICAgICAgcmV0dXJuIFtXZWJJbnNwZWN0b3Iu
ZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZV07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBy
ZXZlYWxQb3NpdGlvbjogZnVuY3Rpb24ocG9zaXRpb24sIHRleHRSYW5nZVRvU2VsZWN0LCBmb3Jj
ZVVuZm9ybWF0dGVkKQorICAgIHJldmVhbFBvc2l0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1Nl
bGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iu
cmV2ZWFsUG9zaXRpb24ocG9zaXRpb24sIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0
dGVkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24o
KQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zaG93bigpOwotICAgIH0sCisgICAg
fQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX3RleHRFZGl0b3IuaGlkZGVuKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6
IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRv
ci5jbG9zZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihj
b29raWUpCisgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZS50
eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5SZXNvdXJjZTsKICAgICAg
ICAgY29va2llLnVybCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QudXJsOwotICAgIH0sCisgICAg
fQogCi0gICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICByZXN0b3Jl
RnJvbUNvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBpZiAoImxpbmVOdW1iZXIiIGluIGNv
b2tpZSAmJiAiY29sdW1uTnVtYmVyIiBpbiBjb29raWUpCiAgICAgICAgICAgICB0aGlzLnJldmVh
bFBvc2l0aW9uKG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uKGNvb2tpZS5saW5l
TnVtYmVyLCBjb29raWUuY29sdW1uTnVtYmVyKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c3VwcG9ydHNTYXZlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHNhdmVEYXRhKCkKICAgICB7CiAgICAgICAgIHZhciB1cmwgPSB0aGlzLl9z
Y3JpcHQudXJsIHx8ICJ3ZWItaW5zcGVjdG9yOi8vLyIgKyBlbmNvZGVVUkkodGhpcy5fc2NyaXB0
LmRpc3BsYXlOYW1lKSArICIuanMiOwogICAgICAgICByZXR1cm4ge3VybCwgY29udGVudDogdGhp
cy5fdGV4dEVkaXRvci5zdHJpbmd9OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRz
U2VhcmNoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IG51bWJlck9mU2VhcmNoUmVzdWx0cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fdGV4dEVkaXRvci5udW1iZXJPZlNlYXJjaFJlc3VsdHM7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgaGFzUGVyZm9ybWVkU2VhcmNoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90
ZXh0RWRpdG9yLmN1cnJlbnRTZWFyY2hRdWVyeSAhPT0gbnVsbDsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCBhdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQocmV2ZWFsKQogICAg
IHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5hdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFy
Y2hSZXN1bHQgPSByZXZlYWw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwZXJmb3JtU2VhcmNoOiBm
dW5jdGlvbihxdWVyeSkKKyAgICBwZXJmb3JtU2VhcmNoKHF1ZXJ5KQogICAgIHsKICAgICAgICAg
dGhpcy5fdGV4dEVkaXRvci5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNlYXJjaENsZWFyZWQ6IGZ1bmN0aW9uKCkKKyAgICBzZWFyY2hDbGVhcmVkKCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2VhcmNoQ2xlYXJlZCgpOwotICAgIH0sCisgICAg
fQogCi0gICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uOiBmdW5jdGlvbigpCisgICAgc2VhcmNo
UXVlcnlXaXRoU2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWRp
dG9yLnNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2
ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQorICAgIHJldmVh
bFByZXZpb3VzU2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAgICAgdGhpcy5f
dGV4dEVkaXRvci5yZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cyk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFuZ2VG
b2N1cykKKyAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAg
ICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3Vz
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVw
ZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnVwZGF0ZUxheW91
dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2NvbnRlbnRXaWxs
UG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50V2lsbFBvcHVsYXRlKGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3RleHRFZGl0b3IuZWxlbWVudC5wYXJlbnROb2Rl
ID09PSB0aGlzLmVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDcsNDUgKzIwNCw0
MyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAg
ICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fdGV4dEVkaXRvci5lbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9jb250ZW50RGlkUG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50RGlk
UG9wdWxhdGUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5h
dmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhbkJlRm9ybWF0dGVkKCk7
CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0
aGlzLl90ZXh0RWRpdG9yLmNhblNob3dUeXBlQW5ub3RhdGlvbnMoKTsKICAgICAgICAgdGhpcy5f
c2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9yLnNo
b3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZTsKLSAgICB9LAorICAgIH0K
IAotICAgIF90b2dnbGVQcmV0dHlQcmludDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RvZ2dsZVBy
ZXR0eVByaW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGFjdGl2YXRlZCA9ICF0aGlzLl9w
cmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZDsKICAgICAgICAgdGhpcy5f
dGV4dEVkaXRvci5mb3JtYXR0ZWQgPSBhY3RpdmF0ZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
dG9nZ2xlVHlwZUFubm90YXRpb25zOiBmdW5jdGlvbihldmVudCkKKyAgICBfdG9nZ2xlVHlwZUFu
bm90YXRpb25zKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci50b2dnbGVU
eXBlQW5ub3RhdGlvbnMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93SmF2YVNjcmlwdFR5
cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2hvd0ph
dmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYklu
c3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcudmFsdWU7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRDaGFuZ2U6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZShldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVk
ID0gdGhpcy5fdGV4dEVkaXRvci5mb3JtYXR0ZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZXhl
Y3V0aW9uTGluZU51bWJlckRpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2V4ZWN1dGlv
bkxpbmVOdW1iZXJEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVu
dGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9u
dW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9udW1i
ZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuTnVt
YmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3Iu
U2NyaXB0Q29udGVudFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250
ZW50Vmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZURhdGFHcmlkLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRhR3JpZC5qcwpp
bmRleCAwMjIzYTI4Li4wYzc2NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZURhdGFHcmlkLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdy
aWQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDIwICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlkID0gZnVuY3Rpb24o
dHJlZU91dGxpbmUsIGNvbHVtbnMsIGRlbGVnYXRlLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxi
YWNrKQorV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWQgPSBjbGFzcyBTY3JpcHRU
aW1lbGluZURhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQKIHsK
LSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5jYWxsKHRoaXMsIHRyZWVPdXRsaW5l
LCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjayk7Ci19Owot
Ci1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlkLAorICAgIGNv
bnN0cnVjdG9yKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBk
ZWxldGVDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHN1cGVyKHRyZWVPdXRsaW5lLCBjb2x1bW5z
LCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjayk7CisgICAgfQogCiAgICAg
Ly8gUHJvdGVjdGVkCiAKLSAgICBjYWxsRnJhbWVQb3BvdmVyQW5jaG9yRWxlbWVudDogZnVuY3Rp
b24oKQorICAgIGNhbGxGcmFtZVBvcG92ZXJBbmNob3JFbGVtZW50KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLnNlbGVjdGVkTm9kZS5lbGVtZW50V2l0aENvbHVtbklkZW50aWZpZXIoImxv
Y2F0aW9uIik7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdy
aWQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLnBy
b3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUuanMKaW5k
ZXggNjk1NWJkMS4uNGYyNDExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRh
R3JpZE5vZGUuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDUxICsyMyw0NCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlkTm9kZSA9
IGZ1bmN0aW9uKHNjcmlwdFRpbWVsaW5lUmVjb3JkLCBiYXNlU3RhcnRUaW1lLCByYW5nZVN0YXJ0
VGltZSwgcmFuZ2VFbmRUaW1lKQorV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWRO
b2RlID0gY2xhc3MgU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRh
R3JpZE5vZGUuY2FsbCh0aGlzLCBmYWxzZSwgbnVsbCk7CisgICAgY29uc3RydWN0b3Ioc2NyaXB0
VGltZWxpbmVSZWNvcmQsIGJhc2VTdGFydFRpbWUsIHJhbmdlU3RhcnRUaW1lLCByYW5nZUVuZFRp
bWUpCisgICAgeworICAgICAgICBzdXBlcihmYWxzZSwgbnVsbCk7CiAKICAgICAgICAgdGhpcy5f
cmVjb3JkID0gc2NyaXB0VGltZWxpbmVSZWNvcmQ7CiAgICAgICAgIHRoaXMuX2Jhc2VTdGFydFRp
bWUgPSBiYXNlU3RhcnRUaW1lIHx8IDA7CiAgICAgICAgIHRoaXMuX3JhbmdlU3RhcnRUaW1lID0g
cmFuZ2VTdGFydFRpbWUgfHwgMDsKICAgICAgICAgdGhpcy5fcmFuZ2VFbmRUaW1lID0gdHlwZW9m
IHJhbmdlRW5kVGltZSA9PT0gIm51bWJlciIgPyByYW5nZUVuZFRpbWUgOiBJbmZpbml0eTsKLX07
Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQg
d2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29u
c3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2Rl
KTsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLkljb25TdHlsZUNs
YXNzTmFtZSA9ICJpY29uIjsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWRO
b2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lRGF0YUdyaWROb2RlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5l
RGF0YUdyaWROb2RlLnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdl
dCByZWNvcmQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JlY29yZDsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCByZWNvcmRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBbdGhpcy5f
cmVjb3JkXTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBiYXNlU3RhcnRUaW1lKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9iYXNlU3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHJhbmdlU3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yYW5n
ZVN0YXJ0VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByYW5nZUVuZFRpbWUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JhbmdlRW5kVGltZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBkYXRhKCkKICAgICB7CkBAIC03Nyw5ICs3MCw5IEBAIFdlYkluc3BlY3Rvci5TY3Jp
cHRUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgcmV0dXJuIHtl
dmVudFR5cGU6IHRoaXMuX3JlY29yZC5ldmVudFR5cGUsIHN0YXJ0VGltZSwgc2VsZlRpbWU6IGR1
cmF0aW9uLCB0b3RhbFRpbWU6IGR1cmF0aW9uLAogICAgICAgICAgICAgYXZlcmFnZVRpbWU6IGR1
cmF0aW9uLCBjYWxsQ291bnQ6IDEsIGxvY2F0aW9uOiBjYWxsRnJhbWVPclNvdXJjZUNvZGVMb2Nh
dGlvbn07Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVSYW5nZVRpbWVzOiBmdW5jdGlvbihz
dGFydFRpbWUsIGVuZFRpbWUpCisgICAgdXBkYXRlUmFuZ2VUaW1lcyhzdGFydFRpbWUsIGVuZFRp
bWUpCiAgICAgewogICAgICAgICB2YXIgb2xkUmFuZ2VTdGFydFRpbWUgPSB0aGlzLl9yYW5nZVN0
YXJ0VGltZTsKICAgICAgICAgdmFyIG9sZFJhbmdlRW5kVGltZSA9IHRoaXMuX3JhbmdlRW5kVGlt
ZTsKQEAgLTEwNCwxMSArOTcsMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdy
aWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAob2xkU3RhcnRCb3VuZGFyeSAhPT0g
bmV3U3RhcnRCb3VuZGFyeSB8fCBvbGRFbmRCb3VuZGFyeSAhPT0gbmV3RW5kQm91bmRhcnkpCiAg
ICAgICAgICAgICB0aGlzLm5lZWRzUmVmcmVzaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgY3Jl
YXRlQ2VsbENvbnRlbnQ6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCisgICAgY3Jl
YXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCkKICAgICB7Ci0gICAgICAgIGNv
bnN0IGVtcHR5VmFsdWVQbGFjZWhvbGRlclN0cmluZyA9ICJcdTIwMTQiOworICAgICAgICB2YXIg
ZW1wdHlWYWx1ZVBsYWNlaG9sZGVyU3RyaW5nID0gIlx1MjAxNCI7CiAgICAgICAgIHZhciB2YWx1
ZSA9IHRoaXMuZGF0YVtjb2x1bW5JZGVudGlmaWVyXTsKIAogICAgICAgICBzd2l0Y2ggKGNvbHVt
bklkZW50aWZpZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFw
aC5qcwppbmRleCAzNzg3YTMzLi40YjIwYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGlt
ZWxpbmVPdmVydmlld0dyYXBoLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDExICsyMywxMyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZU92ZXJ2
aWV3R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZSkKK1dlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGlu
ZU92ZXJ2aWV3R3JhcGggPSBjbGFzcyBTY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGggZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoCiB7Ci0gICAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5jYWxsKHRoaXMsIHRpbWVsaW5lKTsKKyAgICBjb25zdHJ1
Y3Rvcih0aW1lbGluZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHRpbWVsaW5lKTsKIAotICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZU92ZXJ2
aWV3R3JhcGguU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgic2NyaXB0Iik7CiAKICAgICAgICAgdGhpcy5fc2NyaXB0VGltZWxpbmUgPSB0aW1lbGlu
ZTsKICAgICAgICAgdGhpcy5fc2NyaXB0VGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX3NjcmlwdFRpbWVsaW5lUmVj
b3JkQWRkZWQsIHRoaXMpOwpAQCAtMzUsMjYgKzM3LDIwIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRU
aW1lbGluZU92ZXJ2aWV3R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZSkKICAgICAgICAgdGhpcy5f
dGltZWxpbmVSZWNvcmRCYXJzID0gW107CiAKICAgICAgICAgdGhpcy5yZXNldCgpOwotfTsKLQot
V2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5TdHlsZUNsYXNzTmFtZSA9
ICJzY3JpcHQiOwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVPdmVydmlld0dyYXBoLnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5l
T3ZlcnZpZXdHcmFwaCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2
aWV3R3JhcGgucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgcmVzZXQ6
IGZ1bmN0aW9uKCkKKyAgICByZXNldCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZS5yZXNldC5jYWxsKHRoaXMpOwogCiAgICAgICAg
IHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFyTWFwID0gbmV3IE1hcDsKIAogICAgICAgICB0aGlzLmVs
ZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91
dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZS51cGRhdGVMYXlvdXQuY2FsbCh0
aGlzKTsKIApAQCAtODQsMTEgKzgwLDExIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZU92
ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVSZWNv
cmRCYXJzW3JlY29yZEJhckluZGV4XS5yZWNvcmRzID0gbnVsbDsKICAgICAgICAgICAgIHRoaXMu
X3RpbWVsaW5lUmVjb3JkQmFyc1tyZWNvcmRCYXJJbmRleF0uZWxlbWVudC5yZW1vdmUoKTsKICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3NjcmlwdFRp
bWVsaW5lUmVjb3JkQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zY3JpcHRUaW1lbGluZVJl
Y29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NjcmlwdFRpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lVmlldy5qcwppbmRleCBjM2E0ZDc3Li4zODg4OTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3Jp
cHRUaW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU2NyaXB0VGltZWxpbmVWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE1ICsyMywxNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1l
bGluZVZpZXcgPSBmdW5jdGlvbih0aW1lbGluZSkKK1dlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGlu
ZVZpZXcgPSBjbGFzcyBTY3JpcHRUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVWaWV3Cit7CisgICAgY29uc3RydWN0b3IodGltZWxpbmUpCiAgICAgewotICAgIFdlYklu
c3BlY3Rvci5UaW1lbGluZVZpZXcuY2FsbCh0aGlzLCB0aW1lbGluZSk7Ci0KICAgICAgICAgY29u
c29sZS5hc3NlcnQodGltZWxpbmUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
LlR5cGUuU2NyaXB0KTsKIAorICAgICAgICBzdXBlcih0aW1lbGluZSk7CisKICAgICAgICAgdGhp
cy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1l
bnRTZWxlY3RlZC5iaW5kKHRoaXMpOwogICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJl
ZU91dGxpbmUub25kZXNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50RGVzZWxlY3RlZC5iaW5kKHRo
aXMpOwotICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5UcmVlT3V0bGluZVN0eWxl
Q2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgic2NyaXB0Iik7CiAKICAgICAgICAgdmFyIGNvbHVtbnMgPSB7
bG9jYXRpb246IHt9LCBjYWxsQ291bnQ6IHt9LCBzdGFydFRpbWU6IHt9LCB0b3RhbFRpbWU6IHt9
LCBzZWxmVGltZToge30sIGF2ZXJhZ2VUaW1lOiB7fX07CiAKQEAgLTY3LDQzICs2OSwzNiBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3ID0gZnVuY3Rpb24odGltZWxpbmUpCiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyID0gInN0YXJ0VGltZSI7CiAg
ICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5T
b3J0T3JkZXIuQXNjZW5kaW5nOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRo
aXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzY3JpcHQiKTsKICAgICAgICAgdGhpcy5lbGVtZW50
LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwogCiAgICAgICAgIHRpbWVsaW5l
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVk
LCB0aGlzLl9zY3JpcHRUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKIAogICAgICAgICB0aGlz
Ll9wZW5kaW5nUmVjb3JkcyA9IFtdOwotfTsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5l
Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJzY3JpcHQiOwotV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVs
aW5lVmlldy5UcmVlT3V0bGluZVN0eWxlQ2xhc3NOYW1lID0gInNjcmlwdCI7Ci0KLVdlYkluc3Bl
Y3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVj
dG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgbmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZUxhYmVsKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZHMiKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLnNob3duKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46
IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQu
aGlkZGVuKCk7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5o
aWRkZW4uY2FsbCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVu
Y3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQuY2FsbCh0aGlzKTsKIApAQCAtMTIz
LDcgKzExOCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsK
QEAgLTE0OSwzOCArMTQ0LDM4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJv
dG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHBhdGhDb21wb25lbnRzOwot
ICAgIH0sCisgICAgfQogCi0gICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJz
OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3Rv
bUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUdy
aWQudHJlZUVsZW1lbnRNYXRjaGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRyZWVFbGVtZW50KTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgcmVzZXQoKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUucmVzZXQuY2FsbCh0
aGlzKTsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZXNldCgpOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICB0cmVlRWxlbWVudFBhdGhDb21wb25lbnRTZWxlY3Rl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0ZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQu
ZGF0YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LmdlbmVy
YWxUcmVlRWxlbWVudCk7CiAgICAgICAgIGlmICghZGF0YUdyaWROb2RlKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBkYXRhR3JpZE5vZGUucmV2ZWFsQW5kU2VsZWN0KCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBkYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudDogZnVuY3Rpb24odHJlZUVs
ZW1lbnQpCisgICAgZGF0YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpCiAgICAg
ewogICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvZmls
ZU5vZGVUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVOb2RlRGF0YUdyaWROb2RlKHRyZWVFbGVtZW50LnByb2ZpbGVOb2RlLCB0aGlzLnplcm9U
aW1lLCB0aGlzLnN0YXJ0VGltZSwgdGhpcy5lbmRUaW1lKTsKICAgICAgICAgcmV0dXJuIG51bGw7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwb3B1bGF0ZVByb2ZpbGVOb2RlVHJlZUVsZW1lbnQ6IGZ1
bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIHBvcHVsYXRlUHJvZmlsZU5vZGVUcmVlRWxlbWVudCh0
cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIHZhciB6ZXJvVGltZSA9IHRoaXMuemVyb1RpbWU7
CiAgICAgICAgIHZhciBzdGFydFRpbWUgPSB0aGlzLnN0YXJ0VGltZTsKQEAgLTE5MSwxMSArMTg2
LDExIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdmFyIHByb2ZpbGVOb2RlRGF0YUdyaWROb2RlID0gbmV3IFdlYkluc3BlY3Rvci5Q
cm9maWxlTm9kZURhdGFHcmlkTm9kZShjaGlsZFByb2ZpbGVOb2RlLCB6ZXJvVGltZSwgc3RhcnRU
aW1lLCBlbmRUaW1lKTsKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZFJvd0luU29ydE9y
ZGVyKHByb2ZpbGVOb2RlVHJlZUVsZW1lbnQsIHByb2ZpbGVOb2RlRGF0YUdyaWROb2RlLCB0cmVl
RWxlbWVudCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9wcm9jZXNzUGVuZGluZ1JlY29yZHM6IGZ1bmN0aW9uKCkKKyAgICBfcHJvY2Vzc1BlbmRp
bmdSZWNvcmRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1JlY29yZHMubGVu
Z3RoKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjI0LDkgKzIxOSw5IEBAIFdlYkluc3BlY3Rv
ci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAg
dGhpcy5fcGVuZGluZ1JlY29yZHMgPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zY3JpcHRU
aW1lbGluZVJlY29yZEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2NyaXB0VGltZWxpbmVS
ZWNvcmRBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzY3JpcHRUaW1lbGluZVJlY29y
ZCA9IGV2ZW50LmRhdGEucmVjb3JkOwogICAgICAgICBjb25zb2xlLmFzc2VydChzY3JpcHRUaW1l
bGluZVJlY29yZCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZCk7
CkBAIC0yMzQsMjUgKzIyOSwyNSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fcGVuZGluZ1JlY29yZHMucHVzaChzY3JpcHRUaW1l
bGluZVJlY29yZCk7CiAKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2RhdGFHcmlkRmlsdGVyc0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAg
X2RhdGFHcmlkRmlsdGVyc0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC51cGRhdGVGaWx0ZXIoKTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9kYXRhR3JpZE5vZGVTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFH
cmlkTm9kZVNlbGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhD
b21wb25lbnRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudERl
c2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF90cmVlRWxlbWVudERlc2VsZWN0
ZWQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAodHJlZUVsZW1lbnQuc3RhdHVzKQog
ICAgICAgICAgICAgdHJlZUVsZW1lbnQuc3RhdHVzID0gIiI7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfdHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlV
c2VyKQorICAgIF90cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNl
cikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZC5zaG91bGRJZ25vcmVTZWxlY3Rp
b25FdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjc4LDkgKzI3Myw5IEBAIFdlYklu
c3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIFdlYklu
c3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93T3JpZ2luYWxPckZvcm1hdHRlZFNvdXJj
ZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pOwogICAgICAgICB0aGlzLl91cGRhdGVU
cmVlRWxlbWVudFdpdGhDbG9zZUJ1dHRvbih0cmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfdXBkYXRlVHJlZUVsZW1lbnRXaXRoQ2xvc2VCdXR0b246IGZ1bmN0aW9uKHRyZWVFbGVt
ZW50KQorICAgIF91cGRhdGVUcmVlRWxlbWVudFdpdGhDbG9zZUJ1dHRvbih0cmVlRWxlbWVudCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jbG9zZVN0YXR1c0J1dHRvbikgewogICAgICAgICAg
ICAgdHJlZUVsZW1lbnQuc3RhdHVzID0gdGhpcy5fY2xvc2VTdGF0dXNCdXR0b24uZWxlbWVudDsK
QEAgLTI5Myw5ICsyODgsOSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCA9PT0gdGhpcy5uYXZpZ2F0aW9u
U2lkZWJhclRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICAgICAg
dGhpcy5fdXBkYXRlVHJlZUVsZW1lbnRXaXRoQ2xvc2VCdXR0b24odHJlZUVsZW1lbnQpOwogICAg
ICAgICB9LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nsb3NlU3RhdHVzQnV0
dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2Nsb3NlU3RhdHVzQnV0dG9uQ2xpY2tl
ZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGlu
ZS5zZWxlY3RlZFRyZWVFbGVtZW50LmRlc2VsZWN0KCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci50
aW1lbGluZVNpZGViYXJQYW5lbC5zaG93VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUodGhpcy5yZXBy
ZXNlbnRlZE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TY3JpcHRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRyZWVFbGVtZW50LmpzCmluZGV4IDkyMGNmYTIu
LmI4M2QyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NjcmlwdFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMSArMjMsMTMgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
U2NyaXB0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzY3JpcHQpCitXZWJJbnNwZWN0b3IuU2NyaXB0
VHJlZUVsZW1lbnQgPSBjbGFzcyBTY3JpcHRUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3RvcihzY3JpcHQpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChzY3JpcHQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U2NyaXB0KTsKIAotICAgIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQuY2FsbCh0
aGlzLCBzY3JpcHQsIFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFt
ZSwgbnVsbCwgbnVsbCwgc2NyaXB0LCBmYWxzZSk7CisgICAgICAgIHN1cGVyKHNjcmlwdCwgInNj
cmlwdCIsIG51bGwsIG51bGwsIHNjcmlwdCwgZmFsc2UpOwogCiAgICAgICAgIHRoaXMubWFpblRp
dGxlID0gc2NyaXB0LmRpc3BsYXlOYW1lOwogCkBAIC00NCwxMyArNDYsNyBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihzY3JpcHQpCiAgICAgICAgICAgICB0aGlz
LmFkZENsYXNzTmFtZShXZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQuQW5vbnltb3VzU2Ny
aXB0SWNvblN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLl9zY3JpcHQgPSBzY3JpcHQ7
Ci19OwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0VHJlZUVsZW1lbnQuQW5vbnltb3VzU2NyaXB0SWNv
blN0eWxlQ2xhc3NOYW1lID0gImFub255bW91cy1zY3JpcHQtaWNvbiI7Ci1XZWJJbnNwZWN0b3Iu
U2NyaXB0VHJlZUVsZW1lbnQuU3R5bGVDbGFzc05hbWUgPSAic2NyaXB0IjsKLQotV2ViSW5zcGVj
dG9yLlNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCkBA
IC02MCw0ICs1Niw0IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudC5wcm90b3R5cGUg
PSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50LnByb3RvdHlw
ZTsKK1dlYkluc3BlY3Rvci5TY3JpcHRUcmVlRWxlbWVudC5Bbm9ueW1vdXNTY3JpcHRJY29uU3R5
bGVDbGFzc05hbWUgPSAiYW5vbnltb3VzLXNjcmlwdC1pY29uIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaEJhci5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJjaEJhci5qcwppbmRleCA4
NWQ0NGRiLi40Zjc4ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TZWFyY2hCYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU2VhcmNoQmFyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMiArMjMsMTUgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU2VhcmNoQmFy
ID0gZnVuY3Rpb24oaWRlbnRpZmllciwgcGxhY2Vob2xkZXIsIGRlbGVnYXRlKSB7Ci0gICAgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtLmNhbGwodGhpcywgaWRlbnRpZmllcik7CitXZWJJbnNw
ZWN0b3IuU2VhcmNoQmFyID0gY2xhc3MgU2VhcmNoQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5h
dmlnYXRpb25JdGVtCit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgcGxhY2Vob2xkZXIs
IGRlbGVnYXRlKQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllcik7CiAKICAgICAgICAg
dGhpcy5kZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCi0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKFdlYkluc3BlY3Rvci5TZWFyY2hCYXIuU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNlYXJjaC1iYXIiKTsKIAogICAgICAgICB0aGlzLl9r
ZXlib2FyZFNob3J0Y3V0RXNjID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KG51
bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5Fc2NhcGUpOwogICAgICAgICB0
aGlzLl9rZXlib2FyZFNob3J0Y3V0RW50ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQobnVsbCwgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuS2V5LkVudGVyKTsKQEAg
LTQyLDQyICs0NSwzNCBAQCBXZWJJbnNwZWN0b3IuU2VhcmNoQmFyID0gZnVuY3Rpb24oaWRlbnRp
ZmllciwgcGxhY2Vob2xkZXIsIGRlbGVnYXRlKSB7CiAgICAgICAgIHRoaXMuX3NlYXJjaElucHV0
LnNldEF0dHJpYnV0ZSgicGxhY2Vob2xkZXIiLCBwbGFjZWhvbGRlcik7CiAgICAgICAgIHRoaXMu
X3NlYXJjaElucHV0LmFkZEV2ZW50TGlzdGVuZXIoInNlYXJjaCIsIHRoaXMuX2hhbmRsZVNlYXJj
aEV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKICAgICAgICAgdGhpcy5fc2VhcmNoSW5wdXQuYWRk
RXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2hhbmRsZUtleWRvd25FdmVudC5iaW5kKHRo
aXMpLCBmYWxzZSk7Ci19OwotCi1XZWJJbnNwZWN0b3IuU2VhcmNoQmFyLlN0eWxlQ2xhc3NOYW1l
ID0gInNlYXJjaC1iYXIiOwotV2ViSW5zcGVjdG9yLlNlYXJjaEJhci5FdmVudCA9IHsKLSAgICBU
ZXh0Q2hhbmdlZDogInNlYXJjaGJhci10ZXh0LWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJbnNwZWN0
b3IuU2VhcmNoQmFyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlNlYXJjaEJhciwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0ZXh0KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zZWFyY2hJbnB1dC52YWx1ZTsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCB0ZXh0KG5ld1RleHQpCiAgICAgewogICAgICAgICB0aGlzLl9zZWFyY2hJ
bnB1dC52YWx1ZSA9IG5ld1RleHQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb2N1czogZnVuY3Rp
b24oKQorICAgIGZvY3VzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3NlYXJjaElucHV0LmZvY3Vz
KCk7CiAgICAgICAgIHRoaXMuX3NlYXJjaElucHV0LnNlbGVjdCgpOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2hhbmRsZVNlYXJjaEV2ZW50OiBmdW5jdGlvbihldmVu
dCkKKyAgICBfaGFuZGxlU2VhcmNoRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2VhcmNoQmFyLkV2ZW50LlRleHRD
aGFuZ2VkKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVLZXlkb3duRXZlbnQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9oYW5kbGVLZXlkb3duRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVzYy5tYXRjaGVzRXZlbnQoZXZlbnQpKSB7CiAg
ICAgICAgICAgICBpZiAodGhpcy5kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5zZWFy
Y2hCYXJXYW50c1RvTG9zZUZvY3VzID09PSAiZnVuY3Rpb24iKSB7CkBAIC05NSw0ICs5MCw2IEBA
IFdlYkluc3BlY3Rvci5TZWFyY2hCYXIucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYklu
c3BlY3Rvci5TZWFyY2hCYXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uSXRlbS5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuU2VhcmNoQmFyLkV2ZW50ID0gewor
ICAgIFRleHRDaGFuZ2VkOiAic2VhcmNoYmFyLXRleHQtZGlkLWNoYW5nZSIKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWFyY2hSZXN1
bHRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NlYXJjaFJlc3VsdFRyZWVFbGVtZW50LmpzCmluZGV4IDY3YTM4ZTUuLjE0NGVmMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlYXJj
aFJlc3VsdFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NlYXJjaFJlc3VsdFRyZWVFbGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzNCArMjMsMjIgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
U2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dl
Ykluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudCA9IGNsYXNzIFNlYXJjaFJlc3VsdFRy
ZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudAoreworICAg
IGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRE9NU2VhcmNo
TWF0Y2hPYmplY3QgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVNlYXJjaE1hdGNoT2JqZWN0KTsKIAogICAgICAgICB2YXIgdGl0bGUgPSBXZWJJ
bnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQudHJ1bmNhdGVBbmRIaWdobGlnaHRUaXRs
ZShyZXByZXNlbnRlZE9iamVjdC50aXRsZSwgcmVwcmVzZW50ZWRPYmplY3Quc2VhcmNoVGVybSwg
cmVwcmVzZW50ZWRPYmplY3Quc291cmNlQ29kZVRleHRSYW5nZSk7CiAKLSAgICBXZWJJbnNwZWN0
b3IuR2VuZXJhbFRyZWVFbGVtZW50LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QuY2xhc3NO
YW1lLCB0aXRsZSwgbnVsbCwgcmVwcmVzZW50ZWRPYmplY3QsIGZhbHNlKTsKKyAgICAgICAgc3Vw
ZXIocmVwcmVzZW50ZWRPYmplY3QuY2xhc3NOYW1lLCB0aXRsZSwgbnVsbCwgcmVwcmVzZW50ZWRP
YmplY3QsIGZhbHNlKTsKKwogICAgICAgICB0aGlzLnNtYWxsID0gdHJ1ZTsKLX07Ci0KLVdlYklu
c3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5DaGFyYWN0ZXJzVG9TaG93QmVmb3JlU2Vh
cmNoTWF0Y2ggPSAxNTsKLVdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5DaGFy
YWN0ZXJzVG9TaG93QWZ0ZXJTZWFyY2hNYXRjaCA9IDUwOwotV2ViSW5zcGVjdG9yLlNlYXJjaFJl
c3VsdFRyZWVFbGVtZW50LkhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUgPSAiaGlnaGxpZ2h0ZWQi
OwotCi1XZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQsCi0K
LSAgICAvLyBQdWJsaWMKLQotICAgIGdldCBmaWx0ZXJhYmxlRGF0YSgpCi0gICAgewotICAgICAg
ICByZXR1cm4ge3RleHQ6IHRoaXMucmVwcmVzZW50ZWRPYmplY3QudGl0bGV9OwogICAgIH0KLX07
CiAKLVdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5wcm90b3R5cGU7CisgICAgLy8g
U3RhdGljCiAKLVdlYkluc3BlY3Rvci5TZWFyY2hSZXN1bHRUcmVlRWxlbWVudC50cnVuY2F0ZUFu
ZEhpZ2hsaWdodFRpdGxlID0gZnVuY3Rpb24odGl0bGUsIHNlYXJjaFRlcm0sIHNvdXJjZUNvZGVU
ZXh0UmFuZ2UpCisgICAgc3RhdGljIHRydW5jYXRlQW5kSGlnaGxpZ2h0VGl0bGUodGl0bGUsIHNl
YXJjaFRlcm0sIHNvdXJjZUNvZGVUZXh0UmFuZ2UpCiAgICAgewogICAgICAgICAvLyBVc2UgdGhl
IG9yaWdpbmFsIGxvY2F0aW9uLCBzaW5jZSB0aG9zZSBsaW5lL2NvbHVtbiBvZmZzZXRzIG1hdGNo
IHRoZSBsaW5lIHRleHQgaW4gdGl0bGUuCiAgICAgICAgIHZhciB0ZXh0UmFuZ2UgPSBzb3VyY2VD
b2RlVGV4dFJhbmdlLnRleHRSYW5nZTsKQEAgLTc5LDExICs2NywyMiBAQCBXZWJJbnNwZWN0b3Iu
U2VhcmNoUmVzdWx0VHJlZUVsZW1lbnQudHJ1bmNhdGVBbmRIaWdobGlnaHRUaXRsZSA9IGZ1bmN0
aW9uKHRpdGxlLAogICAgICAgICBoaWdobGlnaHRlZFRpdGxlLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKG1vZGlmaWVkVGl0bGUuc3Vic3RyaW5nKDAsIHNlYXJjaFRlcm1JbmRl
eCkpKTsKIAogICAgICAgICB2YXIgaGlnaGxpZ2h0U3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKLSAgICBoaWdobGlnaHRTcGFuLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5T
ZWFyY2hSZXN1bHRUcmVlRWxlbWVudC5IaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lOworICAgICAg
ICBoaWdobGlnaHRTcGFuLmNsYXNzTmFtZSA9ICJoaWdobGlnaHRlZCI7CiAgICAgICAgIGhpZ2hs
aWdodFNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobW9kaWZpZWRUaXRs
ZS5zdWJzdHJpbmcoc2VhcmNoVGVybUluZGV4LCBzZWFyY2hUZXJtSW5kZXggKyBzZWFyY2hUZXJt
Lmxlbmd0aCkpKTsKICAgICAgICAgaGlnaGxpZ2h0ZWRUaXRsZS5hcHBlbmRDaGlsZChoaWdobGln
aHRTcGFuKTsKIAogICAgICAgICBoaWdobGlnaHRlZFRpdGxlLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKG1vZGlmaWVkVGl0bGUuc3Vic3RyaW5nKHNlYXJjaFRlcm1JbmRleCAr
IHNlYXJjaFRlcm0ubGVuZ3RoKSkpOwogCiAgICAgICAgIHJldHVybiBoaWdobGlnaHRlZFRpdGxl
OworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IGZpbHRlcmFibGVEYXRhKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiB7dGV4dDogdGhpcy5yZXByZXNlbnRlZE9iamVjdC50aXRsZX07
CisgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlNlYXJjaFJlc3VsdFRyZWVFbGVtZW50LkNoYXJh
Y3RlcnNUb1Nob3dCZWZvcmVTZWFyY2hNYXRjaCA9IDE1OworV2ViSW5zcGVjdG9yLlNlYXJjaFJl
c3VsdFRyZWVFbGVtZW50LkNoYXJhY3RlcnNUb1Nob3dBZnRlclNlYXJjaE1hdGNoID0gNTA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWN0
aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2VjdGlv
bi5qcwppbmRleCAxZTY0Y2YyLi41OTk4MjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlY3Rpb24uanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwICsyMywxMSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5T
ZWN0aW9uID0gZnVuY3Rpb24odGl0bGUsIHN1YnRpdGxlKQorV2ViSW5zcGVjdG9yLlNlY3Rpb24g
PSBjbGFzcyBTZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAg
ICBjb25zdHJ1Y3Rvcih0aXRsZSwgc3VidGl0bGUpCisgICAgeworICAgICAgICBzdXBlcigpOwog
CiAgICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NOYW1lID0gInNlY3Rpb24iOwpAQCAtNTcsMTcgKzU4
LDE0IEBAIFdlYkluc3BlY3Rvci5TZWN0aW9uID0gZnVuY3Rpb24odGl0bGUsIHN1YnRpdGxlKQog
CiAgICAgICAgIGlmICghdGhpcy5oZWFkZXJFbGVtZW50KQogICAgICAgICAgICAgdGhpcy5leHBh
bmQoKTsKLX07CisgICAgfQogCi1XZWJJbnNwZWN0b3IuU2VjdGlvbi5FdmVudCA9IHsKLSAgICBW
aXNpYmxlQ29udGVudERpZENoYW5nZTogInNlY3Rpb24tdmlzaWJsZS1jb250ZW50LWRpZC1jaGFu
Z2UiCi19OworICAgIC8vIFB1YmxpYwogCi1XZWJJbnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUg
PSB7CiAgICAgZ2V0IHRpdGxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90aXRsZTsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCB0aXRsZSh4KQogICAgIHsKQEAgLTgwLDEyICs3OCwx
MiBAQCBXZWJJbnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlz
LnRpdGxlRWxlbWVudC5hcHBlbmRDaGlsZCh4KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
dGhpcy50aXRsZUVsZW1lbnQudGV4dENvbnRlbnQgPSB4OwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHN1YnRpdGxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdWJ0aXRsZTsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCBzdWJ0aXRsZSh4KQogICAgIHsKQEAgLTkzLDcgKzkxLDcg
QEAgV2ViSW5zcGVjdG9yLlNlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB0aGlzLl9zdWJ0aXRsZSA9IHg7CiAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVt
ZW50LnRleHRDb250ZW50ID0geDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdWJ0aXRsZUFz
VGV4dEZvclRlc3QoKQogICAgIHsKQEAgLTEwNSwxMiArMTAzLDEyIEBAIFdlYkluc3BlY3Rvci5T
ZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGlua0RhdGE7
CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBleHBhbmRlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZXhwYW5kZWQ7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBzZXQgZXhwYW5kZWQoeCkKICAgICB7CkBAIC0xMTgsMTIgKzEx
NiwxMiBAQCBXZWJJbnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0
aGlzLmV4cGFuZCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLmNvbGxhcHNlKCk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcG9wdWxhdGVkKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9wb3B1bGF0ZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcG9wdWxhdGVk
KHgpCiAgICAgewpAQCAtMTMyLDEyICsxMzAsMTIgQEAgV2ViSW5zcGVjdG9yLlNlY3Rpb24ucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5vbnBvcHVsYXRlKCk7CiAgICAgICAgICAgICB0
aGlzLl9wb3B1bGF0ZWQgPSB0cnVlOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBv
bnBvcHVsYXRlOiBmdW5jdGlvbigpCisgICAgb25wb3B1bGF0ZSgpCiAgICAgewogICAgICAgICAv
LyBPdmVycmlkZW4gYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmaXJz
dFNpYmxpbmcoKQogICAgIHsKQEAgLTE1Myw3ICsxNTEsNyBAQCBXZWJJbnNwZWN0b3IuU2VjdGlv
bi5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBsYXN0U2libGluZygpCiAgICAgewpAQCAtMTY5LDcgKzE2Nyw3
IEBAIFdlYkluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5leHRTaWJsaW5nKCkK
ICAgICB7CkBAIC0xNzksNyArMTc3LDcgQEAgV2ViSW5zcGVjdG9yLlNlY3Rpb24ucHJvdG90eXBl
ID0gewogICAgICAgICB9IHdoaWxlIChjdXJFbGVtZW50ICYmICFjdXJFbGVtZW50Ll9zZWN0aW9u
KTsKIAogICAgICAgICByZXR1cm4gY3VyRWxlbWVudCA/IGN1ckVsZW1lbnQuX3NlY3Rpb24gOiBu
dWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByZXZpb3VzU2libGluZygpCiAgICAgewpA
QCAtMTg5LDkgKzE4Nyw5IEBAIFdlYkluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfSB3aGlsZSAoY3VyRWxlbWVudCAmJiAhY3VyRWxlbWVudC5fc2VjdGlvbik7CiAKICAg
ICAgICAgcmV0dXJuIGN1ckVsZW1lbnQgPyBjdXJFbGVtZW50Ll9zZWN0aW9uIDogbnVsbDsKLSAg
ICB9LAorICAgIH0KIAotICAgIGV4cGFuZDogZnVuY3Rpb24oKQorICAgIGV4cGFuZCgpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fZXhwYW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0y
MDMsMjYgKzIwMSwyOCBAQCBXZWJJbnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB0aGlzLl9wb3B1bGF0ZWQgPSB0cnVlOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TZWN0aW9uLkV2
ZW50LlZpc2libGVDb250ZW50RGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbGxh
cHNlOiBmdW5jdGlvbigpCisgICAgY29sbGFwc2UoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9leHBhbmRlZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fZXhwYW5kZWQg
PSBmYWxzZTsKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZGVk
Iik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0b2dnbGVFeHBhbmRlZDogZnVuY3Rpb24oKQorICAg
IHRvZ2dsZUV4cGFuZGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuZXhwYW5kZWQgPSAhdGhpcy5l
eHBhbmRlZDsKLSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbihlKQor
ICAgIGhhbmRsZUNsaWNrKGUpCiAgICAgewogICAgICAgICB0aGlzLnRvZ2dsZUV4cGFuZGVkKCk7
CiAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9y
LlNlY3Rpb24ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90
eXBlOworV2ViSW5zcGVjdG9yLlNlY3Rpb24uRXZlbnQgPSB7CisgICAgVmlzaWJsZUNvbnRlbnRE
aWRDaGFuZ2U6ICJzZWN0aW9uLXZpc2libGUtY29udGVudC1kaWQtY2hhbmdlIgorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyLmpz
CmluZGV4IGI4MmJjN2MuLjZjMjE2YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NpZGViYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2lkZWJhci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTUgKzIzLDE3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNpZGVi
YXIgPSBmdW5jdGlvbihlbGVtZW50LCBzaWRlLCBzaWRlYmFyUGFuZWxzLCByb2xlLCBsYWJlbCkg
ewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1
YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKK1dlYkluc3BlY3Rvci5TaWRlYmFyID0gY2xhc3MgU2lkZWJhciBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3RvcihlbGVtZW50LCBzaWRlLCBzaWRl
YmFyUGFuZWxzLCByb2xlLCBsYWJlbCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoIXNpZGUgfHwgc2lkZSA9PT0gV2ViSW5zcGVjdG9yLlNpZGViYXIu
U2lkZXMuTGVmdCB8fCBzaWRlID09PSBXZWJJbnNwZWN0b3IuU2lkZWJhci5TaWRlcy5SaWdodCk7
CiAgICAgICAgIHRoaXMuX3NpZGUgPSBzaWRlIHx8IFdlYkluc3BlY3Rvci5TaWRlYmFyLlNpZGVz
LkxlZnQ7CiAKICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5TaWRlYmFyLlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJzaWRlYmFyIik7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuU2lkZWJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLl9zaWRlKTsKIApAQCAtNDgsMzEg
KzUwLDExIEBAIFdlYkluc3BlY3Rvci5TaWRlYmFyID0gZnVuY3Rpb24oZWxlbWVudCwgc2lkZSwg
c2lkZWJhclBhbmVscywgcm9sZSwgbGFiZWwpIHsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgc2lkZWJhclBhbmVscy5sZW5ndGg7ICsraSkKICAgICAgICAgICAgICAgICB0aGlzLmFk
ZFNpZGViYXJQYW5lbChzaWRlYmFyUGFuZWxzW2ldKTsKICAgICAgICAgfQotfTsKLQotLy8gRklY
TUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVt
b3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1
bmN0aW9ucyhXZWJJbnNwZWN0b3IuU2lkZWJhcik7Ci0KLVdlYkluc3BlY3Rvci5TaWRlYmFyLlN0
eWxlQ2xhc3NOYW1lID0gInNpZGViYXIiOwotV2ViSW5zcGVjdG9yLlNpZGViYXIuQ29sbGFwc2Vk
U3R5bGVDbGFzc05hbWUgPSAiY29sbGFwc2VkIjsKLVdlYkluc3BlY3Rvci5TaWRlYmFyLkFic29s
dXRlTWluaW11bVdpZHRoID0gMjAwOwotCi1XZWJJbnNwZWN0b3IuU2lkZWJhci5TaWRlcyA9IHt9
OwotV2ViSW5zcGVjdG9yLlNpZGViYXIuU2lkZXMuUmlnaHQgPSAicmlnaHQiOwotV2ViSW5zcGVj
dG9yLlNpZGViYXIuU2lkZXMuTGVmdCA9ICJsZWZ0IjsKLQotV2ViSW5zcGVjdG9yLlNpZGViYXIu
RXZlbnQgPSB7Ci0gICAgU2lkZWJhclBhbmVsU2VsZWN0ZWQ6ICJzaWRlYmFyLXNpZGViYXItcGFu
ZWwtc2VsZWN0ZWQiLAotICAgIENvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlOiAic2lkZWJhci1zaWRl
YmFyLWNvbGxhcHNlZC1zdGF0ZS1kaWQtY2hhbmdlIiwKLSAgICBXaWR0aERpZENoYW5nZTogInNp
ZGViYXItd2lkdGgtZGlkLWNoYW5nZSIsCi19OwotCi1XZWJJbnNwZWN0b3IuU2lkZWJhci5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TaWRlYmFyLAorICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCi0gICAgYWRkU2lkZWJhclBhbmVsOiBmdW5jdGlvbihzaWRlYmFy
UGFuZWwpCisgICAgYWRkU2lkZWJhclBhbmVsKHNpZGViYXJQYW5lbCkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHNpZGViYXJQYW5lbCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TaWRl
YmFyUGFuZWwpOwogICAgICAgICBpZiAoIShzaWRlYmFyUGFuZWwgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuU2lkZWJhclBhbmVsKSkKQEAgLTkwLDkgKzcyLDkgQEAgV2ViSW5zcGVjdG9yLlNpZGVi
YXIucHJvdG90eXBlID0gewogICAgICAgICBzaWRlYmFyUGFuZWwuYWRkZWQoKTsKIAogICAgICAg
ICByZXR1cm4gc2lkZWJhclBhbmVsOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlU2lkZWJh
clBhbmVsOiBmdW5jdGlvbihzaWRlYmFyUGFuZWxPcklkZW50aWZpZXJPckluZGV4LCBpbmRleCkK
KyAgICByZW1vdmVTaWRlYmFyUGFuZWwoc2lkZWJhclBhbmVsT3JJZGVudGlmaWVyT3JJbmRleCwg
aW5kZXgpCiAgICAgewogICAgICAgICB2YXIgc2lkZWJhclBhbmVsID0gdGhpcy5maW5kU2lkZWJh
clBhbmVsKHNpZGViYXJQYW5lbE9ySWRlbnRpZmllck9ySW5kZXgpOwogICAgICAgICBpZiAoIXNp
ZGViYXJQYW5lbCkKQEAgLTExMywxMiArOTUsMTIgQEAgV2ViSW5zcGVjdG9yLlNpZGViYXIucHJv
dG90eXBlID0gewogICAgICAgICBzaWRlYmFyUGFuZWwucmVtb3ZlZCgpOwogCiAgICAgICAgIHJl
dHVybiBzaWRlYmFyUGFuZWw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0ZWRTaWRl
YmFyUGFuZWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkU2lkZWJhclBh
bmVsIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0ZWRTaWRlYmFyUGFu
ZWwoc2lkZWJhclBhbmVsT3JJZGVudGlmaWVyT3JJbmRleCkKICAgICB7CkBAIC0xNDksMjQgKzEz
MSwyNCBAQCBXZWJJbnNwZWN0b3IuU2lkZWJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuU2lkZWJh
ci5FdmVudC5TaWRlYmFyUGFuZWxTZWxlY3RlZCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
bWluaW11bVdpZHRoKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuU2lkZWJh
ci5BYnNvbHV0ZU1pbmltdW1XaWR0aDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtYXhpbXVt
V2lkdGgoKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMga2luZCBvZiBhcmJpdHJh
cnkgYW5kIGlkZWFsbHkgd291bGQgYmUgYSBtb3JlIGNvbXBsZXggY2FsY3VsYXRpb24gYmFzZWQg
b24gdGhlCiAgICAgICAgIC8vIGF2YWlsYWJsZSBzcGFjZSBmb3IgdGhlIHNpYmxpbmcgZWxlbWVu
dHMuCiAgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKHdpbmRvdy5pbm5lcldpZHRoIC8gMyk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgd2lkdGgoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2VsZW1lbnQub2Zmc2V0V2lkdGg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgd2lkdGgo
bmV3V2lkdGgpCiAgICAgewpAQCAtMTgxLDEyICsxNjMsMTIgQEAgV2ViSW5zcGVjdG9yLlNpZGVi
YXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRTaWRlYmFyUGFuZWwu
d2lkdGhEaWRDaGFuZ2UoKTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudC5XaWR0aERpZENoYW5nZSk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgY29sbGFwc2VkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuU2lkZWJhci5Db2xsYXBzZWRT
dHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY29sbGFwc2VkKGZsYWcp
CiAgICAgewpAQCAtMjExLDI0ICsxOTMsMjQgQEAgV2ViSW5zcGVjdG9yLlNpZGViYXIucHJvdG90
eXBlID0gewogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5TaWRlYmFyLkV2ZW50LkNvbGxhcHNlZFN0YXRlRGlkQ2hhbmdlKTsKICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNpZGViYXIuRXZlbnQuV2lk
dGhEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNpZGViYXJQYW5lbHMoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NpZGViYXJQYW5lbHM7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVu
dDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzaWRlKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9zaWRlOwotICAgIH0sCisgICAgfQogCi0gICAgZmluZFNpZGViYXJQYW5lbDogZnVu
Y3Rpb24oc2lkZWJhclBhbmVsT3JJZGVudGlmaWVyT3JJbmRleCkKKyAgICBmaW5kU2lkZWJhclBh
bmVsKHNpZGViYXJQYW5lbE9ySWRlbnRpZmllck9ySW5kZXgpCiAgICAgewogICAgICAgICB2YXIg
c2lkZWJhclBhbmVsID0gbnVsbDsKIApAQCAtMjQ3LDE2ICsyMjksMTYgQEAgV2ViSW5zcGVjdG9y
LlNpZGViYXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHNpZGVi
YXJQYW5lbDsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgcmVzaXpl
ckRyYWdTdGFydGVkOiBmdW5jdGlvbihyZXNpemVyKQorICAgIHJlc2l6ZXJEcmFnU3RhcnRlZChy
ZXNpemVyKQogICAgIHsKICAgICAgICAgdGhpcy5fd2lkdGhCZWZvcmVSZXNpemUgPSB0aGlzLndp
ZHRoOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzaXplckRyYWdnaW5nOiBmdW5jdGlvbihyZXNp
emVyLCBwb3NpdGlvbkRlbHRhKQorICAgIHJlc2l6ZXJEcmFnZ2luZyhyZXNpemVyLCBwb3NpdGlv
bkRlbHRhKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NpZGUgPT09IFdlYkluc3BlY3Rvci5T
aWRlYmFyLlNpZGVzLkxlZnQpCiAgICAgICAgICAgICBwb3NpdGlvbkRlbHRhICo9IC0xOwpAQCAt
MjY0LDE5ICsyNDYsMzEgQEAgV2ViSW5zcGVjdG9yLlNpZGViYXIucHJvdG90eXBlID0gewogICAg
ICAgICB2YXIgbmV3V2lkdGggPSBwb3NpdGlvbkRlbHRhICsgdGhpcy5fd2lkdGhCZWZvcmVSZXNp
emU7CiAgICAgICAgIHRoaXMud2lkdGggPSBuZXdXaWR0aDsKICAgICAgICAgdGhpcy5jb2xsYXBz
ZWQgPSAobmV3V2lkdGggPCAodGhpcy5taW5pbXVtV2lkdGggLyAyKSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICByZXNpemVyRHJhZ0VuZGVkOiBmdW5jdGlvbihyZXNpemVyKQorICAgIHJlc2l6ZXJE
cmFnRW5kZWQocmVzaXplcikKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl93aWR0aEJlZm9y
ZVJlc2l6ZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9uYXZpZ2F0
aW9uSXRlbVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbmF2aWdhdGlvbkl0ZW1TZWxl
Y3RlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuc2VsZWN0ZWRTaWRlYmFyUGFuZWwgPSBl
dmVudC50YXJnZXQuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSA/IGV2ZW50LnRhcmdldC5zZWxlY3Rl
ZE5hdmlnYXRpb25JdGVtLmlkZW50aWZpZXIgOiBudWxsOwogICAgIH0KIH07CiAKLVdlYkluc3Bl
Y3Rvci5TaWRlYmFyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZTsKK1dlYkluc3BlY3Rvci5TaWRlYmFyLkNvbGxhcHNlZFN0eWxlQ2xhc3NOYW1lID0g
ImNvbGxhcHNlZCI7CitXZWJJbnNwZWN0b3IuU2lkZWJhci5BYnNvbHV0ZU1pbmltdW1XaWR0aCA9
IDIwMDsKKworV2ViSW5zcGVjdG9yLlNpZGViYXIuU2lkZXMgPSB7CisgICAgUmlnaHQ6ICJyaWdo
dCIsCisgICAgTGVmdDogImxlZnQiCit9OworCitXZWJJbnNwZWN0b3IuU2lkZWJhci5FdmVudCA9
IHsKKyAgICBTaWRlYmFyUGFuZWxTZWxlY3RlZDogInNpZGViYXItc2lkZWJhci1wYW5lbC1zZWxl
Y3RlZCIsCisgICAgQ29sbGFwc2VkU3RhdGVEaWRDaGFuZ2U6ICJzaWRlYmFyLXNpZGViYXItY29s
bGFwc2VkLXN0YXRlLWRpZC1jaGFuZ2UiLAorICAgIFdpZHRoRGlkQ2hhbmdlOiAic2lkZWJhci13
aWR0aC1kaWQtY2hhbmdlIiwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9TaWRlYmFyUGFuZWwuanMKaW5kZXggMjc3ODRlNy4uN2Nl
MDJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NpZGViYXJQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTAgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbCA9
IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9vbFRpcCwgaGlkZVRvb2xU
aXAsIGltYWdlLCBlbGVtZW50LCByb2xlLCBsYWJlbCkKK1dlYkluc3BlY3Rvci5TaWRlYmFyUGFu
ZWwgPSBjbGFzcyBTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0g
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIGRpc3BsYXlOYW1lLCBzaG93VG9vbFRp
cCwgaGlkZVRvb2xUaXAsIGltYWdlLCBlbGVtZW50LCByb2xlLCBsYWJlbCkKKyAgICB7CisgICAg
ICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5faWRlbnRpZmllciA9IGlkZW50aWZpZXI7CiAK
QEAgLTM1LDU2ICszNiw0OCBAQCBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsID0gZnVuY3Rpb24o
aWRlbnRpZmllciwgZGlzcGxheU5hbWUsIHNob3dUb29sVGlwLCBoaWRlVAogICAgICAgICB0aGlz
Ll90b29sYmFySXRlbS5lbmFibGVkID0gZmFsc2U7CiAKICAgICAgICAgdGhpcy5fZWxlbWVudCA9
IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwuU3R5bGVDbGFzc05h
bWUpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInBhbmVsIik7CiAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChpZGVudGlmaWVyKTsKIAogICAgICAgICB0
aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUgfHwgImdyb3VwIik7CiAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwgfHwgZGlz
cGxheU5hbWUpOwogCiAgICAgICAgIHRoaXMuX2NvbnRlbnRFbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fY29udGVudEVsZW1lbnQuY2xhc3NOYW1lID0g
V2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5Db250ZW50RWxlbWVudFN0eWxlQ2xhc3NOYW1lOwor
ICAgICAgICB0aGlzLl9jb250ZW50RWxlbWVudC5jbGFzc05hbWUgPSAiY29udGVudCI7CiAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudEVsZW1lbnQpOwotfTsK
LQotV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5TdHlsZUNsYXNzTmFtZSA9ICJwYW5lbCI7Ci1X
ZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLlNlbGVjdGVkU3R5bGVDbGFzc05hbWUgPSAic2VsZWN0
ZWQiOwotV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5Db250ZW50RWxlbWVudFN0eWxlQ2xhc3NO
YW1lID0gImNvbnRlbnQiOwotCi1XZWJJbnNwZWN0b3IuU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbCwKLSAgICBfX3By
b3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGlkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2lkZW50aWZpZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdG9vbGJhckl0ZW0oKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2xiYXJJdGVtOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgY29udGVudEVsZW1lbnQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2NvbnRlbnRFbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHZp
c2libGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQgJiYgdGhpcy5fcGFy
ZW50U2lkZWJhciAmJiAhdGhpcy5fcGFyZW50U2lkZWJhci5jb2xsYXBzZWQ7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc2VsZWN0ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Vs
ZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwuU2VsZWN0
ZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc2VsZWN0ZWQoZmxh
ZykKICAgICB7CkBAIC05Miw3NSArODUsNzcgQEAgV2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLlNpZGViYXJQYW5lbC5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5TaWRlYmFyUGFuZWwuU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgcGFyZW50U2lkZWJhcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
cGFyZW50U2lkZWJhcjsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3c6IGZ1bmN0aW9uKCkKKyAg
ICBzaG93KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcGFyZW50U2lkZWJhcikKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9wYXJlbnRTaWRlYmFyLmNvbGxhcHNlZCA9
IGZhbHNlOwogICAgICAgICB0aGlzLl9wYXJlbnRTaWRlYmFyLnNlbGVjdGVkU2lkZWJhclBhbmVs
ID0gdGhpczsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGU6IGZ1bmN0aW9uKCkKKyAgICBoaWRl
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcGFyZW50U2lkZWJhcikKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICB0aGlzLl9wYXJlbnRTaWRlYmFyLmNvbGxhcHNlZCA9IHRydWU7
CiAgICAgICAgIHRoaXMuX3BhcmVudFNpZGViYXIuc2VsZWN0ZWRTaWRlYmFyUGFuZWwgPSBudWxs
OwotICAgIH0sCisgICAgfQogCi0gICAgdG9nZ2xlOiBmdW5jdGlvbigpCisgICAgdG9nZ2xlKCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLnZpc2libGUpCiAgICAgICAgICAgICB0aGlzLmhpZGUo
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5zaG93KCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBhZGRlZDogZnVuY3Rpb24oKQorICAgIGFkZGVkKCkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX3BhcmVudFNpZGViYXIpOwogICAgICAgICB0aGlzLl90b29sYmFy
SXRlbS5lbmFibGVkID0gdHJ1ZTsKICAgICAgICAgdGhpcy5fdG9vbGJhckl0ZW0uYWN0aXZhdGVk
ID0gdGhpcy52aXNpYmxlOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlZDogZnVuY3Rpb24o
KQorICAgIHJlbW92ZWQoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3Bh
cmVudFNpZGViYXIpOwogICAgICAgICB0aGlzLl90b29sYmFySXRlbS5lbmFibGVkID0gZmFsc2U7
CiAgICAgICAgIHRoaXMuX3Rvb2xiYXJJdGVtLmFjdGl2YXRlZCA9IGZhbHNlOwotICAgIH0sCisg
ICAgfQogCi0gICAgd2lsbFJlbW92ZTogZnVuY3Rpb24oKQorICAgIHdpbGxSZW1vdmUoKQogICAg
IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0K
IAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgLy8g
SW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjog
ZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBi
eSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgd2lkdGhEaWRDaGFuZ2U6IGZ1bmN0
aW9uKCkKKyAgICB3aWR0aERpZENoYW5nZSgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRl
ZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgdmlzaWJpbGl0eURpZENoYW5n
ZTogZnVuY3Rpb24oKQorICAgIHZpc2liaWxpdHlEaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAg
dGhpcy5fdG9vbGJhckl0ZW0uYWN0aXZhdGVkID0gdGhpcy52aXNpYmxlOwogICAgIH0KIH07CisK
K1dlYkluc3BlY3Rvci5TaWRlYmFyUGFuZWwuU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSA9ICJzZWxl
Y3RlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TbGlkZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9TbGlkZXIuanMKaW5kZXggZjQ1YTBiMC4uMTU0NzcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2xpZGVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NsaWRlci5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCArMjMsMTIg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuU2xpZGVyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlNsaWRlciA9IGNsYXNzIFNsaWRl
ciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAg
eworICAgICAgICBzdXBlcigpOworCiAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAi
c2xpZGVyIjsKIApAQCAtMzUsMjUgKzM5LDE5IEBAIFdlYkluc3BlY3Rvci5TbGlkZXIgPSBmdW5j
dGlvbigpCiAgICAgICAgIHRoaXMuX19tYXhYID0gMDsKIAogICAgICAgICB0aGlzLl9lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9y
LlNsaWRlci5Lbm9iV2lkdGggPSAxMzsKLQotV2ViSW5zcGVjdG9yLlNsaWRlci5wcm90b3R5cGUg
PSB7Ci0gICAgY29udHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNsaWRlciwKLSAgICBfX3Byb3RvX186
IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFsdWUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3ZhbHVlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHZhbHVlKHZhbHVlKQogICAg
IHsKQEAgLTY5LDExICs2NywxMSBAQCBXZWJJbnNwZWN0b3IuU2xpZGVyLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICBpZiAodGhpcy5kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5zbGlk
ZXJWYWx1ZURpZENoYW5nZSA9PT0gImZ1bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdh
dGUuc2xpZGVyVmFsdWVEaWRDaGFuZ2UodGhpcywgdmFsdWUpOwotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gUHJvdGVjdGVkCiAKLSAgICBoYW5kbGVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAg
aGFuZGxlRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsK
ICAgICAgICAgY2FzZSAibW91c2Vkb3duIjoKQEAgLTg2LDExICs4NCwxMSBAQCBXZWJJbnNwZWN0
b3IuU2xpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2hhbmRsZU1vdXNldXAo
ZXZlbnQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFByaXZhdGUKIAotICAgIF9oYW5kbGVNb3VzZWRvd246IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9oYW5kbGVNb3VzZWRvd24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFy
Z2V0ICE9PSB0aGlzLl9rbm9iKQogICAgICAgICAgICAgdGhpcy52YWx1ZSA9ICh0aGlzLl9sb2Nh
bFBvaW50Rm9yRXZlbnQoZXZlbnQpLnggLSAzKSAvIHRoaXMuX21heFg7CkBAIC0xMDIsMzAgKzEw
MCwzMCBAQCBXZWJJbnNwZWN0b3IuU2xpZGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB3aW5k
b3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcywgdHJ1ZSk7CiAgICAgICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcywgdHJ1ZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfaGFuZGxlTW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxl
TW91c2Vtb3ZlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGR4ID0gdGhpcy5fbG9jYWxQb2lu
dEZvckV2ZW50KGV2ZW50KS54IC0gdGhpcy5fc3RhcnRNb3VzZVg7CiAgICAgICAgIHZhciB4ID0g
TWF0aC5tYXgoTWF0aC5taW4odGhpcy5fc3RhcnRLbm9iWCArIGR4LCB0aGlzLl9tYXhYKSwgMCk7
CiAKICAgICAgICAgdGhpcy52YWx1ZSA9IHggLyB0aGlzLl9tYXhYOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2hhbmRsZU1vdXNldXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVNb3VzZXVw
KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJk
cmFnZ2luZyIpOwogCiAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1v
dmUiLCB0aGlzLCB0cnVlKTsKICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1v
dXNldXAiLCB0aGlzLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9sb2NhbFBvaW50Rm9y
RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9sb2NhbFBvaW50Rm9yRXZlbnQoZXZlbnQpCiAg
ICAgewogICAgICAgICAvLyBXZSBjb252ZXJ0IGFsbCBldmVudCBjb29yZGluYXRlcyBmcm9tIHBh
Z2UgY29vcmRpbmF0ZXMgdG8gbG9jYWwgY29vcmRpbmF0ZXMgc3VjaCB0aGF0IHRoZSBzbGlkZXIK
ICAgICAgICAgLy8gbWF5IGJlIHRyYW5zZm9ybWVkIHVzaW5nIENTUyBUcmFuc2Zvcm1zIGFuZCBp
bnRlcmFjdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KICAgICAgICAgcmV0dXJuIHdpbmRvdy53ZWJr
aXRDb252ZXJ0UG9pbnRGcm9tUGFnZVRvTm9kZSh0aGlzLl9lbGVtZW50LCBuZXcgV2ViS2l0UG9p
bnQoZXZlbnQucGFnZVgsIGV2ZW50LnBhZ2VZKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
X21heFgoKQogICAgIHsKQEAgLTEzNSwzICsxMzMsNSBAQCBXZWJJbnNwZWN0b3IuU2xpZGVyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX19tYXhYOwogICAgIH0KIH07CisKK1dl
Ykluc3BlY3Rvci5TbGlkZXIuS25vYldpZHRoID0gMTM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0
RWRpdG9yLmpzCmluZGV4IDU5ODVmMTcuLjBmNzQ4OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVU
ZXh0RWRpdG9yLmpzCkBAIC0yMywxMCArMjMsMTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBm
dW5jdGlvbihzb3VyY2VDb2RlKQorV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yID0g
Y2xhc3MgU291cmNlQ29kZVRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
cgoreworICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChzb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGUpOwog
CisgICAgICAgIHN1cGVyKCk7CisKKyAgICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHRoaXM7CisKICAg
ICAgICAgdGhpcy5fc291cmNlQ29kZSA9IHNvdXJjZUNvZGU7CiAgICAgICAgIHRoaXMuX2JyZWFr
cG9pbnRNYXAgPSB7fTsKICAgICAgICAgdGhpcy5faXNzdWVzTGluZU51bWJlck1hcCA9IG5ldyBN
YXA7CkBAIC0zNSw4ICs0MSw2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9
IGZ1bmN0aW9uKHNvdXJjZUNvZGUpCiAgICAgICAgIHRoaXMuX2ludmFsaWRMaW5lTnVtYmVycyA9
IHswOiB0cnVlfTsKICAgICAgICAgdGhpcy5faWdub3JlQ29udGVudERpZENoYW5nZSA9IDA7CiAK
LSAgICBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5jYWxsKHRoaXMsIG51bGwsIG51bGwsIHRoaXMp
OwotCiAgICAgICAgIHRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIgPSBudWxsOwogICAgICAg
ICB0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgPSBudWxsOwogICAgICAgICB0aGlzLl9iYXNpY0Js
b2NrQW5ub3RhdG9yID0gbnVsbDsKQEAgLTQ2LDcgKzUwLDcgQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yID0gZnVuY3Rpb24oc291cmNlQ29kZSkKICAgICAgICAgLy8gRklYTUU6
IEN1cnJlbnRseSB0aGlzIGp1c3QganVtcHMgYmV0d2VlbiByZXNvdXJjZXMgYW5kIHJlbGF0ZWQg
c291cmNlIG1hcCByZXNvdXJjZXMuIEl0IGRvZXNuJ3QgImp1bXAgdG8gc3ltYm9sIiB5ZXQuCiAg
ICAgICAgIHRoaXMuX3VwZGF0ZVRva2VuVHJhY2tpbmdDb250cm9sbGVyU3RhdGUoKTsKIAotICAg
IHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5TdHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRk
KCJzb3VyY2UtY29kZSIpOwogCiAgICAgICAgIGlmICh0aGlzLl9zdXBwb3J0c0RlYnVnZ2luZykg
ewogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlz
Ll9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKQEAgLTc5LDM4ICs4MywxNiBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IgPSBmdW5jdGlvbihzb3VyY2VDb2RlKQog
ICAgICAgICAvLyBGSVhNRTogQ21kK0wgc2hvcmN1dCBkb2Vzbid0IGFjdHVhbGx5IHdvcmsuCiAg
ICAgICAgIG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kLCAiTCIsIHRoaXMuc2hvd0dvVG9MaW5lRGlh
bG9nLmJpbmQodGhpcyksIHRoaXMuZWxlbWVudCk7CiAgICAgICAgIG5ldyBXZWJJbnNwZWN0b3Iu
S2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5D
b250cm9sLCAiRyIsIHRoaXMuc2hvd0dvVG9MaW5lRGlhbG9nLmJpbmQodGhpcyksIHRoaXMuZWxl
bWVudCk7Ci19OwotCi0vLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVj
YXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvcik7Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5TdHlsZUNsYXNzTmFt
ZSA9ICJzb3VyY2UtY29kZSI7Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuTGlu
ZUVycm9yU3R5bGVDbGFzc05hbWUgPSAiZXJyb3IiOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
ZXh0RWRpdG9yLkxpbmVXYXJuaW5nU3R5bGVDbGFzc05hbWUgPSAid2FybmluZyI7Ci1XZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuUG9wb3ZlckRlYnVnZ2VyQ29udGVudFN0eWxlQ2xh
c3NOYW1lID0gImRlYnVnZ2VyLXBvcG92ZXItY29udGVudCI7Ci1XZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IuSG92ZXJlZEV4cHJlc3Npb25IaWdobGlnaHRTdHlsZUNsYXNzTmFtZSA9
ICJob3ZlcmVkLWV4cHJlc3Npb24taGlnaGxpZ2h0IjsKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5EdXJhdGlvblRvTW91c2VPdmVyVG9rZW5Ub01ha2VIb3ZlcmVkVG9rZW4gPSA1
MDA7Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRHVyYXRpb25Ub01vdXNlT3V0
T2ZIb3ZlcmVkVG9rZW5Ub1JlbGVhc2UgPSAxMDAwOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVU
ZXh0RWRpdG9yLkR1cmF0aW9uVG9VcGRhdGVUeXBlVG9rZW5zQWZ0ZXJTY3JvbGxpbmcgPSAxMDA7
Ci1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuQXV0b0Zvcm1hdE1pbmltdW1MaW5l
TGVuZ3RoID0gNTAwOwotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLldpZGdldENv
bnRhaW5zTXVsdGlwbGVJc3N1ZXNTeW1ib2wgPSBTeW1ib2woInNvdXJjZS1jb2RlLXdpZGdldC1j
b250YWlucy1tdWx0aXBsZS1pc3N1ZXMiKTsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0
RWRpdG9yLkV2ZW50ID0gewotICAgIENvbnRlbnRXaWxsUG9wdWxhdGU6ICJzb3VyY2UtY29kZS10
ZXh0LWVkaXRvci1jb250ZW50LXdpbGwtcG9wdWxhdGUiLAotICAgIENvbnRlbnREaWRQb3B1bGF0
ZTogInNvdXJjZS1jb2RlLXRleHQtZWRpdG9yLWNvbnRlbnQtZGlkLXBvcHVsYXRlIgotfTsKLQot
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLAorICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCiAgICAgZ2V0IHNvdXJjZUNvZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3NvdXJjZUNvZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24o
KQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnBy
b3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCkBAIC0xMjUsOSArMTA3LDkgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0
aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgfHwgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRvcikKICAg
ICAgICAgICAgICAgICB0aGlzLl9zZXRUeXBlVG9rZW5Bbm5vdGF0b3JFbmFibGVkU3RhdGUoZmFs
c2UpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkK
KyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJv
dG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwogCkBAIC0xNDEsOSArMTIzLDkgQEAgV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
X3R5cGVUb2tlbkFubm90YXRvci5wYXVzZSgpOwogICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9j
a0Fubm90YXRvcikKICAgICAgICAgICAgIHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IucGF1c2Uo
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlOiBmdW5jdGlvbigpCisgICAgY2xvc2UoKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3N1cHBvcnRzRGVidWdnaW5nKSB7CiAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9p
bnRTdGF0dXNEaWRDaGFuZ2UsIHRoaXMpOwpAQCAtMTY2LDkgKzE0OCw5IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgV2ViSW5zcGVj
dG9yLm5vdGlmaWNhdGlvbnMucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZp
Y2F0aW9uLkdsb2JhbE1vZGlmaWVyS2V5c0RpZENoYW5nZSwgdGhpcy5fdXBkYXRlVG9rZW5UcmFj
a2luZ0NvbnRyb2xsZXJTdGF0ZSwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGUucmVt
b3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZS5FdmVudC5Tb3VyY2VNYXBB
ZGRlZCwgdGhpcy5fc291cmNlQ29kZVNvdXJjZU1hcEFkZGVkLCB0aGlzKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGNhbkJlRm9ybWF0dGVkOiBmdW5jdGlvbigpCisgICAgY2FuQmVGb3JtYXR0ZWQo
KQogICAgIHsKICAgICAgICAgLy8gQ3VycmVudGx5IHdlIGFzc3VtZSB0aGF0IHNvdXJjZSBtYXAg
cmVzb3VyY2VzIGFyZSBmb3JtYXR0ZWQgaG93IHRoZSBhdXRob3Igd2FudHMgaXQuCiAgICAgICAg
IC8vIFdlIGNvdWxkIGFsbG93IHNvdXJjZSBtYXAgcmVzb3VyY2VzIHRvIGJlIGZvcm1hdHRlZCwg
d2Ugd291bGQgdGhlbiBuZWVkIHRvIG1ha2UKQEAgLTE3OCwxNCArMTYwLDE0IEBAIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3Rv
dHlwZS5jYW5CZUZvcm1hdHRlZC5jYWxsKHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgY2Fu
U2hvd1R5cGVBbm5vdGF0aW9uczogZnVuY3Rpb24oKQorICAgIGNhblNob3dUeXBlQW5ub3RhdGlv
bnMoKQogICAgIHsKICAgICAgICAgcmV0dXJuICEhdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yOwot
ICAgIH0sCisgICAgfQogCi0gICAgY3VzdG9tUGVyZm9ybVNlYXJjaDogZnVuY3Rpb24ocXVlcnkp
CisgICAgY3VzdG9tUGVyZm9ybVNlYXJjaChxdWVyeSkKICAgICB7CiAgICAgICAgIGZ1bmN0aW9u
IHNlYXJjaFJlc3VsdENhbGxiYWNrKGVycm9yLCBtYXRjaGVzKQogICAgICAgICB7CkBAIC0yMzMs
OSArMjE1LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKICAgICAgICAgZWxzZSBpZiAodGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5TY3JpcHQpCiAgICAgICAgICAgICBEZWJ1Z2dlckFnZW50LnNlYXJjaEluQ29udGVudCh0
aGlzLl9zb3VyY2VDb2RlLmlkLCBxdWVyeSwgZmFsc2UsIGZhbHNlLCBzZWFyY2hSZXN1bHRDYWxs
YmFjay5iaW5kKHRoaXMpKTsKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBzaG93R29Ub0xpbmVEaWFsb2c6IGZ1bmN0aW9uKCkKKyAgICBzaG93R29Ub0xpbmVEaWFs
b2coKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9nb1RvTGluZURpYWxvZykgewogICAgICAg
ICAgICAgdGhpcy5fZ29Ub0xpbmVEaWFsb2cgPSBuZXcgV2ViSW5zcGVjdG9yLkdvVG9MaW5lRGlh
bG9nOwpAQCAtMjQzLDI2ICsyMjUsMjYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2dvVG9MaW5lRGlh
bG9nLnByZXNlbnQodGhpcy5lbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGlzR29Ub0xp
bmVEaWFsb2dWYWx1ZVZhbGlkOiBmdW5jdGlvbihnb1RvTGluZURpYWxvZywgbGluZU51bWJlcikK
KyAgICBpc0dvVG9MaW5lRGlhbG9nVmFsdWVWYWxpZChnb1RvTGluZURpYWxvZywgbGluZU51bWJl
cikKICAgICB7CiAgICAgICAgIHJldHVybiAhaXNOYU4obGluZU51bWJlcikgJiYgbGluZU51bWJl
ciA+IDAgJiYgbGluZU51bWJlciA8PSB0aGlzLmxpbmVDb3VudDsKLSAgICB9LAorICAgIH0KIAot
ICAgIGdvVG9MaW5lRGlhbG9nVmFsdWVXYXNWYWxpZGF0ZWQ6IGZ1bmN0aW9uKGdvVG9MaW5lRGlh
bG9nLCBsaW5lTnVtYmVyKQorICAgIGdvVG9MaW5lRGlhbG9nVmFsdWVXYXNWYWxpZGF0ZWQoZ29U
b0xpbmVEaWFsb2csIGxpbmVOdW1iZXIpCiAgICAgewogICAgICAgICB2YXIgcG9zaXRpb24gPSBu
ZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbihsaW5lTnVtYmVyIC0gMSwgMCk7CiAg
ICAgICAgIHZhciByYW5nZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dFJhbmdlKGxpbmVOdW1iZXIg
LSAxLCAwLCBsaW5lTnVtYmVyLCAwKTsKICAgICAgICAgdGhpcy5yZXZlYWxQb3NpdGlvbihwb3Np
dGlvbiwgcmFuZ2UsIGZhbHNlLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdvVG9MaW5l
RGlhbG9nV2FzRGlzbWlzc2VkOiBmdW5jdGlvbigpCisgICAgZ29Ub0xpbmVEaWFsb2dXYXNEaXNt
aXNzZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5mb2N1cygpOwotICAgIH0sCisgICAgfQogCi0g
ICAgY29udGVudERpZENoYW5nZTogZnVuY3Rpb24ocmVwbGFjZWRSYW5nZXMsIG5ld1JhbmdlcykK
KyAgICBjb250ZW50RGlkQ2hhbmdlKHJlcGxhY2VkUmFuZ2VzLCBuZXdSYW5nZXMpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUuY29udGVudERpZENoYW5n
ZS5jYWxsKHRoaXMsIHJlcGxhY2VkUmFuZ2VzLCBuZXdSYW5nZXMpOwogCkBAIC0yNzcsOSArMjU5
LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX3R5cGVUb2tlbkFubm90YXRvciA9IG51bGw7CiAgICAgICAgICAgICB0
aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yID0gbnVsbDsKICAgICAgICAgfQotICAgIH0sCisgICAg
fQogCi0gICAgdG9nZ2xlVHlwZUFubm90YXRpb25zOiBmdW5jdGlvbigpCisgICAgdG9nZ2xlVHlw
ZUFubm90YXRpb25zKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fdHlwZVRva2VuQW5ub3Rh
dG9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjkwLDkgKzI3Miw5IEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhp
cy5fc2V0VHlwZVRva2VuQW5ub3RhdG9yRW5hYmxlZFN0YXRlKG5ld0FjdGl2YXRlZFN0YXRlKTsK
ICAgICAgICAgcmV0dXJuIG5ld0FjdGl2YXRlZFN0YXRlOwotICAgIH0sCisgICAgfQogCi0gICAg
c2hvd1BvcG92ZXJGb3JUeXBlczogZnVuY3Rpb24odHlwZXMsIGJvdW5kcywgdGl0bGUpCisgICAg
c2hvd1BvcG92ZXJGb3JUeXBlcyh0eXBlcywgYm91bmRzLCB0aXRsZSkKICAgICB7CiAgICAgICAg
IHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIGNv
bnRlbnQuY2xhc3NOYW1lID0gIm9iamVjdCBleHBhbmRhYmxlIjsKQEAgLTMwOCwxMSArMjkwLDEx
IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQoc2VjdGlvbi5lbGVtZW50KTsKIAogICAgICAgICB0aGlz
Ll9zaG93UG9wb3Zlcihjb250ZW50LCBib3VuZHMpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJvdGVjdGVkCiAKLSAgICBwcmV0dHlQcmludDogZnVuY3Rpb24ocHJldHR5KQorICAgIHByZXR0
eVByaW50KHByZXR0eSkKICAgICB7CiAgICAgICAgIC8vIFRoZSBhbm5vdGF0b3JzIG11c3QgYmUg
Y2xlYXJlZCBiZWZvcmUgcHJldHR5IHByaW50aW5nIHRha2VzIHBsYWNlIGFuZCByZXN1bWVkIAog
ICAgICAgICAvLyBhZnRlciBzbyB0aGF0IHRoZXkgY2xlYXIgdGhlaXIgYW5ub3RhdGlvbnMgaW4g
YSBrbm93biBzdGF0ZSBhbmQgaW5zZXJ0IG5ldyBhbm5vdGF0aW9ucyAKQEAgLTMzMiw0NyArMzE0
LDQ3IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBpZiAodGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yIHx8IHRoaXMuX2Jhc2ljQmxv
Y2tBbm5vdGF0b3IpCiAgICAgICAgICAgICAgICAgdGhpcy5fc2V0VHlwZVRva2VuQW5ub3RhdG9y
RW5hYmxlZFN0YXRlKGZhbHNlKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQogCi0gICAgX3VuZm9ybWF0dGVkTGluZUluZm9Gb3JFZGl0b3JMaW5lSW5mbzogZnVu
Y3Rpb24obGluZUluZm8pCisgICAgX3VuZm9ybWF0dGVkTGluZUluZm9Gb3JFZGl0b3JMaW5lSW5m
byhsaW5lSW5mbykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmZvcm1hdHRlclNvdXJjZU1hcCkK
ICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1hdHRlclNvdXJjZU1hcC5mb3JtYXR0ZWRUb09y
aWdpbmFsKGxpbmVJbmZvLmxpbmVOdW1iZXIsIGxpbmVJbmZvLmNvbHVtbk51bWJlcik7CiAgICAg
ICAgIHJldHVybiBsaW5lSW5mbzsKLSAgICB9LAorICAgIH0KIAotICAgIF9zb3VyY2VDb2RlTG9j
YXRpb25Gb3JFZGl0b3JQb3NpdGlvbjogZnVuY3Rpb24ocG9zaXRpb24pCisgICAgX3NvdXJjZUNv
ZGVMb2NhdGlvbkZvckVkaXRvclBvc2l0aW9uKHBvc2l0aW9uKQogICAgIHsKICAgICAgICAgdmFy
IGxpbmVJbmZvID0ge2xpbmVOdW1iZXI6IHBvc2l0aW9uLmxpbmUsIGNvbHVtbk51bWJlcjogcG9z
aXRpb24uY2h9OwogICAgICAgICB2YXIgdW5mb3JtYXR0ZWRMaW5lSW5mbyA9IHRoaXMuX3VuZm9y
bWF0dGVkTGluZUluZm9Gb3JFZGl0b3JMaW5lSW5mbyhsaW5lSW5mbyk7CiAgICAgICAgIHJldHVy
biB0aGlzLnNvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHVuZm9ybWF0dGVkTGlu
ZUluZm8ubGluZU51bWJlciwgdW5mb3JtYXR0ZWRMaW5lSW5mby5jb2x1bW5OdW1iZXIpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2VkaXRvckxpbmVJbmZvRm9yU291cmNlQ29kZUxvY2F0aW9uOiBm
dW5jdGlvbihzb3VyY2VDb2RlTG9jYXRpb24pCisgICAgX2VkaXRvckxpbmVJbmZvRm9yU291cmNl
Q29kZUxvY2F0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlKQog
ICAgICAgICAgICAgcmV0dXJuIHtsaW5lTnVtYmVyOiBzb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxh
eUxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlDb2x1
bW5OdW1iZXJ9OwogICAgICAgICByZXR1cm4ge2xpbmVOdW1iZXI6IHNvdXJjZUNvZGVMb2NhdGlv
bi5mb3JtYXR0ZWRMaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IHNvdXJjZUNvZGVMb2NhdGlvbi5m
b3JtYXR0ZWRDb2x1bW5OdW1iZXJ9OwotICAgIH0sCisgICAgfQogCi0gICAgX2JyZWFrcG9pbnRG
b3JFZGl0b3JMaW5lSW5mbzogZnVuY3Rpb24obGluZUluZm8pCisgICAgX2JyZWFrcG9pbnRGb3JF
ZGl0b3JMaW5lSW5mbyhsaW5lSW5mbykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fYnJlYWtw
b2ludE1hcFtsaW5lSW5mby5saW5lTnVtYmVyXSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwog
ICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludE1hcFtsaW5lSW5mby5saW5lTnVtYmVyXVts
aW5lSW5mby5jb2x1bW5OdW1iZXJdOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZEJyZWFrcG9p
bnRXaXRoRWRpdG9yTGluZUluZm86IGZ1bmN0aW9uKGJyZWFrcG9pbnQsIGxpbmVJbmZvKQorICAg
IF9hZGRCcmVha3BvaW50V2l0aEVkaXRvckxpbmVJbmZvKGJyZWFrcG9pbnQsIGxpbmVJbmZvKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9icmVha3BvaW50TWFwW2xpbmVJbmZvLmxpbmVOdW1i
ZXJdKQogICAgICAgICAgICAgdGhpcy5fYnJlYWtwb2ludE1hcFtsaW5lSW5mby5saW5lTnVtYmVy
XSA9IHt9OwogCiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRNYXBbbGluZUluZm8ubGluZU51bWJl
cl1bbGluZUluZm8uY29sdW1uTnVtYmVyXSA9IGJyZWFrcG9pbnQ7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfcmVtb3ZlQnJlYWtwb2ludFdpdGhFZGl0b3JMaW5lSW5mbzogZnVuY3Rpb24oYnJlYWtw
b2ludCwgbGluZUluZm8pCisgICAgX3JlbW92ZUJyZWFrcG9pbnRXaXRoRWRpdG9yTGluZUluZm8o
YnJlYWtwb2ludCwgbGluZUluZm8pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChicmVh
a3BvaW50ID09PSB0aGlzLl9icmVha3BvaW50TWFwW2xpbmVJbmZvLmxpbmVOdW1iZXJdW2xpbmVJ
bmZvLmNvbHVtbk51bWJlcl0pOwogCkBAIC0zODAsOSArMzYyLDkgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoaXNFbXB0eU9i
amVjdCh0aGlzLl9icmVha3BvaW50TWFwW2xpbmVJbmZvLmxpbmVOdW1iZXJdKSkKICAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9icmVha3BvaW50TWFwW2xpbmVJbmZvLmxpbmVOdW1iZXJdOwotICAg
IH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRXaWxsUG9wdWxhdGU6IGZ1bmN0aW9uKGNvbnRlbnQp
CisgICAgX2NvbnRlbnRXaWxsUG9wdWxhdGUoY29udGVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5FdmVudC5Db250ZW50V2lsbFBvcHVsYXRlKTsKIApAQCAtNDMxLDkgKzQxMyw5IEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgbGFzdE5ld2xpbmVJbmRleCA9IG5leHROZXdsaW5lSW5kZXggKyAxOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudERpZFBvcHVsYXRlOiBm
dW5jdGlvbigpCisgICAgX2NvbnRlbnREaWRQb3B1bGF0ZSgpCiAgICAgewogICAgICAgICB0aGlz
Ll9jb250ZW50UG9wdWxhdGVkID0gdHJ1ZTsKIApAQCAtNDQ2LDkgKzQyOCw5IEBAIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Jl
aW5zZXJ0QWxsSXNzdWVzKCk7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlRWRpdGFibGVNYXJrZXJz
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wdWxhdGVXaXRoQ29udGVudDogZnVuY3Rpb24o
Y29udGVudCkKKyAgICBfcG9wdWxhdGVXaXRoQ29udGVudChjb250ZW50KQogICAgIHsKICAgICAg
ICAgY29udGVudCA9IGNvbnRlbnQgfHwgIiI7CiAKQEAgLTQ2NCw5ICs0NDYsOSBAQCBXZWJJbnNw
ZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgdGhpcy5fY29udGVudERpZFBvcHVsYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
Y29udGVudEF2YWlsYWJsZTogZnVuY3Rpb24ocGFyYW1ldGVycykKKyAgICBfY29udGVudEF2YWls
YWJsZShwYXJhbWV0ZXJzKQogICAgIHsKICAgICAgICAgLy8gUmV0dXJuIGlmIHJlc291cmNlIGlz
IG5vdCBhdmFpbGFibGUuCiAgICAgICAgIGlmIChwYXJhbWV0ZXJzLmVycm9yKQpAQCAtNDg3LDIz
ICs0NjksMjMgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5faW52YWxpZExpbmVOdW1iZXJzID0ge307CiAKICAgICAgICAgdGhp
cy5fcG9wdWxhdGVXaXRoQ29udGVudChjb250ZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9i
cmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfYnJlYWtwb2lu
dFN0YXR1c0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFr
cG9pbnRTdGF0dXMoZXZlbnQudGFyZ2V0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9icmVha3Bv
aW50c0VuYWJsZWREaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBfYnJlYWtwb2ludHNFbmFibGVk
RGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3N1cHBvcnRz
RGVidWdnaW5nKTsKIAogICAgICAgICB2YXIgYnJlYWtwb2ludHMgPSBXZWJJbnNwZWN0b3IuZGVi
dWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRm9yU291cmNlQ29kZSh0aGlzLl9zb3VyY2VDb2RlKTsK
ICAgICAgICAgZm9yICh2YXIgYnJlYWtwb2ludCBvZiBicmVha3BvaW50cykKICAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRTdGF0dXMoYnJlYWtwb2ludCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfdXBkYXRlQnJlYWtwb2ludFN0YXR1czogZnVuY3Rpb24oYnJlYWtwb2ludCkKKyAg
ICBfdXBkYXRlQnJlYWtwb2ludFN0YXR1cyhicmVha3BvaW50KQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcpOwogCkBAIC01MTUsOSArNDk3LDkg
QEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICB2YXIgbGluZUluZm8gPSB0aGlzLl9lZGl0b3JMaW5lSW5mb0ZvclNvdXJjZUNvZGVMb2Nh
dGlvbihicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgIHRoaXMuc2V0QnJl
YWtwb2ludEluZm9Gb3JMaW5lQW5kQ29sdW1uKGxpbmVJbmZvLmxpbmVOdW1iZXIsIGxpbmVJbmZv
LmNvbHVtbk51bWJlciwgdGhpcy5fYnJlYWtwb2ludEluZm9Gb3JCcmVha3BvaW50KGJyZWFrcG9p
bnQpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVCcmVha3BvaW50TG9jYXRpb246IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF91cGRhdGVCcmVha3BvaW50TG9jYXRpb24oZXZlbnQpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zdXBwb3J0c0RlYnVnZ2luZyk7CiAKQEAg
LTU2MSw5ICs1NDMsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90
eXBlID0gewogCiAgICAgICAgIHRoaXMuX3JlbW92ZUJyZWFrcG9pbnRXaXRoRWRpdG9yTGluZUlu
Zm8oYnJlYWtwb2ludCwgb2xkTGluZUluZm8pOwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50
V2l0aEVkaXRvckxpbmVJbmZvKGJyZWFrcG9pbnQsIG5ld0xpbmVJbmZvKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9icmVha3BvaW50QWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9icmVha3Bv
aW50QWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zdXBw
b3J0c0RlYnVnZ2luZyk7CiAKQEAgLTU4MCw5ICs1NjIsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB2YXIgbGluZUluZm8gPSB0aGlz
Ll9lZGl0b3JMaW5lSW5mb0ZvclNvdXJjZUNvZGVMb2NhdGlvbihicmVha3BvaW50LnNvdXJjZUNv
ZGVMb2NhdGlvbik7CiAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnRXaXRoRWRpdG9yTGluZUlu
Zm8oYnJlYWtwb2ludCwgbGluZUluZm8pOwogICAgICAgICB0aGlzLnNldEJyZWFrcG9pbnRJbmZv
Rm9yTGluZUFuZENvbHVtbihsaW5lSW5mby5saW5lTnVtYmVyLCBsaW5lSW5mby5jb2x1bW5OdW1i
ZXIsIHRoaXMuX2JyZWFrcG9pbnRJbmZvRm9yQnJlYWtwb2ludChicmVha3BvaW50KSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfYnJlYWtwb2ludFJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9icmVha3BvaW50UmVtb3ZlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuX3N1cHBvcnRzRGVidWdnaW5nKTsKIApAQCAtNTk5LDkgKzU4MSw5IEBAIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBsaW5l
SW5mbyA9IHRoaXMuX2VkaXRvckxpbmVJbmZvRm9yU291cmNlQ29kZUxvY2F0aW9uKGJyZWFrcG9p
bnQuc291cmNlQ29kZUxvY2F0aW9uKTsKICAgICAgICAgdGhpcy5fcmVtb3ZlQnJlYWtwb2ludFdp
dGhFZGl0b3JMaW5lSW5mbyhicmVha3BvaW50LCBsaW5lSW5mbyk7CiAgICAgICAgIHRoaXMuc2V0
QnJlYWtwb2ludEluZm9Gb3JMaW5lQW5kQ29sdW1uKGxpbmVJbmZvLmxpbmVOdW1iZXIsIGxpbmVJ
bmZvLmNvbHVtbk51bWJlciwgbnVsbCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWN0aXZlQ2Fs
bEZyYW1lRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgX2FjdGl2ZUNhbGxGcmFtZURpZENoYW5n
ZSgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zdXBwb3J0c0RlYnVnZ2lu
Zyk7CiAKQEAgLTY0Miw5ICs2MjQsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0
b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVXaXRoSW5saW5lU2Ny
aXB0Q29udGVudCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZVdp
dGhTY3JpcHRDb250ZW50KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWN0aXZlQ2FsbEZyYW1l
U291cmNlQ29kZUxvY2F0aW9uQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2FjdGl2ZUNh
bGxGcmFtZVNvdXJjZUNvZGVMb2NhdGlvbkNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydCghaXNOYU4odGhpcy5leGVjdXRpb25MaW5lTnVtYmVyKSk7CiAgICAgICAg
IGlmIChpc05hTih0aGlzLmV4ZWN1dGlvbkxpbmVOdW1iZXIpKQpAQCAtNjU2LDkgKzYzOCw5IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBsaW5lSW5mbyA9IHRoaXMuX2VkaXRvckxpbmVJbmZvRm9yU291cmNlQ29kZUxvY2F0aW9u
KHRoaXMuX2FjdGl2ZUNhbGxGcmFtZVNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgIHRoaXMu
ZXhlY3V0aW9uTGluZU51bWJlciA9IGxpbmVJbmZvLmxpbmVOdW1iZXI7CiAgICAgICAgIHRoaXMu
ZXhlY3V0aW9uQ29sdW1uTnVtYmVyID0gbGluZUluZm8uY29sdW1uTnVtYmVyOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3BvcHVsYXRlV2l0aElubGluZVNjcmlwdENvbnRlbnQ6IGZ1bmN0aW9uKCkK
KyAgICBfcG9wdWxhdGVXaXRoSW5saW5lU2NyaXB0Q29udGVudCgpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJl
c291cmNlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2Z1bGxDb250ZW50UG9wdWxh
dGVkKTsKQEAgLTY4OSw4ICs2NzEsOCBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0
b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHRoaXMuX2Z1bGxDb250ZW50UG9wdWxh
dGVkKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgY29uc3Qgc2NyaXB0
T3BlblRhZyA9ICI8c2NyaXB0PiI7Ci0gICAgICAgICAgICBjb25zdCBzY3JpcHRDbG9zZVRhZyA9
ICI8L3NjcmlwdD4iOworICAgICAgICAgICAgdmFyIHNjcmlwdE9wZW5UYWcgPSAiPHNjcmlwdD4i
OworICAgICAgICAgICAgdmFyIHNjcmlwdENsb3NlVGFnID0gIjwvc2NyaXB0PiI7CiAKICAgICAg
ICAgICAgIHZhciBjb250ZW50ID0gIiI7CiAgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IDA7
CkBAIC03MjgsOSArNzEwLDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGJvdW5kU2NyaXB0Q29udGVudEF2YWlsYWJsZSA9IHNj
cmlwdENvbnRlbnRBdmFpbGFibGUuYmluZCh0aGlzKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgc2NyaXB0c1tpXS5yZXF1ZXN0
Q29udGVudCgpLnRoZW4oYm91bmRTY3JpcHRDb250ZW50QXZhaWxhYmxlKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9wb3B1bGF0ZVdpdGhTY3JpcHRDb250ZW50OiBmdW5jdGlvbigpCisgICAgX3Bv
cHVsYXRlV2l0aFNjcmlwdENvbnRlbnQoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSk7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9mdWxsQ29udGVudFBvcHVsYXRlZCk7CkBAIC03NjMs
OSArNzQ1LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fcmVxdWVzdGluZ1NjcmlwdENvbnRlbnQgPSB0cnVlOwogCiAgICAg
ICAgIHNjcmlwdHNbMF0ucmVxdWVzdENvbnRlbnQoKS50aGVuKHNjcmlwdENvbnRlbnRBdmFpbGFi
bGUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWF0Y2hlc1NvdXJjZUNvZGVM
b2NhdGlvbjogZnVuY3Rpb24oc291cmNlQ29kZUxvY2F0aW9uKQorICAgIF9tYXRjaGVzU291cmNl
Q29kZUxvY2F0aW9uKHNvdXJjZUNvZGVMb2NhdGlvbikKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9zb3VyY2VDb2RlIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNlKQog
ICAgICAgICAgICAgcmV0dXJuIHNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZSA9
PT0gdGhpcy5fc291cmNlQ29kZTsKQEAgLTc3NCw5ICs3NTYsOSBAQCBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fc291cmNl
Q29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpCiAgICAgICAgICAgICByZXR1cm4g
c291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPT09IHRoaXMuX3NvdXJjZUNvZGU7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tYXRjaGVzQnJlYWtwb2lu
dDogZnVuY3Rpb24oYnJlYWtwb2ludCkKKyAgICBfbWF0Y2hlc0JyZWFrcG9pbnQoYnJlYWtwb2lu
dCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3N1cHBvcnRzRGVidWdnaW5n
KTsKICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3Iu
U291cmNlTWFwUmVzb3VyY2UpCkBAIC03ODYsOSArNzY4LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNv
ZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KQogICAgICAgICAgICAgcmV0dXJuIGJy
ZWFrcG9pbnQudXJsID09PSB0aGlzLl9zb3VyY2VDb2RlLnVybCB8fCBicmVha3BvaW50LnNjcmlw
dElkZW50aWZpZXIgPT09IHRoaXMuX3NvdXJjZUNvZGUuaWQ7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tYXRjaGVzSXNzdWU6IGZ1bmN0aW9uKGlzc3VlKQor
ICAgIF9tYXRjaGVzSXNzdWUoaXNzdWUpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc291cmNl
Q29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkKICAgICAgICAgICAgIHJldHVy
biBpc3N1ZS51cmwgPT09IHRoaXMuX3NvdXJjZUNvZGUudXJsOwpAQCAtNzk2LDE4ICs3NzgsMTgg
QEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgaWYgKHRoaXMuX3NvdXJjZUNvZGUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU2NyaXB0KQog
ICAgICAgICAgICAgcmV0dXJuIGlzc3VlLnVybCA9PT0gdGhpcy5fc291cmNlQ29kZS51cmw7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pc3N1ZVdhc0FkZGVk
OiBmdW5jdGlvbihldmVudCkKKyAgICBfaXNzdWVXYXNBZGRlZChldmVudCkKICAgICB7CiAgICAg
ICAgIHZhciBpc3N1ZSA9IGV2ZW50LmRhdGEuaXNzdWU7CiAgICAgICAgIGlmICghdGhpcy5fbWF0
Y2hlc0lzc3VlKGlzc3VlKSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9h
ZGRJc3N1ZShpc3N1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYWRkSXNzdWU6IGZ1bmN0aW9u
KGlzc3VlKQorICAgIF9hZGRJc3N1ZShpc3N1ZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBJ
c3N1ZSBzaG91bGQgaGF2ZSBhIFNvdXJjZUNvZGVMb2NhdGlvbi4KICAgICAgICAgdmFyIHNvdXJj
ZUNvZGVMb2NhdGlvbiA9IHRoaXMuX3NvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9u
KGlzc3VlLmxpbmVOdW1iZXIsIGlzc3VlLmNvbHVtbk51bWJlcik7CkBAIC04NDMsOSArODI1LDkg
QEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlSXNzdWVXaWRnZXRGb3JJc3N1ZXMod2lkZ2V0LCBsaW5lTnVt
YmVySXNzdWVzKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX2lzc3VlV2lkZ2V0
Rm9yTGluZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICBfaXNzdWVXaWRnZXRGb3JMaW5lKGxp
bmVOdW1iZXIpCiAgICAgewogICAgICAgICB2YXIgd2lkZ2V0ID0gdGhpcy5fd2lkZ2V0TWFwLmdl
dChsaW5lTnVtYmVyKTsKICAgICAgICAgaWYgKHdpZGdldCkKQEAgLTg2MywxOCArODQ1LDE4IEBA
IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX3dpZGdldE1hcC5zZXQobGluZU51bWJlciwgd2lkZ2V0KTsKIAogICAgICAgICByZXR1
cm4gd2lkZ2V0OwotICAgIH0sCisgICAgfQogCi0gICAgX2ljb25DbGFzc05hbWVGb3JJc3N1ZUxl
dmVsOiBmdW5jdGlvbihsZXZlbCkKKyAgICBfaWNvbkNsYXNzTmFtZUZvcklzc3VlTGV2ZWwobGV2
ZWwpCiAgICAgewogICAgICAgICBpZiAobGV2ZWwgPT09IFdlYkluc3BlY3Rvci5Jc3N1ZU1lc3Nh
Z2UuTGV2ZWwuV2FybmluZykKICAgICAgICAgICAgIHJldHVybiAiaWNvbi13YXJuaW5nIjsKIAog
ICAgICAgICBjb25zb2xlLmFzc2VydChsZXZlbCA9PT0gV2ViSW5zcGVjdG9yLklzc3VlTWVzc2Fn
ZS5MZXZlbC5FcnJvcik7CiAgICAgICAgIHJldHVybiAiaWNvbi1lcnJvciI7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdXBkYXRlSXNzdWVXaWRnZXRGb3JJc3N1ZXM6IGZ1bmN0aW9uKHdpZGdldCwg
aXNzdWVzKQorICAgIF91cGRhdGVJc3N1ZVdpZGdldEZvcklzc3Vlcyh3aWRnZXQsIGlzc3VlcykK
ICAgICB7CiAgICAgICAgIHZhciB3aWRnZXRFbGVtZW50ID0gd2lkZ2V0LndpZGdldEVsZW1lbnQ7
CiAgICAgICAgIHdpZGdldEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKQEAgLTkzMCw5ICs5MTIs
OSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAg
ICAgICB9CiAKICAgICAgICAgd2lkZ2V0LnVwZGF0ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2lzV2lkZ2V0VG9nZ2xlYWJsZTogZnVuY3Rpb24od2lkZ2V0KQorICAgIF9pc1dpZGdldFRvZ2ds
ZWFibGUod2lkZ2V0KQogICAgIHsKICAgICAgICAgaWYgKHdpZGdldFtXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRleHRFZGl0b3IuV2lkZ2V0Q29udGFpbnNNdWx0aXBsZUlzc3Vlc1N5bWJvbF0pCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk0NSw5ICs5MjcsOSBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfaGFuZGxlV2lkZ2V0Q2xpY2s6IGZ1bmN0aW9uKHdpZGdldCwgbGluZU51bWJlciwgZXZlbnQp
CisgICAgX2hhbmRsZVdpZGdldENsaWNrKHdpZGdldCwgbGluZU51bWJlciwgZXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX2lzV2lkZ2V0VG9nZ2xlYWJsZSh3aWRnZXQpKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtOTU2LDEyICs5MzgsMTIgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgbGluZU51bWJlcklzc3Vl
cyA9IHRoaXMuX2lzc3Vlc0xpbmVOdW1iZXJNYXAuZ2V0KGxpbmVOdW1iZXIpOwogICAgICAgICB0
aGlzLl91cGRhdGVJc3N1ZVdpZGdldEZvcklzc3Vlcyh3aWRnZXQsIGxpbmVOdW1iZXJJc3N1ZXMp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2JyZWFrcG9pbnRJbmZvRm9yQnJlYWtwb2ludDogZnVu
Y3Rpb24oYnJlYWtwb2ludCkKKyAgICBfYnJlYWtwb2ludEluZm9Gb3JCcmVha3BvaW50KGJyZWFr
cG9pbnQpCiAgICAgewogICAgICAgICByZXR1cm4ge3Jlc29sdmVkOiBicmVha3BvaW50LnJlc29s
dmVkLCBkaXNhYmxlZDogYnJlYWtwb2ludC5kaXNhYmxlZCwgYXV0b0NvbnRpbnVlOiBicmVha3Bv
aW50LmF1dG9Db250aW51ZX07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgX3N1cHBvcnRzRGVi
dWdnaW5nKCkKICAgICB7CkBAIC05NzAsMjcgKzk1Miw0NiBAQCBXZWJJbnNwZWN0b3IuU291cmNl
Q29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5fc291cmNlQ29k
ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHQpCiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gVGV4dEVk
aXRvciBEZWxlZ2F0ZQogCi0gICAgdGV4dEVkaXRvckJhc2VVUkw6IGZ1bmN0aW9uKHRleHRFZGl0
b3IpCisgICAgdGV4dEVkaXRvckJhc2VVUkwodGV4dEVkaXRvcikKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zb3VyY2VDb2RlLnVybDsKLSAgICB9LAorICAgIH0KIAotICAgIHRleHRFZGl0
b3JTaG91bGRIaWRlTGluZU51bWJlcjogZnVuY3Rpb24odGV4dEVkaXRvciwgbGluZU51bWJlcikK
KyAgICB0ZXh0RWRpdG9yU2hvdWxkSGlkZUxpbmVOdW1iZXIodGV4dEVkaXRvciwgbGluZU51bWJl
cikKICAgICB7CiAgICAgICAgIHJldHVybiBsaW5lTnVtYmVyIGluIHRoaXMuX2ludmFsaWRMaW5l
TnVtYmVyczsKLSAgICB9LAorICAgIH0KIAotICAgIHRleHRFZGl0b3JHdXR0ZXJDb250ZXh0TWVu
dTogZnVuY3Rpb24odGV4dEVkaXRvciwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBlZGl0b3JC
cmVha3BvaW50cywgZXZlbnQpCisgICAgdGV4dEVkaXRvckd1dHRlckNvbnRleHRNZW51KHRleHRF
ZGl0b3IsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgZWRpdG9yQnJlYWtwb2ludHMsIGV2ZW50
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zdXBwb3J0c0RlYnVnZ2luZykKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogCisgICAgICAg
IGZ1bmN0aW9uIGNvbnRpbnVlVG9Mb2NhdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuY29udGludWVUb0xvY2F0aW9uKHNjcmlwdC5pZCwg
c291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIsIHNvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5O
dW1iZXIpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gYWRkQnJlYWtwb2ludCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy50ZXh0RWRpdG9yQnJlYWtwb2lu
dEFkZGVkKHRoaXMsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgICAgICAgICB0aGlz
LnNldEJyZWFrcG9pbnRJbmZvRm9yTGluZUFuZENvbHVtbihkYXRhLmxpbmVOdW1iZXIsIGRhdGEu
Y29sdW1uTnVtYmVyLCBkYXRhLmJyZWFrcG9pbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAg
IGZ1bmN0aW9uIHJldmVhbEluU2lkZWJhcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5kZWJ1Z2dlclNpZGViYXJQYW5lbC5zaG93KCk7CisgICAgICAgICAgICB2YXIgdHJl
ZUVsZW1lbnQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJTaWRlYmFyUGFuZWwudHJlZUVsZW1lbnRG
b3JSZXByZXNlbnRlZE9iamVjdChicmVha3BvaW50KTsKKyAgICAgICAgICAgIGlmICh0cmVlRWxl
bWVudCkKKyAgICAgICAgICAgICAgICB0cmVlRWxlbWVudC5yZXZlYWxBbmRTZWxlY3QoKTsKKyAg
ICAgICAgfQorCiAgICAgICAgIHZhciBjb250ZXh0TWVudSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29u
dGV4dE1lbnUoZXZlbnQpOwogCiAgICAgICAgIC8vIFBhdXNlZC4gQWRkIENvbnRpbnVlIHRvIEhl
cmUgb3B0aW9uIG9ubHkgaWYgd2UgaGF2ZSBhIHNjcmlwdCBpZGVudGlmaWVyIGZvciB0aGUgbG9j
YXRpb24uCkBAIC0xMDA1LDEwICsxMDA2LDYgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0
RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB2YXIgc2NyaXB0ID0gc291cmNl
Q29kZUxvY2F0aW9uLnNvdXJjZUNvZGUuc2NyaXB0Rm9yTG9jYXRpb24oc291cmNlQ29kZUxvY2F0
aW9uKTsKIAogICAgICAgICAgICAgaWYgKHNjcmlwdCkgewotICAgICAgICAgICAgICAgIGZ1bmN0
aW9uIGNvbnRpbnVlVG9Mb2NhdGlvbigpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmNvbnRpbnVlVG9Mb2NhdGlvbihz
Y3JpcHQuaWQsIHNvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyLCBzb3VyY2VDb2RlTG9jYXRp
b24uY29sdW1uTnVtYmVyKTsKLSAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29udGludWUgdG8g
SGVyZSIpLCBjb250aW51ZVRvTG9jYXRpb24pOwogICAgICAgICAgICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZFNlcGFyYXRvcigpOwpAQCAtMTAyNiwxMSArMTAyMyw2IEBAIFdlYkluc3BlY3Rvci5T
b3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gTm8gYnJlYWtw
b2ludHMuCiAgICAgICAgIGlmICghYnJlYWtwb2ludHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICBm
dW5jdGlvbiBhZGRCcmVha3BvaW50KCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2
YXIgZGF0YSA9IHRoaXMudGV4dEVkaXRvckJyZWFrcG9pbnRBZGRlZCh0aGlzLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIpOwotICAgICAgICAgICAgICAgIHRoaXMuc2V0QnJlYWtwb2ludEluZm9G
b3JMaW5lQW5kQ29sdW1uKGRhdGEubGluZU51bWJlciwgZGF0YS5jb2x1bW5OdW1iZXIsIGRhdGEu
YnJlYWtwb2ludEluZm8pOwotICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiQWRkIEJyZWFrcG9pbnQiKSwgYWRk
QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKICAgICAgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsK
QEAgLTEwNDAsMTMgKzEwMzIsNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
cHJvdG90eXBlID0gewogICAgICAgICAvLyBTaW5nbGUgYnJlYWtwb2ludC4KICAgICAgICAgaWYg
KGJyZWFrcG9pbnRzLmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSBicmVha3BvaW50c1swXTsKLSAgICAgICAgICAgIGZ1bmN0aW9uIHJldmVhbEluU2lkZWJhcigp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyU2lk
ZWJhclBhbmVsLnNob3coKTsKLSAgICAgICAgICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJTaWRlYmFyUGFuZWwudHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9i
amVjdChicmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQpCi0gICAg
ICAgICAgICAgICAgICAgIHRyZWVFbGVtZW50LnJldmVhbEFuZFNlbGVjdCgpOwotICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBicmVha3BvaW50LmFwcGVuZENvbnRleHRNZW51SXRlbXMoY29u
dGV4dE1lbnUsIGV2ZW50LnRhcmdldCk7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRT
ZXBhcmF0b3IoKTsKQEAgLTEwODUsOSArMTA3MCw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2Rl
VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdlYkluc3BlY3Rvci5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnRzIiksIHRvZ2dsZUJy
ZWFrcG9pbnRzLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnRzIiksIHJlbW92ZUJyZWFrcG9p
bnRzLmJpbmQodGhpcykpOwogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICB0ZXh0RWRpdG9yQnJlYWtwb2ludEFkZGVkOiBmdW5jdGlvbih0ZXh0RWRpdG9y
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgdGV4dEVkaXRvckJyZWFrcG9pbnRBZGRl
ZCh0ZXh0RWRpdG9yLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuX3N1cHBvcnRzRGVidWdnaW5nKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBA
IC0xMTEzLDkgKzEwOTgsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJv
dG90eXBlID0gewogICAgICAgICAgICAgbGluZU51bWJlcjogbGluZUluZm8ubGluZU51bWJlciwK
ICAgICAgICAgICAgIGNvbHVtbk51bWJlcjogbGluZUluZm8uY29sdW1uTnVtYmVyCiAgICAgICAg
IH07Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0ZXh0RWRpdG9yQnJlYWtwb2ludFJlbW92ZWQ6IGZ1
bmN0aW9uKHRleHRFZGl0b3IsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKKyAgICB0ZXh0RWRp
dG9yQnJlYWtwb2ludFJlbW92ZWQodGV4dEVkaXRvciwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcp
OwogICAgICAgICBpZiAoIXRoaXMuX3N1cHBvcnRzRGVidWdnaW5nKQpAQCAtMTEzMiw5ICsxMTE3
LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5faWdub3JlQnJlYWtwb2ludFJlbW92ZWRCcmVha3BvaW50ID0gYnJlYWtwb2lu
dDsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVha3BvaW50
KGJyZWFrcG9pbnQpOwogICAgICAgICBkZWxldGUgdGhpcy5faWdub3JlQnJlYWtwb2ludEFkZGVk
QnJlYWtwb2ludDsKLSAgICB9LAorICAgIH0KIAotICAgIHRleHRFZGl0b3JCcmVha3BvaW50TW92
ZWQ6IGZ1bmN0aW9uKHRleHRFZGl0b3IsIG9sZExpbmVOdW1iZXIsIG9sZENvbHVtbk51bWJlciwg
bmV3TGluZU51bWJlciwgbmV3Q29sdW1uTnVtYmVyKQorICAgIHRleHRFZGl0b3JCcmVha3BvaW50
TW92ZWQodGV4dEVkaXRvciwgb2xkTGluZU51bWJlciwgb2xkQ29sdW1uTnVtYmVyLCBuZXdMaW5l
TnVtYmVyLCBuZXdDb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLl9zdXBwb3J0c0RlYnVnZ2luZyk7CiAgICAgICAgIGlmICghdGhpcy5fc3VwcG9ydHNEZWJ1
Z2dpbmcpCkBAIC0xMTU5LDkgKzExNDQsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRF
ZGl0b3IucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChhY2N1cmF0ZU5ld0xpbmVJbmZvLmxp
bmVOdW1iZXIgIT09IG5ld0xpbmVJbmZvLmxpbmVOdW1iZXIgfHwgYWNjdXJhdGVOZXdMaW5lSW5m
by5jb2x1bW5OdW1iZXIgIT09IG5ld0xpbmVJbmZvLmNvbHVtbk51bWJlcikKICAgICAgICAgICAg
IHRoaXMudXBkYXRlQnJlYWtwb2ludExpbmVBbmRDb2x1bW4obmV3TGluZUluZm8ubGluZU51bWJl
ciwgbmV3TGluZUluZm8uY29sdW1uTnVtYmVyLCBhY2N1cmF0ZU5ld0xpbmVJbmZvLmxpbmVOdW1i
ZXIsIGFjY3VyYXRlTmV3TGluZUluZm8uY29sdW1uTnVtYmVyKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHRleHRFZGl0b3JCcmVha3BvaW50Q2xpY2tlZDogZnVuY3Rpb24odGV4dEVkaXRvciwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHRleHRFZGl0b3JCcmVha3BvaW50Q2xpY2tlZCh0
ZXh0RWRpdG9yLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLl9zdXBwb3J0c0RlYnVnZ2luZyk7CiAgICAgICAgIGlmICghdGhpcy5f
c3VwcG9ydHNEZWJ1Z2dpbmcpCkBAIC0xMTczLDkgKzExNTgsOSBAQCBXZWJJbnNwZWN0b3IuU291
cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIGJyZWFrcG9pbnQuY3ljbGVUb05leHRNb2RlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB0ZXh0RWRpdG9yVXBkYXRlZEZvcm1hdHRpbmc6IGZ1bmN0aW9uKHRleHRFZGl0b3IpCisgICAg
dGV4dEVkaXRvclVwZGF0ZWRGb3JtYXR0aW5nKHRleHRFZGl0b3IpCiAgICAgewogICAgICAgICB0
aGlzLl9pZ25vcmVBbGxCcmVha3BvaW50TG9jYXRpb25VcGRhdGVzID0gdHJ1ZTsKICAgICAgICAg
dGhpcy5fc291cmNlQ29kZS5mb3JtYXR0ZXJTb3VyY2VNYXAgPSB0aGlzLmZvcm1hdHRlclNvdXJj
ZU1hcDsKQEAgLTEyMTEsMTcgKzExOTYsMTcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0
RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3JlaW5zZXJ0
QWxsSXNzdWVzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXJXaWRnZXRzOiBmdW5jdGlv
bigpCisgICAgX2NsZWFyV2lkZ2V0cygpCiAgICAgewogICAgICAgICBmb3IgKHZhciB3aWRnZXQg
b2YgdGhpcy5fd2lkZ2V0TWFwLnZhbHVlcygpKQogICAgICAgICAgICAgd2lkZ2V0LmNsZWFyKCk7
CiAKICAgICAgICAgdGhpcy5fd2lkZ2V0TWFwLmNsZWFyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcmVpbnNlcnRBbGxJc3N1ZXM6IGZ1bmN0aW9uKCkKKyAgICBfcmVpbnNlcnRBbGxJc3N1ZXMo
KQogICAgIHsKICAgICAgICAgdGhpcy5faXNzdWVzTGluZU51bWJlck1hcC5jbGVhcigpOwogICAg
ICAgICB0aGlzLl9jbGVhcldpZGdldHMoKTsKQEAgLTEyMzEsMTggKzEyMTYsMTggQEAgV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX21hdGNoZXNJc3N1ZShpc3N1ZSkpOwogICAgICAgICAgICAgdGhp
cy5fYWRkSXNzdWUoaXNzdWUpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGVi
dWdnZXJEaWRQYXVzZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RlYnVnZ2VyRGlkUGF1c2UoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLl91cGRhdGVUb2tlblRyYWNraW5nQ29udHJvbGxlclN0
YXRlKCk7CiAgICAgICAgIGlmICh0aGlzLl90eXBlVG9rZW5Bbm5vdGF0b3IgJiYgdGhpcy5fdHlw
ZVRva2VuQW5ub3RhdG9yLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICB0aGlzLl90eXBlVG9rZW5B
bm5vdGF0b3IucmVmcmVzaCgpOwogICAgICAgICBpZiAodGhpcy5fYmFzaWNCbG9ja0Fubm90YXRv
ciAmJiB0aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLmlzQWN0aXZlKCkpCiAgICAgICAgICAgICB0
aGlzLl9iYXNpY0Jsb2NrQW5ub3RhdG9yLnJlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9kZWJ1Z2dlckRpZFJlc3VtZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RlYnVnZ2VyRGlkUmVz
dW1lKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlVG9rZW5UcmFja2luZ0NvbnRy
b2xsZXJTdGF0ZSgpOwogICAgICAgICB0aGlzLl9kaXNtaXNzUG9wb3ZlcigpOwpAQCAtMTI1MCwx
NyArMTIzNSwxNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yLnJlZnJlc2goKTsKICAg
ICAgICAgaWYgKHRoaXMuX2Jhc2ljQmxvY2tBbm5vdGF0b3IgJiYgdGhpcy5fYmFzaWNCbG9ja0Fu
bm90YXRvci5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgdGhpcy5fYmFzaWNCbG9ja0Fubm90YXRv
ci5yZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc291cmNlQ29kZVNvdXJjZU1hcEFk
ZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc291cmNlQ29kZVNvdXJjZU1hcEFkZGVkKGV2ZW50
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLm5vdGlmaWNhdGlvbnMuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuTm90aWZpY2F0aW9uLkdsb2JhbE1vZGlmaWVyS2V5c0RpZENoYW5n
ZSwgdGhpcy5fdXBkYXRlVG9rZW5UcmFja2luZ0NvbnRyb2xsZXJTdGF0ZSwgdGhpcyk7CiAgICAg
ICAgIHRoaXMuX3NvdXJjZUNvZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291
cmNlQ29kZS5FdmVudC5Tb3VyY2VNYXBBZGRlZCwgdGhpcy5fc291cmNlQ29kZVNvdXJjZU1hcEFk
ZGVkLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl91cGRhdGVUb2tlblRyYWNraW5nQ29udHJvbGxl
clN0YXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlVG9rZW5UcmFja2luZ0NvbnRy
b2xsZXJTdGF0ZTogZnVuY3Rpb24oKQorICAgIF91cGRhdGVUb2tlblRyYWNraW5nQ29udHJvbGxl
clN0YXRlKCkKICAgICB7CiAgICAgICAgIHZhciBtb2RlID0gV2ViSW5zcGVjdG9yLkNvZGVNaXJy
b3JUb2tlblRyYWNraW5nQ29udHJvbGxlci5Nb2RlLk5vbmU7CiAgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnBhdXNlZCkKQEAgLTEyOTcsMjAgKzEyODIsMjAgQEAgV2Vi
SW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIubW9kZSA9IG1vZGU7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfaGFzQ29sb3JNYXJrZXJzOiBmdW5jdGlvbigpCisgICAgX2hhc0Nv
bG9yTWFya2VycygpCiAgICAgewogICAgICAgICBmb3IgKHZhciBtYXJrZXIgb2YgdGhpcy5tYXJr
ZXJzKSB7CiAgICAgICAgICAgICBpZiAobWFya2VyLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UZXh0
TWFya2VyLlR5cGUuQ29sb3IpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gQ29kZU1p
cnJvclRva2VuVHJhY2tpbmdDb250cm9sbGVyIERlbGVnYXRlCiAKLSAgICB0b2tlblRyYWNraW5n
Q29udHJvbGxlckNhblJlbGVhc2VIaWdobGlnaHRlZFJhbmdlOiBmdW5jdGlvbih0b2tlblRyYWNr
aW5nQ29udHJvbGxlciwgZWxlbWVudCkKKyAgICB0b2tlblRyYWNraW5nQ29udHJvbGxlckNhblJl
bGVhc2VIaWdobGlnaHRlZFJhbmdlKHRva2VuVHJhY2tpbmdDb250cm9sbGVyLCBlbGVtZW50KQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9wb3BvdmVyKQogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMzE5LDE1ICsxMzA0LDE1IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0b2tlblRyYWNraW5nQ29udHJvbGxl
ckhpZ2hsaWdodGVkUmFuZ2VSZWxlYXNlZDogZnVuY3Rpb24odG9rZW5UcmFja2luZ0NvbnRyb2xs
ZXIpCisgICAgdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZFJhbmdlUmVsZWFzZWQo
dG9rZW5UcmFja2luZ0NvbnRyb2xsZXIpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX21vdXNl
SXNPdmVyUG9wb3ZlcikKICAgICAgICAgICAgIHRoaXMuX2Rpc21pc3NQb3BvdmVyKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB0b2tlblRyYWNraW5nQ29udHJvbGxlckhpZ2hsaWdodGVkUmFuZ2VX
YXNDbGlja2VkOiBmdW5jdGlvbih0b2tlblRyYWNraW5nQ29udHJvbGxlcikKKyAgICB0b2tlblRy
YWNraW5nQ29udHJvbGxlckhpZ2hsaWdodGVkUmFuZ2VXYXNDbGlja2VkKHRva2VuVHJhY2tpbmdD
b250cm9sbGVyKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xs
ZXIubW9kZSAhPT0gV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JUb2tlblRyYWNraW5nQ29udHJvbGxl
ci5Nb2RlLk5vblN5bWJvbFRva2VucykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzNDEsOSAr
MTMyNiw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd09yaWdp
bmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVs
LnNob3dTb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHRva2VuVHJhY2tpbmdDb250cm9sbGVyTmV3SGlnaGxpZ2h0Q2FuZGlkYXRlOiBm
dW5jdGlvbih0b2tlblRyYWNraW5nQ29udHJvbGxlciwgY2FuZGlkYXRlKQorICAgIHRva2VuVHJh
Y2tpbmdDb250cm9sbGVyTmV3SGlnaGxpZ2h0Q2FuZGlkYXRlKHRva2VuVHJhY2tpbmdDb250cm9s
bGVyLCBjYW5kaWRhdGUpCiAgICAgewogICAgICAgICBpZiAodGhpcy50b2tlblRyYWNraW5nQ29u
dHJvbGxlci5tb2RlID09PSBXZWJJbnNwZWN0b3IuQ29kZU1pcnJvclRva2VuVHJhY2tpbmdDb250
cm9sbGVyLk1vZGUuTm9uU3ltYm9sVG9rZW5zKSB7CiAgICAgICAgICAgICB0aGlzLnRva2VuVHJh
Y2tpbmdDb250cm9sbGVyLmhpZ2hsaWdodFJhbmdlKGNhbmRpZGF0ZS5ob3ZlcmVkVG9rZW5SYW5n
ZSk7CkBAIC0xMzY3LDE0ICsxMzUyLDE0IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdGhp
cy5fZGlzbWlzc0VkaXRpbmdDb250cm9sbGVyKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAotICAgIHRva2VuVHJhY2tpbmdDb250cm9sbGVyTW91c2VPdXRPZkhvdmVyZWRNYXJrZXI6IGZ1
bmN0aW9uKHRva2VuVHJhY2tpbmdDb250cm9sbGVyLCBob3ZlcmVkTWFya2VyKQorICAgIHRva2Vu
VHJhY2tpbmdDb250cm9sbGVyTW91c2VPdXRPZkhvdmVyZWRNYXJrZXIodG9rZW5UcmFja2luZ0Nv
bnRyb2xsZXIsIGhvdmVyZWRNYXJrZXIpCiAgICAgewogICAgICAgICB0aGlzLl9kaXNtaXNzRWRp
dGluZ0NvbnRyb2xsZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90b2tlblRyYWNraW5nQ29u
dHJvbGxlckhpZ2hsaWdodGVkSmF2YVNjcmlwdEV4cHJlc3Npb246IGZ1bmN0aW9uKGNhbmRpZGF0
ZSkKKyAgICBfdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZEphdmFTY3JpcHRFeHBy
ZXNzaW9uKGNhbmRpZGF0ZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbmRpZGF0
ZS5leHByZXNzaW9uKTsKIApAQCAtMTQxNCw5ICsxMzk5LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBObyBjYWxsIGZyYW1l
IGF2YWlsYWJsZS4gVXNlIHRoZSBtYWluIHBhZ2UncyBjb250ZXh0LgogICAgICAgICBSdW50aW1l
QWdlbnQuZXZhbHVhdGUuaW52b2tlKHtleHByZXNzaW9uOiBjYW5kaWRhdGUuZXhwcmVzc2lvbiwg
b2JqZWN0R3JvdXA6ICJwb3BvdmVyIiwgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25z
b2xlOiB0cnVlfSwgcG9wdWxhdGUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
dG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZEphdmFTY3JpcHRUeXBlSW5mb3JtYXRp
b246IGZ1bmN0aW9uKGNhbmRpZGF0ZSkKKyAgICBfdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdo
bGlnaHRlZEphdmFTY3JpcHRUeXBlSW5mb3JtYXRpb24oY2FuZGlkYXRlKQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoY2FuZGlkYXRlLmV4cHJlc3Npb24pOwogCkBAIC0xNDQ5LDkgKzE0
MzQsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewog
ICAgICAgICB9CiAKICAgICAgICAgUnVudGltZUFnZW50LmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlh
Ymxlc0F0T2Zmc2V0cyhhbGxSZXF1ZXN0cywgaGFuZGxlci5iaW5kKHRoaXMpKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9zaG93UG9wb3ZlcjogZnVuY3Rpb24oY29udGVudCwgYm91bmRzKQorICAg
IF9zaG93UG9wb3Zlcihjb250ZW50LCBib3VuZHMpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLmNhbmRpZGF0ZSB8fCBib3VuZHMpOwog
CkBAIC0xNDc3LDkgKzE0NjIsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy50b2tlblRyYWNraW5nQ29udHJvbGxlci5o
aWdobGlnaHRSYW5nZShjYW5kaWRhdGUuZXhwcmVzc2lvblJhbmdlKTsKIAogICAgICAgICB0aGlz
Ll90cmFja1BvcG92ZXJFdmVudHMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93UG9wb3Zl
ckZvckZ1bmN0aW9uOiBmdW5jdGlvbihkYXRhKQorICAgIF9zaG93UG9wb3ZlckZvckZ1bmN0aW9u
KGRhdGEpCiAgICAgewogICAgICAgICB2YXIgY2FuZGlkYXRlID0gdGhpcy50b2tlblRyYWNraW5n
Q29udHJvbGxlci5jYW5kaWRhdGU7CiAKQEAgLTE1MTIsOSArMTQ5Nyw5IEBAIFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9z
aG93UG9wb3Zlcihjb250ZW50KTsKICAgICAgICAgfQogICAgICAgICBEZWJ1Z2dlckFnZW50Lmdl
dEZ1bmN0aW9uRGV0YWlscyhkYXRhLm9iamVjdElkLCBkaWRHZXREZXRhaWxzLmJpbmQodGhpcykp
OwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dQb3BvdmVyRm9yT2JqZWN0OiBmdW5jdGlvbihk
YXRhKQorICAgIF9zaG93UG9wb3ZlckZvck9iamVjdChkYXRhKQogICAgIHsKICAgICAgICAgdmFy
IGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgY29udGVu
dC5jbGFzc05hbWUgPSAib2JqZWN0IGV4cGFuZGFibGUiOwpAQCAtMTUzNCwyMiArMTUxOSwyMiBA
QCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAg
ICBib2R5RWxlbWVudC5hcHBlbmRDaGlsZChvYmplY3RUcmVlLmVsZW1lbnQpOwogCiAgICAgICAg
IHRoaXMuX3Nob3dQb3BvdmVyKGNvbnRlbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dQ
b3BvdmVyV2l0aEZvcm1hdHRlZFZhbHVlOiBmdW5jdGlvbihyZW1vdGVPYmplY3QpCisgICAgX3No
b3dQb3BvdmVyV2l0aEZvcm1hdHRlZFZhbHVlKHJlbW90ZU9iamVjdCkKICAgICB7CiAgICAgICAg
IHZhciBjb250ZW50ID0gV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZUVsZW1lbnRG
b3JSZW1vdGVPYmplY3QocmVtb3RlT2JqZWN0KTsKICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXIo
Y29udGVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB3aWxsRGlzbWlzc1BvcG92ZXI6IGZ1bmN0
aW9uKHBvcG92ZXIpCisgICAgd2lsbERpc21pc3NQb3BvdmVyKHBvcG92ZXIpCiAgICAgewogICAg
ICAgICB0aGlzLnRva2VuVHJhY2tpbmdDb250cm9sbGVyLnJlbW92ZUhpZ2hsaWdodGVkUmFuZ2Uo
KTsKIAogICAgICAgICBSdW50aW1lQWdlbnQucmVsZWFzZU9iamVjdEdyb3VwKCJwb3BvdmVyIik7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGlzbWlzc1BvcG92ZXI6IGZ1bmN0aW9uKCkKKyAgICBf
ZGlzbWlzc1BvcG92ZXIoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9wb3BvdmVyKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMTU2MCw5ICsxNTQ1LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJF
dmVudExpc3RlbmVyc0FyZVJlZ2lzdGVyZWQgPSBmYWxzZTsKICAgICAgICAgICAgIHRoaXMuX3Bv
cG92ZXJFdmVudExpc3RlbmVycy51bnJlZ2lzdGVyKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAg
IH0KIAotICAgIF90cmFja1BvcG92ZXJFdmVudHM6IGZ1bmN0aW9uKCkKKyAgICBfdHJhY2tQb3Bv
dmVyRXZlbnRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcG9wb3ZlckV2ZW50TGlzdGVu
ZXJzKSAKICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJFdmVudExpc3RlbmVycyA9IG5ldyBXZWJJ
bnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNldCh0aGlzLCAiUG9wb3ZlciBsaXN0ZW5lcnMiKTsKQEAg
LTE1NzIsMjcgKzE1NTcsMjcgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJFdmVudExpc3RlbmVycy5yZWdp
c3Rlcih0aGlzLl9wb3BvdmVyLmVsZW1lbnQsICJtb3VzZW91dCIsIHRoaXMuX3BvcG92ZXJNb3Vz
ZW91dCk7CiAgICAgICAgICAgICB0aGlzLl9wb3BvdmVyRXZlbnRMaXN0ZW5lcnMuaW5zdGFsbCgp
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcG9wb3Zlck1vdXNlb3ZlcjogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX3BvcG92ZXJNb3VzZW92ZXIoZXZlbnQpCiAgICAgewogICAgICAg
ICB0aGlzLl9tb3VzZUlzT3ZlclBvcG92ZXIgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAg
X3BvcG92ZXJNb3VzZW91dDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BvcG92ZXJNb3VzZW91dChl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX21vdXNlSXNPdmVyUG9wb3ZlciA9IHRoaXMuX3Bv
cG92ZXIuZWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KTsKLSAgICB9LAorICAg
IH0KIAotICAgIF91cGRhdGVFZGl0YWJsZU1hcmtlcnM6IGZ1bmN0aW9uKHJhbmdlKQorICAgIF91
cGRhdGVFZGl0YWJsZU1hcmtlcnMocmFuZ2UpCiAgICAgewogICAgICAgICB0aGlzLmNyZWF0ZUNv
bG9yTWFya2VycyhyYW5nZSk7CiAgICAgICAgIHRoaXMuY3JlYXRlR3JhZGllbnRNYXJrZXJzKHJh
bmdlKTsKIAogICAgICAgICB0aGlzLl91cGRhdGVUb2tlblRyYWNraW5nQ29udHJvbGxlclN0YXRl
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGln
aHRlZE1hcmtlZEV4cHJlc3Npb246IGZ1bmN0aW9uKGNhbmRpZGF0ZSwgbWFya2VycykKKyAgICBf
dG9rZW5UcmFja2luZ0NvbnRyb2xsZXJIaWdobGlnaHRlZE1hcmtlZEV4cHJlc3Npb24oY2FuZGlk
YXRlLCBtYXJrZXJzKQogICAgIHsKICAgICAgICAgLy8gTG9vayBmb3IgdGhlIG91dGVybW9zdCBl
ZGl0YWJsZSBtYXJrZXIuCiAgICAgICAgIHZhciBlZGl0YWJsZU1hcmtlcjsKQEAgLTE2MjksMjAg
KzE2MTQsMjAgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0aGlzLl9lZGl0aW5nQ29udHJvbGxlci5kZWxlZ2F0ZSA9IHRoaXM7CiAg
ICAgICAgIHRoaXMuX2VkaXRpbmdDb250cm9sbGVyLnByZXNlbnRIb3Zlck1lbnUoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9kaXNtaXNzRWRpdGluZ0NvbnRyb2xsZXI6IGZ1bmN0aW9uKGRpc2Ny
ZXRlKQorICAgIF9kaXNtaXNzRWRpdGluZ0NvbnRyb2xsZXIoZGlzY3JldGUpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fZWRpdGluZ0NvbnRyb2xsZXIpCiAgICAgICAgICAgICB0aGlzLl9lZGl0
aW5nQ29udHJvbGxlci5kaXNtaXNzSG92ZXJNZW51KGRpc2NyZXRlKTsKICAgICAgICAgCiAgICAg
ICAgIHRoaXMudG9rZW5UcmFja2luZ0NvbnRyb2xsZXIuaG92ZXJlZE1hcmtlciA9IG51bGw7CiAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9lZGl0aW5nQ29udHJvbGxlcjsKLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIENvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxlciBEZWxlZ2F0ZQogICAgIAotICAgIGVk
aXRpbmdDb250cm9sbGVyRGlkU3RhcnRFZGl0aW5nOiBmdW5jdGlvbihlZGl0aW5nQ29udHJvbGxl
cikKKyAgICBlZGl0aW5nQ29udHJvbGxlckRpZFN0YXJ0RWRpdGluZyhlZGl0aW5nQ29udHJvbGxl
cikKICAgICB7CiAgICAgICAgIC8vIFdlIGNhbiBwYXVzZSB0aGUgdG9rZW4gdHJhY2tpbmcgY29u
dHJvbGxlciBkdXJpbmcgZWRpdGluZywgaXQgd2lsbCBiZSByZXNldAogICAgICAgICAvLyB0byB0
aGUgZXhwZWN0ZWQgc3RhdGUgYnkgY2FsbGluZyBfdXBkYXRlRWRpdGFibGVNYXJrZXJzKCkgaW4g
dGhlCkBAIC0xNjU0LDE4ICsxNjM5LDE4IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVk
aXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIAogICAgICAgICAvLyBXZSBpZ25vcmUgY29udGVu
dCBjaGFuZ2VzIG1hZGUgYXMgYSByZXN1bHQgb2YgY29sb3IgZWRpdGluZy4KICAgICAgICAgdGhp
cy5faWdub3JlQ29udGVudERpZENoYW5nZSsrOwotICAgIH0sCisgICAgfQogICAgIAotICAgIGVk
aXRpbmdDb250cm9sbGVyRGlkRmluaXNoRWRpdGluZzogZnVuY3Rpb24oZWRpdGluZ0NvbnRyb2xs
ZXIpCisgICAgZWRpdGluZ0NvbnRyb2xsZXJEaWRGaW5pc2hFZGl0aW5nKGVkaXRpbmdDb250cm9s
bGVyKQogICAgIHsKICAgICAgICAgdGhpcy5fdXBkYXRlRWRpdGFibGVNYXJrZXJzKGVkaXRpbmdD
b250cm9sbGVyLnJhbmdlKTsKIAogICAgICAgICB0aGlzLl9pZ25vcmVDb250ZW50RGlkQ2hhbmdl
LS07CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2VkaXRpbmdDb250cm9sbGVyOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZTogZnVuY3Rpb24o
c2hvdWxkQWN0aXZhdGUpCisgICAgX3NldFR5cGVUb2tlbkFubm90YXRvckVuYWJsZWRTdGF0ZShz
aG91bGRBY3RpdmF0ZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3R5cGVU
b2tlbkFubm90YXRvcik7CiAgICAgICAgIGlmICghdGhpcy5fdHlwZVRva2VuQW5ub3RhdG9yKQpA
QCAtMTcwMCw5ICsxNjg1LDkgQEAgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9y
bWF0aW9uU2V0dGluZy52YWx1ZSA9IHNob3VsZEFjdGl2YXRlOwogCiAgICAgICAgIHRoaXMuX3Vw
ZGF0ZVRva2VuVHJhY2tpbmdDb250cm9sbGVyU3RhdGUoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9nZXRBc3NvY2lhdGVkU2NyaXB0OiBmdW5jdGlvbigpCisgICAgX2dldEFzc29jaWF0ZWRTY3Jp
cHQoKQogICAgIHsKICAgICAgICAgdmFyIHNjcmlwdCA9IG51bGw7CiAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIG5lZWRzIHRvIG1lIG1vZGlmaWVkIHRvIHdvcmsgd2l0aCBIVE1MIGZpbGVzIHdpdGgg
aW5saW5lIHNjcmlwdCB0YWdzLgpAQCAtMTcxMSw5ICsxNjk2LDkgQEAgV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxzZSBpZiAodGhpcy5f
c291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSAmJiB0aGlzLl9zb3Vy
Y2VDb2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlLlNjcmlwdCAmJiB0aGlz
Ll9zb3VyY2VDb2RlLnNjcmlwdHMubGVuZ3RoKQogICAgICAgICAgICAgc2NyaXB0ID0gdGhpcy5f
c291cmNlQ29kZS5zY3JpcHRzWzBdOwogICAgICAgICByZXR1cm4gc2NyaXB0OwotICAgIH0sCisg
ICAgfQogCi0gICAgX21ha2VUeXBlVG9rZW5Bbm5vdGF0b3I6IGZ1bmN0aW9uKCkKKyAgICBfbWFr
ZVR5cGVUb2tlbkFubm90YXRvcigpCiAgICAgewogICAgICAgICBpZiAoIVJ1bnRpbWVBZ2VudC5n
ZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xNzIzLDkgKzE3MDgsOSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3R5cGVU
b2tlbkFubm90YXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVHlwZVRva2VuQW5ub3RhdG9yKHRoaXMs
IHNjcmlwdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWFrZUJhc2ljQmxvY2tBbm5vdGF0b3I6
IGZ1bmN0aW9uKCkKKyAgICBfbWFrZUJhc2ljQmxvY2tBbm5vdGF0b3IoKQogICAgIHsKICAgICAg
ICAgaWYgKCFSdW50aW1lQWdlbnQuZ2V0QmFzaWNCbG9ja3MpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xNzM1LDI0ICsxNzIwLDI0IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRv
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fYmFz
aWNCbG9ja0Fubm90YXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuQmFzaWNCbG9ja0Fubm90YXRvcih0
aGlzLCBzY3JpcHQpOwotICAgIH0sCisgICAgfQogCi0gICAgX2VuYWJsZVNjcm9sbEV2ZW50c0Zv
clR5cGVUb2tlbkFubm90YXRvcjogZnVuY3Rpb24oKQorICAgIF9lbmFibGVTY3JvbGxFdmVudHNG
b3JUeXBlVG9rZW5Bbm5vdGF0b3IoKQogICAgIHsKICAgICAgICAgLy8gUGF1c2UgdXBkYXRpbmcg
dHlwZSB0b2tlbnMgd2hpbGUgc2Nyb2xsaW5nIHRvIHByZXZlbnQgZnJhbWUgbG9zcy4KICAgICAg
ICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIpOwogICAgICAg
ICB0aGlzLl90eXBlVG9rZW5TY3JvbGxIYW5kbGVyID0gdGhpcy5fbWFrZVR5cGVUb2tlblNjcm9s
bEV2ZW50SGFuZGxlcigpOwogICAgICAgICB0aGlzLmFkZFNjcm9sbEhhbmRsZXIodGhpcy5fdHlw
ZVRva2VuU2Nyb2xsSGFuZGxlcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGlzYWJsZVNjcm9s
bEV2ZW50c0ZvclR5cGVUb2tlbkFubm90YXRvcjogZnVuY3Rpb24oKQorICAgIF9kaXNhYmxlU2Ny
b2xsRXZlbnRzRm9yVHlwZVRva2VuQW5ub3RhdG9yKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIpOwogICAgICAgICB0aGlzLnJlbW92
ZVNjcm9sbEhhbmRsZXIodGhpcy5fdHlwZVRva2VuU2Nyb2xsSGFuZGxlcik7CiAgICAgICAgIHRo
aXMuX3R5cGVUb2tlblNjcm9sbEhhbmRsZXIgPSBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAg
X21ha2VUeXBlVG9rZW5TY3JvbGxFdmVudEhhbmRsZXI6IGZ1bmN0aW9uKCkKKyAgICBfbWFrZVR5
cGVUb2tlblNjcm9sbEV2ZW50SGFuZGxlcigpCiAgICAgewogICAgICAgICB2YXIgdGltZW91dElk
ZW50aWZpZXIgPSBudWxsOwogICAgICAgICBmdW5jdGlvbiBzY3JvbGxIYW5kbGVyKCkKQEAgLTE3
NzksNCArMTc2NCwxNyBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90
eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlOwor
V2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkxpbmVFcnJvclN0eWxlQ2xhc3NOYW1l
ID0gImVycm9yIjsKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5MaW5lV2Fybmlu
Z1N0eWxlQ2xhc3NOYW1lID0gIndhcm5pbmciOworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0
RWRpdG9yLlBvcG92ZXJEZWJ1Z2dlckNvbnRlbnRTdHlsZUNsYXNzTmFtZSA9ICJkZWJ1Z2dlci1w
b3BvdmVyLWNvbnRlbnQiOworV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkhvdmVy
ZWRFeHByZXNzaW9uSGlnaGxpZ2h0U3R5bGVDbGFzc05hbWUgPSAiaG92ZXJlZC1leHByZXNzaW9u
LWhpZ2hsaWdodCI7CitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRHVyYXRpb25U
b01vdXNlT3ZlclRva2VuVG9NYWtlSG92ZXJlZFRva2VuID0gNTAwOworV2ViSW5zcGVjdG9yLlNv
dXJjZUNvZGVUZXh0RWRpdG9yLkR1cmF0aW9uVG9Nb3VzZU91dE9mSG92ZXJlZFRva2VuVG9SZWxl
YXNlID0gMTAwMDsKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5EdXJhdGlvblRv
VXBkYXRlVHlwZVRva2Vuc0FmdGVyU2Nyb2xsaW5nID0gMTAwOworV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yLkF1dG9Gb3JtYXRNaW5pbXVtTGluZUxlbmd0aCA9IDUwMDsKK1dlYklu
c3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5XaWRnZXRDb250YWluc011bHRpcGxlSXNzdWVz
U3ltYm9sID0gU3ltYm9sKCJzb3VyY2UtY29kZS13aWRnZXQtY29udGFpbnMtbXVsdGlwbGUtaXNz
dWVzIik7CisKK1dlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5FdmVudCA9IHsKKyAg
ICBDb250ZW50V2lsbFBvcHVsYXRlOiAic291cmNlLWNvZGUtdGV4dC1lZGl0b3ItY29udGVudC13
aWxsLXBvcHVsYXRlIiwKKyAgICBDb250ZW50RGlkUG9wdWxhdGU6ICJzb3VyY2UtY29kZS10ZXh0
LWVkaXRvci1jb250ZW50LWRpZC1wb3B1bGF0ZSIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGltZWxpbmVUaW1lbGlu
ZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCmluZGV4IGEwMjEy
MzAuLmQyZGE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1l
bGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDQxICsyMywzNiBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGlt
ZWxpbmVUaW1lbGluZURhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHNvdXJjZUNvZGVUaW1lbGluZSwg
Z3JhcGhEYXRhU291cmNlKQorV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5l
RGF0YUdyaWROb2RlID0gY2xhc3MgU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5v
ZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCB0cnVlLCBncmFwaERhdGFT
b3VyY2UpOworICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGVUaW1lbGluZSwgZ3JhcGhEYXRhU291
cmNlKQorICAgIHsKKyAgICAgICAgc3VwZXIodHJ1ZSwgZ3JhcGhEYXRhU291cmNlKTsKIAogICAg
ICAgICB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmUgPSBzb3VyY2VDb2RlVGltZWxpbmU7CiAgICAg
ICAgIHRoaXMuX3NvdXJjZUNvZGVUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fdGltZWxpbmVSZWNvcmRBZGRlZCwg
dGhpcyk7Ci19OwotCi0vLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVj
YXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxp
bmVUaW1lbGluZURhdGFHcmlkTm9kZSk7Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxp
bmVUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUaW1lbGluZURhdGFHcmlkTm9kZSwKLSAgICBf
X3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUsCisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgcmVjb3JkcygpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fc291cmNlQ29kZVRpbWVsaW5lLnJlY29yZHM7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgc291cmNlQ29kZVRpbWVsaW5lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zb3VyY2VDb2RlVGltZWxpbmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgp
CiAgICAgewogICAgICAgICByZXR1cm4ge2dyYXBoOiB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmUu
c3RhcnRUaW1lfTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF90aW1l
bGluZVJlY29yZEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGltZWxpbmVSZWNvcmRBZGRl
ZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmlzUmVjb3JkVmlzaWJsZShldmVudC5k
YXRhLnJlY29yZCkpCiAgICAgICAgICAgICB0aGlzLm5lZWRzR3JhcGhSZWZyZXNoKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VD
b2RlVGltZWxpbmVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50LmpzCmluZGV4IDBjNjM1
NTYuLjFkMzU4MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRyZWVF
bGVtZW50LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMywyNCArMjMsMjUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lVHJlZUVsZW1lbnQg
PSBmdW5jdGlvbihzb3VyY2VDb2RlVGltZWxpbmUsIHN1YnRpdGxlTmFtZVN0eWxlLCBpbmNsdWRl
VGltZXJJZGVudGlmaWVySW5NYWluVGl0bGUpCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVs
aW5lVHJlZUVsZW1lbnQgPSBjbGFzcyBTb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudCBleHRl
bmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50Cit7CisgICAgY29uc3Ry
dWN0b3Ioc291cmNlQ29kZVRpbWVsaW5lLCBzdWJ0aXRsZU5hbWVTdHlsZSwgaW5jbHVkZVRpbWVy
SWRlbnRpZmllckluTWFpblRpdGxlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc291
cmNlQ29kZVRpbWVsaW5lKTsKIAotICAgIHRoaXMuX3NvdXJjZUNvZGVUaW1lbGluZSA9IHNvdXJj
ZUNvZGVUaW1lbGluZTsKLQogICAgICAgICBzdWJ0aXRsZU5hbWVTdHlsZSA9IHN1YnRpdGxlTmFt
ZVN0eWxlIHx8IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uTmFtZVN0eWxlLk5vbmU7
CiAKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5jYWxsKHRoaXMs
IHNvdXJjZUNvZGVUaW1lbGluZS5yZWNvcmRzWzBdLCBzdWJ0aXRsZU5hbWVTdHlsZSwgaW5jbHVk
ZVRpbWVySWRlbnRpZmllckluTWFpblRpdGxlLCBzb3VyY2VDb2RlVGltZWxpbmUuc291cmNlQ29k
ZUxvY2F0aW9uLCBzb3VyY2VDb2RlVGltZWxpbmUpOwotfTsKKyAgICAgICAgc3VwZXIoc291cmNl
Q29kZVRpbWVsaW5lLnJlY29yZHNbMF0sIHN1YnRpdGxlTmFtZVN0eWxlLCBpbmNsdWRlVGltZXJJ
ZGVudGlmaWVySW5NYWluVGl0bGUsIHNvdXJjZUNvZGVUaW1lbGluZS5zb3VyY2VDb2RlTG9jYXRp
b24sIHNvdXJjZUNvZGVUaW1lbGluZSk7CiAKLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxp
bmVUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5f
c291cmNlQ29kZVRpbWVsaW5lID0gc291cmNlQ29kZVRpbWVsaW5lOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCi0gICAgcmVjb3JkOiB1bmRlZmluZWQsCisgICAgZ2V0IHJlY29yZCgpCisgICAg
eworICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0KIAogICAgIGdldCBzb3VyY2VDb2Rl
VGltZWxpbmUoKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUcmVlRWxlbWVudC5qcwppbmRl
eCA4NzAzZDdiLi4zNTczNDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRyZWVFbGVtZW50Lmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMywyNCArMjMsMjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc291cmNl
Q29kZSwgY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCwgaGFz
Q2hpbGRyZW4pCitXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50ID0gY2xhc3MgU291
cmNlQ29kZVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVlRWxl
bWVudAoreworICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGUsIGNsYXNzTmFtZXMsIHRpdGxlLCBz
dWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoc291cmNlQ29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlKTsKIAotICAgIFdlYkluc3BlY3Rvci5Gb2xkZXJpemVkVHJlZUVsZW1lbnQuY2FsbCh0aGlz
LCBjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0IHx8IHNvdXJj
ZUNvZGUsIGhhc0NoaWxkcmVuKTsKKyAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1
YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCB8fCBzb3VyY2VDb2RlLCBoYXNDaGlsZHJlbik7CiAK
ICAgICAgICAgdGhpcy5zbWFsbCA9IHRydWU7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlU291cmNl
Q29kZShzb3VyY2VDb2RlKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU291cmNlQ29k
ZVRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkZvbGRlcml6ZWRUcmVl
RWxlbWVudC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICB1cGRhdGVT
b3VyY2VNYXBSZXNvdXJjZXM6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVTb3VyY2VNYXBSZXNvdXJj
ZXMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lIHx8ICF0aGlzLnRyZWVP
dXRsaW5lLmluY2x1ZGVTb3VyY2VNYXBSZXNvdXJjZUNoaWxkcmVuKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtNTAsMTggKzQ4LDE4IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1l
bnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbikKICAgICAg
ICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIE92
ZXJyaWRlcyBmcm9tIFRyZWVFbGVtZW50CiAKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAg
IG9uYXR0YWNoKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1l
bnQucHJvdG90eXBlLm9uYXR0YWNoLmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy51cGRhdGVT
b3VyY2VNYXBSZXNvdXJjZXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIG9ucG9wdWxhdGU6IGZ1
bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy50cmVl
T3V0bGluZSB8fCAhdGhpcy50cmVlT3V0bGluZS5pbmNsdWRlU291cmNlTWFwUmVzb3VyY2VDaGls
ZHJlbikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEzMCwxMSArMTI4LDExIEBAIFdlYkluc3Bl
Y3Rvci5Tb3VyY2VDb2RlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogCiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkKICAgICAgICAgICAgIGZp
bmRBbmRDb21iaW5lRm9sZGVyQ2hhaW5zKHRoaXMuY2hpbGRyZW5baV0sIG51bGwpOwotICAgIH0s
CisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBjcmVhdGVGb2xkZXJzQXNOZWVkZWRG
b3JTdWJwYXRoOiBmdW5jdGlvbihzdWJwYXRoKQorICAgIGNyZWF0ZUZvbGRlcnNBc05lZWRlZEZv
clN1YnBhdGgoc3VicGF0aCkKICAgICB7CiAgICAgICAgIGlmICghc3VicGF0aCkKICAgICAgICAg
ICAgIHJldHVybiB0aGlzOwpAQCAtMTY5LDkgKzE2Nyw5IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VD
b2RlVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJu
IGN1cnJlbnRGb2xkZXJUcmVlRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIGRlc2NlbmRh
bnRSZXNvdXJjZVRyZWVFbGVtZW50VHlwZURpZENoYW5nZTogZnVuY3Rpb24oY2hpbGRUcmVlRWxl
bWVudCwgb2xkVHlwZSkKKyAgICBkZXNjZW5kYW50UmVzb3VyY2VUcmVlRWxlbWVudFR5cGVEaWRD
aGFuZ2UoY2hpbGRUcmVlRWxlbWVudCwgb2xkVHlwZSkKICAgICB7CiAgICAgICAgIC8vIENhbGxl
ZCBieSBkZXNjZW5kYW50IFNvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnRzLgogCkBAIC0xODUs
MTEgKzE4MywxMSBAQCBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBpZiAod2FzU2VsZWN0ZWQpCiAgICAgICAgICAgICBjaGlsZFRyZWVF
bGVtZW50LnJldmVhbEFuZFNlbGVjdCh0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQgKFJlc291cmNlVHJlZUVsZW1lbnQgY2FsbHMgdGhp
cyB3aGVuIGl0cyBSZXNvdXJjZSBjaGFuZ2VzIGR5bmFtaWNhbGx5IGZvciBGcmFtZXMpCiAKLSAg
ICBfdXBkYXRlU291cmNlQ29kZTogZnVuY3Rpb24oc291cmNlQ29kZSkKKyAgICBfdXBkYXRlU291
cmNlQ29kZShzb3VyY2VDb2RlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNl
Q29kZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlTWFwUmVzb3Vy
Y2VUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZU1hcFJlc291cmNlVHJlZUVsZW1lbnQuanMKaW5kZXggNWQxYjQ4NC4uMDg3MjJh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
U291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50LmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MywyNSArMjMsMjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHNv
dXJjZU1hcFJlc291cmNlLCByZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5Tb3VyY2VN
YXBSZXNvdXJjZVRyZWVFbGVtZW50ID0gY2xhc3MgU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVu
dCBleHRlbmRzIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRyZWVFbGVtZW50Cit7CisgICAgY29uc3Ry
dWN0b3Ioc291cmNlTWFwUmVzb3VyY2UsIHJlcHJlc2VudGVkT2JqZWN0KQogICAgIHsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQoc291cmNlTWFwUmVzb3VyY2UgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuU291cmNlTWFwUmVzb3VyY2UpOwogCi0gICAgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVs
ZW1lbnQuY2FsbCh0aGlzLCBzb3VyY2VNYXBSZXNvdXJjZSk7CisgICAgICAgIHN1cGVyKHNvdXJj
ZU1hcFJlc291cmNlKTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLnJlc291cmNlID09
PSBzb3VyY2VNYXBSZXNvdXJjZSk7CiAKLSAgICB0aGlzLmFkZENsYXNzTmFtZShXZWJJbnNwZWN0
b3IuU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSk7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudC5TdHlsZUNsYXNzTmFtZSA9
ICJzb3VyY2UtbWFwLXJlc291cmNlIjsKLQotV2ViSW5zcGVjdG9yLlNvdXJjZU1hcFJlc291cmNl
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
U291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudCwKKyAgICAgICAgdGhpcy5hZGRDbGFzc05hbWUo
InNvdXJjZS1tYXAtcmVzb3VyY2UiKTsKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAg
IF91cGRhdGVUaXRsZXM6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlVGl0bGVzKCkKICAgICB7CiAg
ICAgICAgIHZhciBvbGRNYWluVGl0bGUgPSB0aGlzLm1haW5UaXRsZTsKICAgICAgICAgdGhpcy5t
YWluVGl0bGUgPSB0aGlzLnJlc291cmNlLmRpc3BsYXlOYW1lOwpAQCAtNTYsNSArNTMsMyBAQCBX
ZWJJbnNwZWN0b3IuU291cmNlTWFwUmVzb3VyY2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLmNhbGxGaXJzdEFuY2VzdG9yRnVuY3Rpb24oImRlc2NlbmRhbnRSZXNv
dXJjZVRyZWVFbGVtZW50TWFpblRpdGxlRGlkQ2hhbmdlIiwgW3RoaXMsIG9sZE1haW5UaXRsZV0p
OwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5Tb3VyY2VNYXBSZXNvdXJjZVRyZWVFbGVtZW50
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRWxlbWVudC5w
cm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TdG9yYWdlVHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9TdG9yYWdlVHJlZUVsZW1lbnQuanMKaW5kZXggZGM3MmU4Yi4uNjI4
NmE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU3RvcmFnZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1N0b3JhZ2VUcmVlRWxlbWVudC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjMgKzIzLDIyIEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlN0
b3JhZ2VUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKGNsYXNzTmFtZXMsIHRpdGxlLCByZXByZXNlbnRl
ZE9iamVjdCkKK1dlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQgPSBjbGFzcyBTdG9yYWdl
VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50CiB7Ci0g
ICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIGNsYXNzTmFtZXMs
IHRpdGxlLCBudWxsLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOworICAgIGNvbnN0cnVjdG9y
KGNsYXNzTmFtZXMsIHRpdGxlLCByZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIHN1
cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBudWxsLCByZXByZXNlbnRlZE9iamVjdCwgZmFsc2UpOwog
CiAgICAgICAgIHRoaXMuc21hbGwgPSB0cnVlOwogICAgICAgICB0aGlzLmZsYXR0ZW5lZCA9IGZh
bHNlOwotfTsKLQotV2ViSW5zcGVjdG9yLlN0b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQsCisgICAg
fQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZmxhdHRlbmVkKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9mbGF0dGVuZWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZmxhdHRl
bmVkKGZsYXR0ZW5lZCkKICAgICB7CkBAIC01NywxMSArNTYsMTEgQEAgV2ViSW5zcGVjdG9yLlN0
b3JhZ2VUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMubWFpblRpdGxlID0g
dGhpcy5jYXRlZ29yeU5hbWU7CiAgICAgICAgIHRoaXMuc3VidGl0bGUgPSB0aGlzLm5hbWU7CiAg
ICAgICAgIHRoaXMuX3VwZGF0ZUNoaWxkcmVuVGl0bGVzKCk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRlQ2hpbGRyZW5UaXRsZXM6IGZ1bmN0aW9uKCkKKyAg
ICBfdXBkYXRlQ2hpbGRyZW5UaXRsZXMoKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBpZiAodHlwZW9m
IHRoaXMuY2hpbGRyZW5baV0udXBkYXRlVGl0bGVzID09PSAiZnVuY3Rpb24iKQpAQCAtNjksNSAr
NjgsMyBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5TdG9yYWdlVHJlZUVsZW1lbnQucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90
eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcwppbmRleCA0MWY2MzU3Li4wZGFlMWM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TdHls
ZURldGFpbHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TdHlsZURldGFpbHNQYW5lbC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDMgKzIzLDQyIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWls
c1BhbmVsID0gZnVuY3Rpb24oY2xhc3NOYW1lLCBpZGVudGlmaWVyLCBsYWJlbCkKK1dlYkluc3Bl
Y3Rvci5TdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFN0eWxlRGV0YWlsc1BhbmVsIGV4dGVuZHMg
V2ViSW5zcGVjdG9yLk9iamVjdAogeworICAgIGNvbnN0cnVjdG9yKGNsYXNzTmFtZSwgaWRlbnRp
ZmllciwgbGFiZWwpCisgICAgeworICAgICAgICBzdXBlcigpOworCiAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7CiAKICAgICAgICAgLy8gQWRkIHRoaXMgb2Zmc2V0
LXNlY3Rpb25zIGNsYXNzIG5hbWUgc28gdGhlIHN0aWNreSBoZWFkZXJzIGRvbid0IG92ZXJsYXAg
dGhlIG5hdmlnYXRpb24gYmFyLgotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5PZmZzZXRTZWN0aW9uc1N0eWxlQ2xhc3NOYW1lKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm9mZnNldC1zZWN0aW9ucyIpOwog
CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5SYWRpb0J1
dHRvbk5hdmlnYXRpb25JdGVtKGlkZW50aWZpZXIsIGxhYmVsKTsKIAogICAgICAgICB0aGlzLl9u
b2RlU3R5bGVzID0gbnVsbDsKICAgICAgICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlOwotfTsKLQot
V2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLk9mZnNldFNlY3Rpb25zU3R5bGVDbGFzc05h
bWUgPSAib2Zmc2V0LXNlY3Rpb25zIjsKLQotV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVs
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWls
c1BhbmVsLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgbmF2aWdhdGlvbkl0ZW0oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25hdmlnYXRp
b25JdGVtOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5vZGVTdHlsZXMoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX25vZGVTdHlsZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93
bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl92aXNp
YmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjcsMTkgKzY2LDE5IEBAIFdlYkluc3BlY3Rv
ci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Zpc2libGUg
PSB0cnVlOwogCiAgICAgICAgIHRoaXMuX3JlZnJlc2hOb2RlU3R5bGVzKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAg
ICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgd2lkdGhEaWRD
aGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICB3aWR0aERpZENoYW5nZSgpCiAgICAgewogICAgICAgICAv
LyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgbWFya0Fz
TmVlZHNSZWZyZXNoOiBmdW5jdGlvbihkb21Ob2RlKQorICAgIG1hcmtBc05lZWRzUmVmcmVzaChk
b21Ob2RlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tTm9kZSk7CiAgICAgICAg
IGlmICghZG9tTm9kZSkKQEAgLTEwNSwxMiArMTA0LDEyIEBAIFdlYkluc3BlY3Rvci5TdHlsZURl
dGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuX3Zpc2libGUpCiAg
ICAgICAgICAgICB0aGlzLl9yZWZyZXNoTm9kZVN0eWxlcygpOwotICAgIH0sCisgICAgfQogCi0g
ICAgcmVmcmVzaDogZnVuY3Rpb24oc2lnbmlmaWNhbnRDaGFuZ2UpCisgICAgcmVmcmVzaChzaWdu
aWZpY2FudENoYW5nZSkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNz
ZXMuCi0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKQEAgLTExOSwxNiArMTE4LDE2
IEBAIFdlYkluc3BlY3Rvci5TdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGlmICghV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5jYW5Gb3JjZVBzZXVkb0NsYXNzZXMo
KSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gdGhpcy5ub2RlU3R5bGVz
Lm5vZGUuZW5hYmxlZFBzZXVkb0NsYXNzZXMubGVuZ3RoID8gMCA6IFdlYkluc3BlY3Rvci5DU1NT
dHlsZURldGFpbHNTaWRlYmFyUGFuZWwuTm9Gb3JjZWRQc2V1ZG9DbGFzc2VzU2Nyb2xsT2Zmc2V0
OwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hOb2RlU3R5bGVzOiBmdW5jdGlvbigpCisg
ICAgX3JlZnJlc2hOb2RlU3R5bGVzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbm9kZVN0
eWxlcykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fbm9kZVN0eWxlcy5yZWZy
ZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVmcmVzaFByZXNlcnZpbmdTY3JvbGxQb3Np
dGlvbjogZnVuY3Rpb24oc2lnbmlmaWNhbnRDaGFuZ2UpCisgICAgX3JlZnJlc2hQcmVzZXJ2aW5n
U2Nyb2xsUG9zaXRpb24oc2lnbmlmaWNhbnRDaGFuZ2UpCiAgICAgewogICAgICAgICBzaWduaWZp
Y2FudENoYW5nZSA9IHRoaXMuX2ZvcmNlU2lnbmlmaWNhbnRDaGFuZ2UgfHwgc2lnbmlmaWNhbnRD
aGFuZ2UgfHwgZmFsc2U7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9mb3JjZVNpZ25pZmljYW50Q2hh
bmdlOwpAQCAtMTQ1LDE5ICsxNDQsMTcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVs
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5lbGVtZW50LnBhcmVudE5vZGUpCiAg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQucGFyZW50Tm9kZS5zY3JvbGxUb3AgPSBwcmV2aW91c1Nj
cm9sbFRvcDsKLSAgICB9LAorICAgIH0KIAotICAgIF9ub2RlU3R5bGVzUmVmcmVzaGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfbm9kZVN0eWxlc1JlZnJlc2hlZChldmVudCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl92aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFByZXNlcnZp
bmdTY3JvbGxQb3NpdGlvbihldmVudC5kYXRhLnNpZ25pZmljYW50Q2hhbmdlKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9ub2RlU3R5bGVzTmVlZHNSZWZyZXNoZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9ub2RlU3R5bGVzTmVlZHNSZWZyZXNoZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fdmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hOb2RlU3R5bGVzKCk7CiAg
ICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlN0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250ZW50Vmlldy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250ZW50Vmll
dy5qcwppbmRleCBkMWM1NjI3Li41ODJjODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0Q29udGVudFZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3LmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MywxMSArMjMsMTMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRWaWV3ID0gZnVuY3Rpb24oc3RyaW5nLCBtaW1lVHlw
ZSkKK1dlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcgPSBjbGFzcyBUZXh0Q29udGVudFZpZXcg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcuY2FsbCh0aGlzLCBzdHJpbmcpOworICAgIGNvbnN0cnVjdG9yKHN0cmluZywgbWlt
ZVR5cGUpCisgICAgeworICAgICAgICBzdXBlcihzdHJpbmcpOwogCi0gICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRleHRDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFt
ZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0ZXh0Iik7CiAKICAgICAg
ICAgdGhpcy5fdGV4dEVkaXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvcjsKICAgICAg
ICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yLkV2ZW50Lk51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcy5fbnVtYmVyT2ZT
ZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzKTsKQEAgLTU1LDEyOSArNTcsMTIyIEBAIFdlYklu
c3BlY3Rvci5UZXh0Q29udGVudFZpZXcgPSBmdW5jdGlvbihzdHJpbmcsIG1pbWVUeXBlKQogICAg
ICAgICB2YXIgYWN0aXZhdGVkVG9vbFRpcFR5cGVzID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJI
aWRlIHR5cGUgaW5mb3JtYXRpb24iKTsKICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2
aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0
ZW0oInNob3ctdHlwZXMiLCB0b29sVGlwVHlwZXMsIGFjdGl2YXRlZFRvb2xUaXBUeXBlcywgIklt
YWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIsIDEzLCAxNCk7CiAgICAgICAgIHRoaXMuX3No
b3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKLX07Ci0KLVdlYklu
c3BlY3Rvci5UZXh0Q29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAidGV4dCI7Ci0KLVdlYklu
c3BlY3Rvci5UZXh0Q29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRWaWV3LAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAg
ICAgZ2V0IHRleHRFZGl0b3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFZGl0
b3I7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBbdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhp
cy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW1dOwotICAgIH0sCisgICAgfQogCi0gICAg
cmV2ZWFsUG9zaXRpb246IGZ1bmN0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9y
Y2VVbmZvcm1hdHRlZCkKKyAgICByZXZlYWxQb3NpdGlvbihwb3NpdGlvbiwgdGV4dFJhbmdlVG9T
ZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9y
LnJldmVhbFBvc2l0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1h
dHRlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3du
KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUuc2hv
d24uY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnNob3duKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4uY2FsbCh0
aGlzKTsKIAogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmhpZGRlbigpOwotICAgIH0sCisgICAg
fQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2VkLmNhbGwodGhpcyk7CiAK
ICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5jbG9zZSgpOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHN1cHBvcnRzU2F2ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBzYXZlRGF0YSgpCiAgICAgewogICAgICAgICB2YXIgdXJsID0gIndl
Yi1pbnNwZWN0b3I6Ly8vIiArIGVuY29kZVVSSShXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlVudGl0
bGVkIikpICsgIi50eHQiOwogICAgICAgICByZXR1cm4ge3VybCwgY29udGVudDogdGhpcy5fdGV4
dEVkaXRvci5zdHJpbmcsIGZvcmNlU2F2ZUFzOiB0cnVlfTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBzdXBwb3J0c1NlYXJjaCgpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBudW1iZXJPZlNlYXJjaFJlc3VsdHMoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3RleHRFZGl0b3IubnVtYmVyT2ZTZWFyY2hSZXN1bHRzOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGhhc1BlcmZvcm1lZFNlYXJjaCgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fdGV4dEVkaXRvci5jdXJyZW50U2VhcmNoUXVlcnkgIT09IG51bGw7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgYXV0b21hdGljYWxseVJldmVhbEZpcnN0U2VhcmNoUmVzdWx0
KHJldmVhbCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYXV0b21hdGljYWxseVJl
dmVhbEZpcnN0U2VhcmNoUmVzdWx0ID0gcmV2ZWFsOwotICAgIH0sCisgICAgfQogCi0gICAgcGVy
Zm9ybVNlYXJjaDogZnVuY3Rpb24ocXVlcnkpCisgICAgcGVyZm9ybVNlYXJjaChxdWVyeSkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucGVyZm9ybVNlYXJjaChxdWVyeSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBzZWFyY2hDbGVhcmVkOiBmdW5jdGlvbigpCisgICAgc2VhcmNoQ2xl
YXJlZCgpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnNlYXJjaENsZWFyZWQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIHNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbjogZnVuY3Rpb24o
KQorICAgIHNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fdGV4dEVkaXRvci5zZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb24oKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFuZ2VGb2N1
cykKKyAgICByZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cykKICAgICB7CiAg
ICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQoY2hhbmdl
Rm9jdXMpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsTmV4dFNlYXJjaFJlc3VsdDogZnVu
Y3Rpb24oY2hhbmdlRm9jdXMpCisgICAgcmV2ZWFsTmV4dFNlYXJjaFJlc3VsdChjaGFuZ2VGb2N1
cykKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmV2ZWFsTmV4dFNlYXJjaFJlc3Vs
dChjaGFuZ2VGb2N1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0
aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRv
ci51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF90b2dnbGVQcmV0dHlQcmludDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RvZ2dsZVByZXR0eVBy
aW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGFjdGl2YXRlZCA9ICF0aGlzLl9wcmV0dHlQ
cmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZDsKICAgICAgICAgdGhpcy5fdGV4dEVk
aXRvci5mb3JtYXR0ZWQgPSBhY3RpdmF0ZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGV4dEVk
aXRvckZvcm1hdHRpbmdEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90ZXh0RWRpdG9y
Rm9ybWF0dGluZ0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVBy
aW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gdGhpcy5fdGV4dEVkaXRvci5mb3Jt
YXR0ZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hh
bmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdl
KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50Lk51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5n
ZSk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlRleHRDb250ZW50Vmlldy5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3Iu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0RWRpdG9y
LmpzCmluZGV4IDNlZjM4YjkuLjE2ODQ5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dEVkaXRvci5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTQgKzIzLDE1
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3IgPSBmdW5jdGlvbihlbGVtZW50LCBtaW1lVHlwZSwgZGVsZWdhdGUpCitX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvciA9IGNsYXNzIFRleHRFZGl0b3IgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3Bl
Y3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG1pbWVUeXBl
LCBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgdmFyIHRleHQg
PSAoZWxlbWVudCA/IGVsZW1lbnQudGV4dENvbnRlbnQgOiAiIik7CiAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5TdHlsZUNs
YXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGV4dC1lZGl0
b3IiKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5T
eW50YXhIaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLl9jb2RlTWly
cm9yID0gQ29kZU1pcnJvcih0aGlzLmVsZW1lbnQsIHsKQEAgLTY4LDQ1ICs2OSwxOSBAQCBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG1pbWVUeXBlLCBkZWxlZ2F0
ZSkKICAgICAgICAgdGhpcy5fZm9ybWF0dGVyU291cmNlTWFwID0gbnVsbDsKIAogICAgICAgICB0
aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7Ci19OwotCi0vLyBGSVhNRTogTW92ZSB0
byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4K
LVdlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yKTsKLQotV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuU3R5bGVD
bGFzc05hbWUgPSAidGV4dC1lZGl0b3IiOwotV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuSGlnaGxp
Z2h0ZWRTdHlsZUNsYXNzTmFtZSA9ICJoaWdobGlnaHRlZCI7Ci1XZWJJbnNwZWN0b3IuVGV4dEVk
aXRvci5TZWFyY2hSZXN1bHRTdHlsZUNsYXNzTmFtZSA9ICJzZWFyY2gtcmVzdWx0IjsKLVdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yLkhhc0JyZWFrcG9pbnRTdHlsZUNsYXNzTmFtZSA9ICJoYXMtYnJl
YWtwb2ludCI7Ci1XZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5CcmVha3BvaW50UmVzb2x2ZWRTdHls
ZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LXJlc29sdmVkIjsKLVdlYkluc3BlY3Rvci5UZXh0RWRp
dG9yLkJyZWFrcG9pbnRBdXRvQ29udGludWVTdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LWF1
dG8tY29udGludWUiOwotV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuQnJlYWtwb2ludERpc2FibGVk
U3R5bGVDbGFzc05hbWUgPSAiYnJlYWtwb2ludC1kaXNhYmxlZCI7Ci1XZWJJbnNwZWN0b3IuVGV4
dEVkaXRvci5NdWx0aXBsZUJyZWFrcG9pbnRzU3R5bGVDbGFzc05hbWUgPSAibXVsdGlwbGUtYnJl
YWtwb2ludHMiOwotV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXhlY3V0aW9uTGluZVN0eWxlQ2xh
c3NOYW1lID0gImV4ZWN1dGlvbi1saW5lIjsKLVdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkJvdW5j
eUhpZ2hsaWdodFN0eWxlQ2xhc3NOYW1lID0gImJvdW5jeS1oaWdobGlnaHQiOwotV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3IuTnVtYmVyT2ZGaW5kc1BlclNlYXJjaEJhdGNoID0gMTA7Ci1XZWJJbnNw
ZWN0b3IuVGV4dEVkaXRvci5IaWdobGlnaHRBbmltYXRpb25EdXJhdGlvbiA9IDIwMDA7Ci0KLVdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50ID0gewotICAgIEV4ZWN1dGlvbkxpbmVOdW1iZXJE
aWRDaGFuZ2U6ICJ0ZXh0LWVkaXRvci1leGVjdXRpb24tbGluZS1udW1iZXItZGlkLWNoYW5nZSIs
Ci0gICAgTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlOiAidGV4dC1lZGl0b3ItbnVtYmVy
LW9mLXNlYXJjaC1yZXN1bHRzLWRpZC1jaGFuZ2UiLAotICAgIENvbnRlbnREaWRDaGFuZ2U6ICJ0
ZXh0LWVkaXRvci1jb250ZW50LWRpZC1jaGFuZ2UiLAotICAgIEZvcm1hdHRpbmdEaWRDaGFuZ2U6
ICJ0ZXh0LWVkaXRvci1mb3JtYXR0aW5nLWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJbnNwZWN0b3Iu
VGV4dEVkaXRvci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgc3RyaW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdl
dFZhbHVlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc3RyaW5nKG5ld1N0cmluZykKICAg
ICB7CkBAIC0xNDYsMjIgKzEyMSwyMiBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub3BlcmF0aW9uKHVwZGF0ZS5iaW5kKHRo
aXMpKTsKICAgICAgICAgdGhpcy5faWdub3JlQ29kZU1pcnJvckNvbnRlbnREaWRDaGFuZ2VFdmVu
dC0tOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9pZ25vcmVDb2RlTWlycm9yQ29udGVu
dERpZENoYW5nZUV2ZW50ID49IDApOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlYWRPbmx5
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdldE9wdGlvbigicmVh
ZE9ubHkiKSB8fCBmYWxzZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCByZWFkT25seShyZWFk
T25seSkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0T3B0aW9uKCJyZWFkT25s
eSIsIHJlYWRPbmx5KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBmb3JtYXR0ZWQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1hdHRlZDsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCBmb3JtYXR0ZWQoZm9ybWF0dGVkKQogICAgIHsKQEAgLTE4MCw1MiArMTU1LDUyIEBAIFdl
Ykluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fZm9ybWF0
dGVkID0gZm9ybWF0dGVkOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50LkZvcm1hdHRpbmdEaWRDaGFuZ2UpOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IGF1dG9Gb3JtYXQoYXV0bykKICAgICB7CiAgICAgICAgIHRo
aXMuX2F1dG9Gb3JtYXQgPSBhdXRvOwotICAgIH0sCisgICAgfQogCi0gICAgaGFzRm9ybWF0dGVy
OiBmdW5jdGlvbigpCisgICAgaGFzRm9ybWF0dGVyKCkKICAgICB7Ci0gICAgICAgIGNvbnN0IHN1
cHBvcnRlZE1vZGVzID0geworICAgICAgICB2YXIgc3VwcG9ydGVkTW9kZXMgPSB7CiAgICAgICAg
ICAgICAiamF2YXNjcmlwdCI6IHRydWUsCiAgICAgICAgICAgICAiY3NzIjogdHJ1ZSwKICAgICAg
ICAgfTsKIAogICAgICAgICB2YXIgbW9kZSA9IHRoaXMuX2NvZGVNaXJyb3IuZ2V0TW9kZSgpOwog
ICAgICAgICByZXR1cm4gbW9kZS5uYW1lIGluIHN1cHBvcnRlZE1vZGVzOwotICAgIH0sCisgICAg
fQogCi0gICAgY2FuQmVGb3JtYXR0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBjYW5CZUZvcm1hdHRlZCgp
CiAgICAgewogICAgICAgICAvLyBDYW4gYmUgb3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMuCiAgICAg
ICAgIHJldHVybiB0aGlzLmhhc0Zvcm1hdHRlcigpOwotICAgIH0sCisgICAgfQogCi0gICAgY2Fu
U2hvd1R5cGVBbm5vdGF0aW9uczogZnVuY3Rpb24oKQorICAgIGNhblNob3dUeXBlQW5ub3RhdGlv
bnMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHNlbGVjdGVkVGV4dFJhbmdlKCkKICAgICB7CiAgICAgICAgIHZhciBzdGFydCA9IHRoaXMu
X2NvZGVNaXJyb3IuZ2V0Q3Vyc29yKHRydWUpOwogICAgICAgICB2YXIgZW5kID0gdGhpcy5fY29k
ZU1pcnJvci5nZXRDdXJzb3IoZmFsc2UpOwogICAgICAgICByZXR1cm4gdGhpcy5fdGV4dFJhbmdl
RnJvbUNvZGVNaXJyb3JQb3NpdGlvbihzdGFydCwgZW5kKTsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCBzZWxlY3RlZFRleHRSYW5nZSh0ZXh0UmFuZ2UpCiAgICAgewogICAgICAgICB2YXIgcG9z
aXRpb24gPSB0aGlzLl9jb2RlTWlycm9yUG9zaXRpb25Gcm9tVGV4dFJhbmdlKHRleHRSYW5nZSk7
CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0U2VsZWN0aW9uKHBvc2l0aW9uLnN0YXJ0LCBw
b3NpdGlvbi5lbmQpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG1pbWVUeXBlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9taW1lVHlwZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNl
dCBtaW1lVHlwZShuZXdNSU1FVHlwZSkKICAgICB7CkBAIC0yMzMsMTIgKzIwOCwxMiBAQCBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fbWltZVR5
cGUgPSBuZXdNSU1FVHlwZTsKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5zZXRPcHRpb24oIm1v
ZGUiLCBuZXdNSU1FVHlwZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZXhlY3V0aW9uTGlu
ZU51bWJlcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZXhlY3V0aW9uTGluZU51bWJl
cjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBleGVjdXRpb25MaW5lTnVtYmVyKGxpbmVOdW1i
ZXIpCiAgICAgewpAQCAtMjUyLDQ3ICsyMjcsNDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3Iu
cHJvdG90eXBlID0gewogICAgICAgICAvLyBTdGlsbCBkaXNwYXRjaCB0aGUgZXZlbnQgZXZlbiBp
ZiB0aGUgbnVtYmVyIGRpZG4ndCBjaGFuZ2UuIFRoZSBleGVjdXRpb24gc3RhdGUgc3RpbGwKICAg
ICAgICAgLy8gY291bGQgaGF2ZSBjaGFuZ2VkIChlLmcuIGNvbnRpbnVpbmcgaW4gYSBsb29wIHdp
dGggYSBicmVha3BvaW50IGluc2lkZSkuCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50LkV4ZWN1dGlvbkxpbmVOdW1iZXJE
aWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGV4ZWN1dGlvbkNvbHVtbk51bWJl
cigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZXhlY3V0aW9uQ29sdW1uTnVtYmVyOwot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IGV4ZWN1dGlvbkNvbHVtbk51bWJlcihjb2x1bW5OdW1i
ZXIpCiAgICAgewogICAgICAgICB0aGlzLl9leGVjdXRpb25Db2x1bW5OdW1iZXIgPSBjb2x1bW5O
dW1iZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZm9ybWF0dGVyU291cmNlTWFwKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZXJTb3VyY2VNYXA7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgdG9rZW5UcmFja2luZ0NvbnRyb2xsZXIoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3Rva2VuVHJhY2tpbmdDb250cm9sbGVyOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGRlbGVnYXRlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZTsK
LSAgICB9LAorICAgIH0KIAogICAgIHNldCBkZWxlZ2F0ZShuZXdEZWxlZ2F0ZSkKICAgICB7CiAg
ICAgICAgIHRoaXMuX2RlbGVnYXRlID0gbmV3RGVsZWdhdGUgfHwgbnVsbDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBudW1iZXJPZlNlYXJjaFJlc3VsdHMoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3NlYXJjaFJlc3VsdHMubGVuZ3RoOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGN1cnJlbnRTZWFyY2hRdWVyeSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNo
UXVlcnk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgYXV0b21hdGljYWxseVJldmVhbEZpcnN0
U2VhcmNoUmVzdWx0KHJldmVhbCkKICAgICB7CkBAIC0zMDMsOSArMjc4LDkgQEAgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHRoaXMuX2N1cnJl
bnRTZWFyY2hSZXN1bHRJbmRleCA9PT0gLTEpCiAgICAgICAgICAgICAgICAgdGhpcy5fcmV2ZWFs
Rmlyc3RTZWFyY2hSZXN1bHRBZnRlckN1cnNvcigpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihxdWVyeSkKKyAgICBwZXJmb3JtU2VhcmNo
KHF1ZXJ5KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NlYXJjaFF1ZXJ5ID09PSBxdWVyeSkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTM2Nyw5ICszNDIsOSBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gU3RhcnQgdGhlIHNlYXJjaC4KICAg
ICAgICAgYm91bmRCYXRjaFNlYXJjaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkU2VhcmNo
UmVzdWx0czogZnVuY3Rpb24odGV4dFJhbmdlcykKKyAgICBhZGRTZWFyY2hSZXN1bHRzKHRleHRS
YW5nZXMpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0ZXh0UmFuZ2VzKTsKICAgICAg
ICAgaWYgKCF0ZXh0UmFuZ2VzIHx8ICF0ZXh0UmFuZ2VzLmxlbmd0aCkKQEAgLTM5MSw5ICszNjYs
OSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm9wZXJhdGlvbihtYXJrUmFuZ2VzLmJpbmQodGhpcykp
OwotICAgIH0sCisgICAgfQogCi0gICAgc2VhcmNoQ2xlYXJlZDogZnVuY3Rpb24oKQorICAgIHNl
YXJjaENsZWFyZWQoKQogICAgIHsKICAgICAgICAgZnVuY3Rpb24gY2xlYXJSZXN1bHRzKCkgewog
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0
aDsgKytpKQpAQCAtNDA1LDE3ICszODAsMTcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9zZWFyY2hRdWVyeSA9IG51bGw7CiAgICAgICAgIHRo
aXMuX3NlYXJjaFJlc3VsdHMgPSBbXTsKICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3Vs
dEluZGV4ID0gLTE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWFyY2hRdWVyeVdpdGhTZWxlY3Rp
b246IGZ1bmN0aW9uKCkKKyAgICBzZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb24oKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9jb2RlTWlycm9yLnNvbWV0aGluZ1NlbGVjdGVkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKIAogICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5nZXRT
ZWxlY3Rpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVz
dWx0OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICByZXZlYWxQcmV2aW91c1NlYXJjaFJlc3Vs
dChjaGFuZ2VGb2N1cykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc2VhcmNoUmVzdWx0cy5s
ZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00MzEsOSArNDA2LDkgQEAgV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fY3VycmVudFNl
YXJjaFJlc3VsdEluZGV4ID0gdGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGggLSAxOwogCiAgICAg
ICAgIHRoaXMuX3JldmVhbFNlYXJjaFJlc3VsdCh0aGlzLl9zZWFyY2hSZXN1bHRzW3RoaXMuX2N1
cnJlbnRTZWFyY2hSZXN1bHRJbmRleF0sIGNoYW5nZUZvY3VzLCAtMSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykKKyAg
ICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ0
OSwyNSArNDI0LDI1IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRleCA9IDA7CiAKICAgICAgICAg
dGhpcy5fcmV2ZWFsU2VhcmNoUmVzdWx0KHRoaXMuX3NlYXJjaFJlc3VsdHNbdGhpcy5fY3VycmVu
dFNlYXJjaFJlc3VsdEluZGV4XSwgY2hhbmdlRm9jdXMsIDEpOwotICAgIH0sCisgICAgfQogCi0g
ICAgbGluZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICBsaW5lKGxpbmVOdW1iZXIpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJvci5nZXRMaW5lKGxpbmVOdW1iZXIpOwot
ICAgIH0sCisgICAgfQogCi0gICAgZ2V0VGV4dEluUmFuZ2U6IGZ1bmN0aW9uKHN0YXJ0UG9zaXRp
b24sIGVuZFBvc2l0aW9uKQorICAgIGdldFRleHRJblJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBv
c2l0aW9uKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0UmFuZ2Uo
c3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24pOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkU3R5
bGVUb1RleHRSYW5nZTogZnVuY3Rpb24oc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHN0eWxl
Q2xhc3NOYW1lKQorICAgIGFkZFN0eWxlVG9UZXh0UmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9z
aXRpb24sIHN0eWxlQ2xhc3NOYW1lKQogICAgIHsKICAgICAgICAgZW5kUG9zaXRpb24uY2ggKz0g
MTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IuZ2V0RG9jKCkubWFya1RleHQoc3Rh
cnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHtjbGFzc05hbWU6IHN0eWxlQ2xhc3NOYW1lLCBpbmNs
dXNpdmVMZWZ0OiB0cnVlLCBpbmNsdXNpdmVSaWdodDogdHJ1ZX0pOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmV2ZWFsUG9zaXRpb246IGZ1bmN0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVj
dCwgZm9yY2VVbmZvcm1hdHRlZCwgbm9IaWdobGlnaHQpCisgICAgcmV2ZWFsUG9zaXRpb24ocG9z
aXRpb24sIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkLCBub0hpZ2hsaWdodCkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBvc2l0aW9uID09PSB1bmRlZmluZWQgfHwg
cG9zaXRpb24gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9uLCAicmV2
ZWFsUG9zaXRpb24gY2FsbGVkIHdpdGhvdXQgYSBTb3VyY2VDb2RlUG9zaXRpb24iKTsKICAgICAg
ICAgaWYgKCEocG9zaXRpb24gaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0
aW9uKSkKQEAgLTUyNCwxNCArNDk5LDE0IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub3BlcmF0aW9u
KHJldmVhbEFuZEhpZ2hsaWdodExpbmUuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKGZvcmNlKQorICAgIHVwZGF0ZUxheW91dChmb3JjZSkK
ICAgICB7CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IucmVmcmVzaCgpOwotICAgIH0sCisgICAg
fQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICB0
aGlzLl92aXNpYmxlID0gdHJ1ZTsKIApAQCAtNTQyLDE0ICs1MTcsMTQgQEAgV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRv
bmUgYXMgYSBzZXBhcmF0ZSBvcGVyYXRpb24gZnJvbSB0aGUgcmVmcmVzaAogICAgICAgICAvLyBz
byB0aGF0IHRoZSBzY3JvbGxJbmZvIGNvb3JkaW5hdGVzIGFyZSBjb3JyZWN0LgogICAgICAgICB0
aGlzLl9yZXZlYWxQZW5kaW5nUG9zaXRpb25JZlBvc3NpYmxlKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhp
cy5fdmlzaWJsZSA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0QnJlYWtwb2ludElu
Zm9Gb3JMaW5lQW5kQ29sdW1uOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJy
ZWFrcG9pbnRJbmZvKQorICAgIHNldEJyZWFrcG9pbnRJbmZvRm9yTGluZUFuZENvbHVtbihsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGJyZWFrcG9pbnRJbmZvKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2lnbm9yZVNldEJyZWFrcG9pbnRJbmZvQ2FsbHMpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC01NTgsOSArNTMzLDkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludFRvTGluZUFuZENvbHVtbldpdGhJbmZv
KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYnJlYWtwb2ludEluZm8pOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICB0aGlzLl9yZW1vdmVCcmVha3BvaW50RnJvbUxpbmVBbmRDb2x1bW4obGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUJyZWFr
cG9pbnRMaW5lQW5kQ29sdW1uOiBmdW5jdGlvbihvbGRMaW5lTnVtYmVyLCBvbGRDb2x1bW5OdW1i
ZXIsIG5ld0xpbmVOdW1iZXIsIG5ld0NvbHVtbk51bWJlcikKKyAgICB1cGRhdGVCcmVha3BvaW50
TGluZUFuZENvbHVtbihvbGRMaW5lTnVtYmVyLCBvbGRDb2x1bW5OdW1iZXIsIG5ld0xpbmVOdW1i
ZXIsIG5ld0NvbHVtbk51bWJlcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X2JyZWFrcG9pbnRzW29sZExpbmVOdW1iZXJdKTsKICAgICAgICAgaWYgKCF0aGlzLl9icmVha3Bv
aW50c1tvbGRMaW5lTnVtYmVyXSkKQEAgLTU3MywxOCArNTQ4LDE4IEBAIFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnRJbmZvID0gdGhp
cy5fYnJlYWtwb2ludHNbb2xkTGluZU51bWJlcl1bb2xkQ29sdW1uTnVtYmVyXTsKICAgICAgICAg
dGhpcy5fcmVtb3ZlQnJlYWtwb2ludEZyb21MaW5lQW5kQ29sdW1uKG9sZExpbmVOdW1iZXIsIG9s
ZENvbHVtbk51bWJlcik7CiAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnRUb0xpbmVBbmRDb2x1
bW5XaXRoSW5mbyhuZXdMaW5lTnVtYmVyLCBuZXdDb2x1bW5OdW1iZXIsIGJyZWFrcG9pbnRJbmZv
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFN0eWxlQ2xhc3NUb0xpbmU6IGZ1bmN0aW9uKGxp
bmVOdW1iZXIsIHN0eWxlQ2xhc3NOYW1lKQorICAgIGFkZFN0eWxlQ2xhc3NUb0xpbmUobGluZU51
bWJlciwgc3R5bGVDbGFzc05hbWUpCiAgICAgewogICAgICAgICB2YXIgbGluZUhhbmRsZSA9IHRo
aXMuX2NvZGVNaXJyb3IuZ2V0TGluZUhhbmRsZShsaW5lTnVtYmVyKTsKICAgICAgICAgaWYgKCFs
aW5lSGFuZGxlKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIHRo
aXMuX2NvZGVNaXJyb3IuYWRkTGluZUNsYXNzKGxpbmVIYW5kbGUsICJ3cmFwIiwgc3R5bGVDbGFz
c05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlU3R5bGVDbGFzc0Zyb21MaW5lOiBm
dW5jdGlvbihsaW5lTnVtYmVyLCBzdHlsZUNsYXNzTmFtZSkKKyAgICByZW1vdmVTdHlsZUNsYXNz
RnJvbUxpbmUobGluZU51bWJlciwgc3R5bGVDbGFzc05hbWUpCiAgICAgewogICAgICAgICB2YXIg
bGluZUhhbmRsZSA9IHRoaXMuX2NvZGVNaXJyb3IuZ2V0TGluZUhhbmRsZShsaW5lTnVtYmVyKTsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQobGluZUhhbmRsZSk7CkBAIC01OTIsOSArNTY3LDkgQEAg
V2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJu
IG51bGw7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVNaXJyb3IucmVtb3ZlTGluZUNsYXNz
KGxpbmVIYW5kbGUsICJ3cmFwIiwgc3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0g
ICAgdG9nZ2xlU3R5bGVDbGFzc0ZvckxpbmU6IGZ1bmN0aW9uKGxpbmVOdW1iZXIsIHN0eWxlQ2xh
c3NOYW1lKQorICAgIHRvZ2dsZVN0eWxlQ2xhc3NGb3JMaW5lKGxpbmVOdW1iZXIsIHN0eWxlQ2xh
c3NOYW1lKQogICAgIHsKICAgICAgICAgdmFyIGxpbmVIYW5kbGUgPSB0aGlzLl9jb2RlTWlycm9y
LmdldExpbmVIYW5kbGUobGluZU51bWJlcik7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxpbmVI
YW5kbGUpOwpAQCAtNjAyLDkgKzU3Nyw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1cm4gdGhp
cy5fY29kZU1pcnJvci50b2dnbGVMaW5lQ2xhc3MobGluZUhhbmRsZSwgIndyYXAiLCBzdHlsZUNs
YXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVXaWRnZXRGb3JMaW5lOiBmdW5j
dGlvbihsaW5lTnVtYmVyKQorICAgIGNyZWF0ZVdpZGdldEZvckxpbmUobGluZU51bWJlcikKICAg
ICB7CiAgICAgICAgIHZhciBsaW5lSGFuZGxlID0gdGhpcy5fY29kZU1pcnJvci5nZXRMaW5lSGFu
ZGxlKGxpbmVOdW1iZXIpOwogICAgICAgICBpZiAoIWxpbmVIYW5kbGUpCkBAIC02MTMsNTMgKzU4
OCw1MyBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZh
ciB3aWRnZXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAg
IHZhciBsaW5lV2lkZ2V0ID0gdGhpcy5fY29kZU1pcnJvci5hZGRMaW5lV2lkZ2V0KGxpbmVIYW5k
bGUsIHdpZGdldEVsZW1lbnQsIHtjb3Zlckd1dHRlcjogZmFsc2UsIG5vSFNjcm9sbDogdHJ1ZSwg
aGFuZGxlTW91c2VFdmVudHM6IHRydWV9KTsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0
b3IuTGluZVdpZGdldChsaW5lV2lkZ2V0LCB3aWRnZXRFbGVtZW50KTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBsaW5lQ291bnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvZGVN
aXJyb3IubGluZUNvdW50KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmb2N1czogZnVuY3Rpb24o
KQorICAgIGZvY3VzKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IuZm9jdXMoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGNvbnRlbnREaWRDaGFuZ2U6IGZ1bmN0aW9uKHJlcGxhY2Vk
UmFuZ2VzLCBuZXdSYW5nZXMpCisgICAgY29udGVudERpZENoYW5nZShyZXBsYWNlZFJhbmdlcywg
bmV3UmFuZ2VzKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4K
LSAgICB9LAorICAgIH0KIAotICAgIHJlY3RzRm9yUmFuZ2U6IGZ1bmN0aW9uKHJhbmdlKQorICAg
IHJlY3RzRm9yUmFuZ2UocmFuZ2UpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1p
cnJvci5yZWN0c0ZvclJhbmdlKHJhbmdlKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBtYXJr
ZXJzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdldEFsbE1hcmtz
KCkubWFwKGZ1bmN0aW9uKGNvZGVNaXJyb3JUZXh0TWFya2VyKSB7CiAgICAgICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIudGV4dE1hcmtlckZvckNvZGVNaXJyb3JUZXh0TWFy
a2VyKGNvZGVNaXJyb3JUZXh0TWFya2VyKTsKICAgICAgICAgfSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBtYXJrZXJzQXRQb3NpdGlvbjogZnVuY3Rpb24ocG9zaXRpb24pCisgICAgbWFya2Vyc0F0
UG9zaXRpb24ocG9zaXRpb24pCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29kZU1pcnJv
ci5maW5kTWFya3NBdChwb3NpdGlvbikubWFwKGZ1bmN0aW9uKGNvZGVNaXJyb3JUZXh0TWFya2Vy
KSB7CiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlRleHRNYXJrZXIudGV4dE1hcmtl
ckZvckNvZGVNaXJyb3JUZXh0TWFya2VyKGNvZGVNaXJyb3JUZXh0TWFya2VyKTsKICAgICAgICAg
fSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjcmVhdGVDb2xvck1hcmtlcnM6IGZ1bmN0aW9uKHJh
bmdlKQorICAgIGNyZWF0ZUNvbG9yTWFya2VycyhyYW5nZSkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9jb2RlTWlycm9yLmNyZWF0ZUNvbG9yTWFya2VycyhyYW5nZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBjcmVhdGVHcmFkaWVudE1hcmtlcnM6IGZ1bmN0aW9uKHJhbmdlKQorICAgIGNy
ZWF0ZUdyYWRpZW50TWFya2VycyhyYW5nZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9j
b2RlTWlycm9yLmNyZWF0ZUdyYWRpZW50TWFya2VycyhyYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBlZGl0aW5nQ29udHJvbGxlckZvck1hcmtlcjogZnVuY3Rpb24oZWRpdGFibGVNYXJrZXIp
CisgICAgZWRpdGluZ0NvbnRyb2xsZXJGb3JNYXJrZXIoZWRpdGFibGVNYXJrZXIpCiAgICAgewog
ICAgICAgICBzd2l0Y2ggKGVkaXRhYmxlTWFya2VyLnR5cGUpIHsKICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuVGV4dE1hcmtlci5UeXBlLkNvbG9yOgpAQCAtNjY5LDkgKzY0NCw5IEBAIFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkNvZGVNaXJyb3JFZGl0aW5nQ29udHJvbGxl
cih0aGlzLl9jb2RlTWlycm9yLCBlZGl0YWJsZU1hcmtlcik7CiAgICAgICAgIH0KLSAgICB9LAor
ICAgIH0KIAotICAgIHZpc2libGVSYW5nZU9mZnNldHM6IGZ1bmN0aW9uKCkKKyAgICB2aXNpYmxl
UmFuZ2VPZmZzZXRzKCkKICAgICB7CiAgICAgICAgIHZhciBzdGFydE9mZnNldCA9IG51bGw7CiAg
ICAgICAgIHZhciBlbmRPZmZzZXQgPSBudWxsOwpAQCAtNjg2LDkgKzY2MSw5IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVy
biB7c3RhcnRPZmZzZXQsIGVuZE9mZnNldH07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBvcmlnaW5h
bE9mZnNldFRvQ3VycmVudFBvc2l0aW9uOiBmdW5jdGlvbihvZmZzZXQpCisgICAgb3JpZ2luYWxP
ZmZzZXRUb0N1cnJlbnRQb3NpdGlvbihvZmZzZXQpCiAgICAgewogICAgICAgICB2YXIgcG9zaXRp
b24gPSBudWxsOwogICAgICAgICBpZiAodGhpcy5fZm9ybWF0dGVyU291cmNlTWFwKSB7CkBAIC02
OTgsMTQgKzY3MywxNCBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMuX2NvZGVNaXJyb3IuZ2V0RG9jKCkucG9zRnJvbUlu
ZGV4KG9mZnNldCk7CiAKICAgICAgICAgcmV0dXJuIHBvc2l0aW9uOwotICAgIH0sCisgICAgfQog
Ci0gICAgY3VycmVudE9mZnNldFRvQ3VycmVudFBvc2l0aW9uOiBmdW5jdGlvbihvZmZzZXQpCisg
ICAgY3VycmVudE9mZnNldFRvQ3VycmVudFBvc2l0aW9uKG9mZnNldCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdldERvYygpLnBvc0Zyb21JbmRleChvZmZzZXQpOwot
ICAgIH0sCisgICAgfQogCi0gICAgY3VycmVudFBvc2l0aW9uVG9PcmlnaW5hbE9mZnNldDogZnVu
Y3Rpb24ocG9zaXRpb24pCisgICAgY3VycmVudFBvc2l0aW9uVG9PcmlnaW5hbE9mZnNldChwb3Np
dGlvbikKICAgICB7CiAgICAgICAgIHZhciBvZmZzZXQgPSBudWxsOwogICAgICAgICBpZiAodGhp
cy5fZm9ybWF0dGVyU291cmNlTWFwKQpAQCAtNzE0LDM2ICs2ODksMzYgQEAgV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy50b2tl
blRyYWNraW5nQ29udHJvbGxlci5fY29kZU1pcnJvci5nZXREb2MoKS5pbmRleEZyb21Qb3MocG9z
aXRpb24pOwogCiAgICAgICAgIHJldHVybiBvZmZzZXQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBj
dXJyZW50UG9zaXRpb25Ub0N1cnJlbnRPZmZzZXQ6IGZ1bmN0aW9uKHBvc2l0aW9uKQorICAgIGN1
cnJlbnRQb3NpdGlvblRvQ3VycmVudE9mZnNldChwb3NpdGlvbikKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9jb2RlTWlycm9yLmdldERvYygpLmluZGV4RnJvbVBvcyhwb3NpdGlvbik7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzZXRJbmxpbmVXaWRnZXQ6IGZ1bmN0aW9uKHBvc2l0aW9uLCBp
bmxpbmVFbGVtZW50KQorICAgIHNldElubGluZVdpZGdldChwb3NpdGlvbiwgaW5saW5lRWxlbWVu
dCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLnNldFVuaXF1ZUJvb2tt
YXJrKHBvc2l0aW9uLCB7d2lkZ2V0OiBpbmxpbmVFbGVtZW50fSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBhZGRTY3JvbGxIYW5kbGVyOiBmdW5jdGlvbihoYW5kbGVyKQorICAgIGFkZFNjcm9sbEhh
bmRsZXIoaGFuZGxlcikKICAgICB7CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iub24oInNjcm9s
bCIsIGhhbmRsZXIpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVtb3ZlU2Nyb2xsSGFuZGxlcjog
ZnVuY3Rpb24oaGFuZGxlcikKKyAgICByZW1vdmVTY3JvbGxIYW5kbGVyKGhhbmRsZXIpCiAgICAg
ewogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLm9mZigic2Nyb2xsIiwgaGFuZGxlcik7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHByZXR0eVByaW50OiBmdW5jdGlv
bihwcmV0dHkpCisgICAgcHJldHR5UHJpbnQocHJldHR5KQogICAgIHsKICAgICAgICAgZnVuY3Rp
b24gcHJldHR5UHJpbnRBbmRVcGRhdGVFZGl0b3IoKQogICAgICAgICB7Ci0gICAgICAgICAgICBj
b25zdCBzdGFydCA9IHtsaW5lOiAwLCBjaDogMH07Ci0gICAgICAgICAgICBjb25zdCBlbmQgPSB7
bGluZTogdGhpcy5fY29kZU1pcnJvci5saW5lQ291bnQoKSAtIDF9OworICAgICAgICAgICAgdmFy
IHN0YXJ0ID0ge2xpbmU6IDAsIGNoOiAwfTsKKyAgICAgICAgICAgIHZhciBlbmQgPSB7bGluZTog
dGhpcy5fY29kZU1pcnJvci5saW5lQ291bnQoKSAtIDF9OwogCiAgICAgICAgICAgICB2YXIgb2xk
U2VsZWN0aW9uQW5jaG9yID0gdGhpcy5fY29kZU1pcnJvci5nZXRDdXJzb3IoImFuY2hvciIpOwog
ICAgICAgICAgICAgdmFyIG9sZFNlbGVjdGlvbkhlYWQgPSB0aGlzLl9jb2RlTWlycm9yLmdldEN1
cnNvcigiaGVhZCIpOwpAQCAtNzUyLDcgKzcyNyw3IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgaWYgKHByZXR0eSkgewogICAgICAgICAgICAg
ICAgIC8vIDxyZGFyOi8vcHJvYmxlbS8xMDU5Mzk0OD4gUHJvdmlkZSBhIHdheSB0byBjaGFuZ2Ug
dGhlIHRhYiB3aWR0aCBpbiB0aGUgV2ViIEluc3BlY3RvcgotICAgICAgICAgICAgICAgIGNvbnN0
IGluZGVudFN0cmluZyA9ICIgICAgIjsKKyAgICAgICAgICAgICAgICB2YXIgaW5kZW50U3RyaW5n
ID0gIiAgICAiOwogICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbExpbmVFbmRpbmdzID0gW107
CiAgICAgICAgICAgICAgICAgdmFyIGZvcm1hdHRlZExpbmVFbmRpbmdzID0gW107CiAgICAgICAg
ICAgICAgICAgdmFyIG1hcHBpbmcgPSB7b3JpZ2luYWw6IFswXSwgZm9ybWF0dGVkOiBbMF19OwpA
QCAtODM2LDE2ICs4MTEsMTYgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5vcGVyYXRpb24ocHJldHR5
UHJpbnRBbmRVcGRhdGVFZGl0b3IuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAv
LyBQcml2YXRlCiAKLSAgICBoYXNFZGl0czogZnVuY3Rpb24oKQorICAgIGhhc0VkaXRzKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiAhdGhpcy5fY29kZU1pcnJvci5pc0NsZWFuKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfY29udGVudENoYW5nZWQ6IGZ1bmN0aW9uKGNvZGVNaXJyb3IsIGNoYW5n
ZSkKKyAgICBfY29udGVudENoYW5nZWQoY29kZU1pcnJvciwgY2hhbmdlKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2lnbm9yZUNvZGVNaXJyb3JDb250ZW50RGlkQ2hhbmdlRXZlbnQgPiAwKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtODgwLDI2ICs4NTUsMjYgQEAgV2ViSW5zcGVjdG9yLlRl
eHRFZGl0b3IucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuQ29udGVudERp
ZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGV4dFJhbmdlRnJvbUNvZGVNaXJyb3JQ
b3NpdGlvbjogZnVuY3Rpb24oc3RhcnQsIGVuZCkKKyAgICBfdGV4dFJhbmdlRnJvbUNvZGVNaXJy
b3JQb3NpdGlvbihzdGFydCwgZW5kKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc3Rh
cnQpOwogICAgICAgICBjb25zb2xlLmFzc2VydChlbmQpOwogCiAgICAgICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLlRleHRSYW5nZShzdGFydC5saW5lLCBzdGFydC5jaCwgZW5kLmxpbmUsIGVu
ZC5jaCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29kZU1pcnJvclBvc2l0aW9uRnJvbVRleHRS
YW5nZTogZnVuY3Rpb24odGV4dFJhbmdlKQorICAgIF9jb2RlTWlycm9yUG9zaXRpb25Gcm9tVGV4
dFJhbmdlKHRleHRSYW5nZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRleHRSYW5n
ZSk7CiAKICAgICAgICAgdmFyIHN0YXJ0ID0ge2xpbmU6IHRleHRSYW5nZS5zdGFydExpbmUsIGNo
OiB0ZXh0UmFuZ2Uuc3RhcnRDb2x1bW59OwogICAgICAgICB2YXIgZW5kID0ge2xpbmU6IHRleHRS
YW5nZS5lbmRMaW5lLCBjaDogdGV4dFJhbmdlLmVuZENvbHVtbn07CiAgICAgICAgIHJldHVybiB7
c3RhcnQsIGVuZH07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmV2ZWFsUGVuZGluZ1Bvc2l0aW9u
SWZQb3NzaWJsZTogZnVuY3Rpb24oKQorICAgIF9yZXZlYWxQZW5kaW5nUG9zaXRpb25JZlBvc3Np
YmxlKCkKICAgICB7CiAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaWYgd2UgZG9uJ3QgaGF2ZSBh
IHBlbmRpbmcgcG9zaXRpb24uCiAgICAgICAgIGlmICghdGhpcy5fcG9zaXRpb25Ub1JldmVhbCkK
QEAgLTkxMCw5ICs4ODUsOSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5yZXZlYWxQb3NpdGlvbih0aGlz
Ll9wb3NpdGlvblRvUmV2ZWFsLCB0aGlzLl90ZXh0UmFuZ2VUb1NlbGVjdCwgdGhpcy5fZm9yY2VV
bmZvcm1hdHRlZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmV2ZWFsU2VhcmNoUmVzdWx0OiBm
dW5jdGlvbihyZXN1bHQsIGNoYW5nZUZvY3VzLCBkaXJlY3Rpb25JbkNhc2VPZlJldmFsaWRhdGlv
bikKKyAgICBfcmV2ZWFsU2VhcmNoUmVzdWx0KHJlc3VsdCwgY2hhbmdlRm9jdXMsIGRpcmVjdGlv
bkluQ2FzZU9mUmV2YWxpZGF0aW9uKQogICAgIHsKICAgICAgICAgdmFyIHBvc2l0aW9uID0gcmVz
dWx0LmZpbmQoKTsKIApAQCAtOTcyLDkgKzk0Nyw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9y
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBMaXN0ZW4gZm9yIHRoZSBlbmQgb2YgdGhlIGFu
aW1hdGlvbiBzbyB3ZSBjYW4gcmVtb3ZlIHRoZSBlbGVtZW50LgogICAgICAgICB0aGlzLl9ib3Vu
Y3lIaWdobGlnaHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndlYmtpdEFuaW1hdGlvbkVuZCIs
IGFuaW1hdGlvbkVuZGVkLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2JpbmFy
eVNlYXJjaEluc2VydGlvbkluZGV4SW5TZWFyY2hSZXN1bHRzOiBmdW5jdGlvbihvYmplY3QsIGNv
bXBhcmF0b3IpCisgICAgX2JpbmFyeVNlYXJjaEluc2VydGlvbkluZGV4SW5TZWFyY2hSZXN1bHRz
KG9iamVjdCwgY29tcGFyYXRvcikKICAgICB7CiAgICAgICAgIC8vIEl0IGlzIHBvc3NpYmxlIHRo
YXQgbWFya2VycyBpbiB0aGUgc2VhcmNoIHJlc3VsdHMgYXJyYXkgbWF5IGhhdmUgYmVlbiBkZWxl
dGVkLgogICAgICAgICAvLyBJbiB0aG9zZSBjYXNlcyB0aGUgY29tcGFyYXRvciB3aWxsIHJldHVy
biAibnVsbCIgYW5kIHdlIGltbWVkaWF0ZWx5IHN0b3AKQEAgLTk5OCw5ICs5NzMsOSBAQCBXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBy
ZXR1cm4gZmlyc3QgLSAxOwotICAgIH0sCisgICAgfQogCi0gICAgX3JldmVhbEZpcnN0U2VhcmNo
UmVzdWx0QmVmb3JlQ3Vyc29yOiBmdW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICBfcmV2ZWFsRmly
c3RTZWFyY2hSZXN1bHRCZWZvcmVDdXJzb3IoY2hhbmdlRm9jdXMpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl9zZWFyY2hSZXN1bHRzLmxlbmd0aCk7CiAKQEAgLTEwMjUsOSAr
MTAwMCw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSBpbmRleDsKICAgICAgICAgdGhpcy5f
cmV2ZWFsU2VhcmNoUmVzdWx0KHRoaXMuX3NlYXJjaFJlc3VsdHNbdGhpcy5fY3VycmVudFNlYXJj
aFJlc3VsdEluZGV4XSwgY2hhbmdlRm9jdXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JldmVh
bEZpcnN0U2VhcmNoUmVzdWx0QWZ0ZXJDdXJzb3I6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQorICAg
IF9yZXZlYWxGaXJzdFNlYXJjaFJlc3VsdEFmdGVyQ3Vyc29yKGNoYW5nZUZvY3VzKQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc2VhcmNoUmVzdWx0cy5sZW5ndGgpOwogCkBA
IC0xMDU3LDkgKzEwMzIsOSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0gaW5kZXg7CiAgICAg
ICAgIHRoaXMuX3JldmVhbFNlYXJjaFJlc3VsdCh0aGlzLl9zZWFyY2hSZXN1bHRzW3RoaXMuX2N1
cnJlbnRTZWFyY2hSZXN1bHRJbmRleF0sIGNoYW5nZUZvY3VzKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9jdXJzb3JEb2VzTm90TWF0Y2hMYXN0UmV2ZWFsZWRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9u
KCkKKyAgICBfY3Vyc29yRG9lc05vdE1hdGNoTGFzdFJldmVhbGVkU2VhcmNoUmVzdWx0KCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJbmRl
eCAhPT0gLTEpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9zZWFyY2hSZXN1bHRzLmxl
bmd0aCk7CkBAIC0xMDcyLDkgKzEwNDcsOSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHZhciBsYXN0UmV2ZWFsZWRTZWFyY2hSZXN1bHRQb3NpdGlvbiA9
IGxhc3RSZXZlYWxlZFNlYXJjaFJlc3VsdE1hcmtlci5mcm9tOwogCiAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuY29tcGFyZUNvZGVNaXJyb3JQb3NpdGlvbnMoY3VycmVudEN1cnNvclBvc2l0
aW9uLCBsYXN0UmV2ZWFsZWRTZWFyY2hSZXN1bHRQb3NpdGlvbikgIT09IDA7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfcmV2YWxpZGF0ZVNlYXJjaFJlc3VsdHM6IGZ1bmN0aW9uKGRpcmVjdGlvbikK
KyAgICBfcmV2YWxpZGF0ZVNlYXJjaFJlc3VsdHMoZGlyZWN0aW9uKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoZGlyZWN0aW9uICE9PSB1bmRlZmluZWQpOwogCkBAIC0xMDk3LDkgKzEw
NzIsOSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgdGhpcy5fcmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHRCZWZv
cmVDdXJzb3IoKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUV4ZWN1
dGlvbkxpbmU6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlRXhlY3V0aW9uTGluZSgpCiAgICAgewog
ICAgICAgICBmdW5jdGlvbiB1cGRhdGUoKQogICAgICAgICB7CkBAIC0xMTEzLDkgKzEwODgsOSBA
QCBXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAg
ICAgICB0aGlzLl9jb2RlTWlycm9yLm9wZXJhdGlvbih1cGRhdGUuYmluZCh0aGlzKSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfc2V0QnJlYWtwb2ludFN0eWxlc09uTGluZTogZnVuY3Rpb24obGlu
ZU51bWJlcikKKyAgICBfc2V0QnJlYWtwb2ludFN0eWxlc09uTGluZShsaW5lTnVtYmVyKQogICAg
IHsKICAgICAgICAgdmFyIGNvbHVtbkJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHNbbGlu
ZU51bWJlcl07CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbHVtbkJyZWFrcG9pbnRzKTsKQEAg
LTExNzAsMTggKzExNDUsMTggQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5vcGVyYXRpb24odXBkYXRl
U3R5bGVzLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FkZEJyZWFrcG9pbnRU
b0xpbmVBbmRDb2x1bW5XaXRoSW5mbzogZnVuY3Rpb24obGluZU51bWJlciwgY29sdW1uTnVtYmVy
LCBicmVha3BvaW50SW5mbykKKyAgICBfYWRkQnJlYWtwb2ludFRvTGluZUFuZENvbHVtbldpdGhJ
bmZvKGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgYnJlYWtwb2ludEluZm8pCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX2JyZWFrcG9pbnRzW2xpbmVOdW1iZXJdKQogICAgICAgICAgICAgdGhp
cy5fYnJlYWtwb2ludHNbbGluZU51bWJlcl0gPSB7fTsKICAgICAgICAgdGhpcy5fYnJlYWtwb2lu
dHNbbGluZU51bWJlcl1bY29sdW1uTnVtYmVyXSA9IGJyZWFrcG9pbnRJbmZvOwogCiAgICAgICAg
IHRoaXMuX3NldEJyZWFrcG9pbnRTdHlsZXNPbkxpbmUobGluZU51bWJlcik7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfcmVtb3ZlQnJlYWtwb2ludEZyb21MaW5lQW5kQ29sdW1uOiBmdW5jdGlvbihs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCisgICAgX3JlbW92ZUJyZWFrcG9pbnRGcm9tTGluZUFu
ZENvbHVtbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChjb2x1bW5OdW1iZXIgaW4gdGhpcy5fYnJlYWtwb2ludHNbbGluZU51bWJlcl0pOwog
ICAgICAgICBkZWxldGUgdGhpcy5fYnJlYWtwb2ludHNbbGluZU51bWJlcl1bY29sdW1uTnVtYmVy
XTsKQEAgLTEyMDgsMjEgKzExODMsMjEgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5vcGVyYXRpb24o
dXBkYXRlU3R5bGVzLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2FsbENvbHVt
bkJyZWFrcG9pbnRJbmZvRm9yTGluZTogZnVuY3Rpb24obGluZU51bWJlcikKKyAgICBfYWxsQ29s
dW1uQnJlYWtwb2ludEluZm9Gb3JMaW5lKGxpbmVOdW1iZXIpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fYnJlYWtwb2ludHNbbGluZU51bWJlcl07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
c2V0Q29sdW1uQnJlYWtwb2ludEluZm9Gb3JMaW5lOiBmdW5jdGlvbihsaW5lTnVtYmVyLCBjb2x1
bW5CcmVha3BvaW50SW5mbykKKyAgICBfc2V0Q29sdW1uQnJlYWtwb2ludEluZm9Gb3JMaW5lKGxp
bmVOdW1iZXIsIGNvbHVtbkJyZWFrcG9pbnRJbmZvKQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoY29sdW1uQnJlYWtwb2ludEluZm8pOwogICAgICAgICB0aGlzLl9icmVha3BvaW50c1ts
aW5lTnVtYmVyXSA9IGNvbHVtbkJyZWFrcG9pbnRJbmZvOwogICAgICAgICB0aGlzLl9zZXRCcmVh
a3BvaW50U3R5bGVzT25MaW5lKGxpbmVOdW1iZXIpOwotICAgIH0sCisgICAgfQogCi0gICAgX2d1
dHRlck1vdXNlRG93bjogZnVuY3Rpb24oY29kZU1pcnJvciwgbGluZU51bWJlciwgZ3V0dGVyRWxl
bWVudCwgZXZlbnQpCisgICAgX2d1dHRlck1vdXNlRG93bihjb2RlTWlycm9yLCBsaW5lTnVtYmVy
LCBndXR0ZXJFbGVtZW50LCBldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC5idXR0b24g
IT09IDAgfHwgZXZlbnQuY3RybEtleSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEyNjUsOSAr
MTI0MCw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAg
Ly8gUmVnaXN0ZXIgdGhlc2UgbGlzdGVuZXJzIG9uIHRoZSBkb2N1bWVudCBzbyB3ZSBjYW4gdHJh
Y2sgdGhlIG1vdXNlIGlmIGl0IGxlYXZlcyB0aGUgZ3V0dGVyLgogICAgICAgICBkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9kb2N1bWVudE1vdXNlTW92ZWRFdmVu
dExpc3RlbmVyLCB0cnVlKTsKICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2V1cCIsIHRoaXMuX2RvY3VtZW50TW91c2VVcEV2ZW50TGlzdGVuZXIsIHRydWUpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2d1dHRlckNvbnRleHRNZW51OiBmdW5jdGlvbihjb2RlTWlycm9yLCBs
aW5lTnVtYmVyLCBndXR0ZXJFbGVtZW50LCBldmVudCkKKyAgICBfZ3V0dGVyQ29udGV4dE1lbnUo
Y29kZU1pcnJvciwgbGluZU51bWJlciwgZ3V0dGVyRWxlbWVudCwgZXZlbnQpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLnRleHRFZGl0
b3JHdXR0ZXJDb250ZXh0TWVudSA9PT0gImZ1bmN0aW9uIikgewogICAgICAgICAgICAgdmFyIGJy
ZWFrcG9pbnRzID0gW107CkBAIC0xMjc2LDkgKzEyNTEsOSBAQCBXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgICAgIHRoaXMuX2RlbGVnYXRlLnRleHRFZGl0
b3JHdXR0ZXJDb250ZXh0TWVudSh0aGlzLCBsaW5lTnVtYmVyLCAwLCBicmVha3BvaW50cywgZXZl
bnQpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZG9jdW1lbnRNb3VzZU1vdmVk
OiBmdW5jdGlvbihldmVudCkKKyAgICBfZG9jdW1lbnRNb3VzZU1vdmVkKGV2ZW50KQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoIl9saW5lTnVtYmVyV2l0aE1vdXNlZERvd25CcmVha3Bv
aW50IiBpbiB0aGlzKTsKICAgICAgICAgaWYgKCEoIl9saW5lTnVtYmVyV2l0aE1vdXNlZERvd25C
cmVha3BvaW50IiBpbiB0aGlzKSkKQEAgLTEzMzIsOSArMTMwNyw5IEBAIFdlYkluc3BlY3Rvci5U
ZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2xpbmVOdW1iZXJXaXRo
RHJhZ2dlZEJyZWFrcG9pbnQgPSBsaW5lTnVtYmVyOwogICAgICAgICAgICAgdGhpcy5fY29sdW1u
TnVtYmVyV2l0aERyYWdnZWRCcmVha3BvaW50ID0gY29sdW1uTnVtYmVyOwogICAgICAgICB9Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfZG9jdW1lbnRNb3VzZVVwOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfZG9jdW1lbnRNb3VzZVVwKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
Il9saW5lTnVtYmVyV2l0aE1vdXNlZERvd25CcmVha3BvaW50IiBpbiB0aGlzKTsKICAgICAgICAg
aWYgKCEoIl9saW5lTnVtYmVyV2l0aE1vdXNlZERvd25CcmVha3BvaW50IiBpbiB0aGlzKSkKQEAg
LTEzNDUsOSArMTMyMCw5IEBAIFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgdGhpcy5f
ZG9jdW1lbnRNb3VzZU1vdmVkRXZlbnRMaXN0ZW5lciwgdHJ1ZSk7CiAgICAgICAgIGRvY3VtZW50
LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLCB0aGlzLl9kb2N1bWVudE1vdXNlVXBFdmVu
dExpc3RlbmVyLCB0cnVlKTsKIAotICAgICAgICBjb25zdCBkZWxlZ2F0ZUltcGxlbWVudHNCcmVh
a3BvaW50Q2xpY2tlZCA9IHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS50
ZXh0RWRpdG9yQnJlYWtwb2ludENsaWNrZWQgPT09ICJmdW5jdGlvbiI7Ci0gICAgICAgIGNvbnN0
IGRlbGVnYXRlSW1wbGVtZW50c0JyZWFrcG9pbnRSZW1vdmVkID0gdGhpcy5fZGVsZWdhdGUgJiYg
dHlwZW9mIHRoaXMuX2RlbGVnYXRlLnRleHRFZGl0b3JCcmVha3BvaW50UmVtb3ZlZCA9PT0gImZ1
bmN0aW9uIjsKLSAgICAgICAgY29uc3QgZGVsZWdhdGVJbXBsZW1lbnRzQnJlYWtwb2ludE1vdmVk
ID0gdGhpcy5fZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuX2RlbGVnYXRlLnRleHRFZGl0b3JCcmVh
a3BvaW50TW92ZWQgPT09ICJmdW5jdGlvbiI7CisgICAgICAgIHZhciBkZWxlZ2F0ZUltcGxlbWVu
dHNCcmVha3BvaW50Q2xpY2tlZCA9IHRoaXMuX2RlbGVnYXRlICYmIHR5cGVvZiB0aGlzLl9kZWxl
Z2F0ZS50ZXh0RWRpdG9yQnJlYWtwb2ludENsaWNrZWQgPT09ICJmdW5jdGlvbiI7CisgICAgICAg
IHZhciBkZWxlZ2F0ZUltcGxlbWVudHNCcmVha3BvaW50UmVtb3ZlZCA9IHRoaXMuX2RlbGVnYXRl
ICYmIHR5cGVvZiB0aGlzLl9kZWxlZ2F0ZS50ZXh0RWRpdG9yQnJlYWtwb2ludFJlbW92ZWQgPT09
ICJmdW5jdGlvbiI7CisgICAgICAgIHZhciBkZWxlZ2F0ZUltcGxlbWVudHNCcmVha3BvaW50TW92
ZWQgPSB0aGlzLl9kZWxlZ2F0ZSAmJiB0eXBlb2YgdGhpcy5fZGVsZWdhdGUudGV4dEVkaXRvckJy
ZWFrcG9pbnRNb3ZlZCA9PT0gImZ1bmN0aW9uIjsKIAogICAgICAgICBpZiAodGhpcy5fbW91c2VE
cmFnZ2VkKSB7CiAgICAgICAgICAgICBpZiAoISgiX2xpbmVOdW1iZXJXaXRoRHJhZ2dlZEJyZWFr
cG9pbnQiIGluIHRoaXMpKSB7CkBAIC0xMzkzLDkgKzEzNjgsOSBAQCBXZWJJbnNwZWN0b3IuVGV4
dEVkaXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9jb2x1bW5OdW1iZXJX
aXRoRHJhZ2dlZEJyZWFrcG9pbnQ7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9wcmV2aW91c0NvbHVt
bkJyZWFrcG9pbnRJbmZvOwogICAgICAgICBkZWxldGUgdGhpcy5fbW91c2VEcmFnZ2VkOwotICAg
IH0sCisgICAgfQogCi0gICAgX29wZW5DbGlja2VkTGlua3M6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9vcGVuQ2xpY2tlZExpbmtzKGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gR2V0IHRoZSBwb3Np
dGlvbiBpbiB0aGUgdGV4dCBhbmQgdGhlIHRva2VuIGF0IHRoYXQgcG9zaXRpb24uCiAgICAgICAg
IHZhciBwb3NpdGlvbiA9IHRoaXMuX2NvZGVNaXJyb3IuY29vcmRzQ2hhcih7bGVmdDogZXZlbnQu
cGFnZVgsIHRvcDogZXZlbnQucGFnZVl9KTsKQEAgLTE0MjEsOSArMTM5Niw5IEBAIFdlYkluc3Bl
Y3Rvci5UZXh0RWRpdG9yLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gU3RvcCBwcm9jZXNzaW5n
IHRoZSBldmVudC4KICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgZXZl
bnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaXNQb3NpdGlvblZp
c2libGU6IGZ1bmN0aW9uKHBvc2l0aW9uKQorICAgIF9pc1Bvc2l0aW9uVmlzaWJsZShwb3NpdGlv
bikKICAgICB7CiAgICAgICAgIHZhciBzY3JvbGxJbmZvID0gdGhpcy5fY29kZU1pcnJvci5nZXRT
Y3JvbGxJbmZvKCk7CiAgICAgICAgIHZhciB2aXNpYmxlUmFuZ2VTdGFydCA9IHNjcm9sbEluZm8u
dG9wOwpAQCAtMTQzMSw5ICsxNDA2LDkgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90
eXBlID0gewogICAgICAgICB2YXIgY29vcmRzID0gdGhpcy5fY29kZU1pcnJvci5jaGFyQ29vcmRz
KHBvc2l0aW9uLCAibG9jYWwiKTsKIAogICAgICAgICByZXR1cm4gY29vcmRzLnRvcCA+PSB2aXNp
YmxlUmFuZ2VTdGFydCAmJiBjb29yZHMuYm90dG9tIDw9IHZpc2libGVSYW5nZUVuZDsKLSAgICB9
LAorICAgIH0KIAotICAgIF9zY3JvbGxJbnRvVmlld0NlbnRlcmVkOiBmdW5jdGlvbihwb3NpdGlv
bikKKyAgICBfc2Nyb2xsSW50b1ZpZXdDZW50ZXJlZChwb3NpdGlvbikKICAgICB7CiAgICAgICAg
IHZhciBzY3JvbGxJbmZvID0gdGhpcy5fY29kZU1pcnJvci5nZXRTY3JvbGxJbmZvKCk7CiAgICAg
ICAgIHZhciBsaW5lSGVpZ2h0ID0gTWF0aC5jZWlsKHRoaXMuX2NvZGVNaXJyb3IuZGVmYXVsdFRl
eHRIZWlnaHQoKSk7CkBAIC0xNDQyLDQgKzE0MTcsMjEgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3IucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKK1dlYklu
c3BlY3Rvci5UZXh0RWRpdG9yLkhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUgPSAiaGlnaGxpZ2h0
ZWQiOworV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuU2VhcmNoUmVzdWx0U3R5bGVDbGFzc05hbWUg
PSAic2VhcmNoLXJlc3VsdCI7CitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5IYXNCcmVha3BvaW50
U3R5bGVDbGFzc05hbWUgPSAiaGFzLWJyZWFrcG9pbnQiOworV2ViSW5zcGVjdG9yLlRleHRFZGl0
b3IuQnJlYWtwb2ludFJlc29sdmVkU3R5bGVDbGFzc05hbWUgPSAiYnJlYWtwb2ludC1yZXNvbHZl
ZCI7CitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5CcmVha3BvaW50QXV0b0NvbnRpbnVlU3R5bGVD
bGFzc05hbWUgPSAiYnJlYWtwb2ludC1hdXRvLWNvbnRpbnVlIjsKK1dlYkluc3BlY3Rvci5UZXh0
RWRpdG9yLkJyZWFrcG9pbnREaXNhYmxlZFN0eWxlQ2xhc3NOYW1lID0gImJyZWFrcG9pbnQtZGlz
YWJsZWQiOworV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuTXVsdGlwbGVCcmVha3BvaW50c1N0eWxl
Q2xhc3NOYW1lID0gIm11bHRpcGxlLWJyZWFrcG9pbnRzIjsKK1dlYkluc3BlY3Rvci5UZXh0RWRp
dG9yLkV4ZWN1dGlvbkxpbmVTdHlsZUNsYXNzTmFtZSA9ICJleGVjdXRpb24tbGluZSI7CitXZWJJ
bnNwZWN0b3IuVGV4dEVkaXRvci5Cb3VuY3lIaWdobGlnaHRTdHlsZUNsYXNzTmFtZSA9ICJib3Vu
Y3ktaGlnaGxpZ2h0IjsKK1dlYkluc3BlY3Rvci5UZXh0RWRpdG9yLk51bWJlck9mRmluZHNQZXJT
ZWFyY2hCYXRjaCA9IDEwOworV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuSGlnaGxpZ2h0QW5pbWF0
aW9uRHVyYXRpb24gPSAyMDAwOworCitXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudCA9IHsK
KyAgICBFeGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hhbmdlOiAidGV4dC1lZGl0b3ItZXhlY3V0aW9u
LWxpbmUtbnVtYmVyLWRpZC1jaGFuZ2UiLAorICAgIE51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENo
YW5nZTogInRleHQtZWRpdG9yLW51bWJlci1vZi1zZWFyY2gtcmVzdWx0cy1kaWQtY2hhbmdlIiwK
KyAgICBDb250ZW50RGlkQ2hhbmdlOiAidGV4dC1lZGl0b3ItY29udGVudC1kaWQtY2hhbmdlIiwK
KyAgICBGb3JtYXR0aW5nRGlkQ2hhbmdlOiAidGV4dC1lZGl0b3ItZm9ybWF0dGluZy1kaWQtY2hh
bmdlIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKaW5kZXggMTcy
ODczNC4uNTAwNmEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVzb3Vy
Y2UpCitXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBUZXh0UmVz
b3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3
CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcuY2FsbCh0aGlzLCByZXNv
dXJjZSwgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1l
KTsKKyAgICBjb25zdHJ1Y3RvcihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlc291
cmNlLCAidGV4dCIpOwogCiAgICAgICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlNvdXJjZUNvZGUuRXZlbnQuQ29udGVudERpZENoYW5nZSwgdGhpcy5fc291cmNlQ29k
ZUNvbnRlbnREaWRDaGFuZ2UsIHRoaXMpOwogCkBAIC01OSwzMCArNjEsMjUgQEAgV2ViSW5zcGVj
dG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCiAgICAgICAg
IHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKIAog
ICAgICAgICBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5n
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhp
cy5fc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7Ci19
OwotCi1XZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUg
PSAidGV4dCI7Ci0KLVdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50
VmlldywKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRp
b25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbV07Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgbWFuYWdlc093bklzc3VlcygpCiAgICAgewogICAgICAgICAvLyBTb3Vy
Y2VDb2RlVGV4dEVkaXRvciBtYW5hZ2VzIHRoZSBpc3N1ZXMsIHdlIGRvbid0IG5lZWQgUmVzb3Vy
Y2VDb250ZW50VmlldyBkb2luZyBpdC4KICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgdGV4dEVkaXRvcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
dGV4dEVkaXRvcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBwbGVtZW50YWxSZXByZXNl
bnRlZE9iamVjdHMoKQogICAgIHsKQEAgLTk2LDk5ICs5Myw5OSBAQCBXZWJJbnNwZWN0b3IuVGV4
dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgb2JqZWN0cy5w
dXNoKFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuYWN0aXZlQ2FsbEZyYW1lKTsKIAogICAg
ICAgICByZXR1cm4gb2JqZWN0czsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbFBvc2l0aW9u
OiBmdW5jdGlvbihwb3NpdGlvbiwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQp
CisgICAgcmV2ZWFsUG9zaXRpb24ocG9zaXRpb24sIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVu
Zm9ybWF0dGVkKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZXZlYWxQb3NpdGlv
bihwb3NpdGlvbiwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3JtYXR0ZWQpOwotICAgIH0s
CisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAg
ICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuc2hvd24uY2Fs
bCh0aGlzKTsKIAogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnNob3duKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLmhpZGRlbi5jYWxs
KHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuaGlkZGVuKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZC5jYWxs
KHRoaXMpOwogCiAgICAgICAgIHRoaXMucmVzb3VyY2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZS5FdmVudC5Db250ZW50RGlkQ2hhbmdlLCB0aGlzLl9zb3VyY2VD
b2RlQ29udGVudERpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5j
bG9zZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU2F2ZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzYXZlRGF0YSgp
CiAgICAgewogICAgICAgICByZXR1cm4ge3VybDogdGhpcy5yZXNvdXJjZS51cmwsIGNvbnRlbnQ6
IHRoaXMuX3RleHRFZGl0b3Iuc3RyaW5nfTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBw
b3J0c1NlYXJjaCgpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBudW1iZXJPZlNlYXJjaFJlc3VsdHMoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3RleHRFZGl0b3IubnVtYmVyT2ZTZWFyY2hSZXN1bHRzOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGhhc1BlcmZvcm1lZFNlYXJjaCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fdGV4dEVkaXRvci5jdXJyZW50U2VhcmNoUXVlcnkgIT09IG51bGw7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBzZXQgYXV0b21hdGljYWxseVJldmVhbEZpcnN0U2VhcmNoUmVzdWx0KHJldmVhbCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYXV0b21hdGljYWxseVJldmVhbEZpcnN0
U2VhcmNoUmVzdWx0ID0gcmV2ZWFsOwotICAgIH0sCisgICAgfQogCi0gICAgcGVyZm9ybVNlYXJj
aDogZnVuY3Rpb24ocXVlcnkpCisgICAgcGVyZm9ybVNlYXJjaChxdWVyeSkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3RleHRFZGl0b3IucGVyZm9ybVNlYXJjaChxdWVyeSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzZWFyY2hDbGVhcmVkOiBmdW5jdGlvbigpCisgICAgc2VhcmNoQ2xlYXJlZCgpCiAg
ICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnNlYXJjaENsZWFyZWQoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbjogZnVuY3Rpb24oKQorICAgIHNl
YXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGV4
dEVkaXRvci5zZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICBy
ZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cykKICAgICB7CiAgICAgICAgIHRo
aXMuX3RleHRFZGl0b3IucmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQoY2hhbmdlRm9jdXMpOwot
ICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsTmV4dFNlYXJjaFJlc3VsdDogZnVuY3Rpb24oY2hh
bmdlRm9jdXMpCisgICAgcmV2ZWFsTmV4dFNlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cykKICAgICB7
CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmV2ZWFsTmV4dFNlYXJjaFJlc3VsdChjaGFuZ2VG
b2N1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAg
ICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci51cGRhdGVM
YXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jb250ZW50
V2lsbFBvcHVsYXRlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudFdpbGxQb3B1bGF0ZShl
dmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl90ZXh0RWRpdG9yLmVsZW1lbnQucGFyZW50
Tm9kZSA9PT0gdGhpcy5lbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjAzLDY3ICsy
MDAsNjUgQEAgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RleHRFZGl0b3IuZWxlbWVudCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfY29udGVudERpZFBvcHVsYXRlOiBmdW5jdGlvbihldmVudCkKKyAgICBf
Y29udGVudERpZFBvcHVsYXRlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcHJldHR5UHJp
bnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gdGhpcy5fdGV4dEVkaXRvci5jYW5CZUZv
cm1hdHRlZCgpOwogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5l
bmFibGVkID0gdGhpcy5fdGV4dEVkaXRvci5jYW5TaG93VHlwZUFubm90YXRpb25zKCk7CiAgICAg
ICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZCA9IFdlYklu
c3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcudmFsdWU7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlUHJldHR5UHJpbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF90b2dnbGVQcmV0dHlQcmludChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBhY3RpdmF0ZWQg
PSAhdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQ7CiAgICAg
ICAgIHRoaXMuX3RleHRFZGl0b3IuZm9ybWF0dGVkID0gYWN0aXZhdGVkOwotICAgIH0sCisgICAg
fQogCi0gICAgX3RvZ2dsZVR5cGVBbm5vdGF0aW9uczogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Rv
Z2dsZVR5cGVBbm5vdGF0aW9ucyhldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0
b3IudG9nZ2xlVHlwZUFubm90YXRpb25zKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd0ph
dmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX3Nob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZ0NoYW5nZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0
ZWQgPSBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLnZh
bHVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3RleHRFZGl0b3JGb3JtYXR0aW5nRGlkQ2hhbmdl
OiBmdW5jdGlvbihldmVudCkKKyAgICBfdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRDaGFuZ2UoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVt
LmFjdGl2YXRlZCA9IHRoaXMuX3RleHRFZGl0b3IuZm9ybWF0dGVkOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3NvdXJjZUNvZGVDb250ZW50RGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBf
c291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5faWdub3JlU291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2VFdmVudCkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnN0cmluZyA9IHRoaXMucmVzb3VyY2Uu
Y3VycmVudFJldmlzaW9uLmNvbnRlbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGV4dEVkaXRv
ckNvbnRlbnREaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90ZXh0RWRpdG9yQ29udGVu
dERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2lnbm9yZVNvdXJjZUNvZGVD
b250ZW50RGlkQ2hhbmdlRXZlbnQgPSB0cnVlOwogICAgICAgICBXZWJJbnNwZWN0b3IuYnJhbmNo
TWFuYWdlci5jdXJyZW50QnJhbmNoLnJldmlzaW9uRm9yUmVwcmVzZW50ZWRPYmplY3QodGhpcy5y
ZXNvdXJjZSkuY29udGVudCA9IHRoaXMuX3RleHRFZGl0b3Iuc3RyaW5nOwogICAgICAgICBkZWxl
dGUgdGhpcy5faWdub3JlU291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2VFdmVudDsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9leGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfZXhlY3V0aW9uTGluZU51bWJlckRpZENoYW5nZShldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dy5FdmVudC5TdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOwotICAgIH0s
CisgICAgfQogCi0gICAgX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZTogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZShldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250
ZW50Vmlldy5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3Byb2JlU2V0c0NoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wcm9i
ZVNldHNDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVu
dC5kYXRhLnByb2JlU2V0LmJyZWFrcG9pbnQ7CiAgICAgICAgIGlmIChicmVha3BvaW50LnNvdXJj
ZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlID09PSB0aGlzLnJlc291cmNlKQogICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2
ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSk7CiAgICAgfQogfTsK
LQotV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURh
dGFHcmlkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVEYXRhR3JpZC5qcwppbmRleCA3NGNhM2Q1Li5kNGIzNjMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
RGF0YUdyaWQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDEzICsyMywxNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkID0gZnVuY3Rpb24o
dHJlZU91dGxpbmUsIGNvbHVtbnMsIGRlbGVnYXRlLCBlZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxi
YWNrKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQgPSBjbGFzcyBUaW1lbGluZURhdGFH
cmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRhdGFHcmlkCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLmNhbGwodGhpcywgY29sdW1ucywgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjayk7
CisgICAgY29uc3RydWN0b3IodHJlZU91dGxpbmUsIGNvbHVtbnMsIGRlbGVnYXRlLCBlZGl0Q2Fs
bGJhY2ssIGRlbGV0ZUNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgc3VwZXIoY29sdW1ucywgZWRp
dENhbGxiYWNrLCBkZWxldGVDYWxsYmFjayk7CiAKICAgICAgICAgdGhpcy5fdHJlZU91dGxpbmVE
YXRhR3JpZFN5bmNocm9uaXplciA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3Jp
ZFN5bmNocm9uaXplcih0cmVlT3V0bGluZSwgdGhpcywgZGVsZWdhdGUpOwogCi0gICAgdGhpcy5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuU3R5bGVD
bGFzc05hbWUpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUi
KTsKIAogICAgICAgICB0aGlzLl9maWx0ZXJhYmxlQ29sdW1ucyA9IFtdOwogCkBAIC02NCwxNiAr
NjYsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZCA9IGZ1bmN0aW9uKHRyZWVPdXRs
aW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbAogICAgICAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcigicmVzaXplIiwgdGhpcy5fd2luZG93UmVzaXplZC5iaW5kKHRoaXMpKTsKICAgICB9
CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLlN0eWxlQ2xhc3NOYW1lID0gInRpbWVs
aW5lIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLkhhc05vbkRlZmF1bHRGaWx0ZXJT
dHlsZUNsYXNzTmFtZSA9ICJoYXMtbm9uLWRlZmF1bHQtZmlsdGVyIjsKLVdlYkluc3BlY3Rvci5U
aW1lbGluZURhdGFHcmlkLkRlbGF5ZWRQb3BvdmVyU2hvd1RpbWVvdXQgPSAyNTA7Ci1XZWJJbnNw
ZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5EZWxheWVkUG9wb3ZlckhpZGVDb250ZW50Q2xlYXJUaW1l
b3V0ID0gNTAwOworICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3Jp
ZC5FdmVudCA9IHsKLSAgICBGaWx0ZXJzRGlkQ2hhbmdlOiAidGltZWxpbmVkYXRhZ3JpZC1maWx0
ZXJzLWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5jcmVh
dGVDb2x1bW5TY29wZUJhciA9IGZ1bmN0aW9uKHByZWZpeCwgbWFwKQorICAgIHN0YXRpYyBjcmVh
dGVDb2x1bW5TY29wZUJhcihwcmVmaXgsIG1hcCkKICAgICB7CiAgICAgICAgIHByZWZpeCA9IHBy
ZWZpeCArICItdGltZWxpbmUtZGF0YS1ncmlkLSI7CiAKQEAgLTg4LDYwICs4Myw1NiBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5jcmVhdGVDb2x1bW5TY29wZUJhciA9IGZ1bmN0aW9u
KHByZWZpeCwgbWFwKQogICAgICAgICBzY29wZUJhckl0ZW1zLnVuc2hpZnQobmV3IFdlYkluc3Bl
Y3Rvci5TY29wZUJhckl0ZW0ocHJlZml4ICsgInR5cGUtYWxsIiwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJBbGwiKSwgdHJ1ZSkpOwogCiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlNj
b3BlQmFyKHByZWZpeCArICJzY29wZS1iYXIiLCBzY29wZUJhckl0ZW1zLCBzY29wZUJhckl0ZW1z
WzBdKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQsCi0gICAgX19w
cm90b19fOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLAorICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICByZXNldCgpCiAgICAgewogICAg
ICAgICAvLyBNYXkgYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLiBJZiBzbywgdGhleSBzaG91
bGQgY2FsbCB0aGUgc3VwZXJjbGFzcy4KIAogICAgICAgICB0aGlzLl9oaWRlUG9wb3ZlcigpOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAg
ewogICAgICAgICAvLyBNYXkgYmUgb3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLiBJZiBzbywgdGhl
eSBzaG91bGQgY2FsbCB0aGUgc3VwZXJjbGFzcy4KIAogICAgICAgICB0aGlzLl90cmVlT3V0bGlu
ZURhdGFHcmlkU3luY2hyb25pemVyLnN5bmNocm9uaXplKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgLy8gTWF5
IGJlIG92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4gSWYgc28sIHRoZXkgc2hvdWxkIGNhbGwgdGhl
IHN1cGVyY2xhc3MuCiAKICAgICAgICAgdGhpcy5faGlkZVBvcG92ZXIoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHRyZWVFbGVtZW50Rm9yRGF0YUdyaWROb2RlOiBmdW5jdGlvbihkYXRhR3JpZE5v
ZGUpCisgICAgdHJlZUVsZW1lbnRGb3JEYXRhR3JpZE5vZGUoZGF0YUdyaWROb2RlKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIudHJl
ZUVsZW1lbnRGb3JEYXRhR3JpZE5vZGUoZGF0YUdyaWROb2RlKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAg
ICBkYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLmRhdGFHcmlkTm9k
ZUZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbGxG
cmFtZVBvcG92ZXJBbmNob3JFbGVtZW50OiBmdW5jdGlvbigpCisgICAgY2FsbEZyYW1lUG9wb3Zl
ckFuY2hvckVsZW1lbnQoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVM
YXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS51cGRhdGVMYXlvdXQuY2FsbCh0aGlzKTsKIAog
ICAgICAgICBpZiAodGhpcy5fbmF2aWdhdGlvbkJhcikKICAgICAgICAgICAgIHRoaXMuX25hdmln
YXRpb25CYXIudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmVlRWxlbWVu
dE1hdGNoZXNBY3RpdmVTY29wZUZpbHRlcnM6IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIHRy
ZWVFbGVtZW50TWF0Y2hlc0FjdGl2ZVNjb3BlRmlsdGVycyh0cmVlRWxlbWVudCkKICAgICB7CiAg
ICAgICAgIHZhciBkYXRhR3JpZE5vZGUgPSB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlkU3luY2hy
b25pemVyLmRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50KHRyZWVFbGVtZW50KTsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoZGF0YUdyaWROb2RlKTsKQEAgLTE2MSw5ICsxNTIsOSBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZFJvd0luU29ydE9yZGVyOiBm
dW5jdGlvbih0cmVlRWxlbWVudCwgZGF0YUdyaWROb2RlLCBwYXJlbnRFbGVtZW50KQorICAgIGFk
ZFJvd0luU29ydE9yZGVyKHRyZWVFbGVtZW50LCBkYXRhR3JpZE5vZGUsIHBhcmVudEVsZW1lbnQp
CiAgICAgewogICAgICAgICB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLmFz
c29jaWF0ZSh0cmVlRWxlbWVudCwgZGF0YUdyaWROb2RlKTsKIApAQCAtMTgxLDE2ICsxNzIsMTYg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgLy8gQXBwZW5kIHRvIHRoZSBwYXJlbnQsIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHN5bmNocm9u
aXplciB0byBhcHBlbmQgdG8gdGhlIGRhdGEgZ3JpZC4KICAgICAgICAgICAgIHBhcmVudEVsZW1l
bnQuYXBwZW5kQ2hpbGQodHJlZUVsZW1lbnQpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBzaG91bGRJZ25vcmVTZWxlY3Rpb25FdmVudDogZnVuY3Rpb24oKQorICAgIHNob3VsZEln
bm9yZVNlbGVjdGlvbkV2ZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pZ25vcmVT
ZWxlY3Rpb25FdmVudCB8fCBmYWxzZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3Rl
ZAogCi0gICAgZGF0YUdyaWROb2RlTmVlZHNSZWZyZXNoOiBmdW5jdGlvbihkYXRhR3JpZE5vZGUp
CisgICAgZGF0YUdyaWROb2RlTmVlZHNSZWZyZXNoKGRhdGFHcmlkTm9kZSkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fZGlydHlEYXRhR3JpZE5vZGVzKQogICAgICAgICAgICAgdGhpcy5fZGly
dHlEYXRhR3JpZE5vZGVzID0gbmV3IFNldDsKQEAgLTIwMCwxMSArMTkxLDExIEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICB0aGlzLl9zY2hlZHVsZWREYXRhR3JpZE5vZGVSZWZyZXNoSWRlbnRpZmllciA9
IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl9yZWZyZXNoRGlydHlEYXRhR3JpZE5vZGVzLmJp
bmQodGhpcykpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3JlZnJl
c2hEaXJ0eURhdGFHcmlkTm9kZXM6IGZ1bmN0aW9uKCkKKyAgICBfcmVmcmVzaERpcnR5RGF0YUdy
aWROb2RlcygpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkRGF0YUdyaWROb2Rl
UmVmcmVzaElkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRo
aXMuX3NjaGVkdWxlZERhdGFHcmlkTm9kZVJlZnJlc2hJZGVudGlmaWVyKTsKQEAgLTI1Miw5ICsy
NDMsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuZW5hYmxlZCA9IHRydWU7
CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2RpcnR5RGF0YUdyaWROb2RlczsKLSAgICB9LAorICAg
IH0KIAotICAgIF9zb3J0OiBmdW5jdGlvbigpCisgICAgX3NvcnQoKQogICAgIHsKICAgICAgICAg
dmFyIHNvcnRDb2x1bW5JZGVudGlmaWVyID0gdGhpcy5zb3J0Q29sdW1uSWRlbnRpZmllcjsKICAg
ICAgICAgaWYgKCFzb3J0Q29sdW1uSWRlbnRpZmllcikKQEAgLTMxMCw5ICszMDEsOSBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBzZWxl
Y3RlZE5vZGUucmV2ZWFsQW5kU2VsZWN0KCk7CiAKICAgICAgICAgZGVsZXRlIHRoaXMuX2lnbm9y
ZVNlbGVjdGlvbkV2ZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX3NvcnRDb21wYXJhdG9yOiBm
dW5jdGlvbihub2RlMSwgbm9kZTIpCisgICAgX3NvcnRDb21wYXJhdG9yKG5vZGUxLCBub2RlMikK
ICAgICB7CiAgICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmllciA9IHRoaXMuc29ydENvbHVt
bklkZW50aWZpZXI7CiAgICAgICAgIGlmICghc29ydENvbHVtbklkZW50aWZpZXIpCkBAIC0zNDks
OSArMzQwLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlID0gewog
CiAgICAgICAgIC8vIEZvciBldmVyeXRoaW5nIGVsc2UgKG1vc3RseSBib29sZWFucykuCiAgICAg
ICAgIHJldHVybiAodmFsdWUxIDwgdmFsdWUyID8gLTEgOiAodmFsdWUxID4gdmFsdWUyID8gMSA6
IDApKSAqIHNvcnREaXJlY3Rpb247Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU2NvcGVC
YXJGb3JjZWRWaXNpYmlsaXR5OiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZVNjb3BlQmFyRm9yY2Vk
VmlzaWJpbGl0eSgpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpZGVudGlmaWVyIG9mIHRoaXMu
X2ZpbHRlcmFibGVDb2x1bW5zKSB7CiAgICAgICAgICAgICB2YXIgc2NvcGVCYXIgPSB0aGlzLmNv
bHVtbnMuZ2V0KGlkZW50aWZpZXIpLnNjb3BlQmFyOwpAQCAtMzYwLDE3ICszNTEsMTcgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
c2NvcGVCYXJTZWxlY3RlZEl0ZW1zRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2Nv
cGVCYXJTZWxlY3RlZEl0ZW1zRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5f
dXBkYXRlU2NvcGVCYXJGb3JjZWRWaXNpYmlsaXR5KCk7CiAKICAgICAgICAgdmFyIGNvbHVtbklk
ZW50aWZpZXIgPSBldmVudC50YXJnZXQuY29sdW1uSWRlbnRpZmllcjsKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuRXZl
bnQuRmlsdGVyc0RpZENoYW5nZSwge2NvbHVtbklkZW50aWZpZXJ9KTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9kYXRhR3JpZFNlbGVjdGVkTm9kZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9kYXRhR3JpZFNlbGVjdGVkTm9kZUNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuc2VsZWN0ZWROb2RlKSB7CiAgICAgICAgICAgICB0aGlzLl9oaWRlUG9wb3ZlcigpOwpA
QCAtMzg0LDE1ICszNzUsMTUgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJGb3JTZWxlY3Rl
ZE5vZGVTb29uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfd2luZG93UmVzaXplZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX3dpbmRvd1Jlc2l6ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fcG9wb3ZlciAmJiB0aGlzLl9wb3BvdmVyLnZpc2libGUpCiAgICAgICAgICAgICB0aGlz
Ll91cGRhdGVQb3BvdmVyRm9yU2VsZWN0ZWROb2RlKGZhbHNlKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9zaG93UG9wb3ZlckZvclNlbGVjdGVkTm9kZVNvb246IGZ1bmN0aW9uKCkKKyAgICBfc2hv
d1BvcG92ZXJGb3JTZWxlY3RlZE5vZGVTb29uKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9z
aG93UG9wb3ZlclRpbWVvdXQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00MDYsOSArMzk3LDkg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB9
CiAKICAgICAgICAgdGhpcy5fc2hvd1BvcG92ZXJUaW1lb3V0ID0gc2V0VGltZW91dChkZWxheWVk
V29yay5iaW5kKHRoaXMpLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5EZWxheWVkUG9w
b3ZlclNob3dUaW1lb3V0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oaWRlUG9wb3ZlcjogZnVu
Y3Rpb24oKQorICAgIF9oaWRlUG9wb3ZlcigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2hv
d1BvcG92ZXJUaW1lb3V0KSB7CiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fc2hvd1Bv
cG92ZXJUaW1lb3V0KTsKQEAgLTQyNyw5ICs0MTgsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVE
YXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9oaWRlUG9wb3ZlckNvbnRl
bnRDbGVhclRpbWVvdXQpCiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZVBvcG92
ZXJDb250ZW50Q2xlYXJUaW1lb3V0KTsKICAgICAgICAgdGhpcy5faGlkZVBvcG92ZXJDb250ZW50
Q2xlYXJUaW1lb3V0ID0gc2V0VGltZW91dChkZWxheWVkV29yay5iaW5kKHRoaXMpLCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5EZWxheWVkUG9wb3ZlckhpZGVDb250ZW50Q2xlYXJUaW1l
b3V0KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVQb3BvdmVyRm9yU2VsZWN0ZWROb2Rl
OiBmdW5jdGlvbih1cGRhdGVDb250ZW50KQorICAgIF91cGRhdGVQb3BvdmVyRm9yU2VsZWN0ZWRO
b2RlKHVwZGF0ZUNvbnRlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3BvcG92ZXIgfHwg
IXRoaXMuc2VsZWN0ZWROb2RlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDU0LDE0ICs0NDUs
MTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGhpcy5fcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fY3JlYXRlUG9wb3ZlckNvbnRlbnQo
KTsKIAogICAgICAgICB0aGlzLl9wb3BvdmVyLnByZXNlbnQodGFyZ2V0RnJhbWUucGFkKDIpLCBb
V2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1BWF9ZLCBXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUlOX1ks
IFdlYkluc3BlY3Rvci5SZWN0RWRnZS5NQVhfWF0pOwotICAgIH0sCisgICAgfQogCi0gICAgX2Ny
ZWF0ZVBvcG92ZXJDb250ZW50OiBmdW5jdGlvbigpCisgICAgX2NyZWF0ZVBvcG92ZXJDb250ZW50
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcG9wb3ZlckNhbGxTdGFja1RyZWVPdXRsaW5l
KSB7CiAgICAgICAgICAgICB2YXIgY29udGVudEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJvbCIpOwogICAgICAgICAgICAgY29udGVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGlt
ZWxpbmUtZGF0YS1ncmlkLXRyZWUtb3V0bGluZSIpOwotICAgICAgICAgICAgdGhpcy5fcG9wb3Zl
ckNhbGxTdGFja1RyZWVPdXRsaW5lID0gbmV3IFRyZWVPdXRsaW5lKGNvbnRlbnRFbGVtZW50KTsK
KyAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJDYWxsU3RhY2tUcmVlT3V0bGluZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuVHJlZU91dGxpbmUoY29udGVudEVsZW1lbnQpOwogICAgICAgICAgICAgdGhpcy5f
cG9wb3ZlckNhbGxTdGFja1RyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fcG9wb3ZlckNhbGxT
dGFja1RyZWVFbGVtZW50U2VsZWN0ZWQuYmluZCh0aGlzKTsKICAgICAgICAgfSBlbHNlCiAgICAg
ICAgICAgICB0aGlzLl9wb3BvdmVyQ2FsbFN0YWNrVHJlZU91dGxpbmUucmVtb3ZlQ2hpbGRyZW4o
KTsKQEAgLTQ3Niw5ICs0NjcsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gInRpbWVsaW5lLWRhdGEtZ3Jp
ZC1wb3BvdmVyIjsKICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh0aGlzLl9wb3BvdmVyQ2Fs
bFN0YWNrVHJlZU91dGxpbmUuZWxlbWVudCk7CiAgICAgICAgIHJldHVybiBjb250ZW50OwotICAg
IH0sCisgICAgfQogCi0gICAgX3BvcG92ZXJDYWxsU3RhY2tUcmVlRWxlbWVudFNlbGVjdGVkOiBm
dW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAgX3BvcG92ZXJDYWxsU3Rh
Y2tUcmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7
CiAgICAgICAgIHRoaXMuX3BvcG92ZXIuZGlzbWlzcygpOwogCkBAIC00OTAsMyArNDgxLDExIEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVsLnNob3dTb3VyY2VDb2RlTG9jYXRpb24oY2Fs
bEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlRp
bWVsaW5lRGF0YUdyaWQuSGFzTm9uRGVmYXVsdEZpbHRlclN0eWxlQ2xhc3NOYW1lID0gImhhcy1u
b24tZGVmYXVsdC1maWx0ZXIiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuRGVsYXll
ZFBvcG92ZXJTaG93VGltZW91dCA9IDI1MDsKK1dlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlk
LkRlbGF5ZWRQb3BvdmVySGlkZUNvbnRlbnRDbGVhclRpbWVvdXQgPSA1MDA7CisKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZURhdGFHcmlkLkV2ZW50ID0geworICAgIEZpbHRlcnNEaWRDaGFuZ2U6ICJ0
aW1lbGluZWRhdGFncmlkLWZpbHRlcnMtZGlkLWNoYW5nZSIKK307CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkTm9k
ZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
RGF0YUdyaWROb2RlLmpzCmluZGV4IDIyZTNiYjMuLmIzZWE3ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lRGF0YUdyaWROb2Rl
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lRGF0YUdyaWROb2RlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlID0g
ZnVuY3Rpb24oZ3JhcGhPbmx5LCBncmFwaERhdGFTb3VyY2UsIGhhc0NoaWxkcmVuKQorV2ViSW5z
cGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlID0gY2xhc3MgVGltZWxpbmVEYXRhR3JpZE5vZGUg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkTm9kZS5jYWxsKHRoaXMsIHt9LCBoYXNDaGlsZHJlbik7CisgICAgY29uc3RydWN0b3Io
Z3JhcGhPbmx5LCBncmFwaERhdGFTb3VyY2UsIGhhc0NoaWxkcmVuKQorICAgIHsKKyAgICAgICAg
c3VwZXIoe30sIGhhc0NoaWxkcmVuKTsKIAogICAgICAgICB0aGlzLmNvcHlhYmxlID0gZmFsc2U7
CiAKQEAgLTM2LDE0ICszOCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZSA9
IGZ1bmN0aW9uKGdyYXBoT25seSwgZ3JhcGhEYXRhU291cmNlLCBoYXNDaGlsCiAgICAgICAgICAg
ICB0aGlzLl9ncmFwaENvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKICAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFycyA9IFtdOwogICAgICAg
ICB9Ci19OwotCi0vLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRl
ZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9k
ZSk7Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZSwKLSAgICBf
X3Byb3RvX186IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLAorICAgIH0KIAog
ICAgIC8vIFB1YmxpYwogCkBAIC01MSwxMiArNDYsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBbXTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBncmFwaERhdGFTb3VyY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2dyYXBo
RGF0YVNvdXJjZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkYXRhKCkKICAgICB7CkBAIC02
NSw5ICs2MCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgdmFyIHJlY29yZHMgPSB0aGlzLnJlY29yZHMgfHwgW107CiAgICAgICAg
IHJldHVybiB7Z3JhcGg6IHJlY29yZHMubGVuZ3RoID8gcmVjb3Jkc1swXS5zdGFydFRpbWUgOiAw
fTsKLSAgICB9LAorICAgIH0KIAotICAgIGNvbGxhcHNlOiBmdW5jdGlvbigpCisgICAgY29sbGFw
c2UoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUu
Y29sbGFwc2UuY2FsbCh0aGlzKTsKIApAQCAtNzYsOSArNzEsOSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFJlZnJlc2ggdG8g
c2hvdyBjaGlsZCBiYXJzIGluIG91ciBncmFwaCBub3cgdGhhdCB3ZSBjb2xsYXBzZWQuCiAgICAg
ICAgIHRoaXMucmVmcmVzaEdyYXBoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBleHBhbmQ6IGZ1
bmN0aW9uKCkKKyAgICBleHBhbmQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFH
cmlkTm9kZS5wcm90b3R5cGUuZXhwYW5kLmNhbGwodGhpcyk7CiAKQEAgLTk1LDkgKzkwLDkgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICBjaGlsZE5vZGUucmVmcmVzaEdyYXBoKCk7CiAgICAgICAgICAgICBjaGlsZE5vZGUg
PSBjaGlsZE5vZGUudHJhdmVyc2VOZXh0Tm9kZSh0cnVlLCB0aGlzKTsKICAgICAgICAgfQotICAg
IH0sCisgICAgfQogCi0gICAgY3JlYXRlQ2VsbENvbnRlbnQ6IGZ1bmN0aW9uKGNvbHVtbklkZW50
aWZpZXIsIGNlbGwpCisgICAgY3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwgY2Vs
bCkKICAgICB7CiAgICAgICAgIGlmIChjb2x1bW5JZGVudGlmaWVyID09PSAiZ3JhcGgiICYmIHRo
aXMuX2dyYXBoRGF0YVNvdXJjZSkgewogICAgICAgICAgICAgdGhpcy5uZWVkc0dyYXBoUmVmcmVz
aCgpOwpAQCAtMTMwLDcgKzEyNSw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9k
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBmcmFnbWVudC5hcHBlbmRDaGlsZChnb1RvQXJy
b3dCdXR0b25MaW5rKTsKIAogICAgICAgICAgICAgdmFyIGljb24gPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIGljb24uY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9y
LlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLkljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAg
ICAgIGljb24uY2xhc3NOYW1lID0gImljb24iOwogICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5k
Q2hpbGQoaWNvbik7CiAKICAgICAgICAgICAgIHZhciB0aXRsZUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7CkBAIC0yMDksOSArMjA0LDkgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxsQ29udGVu
dC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIsIGNlbGwpOwotICAgIH0sCisgICAgfQogCi0g
ICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2dyYXBoRGF0YVNvdXJjZSAmJiB0aGlzLl9ncmFwaE9ubHkpIHsKICAgICAgICAgICAg
IHRoaXMubmVlZHNHcmFwaFJlZnJlc2goKTsKQEAgLTIxOSw5ICsyMTQsOSBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUucmVmcmVzaC5jYWxsKHRoaXMp
OwotICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaEdyYXBoOiBmdW5jdGlvbigpCisgICAgcmVm
cmVzaEdyYXBoKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZ3JhcGhEYXRhU291cmNlKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjU5LDE1ICsyNTQsNiBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBib3VuZENyZWF0
ZUJhciA9IGNyZWF0ZUJhci5iaW5kKHRoaXMpOwogCi0gICAgICAgIGlmICh0aGlzLmV4cGFuZGVk
KSB7Ci0gICAgICAgICAgICAvLyBXaGVuIGV4cGFuZGVkIGp1c3QgdXNlIHRoZSByZWNvcmRzIGZv
ciB0aGlzIG5vZGUuCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIu
Y3JlYXRlQ29tYmluZWRCYXJzKHRoaXMucmVjb3Jkcywgc2Vjb25kc1BlclBpeGVsLCB0aGlzLl9n
cmFwaERhdGFTb3VyY2UsIGJvdW5kQ3JlYXRlQmFyKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIC8vIFdoZW4gY29sbGFwc2VkIHVzZSB0aGUgcmVjb3JkcyBmb3IgdGhpcyBub2RlIGFu
ZCBpdHMgZGVzY2VuZGFudHMuCi0gICAgICAgICAgICAvLyBUbyBzaGFyZSBiYXJzIGJldHRlciwg
Z3JvdXAgcmVjb3JkcyBieSB0eXBlLgotCi0gICAgICAgICAgICB2YXIgcmVjb3JkVHlwZU1hcCA9
IG5ldyBNYXA7Ci0KICAgICAgICAgZnVuY3Rpb24gY29sbGVjdFJlY29yZHNCeVR5cGUocmVjb3Jk
cykKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh2YXIgcmVjb3JkIG9mIHJlY29yZHMpIHsK
QEAgLTI4MSw2ICsyNjcsMTUgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIGlmICh0aGlz
LmV4cGFuZGVkKSB7CisgICAgICAgICAgICAvLyBXaGVuIGV4cGFuZGVkIGp1c3QgdXNlIHRoZSBy
ZWNvcmRzIGZvciB0aGlzIG5vZGUuCisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRCYXIuY3JlYXRlQ29tYmluZWRCYXJzKHRoaXMucmVjb3Jkcywgc2Vjb25kc1BlclBpeGVs
LCB0aGlzLl9ncmFwaERhdGFTb3VyY2UsIGJvdW5kQ3JlYXRlQmFyKTsKKyAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgIC8vIFdoZW4gY29sbGFwc2VkIHVzZSB0aGUgcmVjb3JkcyBmb3IgdGhp
cyBub2RlIGFuZCBpdHMgZGVzY2VuZGFudHMuCisgICAgICAgICAgICAvLyBUbyBzaGFyZSBiYXJz
IGJldHRlciwgZ3JvdXAgcmVjb3JkcyBieSB0eXBlLgorCisgICAgICAgICAgICB2YXIgcmVjb3Jk
VHlwZU1hcCA9IG5ldyBNYXA7CisKICAgICAgICAgICAgIGNvbGxlY3RSZWNvcmRzQnlUeXBlKHRo
aXMucmVjb3Jkcyk7CiAKICAgICAgICAgICAgIHZhciBjaGlsZE5vZGUgPSB0aGlzLmNoaWxkcmVu
WzBdOwpAQCAtMjk5LDkgKzI5NCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9k
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnNbcmVj
b3JkQmFySW5kZXhdLnJlY29yZHMgPSBudWxsOwogICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVS
ZWNvcmRCYXJzW3JlY29yZEJhckluZGV4XS5lbGVtZW50LnJlbW92ZSgpOwogICAgICAgICB9Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBuZWVkc0dyYXBoUmVmcmVzaDogZnVuY3Rpb24oKQorICAgIG5l
ZWRzR3JhcGhSZWZyZXNoKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5yZXZlYWxlZCkgewog
ICAgICAgICAgICAgLy8gV2UgYXJlIG5vdCB2aXNpYmxlLCBidXQgYW4gYW5jZXN0b3Igd2lsbCBi
ZSBkcmF3aW5nIG91ciBncmFwaC4KQEAgLTMyMywxMSArMzE4LDExIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgdGhpcy5fc2NoZWR1bGVkR3JhcGhSZWZyZXNoSWRlbnRpZmllciA9IHJlcXVlc3RB
bmltYXRpb25GcmFtZSh0aGlzLnJlZnJlc2hHcmFwaC5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgaXNSZWNvcmRWaXNpYmxlOiBmdW5jdGlvbihy
ZWNvcmQpCisgICAgaXNSZWNvcmRWaXNpYmxlKHJlY29yZCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fZ3JhcGhEYXRhU291cmNlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVP
dmVydmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rp
bWVsaW5lT3ZlcnZpZXcuanMKaW5kZXggNTgyYmU4Zi4uZGRlMDRjMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGlu
ZU92ZXJ2aWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywxNyArMjMsMTggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldyA9IGZ1bmN0aW9u
KHRpbWVsaW5lUmVjb3JkaW5nKQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcgPSBjbGFz
cyBUaW1lbGluZU92ZXJ2aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
KyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZVJlY29yZGluZykKKyAgICB7CisgICAgICAgIHN1cGVy
KCk7CiAKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nID0gdGltZWxpbmVSZWNvcmRpbmc7CiAgICAg
ICAgIHRoaXMuX3JlY29yZGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZGluZy5FdmVudC5UaW1lbGluZUFkZGVkLCB0aGlzLl90aW1lbGluZUFkZGVkLCB0aGlz
KTsKICAgICAgICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlRpbWVsaW5lUmVtb3ZlZCwgdGhpcy5fdGltZWxpbmVS
ZW1vdmVkLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0
b3IuVGltZWxpbmVPdmVydmlldy5TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc05hbWUgPSAidGltZWxpbmUtb3ZlcnZpZXciOwogICAgICAgICB0aGlzLl9lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIiwgdGhpcy5faGFuZGxlV2hlZWxFdmVudC5iaW5kKHRo
aXMpKTsKIAogICAgICAgICB0aGlzLl9ncmFwaHNDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CkBAIC03NiwzNCArNzcsMTkgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lT3ZlcnZpZXcgPSBmdW5jdGlvbih0aW1lbGluZVJlY29yZGluZykKIAogICAgICAgICBm
b3IgKHZhciB0aW1lbGluZSBvZiB0aGlzLl9yZWNvcmRpbmcudGltZWxpbmVzLnZhbHVlcygpKQog
ICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVBZGRlZCh0aW1lbGluZSk7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuVGltZWxpbmVPdmVydmlldy5TdHlsZUNsYXNzTmFtZSA9ICJ0aW1lbGluZS1vdmVydmll
dyI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5HcmFwaHNDb250YWluZXJTdHlsZUNs
YXNzTmFtZSA9ICJncmFwaHMtY29udGFpbmVyIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2
aWV3LlNjcm9sbENvbnRhaW5lclN0eWxlQ2xhc3NOYW1lID0gInNjcm9sbC1jb250YWluZXIiOwot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuU2Nyb2xsV2lkdGhTaXplclN0eWxlQ2xhc3NO
YW1lID0gInNjcm9sbC13aWR0aC1zaXplciI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmll
dy5NaW5pbXVtU2Vjb25kc1BlclBpeGVsID0gMC4wMDE7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVP
dmVydmlldy5TY3JvbGxEZWx0YURlbm9taW5hdG9yID0gNTAwOwotCi1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlldy5FdmVudCA9IHsKLSAgICBUaW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkOiAi
dGltZWxpbmUtb3ZlcnZpZXctdGltZS1yYW5nZS1zZWxlY3Rpb24tY2hhbmdlZCIKLX07Ci0KLVdl
Ykluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNw
ZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdl
dCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fc3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHN0YXJ0VGltZSh4KQogICAg
IHsKQEAgLTExMywxMiArOTksMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSB4IHx8IDA7CiAKICAgICAgICAg
dGhpcy5fbmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjdXJyZW50VGlt
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzZXQgY3VycmVudFRpbWUoeCkKICAgICB7CkBAIC0xMjksMTIgKzExNSwxMiBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX3JldmVhbEN1cnJlbnRUaW1lID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl9uZWVkc0xheW91
dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlY29uZHNQZXJQaXhlbCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fc2Vjb25kc1BlclBpeGVsOwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IHNlY29uZHNQZXJQaXhlbCh4KQogICAgIHsKQEAgLTE0NywxMiArMTMzLDEyIEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
c2Vjb25kc1BlclBpeGVsU2V0dGluZy52YWx1ZSA9IHg7CiAKICAgICAgICAgdGhpcy5fbmVlZHNM
YXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmRUaW1lKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9lbmRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVuZFRp
bWUoeCkKICAgICB7CkBAIC0xNjIsMTIgKzE0OCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVP
dmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VuZFRpbWUgPSB4IHx8IDA7CiAK
ICAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBz
Y3JvbGxTdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbFN0YXJ0
VGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzY3JvbGxTdGFydFRpbWUoeCkKICAgICB7
CkBAIC0xNzcsNyArMTYzLDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9zY3JvbGxTdGFydFRpbWUgPSB4IHx8IDA7CiAKICAgICAg
ICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB2aXNpYmxl
RHVyYXRpb24oKQogICAgIHsKQEAgLTE4NywxMiArMTczLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0
aGlzLl9jYWNoZWRTY3JvbGxDb250YWluZXJXaWR0aCAqIHRoaXMuX3NlY29uZHNQZXJQaXhlbDsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rpb25TdGFydFRpbWUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uU3RhcnRUaW1lOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IHNlbGVjdGlvblN0YXJ0VGltZSh4KQogICAgIHsKQEAgLTIw
MSwyNSArMTg3LDI1IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIHNlbGVjdGlvbkR1cmF0aW9uID0gdGhpcy5zZWxlY3Rpb25EdXJhdGlv
bjsKICAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5zZWxlY3Rpb25TdGFydFRpbWUgPSB4Owog
ICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLnNlbGVjdGlvbkVuZFRpbWUgPSB4ICsgc2VsZWN0
aW9uRHVyYXRpb247Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uRHVyYXRpb24o
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uRW5k
VGltZSAtIHRoaXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uU3RhcnRUaW1lOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IHNlbGVjdGlvbkR1cmF0aW9uKHgpCiAgICAgewogICAgICAgICB4ID0g
TWF0aC5tYXgoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bVNlbGVjdGlvblRpbWVS
YW5nZSwgeCk7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uRW5kVGltZSA9
IHRoaXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uU3RhcnRUaW1lICsgeDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCB2aXNpYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92aXNp
YmxlOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigp
CiAgICAgewogICAgICAgICB0aGlzLl92aXNpYmxlID0gdHJ1ZTsKIApAQCAtMjI3LDM5ICsyMTMs
MzkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGltZWxpbmVPdmVydmlld0dyYXBoLnNob3duKCk7CiAKICAgICAgICAgdGhpcy51cGRh
dGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAg
IGhpZGRlbigpCiAgICAgewogICAgICAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7CiAKICAgICAg
ICAgZm9yICh2YXIgdGltZWxpbmVPdmVydmlld0dyYXBoIG9mIHRoaXMuX3RpbWVsaW5lT3ZlcnZp
ZXdHcmFwaHNNYXAudmFsdWVzKCkpCiAgICAgICAgICAgICB0aW1lbGluZU92ZXJ2aWV3R3JhcGgu
aGlkZGVuKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHJl
c2V0KCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIHRpbWVsaW5lT3ZlcnZpZXdHcmFwaCBvZiB0
aGlzLl90aW1lbGluZU92ZXJ2aWV3R3JhcGhzTWFwLnZhbHVlcygpKQogICAgICAgICAgICAgdGlt
ZWxpbmVPdmVydmlld0dyYXBoLnJlc2V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRNYXJr
ZXI6IGZ1bmN0aW9uKG1hcmtlcikKKyAgICBhZGRNYXJrZXIobWFya2VyKQogICAgIHsKICAgICAg
ICAgdGhpcy5fdGltZWxpbmVSdWxlci5hZGRNYXJrZXIobWFya2VyKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHJldmVhbE1hcmtlcjogZnVuY3Rpb24obWFya2VyKQorICAgIHJldmVhbE1hcmtlciht
YXJrZXIpCiAgICAgewogICAgICAgICB0aGlzLnNjcm9sbFN0YXJ0VGltZSA9IG1hcmtlci50aW1l
IC0gKHRoaXMudmlzaWJsZUR1cmF0aW9uIC8gMik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRh
dGVMYXlvdXRGb3JSZXNpemU6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXRGb3JSZXNpemUo
KQogICAgIHsKICAgICAgICAgdGhpcy5fY2FjaGVkU2Nyb2xsQ29udGFpbmVyV2lkdGggPSBOYU47
CiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRh
dGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAg
aWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKICAgICAgICAgICAg
IGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZp
ZXIpOwpAQCAtMjgwLDcgKzI2Niw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9yZXZlYWxDdXJyZW50VGltZTsK
ICAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IHZpc2libGVEdXJhdGlvbiA9IHRoaXMudmlzaWJs
ZUR1cmF0aW9uOworICAgICAgICB2YXIgdmlzaWJsZUR1cmF0aW9uID0gdGhpcy52aXNpYmxlRHVy
YXRpb247CiAKICAgICAgICAgLy8gQ2xhbXAgdGhlIHNjcm9sbCBzdGFydCB0aW1lIHRvIG1hdGNo
IHdoYXQgdGhlIHNjcm9sbCBiYXIgd291bGQgYWxsb3cuCiAgICAgICAgIHZhciBzY3JvbGxTdGFy
dFRpbWUgPSBNYXRoLm1pbih0aGlzLl9zY3JvbGxTdGFydFRpbWUsIHRoaXMuX2VuZFRpbWUgLSB2
aXNpYmxlRHVyYXRpb24pOwpAQCAtMzA0LDkgKzI5MCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRpbWVsaW5lT3ZlcnZpZXdHcmFw
aC5lbmRUaW1lID0gc2Nyb2xsU3RhcnRUaW1lICsgdmlzaWJsZUR1cmF0aW9uOwogICAgICAgICAg
ICAgdGltZWxpbmVPdmVydmlld0dyYXBoLnVwZGF0ZUxheW91dCgpOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIHVw
ZGF0ZUxheW91dElmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRM
YXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgp
OwpAQCAtMzE3LDE4ICszMDMsMTggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJv
dG90eXBlID0gewogCiAgICAgICAgIGZvciAodmFyIHRpbWVsaW5lT3ZlcnZpZXdHcmFwaCBvZiB0
aGlzLl90aW1lbGluZU92ZXJ2aWV3R3JhcGhzTWFwLnZhbHVlcygpKQogICAgICAgICAgICAgdGlt
ZWxpbmVPdmVydmlld0dyYXBoLnVwZGF0ZUxheW91dElmTmVlZGVkKCk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRlRWxlbWVudFdpZHRoOiBmdW5jdGlvbihl
bGVtZW50LCBuZXdXaWR0aCkKKyAgICBfdXBkYXRlRWxlbWVudFdpZHRoKGVsZW1lbnQsIG5ld1dp
ZHRoKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRXaWR0aCA9IHBhcnNlSW50KGVsZW1lbnQu
c3R5bGUud2lkdGgpOwogICAgICAgICBpZiAoY3VycmVudFdpZHRoICE9PSBuZXdXaWR0aCkKICAg
ICAgICAgICAgIGVsZW1lbnQuc3R5bGUud2lkdGggPSBuZXdXaWR0aCArICJweCI7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfbmVlZHNMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICBfbmVlZHNMYXlvdXQo
KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl92aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMzM3LDkgKzMyMyw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zY2hlZHVsZWRM
YXlvdXRVcGRhdGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudXBkYXRl
TGF5b3V0LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZVNjcm9sbEV2
ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlU2Nyb2xsRXZlbnQoZXZlbnQpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5faWdub3JlTmV4dFNjcm9sbEV2ZW50KSB7CiAgICAgICAgICAg
ICBkZWxldGUgdGhpcy5faWdub3JlTmV4dFNjcm9sbEV2ZW50OwpAQCAtMzU1LDkgKzM0MSw5IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy51cGRhdGVMYXlvdXRJZk5lZWRlZCgpOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9kb250VXBk
YXRlU2Nyb2xsTGVmdDsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVXaGVlbEV2ZW50OiBm
dW5jdGlvbihldmVudCkKKyAgICBfaGFuZGxlV2hlZWxFdmVudChldmVudCkKICAgICB7CiAgICAg
ICAgIC8vIElnbm9yZSBjbG9uZWQgZXZlbnRzIHRoYXQgY29tZSBvdXIgd2F5LCB3ZSBhbHJlYWR5
IGhhbmRsZWQgdGhlIG9yaWdpbmFsLgogICAgICAgICBpZiAoZXZlbnQuX19jbG9uZWQpCkBAIC0z
ODYsOSArMzcyLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0g
ewogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RpbWVsaW5lQWRkZWQ6IGZ1bmN0
aW9uKHRpbWVsaW5lT3JFdmVudCkKKyAgICBfdGltZWxpbmVBZGRlZCh0aW1lbGluZU9yRXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgdGltZWxpbmUgPSB0aW1lbGluZU9yRXZlbnQ7CiAgICAgICAg
IGlmICghKHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKSkKQEAgLTM5
NywxMyArMzgzLDEzIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuVGltZWxpbmUsIHRpbWVsaW5lKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3Rp
bWVsaW5lT3ZlcnZpZXdHcmFwaHNNYXAuaGFzKHRpbWVsaW5lKSwgdGltZWxpbmUpOwogCi0gICAg
ICAgIHZhciBvdmVydmlld0dyYXBoID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
R3JhcGgodGltZWxpbmUpOworICAgICAgICB2YXIgb3ZlcnZpZXdHcmFwaCA9IFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3R3JhcGguY3JlYXRlKHRpbWVsaW5lKTsKICAgICAgICAgb3ZlcnZp
ZXdHcmFwaC50aW1lbGluZU92ZXJ2aWV3ID0gdGhpczsKICAgICAgICAgdGhpcy5fdGltZWxpbmVP
dmVydmlld0dyYXBoc01hcC5zZXQodGltZWxpbmUsIG92ZXJ2aWV3R3JhcGgpOwogICAgICAgICB0
aGlzLl9ncmFwaHNDb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKG92ZXJ2aWV3R3JhcGguZWxl
bWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVSZW1vdmVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfdGltZWxpbmVSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHRp
bWVsaW5lID0gZXZlbnQuZGF0YS50aW1lbGluZTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGlt
ZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUsIHRpbWVsaW5lKTsKQEAgLTQx
Miw5ICszOTgsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHZhciBvdmVydmlld0dyYXBoID0gdGhpcy5fdGltZWxpbmVPdmVydmlld0dyYXBo
c01hcC50YWtlKHRpbWVsaW5lKTsKICAgICAgICAgb3ZlcnZpZXdHcmFwaC50aW1lbGluZU92ZXJ2
aWV3ID0gbnVsbDsKICAgICAgICAgdGhpcy5fZ3JhcGhzQ29udGFpbmVyRWxlbWVudC5yZW1vdmVD
aGlsZChvdmVydmlld0dyYXBoLmVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RpbWVS
YW5nZVNlbGVjdGlvbkNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90aW1lUmFuZ2VTZWxl
Y3Rpb25DaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fc2VsZWN0aW9uU3RhcnRU
aW1lU2V0dGluZy52YWx1ZSA9IHRoaXMuc2VsZWN0aW9uU3RhcnRUaW1lIC0gdGhpcy5fc3RhcnRU
aW1lOwogICAgICAgICB0aGlzLl9zZWxlY3Rpb25EdXJhdGlvblNldHRpbmcudmFsdWUgPSB0aGlz
LnNlbGVjdGlvbkR1cmF0aW9uOwpAQCAtNDIyLDMgKzQwOCwxMyBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LkV2ZW50LlRpbWVSYW5nZVNl
bGVjdGlvbkNoYW5nZWQpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2
aWV3LkdyYXBoc0NvbnRhaW5lclN0eWxlQ2xhc3NOYW1lID0gImdyYXBocy1jb250YWluZXIiOwor
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuU2Nyb2xsQ29udGFpbmVyU3R5bGVDbGFzc05h
bWUgPSAic2Nyb2xsLWNvbnRhaW5lciI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5T
Y3JvbGxXaWR0aFNpemVyU3R5bGVDbGFzc05hbWUgPSAic2Nyb2xsLXdpZHRoLXNpemVyIjsKK1dl
Ykluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3Lk1pbmltdW1TZWNvbmRzUGVyUGl4ZWwgPSAwLjAw
MTsKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LlNjcm9sbERlbHRhRGVub21pbmF0b3Ig
PSA1MDA7CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LkV2ZW50ID0geworICAgIFRp
bWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQ6ICJ0aW1lbGluZS1vdmVydmlldy10aW1lLXJhbmdlLXNl
bGVjdGlvbi1jaGFuZ2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwpp
bmRleCA3MTlkOWRmLi4yMjdiNmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2aWV3R3JhcGguanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlld0dyYXBo
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDExICsyMywyNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBmdW5jdGlvbih0aW1l
bGluZSkKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBjbGFzcyBUaW1lbGlu
ZU92ZXJ2aWV3R3JhcGggZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgaWYgKHRo
aXMuY29uc3RydWN0b3IgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgpIHsK
LSAgICAgICAgLy8gV2hlbiBpbnN0YW50aWF0ZWQgZGlyZWN0bHkgcmV0dXJuIGFuIGluc3RhbmNl
IG9mIGEgdHlwZS1iYXNlZCBjb25jcmV0ZSBzdWJjbGFzcy4KKyAgICBjb25zdHJ1Y3RvcigpCisg
ICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgidGltZWxpbmUtb3ZlcnZpZXctZ3JhcGgiKTsKKworICAgICAgICB0aGlzLl96ZXJvVGltZSA9
IDA7CisgICAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IDA7CisgICAgICAgIHRoaXMuX2VuZFRpbWUg
PSA1OworICAgICAgICB0aGlzLl9jdXJyZW50VGltZSA9IDA7CisgICAgICAgIHRoaXMuX3RpbWVs
aW5lT3ZlcnZpZXcgPSBudWxsOworICAgIH0KIAorICAgIC8vIFN0YXRpYworCisgICAgc3RhdGlj
IGNyZWF0ZSh0aW1lbGluZSkKKyAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5l
ICYmIHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKTsKIAogICAgICAg
ICB2YXIgdGltZWxpbmVUeXBlID0gdGltZWxpbmUudHlwZTsKQEAgLTQ2LDM0ICs2MSwxMiBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoID0gZnVuY3Rpb24odGltZWxpbmUpCiAg
ICAgICAgIHRocm93IEVycm9yKCJDYW4ndCBtYWtlIGEgZ3JhcGggZm9yIGFuIHVua25vd24gdGlt
ZWxpbmUuIik7CiAgICAgfQogCi0gICAgLy8gQ29uY3JldGUgb2JqZWN0IGluc3RhbnRpYXRpb24u
Ci0gICAgY29uc29sZS5hc3NlcnQodGhpcy5jb25zdHJ1Y3RvciAhPT0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lT3ZlcnZpZXdHcmFwaCAmJiB0aGlzIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lT3ZlcnZpZXdHcmFwaCk7Ci0KLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2Vi
SW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJ
bnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLlN0eWxlQ2xhc3NOYW1lKTsKLQotICAg
IHRoaXMuX3plcm9UaW1lID0gMDsKLSAgICB0aGlzLl9zdGFydFRpbWUgPSAwOwotICAgIHRoaXMu
X2VuZFRpbWUgPSA1OwotICAgIHRoaXMuX2N1cnJlbnRUaW1lID0gMDsKLSAgICB0aGlzLl90aW1l
bGluZU92ZXJ2aWV3ID0gbnVsbDsKLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
R3JhcGguU3R5bGVDbGFzc05hbWUgPSAidGltZWxpbmUtb3ZlcnZpZXctZ3JhcGgiOwotCi1XZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaCwKLSAgICBfX3Byb3RvX186
IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAotCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgemVyb1RpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3plcm9UaW1lOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IHplcm9UaW1lKHgpCiAgICAgewpAQCAtODMsMTIgKzc2LDEy
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl96ZXJvVGltZSA9IHggfHwgMDsKIAogICAgICAgICB0aGlzLm5lZWRzTGF5b3V0
KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9zdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc3RhcnRU
aW1lKHgpCiAgICAgewpAQCAtOTgsMTIgKzkxLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92
ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSB4IHx8
IDA7CiAKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGVuZFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuZFRpbWU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgZW5kVGltZSh4KQogICAgIHsKQEAgLTExMywxMiArMTA2LDEy
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLl9lbmRUaW1lID0geCB8fCAwOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQo
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjdXJyZW50VGltZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY3Vy
cmVudFRpbWUoeCkKICAgICB7CkBAIC0xMzEsNDAgKzEyNCw0MCBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoKHRoaXMuX3N0
YXJ0VGltZSA8PSBvbGRDdXJyZW50VGltZSAmJiBvbGRDdXJyZW50VGltZSA8PSB0aGlzLl9lbmRU
aW1lKSB8fCAodGhpcy5fc3RhcnRUaW1lIDw9IHRoaXMuX2N1cnJlbnRUaW1lICYmIHRoaXMuX2N1
cnJlbnRUaW1lIDw9IHRoaXMuX2VuZFRpbWUpKQogICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91
dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRpbWVsaW5lT3ZlcnZpZXcoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXc7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBzZXQgdGltZWxpbmVPdmVydmlldyh4KQogICAgIHsKICAgICAgICAgdGhpcy5fdGltZWxp
bmVPdmVydmlldyA9IHg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmlzaWJsZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fdmlzaWJsZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNo
b3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdGhpcy5fdmlzaWJs
ZSA9IHRydWU7CiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhp
cy5fdmlzaWJsZSA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzZXQ6IGZ1bmN0aW9u
KCkKKyAgICByZXNldCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWItY2xh
c3NlcyBpZiBuZWVkZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0
aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NjaGVk
dWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlv
bkZyYW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOwpAQCAtMTcyLDE4
ICsxNjUsMTggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWItY2xhc3NlcyBp
ZiBuZWVkZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZDogZnVu
Y3Rpb24oKQorICAgIHVwZGF0ZUxheW91dElmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByb3RlY3RlZAogCi0gICAgbmVlZHNMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICBuZWVkc0xheW91
dCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3Zpc2libGUpCiAgICAgICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZVJlY29yZEJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkQmFyLmpzCmluZGV4IDU3ZmM4NzIuLjhkOGI4NzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lUmVjb3JkQmFyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RpbWVsaW5lUmVjb3JkQmFyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDM2ICsyMywyMiBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZEJhciA9IGZ1bmN0aW9uKHJlY29yZHMsIHJlbmRlck1vZGUpCitXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRCYXIgPSBjbGFzcyBUaW1lbGluZVJlY29yZEJhciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IocmVjb3JkcywgcmVuZGVyTW9kZSkK
KyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuU3R5bGVDbGFzc05hbWUpOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRpbWVsaW5lLXJlY29yZC1iYXIiKTsKIAog
ICAgICAgICB0aGlzLnJlbmRlck1vZGUgPSByZW5kZXJNb2RlOwogICAgICAgICB0aGlzLnJlY29y
ZHMgPSByZWNvcmRzOwotfTsKKyAgICB9CiAKLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVj
dG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9y
Lk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkQmFyKTsKKyAgICAvLyBTdGF0aWMKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkQmFyLlN0eWxlQ2xhc3NOYW1lID0gInRpbWVsaW5lLXJlY29yZC1iYXIiOwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLkJhclNlZ21lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZWdt
ZW50IjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5JbmFjdGl2ZVN0eWxlQ2xhc3NO
YW1lID0gImluYWN0aXZlIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5VbmZpbmlz
aGVkU3R5bGVDbGFzc05hbWUgPSAidW5maW5pc2hlZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRCYXIuSGFzSW5hY3RpdmVTZWdtZW50U3R5bGVDbGFzc05hbWUgPSAiaGFzLWluYWN0aXZl
LXNlZ21lbnQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLk1pbmltdW1XaWR0aFBp
eGVscyA9IDQ7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuTWluaW11bU1hcmdpblBp
eGVscyA9IDE7Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJNb2RlID0g
ewotICAgIE5vcm1hbDogInRpbWVsaW5lLXJlY29yZC1iYXItbm9ybWFsLXJlbmRlci1tb2RlIiwK
LSAgICBJbmFjdGl2ZU9ubHk6ICJ0aW1lbGluZS1yZWNvcmQtYmFyLWluYWN0aXZlLW9ubHktcmVu
ZGVyLW1vZGUiLAotICAgIEFjdGl2ZU9ubHk6ICJ0aW1lbGluZS1yZWNvcmQtYmFyLWFjdGl2ZS1v
bmx5LXJlbmRlci1tb2RlIgotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLmNy
ZWF0ZUNvbWJpbmVkQmFycyA9IGZ1bmN0aW9uKHJlY29yZHMsIHNlY29uZHNQZXJQaXhlbCwgZ3Jh
cGhEYXRhU291cmNlLCBjcmVhdGVCYXJDYWxsYmFjaykKKyAgICBzdGF0aWMgY3JlYXRlQ29tYmlu
ZWRCYXJzKHJlY29yZHMsIHNlY29uZHNQZXJQaXhlbCwgZ3JhcGhEYXRhU291cmNlLCBjcmVhdGVC
YXJDYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICghcmVjb3Jkcy5sZW5ndGgpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xNzYsMzMgKzE2MiwyOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRCYXIuY3JlYXRlQ29tYmluZWRCYXJzID0gZnVuY3Rpb24ocmVjb3Jkcywgc2Vjb25kc1Bl
cgogICAgICAgICAvLyBDcmVhdGUgdGhlIGFjdGl2ZSBiYXIgZm9yIHRoZSBsYXN0IHJlY29yZCBp
ZiBuZWVkZWQuCiAgICAgICAgIGlmICghaXNOYU4oYWN0aXZlU3RhcnRUaW1lKSkKICAgICAgICAg
ICAgIGNyZWF0ZUJhckNhbGxiYWNrKGFjdGl2ZVJlY29yZHMsIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZEJhci5SZW5kZXJNb2RlLkFjdGl2ZU9ubHkpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkQmFyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkQmFyLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVj
dC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCByZW5kZXJNb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZW5kZXJN
b2RlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJlbmRlck1vZGUocmVuZGVyTW9kZSkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3JlbmRlck1vZGUgPSByZW5kZXJNb2RlIHx8IFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJNb2RlLk5vcm1hbDsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCByZWNvcmRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRzOwot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJlY29yZHMocmVjb3JkcykKICAgICB7CkBAIC0yMTks
OSArMjAxLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgLy8gQXNzdW1lIGFsbCByZWNvcmRzIGFyZSB0aGUgc2FtZSB0eXBlLgogICAgICAg
ICBpZiAodGhpcy5fcmVjb3Jkcy5sZW5ndGgpCiAgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5hZGQodGhpcy5fcmVjb3Jkc1swXS50eXBlKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHJlZnJlc2g6IGZ1bmN0aW9uKGdyYXBoRGF0YVNvdXJjZSkKKyAgICByZWZyZXNoKGdyYXBoRGF0
YVNvdXJjZSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVjb3JkcyB8fCAhdGhpcy5fcmVj
b3Jkcy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMzIsMTEgKzMxNCwx
MSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGhpcy5fYWN0aXZlQmFyRWxlbWVudC5yZW1vdmUoKTsKIAogICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF91cGRhdGVFbGVt
ZW50UG9zaXRpb246IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1Bvc2l0aW9uLCBwcm9wZXJ0eSkKKyAg
ICBfdXBkYXRlRWxlbWVudFBvc2l0aW9uKGVsZW1lbnQsIG5ld1Bvc2l0aW9uLCBwcm9wZXJ0eSkK
ICAgICB7CiAgICAgICAgIG5ld1Bvc2l0aW9uICo9IDEwMDsKICAgICAgICAgbmV3UG9zaXRpb24g
PSBuZXdQb3NpdGlvbi50b0ZpeGVkKDIpOwpAQCAtMzQ2LDMgKzMyOCwxNiBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSZWNvcmRCYXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgZWxlbWVudC5z
dHlsZVtwcm9wZXJ0eV0gPSBuZXdQb3NpdGlvbiArICIlIjsKICAgICB9CiB9OworCitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuQmFyU2VnbWVudFN0eWxlQ2xhc3NOYW1lID0gInNlZ21l
bnQiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLkluYWN0aXZlU3R5bGVDbGFzc05h
bWUgPSAiaW5hY3RpdmUiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLlVuZmluaXNo
ZWRTdHlsZUNsYXNzTmFtZSA9ICJ1bmZpbmlzaGVkIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZEJhci5IYXNJbmFjdGl2ZVNlZ21lbnRTdHlsZUNsYXNzTmFtZSA9ICJoYXMtaW5hY3RpdmUt
c2VnbWVudCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuTWluaW11bVdpZHRoUGl4
ZWxzID0gNDsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5NaW5pbXVtTWFyZ2luUGl4
ZWxzID0gMTsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLlJlbmRlck1vZGUgPSB7
CisgICAgTm9ybWFsOiBTeW1ib2woInRpbWVsaW5lLXJlY29yZC1iYXItbm9ybWFsLXJlbmRlci1t
b2RlIiksCisgICAgSW5hY3RpdmVPbmx5OiBTeW1ib2woInRpbWVsaW5lLXJlY29yZC1iYXItaW5h
Y3RpdmUtb25seS1yZW5kZXItbW9kZSIpLAorICAgIEFjdGl2ZU9ubHk6IFN5bWJvbCgidGltZWxp
bmUtcmVjb3JkLWJhci1hY3RpdmUtb25seS1yZW5kZXItbW9kZSIpCit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRG
cmFtZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lUmVjb3JkRnJhbWUuanMKaW5kZXggODAyNzkyNi4uNDk1MjY2ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRGcmFt
ZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1l
bGluZVJlY29yZEZyYW1lLmpzCkBAIC0yMywyNyArMjMsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFt
ZSA9IGZ1bmN0aW9uKGdyYXBoRGF0YVNvdXJjZSwgcmVjb3JkcykKKworV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkRnJhbWUgPSBjbGFzcyBUaW1lbGluZVJlY29yZEZyYW1lIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJ
bnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihncmFwaERhdGFTb3Vy
Y2UsIHJlY29yZHMpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUuU3R5bGVDbGFz
c05hbWUpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoInRpbWVsaW5lLXJl
Y29yZC1mcmFtZSIpOwogCiAgICAgICAgIHRoaXMuX2dyYXBoRGF0YVNvdXJjZSA9IGdyYXBoRGF0
YVNvdXJjZTsKICAgICAgICAgdGhpcy5yZWNvcmRzID0gcmVjb3JkcyB8fCBbXTsKLX07CisgICAg
fQogCi0vLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5k
IHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENv
bnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lKTsKKyAg
ICAvLyBTdGF0aWMKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUuU3R5bGVDbGFz
c05hbWUgPSAidGltZWxpbmUtcmVjb3JkLWZyYW1lIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZEZyYW1lLlNpeHR5RnBzRnJhbWVCdWRnZXQgPSAwLjAxNjY7Ci1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRGcmFtZS5NaW5pbXVtV2lkdGhQaXhlbHMgPSA2OwotV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkRnJhbWUuTWluaW11bU1hcmdpblBpeGVscyA9IDE7Ci0KLVdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZEZyYW1lLmNyZWF0ZUNvbWJpbmVkRnJhbWVzID0gZnVuY3Rpb24ocmVj
b3Jkcywgc2Vjb25kc1BlclBpeGVsLCBncmFwaERhdGFTb3VyY2UsIGNyZWF0ZUZyYW1lQ2FsbGJh
Y2spCisgICAgc3RhdGljIGNyZWF0ZUNvbWJpbmVkRnJhbWVzKHJlY29yZHMsIHNlY29uZHNQZXJQ
aXhlbCwgZ3JhcGhEYXRhU291cmNlLCBjcmVhdGVGcmFtZUNhbGxiYWNrKQogICAgIHsKICAgICAg
ICAgaWYgKCFyZWNvcmRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMywxOCAr
OTksMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUuY3JlYXRlQ29tYmluZWRG
cmFtZXMgPSBmdW5jdGlvbihyZWNvcmRzLCBzZWNvbmQKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBh
Y3RpdmUgZnJhbWUgZm9yIHRoZSBsYXN0IHJlY29yZCBpZiBuZWVkZWQuCiAgICAgICAgIGlmICgh
aXNOYU4oYWN0aXZlU3RhcnRUaW1lKSkKICAgICAgICAgICAgIGNyZWF0ZUZyYW1lQ2FsbGJhY2so
YWN0aXZlUmVjb3Jkcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZEZyYW1lLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCisg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkdXJhdGlv
bigpCiAgICAgewpAQCAtMTIyLDEyICsxMTQsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAg
cmV0dXJuIHRoaXMucmVjb3Jkcy5sYXN0VmFsdWUuZW5kVGltZSAtIHRoaXMucmVjb3Jkc1swXS5z
dGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVjb3JkcygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fcmVjb3JkczsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCByZWNv
cmRzKHJlY29yZHMpCiAgICAgewpAQCAtMTM3LDcgKzEyOSw3IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZEZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJlY29yZHMgPSBbcmVj
b3Jkc107CiAKICAgICAgICAgdGhpcy5fcmVjb3JkcyA9IHJlY29yZHM7Ci0gICAgfSwKKyAgICB9
CiAKICAgICByZWZyZXNoKGdyYXBoRGF0YVNvdXJjZSkKICAgICB7CkBAIC0xNzUsNyArMTY3LDcg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl91cGRhdGVDaGlsZEVsZW1lbnRzKGdyYXBoRGF0YVNvdXJjZSk7CiAKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKQEAgLTI0OSw3
ICsyNDEsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl91cGRhdGVFbGVtZW50UG9zaXRpb24oZnJhbWVF
bGVtZW50LCBmcmFtZVdpZHRoLCAid2lkdGgiKTsKLSAgICB9LAorICAgIH0KIAogICAgIF91cGRh
dGVFbGVtZW50UG9zaXRpb24oZWxlbWVudCwgbmV3UG9zaXRpb24sIHByb3BlcnR5KQogICAgIHsK
QEAgLTI2MSwzICsyNTMsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBlbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IG5ld1Bvc2l0
aW9uICsgIiUiOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1l
LlNpeHR5RnBzRnJhbWVCdWRnZXQgPSAwLjAxNjY7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRGcmFtZS5NaW5pbXVtV2lkdGhQaXhlbHMgPSA2OworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkRnJhbWUuTWluaW11bU1hcmdpblBpeGVscyA9IDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVS
ZWNvcmRUcmVlRWxlbWVudC5qcwppbmRleCAwN2Q2ZmU5Li45ODVlYWZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZFRy
ZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjMgKzIzLDI0IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkVHJlZUVsZW1lbnQgPSBmdW5jdGlvbih0aW1lbGluZVJlY29yZCwgc3VidGl0bGVOYW1l
U3R5bGUsIGluY2x1ZGVUaW1lcklkZW50aWZpZXJJbk1haW5UaXRsZSwgc291cmNlQ29kZUxvY2F0
aW9uLCByZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVF
bGVtZW50ID0gY2xhc3MgVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudCBleHRlbmRzIFdlYkluc3Bl
Y3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQKK3sKKyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZVJlY29y
ZCwgc3VidGl0bGVOYW1lU3R5bGUsIGluY2x1ZGVUaW1lcklkZW50aWZpZXJJbk1haW5UaXRsZSwg
c291cmNlQ29kZUxvY2F0aW9uLCByZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRpbWVsaW5lUmVjb3JkKTsKIAotICAgIHRoaXMuX3JlY29yZCA9IHRpbWVs
aW5lUmVjb3JkOwotICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2Nh
dGlvbiB8fCB0aW1lbGluZVJlY29yZC5zb3VyY2VDb2RlTG9jYXRpb24gfHwgbnVsbDsKKyAgICAg
ICAgc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uIHx8IHRpbWVsaW5lUmVj
b3JkLnNvdXJjZUNvZGVMb2NhdGlvbiB8fCBudWxsOwogCiAgICAgICAgIHZhciB0aXRsZSA9ICIi
OwogICAgICAgICB2YXIgc3VidGl0bGUgPSAiIjsKIAotICAgIGlmICh0aGlzLl9zb3VyY2VDb2Rl
TG9jYXRpb24pIHsKKyAgICAgICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbikgewogICAgICAgICAg
ICAgc3VidGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAKICAgICAgICAg
ICAgIGlmIChzdWJ0aXRsZU5hbWVTdHlsZSAhPT0gV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVMb2Nh
dGlvbi5OYW1lU3R5bGUuTm9uZSkKLSAgICAgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlv
bi5wb3B1bGF0ZUxpdmVEaXNwbGF5TG9jYXRpb25TdHJpbmcoc3VidGl0bGUsICJ0ZXh0Q29udGVu
dCIsIG51bGwsIHN1YnRpdGxlTmFtZVN0eWxlKTsKKyAgICAgICAgICAgICAgICBzb3VyY2VDb2Rl
TG9jYXRpb24ucG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uU3RyaW5nKHN1YnRpdGxlLCAidGV4
dENvbnRlbnQiLCBudWxsLCBzdWJ0aXRsZU5hbWVTdHlsZSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ucG9wdWxhdGVMaXZlRGlzcGxheUxv
Y2F0aW9uU3RyaW5nKHN1YnRpdGxlLCAidGV4dENvbnRlbnQiLCBudWxsLCBXZWJJbnNwZWN0b3Iu
U291cmNlQ29kZUxvY2F0aW9uLk5hbWVTdHlsZS5Ob25lLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
ImxpbmUgIikpOworICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVMb2NhdGlvbi5wb3B1bGF0ZUxp
dmVEaXNwbGF5TG9jYXRpb25TdHJpbmcoc3VidGl0bGUsICJ0ZXh0Q29udGVudCIsIG51bGwsIFdl
Ykluc3BlY3Rvci5Tb3VyY2VDb2RlTG9jYXRpb24uTmFtZVN0eWxlLk5vbmUsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygibGluZSAiKSk7CiAgICAgICAgIH0KIAogICAgICAgICB2YXIgaWNvblN0eWxl
Q2xhc3MgPSBudWxsOwpAQCAtMTA4LDQ1ICsxMDksMzMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkVHJlZUVsZW1lbnQgPSBmdW5jdGlvbih0aW1lbGluZVJlY29yZCwgc3VidGl0bGVOYW1l
U3QKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gVGltZWxpbmVSZWNvcmQgdHlw
ZTogIiArIHRpbWVsaW5lUmVjb3JkLnR5cGUsIHRpbWVsaW5lUmVjb3JkKTsKICAgICAgICAgfQog
Ci0gICAgV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxlbWVudC5jYWxsKHRoaXMsIFtpY29uU3R5
bGVDbGFzc10sIHRpdGxlLCBzdWJ0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QgfHwgdGltZWxpbmVS
ZWNvcmQsIGZhbHNlKTsKKyAgICAgICAgc3VwZXIoW2ljb25TdHlsZUNsYXNzXSwgdGl0bGUsIHN1
YnRpdGxlLCByZXByZXNlbnRlZE9iamVjdCB8fCB0aW1lbGluZVJlY29yZCwgZmFsc2UpOworCisg
ICAgICAgIHRoaXMuX3JlY29yZCA9IHRpbWVsaW5lUmVjb3JkOworICAgICAgICB0aGlzLl9zb3Vy
Y2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb247CiAKICAgICAgICAgdGhpcy5zbWFs
bCA9IHRydWU7CiAKICAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbikKICAgICAg
ICAgICAgIHRoaXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKLX07Ci0KLVdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LlN0eWxlUmVjb3JkSWNvblN0eWxlQ2xh
c3MgPSAic3R5bGUtcmVjb3JkIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVt
ZW50LkxheW91dFJlY29yZEljb25TdHlsZUNsYXNzID0gImxheW91dC1yZWNvcmQiOwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuUGFpbnRSZWNvcmRJY29uU3R5bGVDbGFz
cyA9ICJwYWludC1yZWNvcmQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1l
bnQuUnVuTG9vcFJlY29yZEljb25TdHlsZUNsYXNzID0gInJ1bmxvb3AtcmVjb3JkIjsKLVdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LkV2YWx1YXRlZFJlY29yZEljb25TdHls
ZUNsYXNzID0gImV2YWx1YXRlZC1yZWNvcmQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
VHJlZUVsZW1lbnQuRXZlbnRSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJldmVudC1yZWNvcmQiOwot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuVGltZXJSZWNvcmRJY29uU3R5
bGVDbGFzcyA9ICJ0aW1lci1yZWNvcmQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJl
ZUVsZW1lbnQuQW5pbWF0aW9uUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAiYW5pbWF0aW9uLXJlY29y
ZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5Qcm9iZVJlY29yZElj
b25TdHlsZUNsYXNzID0gInByb2JlLXJlY29yZCI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRUcmVlRWxlbWVudC5Db25zb2xlUHJvZmlsZUljb25TdHlsZUNsYXNzID0gImNvbnNvbGUtcHJv
ZmlsZS1yZWNvcmQiOwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZFRyZWVFbGVtZW50LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkdlbmVyYWxUcmVlRWxl
bWVudC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgcmVjb3Jk
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmQ7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBnZXQgZmlsdGVyYWJsZURhdGEoKQogICAgIHsKICAgICAgICAgdmFyIHVybCA9IHRoaXMu
X3NvdXJjZUNvZGVMb2NhdGlvbiA/IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2Rl
LnVybCA6ICIiOwogICAgICAgICByZXR1cm4ge3RleHQ6IFt0aGlzLm1haW5UaXRsZSwgdXJsIHx8
ICIiLCB0aGlzLl9yZWNvcmQuZGV0YWlscyB8fCAiIl19OwotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gUHJvdGVjdGVkCiAKLSAgICBvbmF0dGFjaDogZnVuY3Rpb24oKQorICAgIG9uYXR0YWNoKCkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnQucHJvdG90eXBl
Lm9uYXR0YWNoLmNhbGwodGhpcyk7CiAKQEAgLTE1OSwzICsxNDgsMTQgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9z
b3VyY2VDb2RlTG9jYXRpb24ucG9wdWxhdGVMaXZlRGlzcGxheUxvY2F0aW9uVG9vbHRpcCh0aGlz
LmVsZW1lbnQsIHRvb2x0aXBQcmVmaXgpOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZFRyZWVFbGVtZW50LlN0eWxlUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAic3R5bGUt
cmVjb3JkIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZFRyZWVFbGVtZW50LkxheW91dFJl
Y29yZEljb25TdHlsZUNsYXNzID0gImxheW91dC1yZWNvcmQiOworV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkVHJlZUVsZW1lbnQuUGFpbnRSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJwYWludC1y
ZWNvcmQiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuUnVuTG9vcFJl
Y29yZEljb25TdHlsZUNsYXNzID0gInJ1bmxvb3AtcmVjb3JkIjsKK1dlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZFRyZWVFbGVtZW50LkV2YWx1YXRlZFJlY29yZEljb25TdHlsZUNsYXNzID0gImV2
YWx1YXRlZC1yZWNvcmQiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQu
RXZlbnRSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJldmVudC1yZWNvcmQiOworV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuVGltZXJSZWNvcmRJY29uU3R5bGVDbGFzcyA9ICJ0
aW1lci1yZWNvcmQiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkVHJlZUVsZW1lbnQuQW5p
bWF0aW9uUmVjb3JkSWNvblN0eWxlQ2xhc3MgPSAiYW5pbWF0aW9uLXJlY29yZCI7CitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVudC5Qcm9iZVJlY29yZEljb25TdHlsZUNsYXNz
ID0gInByb2JlLXJlY29yZCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRUcmVlRWxlbWVu
dC5Db25zb2xlUHJvZmlsZUljb25TdHlsZUNsYXNzID0gImNvbnNvbGUtcHJvZmlsZS1yZWNvcmQi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuanMKaW5kZXgg
MTQxOTc1NS4uNTBlNjU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGluZ0Nv
bnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE1
IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDEzICsy
NCwxNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVjb3JkaW5n
KQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcgPSBjbGFzcyBUaW1l
bGluZVJlY29yZGluZ0NvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVjb3JkaW5nKTsK
KyAgICBjb25zdHJ1Y3RvcihyZWNvcmRpbmcpCisgICAgeworICAgICAgICBzdXBlcihyZWNvcmRp
bmcpOwogCiAgICAgICAgIHRoaXMuX3JlY29yZGluZyA9IHJlY29yZGluZzsKIAotICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRl
bnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoInRpbWVsaW5lLXJlY29yZGluZyIpOwogCiAgICAgICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZp
ZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcodGhpcy5fcmVjb3JkaW5nKTsK
ICAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU92ZXJ2aWV3LkV2ZW50LlRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQsIHRo
aXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQsIHRoaXMpOwpAQCAtNzgsMjUgKzgwLDE2IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVj
b3JkaW5nKQogICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVBZGRlZCh0aW1lbGluZSk7CiAKICAg
ICAgICAgdGhpcy5zaG93T3ZlcnZpZXdUaW1lbGluZVZpZXcoKTsKLX07Ci0KLVdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gInRpbWVsaW5l
LXJlY29yZGluZyI7Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3
LlNlbGVjdGVkVGltZWxpbmVUeXBlQ29va2llS2V5ID0gInRpbWVsaW5lLXJlY29yZGluZy1jb250
ZW50LXZpZXctc2VsZWN0ZWQtdGltZWxpbmUtdHlwZSI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRpbmdDb250ZW50Vmlldy5PdmVydmlld1RpbWVsaW5lVmlld0Nvb2tpZVZhbHVlID0gInRp
bWVsaW5lLXJlY29yZGluZy1jb250ZW50LXZpZXctb3ZlcnZpZXctdGltZWxpbmUtdmlldyI7Ci0K
LVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZp
ZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLAor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCi0gICAgc2hvd092ZXJ2aWV3VGltZWxpbmVWaWV3OiBm
dW5jdGlvbigpCisgICAgc2hvd092ZXJ2aWV3VGltZWxpbmVWaWV3KCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnNob3dDb250ZW50Vmlldyh0aGlzLl9vdmVydmll
d1RpbWVsaW5lVmlldyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93VGltZWxpbmVWaWV3Rm9y
VGltZWxpbmU6IGZ1bmN0aW9uKHRpbWVsaW5lKQorICAgIHNob3dUaW1lbGluZVZpZXdGb3JUaW1l
bGluZSh0aW1lbGluZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLCB0aW1lbGluZSk7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX3RpbWVsaW5lVmlld01hcC5oYXModGltZWxpbmUpLCB0aW1lbGluZSk7
CkBAIC0xMDQsMTggKzk3LDE4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlz
Ll9jb250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVudFZpZXcodGhpcy5fdGltZWxpbmVWaWV3
TWFwLmdldCh0aW1lbGluZSkpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFsbG93ZWROYXZp
Z2F0aW9uU2lkZWJhclBhbmVscygpCiAgICAgewogICAgICAgICByZXR1cm4gW1dlYkluc3BlY3Rv
ci50aW1lbGluZVNpZGViYXJQYW5lbC5pZGVudGlmaWVyXTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBzdXBwb3J0c1NwbGl0Q29udGVudEJyb3dzZXIoKQogICAgIHsKICAgICAgICAgLy8gVGhl
IGxheW91dCBvZiB0aGUgb3ZlcnZpZXcgYW5kIHNwbGl0IGNvbnRlbnQgYnJvd3NlciBkb24ndCB3
b3JrIHdlbGwuCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cygpCiAgICAgewpAQCAtMTI3LDQ1ICsxMjAsNDUgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmUpCiAgICAgICAgICAgICBwYXRoQ29tcG9uZW50cy51bnNoaWZ0KHRoaXMuX3BhdGhDb21w
b25lbnRNYXAuZ2V0KHJlcHJlc2VudGVkT2JqZWN0KSk7CiAgICAgICAgIHJldHVybiBwYXRoQ29t
cG9uZW50czsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBwbGVtZW50YWxSZXByZXNlbnRl
ZE9iamVjdHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5l
ci5jdXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgIHJl
dHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcuc3VwcGxl
bWVudGFsUmVwcmVzZW50ZWRPYmplY3RzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmln
YXRpb25JdGVtcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX2NsZWFyVGltZWxpbmVO
YXZpZ2F0aW9uSXRlbV07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFuZGxlQ29weUV2ZW50
KCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50
Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIHJldHVybiBjdXJyZW50
Q29udGVudFZpZXcgJiYgdHlwZW9mIGN1cnJlbnRDb250ZW50Vmlldy5oYW5kbGVDb3B5RXZlbnQg
PT09ICJmdW5jdGlvbiIgPyBjdXJyZW50Q29udGVudFZpZXcuaGFuZGxlQ29weUV2ZW50LmJpbmQo
Y3VycmVudENvbnRlbnRWaWV3KSA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3Vw
cG9ydHNTYXZlKCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlz
Ll9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIHJldHVy
biBjdXJyZW50Q29udGVudFZpZXcgJiYgY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2F2ZTsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBzYXZlRGF0YSgpCiAgICAgewogICAgICAgICB2YXIg
Y3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENv
bnRlbnRWaWV3OwogICAgICAgICByZXR1cm4gY3VycmVudENvbnRlbnRWaWV3ICYmIGN1cnJlbnRD
b250ZW50Vmlldy5zYXZlRGF0YSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGN1
cnJlbnRUaW1lbGluZVZpZXcoKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gdGhp
cy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICByZXR1
cm4gKGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldykgPyBj
b250ZW50VmlldyA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24o
KQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcuc2hv
d24oKTsKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd24oKTsKQEAgLTE3
Myw1NSArMTY2LDU1IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIXRoaXMuX3VwZGF0aW5nICYmIFdlYkluc3Bl
Y3Rvci50aW1lbGluZU1hbmFnZXIuYWN0aXZlUmVjb3JkaW5nID09PSB0aGlzLl9yZWNvcmRpbmcg
JiYgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5pc0NhcHR1cmluZygpKQogICAgICAgICAg
ICAgdGhpcy5fc3RhcnRVcGRhdGluZ0N1cnJlbnRUaW1lKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5f
dGltZWxpbmVPdmVydmlldy5oaWRkZW4oKTsKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250
YWluZXIuaGlkZGVuKCk7CiAKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0aW5nKQogICAgICAgICAg
ICAgdGhpcy5fc3RvcFVwZGF0aW5nQ3VycmVudFRpbWUoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9j
b250ZW50Vmlld0NvbnRhaW5lci5jbG9zZUFsbENvbnRlbnRWaWV3cygpOwogCiAgICAgICAgIFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlldy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSwgdGhpcy5f
Y29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlLCB0aGlzKTsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3LkV2ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENo
YW5nZSwgdGhpcy5fY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRD
aGFuZ2UsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgY2FuR29CYWNrOiBmdW5jdGlvbigp
CisgICAgY2FuR29CYWNrKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmll
d0NvbnRhaW5lci5jYW5Hb0JhY2soKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbkdvRm9yd2Fy
ZDogZnVuY3Rpb24oKQorICAgIGNhbkdvRm9yd2FyZCgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY2FuR29Gb3J3YXJkKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBnb0JhY2s6IGZ1bmN0aW9uKCkKKyAgICBnb0JhY2soKQogICAgIHsKICAgICAgICAg
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIuZ29CYWNrKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBnb0ZvcndhcmQ6IGZ1bmN0aW9uKCkKKyAgICBnb0ZvcndhcmQoKQogICAgIHsKICAgICAgICAg
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIuZ29Gb3J3YXJkKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsK
ICAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy51cGRhdGVMYXlvdXRGb3JSZXNpemUoKTsK
IAogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250
YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3
KQogICAgICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LnVwZGF0ZUxheW91dCgpOwotICAgIH0s
CisgICAgfQogCi0gICAgc2F2ZVRvQ29va2llOiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZVRv
Q29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3Q29va2llVHlwZS5UaW1lbGluZXM7CiAKQEAgLTIzMCw5ICsyMjMsOSBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZp
ZXcuU2VsZWN0ZWRUaW1lbGluZVR5cGVDb29raWVLZXldID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkaW5nQ29udGVudFZpZXcuT3ZlcnZpZXdUaW1lbGluZVZpZXdDb29raWVWYWx1ZTsKICAg
ICAgICAgZWxzZSBpZiAoY3VycmVudENvbnRlbnRWaWV3LnJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKQogICAgICAgICAgICAgY29va2llW1dlYkluc3Bl
Y3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LlNlbGVjdGVkVGltZWxpbmVUeXBlQ29v
a2llS2V5XSA9IHRoaXMuY3VycmVudFRpbWVsaW5lVmlldy5yZXByZXNlbnRlZE9iamVjdC50eXBl
OwotICAgIH0sCisgICAgfQogCi0gICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tp
ZSkKKyAgICByZXN0b3JlRnJvbUNvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICB2YXIgdGlt
ZWxpbmVUeXBlID0gY29va2llW1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRW
aWV3LlNlbGVjdGVkVGltZWxpbmVUeXBlQ29va2llS2V5XTsKIApAQCAtMjQwLDE3ICsyMzMsMTcg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgdGhpcy5zaG93T3ZlcnZpZXdUaW1lbGluZVZpZXcoKTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgdGhpcy5zaG93VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUodGhpcy5y
ZXByZXNlbnRlZE9iamVjdC50aW1lbGluZXMuZ2V0KHRpbWVsaW5lVHlwZSkpOwotICAgIH0sCisg
ICAgfQogCi0gICAgZmlsdGVyRGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgZmlsdGVyRGlkQ2hh
bmdlKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3KQogICAg
ICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuY3VycmVudFRpbWVsaW5lVmlldy5maWx0
ZXJEaWRDaGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAotICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2Fp
bnN0Q3VzdG9tRmlsdGVyczogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgbWF0Y2hUcmVlRWxl
bWVudEFnYWluc3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuY3VycmVudFRpbWVsaW5lVmlldyAmJiAhdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3Lm1h
dGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0zMDQsMTEgKzI5NywxMSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgY29uc29s
ZS5lcnJvcigiVW5rbm93biBUcmVlRWxlbWVudCwgY2FuJ3QgZmlsdGVyIGJ5IHRpbWUuIik7CiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0g
ICAgX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2N1
cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciB0aW1l
bGluZVZpZXcgPSB0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXc7CiAgICAgICAgIGlmICh0aW1lbGlu
ZVZpZXcpIHsKQEAgLTMyMiwyOCArMzE1LDI4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0
aENvbXBvbmVudHNEaWRDaGFuZ2UpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuTmF2aWdhdGlvbkl0ZW1zRGlkQ2hh
bmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0ZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0ZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFyUGFuZWwuc2hvd1RpbWVsaW5lVmlld0Zv
clRpbWVsaW5lKGV2ZW50LmRhdGEucGF0aENvbXBvbmVudC5yZXByZXNlbnRlZE9iamVjdCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlk
Q2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29t
cG9uZW50RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAh
PT0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3KQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFu
Z2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVwcmVz
ZW50ZWRPYmplY3RzRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudFZpZXdT
dXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAg
ICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJy
ZW50Q29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVt
ZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3VwZGF0ZTogZnVuY3Rpb24odGltZXN0YW1wKQorICAgIF91cGRhdGUodGltZXN0YW1wKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX3dhaXRpbmdUb1Jlc2V0Q3VycmVudFRpbWUpIHsKICAgICAg
ICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl91cGRhdGVDYWxsYmFjayk7CkBAIC0z
NjgsOSArMzYxLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9sYXN0VXBkYXRlVGltZXN0YW1wID0gdGltZXN0
YW1wOwogCiAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl91cGRhdGVDYWxsYmFj
ayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlVGltZXM6IGZ1bmN0aW9uKHN0YXJ0VGlt
ZSwgY3VycmVudFRpbWUsIGVuZFRpbWUpCisgICAgX3VwZGF0ZVRpbWVzKHN0YXJ0VGltZSwgY3Vy
cmVudFRpbWUsIGVuZFRpbWUpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc3RhcnRUaW1lTmVl
ZHNSZXNldCAmJiAhaXNOYU4oc3RhcnRUaW1lKSkgewogICAgICAgICAgICAgdmFyIHNlbGVjdGlv
bk9mZnNldCA9IHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcuc2VsZWN0aW9uU3RhcnRUaW1lIC0gdGhp
cy5fdGltZWxpbmVPdmVydmlldy5zdGFydFRpbWU7CkBAIC0zOTgsOSArMzkxLDkgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3LnVwZGF0ZUxheW91dElmTmVlZGVkKCk7CiAgICAgICAg
IGlmICh0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcpCiAgICAgICAgICAgICB0aGlzLmN1cnJlbnRU
aW1lbGluZVZpZXcudXBkYXRlTGF5b3V0SWZOZWVkZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9zdGFydFVwZGF0aW5nQ3VycmVudFRpbWU6IGZ1bmN0aW9uKCkKKyAgICBfc3RhcnRVcGRhdGlu
Z0N1cnJlbnRUaW1lKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl91cGRh
dGluZyk7CiAgICAgICAgIGlmICh0aGlzLl91cGRhdGluZykKQEAgLTQyMCw5ICs0MTMsOSBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLl91cGRhdGVDYWxsYmFjayA9IHRoaXMuX3VwZGF0ZS5iaW5kKHRoaXMp
OwogCiAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLl91cGRhdGVDYWxsYmFjayk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RvcFVwZGF0aW5nQ3VycmVudFRpbWU6IGZ1bmN0aW9u
KCkKKyAgICBfc3RvcFVwZGF0aW5nQ3VycmVudFRpbWUoKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fdXBkYXRpbmcpOwogICAgICAgICB0aGlzLl91cGRhdGluZyA9IGZhbHNl
OwpAQCAtNDMyLDM2ICs0MjUsMzYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fcmVjb3JkaW5nLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlRpbWVz
VXBkYXRlZCwgdGhpcy5fcmVjb3JkaW5nVGltZXNVcGRhdGVkLCB0aGlzKTsKICAgICAgICAgICAg
IHRoaXMuX3dhaXRpbmdUb1Jlc2V0Q3VycmVudFRpbWUgPSBmYWxzZTsKICAgICAgICAgfQotICAg
IH0sCisgICAgfQogCi0gICAgX2NhcHR1cmluZ1N0YXJ0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9jYXB0dXJpbmdTdGFydGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fc3RhcnRVcGRh
dGluZ0N1cnJlbnRUaW1lKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2FwdHVyaW5nU3RvcHBl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NhcHR1cmluZ1N0b3BwZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fdXBkYXRpbmcpCiAgICAgICAgICAgICB0aGlzLl9zdG9wVXBkYXRp
bmdDdXJyZW50VGltZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RlYnVnZ2VyUGF1c2VkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfZGVidWdnZXJQYXVzZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAoV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvblN0YXRlID09PSBXZWJJbnNw
ZWN0b3IuUmVwbGF5TWFuYWdlci5TZXNzaW9uU3RhdGUuUmVwbGF5aW5nKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ0N1cnJlbnRUaW1lKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfZGVidWdnZXJSZXN1bWVkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
ZGVidWdnZXJSZXN1bWVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5y
ZXBsYXlNYW5hZ2VyLnNlc3Npb25TdGF0ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIu
U2Vzc2lvblN0YXRlLlJlcGxheWluZykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0
aGlzLl9zdGFydFVwZGF0aW5nQ3VycmVudFRpbWUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9y
ZWNvcmRpbmdUaW1lc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZWNvcmRpbmdUaW1l
c1VwZGF0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3dhaXRpbmdUb1Jlc2V0
Q3VycmVudFRpbWUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00ODAsMTQgKzQ3MywxNCBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAK
ICAgICAgICAgdGhpcy5fcmVjb3JkaW5nLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50LlRpbWVzVXBkYXRlZCwgdGhpcy5fcmVjb3JkaW5nVGlt
ZXNVcGRhdGVkLCB0aGlzKTsKICAgICAgICAgdGhpcy5fd2FpdGluZ1RvUmVzZXRDdXJyZW50VGlt
ZSA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX2NsZWFyVGltZWxpbmU6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9jbGVhclRpbWVsaW5lKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5f
cmVjb3JkaW5nLnJlc2V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVBZGRlZDog
ZnVuY3Rpb24odGltZWxpbmVPckV2ZW50KQorICAgIF90aW1lbGluZUFkZGVkKHRpbWVsaW5lT3JF
dmVudCkKICAgICB7CiAgICAgICAgIHZhciB0aW1lbGluZSA9IHRpbWVsaW5lT3JFdmVudDsKICAg
ICAgICAgaWYgKCEodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpKQpA
QCAtNDk2LDE2ICs0ODksMTYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZSBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSwgdGltZWxpbmUpOwogICAgICAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5fdGltZWxpbmVWaWV3TWFwLmhhcyh0aW1lbGluZSksIHRpbWVsaW5lKTsK
IAotICAgICAgICB0aGlzLl90aW1lbGluZVZpZXdNYXAuc2V0KHRpbWVsaW5lLCBuZXcgV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3KHRpbWVsaW5lKSk7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lVmll
d01hcC5zZXQodGltZWxpbmUsIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jcmVhdGUodGltZWxp
bmUpKTsKIAogICAgICAgICB2YXIgcGF0aENvbXBvbmVudCA9IG5ldyBXZWJJbnNwZWN0b3IuSGll
cmFyY2hpY2FsUGF0aENvbXBvbmVudCh0aW1lbGluZS5kaXNwbGF5TmFtZSwgdGltZWxpbmUuaWNv
bkNsYXNzTmFtZSwgdGltZWxpbmUpOwogICAgICAgICBwYXRoQ29tcG9uZW50LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuRXZlbnQuU2libGlu
Z1dhc1NlbGVjdGVkLCB0aGlzLl9wYXRoQ29tcG9uZW50U2VsZWN0ZWQsIHRoaXMpOwogICAgICAg
ICB0aGlzLl9wYXRoQ29tcG9uZW50TWFwLnNldCh0aW1lbGluZSwgcGF0aENvbXBvbmVudCk7CiAK
ICAgICAgICAgdGhpcy5fdGltZWxpbmVDb3VudENoYW5nZWQoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF90aW1lbGluZVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90aW1lbGluZVJlbW92
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdGltZWxpbmUgPSBldmVudC5kYXRhLnRpbWVs
aW5lOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lbGluZSBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZSwgdGltZWxpbmUpOwpAQCAtNTE4LDkgKzUxMSw5IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fcGF0aENvbXBvbmVudE1hcC5kZWxldGUodGltZWxpbmUpOwogCiAgICAgICAgIHRoaXMuX3Rp
bWVsaW5lQ291bnRDaGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVDb3Vu
dENoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICBfdGltZWxpbmVDb3VudENoYW5nZWQoKQogICAgIHsK
ICAgICAgICAgdmFyIHByZXZpb3VzUGF0aENvbXBvbmVudCA9IG51bGw7CiAgICAgICAgIGZvciAo
dmFyIHBhdGhDb21wb25lbnQgb2YgdGhpcy5fcGF0aENvbXBvbmVudE1hcC52YWx1ZXMoKSkgewpA
QCAtNTMzLDEzICs1MjYsMTMgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdmFyIHRpbWVsaW5lQ291
bnQgPSB0aGlzLl9yZWNvcmRpbmcudGltZWxpbmVzLnNpemU7Ci0gICAgICAgIGNvbnN0IHRpbWVs
aW5lSGVpZ2h0ID0gMzY7Ci0gICAgICAgIGNvbnN0IGV4dHJhT2Zmc2V0ID0gMjI7CisgICAgICAg
IHZhciB0aW1lbGluZUhlaWdodCA9IDM2OworICAgICAgICB2YXIgZXh0cmFPZmZzZXQgPSAyMjsK
ICAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy5lbGVtZW50LnN0eWxlLmhlaWdodCA9ICh0
aW1lbGluZUNvdW50ICogdGltZWxpbmVIZWlnaHQgKyBleHRyYU9mZnNldCkgKyAicHgiOwogICAg
ICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5lbGVtZW50LnN0eWxlLnRvcCA9ICh0aW1l
bGluZUNvdW50ICogdGltZWxpbmVIZWlnaHQgKyBleHRyYU9mZnNldCkgKyAicHgiOwotICAgIH0s
CisgICAgfQogCi0gICAgX3JlY29yZGluZ1Jlc2V0OiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVj
b3JkaW5nUmVzZXQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9jdXJyZW50VGltZSA9IE5h
TjsKIApAQCAtNTU5LDE3ICs1NTIsMTcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5n
Q29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9vdmVydmlld1RpbWVsaW5l
Vmlldy5yZXNldCgpOwogICAgICAgICBmb3IgKHZhciB0aW1lbGluZVZpZXcgb2YgdGhpcy5fdGlt
ZWxpbmVWaWV3TWFwLnZhbHVlcygpKQogICAgICAgICAgICAgdGltZWxpbmVWaWV3LnJlc2V0KCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVjb3JkaW5nVW5sb2FkZWQ6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9yZWNvcmRpbmdVbmxvYWRlZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF0aGlzLl91cGRhdGluZyk7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5l
TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIu
RXZlbnQuQ2FwdHVyaW5nU3RhcnRlZCwgdGhpcy5fY2FwdHVyaW5nU3RhcnRlZCwgdGhpcyk7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0b3BwZWQsIHRoaXMu
X2NhcHR1cmluZ1N0b3BwZWQsIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RpbWVSYW5n
ZVNlbGVjdGlvbkNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90aW1lUmFuZ2VTZWxlY3Rp
b25DaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuY3VycmVudFRpbWVsaW5l
VmlldykgewogICAgICAgICAgICAgdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3LnN0YXJ0VGltZSA9
IHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcuc2VsZWN0aW9uU3RhcnRUaW1lOwpAQCAtNTg4LDMgKzU4
MSw2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5TZWxlY3RlZFRpbWVsaW5lVHlwZUNvb2tpZUtl
eSA9ICJ0aW1lbGluZS1yZWNvcmRpbmctY29udGVudC12aWV3LXNlbGVjdGVkLXRpbWVsaW5lLXR5
cGUiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuT3ZlcnZpZXdU
aW1lbGluZVZpZXdDb29raWVWYWx1ZSA9ICJ0aW1lbGluZS1yZWNvcmRpbmctY29udGVudC12aWV3
LW92ZXJ2aWV3LXRpbWVsaW5lLXZpZXciOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMKaW5kZXggYmUxMjBm
NC4uYjhlZWE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVGltZWxpbmVSdWxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyMCArMjMsMjEgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3Mg
VGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhN
RTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNh
bGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAg
Y29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICB0aGlzLl9l
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVu
dC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5TdHlsZUNsYXNzTmFtZTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAidGltZWxpbmUtcnVsZXIiOwogCiAg
ICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLkhlYWRlckVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5faGVh
ZGVyRWxlbWVudC5jbGFzc05hbWUgPSAiaGVhZGVyIjsKICAgICAgICAgdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9tYXJrZXJz
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX21hcmtl
cnNFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLk1hcmtlcnNF
bGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX21hcmtlcnNFbGVtZW50LmNsYXNz
TmFtZSA9ICJtYXJrZXJzIjsKICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9tYXJrZXJzRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5femVyb1RpbWUgPSAwOwpAQCAtNTEs
NDQgKzUyLDE5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gZnVuY3Rpb24oKQogICAg
ICAgICB0aGlzLl9hbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24gPSBmYWxzZTsKIAogICAgICAgICB0
aGlzLl9tYXJrZXJFbGVtZW50TWFwID0gbmV3IE1hcDsKLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLk1pbmltdW1MZWZ0RGl2aWRlclNwYWNpbmcgPSA0ODsKLVdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyLk1pbmltdW1EaXZpZGVyU3BhY2luZyA9IDY0OwotCi1XZWJJbnNwZWN0b3Iu
VGltZWxpbmVSdWxlci5TdHlsZUNsYXNzTmFtZSA9ICJ0aW1lbGluZS1ydWxlciI7Ci1XZWJJbnNw
ZWN0b3IuVGltZWxpbmVSdWxlci5BbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb25TdHlsZUNsYXNzTmFt
ZSA9ICJhbGxvd3MtdGltZS1yYW5nZS1zZWxlY3Rpb24iOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIuSGVhZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImhlYWRlciI7Ci1XZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5EaXZpZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImRpdmlkZXIi
OwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRGl2aWRlckxhYmVsRWxlbWVudFN0eWxlQ2xh
c3NOYW1lID0gImxhYmVsIjsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTWFya2Vyc0Vs
ZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJtYXJrZXJzIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyLkJhc2VNYXJrZXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAibWFya2VyIjsKLVdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLlNoYWRlZEFyZWFFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAic2hh
ZGVkLWFyZWEiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuU2VsZWN0aW9uRHJhZ0VsZW1l
bnRTdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3Rpb24tZHJhZyI7Ci1XZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlci5TZWxlY3Rpb25IYW5kbGVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAic2VsZWN0aW9u
LWhhbmRsZSI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5MZWZ0U2VsZWN0aW9uRWxlbWVu
dFN0eWxlQ2xhc3NOYW1lID0gImxlZnQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuUmln
aHRTZWxlY3Rpb25FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAicmlnaHQiOwotV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUnVsZXIuTWluaW11bVNlbGVjdGlvblRpbWVSYW5nZSA9IDAuMDE7Ci0KLVdlYklu
c3BlY3Rvci5UaW1lbGluZVJ1bGVyLkV2ZW50ID0gewotICAgIFRpbWVSYW5nZVNlbGVjdGlvbkNo
YW5nZWQ6ICJ0aW1lLXJ1bGVyLXRpbWUtcmFuZ2Utc2VsZWN0aW9uLWNoYW5nZWQiCi19OwotCi1X
ZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLAorICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAg
ICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgYWxsb3dzQ2xpcHBlZExhYmVscygpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fYWxsb3dzQ2xpcHBlZExhYmVsczsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCBhbGxvd3NDbGlwcGVkTGFiZWxzKHgpCiAgICAgewpAQCAtOTgsMTIgKzc0LDEyIEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
YWxsb3dzQ2xpcHBlZExhYmVscyA9IHggfHwgZmFsc2U7CiAKICAgICAgICAgdGhpcy5fbmVlZHNM
YXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBhbGxvd3NUaW1lUmFuZ2VTZWxlY3Rp
b24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2FsbG93c1RpbWVSYW5nZVNlbGVjdGlv
bjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24oeCkK
ICAgICB7CkBAIC0xNTQsMTIgKzEzMCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcmlnaHRTZWxlY3Rpb25IYW5k
bGVFbGVtZW50OwogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NlbGVjdGlvbkRyYWdFbGVtZW50
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgemVyb1RpbWUoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3plcm9UaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHplcm9UaW1lKHgpCiAgICAgewpAQCAtMTY5LDEyICsxNDUsMTIgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl96ZXJvVGltZSA9IHggfHwg
MDsKIAogICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lOwot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IHN0YXJ0VGltZSh4KQogICAgIHsKQEAgLTE4NywxNCAr
MTYzLDE0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuX2VuZFRpbWUgPSB0aGlzLl9zdGFydFRpbWUgKyB0aGlzLl9kdXJhdGlvbjsK
IAogICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IGR1cmF0aW9uKCkKICAgICB7CiAgICAgICAgIGlmICghaXNOYU4odGhpcy5fZHVyYXRpb24pKQog
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2R1cmF0aW9uOwogICAgICAgICByZXR1cm4gdGhpcy5l
bmRUaW1lIC0gdGhpcy5zdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZHVyYXRp
b24oeCkKICAgICB7CkBAIC0yMTAsMTQgKzE4NiwxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
dWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbmRUaW1lUGlubmVkID0gZmFs
c2U7CiAKICAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBlbmRUaW1lKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZW5kVGltZVBpbm5lZCAm
JiB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQogICAgICAgICAgICAgdGhp
cy5fcmVjYWxjdWxhdGUoKTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuZFRpbWU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBzZXQgZW5kVGltZSh4KQogICAgIHsKQEAgLTIyOCwxNCArMjA0LDE0IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
ZW5kVGltZVBpbm5lZCA9IHRydWU7CiAKICAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBzZWNvbmRzUGVyUGl4ZWwoKQogICAgIHsKICAgICAgICAg
aWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICB0
aGlzLl9yZWNhbGN1bGF0ZSgpOwogICAgICAgICByZXR1cm4gdGhpcy5fc2Vjb25kc1BlclBpeGVs
OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlY29uZHNQZXJQaXhlbCh4KQogICAgIHsKQEAg
LTI0NywxMiArMjIzLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fY3VycmVudFNsaWNlVGltZSA9IDA7CiAKICAgICAgICAgdGhpcy5f
bmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rpb25TdGFydFRp
bWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvblN0YXJ0VGltZTsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCBzZWxlY3Rpb25TdGFydFRpbWUoeCkKICAgICB7CkBAIC0y
NjMsMTIgKzIzOSwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlOwogCiAgICAg
ICAgIHRoaXMuX25lZWRzU2VsZWN0aW9uTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgc2VsZWN0aW9uRW5kVGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0
aW9uRW5kVGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWxlY3Rpb25FbmRUaW1lKHgp
CiAgICAgewpAQCAtMjc5LDkgKzI1NSw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZCA9IHRy
dWU7CiAKICAgICAgICAgdGhpcy5fbmVlZHNTZWxlY3Rpb25MYXlvdXQoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIGFkZE1hcmtlcjogZnVuY3Rpb24obWFya2VyKQorICAgIGFkZE1hcmtlcihtYXJr
ZXIpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChtYXJrZXIgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVNYXJrZXIpOwogCkBAIC0yOTcsMTQgKzI3MywxNCBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX21hcmtlckVs
ZW1lbnRNYXAuc2V0KG1hcmtlciwgbWFya2VyRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fbmVl
ZHNNYXJrZXJMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGVsZW1lbnRGb3JNYXJrZXI6
IGZ1bmN0aW9uKG1hcmtlcikKKyAgICBlbGVtZW50Rm9yTWFya2VyKG1hcmtlcikKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9tYXJrZXJFbGVtZW50TWFwLmdldChtYXJrZXIpIHx8IG51bGw7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRh
dGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0
ZUlkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3Nj
aGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOwpAQCAtNDE5LDkgKzM5NSw5IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl91cGRh
dGVNYXJrZXJzKHZpc2libGVXaWR0aCwgZHVyYXRpb24pOwogICAgICAgICB0aGlzLl91cGRhdGVT
ZWxlY3Rpb24odmlzaWJsZVdpZHRoLCBkdXJhdGlvbik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1
cGRhdGVMYXlvdXRJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dElmTmVlZGVk
KCkKICAgICB7CiAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEgbWFpbiBsYXlvdXQgc2NoZWR1bGVk
IHdlIGNhbiBqdXN0IHVwZGF0ZSBsYXlvdXQgYW5kIHJldHVybiwgc2luY2UgdGhhdAogICAgICAg
ICAvLyB3aWxsIHVwZGF0ZSBtYXJrZXJzIGFuZCB0aGUgc2VsZWN0aW9uIGF0IHRoZSBzYW1lIHRp
bWUuCkBAIC00MzksMTEgKzQxNSwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVw
ZGF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVTZWxlY3Rpb24odmlzaWJs
ZVdpZHRoLCB0aGlzLmR1cmF0aW9uKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUK
IAotICAgIF9uZWVkc0xheW91dDogZnVuY3Rpb24oKQorICAgIF9uZWVkc0xheW91dCgpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTQ1OSw5ICs0MzUsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9zY2hlZHVs
ZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudXBk
YXRlTGF5b3V0LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX25lZWRzTWFya2Vy
TGF5b3V0OiBmdW5jdGlvbigpCisgICAgX25lZWRzTWFya2VyTGF5b3V0KCkKICAgICB7CiAgICAg
ICAgIC8vIElmIGxheW91dCBpcyBzY2hlZHVsZWQsIGFib3J0IHNpbmNlIG1hcmtlcnMgd2lsbCBi
ZSB1cGRhdGVkIHdoZW4gbGF5b3V0IGhhcHBlbnMuCiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVs
ZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQpAQCAtNDgyLDkgKzQ1OCw5IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMu
X3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9u
RnJhbWUodXBkYXRlLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX25lZWRzU2Vs
ZWN0aW9uTGF5b3V0OiBmdW5jdGlvbigpCisgICAgX25lZWRzU2VsZWN0aW9uTGF5b3V0KCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNTA4LDkgKzQ4NCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3NjaGVkdWxlZFNl
bGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBk
YXRlLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlY2FsY3VsYXRlOiBmdW5j
dGlvbigpCisgICAgX3JlY2FsY3VsYXRlKCkKICAgICB7CiAgICAgICAgIHZhciB2aXNpYmxlV2lk
dGggPSB0aGlzLl9lbGVtZW50LmNsaWVudFdpZHRoOwogICAgICAgICBpZiAodmlzaWJsZVdpZHRo
IDw9IDApCkBAIC01MjcsOSArNTAzLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZW5kVGltZSA9IHRoaXMuX3N0YXJ0VGltZSAr
ICh2aXNpYmxlV2lkdGggKiB0aGlzLl9zZWNvbmRzUGVyUGl4ZWwpOwogCiAgICAgICAgIHJldHVy
biB2aXNpYmxlV2lkdGg7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlUG9zaXRpb25PZkVs
ZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1Bvc2l0aW9uLCB2aXNpYmxlV2lkdGgsIHByb3Bl
cnR5KQorICAgIF91cGRhdGVQb3NpdGlvbk9mRWxlbWVudChlbGVtZW50LCBuZXdQb3NpdGlvbiwg
dmlzaWJsZVdpZHRoLCBwcm9wZXJ0eSkKICAgICB7CiAgICAgICAgIHByb3BlcnR5ID0gcHJvcGVy
dHkgfHwgImxlZnQiOwogCkBAIC01MzksOSArNTE1LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB2YXIgY3VycmVudFBvc2l0aW9uID0gcGFyc2VG
bG9hdChlbGVtZW50LnN0eWxlW3Byb3BlcnR5XSkudG9GaXhlZCgyKTsKICAgICAgICAgaWYgKGN1
cnJlbnRQb3NpdGlvbiAhPT0gbmV3UG9zaXRpb24pCiAgICAgICAgICAgICBlbGVtZW50LnN0eWxl
W3Byb3BlcnR5XSA9IG5ld1Bvc2l0aW9uICsgKHRoaXMuX2VuZFRpbWVQaW5uZWQgPyAiJSIgOiAi
cHgiKTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVNYXJrZXJzOiBmdW5jdGlvbih2aXNp
YmxlV2lkdGgsIGR1cmF0aW9uKQorICAgIF91cGRhdGVNYXJrZXJzKHZpc2libGVXaWR0aCwgZHVy
YXRpb24pCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0VXBk
YXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5f
c2NoZWR1bGVkTWFya2VyTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CkBAIC01NTYsOSArNTMyLDkg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAg
aWYgKCFtYXJrZXJFbGVtZW50LnBhcmVudE5vZGUpCiAgICAgICAgICAgICAgICAgdGhpcy5fbWFy
a2Vyc0VsZW1lbnQuYXBwZW5kQ2hpbGQobWFya2VyRWxlbWVudCk7CiAgICAgICAgIH0sIHRoaXMp
OwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVNlbGVjdGlvbjogZnVuY3Rpb24odmlzaWJs
ZVdpZHRoLCBkdXJhdGlvbikKKyAgICBfdXBkYXRlU2VsZWN0aW9uKHZpc2libGVXaWR0aCwgZHVy
YXRpb24pCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0
VXBkYXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhp
cy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CkBAIC01OTAsOSAr
NTY2LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGlmICh0aGlzLl90aW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkKQogICAgICAgICAgICAgdGhp
cy5fZGlzcGF0Y2hUaW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkRXZlbnQoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9kaXNwYXRjaFRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWRFdmVudDogZnVuY3Rp
b24oKQorICAgIF9kaXNwYXRjaFRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWRFdmVudCgpCiAgICAg
ewogICAgICAgICBkZWxldGUgdGhpcy5fdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZDsKIApAQCAt
NjAwLDE0ICs1NzYsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkV2ZW50LlRpbWVSYW5nZVNlbGVjdGlv
bkNoYW5nZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RpbWVsaW5lTWFya2VyVGltZUNoYW5n
ZWQ6IGZ1bmN0aW9uKCkKKyAgICBfdGltZWxpbmVNYXJrZXJUaW1lQ2hhbmdlZCgpCiAgICAgewog
ICAgICAgICB0aGlzLl9uZWVkc01hcmtlckxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2hhbmRsZU1vdXNlRG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlRG93bihl
dmVudCkKICAgICB7CiAgICAgICAgIC8vIE9ubHkgaGFuZGxlIGxlZnQgbW91c2UgY2xpY2tzLgog
ICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8IGV2ZW50LmN0cmxLZXkpCkBAIC02MzQs
OSArNjEwLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdh
dGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZU1vdXNlTW92ZTogZnVuY3Rpb24o
ZXZlbnQpCisgICAgX2hhbmRsZU1vdXNlTW92ZShldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CiAKQEAgLTY2MSw5ICs2MzcsOSBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfaGFuZGxlTW91c2VVcDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRs
ZU1vdXNlVXAoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5idXR0
b24gPT09IDApOwogCkBAIC02OTcsOSArNjczLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVs
ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAg
ICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRs
ZVNlbGVjdGlvbkhhbmRsZU1vdXNlRG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRsZVNl
bGVjdGlvbkhhbmRsZU1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIC8vIE9ubHkgaGFu
ZGxlIGxlZnQgbW91c2UgY2xpY2tzLgogICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAwIHx8
IGV2ZW50LmN0cmxLZXkpCkBAIC03MTcsOSArNjkzLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UnVsZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAg
ICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hh
bmRsZVNlbGVjdGlvbkhhbmRsZU1vdXNlTW92ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRs
ZVNlbGVjdGlvbkhhbmRsZU1vdXNlTW92ZShldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CiAKQEAgLTc0OSw5ICs3MjUsOSBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfaGFuZGxlU2VsZWN0aW9uSGFuZGxlTW91c2VVcDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2hhbmRsZVNlbGVjdGlvbkhhbmRsZU1vdXNlVXAoZXZlbnQpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChldmVudC5idXR0b24gPT09IDApOwogCkBAIC03NjgsNCArNzQ0LDIx
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICB9CiB9Owog
Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5NaW5p
bXVtTGVmdERpdmlkZXJTcGFjaW5nID0gNDg7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5N
aW5pbXVtRGl2aWRlclNwYWNpbmcgPSA2NDsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIu
QWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiYWxsb3dzLXRpbWUtcmFu
Z2Utc2VsZWN0aW9uIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkRpdmlkZXJFbGVtZW50
U3R5bGVDbGFzc05hbWUgPSAiZGl2aWRlciI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5E
aXZpZGVyTGFiZWxFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAibGFiZWwiOworCitXZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5CYXNlTWFya2VyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm1hcmtl
ciI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5TaGFkZWRBcmVhRWxlbWVudFN0eWxlQ2xh
c3NOYW1lID0gInNoYWRlZC1hcmVhIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlNlbGVj
dGlvbkRyYWdFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAic2VsZWN0aW9uLWRyYWciOworV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUnVsZXIuU2VsZWN0aW9uSGFuZGxlRWxlbWVudFN0eWxlQ2xhc3NOYW1l
ID0gInNlbGVjdGlvbi1oYW5kbGUiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTGVmdFNl
bGVjdGlvbkVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJsZWZ0IjsKK1dlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLlJpZ2h0U2VsZWN0aW9uRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInJpZ2h0IjsK
K1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLk1pbmltdW1TZWxlY3Rpb25UaW1lUmFuZ2UgPSAw
LjAxOworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5FdmVudCA9IHsKKyAgICBUaW1lUmFu
Z2VTZWxlY3Rpb25DaGFuZ2VkOiAidGltZS1ydWxlci10aW1lLXJhbmdlLXNlbGVjdGlvbi1jaGFu
Z2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RpbWVsaW5lU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVTaWRlYmFyUGFuZWwuanMKaW5kZXggNWI4YzczZC4u
ODlhMzExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGltZWxpbmVTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVTaWRlYmFyUGFuZWwuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIzLDEx
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlRpbWVs
aW5lU2lkZWJhclBhbmVsID0gY2xhc3MgVGltZWxpbmVTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbAogewotICAgIFdlYkluc3BlY3Rvci5OYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLmNhbGwodGhpcywgInRpbWVsaW5lIiwgV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJUaW1lbGluZXMiKSwgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVN0b3B3YXRjaC5zdmci
LCAiMiIpOworICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHN1cGVyKCJ0aW1lbGlu
ZSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiVGltZWxpbmVzIiksICJJbWFnZXMvTmF2aWdhdGlv
bkl0ZW1TdG9wd2F0Y2guc3ZnIiwgIjIiKTsKIAogICAgICAgICB0aGlzLl90aW1lbGluZUV2ZW50
c1RpdGxlQmFyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAg
ICB0aGlzLl90aW1lbGluZUV2ZW50c1RpdGxlQmFyRWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaXRsZUJhclN0eWxlQ2xhc3MpOwpAQCAtMTIx
LDU3ICsxMjMsMzAgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsID0gZnVuY3Rp
b24oKQogICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlk
Q2hhbmdlLCB0aGlzLl9jb250ZW50QnJvd3NlckN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwg
dGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0YXJ0ZWQs
IHRoaXMuX2NhcHR1cmluZ1N0YXJ0ZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IudGlt
ZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdl
ci5FdmVudC5DYXB0dXJpbmdTdG9wcGVkLCB0aGlzLl9jYXB0dXJpbmdTdG9wcGVkLCB0aGlzKTsK
LX07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5IaWRkZW5TdHlsZUNsYXNz
TmFtZSA9ICJoaWRkZW4iOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlN0YXR1
c0JhclN0eWxlQ2xhc3MgPSAic3RhdHVzLWJhciI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRl
YmFyUGFuZWwuUmVjb3JkR2x5cGhTdHlsZUNsYXNzID0gInJlY29yZC1nbHlwaCI7Ci1XZWJJbnNw
ZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdTdHlsZUNsYXNz
ID0gInJlY29yZGluZyI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3Jk
R2x5cGhSZWNvcmRpbmdGb3JjZWRTdHlsZUNsYXNzID0gImZvcmNlZCI7Ci1XZWJJbnNwZWN0b3Iu
VGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkU3RhdHVzU3R5bGVDbGFzcyA9ICJyZWNvcmQtc3Rh
dHVzIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaXRsZUJhclN0eWxlQ2xh
c3MgPSAidGl0bGUtYmFyIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1l
bGluZXNUaXRsZUJhclN0eWxlQ2xhc3MgPSAidGltZWxpbmVzIjsKLVdlYkluc3BlY3Rvci5UaW1l
bGluZVNpZGViYXJQYW5lbC5UaW1lbGluZUV2ZW50c1RpdGxlQmFyU3R5bGVDbGFzcyA9ICJ0aW1l
bGluZS1ldmVudHMiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlRpbWVsaW5l
c0NvbnRlbnRDb250YWluZXJTdHlsZUNsYXNzID0gInRpbWVsaW5lcy1jb250ZW50IjsKLVdlYklu
c3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5DbG9zZUJ1dHRvblN0eWxlQ2xhc3MgPSAiY2xv
c2UtYnV0dG9uIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5MYXJnZUljb25T
dHlsZUNsYXNzID0gImxhcmdlIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5T
dG9wd2F0Y2hJY29uU3R5bGVDbGFzcyA9ICJzdG9wd2F0Y2gtaWNvbiI7Ci1XZWJJbnNwZWN0b3Iu
VGltZWxpbmVTaWRlYmFyUGFuZWwuTmV0d29ya0ljb25TdHlsZUNsYXNzID0gIm5ldHdvcmstaWNv
biI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuQ29sb3JzSWNvblN0eWxlQ2xh
c3MgPSAiY29sb3JzLWljb24iOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNj
cmlwdEljb25TdHlsZUNsYXNzID0gInNjcmlwdC1pY29uIjsKLVdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbC5SdW5Mb29wSWNvblN0eWxlQ2xhc3MgPSAicnVubG9vcC1pY29uIjsKLVdl
Ykluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRW
aWV3U2hvd2luZ1N0eWxlQ2xhc3MgPSAidGltZWxpbmUtcmVjb3JkaW5nLWNvbnRlbnQtdmlldy1z
aG93aW5nIjsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNob3dpbmdUaW1l
bGluZVJlY29yZGluZ0NvbnRlbnRWaWV3Q29va2llS2V5ID0gInRpbWVsaW5lLXNpZGViYXItcGFu
ZWwtc2hvd2luZy10aW1lbGluZS1yZWNvcmRpbmctY29udGVudC12aWV3IjsKLVdlYkluc3BlY3Rv
ci5UaW1lbGluZVNpZGViYXJQYW5lbC5TZWxlY3RlZFRpbWVsaW5lVmlld0lkZW50aWZpZXJDb29r
aWVLZXkgPSAidGltZWxpbmUtc2lkZWJhci1wYW5lbC1zZWxlY3RlZC10aW1lbGluZS12aWV3LWlk
ZW50aWZpZXIiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLk92ZXJ2aWV3VGlt
ZWxpbmVJZGVudGlmaWVyQ29va2llVmFsdWUgPSAib3ZlcnZpZXciOwotCi1XZWJJbnNwZWN0b3Iu
VGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVi
bGljCiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5zaG93bi5jYWxs
KHRoaXMpOwogCiAgICAgICAgIGlmICh0aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldykKICAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcodGhpcy5f
ZGlzcGxheWVkQ29udGVudFZpZXcpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd0RlZmF1bHRD
b250ZW50VmlldzogZnVuY3Rpb24oKQorICAgIHNob3dEZWZhdWx0Q29udGVudFZpZXcoKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3KQogICAgICAgICAgICAg
dGhpcy5zaG93VGltZWxpbmVPdmVydmlldygpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhh
c1NlbGVjdGVkRWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLl9jb250ZW50
VHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCB8fCAhIXRoaXMuX3JlY29yZGluZ3NUcmVl
T3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgdHJlZUVs
ZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisg
ICAgdHJlZUVsZW1lbnRGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdCkKICAg
ICB7CiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZGluZykKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmRpbmdU
cmVlRWxlbWVudE1hcC5nZXQocmVwcmVzZW50ZWRPYmplY3QpOwpAQCAtMjQwLDEyICsyMTUsMTIg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNv
bnRlbnRUcmVlT3V0bGluZUxhYmVsKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90aW1l
bGluZUV2ZW50c1RpdGxlQmFyRWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCBjb250ZW50VHJlZU91dGxpbmVMYWJlbChsYWJlbCkKICAgICB7CkBAIC0yNTMsNTYg
KzIyOCw1NiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHRoaXMuX3RpbWVsaW5lRXZlbnRzVGl0bGVCYXJFbGVtZW50LnRleHRDb250
ZW50ID0gbGFiZWw7CiAgICAgICAgIHRoaXMuZmlsdGVyQmFyLnBsYWNlaG9sZGVyID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJGaWx0ZXIgJXMiKS5mb3JtYXQobGFiZWwpOwotICAgIH0sCisgICAg
fQogCi0gICAgc2hvd1RpbWVsaW5lT3ZlcnZpZXc6IGZ1bmN0aW9uKCkKKyAgICBzaG93VGltZWxp
bmVPdmVydmlldygpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdGltZWxpbmVzVHJlZU91dGxp
bmUuc2VsZWN0ZWRUcmVlRWxlbWVudCkKICAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lc1RyZWVP
dXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQuZGVzZWxlY3QoKTsKIAogICAgICAgICB0aGlzLl9k
aXNwbGF5ZWRDb250ZW50Vmlldy5zaG93T3ZlcnZpZXdUaW1lbGluZVZpZXcoKTsKICAgICAgICAg
V2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLnNob3dDb250ZW50Vmlldyh0aGlzLl9kaXNwbGF5
ZWRDb250ZW50Vmlldyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93VGltZWxpbmVWaWV3Rm9y
VGltZWxpbmU6IGZ1bmN0aW9uKHRpbWVsaW5lKQorICAgIHNob3dUaW1lbGluZVZpZXdGb3JUaW1l
bGluZSh0aW1lbGluZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lLCB0aW1lbGluZSk7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAuaGFzKHRpbWVsaW5lKSwgIkNh
bm5vdCBzaG93IHRpbWVsaW5lIGJlY2F1c2UgaXQgZG9lcyBub3QgYmVsb25nIHRvIHRoZSBzaG93
biByZWNvcmRpbmcuIiwgdGltZWxpbmUpOwogCiAgICAgICAgIC8vIERlZmVyIHNob3dpbmcgdGhl
IHJlbGV2YW50IHRpbWVsaW5lIHRvIHRoZSBvbnNlbGVjdCBoYW5kbGVyIG9mIHRoZSB0aW1lbGlu
ZXMgdHJlZSBlbGVtZW50LgotICAgICAgICBjb25zdCB3YXNTZWxlY3RlZEJ5VXNlciA9IHRydWU7
Ci0gICAgICAgIGNvbnN0IHNob3VsZFN1cHByZXNzT25TZWxlY3QgPSBmYWxzZTsKKyAgICAgICAg
dmFyIHdhc1NlbGVjdGVkQnlVc2VyID0gdHJ1ZTsKKyAgICAgICAgdmFyIHNob3VsZFN1cHByZXNz
T25TZWxlY3QgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5n
ZXQodGltZWxpbmUpLnNlbGVjdCh0cnVlLCB3YXNTZWxlY3RlZEJ5VXNlciwgc2hvdWxkU3VwcHJl
c3NPblNlbGVjdCwgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAot
ICAgIHVwZGF0ZUZpbHRlcjogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUZpbHRlcigpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUudXBk
YXRlRmlsdGVyLmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fZGlzcGxheWVkQ29udGVudFZp
ZXcuZmlsdGVyRGlkQ2hhbmdlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYXNDdXN0b21GaWx0
ZXJzOiBmdW5jdGlvbigpCisgICAgaGFzQ3VzdG9tRmlsdGVycygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0
Q3VzdG9tRmlsdGVyczogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgbWF0Y2hUcmVlRWxlbWVu
dEFnYWluc3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLl9kaXNwbGF5ZWRDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmlldy5tYXRjaFRyZWVFbGVtZW50
QWdhaW5zdEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAg
Y2FuU2hvd0RpZmZlcmVudENvbnRlbnRWaWV3OiBmdW5jdGlvbigpCisgICAgY2FuU2hvd0RpZmZl
cmVudENvbnRlbnRWaWV3KCkKICAgICB7CiAgICAgICAgIHJldHVybiAhdGhpcy5yZXN0b3JpbmdT
dGF0ZSB8fCAhdGhpcy5fcmVzdG9yZWRTaG93aW5nVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmll
dzsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVTdGF0ZVRvQ29va2llOiBmdW5jdGlvbihjb29r
aWUpCisgICAgc2F2ZVN0YXRlVG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoY29va2llKTsKIApAQCAtMzE1LDkgKzI5MCw5IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBjb29raWVbV2ViSW5z
cGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNlbGVjdGVkVGltZWxpbmVWaWV3SWRlbnRpZmll
ckNvb2tpZUtleV0gPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuT3ZlcnZpZXdU
aW1lbGluZUlkZW50aWZpZXJDb29raWVWYWx1ZTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuc2F2ZVN0YXRlVG9Db29raWUuY2FsbCh0aGlz
LCBjb29raWUpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzdG9yZVN0YXRlRnJvbUNvb2tpZTog
ZnVuY3Rpb24oY29va2llLCByZWxheGVkTWF0Y2hEZWxheSkKKyAgICByZXN0b3JlU3RhdGVGcm9t
Q29va2llKGNvb2tpZSwgcmVsYXhlZE1hdGNoRGVsYXkpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChjb29raWUpOwogCkBAIC0zNDAsMTEgKzMxNSwxMSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIERvbid0IGNhbGwg
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5yZXN0b3JlU3RhdGVGcm9tQ29va2llLCBiZWNhdXNlIGl0
IHRyaWVzIHRvIG1hdGNoIGJhc2VkCiAgICAgICAgIC8vIG9uIHR5cGUgb25seSBhcyBhIGxhc3Qg
cmVzb3J0LiBUaGlzIHdvdWxkIGNhdXNlIHRoZSBmaXJzdCByZWNvcmRpbmcgdG8gYmUgcmVzZWxl
Y3RlZCBvbiByZWxvYWQuCi0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBf
cmVjb3JkaW5nc1RyZWVFbGVtZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBzZWxl
Y3RlZEJ5VXNlcikKKyAgICBfcmVjb3JkaW5nc1RyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1l
bnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVs
ZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRpbmcpOwogICAgICAgICBjb25zb2xlLmFzc2VydCghc2VsZWN0ZWRCeVVzZXIsICJSZWNv
cmRpbmcgdHJlZSBlbGVtZW50cyBzaG91bGQgYmUgaGlkZGVuIGFuZCBvbmx5IHByb2dyYW1tYXRp
Y2FsbHkgc2VsZWN0YWJsZS4iKTsKQEAgLTM1NCwxNiArMzI5LDE2IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIERlc2VsZWN0IG9y
IHJlLXNlbGVjdCB0aGUgdGltZWxpbmUgdHJlZSBlbGVtZW50IGZvciB0aGUgdGltZWxpbmUgdmll
dyBiZWluZyBkaXNwbGF5ZWQuCiAgICAgICAgIHZhciBjdXJyZW50VGltZWxpbmVWaWV3ID0gdGhp
cy5fZGlzcGxheWVkQ29udGVudFZpZXcuY3VycmVudFRpbWVsaW5lVmlldzsKICAgICAgICAgaWYg
KGN1cnJlbnRUaW1lbGluZVZpZXcgJiYgY3VycmVudFRpbWVsaW5lVmlldy5yZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSkgewotICAgICAgICAgICAgY29u
c3Qgd2FzU2VsZWN0ZWRCeVVzZXIgPSBmYWxzZTsgLy8gVGhpcyBpcyBhIHNpbXVsYXRlZCBzZWxl
Y3Rpb24uCi0gICAgICAgICAgICBjb25zdCBzaG91bGRTdXBwcmVzc09uU2VsZWN0ID0gZmFsc2U7
CisgICAgICAgICAgICB2YXIgd2FzU2VsZWN0ZWRCeVVzZXIgPSBmYWxzZTsgLy8gVGhpcyBpcyBh
IHNpbXVsYXRlZCBzZWxlY3Rpb24uCisgICAgICAgICAgICB2YXIgc2hvdWxkU3VwcHJlc3NPblNl
bGVjdCA9IGZhbHNlOwogICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC5n
ZXQoY3VycmVudFRpbWVsaW5lVmlldy5yZXByZXNlbnRlZE9iamVjdCkuc2VsZWN0KHRydWUsIHdh
c1NlbGVjdGVkQnlVc2VyLCBzaG91bGRTdXBwcmVzc09uU2VsZWN0LCB0cnVlKTsKICAgICAgICAg
fSBlbHNlIGlmICh0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50
KQogICAgICAgICAgICAgdGhpcy5fdGltZWxpbmVzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxl
bWVudC5kZXNlbGVjdCgpOwogCiAgICAgICAgIHRoaXMudXBkYXRlRmlsdGVyKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdGltZWxpbmVzVHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJl
ZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQorICAgIF90aW1lbGluZXNUcmVlRWxlbWVudFNlbGVj
dGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAuZ2V0KHRyZWVFbGVtZW50LnJlcHJl
c2VudGVkT2JqZWN0KSA9PT0gdHJlZUVsZW1lbnQsIHRyZWVFbGVtZW50KTsKIApAQCAtMzc5LDI3
ICszNTQsMjcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICB0aGlzLl9kaXNwbGF5ZWRDb250ZW50Vmlldy5zaG93VGltZWxpbmVWaWV3
Rm9yVGltZWxpbmUodGltZWxpbmUpOwogICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dz
ZXIuc2hvd0NvbnRlbnRWaWV3KHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9jb250ZW50QnJvd3NlckN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZTog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnRCcm93c2VyQ3VycmVudENvbnRlbnRWaWV3RGlk
Q2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGRpZFNob3dUaW1lbGluZVJlY29yZGlu
Z0NvbnRlbnRWaWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmN1cnJlbnRDb250ZW50
VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3
OwogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlld1Nob3dpbmdTdHls
ZUNsYXNzLCBkaWRTaG93VGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfY2FwdHVyaW5nU3RhcnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NhcHR1
cmluZ1N0YXJ0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVt
ZW50LnRleHRDb250ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRpbmciKTsKICAg
ICAgICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LlRpbWVsaW5lU2lkZWJhclBhbmVsLlJlY29yZEdseXBoUmVjb3JkaW5nU3R5bGVDbGFzcyk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfY2FwdHVyaW5nU3RvcHBlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2NhcHR1cmluZ1N0b3BwZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRT
dGF0dXNFbGVtZW50LnRleHRDb250ZW50ID0gIiI7CiAgICAgICAgIHRoaXMuX3JlY29yZEdseXBo
RWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5l
bC5SZWNvcmRHbHlwaFJlY29yZGluZ1N0eWxlQ2xhc3MpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3JlY29yZGluZ0NyZWF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZWNvcmRpbmdDcmVhdGVk
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHJlY29yZGluZyA9IGV2ZW50LmRhdGEucmVjb3Jk
aW5nOwogICAgICAgICBjb25zb2xlLmFzc2VydChyZWNvcmRpbmcgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcsIHJlY29yZGluZyk7CkBAIC00MDksOSArMzg0LDkgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fcmVjb3JkaW5nc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKHJlY29yZGluZ1RyZWVFbGVt
ZW50KTsKIAogICAgICAgICB0aGlzLl9yZWNvcmRpbmdDb3VudENoYW5nZWQoKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9yZWNvcmRpbmdDb3VudENoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVj
b3JkaW5nQ291bnRDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHZhciBwcmV2aW91c1RyZWVFbGVt
ZW50ID0gbnVsbDsKICAgICAgICAgZm9yICh2YXIgdHJlZUVsZW1lbnQgb2YgdGhpcy5fcmVjb3Jk
aW5nVHJlZUVsZW1lbnRNYXAudmFsdWVzKCkpIHsKQEAgLTQyMiw5ICszOTcsOSBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICBw
cmV2aW91c1RyZWVFbGVtZW50ID0gdHJlZUVsZW1lbnQ7CiAgICAgICAgIH0KLSAgICB9LAorICAg
IH0KIAotICAgIF9yZWNvcmRpbmdTZWxlY3RlZDogZnVuY3Rpb24ocmVjb3JkaW5nKQorICAgIF9y
ZWNvcmRpbmdTZWxlY3RlZChyZWNvcmRpbmcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dChyZWNvcmRpbmcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcsIHJl
Y29yZGluZyk7CiAKQEAgLTQ0OCwxNCArNDIzLDE0IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNp
ZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2Rpc3BsYXllZENvbnRlbnRW
aWV3ID0gV2ViSW5zcGVjdG9yLmNvbnRlbnRCcm93c2VyLmNvbnRlbnRWaWV3Rm9yUmVwcmVzZW50
ZWRPYmplY3QodGhpcy5fZGlzcGxheWVkUmVjb3JkaW5nKTsKICAgICAgICAgaWYgKHRoaXMuc2Vs
ZWN0ZWQpCiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY29udGVudEJyb3dzZXIuc2hvd0NvbnRl
bnRWaWV3KHRoaXMuX2Rpc3BsYXllZENvbnRlbnRWaWV3KTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9yZWNvcmRpbmdMb2FkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yZWNvcmRpbmdMb2FkZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZWNvcmRpbmdTZWxlY3RlZChXZWJJbnNwZWN0
b3IudGltZWxpbmVNYW5hZ2VyLmFjdGl2ZVJlY29yZGluZyk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfdGltZWxpbmVBZGRlZDogZnVuY3Rpb24odGltZWxpbmVPckV2ZW50KQorICAgIF90aW1lbGlu
ZUFkZGVkKHRpbWVsaW5lT3JFdmVudCkKICAgICB7CiAgICAgICAgIHZhciB0aW1lbGluZSA9IHRp
bWVsaW5lT3JFdmVudDsKICAgICAgICAgaWYgKCEodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNw
ZWN0b3IuVGltZWxpbmUpKQpAQCAtNDY1LDcgKzQ0MCw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlz
Ll90aW1lbGluZVRyZWVFbGVtZW50TWFwLmhhcyh0aW1lbGluZSksIHRpbWVsaW5lKTsKIAogICAg
ICAgICB2YXIgdGltZWxpbmVUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRy
ZWVFbGVtZW50KFt0aW1lbGluZS5pY29uQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVT
aWRlYmFyUGFuZWwuTGFyZ2VJY29uU3R5bGVDbGFzc10sIHRpbWVsaW5lLmRpc3BsYXlOYW1lLCBu
dWxsLCB0aW1lbGluZSk7Ci0gICAgICAgIGNvbnN0IHRvb2x0aXAgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkNsb3NlICVzIHRpbWVsaW5lIHZpZXciKS5mb3JtYXQodGltZWxpbmUuZGlzcGxheU5h
bWUpOworICAgICAgICB2YXIgdG9vbHRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xvc2Ug
JXMgdGltZWxpbmUgdmlldyIpLmZvcm1hdCh0aW1lbGluZS5kaXNwbGF5TmFtZSk7CiAgICAgICAg
IHdyYXBwZWRTVkdEb2N1bWVudChwbGF0Zm9ybUltYWdlUGF0aCgiQ2xvc2VMYXJnZS5zdmciKSwg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLkNsb3NlQnV0dG9uU3R5bGVDbGFzcywg
dG9vbHRpcCwgZnVuY3Rpb24oZWxlbWVudCkgewogICAgICAgICAgICAgdmFyIGJ1dHRvbiA9IG5l
dyBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24oZWxlbWVudCk7CiAgICAgICAg
ICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0
dXNCdXR0b24uRXZlbnQuQ2xpY2tlZCwgdGhpcy5zaG93VGltZWxpbmVPdmVydmlldywgdGhpcyk7
CkBAIC00NzUsMjQgKzQ1MCwyNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLnNldCh0
aW1lbGluZSwgdGltZWxpbmVUcmVlRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fdGltZWxpbmVD
b3VudENoYW5nZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90aW1lbGluZVJlbW92ZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF90aW1lbGluZVJlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICB2YXIgdGltZWxpbmUgPSBldmVudC5kYXRhLnRpbWVsaW5lOwogICAgICAgICBjb25zb2xlLmFz
c2VydCh0aW1lbGluZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSwgdGltZWxpbmUp
OwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90aW1lbGluZVRyZWVFbGVtZW50TWFwLmhh
cyh0aW1lbGluZSksIHRpbWVsaW5lKTsKIAogICAgICAgICB2YXIgdGltZWxpbmVUcmVlRWxlbWVu
dCA9IHRoaXMuX3RpbWVsaW5lVHJlZUVsZW1lbnRNYXAudGFrZSh0aW1lbGluZSk7Ci0gICAgICAg
IGNvbnN0IHNob3VsZFN1cHByZXNzT25EZXNlbGVjdCA9IGZhbHNlOwotICAgICAgICBjb25zdCBz
aG91bGRTdXBwcmVzc1NlbGVjdFNpYmxpbmcgPSB0cnVlOworICAgICAgICB2YXIgc2hvdWxkU3Vw
cHJlc3NPbkRlc2VsZWN0ID0gZmFsc2U7CisgICAgICAgIHZhciBzaG91bGRTdXBwcmVzc1NlbGVj
dFNpYmxpbmcgPSB0cnVlOwogICAgICAgICB0aGlzLl90aW1lbGluZXNUcmVlT3V0bGluZS5yZW1v
dmVDaGlsZCh0aW1lbGluZVRyZWVFbGVtZW50LCBzaG91bGRTdXBwcmVzc09uRGVzZWxlY3QsIHNo
b3VsZFN1cHByZXNzU2VsZWN0U2libGluZyk7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lVHJlZUVs
ZW1lbnRNYXAuZGVsZXRlKHRpbWVsaW5lKTsKIAogICAgICAgICB0aGlzLl90aW1lbGluZUNvdW50
Q2hhbmdlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RpbWVsaW5lQ291bnRDaGFuZ2VkOiBm
dW5jdGlvbigpCisgICAgX3RpbWVsaW5lQ291bnRDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHZh
ciBwcmV2aW91c1RyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgZm9yICh2YXIgdHJlZUVsZW1l
bnQgb2YgdGhpcy5fdGltZWxpbmVUcmVlRWxlbWVudE1hcC52YWx1ZXMoKSkgewpAQCAtNTA0LDE2
ICs0NzksMTYgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHByZXZpb3VzVHJlZUVsZW1lbnQgPSB0cmVlRWxlbWVudDsKICAgICAg
ICAgfQogCi0gICAgICAgIGNvbnN0IHRpbWVsaW5lSGVpZ2h0ID0gMzY7Ci0gICAgICAgIGNvbnN0
IGV2ZW50VGl0bGVCYXJPZmZzZXQgPSA1MTsKLSAgICAgICAgY29uc3QgY29udGVudEVsZW1lbnRP
ZmZzZXQgPSA3NDsKKyAgICAgICAgdmFyIHRpbWVsaW5lSGVpZ2h0ID0gMzY7CisgICAgICAgIHZh
ciBldmVudFRpdGxlQmFyT2Zmc2V0ID0gNTE7CisgICAgICAgIHZhciBjb250ZW50RWxlbWVudE9m
ZnNldCA9IDc0OwogICAgICAgICB2YXIgdGltZWxpbmVDb3VudCA9IHRoaXMuX2Rpc3BsYXllZFJl
Y29yZGluZy50aW1lbGluZXMuc2l6ZTsKICAgICAgICAgdGhpcy5fdGltZWxpbmVzQ29udGVudENv
bnRhaW5lckVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gKHRpbWVsaW5lSGVpZ2h0ICogdGltZWxpbmVD
b3VudCkgKyAicHgiOwogICAgICAgICB0aGlzLl90aW1lbGluZUV2ZW50c1RpdGxlQmFyRWxlbWVu
dC5zdHlsZS50b3AgPSAodGltZWxpbmVIZWlnaHQgKiB0aW1lbGluZUNvdW50ICsgZXZlbnRUaXRs
ZUJhck9mZnNldCkgKyAicHgiOwogICAgICAgICB0aGlzLmNvbnRlbnRFbGVtZW50LnN0eWxlLnRv
cCA9ICh0aW1lbGluZUhlaWdodCAqIHRpbWVsaW5lQ291bnQgKyBjb250ZW50RWxlbWVudE9mZnNl
dCkgKyAicHgiOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlY29yZEdseXBoTW91c2VkT3Zlcjog
ZnVuY3Rpb24oZXZlbnQpCisgICAgX3JlY29yZEdseXBoTW91c2VkT3ZlcihldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMuX3JlY29yZEdseXBoRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYklu
c3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5SZWNvcmRHbHlwaFJlY29yZGluZ0ZvcmNlZFN0
eWxlQ2xhc3MpOwogCkBAIC01MjEsOSArNDk2LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lk
ZWJhclBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0YXR1c0Vs
ZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0b3AgUmVjb3JkaW5n
Iik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3JlY29yZFN0YXR1c0VsZW1lbnQu
dGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFJlY29yZGluZyIpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3JlY29yZEdseXBoTW91c2VkT3V0OiBmdW5jdGlvbihldmVu
dCkKKyAgICBfcmVjb3JkR2x5cGhNb3VzZWRPdXQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlz
Ll9yZWNvcmRHbHlwaEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVGltZWxp
bmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdGb3JjZWRTdHlsZUNsYXNzKTsKIApA
QCAtNTMxLDkgKzUwNiw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZWNvcmRTdGF0dXNFbGVtZW50LnRleHRDb250
ZW50ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWNvcmRpbmciKTsKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgdGhpcy5fcmVjb3JkU3RhdHVzRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3JlY29yZEdseXBoQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3JlY29yZEdseXBoQ2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIC8vIEFkZCBm
b3JjZWQgY2xhc3MgdG8gcHJldmVudCB0aGUgZ2x5cGggZnJvbSBzaG93aW5nIGEgY29uZnVzaW5n
IHN0YXR1cyBhZnRlciBjbGljay4KICAgICAgICAgdGhpcy5fcmVjb3JkR2x5cGhFbGVtZW50LmNs
YXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlJlY29yZEdseXBo
UmVjb3JkaW5nRm9yY2VkU3R5bGVDbGFzcyk7CkBAIC01NDcsMTkgKzUyMiwxOSBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8g
U2hvdyB0aGUgdGltZWxpbmUgdG8gd2hpY2ggZXZlbnRzIHdpbGwgYmUgYXBwZW5kZWQuCiAgICAg
ICAgICAgICB0aGlzLl9yZWNvcmRpbmdMb2FkZWQoKTsKICAgICAgICAgfQotICAgIH0sCisgICAg
fQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgb25seSB1c2VkIHdoZW4gUmVwbGF5QWdlbnQg
aXMgYXZhaWxhYmxlLgogCi0gICAgX3VwZGF0ZVJlcGxheUludGVyZmFjZVZpc2liaWxpdHk6IGZ1
bmN0aW9uKCkKKyAgICBfdXBkYXRlUmVwbGF5SW50ZXJmYWNlVmlzaWJpbGl0eSgpCiAgICAgewog
ICAgICAgICB2YXIgc2hvdWxkU2hvd1JlcGxheUludGVyZmFjZSA9IHdpbmRvdy5SZXBsYXlBZ2Vu
dCAmJiBXZWJJbnNwZWN0b3Iuc2hvd1JlcGxheUludGVyZmFjZVNldHRpbmcudmFsdWU7CiAKICAg
ICAgICAgdGhpcy5fc3RhdHVzQmFyRWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rv
ci5UaW1lbGluZVNpZGViYXJQYW5lbC5IaWRkZW5TdHlsZUNsYXNzTmFtZSwgc2hvdWxkU2hvd1Jl
cGxheUludGVyZmFjZSk7CiAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuZWxlbWVudC5jbGFz
c0xpc3QudG9nZ2xlKFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5IaWRkZW5TdHls
ZUNsYXNzTmFtZSwgIXNob3VsZFNob3dSZXBsYXlJbnRlcmZhY2UpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2NvbnRleHRNZW51TmF2aWdhdGlvbkJhck9yU3RhdHVzQmFyOiBmdW5jdGlvbigpCisg
ICAgX2NvbnRleHRNZW51TmF2aWdhdGlvbkJhck9yU3RhdHVzQmFyKCkKICAgICB7CiAgICAgICAg
IGlmICghd2luZG93LlJlcGxheUFnZW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNTc0LDkg
KzU0OSw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTaG93IFJlcGxheSBDb250cm9scyIpLCB0b2dnbGVSZXBsYXlJbnRl
cmZhY2UpOwogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcmVwbGF5Q2FwdHVyZUJ1dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVwbGF5Q2Fw
dHVyZUJ1dHRvbkNsaWNrZWQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXBsYXlDYXB0
dXJlQnV0dG9uSXRlbS5hY3RpdmF0ZWQpIHsKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBs
YXlNYW5hZ2VyLnN0YXJ0Q2FwdHVyaW5nKCk7CkBAIC01OTEsMzQgKzU2Niw1NyBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICB0
aGlzLl9yZXBsYXlDYXB0dXJlQnV0dG9uSXRlbS5lbmFibGVkID0gZmFsc2U7CiAgICAgICAgIH0K
LSAgICB9LAorICAgIH0KIAotICAgIF9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkNsaWNrZWQ6IGZ1
bmN0aW9uKCkKKyAgICBfcmVwbGF5UGF1c2VSZXN1bWVCdXR0b25DbGlja2VkKCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0udG9nZ2xlZCkKICAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnBhdXNlUGxheWJhY2soKTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucmVwbGF5
VG9Db21wbGV0aW9uKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2FwdHVyZVN0YXJ0ZWQ6IGZ1
bmN0aW9uKCkKKyAgICBfY2FwdHVyZVN0YXJ0ZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVw
bGF5Q2FwdHVyZUJ1dHRvbkl0ZW0uZW5hYmxlZCA9IHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfY2FwdHVyZVN0b3BwZWQ6IGZ1bmN0aW9uKCkKKyAgICBfY2FwdHVyZVN0b3BwZWQoKQogICAg
IHsKICAgICAgICAgdGhpcy5fcmVwbGF5Q2FwdHVyZUJ1dHRvbkl0ZW0uYWN0aXZhdGVkID0gZmFs
c2U7CiAgICAgICAgIHRoaXMuX3JlcGxheVBhdXNlUmVzdW1lQnV0dG9uSXRlbS5lbmFibGVkID0g
dHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wbGF5YmFja1N0YXJ0ZWQ6IGZ1bmN0aW9uKCkK
KyAgICBfcGxheWJhY2tTdGFydGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlcGxheVBhdXNl
UmVzdW1lQnV0dG9uSXRlbS50b2dnbGVkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9w
bGF5YmFja1BhdXNlZDogZnVuY3Rpb24oKQorICAgIF9wbGF5YmFja1BhdXNlZCgpCiAgICAgewog
ICAgICAgICB0aGlzLl9yZXBsYXlQYXVzZVJlc3VtZUJ1dHRvbkl0ZW0udG9nZ2xlZCA9IGZhbHNl
OwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5IaWRkZW5T
dHlsZUNsYXNzTmFtZSA9ICJoaWRkZW4iOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBh
bmVsLlN0YXR1c0JhclN0eWxlQ2xhc3MgPSAic3RhdHVzLWJhciI7CitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhTdHlsZUNsYXNzID0gInJlY29yZC1nbHlwaCI7
CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdT
dHlsZUNsYXNzID0gInJlY29yZGluZyI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFu
ZWwuUmVjb3JkR2x5cGhSZWNvcmRpbmdGb3JjZWRTdHlsZUNsYXNzID0gImZvcmNlZCI7CitXZWJJ
bnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuUmVjb3JkU3RhdHVzU3R5bGVDbGFzcyA9ICJy
ZWNvcmQtc3RhdHVzIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaXRsZUJh
clN0eWxlQ2xhc3MgPSAidGl0bGUtYmFyIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQ
YW5lbC5UaW1lbGluZXNUaXRsZUJhclN0eWxlQ2xhc3MgPSAidGltZWxpbmVzIjsKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1lbGluZUV2ZW50c1RpdGxlQmFyU3R5bGVDbGFz
cyA9ICJ0aW1lbGluZS1ldmVudHMiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVs
LlRpbWVsaW5lc0NvbnRlbnRDb250YWluZXJTdHlsZUNsYXNzID0gInRpbWVsaW5lcy1jb250ZW50
IjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5DbG9zZUJ1dHRvblN0eWxlQ2xh
c3MgPSAiY2xvc2UtYnV0dG9uIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5M
YXJnZUljb25TdHlsZUNsYXNzID0gImxhcmdlIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGVi
YXJQYW5lbC5TdG9wd2F0Y2hJY29uU3R5bGVDbGFzcyA9ICJzdG9wd2F0Y2gtaWNvbiI7CitXZWJJ
bnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuTmV0d29ya0ljb25TdHlsZUNsYXNzID0gIm5l
dHdvcmstaWNvbiI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVTaWRlYmFyUGFuZWwuQ29sb3JzSWNv
blN0eWxlQ2xhc3MgPSAiY29sb3JzLWljb24iOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJh
clBhbmVsLlNjcmlwdEljb25TdHlsZUNsYXNzID0gInNjcmlwdC1pY29uIjsKK1dlYkluc3BlY3Rv
ci5UaW1lbGluZVNpZGViYXJQYW5lbC5SdW5Mb29wSWNvblN0eWxlQ2xhc3MgPSAicnVubG9vcC1p
Y29uIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5UaW1lbGluZVJlY29yZGlu
Z0NvbnRlbnRWaWV3U2hvd2luZ1N0eWxlQ2xhc3MgPSAidGltZWxpbmUtcmVjb3JkaW5nLWNvbnRl
bnQtdmlldy1zaG93aW5nIjsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLlNo
b3dpbmdUaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3Q29va2llS2V5ID0gInRpbWVsaW5lLXNp
ZGViYXItcGFuZWwtc2hvd2luZy10aW1lbGluZS1yZWNvcmRpbmctY29udGVudC12aWV3IjsKK1dl
Ykluc3BlY3Rvci5UaW1lbGluZVNpZGViYXJQYW5lbC5TZWxlY3RlZFRpbWVsaW5lVmlld0lkZW50
aWZpZXJDb29raWVLZXkgPSAidGltZWxpbmUtc2lkZWJhci1wYW5lbC1zZWxlY3RlZC10aW1lbGlu
ZS12aWV3LWlkZW50aWZpZXIiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lU2lkZWJhclBhbmVsLk92
ZXJ2aWV3VGltZWxpbmVJZGVudGlmaWVyQ29va2llVmFsdWUgPSAib3ZlcnZpZXciOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxp
bmVWaWV3LmpzCmluZGV4IGU3ZGJjYWUuLmM0N2FjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUgVW5pdmVyc2l0eSBvZiBX
YXNoaW5ndG9uLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjQsNDAgKzI0LDM2IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5l
VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLlRpbWVsaW5l
VmlldyA9IGNsYXNzIFRpbWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50Vmll
dwogeworICAgIGNvbnN0cnVjdG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAg
c3VwZXIocmVwcmVzZW50ZWRPYmplY3QpOworCiAgICAgICAgIC8vIFRoaXMgY2xhc3Mgc2hvdWxk
IG5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuIENyZWF0ZSBhIGNvbmNyZXRlIHN1YmNsYXNz
IGluc3RlYWQuCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29uc3RydWN0b3IgIT09IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVZpZXcgJiYgdGhpcyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5U
aW1lbGluZVZpZXcpOwogCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywg
cmVwcmVzZW50ZWRPYmplY3QpOwotCiAgICAgICAgIHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZSA9
IFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC5jcmVhdGVDb250ZW50VHJlZU91dGxp
bmUoKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxp
bmVWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoInRpbWVsaW5lLXZpZXciKTsKIAogICAgICAgICB0aGlzLl96ZXJvVGltZSA9IDA7CiAgICAg
ICAgIHRoaXMuX3N0YXJ0VGltZSA9IDA7CiAgICAgICAgIHRoaXMuX2VuZFRpbWUgPSA1OwogICAg
ICAgICB0aGlzLl9jdXJyZW50VGltZSA9IDA7Ci19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVW
aWV3LlN0eWxlQ2xhc3NOYW1lID0gInRpbWVsaW5lLXZpZXciOwotCi1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRp
bWVsaW5lVmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90
b3R5cGUsCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmF2aWdhdGlvblNpZGVi
YXJUcmVlT3V0bGluZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFRyZWVP
dXRsaW5lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25TaWRlYmFyVHJlZU91
dGxpbmVMYWJlbCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWItY2xhc3Nl
cyBpZiBuZWVkZWQuCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CkBAIC02NywxMiArNjMsMTIgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBwYXRo
Q29tcG9uZW50ID0gbmV3IFdlYkluc3BlY3Rvci5HZW5lcmFsVHJlZUVsZW1lbnRQYXRoQ29tcG9u
ZW50KHRoaXMuX2NvbnRlbnRUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KTsKICAgICAg
ICAgcGF0aENvbXBvbmVudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5IaWVyYXJjaGlj
YWxQYXRoQ29tcG9uZW50LkV2ZW50LlNpYmxpbmdXYXNTZWxlY3RlZCwgdGhpcy50cmVlRWxlbWVu
dFBhdGhDb21wb25lbnRTZWxlY3RlZCwgdGhpcyk7CiAgICAgICAgIHJldHVybiBbcGF0aENvbXBv
bmVudF07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgemVyb1RpbWUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3plcm9UaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHplcm9U
aW1lKHgpCiAgICAgewpAQCAtODIsMTIgKzc4LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl96ZXJvVGltZSA9IHggfHwgMDsKIAogICAg
ICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3RhcnRU
aW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydFRpbWU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBzZXQgc3RhcnRUaW1lKHgpCiAgICAgewpAQCAtOTcsMTIgKzkzLDEyIEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zdGFy
dFRpbWUgPSB4IHx8IDA7CiAKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGVuZFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Vu
ZFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZW5kVGltZSh4KQogICAgIHsKQEAgLTEx
MiwxMiArMTA4LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9lbmRUaW1lID0geCB8fCAwOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlv
dXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjdXJyZW50VGltZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
Y3VycmVudFRpbWUoeCkKICAgICB7CkBAIC0xMzEsMzIgKzEyNywzMiBAQCBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgZnVuY3Rpb24gY2hlY2tJZkxheW91
dElzTmVlZGVkKGN1cnJlbnRUaW1lKQogICAgICAgICB7CiAgICAgICAgICAgICAvLyBJbmNsdWRl
IHNvbWUgd2lnZ2xlIHJvb20gc2luY2UgdGhlIGN1cnJlbnQgdGltZSBtYXJrZXJzIGNhbiBiZSBj
bGlwcGVkIG9mZiB0aGUgZW5kcyBhIGJpdCBhbmQgc3RpbGwgcGFydGlhbGx5IHZpc2libGUuCi0g
ICAgICAgICAgICBjb25zdCB3aWdnbGVUaW1lID0gMC4wNTsgLy8gNTBtcworICAgICAgICAgICAg
dmFyIHdpZ2dsZVRpbWUgPSAwLjA1OyAvLyA1MG1zCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5f
c3RhcnRUaW1lIC0gd2lnZ2xlVGltZSA8PSBjdXJyZW50VGltZSAmJiBjdXJyZW50VGltZSA8PSB0
aGlzLl9lbmRUaW1lICsgd2lnZ2xlVGltZTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChjaGVj
a0lmTGF5b3V0SXNOZWVkZWQuY2FsbCh0aGlzLCBvbGRDdXJyZW50VGltZSkgfHwgY2hlY2tJZkxh
eW91dElzTmVlZGVkLmNhbGwodGhpcywgdGhpcy5fY3VycmVudFRpbWUpKQogICAgICAgICAgICAg
dGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzZXQ6IGZ1bmN0aW9u
KCkKKyAgICByZXNldCgpCiAgICAgewogICAgICAgICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUu
cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICB9LAorICAgIH0KIAogCi0gICAgZmlsdGVyRGlkQ2hhbmdl
OiBmdW5jdGlvbigpCisgICAgZmlsdGVyRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIC8vIElt
cGxlbWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlmIG5lZWRlZC4KLSAgICB9LAorICAgIH0KIAotICAg
IG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVyczogZnVuY3Rpb24odHJlZUVsZW1l
bnQpCisgICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVtZW50
KQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViLWNsYXNzZXMgaWYgbmVlZGVk
LgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91
dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2Vs
QW5pbWF0aW9uRnJhbWUodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7CkBA
IC0xNjQsMjggKzE2MCwyOCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlm
IG5lZWRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dElmTmVlZGVkOiBmdW5j
dGlvbigpCisgICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgZmls
dGVyVXBkYXRlZDogZnVuY3Rpb24oKQorICAgIGZpbHRlclVwZGF0ZWQoKQogICAgIHsKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHRyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVk
KGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViLWNsYXNzZXMgaWYg
bmVlZGVkLgotICAgIH0sCisgICAgfQogCi0gICAgbmVlZHNMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAg
ICBuZWVkc0xheW91dCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMudmlzaWJsZSkKICAgICAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
anMKaW5kZXggZmQ0NGE2ZS4uNjk4YmFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9nZ2xlQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDMyICsyMywzMCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Ub2dnbGVCdXR0b25OYXZpZ2F0aW9u
SXRlbSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhbHRlcm5hdGVUb29s
VGlwLCBkZWZhdWx0SW1hZ2UsIGFsdGVybmF0ZUltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdo
dCwgc3VwcHJlc3NFbWJvc3MpIHsKLSAgICBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgZGVmYXVsdEltYWdlLCBp
bWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MpOworV2ViSW5zcGVjdG9yLlRv
Z2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtID0gY2xhc3MgVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0
ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0KK3sKKyAgICBjb25z
dHJ1Y3RvcihpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWx0ZXJuYXRlVG9vbFRpcCwgZGVm
YXVsdEltYWdlLCBhbHRlcm5hdGVJbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHBy
ZXNzRW1ib3NzKQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllciwgZGVmYXVsdFRvb2xU
aXAsIGRlZmF1bHRJbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3Nz
KTsKIAogICAgICAgICB0aGlzLl90b2dnbGVkID0gZmFsc2U7CiAgICAgICAgIHRoaXMuX2RlZmF1
bHRJbWFnZSA9IGRlZmF1bHRJbWFnZTsKICAgICAgICAgdGhpcy5fYWx0ZXJuYXRlSW1hZ2UgPSBh
bHRlcm5hdGVJbWFnZTsKICAgICAgICAgdGhpcy5fZGVmYXVsdFRvb2xUaXAgPSBkZWZhdWx0VG9v
bFRpcDsKICAgICAgICAgdGhpcy5fYWx0ZXJuYXRlVG9vbFRpcCA9IGFsdGVybmF0ZVRvb2xUaXAg
fHwgZGVmYXVsdFRvb2xUaXA7Ci19OwotCi1XZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUgPSAidG9nZ2xlIjsKLQotV2ViSW5zcGVjdG9yLlRvZ2ds
ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLAorICAgIH0KIAogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGRlZmF1bHRUb29sVGlwKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9kZWZhdWx0VG9vbFRpcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBhbHRlcm5hdGVU
b29sVGlwKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9hbHRlcm5hdGVUb29sVGlwOwot
ICAgIH0sCisgICAgfQogCiAgICAgc2V0IGFsdGVybmF0ZVRvb2xUaXAodG9vbFRpcCkKICAgICB7
CkBAIC01NiwxNyArNTQsMTcgQEAgV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25J
dGVtLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5fdG9nZ2xlZCkKICAgICAgICAg
ICAgIHRoaXMudG9vbFRpcCA9IHRoaXMuX2FsdGVybmF0ZVRvb2xUaXA7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgZGVmYXVsdEltYWdlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9k
ZWZhdWx0SW1hZ2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYWx0ZXJuYXRlSW1hZ2UoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2FsdGVybmF0ZUltYWdlOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGFsdGVybmF0ZUltYWdlKGltYWdlKQogICAgIHsKQEAgLTc0LDEyICs3Miwx
MiBAQCBXZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0g
ewogCiAgICAgICAgIGlmICh0aGlzLl90b2dnbGVkKQogICAgICAgICAgICAgdGhpcy5pbWFnZSA9
IHRoaXMuX2FsdGVybmF0ZUltYWdlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHRvZ2dsZWQo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RvZ2dsZWQ7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBzZXQgdG9nZ2xlZChmbGFnKQogICAgIHsKQEAgLTk3LDE2ICs5NSwyMCBAQCBXZWJJbnNw
ZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgdGhpcy50b29sVGlwID0gdGhpcy5fZGVmYXVsdFRvb2xUaXA7CiAgICAgICAgICAgICB0aGlz
LmltYWdlID0gdGhpcy5fZGVmYXVsdEltYWdlOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAK
LSAgICAvLyBQcml2YXRlCisgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBfYWRkaXRpb25hbENsYXNz
TmFtZXM6IFtXZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFz
c05hbWUsIFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZV0s
CisgICAgZ2V0IGFkZGl0aW9uYWxDbGFzc05hbWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBz
dXBlci5hZGRpdGlvbmFsQ2xhc3NOYW1lcy51bnNoaWZ0KCJ0b2dnbGUiKTsKKyAgICB9CiAKKyAg
ICBnZXQgaW1hZ2VDYWNoZWFibGUoKQorICAgIHsKICAgICAgICAgLy8gVGhlIGltYWdlIGlzbid0
IGNhY2hlYWJsZSBiZWNhdXNlIGl0IGR5bmFtaWNhbGx5IGNoYW5nZXMgYW5kIHRoZSBzYW1lIGNh
bnZhcyBpZGVudGlmaWVyIGlzIHJldXNlZC4KICAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHRy
eSBvdmVycmlkaW5nIF9jYW52YXNJZGVudGlmaWVyKCkgdG8gcmV0dXJuIGRpZmZlcmVudCBpZGVu
dGlmaWVycy4gSWYgd2UgZGlkIHRoYXQKICAgICAgICAgLy8gd2Ugd291bGQgYWxzbyBuZWVkIHRv
IG92ZXJyaWRlIGdlbmVyYXRlU3R5bGVUZXh0KCkgdG8gdXNlIHRoZSBkaWZmZXJlbnQgaWRlbnRp
ZmllcnMuCi0gICAgX2ltYWdlQ2FjaGVhYmxlOiBmYWxzZQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJv
dG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVG9nZ2xlQ29udHJvbFRvb2xiYXJJdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVG9nZ2xlQ29udHJvbFRvb2xiYXJJdGVtLmpzCmluZGV4IGI5
YTNiZGIuLjdhNjhmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RvZ2dsZUNvbnRyb2xUb29sYmFySXRlbS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub2dnbGVDb250cm9sVG9vbGJhckl0ZW0u
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDE4ICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Ub2dnbGVDb250cm9sVG9vbGJhckl0ZW0gPSBmdW5jdGlvbihp
ZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWx0ZXJuYXRlVG9vbFRpcCwgZGVmYXVsdEltYWdl
LCBhbHRlcm5hdGVJbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpIHsKLSAgICBXZWJJbnNw
ZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY2FsbCh0aGlzLCBpZGVudGlmaWVyLCBk
ZWZhdWx0VG9vbFRpcCwgYWx0ZXJuYXRlVG9vbFRpcCwgZGVmYXVsdEltYWdlLCBhbHRlcm5hdGVJ
bWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIGZhbHNlKTsKK1dlYkluc3BlY3Rvci5Ub2dn
bGVDb250cm9sVG9vbGJhckl0ZW0gPSBjbGFzcyBUb2dnbGVDb250cm9sVG9vbGJhckl0ZW0gZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0KK3sKKyAgICBjb25z
dHJ1Y3RvcihpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWx0ZXJuYXRlVG9vbFRpcCwgZGVm
YXVsdEltYWdlLCBhbHRlcm5hdGVJbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpCisgICAg
eworICAgICAgICBzdXBlcihpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWx0ZXJuYXRlVG9v
bFRpcCwgZGVmYXVsdEltYWdlLCBhbHRlcm5hdGVJbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWln
aHQsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGdldCBhZGRpdGlv
bmFsQ2xhc3NOYW1lcygpCisgICAgeworICAgICAgICByZXR1cm4gWyJ0b2dnbGUiLCAiY29udHJv
bCJdOworICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5Ub2dnbGVDb250cm9sVG9vbGJhckl0ZW0u
U3R5bGVDbGFzc05hbWUgPSAidG9nZ2xlIjsKLQotV2ViSW5zcGVjdG9yLlRvZ2dsZUNvbnRyb2xU
b29sYmFySXRlbS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5U
b2dnbGVDb250cm9sVG9vbGJhckl0ZW0sCi0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfYWRkaXRp
b25hbENsYXNzTmFtZXM6IFtXZWJJbnNwZWN0b3IuVG9nZ2xlQ29udHJvbFRvb2xiYXJJdGVtLlN0
eWxlQ2xhc3NOYW1lLCBXZWJJbnNwZWN0b3IuQ29udHJvbFRvb2xiYXJJdGVtLlN0eWxlQ2xhc3NO
YW1lXQotfTsKLQotV2ViSW5zcGVjdG9yLlRvZ2dsZUNvbnRyb2xUb29sYmFySXRlbS5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLnBy
b3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Rvb2xiYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Ub29sYmFyLmpzCmluZGV4IGU2ZmU3MGEuLjY0NzE0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsOCAr
MjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuVG9vbGJhciA9IGZ1bmN0aW9uKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcykgewot
ICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLmNhbGwodGhpcywgZWxlbWVudCwgbmF2aWdh
dGlvbkl0ZW1zLCAidG9vbGJhciIpOworV2ViSW5zcGVjdG9yLlRvb2xiYXIgPSBjbGFzcyBUb29s
YmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKK3sKKyAgICBjb25zdHJ1Y3Rv
cihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMpCisgICAgeworICAgICAgICBzdXBlcihlbGVtZW50
LCBuYXZpZ2F0aW9uSXRlbXMsICJ0b29sYmFyIik7CiAKICAgICAgICAgdGhpcy5kaXNwbGF5TW9k
ZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkRpc3BsYXlNb2RlLkljb25BbmRMYWJlbFZlcnRpY2Fs
OwogICAgICAgICB0aGlzLnNpemVNb2RlID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2l6ZU1vZGUu
Tm9ybWFsOwpAQCAtNDgsNTIgKzUxLDE0IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyID0gZnVuY3Rp
b24oZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1zKSB7CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2hhbmRsZUNvbnRleHRN
ZW51RXZlbnQuYmluZCh0aGlzKSwgZmFsc2UpOwotfTsKLQotLy8gRklYTUU6IE1vdmUgdG8gYSBX
ZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1XZWJJ
bnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNw
ZWN0b3IuVG9vbGJhcik7Ci0KLVdlYkluc3BlY3Rvci5Ub29sYmFyLlN0eWxlQ2xhc3NOYW1lID0g
InRvb2xiYXIiOwotV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ29udHJvbFNlY3Rpb25TdHlsZUNsYXNz
TmFtZSA9ICJjb250cm9sLXNlY3Rpb24iOwotV2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rp
b25TdHlsZUNsYXNzTmFtZSA9ICJpdGVtLXNlY3Rpb24iOwotV2ViSW5zcGVjdG9yLlRvb2xiYXIu
TGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAibGVmdCI7Ci1XZWJJbnNwZWN0b3IuVG9v
bGJhci5DZW50ZXJJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gImNlbnRlciI7Ci1XZWJJbnNw
ZWN0b3IuVG9vbGJhci5SaWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAicmlnaHQiOwot
V2ViSW5zcGVjdG9yLlRvb2xiYXIuVG90YWxTZWN0aW9uTWFyZ2lucyA9IDEyICogMzsKLQotV2Vi
SW5zcGVjdG9yLlRvb2xiYXIuRXZlbnQgPSB7Ci0gICAgRGlzcGxheU1vZGVEaWRDaGFuZ2U6ICJ0
b29sYmFyLWRpc3BsYXktbW9kZS1kaWQtY2hhbmdlIiwKLSAgICBTaXplTW9kZURpZENoYW5nZTog
InRvb2xiYXItc2l6ZS1tb2RlLWRpZC1jaGFuZ2UiCi19OwotCi1XZWJJbnNwZWN0b3IuVG9vbGJh
ci5TZWN0aW9uID0gewotICAgIENvbnRyb2w6ICJjb250cm9sIiwKLSAgICBMZWZ0OiAibGVmdCIs
Ci0gICAgQ2VudGVyOiAiY2VudGVyIiwKLSAgICBSaWdodDogInJpZ2h0IgotfTsKLQotV2ViSW5z
cGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUgPSB7Ci0gICAgSWNvbkFuZExhYmVsVmVydGljYWw6
ICJpY29uLWFuZC1sYWJlbC12ZXJ0aWNhbCIsCi0gICAgSWNvbkFuZExhYmVsSG9yaXpvbnRhbDog
Imljb24tYW5kLWxhYmVsLWhvcml6b250YWwiLAotICAgIEljb25Pbmx5OiAiaWNvbi1vbmx5IiwK
LSAgICBMYWJlbE9ubHk6ICJsYWJlbC1vbmx5IgotfTsKLQotV2ViSW5zcGVjdG9yLlRvb2xiYXIu
U2l6ZU1vZGUgPSB7Ci0gICAgTm9ybWFsOiAibm9ybWFsLXNpemUiLAotICAgIFNtYWxsOiAic21h
bGwtc2l6ZSIKLX07Ci0KLVdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRvb2xiYXIsCisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgZGlzcGxheU1vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rp
c3BsYXlNb2RlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRpc3BsYXlNb2RlKG1vZGUpCiAg
ICAgewpAQCAtMTE0LDEyICs3OSwxMiBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRXZlbnQuRGlzcGxheU1vZGVE
aWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNpemVNb2RlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9zaXplTW9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBz
aXplTW9kZShtb2RlKQogICAgIHsKQEAgLTEzNiw5ICsxMDEsOSBAQCBXZWJJbnNwZWN0b3IuVG9v
bGJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRXZl
bnQuU2l6ZU1vZGVEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgY3VzdG9tVXBkYXRl
TGF5b3V0OiBmdW5jdGlvbigpCisgICAgY3VzdG9tVXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAg
ICAgIC8vIEJhaWwgZWFybHkgaWYgb3VyIHNlY3Rpb25zIGFyZSBub3QgY3JlYXRlZCB5ZXQuIFRo
aXMgbWVhbnMgd2UgYXJlIGJlaW5nIGNhbGxlZCBkdXJpbmcgY29uc3RydWN0aW9uLgogICAgICAg
ICBpZiAoIXRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCB8fCAhdGhpcy5fY2VudGVyU2VjdGlvbkVs
ZW1lbnQgfHwgIXRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQpCkBAIC0xODQsOSArMTQ5LDkgQEAg
V2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBh
ZGRUb29sYmFySXRlbTogZnVuY3Rpb24odG9vbGJhckl0ZW0sIHNlY3Rpb25JZGVudGlmaWVyKQor
ICAgIGFkZFRvb2xiYXJJdGVtKHRvb2xiYXJJdGVtLCBzZWN0aW9uSWRlbnRpZmllcikKICAgICB7
CiAgICAgICAgIHZhciBzZWN0aW9uRWxlbWVudDsKIApAQCAtMjEyLDExICsxNzcsMTEgQEAgV2Vi
SW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAgICBjb25zb2xlLmFzc2VydChz
ZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5hZGROYXZpZ2F0aW9uSXRlbSh0b29sYmFy
SXRlbSwgc2VjdGlvbkVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQog
Ci0gICAgX2hhbmRsZUNvbnRleHRNZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5k
bGVDb250ZXh0TWVudUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGNvbnRleHRNZW51
ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAKQEAgLTIzMSwxNyArMTk2
LDQ3IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAg
ICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jaGFuZ2VE
aXNwbGF5TW9kZTogZnVuY3Rpb24oZGlzcGxheU1vZGUpCisgICAgX2NoYW5nZURpc3BsYXlNb2Rl
KGRpc3BsYXlNb2RlKQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZSA9IGRpc3BsYXlN
b2RlOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2dsZVNtYWxsSWNvbnM6IGZ1bmN0aW9uKCkK
KyAgICBfdG9nZ2xlU21hbGxJY29ucygpCiAgICAgewogICAgICAgICB0aGlzLnNpemVNb2RlID0g
dGhpcy5fc2l6ZU1vZGUgPT09IFdlYkluc3BlY3Rvci5Ub29sYmFyLlNpemVNb2RlLk5vcm1hbCA/
IFdlYkluc3BlY3Rvci5Ub29sYmFyLlNpemVNb2RlLlNtYWxsIDogV2ViSW5zcGVjdG9yLlRvb2xi
YXIuU2l6ZU1vZGUuTm9ybWFsOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Ub29sYmFyLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGU7
CitXZWJJbnNwZWN0b3IuVG9vbGJhci5TdHlsZUNsYXNzTmFtZSA9ICJ0b29sYmFyIjsKK1dlYklu
c3BlY3Rvci5Ub29sYmFyLkNvbnRyb2xTZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiY29udHJvbC1z
ZWN0aW9uIjsKK1dlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUg
PSAiaXRlbS1zZWN0aW9uIjsKK1dlYkluc3BlY3Rvci5Ub29sYmFyLkxlZnRJdGVtU2VjdGlvblN0
eWxlQ2xhc3NOYW1lID0gImxlZnQiOworV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVySXRlbVNl
Y3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJjZW50ZXIiOworV2ViSW5zcGVjdG9yLlRvb2xiYXIuUmln
aHRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gInJpZ2h0IjsKK1dlYkluc3BlY3Rvci5Ub29s
YmFyLlRvdGFsU2VjdGlvbk1hcmdpbnMgPSAxMiAqIDM7CisKK1dlYkluc3BlY3Rvci5Ub29sYmFy
LkV2ZW50ID0geworICAgIERpc3BsYXlNb2RlRGlkQ2hhbmdlOiAidG9vbGJhci1kaXNwbGF5LW1v
ZGUtZGlkLWNoYW5nZSIsCisgICAgU2l6ZU1vZGVEaWRDaGFuZ2U6ICJ0b29sYmFyLXNpemUtbW9k
ZS1kaWQtY2hhbmdlIgorfTsKKworV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbiA9IHsKKyAg
ICBDb250cm9sOiAiY29udHJvbCIsCisgICAgTGVmdDogImxlZnQiLAorICAgIENlbnRlcjogImNl
bnRlciIsCisgICAgUmlnaHQ6ICJyaWdodCIKK307CisKK1dlYkluc3BlY3Rvci5Ub29sYmFyLkRp
c3BsYXlNb2RlID0geworICAgIEljb25BbmRMYWJlbFZlcnRpY2FsOiAiaWNvbi1hbmQtbGFiZWwt
dmVydGljYWwiLAorICAgIEljb25BbmRMYWJlbEhvcml6b250YWw6ICJpY29uLWFuZC1sYWJlbC1o
b3Jpem9udGFsIiwKKyAgICBJY29uT25seTogImljb24tb25seSIsCisgICAgTGFiZWxPbmx5OiAi
bGFiZWwtb25seSIKK307CisKK1dlYkluc3BlY3Rvci5Ub29sYmFyLlNpemVNb2RlID0geworICAg
IE5vcm1hbDogIm5vcm1hbC1zaXplIiwKKyAgICBTbWFsbDogInNtYWxsLXNpemUiCit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZUVs
ZW1lbnRTdGF0dXNCdXR0b24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5qcwppbmRleCA1NmMxNDRjLi4yZWUzYWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
cmVlRWxlbWVudFN0YXR1c0J1dHRvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UcmVlRWxlbWVudFN0YXR1c0J1dHRvbi5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDggKzIzLDQw
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uID0gZnVuY3Rpb24oZWxlbWVudCkgewotICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
K1dlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1c0J1dHRvbiA9IGNsYXNzIFRyZWVFbGVtZW50
U3RhdHVzQnV0dG9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVj
dG9yKGVsZW1lbnQpCisgICAgeworICAgICAgICBzdXBlcigpOwogCiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50OwotICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0
dXNCdXR0b24uU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5hZGQoInN0YXR1cy1idXR0b24iKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuX2NsaWNrZWQuYmluZCh0aGlzKSk7Ci19OwotCi1XZWJJbnNw
ZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uU3R5bGVDbGFzc05hbWUgPSAic3RhdHVzLWJ1
dHRvbiI7Ci1XZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0dXNCdXR0b24uRGlzYWJsZWRTdHls
ZUNsYXNzTmFtZSA9ICJkaXNhYmxlZCI7Ci0KLVdlYkluc3BlY3Rvci5UcmVlRWxlbWVudFN0YXR1
c0J1dHRvbi5FdmVudCA9IHsKLSAgICBDbGlja2VkOiAic3RhdHVzLWJ1dHRvbi1jbGlja2VkIgot
fTsKLQotV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLAor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGlkZGVu
KCkKICAgICB7CiAgICAgICAgIHJldHVybiAhdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFp
bnMoV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLkRpc2FibGVkU3R5bGVDbGFz
c05hbWUpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGhpZGRlbihmbGFnKQogICAgIHsKICAg
ICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJoaWRkZW4iLCBmbGFnKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIGdldCBlbmFibGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiAh
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50
U3RhdHVzQnV0dG9uLkRpc2FibGVkU3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCiAg
ICAgc2V0IGVuYWJsZWQoZmxhZykKICAgICB7CkBAIC03MiwxMSArNjQsMTEgQEAgV2ViSW5zcGVj
dG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRTdGF0
dXNCdXR0b24uRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRT
dGF0dXNCdXR0b24uRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICAvLyBQcml2YXRlCiAKLSAgICBfY2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NsaWNr
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuZW5hYmxlZCkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTg3LDQgKzc5LDggQEAgV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVz
QnV0dG9uLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuVHJlZUVsZW1l
bnRTdGF0dXNCdXR0b24ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3Qu
cHJvdG90eXBlOworV2ViSW5zcGVjdG9yLlRyZWVFbGVtZW50U3RhdHVzQnV0dG9uLkRpc2FibGVk
U3R5bGVDbGFzc05hbWUgPSAiZGlzYWJsZWQiOworCitXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnRT
dGF0dXNCdXR0b24uRXZlbnQgPSB7CisgICAgQ2xpY2tlZDogInN0YXR1cy1idXR0b24tY2xpY2tl
ZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IDI3Y2IwNTguLjdjMzcxMjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRs
aW5lLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMyBB
cHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDEwICsyNiwxMSBAQAogICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1mdW5jdGlvbiBUcmVlT3V0bGluZShsaXN0Tm9kZSkKK1dlYkluc3BlY3Rvci5UcmVlT3V0bGlu
ZSA9IGNsYXNzIFRyZWVPdXRsaW5lIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKKyAgICBjb25zdHJ1Y3RvcihsaXN0Tm9kZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAK
ICAgICAgICAgdGhpcy5lbGVtZW50ID0gbGlzdE5vZGU7CiAKQEAgLTUxLDEwICs1Miw5IEBAIGZ1
bmN0aW9uIFRyZWVPdXRsaW5lKGxpc3ROb2RlKQogICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3RO
b2RlLmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl90cmVlS2V5RG93bi5iaW5kKHRo
aXMpLCB0cnVlKTsKICAgICB9CiAKLVRyZWVPdXRsaW5lLl9rbm93blRyZWVFbGVtZW50TmV4dElk
ZW50aWZpZXIgPSAxOwotVHJlZU91dGxpbmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVHJlZU91
dGxpbmU7CisgICAgLy8gTWV0aG9kcwogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuYXBwZW5kQ2hp
bGQgPSBmdW5jdGlvbihjaGlsZCkKKyAgICBhcHBlbmRDaGlsZChjaGlsZCkKICAgICB7CiAgICAg
ICAgIGlmICghY2hpbGQpCiAgICAgICAgICAgICB0aHJvdyAiY2hpbGQgY2FuJ3QgYmUgdW5kZWZp
bmVkIG9yIG51bGwiOwpAQCAtOTQsOSArOTQsOSBAQCBUcmVlT3V0bGluZS5wcm90b3R5cGUuYXBw
ZW5kQ2hpbGQgPSBmdW5jdGlvbihjaGlsZCkKIAogICAgICAgICBpZiAoaXNGaXJzdENoaWxkICYm
IHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOwotfTsKKyAgICB9CiAK
LVRyZWVPdXRsaW5lLnByb3RvdHlwZS5pbnNlcnRDaGlsZCA9IGZ1bmN0aW9uKGNoaWxkLCBpbmRl
eCkKKyAgICBpbnNlcnRDaGlsZChjaGlsZCwgaW5kZXgpCiAgICAgewogICAgICAgICBpZiAoIWNo
aWxkKQogICAgICAgICAgICAgdGhyb3cgImNoaWxkIGNhbid0IGJlIHVuZGVmaW5lZCBvciBudWxs
IjsKQEAgLTE0Myw5ICsxNDMsOSBAQCBUcmVlT3V0bGluZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQg
PSBmdW5jdGlvbihjaGlsZCwgaW5kZXgpCiAKICAgICAgICAgaWYgKGlzRmlyc3RDaGlsZCAmJiB0
aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKLX07CisgICAgfQogCi1U
cmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRBdEluZGV4ID0gZnVuY3Rpb24oY2hpbGRJ
bmRleCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNpYmxpbmcpCisgICAgcmVt
b3ZlQ2hpbGRBdEluZGV4KGNoaWxkSW5kZXgsIHN1cHByZXNzT25EZXNlbGVjdCwgc3VwcHJlc3NT
ZWxlY3RTaWJsaW5nKQogICAgIHsKICAgICAgICAgaWYgKGNoaWxkSW5kZXggPCAwIHx8IGNoaWxk
SW5kZXggPj0gdGhpcy5jaGlsZHJlbi5sZW5ndGgpCiAgICAgICAgICAgICB0aHJvdyAiY2hpbGRJ
bmRleCBvdXQgb2YgcmFuZ2UiOwpAQCAtMTgxLDkgKzE4MSw5IEBAIFRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5yZW1vdmVDaGlsZEF0SW5kZXggPSBmdW5jdGlvbihjaGlsZEluZGV4LCBzdXBwcmVzc09u
RGVzZWxlCiAKICAgICAgICAgaWYgKHRoaXMudHJlZU91dGxpbmUgJiYgdGhpcy50cmVlT3V0bGlu
ZS5vbnJlbW92ZSkKICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUub25yZW1vdmUoY2hpbGQp
OwotfTsKKyAgICB9CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZCA9IGZ1bmN0
aW9uKGNoaWxkLCBzdXBwcmVzc09uRGVzZWxlY3QsIHN1cHByZXNzU2VsZWN0U2libGluZykKKyAg
ICByZW1vdmVDaGlsZChjaGlsZCwgc3VwcHJlc3NPbkRlc2VsZWN0LCBzdXBwcmVzc1NlbGVjdFNp
YmxpbmcpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxkKQogICAgICAgICAgICAgdGhyb3cgImNo
aWxkIGNhbid0IGJlIHVuZGVmaW5lZCBvciBudWxsIjsKQEAgLTE5OCw5ICsxOTgsOSBAQCBUcmVl
T3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQgPSBmdW5jdGlvbihjaGlsZCwgc3VwcHJlc3NP
bkRlc2VsZWN0LCBzdXBwcmVzcwogICAgICAgICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNz
TGlzdC5yZW1vdmUoInBhcmVudCIpOwogICAgICAgICAgICAgdGhpcy5oYXNDaGlsZHJlbiA9IGZh
bHNlOwogICAgICAgICB9Ci19OworICAgIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBlLnJlbW92
ZUNoaWxkcmVuID0gZnVuY3Rpb24oc3VwcHJlc3NPbkRlc2VsZWN0KQorICAgIHJlbW92ZUNoaWxk
cmVuKHN1cHByZXNzT25EZXNlbGVjdCkKICAgICB7CiAgICAgICAgIHZhciB0cmVlT3V0bGluZSA9
IHRoaXMudHJlZU91dGxpbmU7CiAKQEAgLTIyNCw5ICsyMjQsOSBAQCBUcmVlT3V0bGluZS5wcm90
b3R5cGUucmVtb3ZlQ2hpbGRyZW4gPSBmdW5jdGlvbihzdXBwcmVzc09uRGVzZWxlY3QpCiAgICAg
ICAgIH0KIAogICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107Ci19OworICAgIH0KIAotVHJlZU91
dGxpbmUucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlID0gZnVuY3Rpb24oc3VwcHJl
c3NPbkRlc2VsZWN0KQorICAgIHJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlKHN1cHByZXNzT25EZXNl
bGVjdCkKICAgICB7CiAgICAgICAgIHZhciBjaGlsZHJlblRvUmVtb3ZlID0gdGhpcy5jaGlsZHJl
bjsKIApAQCAtMjU4LDkgKzI1OCw5IEBAIFRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGls
ZHJlblJlY3Vyc2l2ZSA9IGZ1bmN0aW9uKHN1cHByZXNzT25EZXNlbGVjdCkKICAgICAgICAgfQog
CiAgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLX07CisgICAgfQogCi1UcmVlT3V0bGluZS5w
cm90b3R5cGUuX3JlbWVtYmVyVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50KQorICAgIF9y
ZW1lbWJlclRyZWVFbGVtZW50KGVsZW1lbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2tu
b3duVHJlZUVsZW1lbnRzW2VsZW1lbnQuaWRlbnRpZmllcl0pCiAgICAgICAgICAgICB0aGlzLl9r
bm93blRyZWVFbGVtZW50c1tlbGVtZW50LmlkZW50aWZpZXJdID0gW107CkBAIC0yNzIsMjYgKzI3
MiwyNiBAQCBUcmVlT3V0bGluZS5wcm90b3R5cGUuX3JlbWVtYmVyVHJlZUVsZW1lbnQgPSBmdW5j
dGlvbihlbGVtZW50KQogCiAgICAgICAgIC8vIGFkZCB0aGUgZWxlbWVudAogICAgICAgICBlbGVt
ZW50cy5wdXNoKGVsZW1lbnQpOwotfTsKKyAgICB9CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5f
Zm9yZ2V0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihlbGVtZW50KQorICAgIF9mb3JnZXRUcmVlRWxl
bWVudChlbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVu
dCA9PT0gZWxlbWVudCkKICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRUcmVlRWxlbWVudCA9IG51
bGw7CiAgICAgICAgIGlmICh0aGlzLl9rbm93blRyZWVFbGVtZW50c1tlbGVtZW50LmlkZW50aWZp
ZXJdKQogICAgICAgICAgICAgdGhpcy5fa25vd25UcmVlRWxlbWVudHNbZWxlbWVudC5pZGVudGlm
aWVyXS5yZW1vdmUoZWxlbWVudCwgdHJ1ZSk7Ci19OworICAgIH0KIAotVHJlZU91dGxpbmUucHJv
dG90eXBlLl9mb3JnZXRDaGlsZHJlblJlY3Vyc2l2ZSA9IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQp
CisgICAgX2ZvcmdldENoaWxkcmVuUmVjdXJzaXZlKHBhcmVudEVsZW1lbnQpCiAgICAgewogICAg
ICAgICB2YXIgY2hpbGQgPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuWzBdOwogICAgICAgICB3aGls
ZSAoY2hpbGQpIHsKICAgICAgICAgICAgIHRoaXMuX2ZvcmdldFRyZWVFbGVtZW50KGNoaWxkKTsK
ICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQudHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQoZmFsc2Us
IHBhcmVudEVsZW1lbnQsIHRydWUpOwogICAgICAgICB9Ci19OworICAgIH0KIAotVHJlZU91dGxp
bmUucHJvdG90eXBlLmdldENhY2hlZFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRP
YmplY3QpCisgICAgZ2V0Q2FjaGVkVHJlZUVsZW1lbnQocmVwcmVzZW50ZWRPYmplY3QpCiAgICAg
ewogICAgICAgICBpZiAoIXJlcHJlc2VudGVkT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIG51
bGw7CkBAIC0zMDcsOSArMzA3LDkgQEAgVHJlZU91dGxpbmUucHJvdG90eXBlLmdldENhY2hlZFRy
ZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIG51bGw7Ci19OworICAgIH0KIAotVHJlZU91dGxpbmUu
cHJvdG90eXBlLmZpbmRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHJlcHJlc2VudGVkT2JqZWN0LCBp
c0FuY2VzdG9yLCBnZXRQYXJlbnQpCisgICAgZmluZFRyZWVFbGVtZW50KHJlcHJlc2VudGVkT2Jq
ZWN0LCBpc0FuY2VzdG9yLCBnZXRQYXJlbnQpCiAgICAgewogICAgICAgICBpZiAoIXJlcHJlc2Vu
dGVkT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC0zNTksMzUgKzM1OSwzNSBA
QCBUcmVlT3V0bGluZS5wcm90b3R5cGUuZmluZFRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocmVwcmVz
ZW50ZWRPYmplY3QsIGlzQW5jZXN0b3IsCiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdGhp
cy5nZXRDYWNoZWRUcmVlRWxlbWVudChyZXByZXNlbnRlZE9iamVjdCk7Ci19OworICAgIH0KIAot
VHJlZU91dGxpbmUucHJvdG90eXBlLl90cmVlRWxlbWVudERpZENoYW5nZSA9IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50KQorICAgIF90cmVlRWxlbWVudERpZENoYW5nZSh0cmVlRWxlbWVudCkKICAgICB7
CiAgICAgICAgIGlmICh0cmVlRWxlbWVudC50cmVlT3V0bGluZSAhPT0gdGhpcykKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5vbmNoYW5nZSkKICAgICAgICAgICAgIHRo
aXMub25jaGFuZ2UodHJlZUVsZW1lbnQpOwotfTsKKyAgICB9CiAKLVRyZWVPdXRsaW5lLnByb3Rv
dHlwZS50cmVlRWxlbWVudEZyb21Ob2RlID0gZnVuY3Rpb24obm9kZSkKKyAgICB0cmVlRWxlbWVu
dEZyb21Ob2RlKG5vZGUpCiAgICAgewogICAgICAgICB2YXIgbGlzdE5vZGUgPSBub2RlLmVuY2xv
c2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWVJbkFycmF5KFsib2wiLCAibGkiXSk7CiAgICAgICAg
IGlmIChsaXN0Tm9kZSkKICAgICAgICAgICAgIHJldHVybiBsaXN0Tm9kZS5wYXJlbnRUcmVlRWxl
bWVudCB8fCBsaXN0Tm9kZS50cmVlRWxlbWVudDsKICAgICAgICAgcmV0dXJuIG51bGw7Ci19Owor
ICAgIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBlLnRyZWVFbGVtZW50RnJvbVBvaW50ID0gZnVu
Y3Rpb24oeCwgeSkKKyAgICB0cmVlRWxlbWVudEZyb21Qb2ludCh4LCB5KQogICAgIHsKICAgICAg
ICAgdmFyIG5vZGUgPSB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLm93bmVyRG9jdW1lbnQuZWxlbWVu
dEZyb21Qb2ludCh4LCB5KTsKICAgICAgICAgaWYgKCFub2RlKQogICAgICAgICAgICAgcmV0dXJu
IG51bGw7CiAKICAgICAgICAgcmV0dXJuIHRoaXMudHJlZUVsZW1lbnRGcm9tTm9kZShub2RlKTsK
LX07CisgICAgfQogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuX3RyZWVLZXlEb3duID0gZnVuY3Rp
b24oZXZlbnQpCisgICAgX3RyZWVLZXlEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2
ZW50LnRhcmdldCAhPT0gdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTQ2OCw0NCArNDY4LDQ2IEBAIFRyZWVPdXRsaW5lLnByb3RvdHlwZS5fdHJlZUtleURv
d24gPSBmdW5jdGlvbihldmVudCkKICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CiAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgfQotfTsKKyAg
ICB9CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5leHBhbmQgPSBmdW5jdGlvbigpCisgICAgZXhw
YW5kKCkKICAgICB7CiAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKLX07
CisgICAgfQogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUuY29sbGFwc2UgPSBmdW5jdGlvbigpCisg
ICAgY29sbGFwc2UoKQogICAgIHsKICAgICAgICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90
aGluZwotfTsKKyAgICB9CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZXZlYWxlZCA9IGZ1bmN0
aW9uKCkKKyAgICByZXZlYWxlZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKLX07Cisg
ICAgfQogCi1UcmVlT3V0bGluZS5wcm90b3R5cGUucmV2ZWFsID0gZnVuY3Rpb24oKQorICAgIHJl
dmVhbCgpCiAgICAgewogICAgICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nCi19
OworICAgIH0KIAotVHJlZU91dGxpbmUucHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uKCkKKyAg
ICBzZWxlY3QoKQogICAgIHsKICAgICAgICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGlu
ZwotfTsKKyAgICB9CiAKLVRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZXZlYWxBbmRTZWxlY3QgPSBm
dW5jdGlvbihvbWl0Rm9jdXMpCisgICAgcmV2ZWFsQW5kU2VsZWN0KG9taXRGb2N1cykKICAgICB7
CiAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJvb3QsIGRvIG5vdGhpbmcKKyAgICB9CiB9OwogCi1U
cmVlT3V0bGluZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CitXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUuX2tub3duVHJlZUVsZW1lbnROZXh0SWRl
bnRpZmllciA9IDE7CiAKLWZ1bmN0aW9uIFRyZWVFbGVtZW50KHRpdGxlLCByZXByZXNlbnRlZE9i
amVjdCwgaGFzQ2hpbGRyZW4pCitXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQgPSBjbGFzcyBUcmVl
RWxlbWVudCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKK3sKKyAgICBjb25zdHJ1Y3Rvcih0
aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhhc0NoaWxkcmVuKQogICAgIHsKLSAgICAvLyBGSVhN
RTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNh
bGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAg
ICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5fdGl0bGUgPSB0aXRsZTsKICAgICAgICAgdGhp
cy5yZXByZXNlbnRlZE9iamVjdCA9IChyZXByZXNlbnRlZE9iamVjdCB8fCB7fSk7CkBAIC01MTMs
NyArNTE1LDcgQEAgZnVuY3Rpb24gVHJlZUVsZW1lbnQodGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0
LCBoYXNDaGlsZHJlbikKICAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuX190cmVl
RWxlbWVudElkZW50aWZpZXIpCiAgICAgICAgICAgICB0aGlzLmlkZW50aWZpZXIgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0Ll9fdHJlZUVsZW1lbnRJZGVudGlmaWVyOwogICAgICAgICBlbHNlIHsK
LSAgICAgICAgdGhpcy5pZGVudGlmaWVyID0gVHJlZU91dGxpbmUuX2tub3duVHJlZUVsZW1lbnRO
ZXh0SWRlbnRpZmllcisrOworICAgICAgICAgICAgdGhpcy5pZGVudGlmaWVyID0gV2ViSW5zcGVj
dG9yLlRyZWVPdXRsaW5lLl9rbm93blRyZWVFbGVtZW50TmV4dElkZW50aWZpZXIrKzsKICAgICAg
ICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuX190cmVlRWxlbWVudElkZW50aWZpZXIgPSB0
aGlzLmlkZW50aWZpZXI7CiAgICAgICAgIH0KIApAQCAtNTMwLDY1ICs1MzIsODYgQEAgZnVuY3Rp
b24gVHJlZUVsZW1lbnQodGl0bGUsIHJlcHJlc2VudGVkT2JqZWN0LCBoYXNDaGlsZHJlbikKICAg
ICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlID0gbnVsbDsKICAgICB9CiAKLVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogVHJlZUVsZW1lbnQsCisgICAgLy8gTWV0aG9k
cwogCi0gICAgYXJyb3dUb2dnbGVXaWR0aDogMTAsCisgICAgYXBwZW5kQ2hpbGQoKSB7IHJldHVy
biBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUucHJvdG90eXBlLmFwcGVuZENoaWxkLmFwcGx5KHRo
aXMsIGFyZ3VtZW50cyk7IH0KKyAgICBpbnNlcnRDaGlsZCgpIHsgcmV0dXJuIFdlYkluc3BlY3Rv
ci5UcmVlT3V0bGluZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQuYXBwbHkodGhpcywgYXJndW1lbnRz
KTsgfQorICAgIHJlbW92ZUNoaWxkKCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5l
LnByb3RvdHlwZS5yZW1vdmVDaGlsZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9CisgICAgcmVt
b3ZlQ2hpbGRBdEluZGV4KCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lLnByb3Rv
dHlwZS5yZW1vdmVDaGlsZEF0SW5kZXguYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfQorICAgIHJl
bW92ZUNoaWxkcmVuKCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lLnByb3RvdHlw
ZS5yZW1vdmVDaGlsZHJlbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9CisgICAgcmVtb3ZlQ2hp
bGRyZW5SZWN1cnNpdmUoKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUucHJvdG90
eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KIAot
ICAgIGdldCBzZWxlY3RhYmxlKCkgeworICAgIGdldCBhcnJvd1RvZ2dsZVdpZHRoKCkKKyAgICB7
CisgICAgICAgIHJldHVybiAxMDsKKyAgICB9CisKKyAgICBnZXQgc2VsZWN0YWJsZSgpCisgICAg
ewogICAgICAgICBpZiAodGhpcy5faGlkZGVuKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0YWJsZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNl
dCBzZWxlY3RhYmxlKHgpIHsKKyAgICBzZXQgc2VsZWN0YWJsZSh4KQorICAgIHsKICAgICAgICAg
dGhpcy5fc2VsZWN0YWJsZSA9IHg7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXQgbGlzdEl0ZW1F
bGVtZW50KCkgeworICAgIGdldCBsaXN0SXRlbUVsZW1lbnQoKQorICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2xpc3RJdGVtTm9kZTsKLSAgICB9LAorICAgIH0KIAotICAgIGdldCBjaGlsZHJl
bkxpc3RFbGVtZW50KCkgeworICAgIGdldCBjaGlsZHJlbkxpc3RFbGVtZW50KCkKKyAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlOwotICAgIH0sCisgICAgfQogCi0g
ICAgZ2V0IHRpdGxlKCkgeworICAgIGdldCB0aXRsZSgpCisgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fdGl0bGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXQgdGl0bGUoeCkgeworICAgIHNl
dCB0aXRsZSh4KQorICAgIHsKICAgICAgICAgdGhpcy5fdGl0bGUgPSB4OwogICAgICAgICB0aGlz
Ll9zZXRMaXN0SXRlbU5vZGVDb250ZW50KCk7CiAgICAgICAgIHRoaXMuZGlkQ2hhbmdlKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBnZXQgdGl0bGVIVE1MKCkgeworICAgIGdldCB0aXRsZUhUTUwo
KQorICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlSFRNTDsKLSAgICB9LAorICAgIH0K
IAotICAgIHNldCB0aXRsZUhUTUwoeCkgeworICAgIHNldCB0aXRsZUhUTUwoeCkKKyAgICB7CiAg
ICAgICAgIHRoaXMuX3RpdGxlSFRNTCA9IHg7CiAgICAgICAgIHRoaXMuX3NldExpc3RJdGVtTm9k
ZUNvbnRlbnQoKTsKICAgICAgICAgdGhpcy5kaWRDaGFuZ2UoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGdldCB0b29sdGlwKCkgeworICAgIGdldCB0b29sdGlwKCkKKyAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl90b29sdGlwOwotICAgIH0sCisgICAgfQogCi0gICAgc2V0IHRvb2x0aXAoeCkg
eworICAgIHNldCB0b29sdGlwKHgpCisgICAgewogICAgICAgICB0aGlzLl90b29sdGlwID0geDsK
ICAgICAgICAgaWYgKHRoaXMuX2xpc3RJdGVtTm9kZSkKICAgICAgICAgICAgIHRoaXMuX2xpc3RJ
dGVtTm9kZS50aXRsZSA9IHggPyB4IDogIiI7CiAgICAgICAgIHRoaXMuZGlkQ2hhbmdlKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBnZXQgaGFzQ2hpbGRyZW4oKSB7CisgICAgZ2V0IGhhc0NoaWxk
cmVuKCkKKyAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9oYXNDaGlsZHJlbjsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNldCBoYXNDaGlsZHJlbih4KSB7CisgICAgc2V0IGhhc0NoaWxkcmVuKHgp
CisgICAgewogICAgICAgICBpZiAodGhpcy5faGFzQ2hpbGRyZW4gPT09IHgpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTYwNSwxMyArNjI4LDE1IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZSA9
IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuZGlkQ2hhbmdlKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBnZXQgaGlkZGVuKCkgeworICAgIGdldCBoaWRkZW4oKQorICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2hpZGRlbjsKLSAgICB9LAorICAgIH0KIAotICAgIHNldCBoaWRkZW4oeCkg
eworICAgIHNldCBoaWRkZW4oeCkKKyAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oaWRkZW4gPT09
IHgpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTYzMSwyNyArNjU2LDI5IEBAIFRyZWVFbGVt
ZW50LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSAmJiB0aGlz
LnRyZWVPdXRsaW5lLm9uaGlkZGVuKQogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vbmhp
ZGRlbih0aGlzLCB4KTsKLSAgICB9LAorICAgIH0KIAotICAgIGdldCBzaG91bGRSZWZyZXNoQ2hp
bGRyZW4oKSB7CisgICAgZ2V0IHNob3VsZFJlZnJlc2hDaGlsZHJlbigpCisgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fc2hvdWxkUmVmcmVzaENoaWxkcmVuOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2V0IHNob3VsZFJlZnJlc2hDaGlsZHJlbih4KSB7CisgICAgc2V0IHNob3VsZFJlZnJlc2hD
aGlsZHJlbih4KQorICAgIHsKICAgICAgICAgdGhpcy5fc2hvdWxkUmVmcmVzaENoaWxkcmVuID0g
eDsKICAgICAgICAgaWYgKHggJiYgdGhpcy5leHBhbmRlZCkKICAgICAgICAgICAgIHRoaXMuZXhw
YW5kKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZmlyZURpZENoYW5nZTogZnVuY3Rpb24oKQor
ICAgIF9maXJlRGlkQ2hhbmdlKCkKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9kaWRDaGFu
Z2VUaW1lb3V0SWRlbnRpZmllcjsKIAogICAgICAgICBpZiAodGhpcy50cmVlT3V0bGluZSkKICAg
ICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuX3RyZWVFbGVtZW50RGlkQ2hhbmdlKHRoaXMpOwot
ICAgIH0sCisgICAgfQogCi0gICAgZGlkQ2hhbmdlOiBmdW5jdGlvbigpCisgICAgZGlkQ2hhbmdl
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy50cmVlT3V0bGluZSkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTY1OSw5ICs2ODYsOSBAQCBUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIC8vIFByZXZlbnQgdGVsbGluZyB0aGUgVHJlZU91dGxpbmUgbXVsdGlwbGUgdGltZXMgaW4g
YSByb3cgYnkgZGVsYXlpbmcgaXQgd2l0aCBhIHRpbWVvdXQuCiAgICAgICAgIGlmICghdGhpcy5f
ZGlkQ2hhbmdlVGltZW91dElkZW50aWZpZXIpCiAgICAgICAgICAgICB0aGlzLl9kaWRDaGFuZ2VU
aW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQodGhpcy5fZmlyZURpZENoYW5nZS5iaW5kKHRo
aXMpLCAwKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZXRMaXN0SXRlbU5vZGVDb250ZW50OiBm
dW5jdGlvbigpCisgICAgX3NldExpc3RJdGVtTm9kZUNvbnRlbnQoKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9saXN0SXRlbU5vZGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02NzksMTYg
KzcwNiw4IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2xp
c3RJdGVtTm9kZS5hcHBlbmRDaGlsZCh0aGlzLl90aXRsZSk7CiAgICAgICAgIH0KICAgICB9Ci19
OwogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUuYXBwZW5kQ2hpbGQgPSBUcmVlT3V0bGluZS5wcm90
b3R5cGUuYXBwZW5kQ2hpbGQ7Ci1UcmVlRWxlbWVudC5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQgPSBU
cmVlT3V0bGluZS5wcm90b3R5cGUuaW5zZXJ0Q2hpbGQ7Ci1UcmVlRWxlbWVudC5wcm90b3R5cGUu
cmVtb3ZlQ2hpbGQgPSBUcmVlT3V0bGluZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGQ7Ci1UcmVlRWxl
bWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRBdEluZGV4ID0gVHJlZU91dGxpbmUucHJvdG90eXBl
LnJlbW92ZUNoaWxkQXRJbmRleDsKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5yZW1vdmVDaGlsZHJl
biA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbjsKLVRyZWVFbGVtZW50LnBy
b3RvdHlwZS5yZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZSA9IFRyZWVPdXRsaW5lLnByb3RvdHlwZS5y
ZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZTsKLQotVHJlZUVsZW1lbnQucHJvdG90eXBlLl9hdHRhY2gg
PSBmdW5jdGlvbigpCisgICAgX2F0dGFjaCgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2xp
c3RJdGVtTm9kZSB8fCB0aGlzLnBhcmVudC5fc2hvdWxkUmVmcmVzaENoaWxkcmVuKSB7CiAgICAg
ICAgICAgICBpZiAodGhpcy5fbGlzdEl0ZW1Ob2RlICYmIHRoaXMuX2xpc3RJdGVtTm9kZS5wYXJl
bnROb2RlKQpAQCAtNzA4LDkgKzcyNyw5IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZS5fYXR0YWNo
ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpCiAgICAgICAgICAg
ICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik7CiAKLSAg
ICAgICAgdGhpcy5fbGlzdEl0ZW1Ob2RlLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIFRy
ZWVFbGVtZW50LnRyZWVFbGVtZW50TW91c2VEb3duLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2xp
c3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIFRyZWVFbGVtZW50LnRyZWVFbGVt
ZW50VG9nZ2xlZCwgZmFsc2UpOwotICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuYWRkRXZlbnRM
aXN0ZW5lcigiZGJsY2xpY2siLCBUcmVlRWxlbWVudC50cmVlRWxlbWVudERvdWJsZUNsaWNrZWQs
IGZhbHNlKTsKKyAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZWRvd24iLCBXZWJJbnNwZWN0b3IuVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRNb3VzZURv
d24sIGZhbHNlKTsKKyAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudC50cmVlRWxlbWVudFRvZ2dsZWQs
IGZhbHNlKTsKKyAgICAgICAgICAgIHRoaXMuX2xpc3RJdGVtTm9kZS5hZGRFdmVudExpc3RlbmVy
KCJkYmxjbGljayIsIFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudC50cmVlRWxlbWVudERvdWJsZUNs
aWNrZWQsIGZhbHNlKTsKIAogICAgICAgICAgICAgaWYgKHRoaXMub25hdHRhY2gpCiAgICAgICAg
ICAgICAgICAgdGhpcy5vbmF0dGFjaCh0aGlzKTsKQEAgLTcyNiw5ICs3NDUsOSBAQCBUcmVlRWxl
bWVudC5wcm90b3R5cGUuX2F0dGFjaCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHRoaXMuc2Vs
ZWN0KCk7CiAgICAgICAgIGlmICh0aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAgdGhpcy5leHBh
bmQoKTsKLX07CisgICAgfQogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUuX2RldGFjaCA9IGZ1bmN0
aW9uKCkKKyAgICBfZGV0YWNoKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLm9uZGV0YWNoKQog
ICAgICAgICAgICAgdGhpcy5vbmRldGFjaCh0aGlzKTsKQEAgLTczNiw5ICs3NTUsOSBAQCBUcmVl
RWxlbWVudC5wcm90b3R5cGUuX2RldGFjaCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHRoaXMu
X2xpc3RJdGVtTm9kZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX2xpc3RJdGVtTm9kZSk7
CiAgICAgICAgIGlmICh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlICYmIHRoaXMuX2NoaWxkcmVuTGlz
dE5vZGUucGFyZW50Tm9kZSkKICAgICAgICAgICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUucGFy
ZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLl9jaGlsZHJlbkxpc3ROb2RlKTsKLX07CisgICAgfQog
Ci1UcmVlRWxlbWVudC50cmVlRWxlbWVudE1vdXNlRG93biA9IGZ1bmN0aW9uKGV2ZW50KQorICAg
IHN0YXRpYyB0cmVlRWxlbWVudE1vdXNlRG93bihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBl
bGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDsKICAgICAgICAgaWYgKCFlbGVtZW50IHx8ICFl
bGVtZW50LnRyZWVFbGVtZW50IHx8ICFlbGVtZW50LnRyZWVFbGVtZW50LnNlbGVjdGFibGUpCkBA
IC03NTAsOSArNzY5LDkgQEAgVHJlZUVsZW1lbnQudHJlZUVsZW1lbnRNb3VzZURvd24gPSBmdW5j
dGlvbihldmVudCkKICAgICAgICAgfQogCiAgICAgICAgIGVsZW1lbnQudHJlZUVsZW1lbnQuc2Vs
ZWN0T25Nb3VzZURvd24oZXZlbnQpOwotfTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnRyZWVFbGVt
ZW50VG9nZ2xlZCA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHN0YXRpYyB0cmVlRWxlbWVudFRvZ2ds
ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJn
ZXQ7CiAgICAgICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC50cmVlRWxlbWVudCkKQEAgLTc3
NSw5ICs3OTQsOSBAQCBUcmVlRWxlbWVudC50cmVlRWxlbWVudFRvZ2dsZWQgPSBmdW5jdGlvbihl
dmVudCkKICAgICAgICAgICAgICAgICBlbGVtZW50LnRyZWVFbGVtZW50LmV4cGFuZCgpOwogICAg
ICAgICB9CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotfTsKKyAgICB9CiAKLVRy
ZWVFbGVtZW50LnRyZWVFbGVtZW50RG91YmxlQ2xpY2tlZCA9IGZ1bmN0aW9uKGV2ZW50KQorICAg
IHN0YXRpYyB0cmVlRWxlbWVudERvdWJsZUNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2
YXIgZWxlbWVudCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7CiAgICAgICAgIGlmICghZWxlbWVudCB8
fCAhZWxlbWVudC50cmVlRWxlbWVudCkKQEAgLTc5MCw5ICs4MDksOSBAQCBUcmVlRWxlbWVudC50
cmVlRWxlbWVudERvdWJsZUNsaWNrZWQgPSBmdW5jdGlvbihldmVudCkKICAgICAgICAgICAgIGVs
ZW1lbnQudHJlZUVsZW1lbnQub25kYmxjbGljay5jYWxsKGVsZW1lbnQudHJlZUVsZW1lbnQsIGV2
ZW50KTsKICAgICAgICAgZWxzZSBpZiAoZWxlbWVudC50cmVlRWxlbWVudC5oYXNDaGlsZHJlbiAm
JiAhZWxlbWVudC50cmVlRWxlbWVudC5leHBhbmRlZCkKICAgICAgICAgICAgIGVsZW1lbnQudHJl
ZUVsZW1lbnQuZXhwYW5kKCk7Ci19OworICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLmNv
bGxhcHNlID0gZnVuY3Rpb24oKQorICAgIGNvbGxhcHNlKCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLl9saXN0SXRlbU5vZGUpCiAgICAgICAgICAgICB0aGlzLl9saXN0SXRlbU5vZGUuY2xhc3NM
aXN0LnJlbW92ZSgiZXhwYW5kZWQiKTsKQEAgLTgwOCw5ICs4MjcsOSBAQCBUcmVlRWxlbWVudC5w
cm90b3R5cGUuY29sbGFwc2UgPSBmdW5jdGlvbigpCiAKICAgICAgICAgaWYgKHRoaXMudHJlZU91
dGxpbmUgJiYgdGhpcy50cmVlT3V0bGluZS5vbmNvbGxhcHNlKQogICAgICAgICAgICAgdGhpcy50
cmVlT3V0bGluZS5vbmNvbGxhcHNlKHRoaXMpOwotfTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnBy
b3RvdHlwZS5jb2xsYXBzZVJlY3Vyc2l2ZWx5ID0gZnVuY3Rpb24oKQorICAgIGNvbGxhcHNlUmVj
dXJzaXZlbHkoKQogICAgIHsKICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzOwogICAgICAgICB3aGls
ZSAoaXRlbSkgewpAQCAtODE4LDkgKzgzNyw5IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZS5jb2xs
YXBzZVJlY3Vyc2l2ZWx5ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAgICAgIGl0ZW0uY29sbGFw
c2UoKTsKICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZh
bHNlLCB0aGlzLCB0cnVlKTsKICAgICAgICAgfQotfTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnBy
b3RvdHlwZS5leHBhbmQgPSBmdW5jdGlvbigpCisgICAgZXhwYW5kKCkKICAgICB7CiAgICAgICAg
IGlmICh0aGlzLmV4cGFuZGVkICYmICF0aGlzLl9zaG91bGRSZWZyZXNoQ2hpbGRyZW4gJiYgdGhp
cy5fY2hpbGRyZW5MaXN0Tm9kZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTg3MCw5ICs4ODks
OSBAQCBUcmVlRWxlbWVudC5wcm90b3R5cGUuZXhwYW5kID0gZnVuY3Rpb24oKQogCiAgICAgICAg
IGlmICh0aGlzLnRyZWVPdXRsaW5lICYmIHRoaXMudHJlZU91dGxpbmUub25leHBhbmQpCiAgICAg
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uZXhwYW5kKHRoaXMpOwotfTsKKyAgICB9CiAKLVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5leHBhbmRSZWN1cnNpdmVseSA9IGZ1bmN0aW9uKG1heERlcHRo
KQorICAgIGV4cGFuZFJlY3Vyc2l2ZWx5KG1heERlcHRoKQogICAgIHsKICAgICAgICAgdmFyIGl0
ZW0gPSB0aGlzOwogICAgICAgICB2YXIgaW5mbyA9IHt9OwpAQCAtODkwLDkgKzkwOSwxMCBAQCBU
cmVlRWxlbWVudC5wcm90b3R5cGUuZXhwYW5kUmVjdXJzaXZlbHkgPSBmdW5jdGlvbihtYXhEZXB0
aCkKICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNl
LCB0aGlzLCAoZGVwdGggPj0gbWF4RGVwdGgpLCBpbmZvKTsKICAgICAgICAgICAgIGRlcHRoICs9
IGluZm8uZGVwdGhDaGFuZ2U7CiAgICAgICAgIH0KLX07CisgICAgfQogCi1UcmVlRWxlbWVudC5w
cm90b3R5cGUuaGFzQW5jZXN0b3IgPSBmdW5jdGlvbihhbmNlc3RvcikgeworICAgIGhhc0FuY2Vz
dG9yKGFuY2VzdG9yKQorICAgICAgICB7CiAgICAgICAgIGlmICghYW5jZXN0b3IpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTkwNCw5ICs5MjQsOSBAQCBUcmVlRWxlbWVudC5wcm90
b3R5cGUuaGFzQW5jZXN0b3IgPSBmdW5jdGlvbihhbmNlc3RvcikgewogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotfTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5y
ZXZlYWwgPSBmdW5jdGlvbigpCisgICAgcmV2ZWFsKCkKICAgICB7CiAgICAgICAgIHZhciBjdXJy
ZW50QW5jZXN0b3IgPSB0aGlzLnBhcmVudDsKICAgICAgICAgd2hpbGUgKGN1cnJlbnRBbmNlc3Rv
ciAmJiAhY3VycmVudEFuY2VzdG9yLnJvb3QpIHsKQEAgLTkxNyw5ICs5MzcsOSBAQCBUcmVlRWxl
bWVudC5wcm90b3R5cGUucmV2ZWFsID0gZnVuY3Rpb24oKQogCiAgICAgICAgIGlmICh0aGlzLm9u
cmV2ZWFsKQogICAgICAgICAgICAgdGhpcy5vbnJldmVhbCh0aGlzKTsKLX07CisgICAgfQogCi1U
cmVlRWxlbWVudC5wcm90b3R5cGUucmV2ZWFsZWQgPSBmdW5jdGlvbigpCisgICAgcmV2ZWFsZWQo
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuaGlkZGVuKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtOTM0LDE0ICs5NTQsMTQgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlLnJldmVhbGVk
ID0gZnVuY3Rpb24oKQogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci19OworICAg
IH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdE9uTW91c2VEb3duID0gZnVuY3Rpb24o
ZXZlbnQpCisgICAgc2VsZWN0T25Nb3VzZURvd24oZXZlbnQpCiAgICAgewogICAgICAgICB0aGlz
LnNlbGVjdChmYWxzZSwgdHJ1ZSk7Ci19OworICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBl
LnNlbGVjdCA9IGZ1bmN0aW9uKG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIsIHN1cHByZXNzT25T
ZWxlY3QsIHN1cHByZXNzT25EZXNlbGVjdCkKKyAgICBzZWxlY3Qob21pdEZvY3VzLCBzZWxlY3Rl
ZEJ5VXNlciwgc3VwcHJlc3NPblNlbGVjdCwgc3VwcHJlc3NPbkRlc2VsZWN0KQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLnRyZWVPdXRsaW5lIHx8ICF0aGlzLnNlbGVjdGFibGUpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC05NzYsMTUgKzk5NiwxNSBAQCBUcmVlRWxlbWVudC5wcm90b3R5cGUu
c2VsZWN0ID0gZnVuY3Rpb24ob21pdEZvY3VzLCBzZWxlY3RlZEJ5VXNlciwgc3VwcHJlc3NPblNl
bAogICAgICAgICAgICAgdGhpcy50cmVlT3V0bGluZS5vbnNlbGVjdCh0aGlzLCBzZWxlY3RlZEJ5
VXNlcik7CiAKICAgICAgICAgZGVsZXRlIHRoaXMudHJlZU91dGxpbmUucHJvY2Vzc2luZ1NlbGVj
dGlvbkNoYW5nZTsKLX07CisgICAgfQogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUucmV2ZWFsQW5k
U2VsZWN0ID0gZnVuY3Rpb24ob21pdEZvY3VzLCBzZWxlY3RlZEJ5VXNlciwgc3VwcHJlc3NPblNl
bGVjdCwgc3VwcHJlc3NPbkRlc2VsZWN0KQorICAgIHJldmVhbEFuZFNlbGVjdChvbWl0Rm9jdXMs
IHNlbGVjdGVkQnlVc2VyLCBzdXBwcmVzc09uU2VsZWN0LCBzdXBwcmVzc09uRGVzZWxlY3QpCiAg
ICAgewogICAgICAgICB0aGlzLnJldmVhbCgpOwogICAgICAgICB0aGlzLnNlbGVjdChvbWl0Rm9j
dXMsIHNlbGVjdGVkQnlVc2VyLCBzdXBwcmVzc09uU2VsZWN0LCBzdXBwcmVzc09uRGVzZWxlY3Qp
OwotfTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5kZXNlbGVjdCA9IGZ1bmN0aW9u
KHN1cHByZXNzT25EZXNlbGVjdCkKKyAgICBkZXNlbGVjdChzdXBwcmVzc09uRGVzZWxlY3QpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMudHJlZU91dGxpbmUgfHwgdGhpcy50cmVlT3V0bGluZS5z
ZWxlY3RlZFRyZWVFbGVtZW50ICE9PSB0aGlzIHx8ICF0aGlzLnNlbGVjdGVkKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTAwMiwxNCArMTAyMiwxNCBAQCBUcmVlRWxlbWVudC5wcm90
b3R5cGUuZGVzZWxlY3QgPSBmdW5jdGlvbihzdXBwcmVzc09uRGVzZWxlY3QpCiAgICAgICAgICAg
ICB0aGlzLnRyZWVPdXRsaW5lLm9uZGVzZWxlY3QodGhpcyk7CiAKICAgICAgICAgcmV0dXJuIHRy
dWU7Ci19OworICAgIH0KIAotVHJlZUVsZW1lbnQucHJvdG90eXBlLm9ucG9wdWxhdGUgPSBmdW5j
dGlvbigpCisgICAgb25wb3B1bGF0ZSgpCiAgICAgewogICAgICAgICAvLyBPdmVycmlkZW4gYnkg
c3ViY2xhc3Nlcy4KLX07CisgICAgfQogCi1UcmVlRWxlbWVudC5wcm90b3R5cGUudHJhdmVyc2VO
ZXh0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihza2lwVW5yZXZlYWxlZCwgc3RheVdpdGhpbiwgZG9u
dFBvcHVsYXRlLCBpbmZvKQorICAgIHRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KHNraXBVbnJldmVh
bGVkLCBzdGF5V2l0aGluLCBkb250UG9wdWxhdGUsIGluZm8pCiAgICAgewogICAgICAgICBpZiAo
IWRvbnRQb3B1bGF0ZSAmJiB0aGlzLmhhc0NoaWxkcmVuKQogICAgICAgICAgICAgdGhpcy5vbnBv
cHVsYXRlLmNhbGwodGhpcyk7IC8vIEZJWE1FOiBUaGlzIHNob3VsZG4ndCBuZWVkIHRvIHVzZSBj
YWxsLCBidXQgdGhpcyBpcyB3b3JraW5nIGFyb3VuZCBhIEpTQyBidWcuIGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzc0ODExCkBAIC0xMDQyLDkgKzEwNjIsOSBAQCBUcmVlRWxlbWVudC5wcm90b3R5cGUu
dHJhdmVyc2VOZXh0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihza2lwVW5yZXZlYWxlZCwgc3RheVdp
dAogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIChza2lwVW5yZXZl
YWxlZCA/IChlbGVtZW50LnJldmVhbGVkKCkgPyBlbGVtZW50Lm5leHRTaWJsaW5nIDogbnVsbCkg
OiBlbGVtZW50Lm5leHRTaWJsaW5nKTsKLX07CisgICAgfQogCi1UcmVlRWxlbWVudC5wcm90b3R5
cGUudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50ID0gZnVuY3Rpb24oc2tpcFVucmV2ZWFsZWQs
IGRvbnRQb3B1bGF0ZSkKKyAgICB0cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQoc2tpcFVucmV2
ZWFsZWQsIGRvbnRQb3B1bGF0ZSkKICAgICB7CiAgICAgICAgIHZhciBlbGVtZW50ID0gc2tpcFVu
cmV2ZWFsZWQgPyAodGhpcy5yZXZlYWxlZCgpID8gdGhpcy5wcmV2aW91c1NpYmxpbmcgOiBudWxs
KSA6IHRoaXMucHJldmlvdXNTaWJsaW5nOwogICAgICAgICBpZiAoIWRvbnRQb3B1bGF0ZSAmJiBl
bGVtZW50ICYmIGVsZW1lbnQuaGFzQ2hpbGRyZW4pCkBAIC0xMDYzLDkgKzEwODMsOSBAQCBUcmVl
RWxlbWVudC5wcm90b3R5cGUudHJhdmVyc2VQcmV2aW91c1RyZWVFbGVtZW50ID0gZnVuY3Rpb24o
c2tpcFVucmV2ZWFsZWQsIGRvbgogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAg
cmV0dXJuIHRoaXMucGFyZW50OwotfTsKKyAgICB9CiAKLVRyZWVFbGVtZW50LnByb3RvdHlwZS5p
c0V2ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlID0gZnVuY3Rpb24oZXZlbnQpCisgICAgaXNF
dmVudFdpdGhpbkRpc2Nsb3N1cmVUcmlhbmdsZShldmVudCkKICAgICB7CiAgICAgICAgIGlmICgh
ZG9jdW1lbnQuY29udGFpbnModGhpcy5fbGlzdEl0ZW1Ob2RlKSkKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTEwNzQsNiArMTA5NCw1IEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZS5pc0V2
ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlID0gZnVuY3Rpb24oZXZlbnQpCiAgICAgICAgIHZh
ciBjb21wdXRlZExlZnRQYWRkaW5nID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUodGhpcy5fbGlz
dEl0ZW1Ob2RlKS5nZXRQcm9wZXJ0eUNTU1ZhbHVlKCJwYWRkaW5nLWxlZnQiKS5nZXRGbG9hdFZh
bHVlKENTU1ByaW1pdGl2ZVZhbHVlLkNTU19QWCk7CiAgICAgICAgIHZhciBsZWZ0ID0gdGhpcy5f
bGlzdEl0ZW1Ob2RlLnRvdGFsT2Zmc2V0TGVmdCArIGNvbXB1dGVkTGVmdFBhZGRpbmc7CiAgICAg
ICAgIHJldHVybiBldmVudC5wYWdlWCA+PSBsZWZ0ICYmIGV2ZW50LnBhZ2VYIDw9IGxlZnQgKyB0
aGlzLmFycm93VG9nZ2xlV2lkdGggJiYgdGhpcy5oYXNDaGlsZHJlbjsKKyAgICB9CiB9OwotCi1U
cmVlRWxlbWVudC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90
b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXpl
ci5qcwppbmRleCBhZTlmODQ0Li43NzQzNGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVP
dXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDEwICsyMywxMSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UcmVlT3V0bGlu
ZURhdGFHcmlkU3luY2hyb25pemVyID0gZnVuY3Rpb24odHJlZU91dGxpbmUsIGRhdGFHcmlkLCBk
ZWxlZ2F0ZSkKK1dlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyID0g
Y2xhc3MgVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplciBleHRlbmRzIFdlYkluc3BlY3Rv
ci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7CisgICAgY29uc3RydWN0b3IodHJlZU91dGxpbmUsIGRhdGFHcmlk
LCBkZWxlZ2F0ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKICAgICAgICAgdGhpcy5fdHJl
ZU91dGxpbmUgPSB0cmVlT3V0bGluZTsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQgPSBkYXRhR3Jp
ZDsKQEAgLTg1LDYzICs4Niw1OSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5
bmNocm9uaXplciA9IGZ1bmN0aW9uKHRyZWVPdXRsaW5lLCBkYXRhR3JpZCwgZAogICAgICAgICAg
ICAgaWYgKGV4aXN0aW5nT25TZWxlY3QpCiAgICAgICAgICAgICAgICAgZXhpc3RpbmdPblNlbGVj
dC5jYWxsKHRyZWVPdXRsaW5lLCBlbGVtZW50LCBzZWxlY3RlZEJ5VXNlcik7CiAgICAgICAgIH0u
YmluZCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hy
b25pemVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRyZWVP
dXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCB0cmVl
T3V0bGluZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHJlZU91dGxpbmU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgZGF0YUdyaWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2RhdGFHcmlkOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRlbGVnYXRlKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9kZWxlZ2F0ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBlbmFibGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmFibGVkOwotICAgIH0s
CisgICAgfQogCiAgICAgc2V0IGVuYWJsZWQoeCkKICAgICB7CiAgICAgICAgIHRoaXMuX2VuYWJs
ZWQgPSB4IHx8IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgYXNzb2NpYXRlOiBmdW5jdGlv
bih0cmVlRWxlbWVudCwgZGF0YUdyaWROb2RlKQorICAgIGFzc29jaWF0ZSh0cmVlRWxlbWVudCwg
ZGF0YUdyaWROb2RlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHJlZUVsZW1lbnQp
OwogICAgICAgICBjb25zb2xlLmFzc2VydChkYXRhR3JpZE5vZGUpOwogCiAgICAgICAgIHRyZWVF
bGVtZW50Ll9fZGF0YUdyaWROb2RlID0gZGF0YUdyaWROb2RlOwogICAgICAgICBkYXRhR3JpZE5v
ZGUuX190cmVlRWxlbWVudCA9IHRyZWVFbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgc3lu
Y2hyb25pemU6IGZ1bmN0aW9uKCkKKyAgICBzeW5jaHJvbml6ZSgpCiAgICAgewogICAgICAgICB0
aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wID0gdGhpcy5fdHJlZU91dGxp
bmUuZWxlbWVudC5wYXJlbnROb2RlLnNjcm9sbFRvcDsKICAgICAgICAgaWYgKHRoaXMuX3RyZWVP
dXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICB0aGlzLl90cmVlT3V0bGlu
ZS5zZWxlY3RlZFRyZWVFbGVtZW50Ll9fZGF0YUdyaWROb2RlLnNlbGVjdCh0cnVlKTsKICAgICAg
ICAgZWxzZSBpZiAodGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlKQogICAgICAgICAgICAgdGhp
cy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlLmRlc2VsZWN0KHRydWUpOwotICAgIH0sCisgICAgfQog
Ci0gICAgdHJlZUVsZW1lbnRGb3JEYXRhR3JpZE5vZGU6IGZ1bmN0aW9uKGRhdGFHcmlkTm9kZSkK
KyAgICB0cmVlRWxlbWVudEZvckRhdGFHcmlkTm9kZShkYXRhR3JpZE5vZGUpCiAgICAgewogICAg
ICAgICByZXR1cm4gZGF0YUdyaWROb2RlLl9fdHJlZUVsZW1lbnQgfHwgbnVsbDsKLSAgICB9LAor
ICAgIH0KIAotICAgIGRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50OiBmdW5jdGlvbih0cmVlRWxl
bWVudCkKKyAgICBkYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCkKICAgICB7
CiAgICAgICAgIGlmICh0cmVlRWxlbWVudC5fX2RhdGFHcmlkTm9kZSkKICAgICAgICAgICAgIHJl
dHVybiB0cmVlRWxlbWVudC5fX2RhdGFHcmlkTm9kZTsKQEAgLTE1NCwxMSArMTUxLDExIEBAIFdl
Ykluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAg
Ly8gUHJpdmF0ZQogCi0gICAgX3RyZWVPdXRsaW5lU2Nyb2xsZWQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF90cmVlT3V0bGluZVNjcm9sbGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTcwLDkgKzE2Nyw5IEBAIFdlYklu
c3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICB0aGlzLl9pZ25vcmVOZXh0RGF0YUdyaWRTY3JvbGxFdmVudCA9IHRydWU7CiAgICAg
ICAgIHRoaXMuX2RhdGFHcmlkLnNjcm9sbENvbnRhaW5lci5zY3JvbGxUb3AgPSB0aGlzLl90cmVl
T3V0bGluZS5lbGVtZW50LnBhcmVudE5vZGUuc2Nyb2xsVG9wOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2RhdGFHcmlkU2Nyb2xsZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZFNjcm9s
bGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtMTg0LDkgKzE4MSw5IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURh
dGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9pZ25vcmVO
ZXh0VHJlZU91dGxpbmVTY3JvbGxFdmVudCA9IHRydWU7CiAgICAgICAgIHRoaXMuX3RyZWVPdXRs
aW5lLmVsZW1lbnQucGFyZW50Tm9kZS5zY3JvbGxUb3AgPSB0aGlzLl9kYXRhR3JpZC5zY3JvbGxD
b250YWluZXIuc2Nyb2xsVG9wOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkTm9kZVNl
bGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2RlU2VsZWN0ZWQoZXZlbnQp
CiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xOTQsOSArMTkxLDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5j
aHJvbml6ZXIucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5f
ZGF0YUdyaWQuc2VsZWN0ZWROb2RlOwogICAgICAgICBpZiAoZGF0YUdyaWROb2RlKQogICAgICAg
ICAgICAgZGF0YUdyaWROb2RlLl9fdHJlZUVsZW1lbnQuc2VsZWN0KHRydWUsIHRydWUsIHRydWUs
IHRydWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFHcmlkTm9kZUV4cGFuZGVkOiBmdW5j
dGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2RlRXhwYW5kZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDYsOSAr
MjAzLDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJv
dG90eXBlID0gewogCiAgICAgICAgIGlmICghZGF0YUdyaWROb2RlLl9fdHJlZUVsZW1lbnQuZXhw
YW5kZWQpCiAgICAgICAgICAgICBkYXRhR3JpZE5vZGUuX190cmVlRWxlbWVudC5leHBhbmQoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhR3JpZE5vZGVDb2xsYXBzZWQ6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9kYXRhR3JpZE5vZGVDb2xsYXBzZWQoZXZlbnQpCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTgsOSArMjE1LDkg
QEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIucHJvdG90eXBl
ID0gewogCiAgICAgICAgIGlmIChkYXRhR3JpZE5vZGUuX190cmVlRWxlbWVudC5leHBhbmRlZCkK
ICAgICAgICAgICAgIGRhdGFHcmlkTm9kZS5fX3RyZWVFbGVtZW50LmNvbGxhcHNlKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1l
bnQsIHNlbGVjdGVkQnlVc2VyKQorICAgIF90cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50
LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTIyOSw5ICsyMjYsOSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91
dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGRhdGFHcmlkTm9kZSk7CiAKICAgICAgICAgZGF0YUdyaWROb2RlLnNlbGVjdCh0cnVl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudEFkZGVkOiBmdW5jdGlvbih0cmVl
RWxlbWVudCkKKyAgICBfdHJlZUVsZW1lbnRBZGRlZCh0cmVlRWxlbWVudCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fZW5hYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0Niw5ICsy
NDMsOSBAQCBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNoaWxkSW5kZXggIT09IC0xKTsKIAog
ICAgICAgICBwYXJlbnREYXRhR3JpZE5vZGUuaW5zZXJ0Q2hpbGQoZGF0YUdyaWROb2RlLCBjaGls
ZEluZGV4KTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudFJlbW92ZWQ6IGZ1bmN0
aW9uKHRyZWVFbGVtZW50KQorICAgIF90cmVlRWxlbWVudFJlbW92ZWQodHJlZUVsZW1lbnQpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0yNTgsOSArMjU1LDkgQEAgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJv
bml6ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChkYXRhR3JpZE5vZGUucGFyZW50KQog
ICAgICAgICAgICAgZGF0YUdyaWROb2RlLnBhcmVudC5yZW1vdmVDaGlsZChkYXRhR3JpZE5vZGUp
OwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50RXhwYW5kZWQ6IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50KQorICAgIF90cmVlRWxlbWVudEV4cGFuZGVkKHRyZWVFbGVtZW50KQogICAgIHsK
ICAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjcw
LDkgKzI2Nyw5IEBAIFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVy
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoIWRhdGFHcmlkTm9kZS5leHBhbmRlZCkKICAg
ICAgICAgICAgIGRhdGFHcmlkTm9kZS5leHBhbmQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90
cmVlRWxlbWVudENvbGxhcHNlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgX3RyZWVFbGVt
ZW50Q29sbGFwc2VkKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9lbmFi
bGVkKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjgyLDkgKzI3OSw5IEBAIFdlYkluc3BlY3Rv
ci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBpZiAoZGF0YUdyaWROb2RlLmV4cGFuZGVkKQogICAgICAgICAgICAgZGF0YUdyaWROb2RlLmNv
bGxhcHNlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRIaWRkZW5DaGFuZ2Vk
OiBmdW5jdGlvbih0cmVlRWxlbWVudCwgaGlkZGVuKQorICAgIF90cmVlRWxlbWVudEhpZGRlbkNo
YW5nZWQodHJlZUVsZW1lbnQsIGhpZGRlbikKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZW5h
YmxlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI5NSw1ICsyOTIsMyBAQCBXZWJJbnNwZWN0
b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGRhdGFHcmlkTm9kZS5lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoImhpZGRlbiIsIGhpZGRlbik7
CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6
ZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVHlw
ZVByb3BlcnRpZXNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVHlwZVByb3BlcnRpZXNTZWN0aW9uLmpzCmluZGV4IDk0NjA0YzcuLjRiMmRlOTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1R5
cGVQcm9wZXJ0aWVzU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UeXBlUHJvcGVydGllc1NlY3Rpb24uanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNjYgKzIzLDI0IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlR5
cGVQcm9wZXJ0aWVzU2VjdGlvbiA9IGZ1bmN0aW9uKHR5cGVzLCB0aXRsZSwgc3VidGl0bGUpCitX
ZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0aW9uID0gY2xhc3MgVHlwZVByb3BlcnRpZXNT
ZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uCiB7CisgICAgY29u
c3RydWN0b3IodHlwZXMsIHRpdGxlLCBzdWJ0aXRsZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHRp
dGxlLCBzdWJ0aXRsZSk7CisKICAgICAgICAgdGhpcy5lbXB0eVBsYWNlaG9sZGVyID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJObyBQcm9wZXJ0aWVzIik7CiAgICAgICAgIHRoaXMudHlwZXMgPSB0
eXBlczsKICAgICAgICAgdGhpcy5fdHlwZVNldCA9IFdlYkluc3BlY3Rvci5UeXBlU2V0LmZyb21Q
YXlsb2FkKHRoaXMudHlwZXMpOworICAgIH0KIAotICAgIFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVz
U2VjdGlvbi5jYWxsKHRoaXMsIHRpdGxlLCBzdWJ0aXRsZSk7Ci19OworICAgIC8vIFN0YXRpYwog
Ci1XZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlvbiwKLSAgICBfX3By
b3RvX186IFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUsCi0KLSAgICBv
bnBvcHVsYXRlOiBmdW5jdGlvbigpCisgICAgc3RhdGljIHByb3BlcnR5Q29tcGFyYXRvcihwcm9w
ZXJ0eUEsIHByb3BlcnR5QikKICAgICB7Ci0gICAgICAgIHRoaXMucHJvcGVydGllc1RyZWVPdXRs
aW5lLnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAgICAgICAgdmFyIHByaW1pdGl2ZVR5cGVOYW1lcyA9
IHRoaXMuX3R5cGVTZXQucHJpbWl0aXZlVHlwZU5hbWVzOwotICAgICAgICB2YXIgc3RydWN0dXJl
cyA9IHRoaXMudHlwZXMuc3RydWN0dXJlczsKLSAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBbXTsK
LSAgICAgICAgZm9yICh2YXIgc3RydWN0IG9mIHN0cnVjdHVyZXMpIHsKLSAgICAgICAgICAgIHBy
b3BlcnRpZXMucHVzaCh7Ci0gICAgICAgICAgICAgICAgbmFtZTogc3RydWN0LmNvbnN0cnVjdG9y
TmFtZSwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmU6IHN0cnVjdAotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0KLSAgICAgICAgZm9yICh2YXIgcHJpbWl0aXZlTmFtZSBvZiBwcmltaXRpdmVU
eXBlTmFtZXMpIHsKLSAgICAgICAgICAgIHByb3BlcnRpZXMucHVzaCh7Ci0gICAgICAgICAgICAg
ICAgbmFtZTogcHJpbWl0aXZlTmFtZSwKLSAgICAgICAgICAgICAgICBzdHJ1Y3R1cmU6IG51bGwK
LSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0KLSAgICAgICAgcHJvcGVydGllcy5zb3J0KFdl
Ykluc3BlY3Rvci5UeXBlUHJvcGVydGllc1NlY3Rpb24uUHJvcGVydHlDb21wYXJhdG9yKTsKLQot
ICAgICAgICBpZiAodGhpcy50eXBlcy5pc1RydW5jYXRlZCkKLSAgICAgICAgICAgIHByb3BlcnRp
ZXMucHVzaCh7bmFtZTogIlx1MjAyNiIsIHN0cnVjdHVyZTogbnVsbH0pOwotCi0gICAgICAgIGZv
ciAodmFyIHByb3BlcnR5IG9mIHByb3BlcnRpZXMpCi0gICAgICAgICAgICB0aGlzLnByb3BlcnRp
ZXNUcmVlT3V0bGluZS5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0eVRy
ZWVFbGVtZW50KHByb3BlcnR5KSk7Ci0KLSAgICAgICAgaWYgKCF0aGlzLnByb3BlcnRpZXNUcmVl
T3V0bGluZS5jaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciB0aXRsZSA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgdGl0bGUuY2xhc3NOYW1lID0g
ImluZm8iOwotICAgICAgICAgICAgdGl0bGUudGV4dENvbnRlbnQgPSB0aGlzLmVtcHR5UGxhY2Vo
b2xkZXI7Ci0gICAgICAgICAgICB2YXIgaW5mb0VsZW1lbnQgPSBuZXcgVHJlZUVsZW1lbnQodGl0
bGUsIG51bGwsIGZhbHNlKTsKLSAgICAgICAgICAgIHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5l
LmFwcGVuZENoaWxkKGluZm9FbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TZWN0aW9uLkV2ZW50LlZpc2libGVD
b250ZW50RGlkQ2hhbmdlKTsKLQotICAgICAgICBpZiAocHJvcGVydGllcy5sZW5ndGggPT09IDEp
Ci0gICAgICAgICAgICB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5jaGlsZHJlblswXS5leHBh
bmRSZWN1cnNpdmVseSgpOwotICAgIH0KLX07Ci0KICAgICAgICAgLy8gVGhpcyBpcyBtb3N0bHkg
aWRlbnRpY2FsIHRvIE9iamVjdFRyZWVWaWV3LmNvbXBhcmVQcm9wZXJ0aWVzLgogICAgICAgICAv
LyBCdXQgdGhpcyBjaGVja3MgZm9yIGVxdWFsaXR5IGJlY2F1c2Ugd2UgY2FuIGhhdmUgdHdvIG9i
amVjdHMgbmFtZWQgdGhlIHNhbWUgdGhpbmcuCi1XZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNT
ZWN0aW9uLlByb3BlcnR5Q29tcGFyYXRvciA9IGZ1bmN0aW9uKHByb3BlcnR5QSwgcHJvcGVydHlC
KQoteworCiAgICAgICAgIHZhciBhID0gcHJvcGVydHlBLm5hbWU7CiAgICAgICAgIHZhciBiID0g
cHJvcGVydHlCLm5hbWU7CiAgICAgICAgIGlmIChhLmluZGV4T2YoIl9fcHJvdG9fXyIpICE9PSAt
MSkKQEAgLTEyMywyNyArODEsNzAgQEAgV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlv
bi5Qcm9wZXJ0eUNvbXBhcmF0b3IgPSBmdW5jdGlvbihwcm9wZXJ0eUEsIHByb3AKICAgICAgICAg
fQogCiAgICAgICAgIHJldHVybiBkaWZmOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAg
b25wb3B1bGF0ZSgpCisgICAgeworICAgICAgICB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5y
ZW1vdmVDaGlsZHJlbigpOworCisgICAgICAgIHZhciBwcmltaXRpdmVUeXBlTmFtZXMgPSB0aGlz
Ll90eXBlU2V0LnByaW1pdGl2ZVR5cGVOYW1lczsKKyAgICAgICAgdmFyIHN0cnVjdHVyZXMgPSB0
aGlzLnR5cGVzLnN0cnVjdHVyZXM7CisgICAgICAgIHZhciBwcm9wZXJ0aWVzID0gW107CisgICAg
ICAgIGZvciAodmFyIHN0cnVjdCBvZiBzdHJ1Y3R1cmVzKSB7CisgICAgICAgICAgICBwcm9wZXJ0
aWVzLnB1c2goeworICAgICAgICAgICAgICAgIG5hbWU6IHN0cnVjdC5jb25zdHJ1Y3Rvck5hbWUs
CisgICAgICAgICAgICAgICAgc3RydWN0dXJlOiBzdHJ1Y3QKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisgICAgICAgIGZvciAodmFyIHByaW1pdGl2ZU5hbWUgb2YgcHJpbWl0aXZlVHlwZU5h
bWVzKSB7CisgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goeworICAgICAgICAgICAgICAgIG5h
bWU6IHByaW1pdGl2ZU5hbWUsCisgICAgICAgICAgICAgICAgc3RydWN0dXJlOiBudWxsCisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNw
ZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0aW9uLnByb3BlcnR5Q29tcGFyYXRvcik7CisKKyAgICAg
ICAgaWYgKHRoaXMudHlwZXMuaXNUcnVuY2F0ZWQpCisgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1
c2goe25hbWU6ICJcdTIwMjYiLCBzdHJ1Y3R1cmU6IG51bGx9KTsKKworICAgICAgICBmb3IgKHZh
ciBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKQorICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJl
ZU91dGxpbmUuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydHlUcmVlRWxl
bWVudChwcm9wZXJ0eSkpOworCisgICAgICAgIGlmICghdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxp
bmUuY2hpbGRyZW4ubGVuZ3RoKSB7CisgICAgICAgICAgICB2YXIgdGl0bGUgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHRpdGxlLmNsYXNzTmFtZSA9ICJpbmZv
IjsKKyAgICAgICAgICAgIHRpdGxlLnRleHRDb250ZW50ID0gdGhpcy5lbXB0eVBsYWNlaG9sZGVy
OworICAgICAgICAgICAgdmFyIGluZm9FbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rvci5UcmVlRWxl
bWVudCh0aXRsZSwgbnVsbCwgZmFsc2UpOworICAgICAgICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJl
ZU91dGxpbmUuYXBwZW5kQ2hpbGQoaW5mb0VsZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNlY3Rpb24uRXZlbnQu
VmlzaWJsZUNvbnRlbnREaWRDaGFuZ2UpOworCisgICAgICAgIGlmIChwcm9wZXJ0aWVzLmxlbmd0
aCA9PT0gMSkKKyAgICAgICAgICAgIHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmNoaWxkcmVu
WzBdLmV4cGFuZFJlY3Vyc2l2ZWx5KCk7CisgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlR5cGVQ
cm9wZXJ0eVRyZWVFbGVtZW50ID0gZnVuY3Rpb24ocHJvcGVydHkpCitXZWJJbnNwZWN0b3IuVHlw
ZVByb3BlcnR5VHJlZUVsZW1lbnQgPSBjbGFzcyBUeXBlUHJvcGVydHlUcmVlRWxlbWVudCBleHRl
bmRzIFdlYkluc3BlY3Rvci5UcmVlRWxlbWVudAogeworICAgIGNvbnN0cnVjdG9yKHByb3BlcnR5
KQorICAgIHsKKyAgICAgICAgc3VwZXIodGhpcy5uYW1lRWxlbWVudCwgbnVsbCwgZmFsc2UpOwor
CiAgICAgICAgIHRoaXMucHJvcGVydHkgPSBwcm9wZXJ0eTsKIAogICAgICAgICB0aGlzLm5hbWVF
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICB0aGlzLm5h
bWVFbGVtZW50LmNsYXNzTmFtZSA9ICJuYW1lIjsKICAgICAgICAgdGhpcy5uYW1lRWxlbWVudC50
ZXh0Q29udGVudCA9IHRoaXMucHJvcGVydHkubmFtZTsKIAotICAgIFRyZWVFbGVtZW50LmNhbGwo
dGhpcywgdGhpcy5uYW1lRWxlbWVudCwgbnVsbCwgZmFsc2UpOwotCiAgICAgICAgIHRoaXMudG9n
Z2xlT25DbGljayA9IHRydWU7CiAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSAhIXRoaXMucHJv
cGVydHkuc3RydWN0dXJlOwotfTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5UeXBlUHJvcGVydHlU
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5U
eXBlUHJvcGVydHlUcmVlRWxlbWVudCwKLSAgICBfX3Byb3RvX186IFRyZWVFbGVtZW50LnByb3Rv
dHlwZSwKLQotICAgIG9ucG9wdWxhdGU6IGZ1bmN0aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAg
ICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKIApAQCAtMTU1LDcgKzE1Niw3IEBA
IFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICB9KTsKICAgICAgICAgfQogCi0gICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNw
ZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0aW9uLlByb3BlcnR5Q29tcGFyYXRvcik7CisgICAgICAg
IHByb3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0aW9uLnByb3Bl
cnR5Q29tcGFyYXRvcik7CiAKICAgICAgICAgZm9yICh2YXIgcHJvcGVydHkgb2YgcHJvcGVydGll
cykKICAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5UeXBlUHJv
cGVydHlUcmVlRWxlbWVudChwcm9wZXJ0eSkpOwpAQCAtMTY4LDcgKzE2OSw3IEBAIFdlYkluc3Bl
Y3Rvci5UeXBlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfQogCi0gICAgICAgIHByb3BlcnRpZXMuc29ydChXZWJJbnNwZWN0b3IuVHlw
ZVByb3BlcnRpZXNTZWN0aW9uLlByb3BlcnR5Q29tcGFyYXRvcik7CisgICAgICAgIHByb3BlcnRp
ZXMuc29ydChXZWJJbnNwZWN0b3IuVHlwZVByb3BlcnRpZXNTZWN0aW9uLnByb3BlcnR5Q29tcGFy
YXRvcik7CiAKICAgICAgICAgaWYgKHRoaXMucHJvcGVydHkuc3RydWN0dXJlLmlzSW1wcmVjaXNl
KQogICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKHtuYW1lOiAiXHUyMDI2Iiwgc3RydWN0dXJl
OiBudWxsfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UeXBlVG9rZW5WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVHlwZVRva2VuVmlldy5qcwppbmRleCA0ZGUyODAyLi40MTM3MzY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UeXBlVG9r
ZW5WaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1R5cGVUb2tlblZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMTIgKzIzLDEzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZpZXcgPSBmdW5jdGlv
bih0b2tlbkFubm90YXRvciwgc2hvdWxkSGF2ZVJpZ2h0TWFyZ2luLCBzaG91bGRIYXZlTGVmdE1h
cmdpbiwgdGl0bGVUeXBlLCBmdW5jdGlvbk9yVmFyaWFibGVOYW1lKQorV2ViSW5zcGVjdG9yLlR5
cGVUb2tlblZpZXcgPSBjbGFzcyBUeXBlVG9rZW5WaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9i
amVjdAoreworICAgIGNvbnN0cnVjdG9yKHRva2VuQW5ub3RhdG9yLCBzaG91bGRIYXZlUmlnaHRN
YXJnaW4sIHNob3VsZEhhdmVMZWZ0TWFyZ2luLCB0aXRsZVR5cGUsIGZ1bmN0aW9uT3JWYXJpYWJs
ZU5hbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aXRsZVR5cGUgPT09IFdlYklu
c3BlY3Rvci5UeXBlVG9rZW5WaWV3LlRpdGxlVHlwZS5WYXJpYWJsZSAgfHwgdGl0bGVUeXBlID09
PSBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy5UaXRsZVR5cGUuUmV0dXJuU3RhdGVtZW50KTsK
IAotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1
YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2Fs
bCh0aGlzKTsKKyAgICAgICAgc3VwZXIoKTsKIAogICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAgICAgICAgc3Bhbi5jbGFzc0xpc3QuYWRkKCJ0eXBl
LXRva2VuIik7CkBAIC00Niw5ICs0NywxMSBAQCBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldyA9
IGZ1bmN0aW9uKHRva2VuQW5ub3RhdG9yLCBzaG91bGRIYXZlUmlnaHRNYXJnaW4sIHNobwogICAg
ICAgICB0aGlzLl9wb3BvdmVyVGl0bGUgPSBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy50aXRs
ZUZvclBvcG92ZXIodGl0bGVUeXBlLCBmdW5jdGlvbk9yVmFyaWFibGVOYW1lKTsKIAogICAgICAg
ICB0aGlzLl9zZXRVcE1vdXNlb3ZlckhhbmRsZXJzKCk7Ci19OworICAgIH0KIAotV2ViSW5zcGVj
dG9yLlR5cGVUb2tlblZpZXcudGl0bGVGb3JQb3BvdmVyID0gZnVuY3Rpb24odGl0bGVUeXBlLCBm
dW5jdGlvbk9yVmFyaWFibGVOYW1lKQorICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIHRpdGxl
Rm9yUG9wb3Zlcih0aXRsZVR5cGUsIGZ1bmN0aW9uT3JWYXJpYWJsZU5hbWUpCiAgICAgewogICAg
ICAgICB2YXIgdGl0bGVTdHJpbmcgPSBudWxsOwogICAgICAgICBpZiAodGl0bGVUeXBlID09PSBX
ZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy5UaXRsZVR5cGUuVmFyaWFibGUpCkBAIC02MSwzNCAr
NjQsMTEgQEAgV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZpZXcudGl0bGVGb3JQb3BvdmVyID0gZnVu
Y3Rpb24odGl0bGVUeXBlLCBmdW5jdGlvbk9yVmFyaWEKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiB0aXRsZVN0cmluZzsKLX07Ci0KLVdlYkluc3BlY3Rvci5UeXBlVG9rZW5WaWV3LlRpdGxl
VHlwZSA9IHsKLSAgICBWYXJpYWJsZTogInRpdGxlLXR5cGUtdmFyaWFibGUiLAotICAgIFJldHVy
blN0YXRlbWVudDogInRpdGxlLXR5cGUtcmV0dXJuLXN0YXRlbWVudCIKLX07Ci0KLVdlYkluc3Bl
Y3Rvci5UeXBlVG9rZW5WaWV3LkNvbG9yQ2xhc3NGb3JUeXBlID0gewotICAgICJTdHJpbmciOiAi
dHlwZS10b2tlbi1zdHJpbmciLAotICAgICJGdW5jdGlvbiI6ICJ0eXBlLXRva2VuLWZ1bmN0aW9u
IiwKLSAgICAiTnVtYmVyIjogInR5cGUtdG9rZW4tbnVtYmVyIiwKLSAgICAiSW50ZWdlciI6ICJ0
eXBlLXRva2VuLW51bWJlciIsCi0gICAgIlVuZGVmaW5lZCI6ICJ0eXBlLXRva2VuLWVtcHR5IiwK
LSAgICAiTnVsbCI6ICJ0eXBlLXRva2VuLWVtcHR5IiwKLSAgICAiKD8pIjogInR5cGUtdG9rZW4t
ZW1wdHkiLAotICAgICJCb29sZWFuIjogInR5cGUtdG9rZW4tYm9vbGVhbiIsCi0gICAgIihtYW55
KSI6ICJ0eXBlLXRva2VuLW1hbnkiCi19OwotCi1XZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy5E
ZWxheUhvdmVyVGltZSA9IDM1MDsKLQotV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZpZXcucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldywKLSAg
ICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAorICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCi0gICAgdXBkYXRlOiBmdW5jdGlvbih0eXBlcykKKyAgICB1cGRhdGUodHlw
ZXMpCiAgICAgewogICAgICAgICB0aGlzLl90eXBlcyA9IHR5cGVzOwogICAgICAgICB0aGlzLl90
eXBlU2V0ID0gV2ViSW5zcGVjdG9yLlR5cGVTZXQuZnJvbVBheWxvYWQodGhpcy5fdHlwZXMpOwpA
QCAtMTA1LDExICs4NSwxMSBAQCBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy5wcm90b3R5cGUg
PSB7CiAKICAgICAgICAgdGhpcy5fY29sb3JDbGFzcyA9IFdlYkluc3BlY3Rvci5UeXBlVG9rZW5W
aWV3LkNvbG9yQ2xhc3NGb3JUeXBlW2hhc2hTdHJpbmddIHx8ICJ0eXBlLXRva2VuLWRlZmF1bHQi
OwogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLl9jb2xvckNsYXNzKTsK
LSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9zZXRVcE1vdXNlb3Zlckhh
bmRsZXJzOiBmdW5jdGlvbigpCisgICAgX3NldFVwTW91c2VvdmVySGFuZGxlcnMoKQogICAgIHsK
ICAgICAgICAgdmFyIHRpbWVvdXRJRCA9IG51bGw7CiAKQEAgLTEzMSw5ICsxMTEsOSBAQCBXZWJJ
bnNwZWN0b3IuVHlwZVRva2VuVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGlt
ZW91dElEKQogICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SUQpOwogICAgICAg
ICB9LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3VsZFNob3dQb3BvdmVy
OiBmdW5jdGlvbigpCisgICAgX3Nob3VsZFNob3dQb3BvdmVyKCkKICAgICB7CiAgICAgICAgIGlm
ICghdGhpcy5fdHlwZXMuaXNWYWxpZCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE0
NSw5ICsxMjUsOSBAQCBXZWJJbnNwZWN0b3IuVHlwZVRva2VuVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZGlzcGxheVR5cGVOYW1lOiBmdW5jdGlvbigpCisgICAgX2Rpc3BsYXlU
eXBlTmFtZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX3R5cGVzLmlzVmFsaWQpCiAgICAg
ICAgICAgICByZXR1cm4gIiI7CkBAIC0yMDMsMyArMTgzLDIyIEBAIFdlYkluc3BlY3Rvci5UeXBl
VG9rZW5WaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiKG1hbnkpIik7CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlR5cGVUb2tlblZpZXcu
VGl0bGVUeXBlID0geworICAgIFZhcmlhYmxlOiBTeW1ib2woInRpdGxlLXR5cGUtdmFyaWFibGUi
KSwKKyAgICBSZXR1cm5TdGF0ZW1lbnQ6IFN5bWJvbCgidGl0bGUtdHlwZS1yZXR1cm4tc3RhdGVt
ZW50IikKK307CisKK1dlYkluc3BlY3Rvci5UeXBlVG9rZW5WaWV3LkNvbG9yQ2xhc3NGb3JUeXBl
ID0geworICAgICJTdHJpbmciOiAidHlwZS10b2tlbi1zdHJpbmciLAorICAgICJGdW5jdGlvbiI6
ICJ0eXBlLXRva2VuLWZ1bmN0aW9uIiwKKyAgICAiTnVtYmVyIjogInR5cGUtdG9rZW4tbnVtYmVy
IiwKKyAgICAiSW50ZWdlciI6ICJ0eXBlLXRva2VuLW51bWJlciIsCisgICAgIlVuZGVmaW5lZCI6
ICJ0eXBlLXRva2VuLWVtcHR5IiwKKyAgICAiTnVsbCI6ICJ0eXBlLXRva2VuLWVtcHR5IiwKKyAg
ICAiKD8pIjogInR5cGUtdG9rZW4tZW1wdHkiLAorICAgICJCb29sZWFuIjogInR5cGUtdG9rZW4t
Ym9vbGVhbiIsCisgICAgIihtYW55KSI6ICJ0eXBlLXRva2VuLW1hbnkiCit9OworCitXZWJJbnNw
ZWN0b3IuVHlwZVRva2VuVmlldy5EZWxheUhvdmVyVGltZSA9IDM1MDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249557</attachid>
            <date>2015-03-27 00:46:04 -0700</date>
            <delta_ts>2015-03-27 00:46:04 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>600282</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Fj
dGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmpzCmluZGV4IDdm
NzhjMzcuLjQ3ZDE4MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0FjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQWN0aXZhdGVCdXR0b25OYXZpZ2F0
aW9uSXRlbS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsMzcgKzIzLDMzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0g
PSBmdW5jdGlvbihpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwg
aW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBzdXBwcmVzc0VtYm9zcywgcm9sZSkKK1dl
Ykluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtID0gY2xhc3MgQWN0aXZhdGVC
dXR0b25OYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbQogewotICAgIFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMs
IGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWln
aHQsIHN1cHByZXNzRW1ib3NzLCByb2xlKTsKLQotICAgIHRoaXMuX2RlZmF1bHRUb29sVGlwID0g
ZGVmYXVsdFRvb2xUaXA7Ci0gICAgdGhpcy5fYWN0aXZhdGVkVG9vbFRpcCA9IGFjdGl2YXRlZFRv
b2xUaXAgfHwgZGVmYXVsdFRvb2xUaXA7Ci0gICAgdGhpcy5fcm9sZSA9IHJvbGU7Ci19OwotCi1X
ZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZSA9
ICJhY3RpdmF0ZSI7Ci1XZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5B
Y3RpdmF0ZWRTdHlsZUNsYXNzTmFtZSA9ICJhY3RpdmF0ZWQiOworICAgIGNvbnN0cnVjdG9yKGlk
ZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwgaW1hZ2VX
aWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzLCByb2xlKQorICAgIHsKKyAgICAgICAg
c3VwZXIoaWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAsIGltYWdlLCBpbWFnZVdpZHRoLCBpbWFn
ZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpOwogCi1XZWJJbnNwZWN0b3IuQWN0aXZhdGVC
dXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLAorICAgICAgICB0aGlzLl9kZWZh
dWx0VG9vbFRpcCA9IGRlZmF1bHRUb29sVGlwOworICAgICAgICB0aGlzLl9hY3RpdmF0ZWRUb29s
VGlwID0gYWN0aXZhdGVkVG9vbFRpcCB8fCBkZWZhdWx0VG9vbFRpcDsKKyAgICAgICAgdGhpcy5f
cm9sZSA9IHJvbGU7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgZGVmYXVsdFRv
b2xUaXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRUb29sVGlwOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGFjdGl2YXRlZFRvb2xUaXAoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2FjdGl2YXRlZFRvb2xUaXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
YWN0aXZhdGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLkFjdGl2
YXRlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhY3RpdmF0ZWQo
ZmxhZykKICAgICB7CkBAIC02OCw5ICs2NCw5IEBAIFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRv
bk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLl9yb2xl
ID09PSAidGFiIikKICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cmlidXRl
KCJhcmlhLXNlbGVjdGVkIik7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGdlbmVy
YXRlU3R5bGVUZXh0OiBmdW5jdGlvbihwYXJlbnRTZWxlY3RvcikKKyAgICBnZW5lcmF0ZVN0eWxl
VGV4dChwYXJlbnRTZWxlY3RvcikKICAgICB7CiAgICAgICAgIHZhciBjbGFzc05hbWVzID0gdGhp
cy5fY2xhc3NOYW1lcy5qb2luKCIuIik7CiAKQEAgLTkzLDExICs4OSwxNCBAQCBXZWJJbnNwZWN0
b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
IAogICAgICAgICByZXR1cm4gc3R5bGVUZXh0OwotICAgIH0sCisgICAgfQogCi0gICAgLy8gUHJp
dmF0ZQorICAgIC8vIFByb3RlY3RlZAogCi0gICAgX2FkZGl0aW9uYWxDbGFzc05hbWVzOiBbV2Vi
SW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWUsIFdl
Ykluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZV0KKyAgICBnZXQg
YWRkaXRpb25hbENsYXNzTmFtZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmFkZGl0
aW9uYWxDbGFzc05hbWVzLnVuc2hpZnQoImFjdGl2YXRlIik7CisgICAgfQogfTsKIAotV2ViSW5z
cGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGU7CitXZWJJbnNwZWN0
b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5BY3RpdmF0ZWRTdHlsZUNsYXNzTmFtZSA9
ICJhY3RpdmF0ZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0uanMK
aW5kZXggYWZhNDMyNy4uMzVlZDRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9BY3RpdmF0ZUJ1dHRvblRv
b2xiYXJJdGVtLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywyOCArMjMsMjcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbSA9
IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBs
YWJlbCwgaW1hZ2UsIHN1cHByZXNzRW1ib3NzLCByb2xlKQorV2ViSW5zcGVjdG9yLkFjdGl2YXRl
QnV0dG9uVG9vbGJhckl0ZW0gPSBjbGFzcyBBY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtIGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0KIHsKLSAgICBXZWJJ
bnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMsIGlkZW50aWZp
ZXIsIGRlZmF1bHRUb29sVGlwLCBhY3RpdmF0ZWRUb29sVGlwLCBpbWFnZSwgMzIsIDMyLCBzdXBw
cmVzc0VtYm9zcywgcm9sZSk7Ci0KLSAgICBjb25zb2xlLmFzc2VydChsYWJlbCk7CisgICAgY29u
c3RydWN0b3IoaWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGxh
YmVsLCBpbWFnZSwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpCisgICAgeworICAgICAgICBzdXBlcihp
ZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgaW1hZ2UsIDMyLCAz
Miwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpOwogCi0gICAgdGhpcy5fbGFiZWxFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5fbGFiZWxFbGVtZW50LmNsYXNz
TmFtZSA9IFdlYkluc3BlY3Rvci5CdXR0b25Ub29sYmFySXRlbS5MYWJlbFN0eWxlQ2xhc3NOYW1l
OwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbGFiZWxFbGVtZW50KTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQobGFiZWwpOwogCi0gICAgdGhpcy5sYWJlbCA9IGxhYmVsOwot
fTsKKyAgICAgICAgdGhpcy5fbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX2xhYmVsRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0
b3IuQnV0dG9uVG9vbGJhckl0ZW0uTGFiZWxTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sYWJlbEVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3Iu
QWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtLAorICAgICAgICB0aGlzLmxh
YmVsID0gbGFiZWw7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbGFiZWwoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsRWxlbWVudC50ZXh0Q29udGVudDsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCBsYWJlbChuZXdMYWJlbCkKICAgICB7CkBAIC01NSw1ICs1
NCwzIEBAIFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fbGFiZWxFbGVtZW50LnRleHRDb250ZW50ID0gbmV3TGFiZWw7CiAg
ICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0ucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVt
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29u
dGVudFZpZXcuanMKaW5kZXggNzhhODljMy4uMTQzMTBmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29u
dGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMy0yMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsODYgKzIzLDg1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3ID0gZnVuY3Rp
b24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1l
Q29udGVudFZpZXcgPSBjbGFzcyBBcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50VmlldyBleHRl
bmRzIFdlYkluc3BlY3Rvci5Db250ZW50VmlldwogewotICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFt
ZSk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRl
ZE9iamVjdCk7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3Bl
Y3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWUpOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LlN0eWxl
Q2xhc3NOYW1lKTsKKyAgICAgICAgc3VwZXIocmVwcmVzZW50ZWRPYmplY3QpOwogCi0gICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0b3JhZ2UtdmlldyIpOwotICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJ0YWJsZSIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuU3R5bGVD
bGFzc05hbWUpOwogCi0gICAgdGhpcy5fZnJhbWUgPSByZXByZXNlbnRlZE9iamVjdC5mcmFtZTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0b3JhZ2UtdmlldyIpOworICAg
ICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGFibGUiKTsKIAotICAgIHRoaXMuX2Vt
cHR5VmlldyA9IFdlYkluc3BlY3Rvci5jcmVhdGVNZXNzYWdlVGV4dFZpZXcoV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJObyBBcHBsaWNhdGlvbiBDYWNoZSBpbmZvcm1hdGlvbiBhdmFpbGFibGUiKSwg
ZmFsc2UpOwotICAgIHRoaXMuX2VtcHR5Vmlldy5jbGFzc0xpc3QuYWRkKCJoaWRkZW4iKTsKLSAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZW1wdHlWaWV3KTsKKyAgICAgICAgdGhp
cy5fZnJhbWUgPSByZXByZXNlbnRlZE9iamVjdC5mcmFtZTsKIAotICAgIHRoaXMuX21hcmtEaXJ0
eSgpOworICAgICAgICB0aGlzLl9lbXB0eVZpZXcgPSBXZWJJbnNwZWN0b3IuY3JlYXRlTWVzc2Fn
ZVRleHRWaWV3KFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gQXBwbGljYXRpb24gQ2FjaGUgaW5m
b3JtYXRpb24gYXZhaWxhYmxlIiksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fZW1wdHlWaWV3LmNs
YXNzTGlzdC5hZGQoImhpZGRlbiIpOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fZW1wdHlWaWV3KTsKIAotICAgIHZhciBzdGF0dXMgPSByZXByZXNlbnRlZE9iamVjdC5z
dGF0dXM7Ci0gICAgdGhpcy51cGRhdGVTdGF0dXMoc3RhdHVzKTsKKyAgICAgICAgdGhpcy5fbWFy
a0RpcnR5KCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU1hbmFnZXIuRXZlbnQu
RnJhbWVNYW5pZmVzdFN0YXR1c0NoYW5nZWQsIHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci19
CisgICAgICAgIHZhciBzdGF0dXMgPSByZXByZXNlbnRlZE9iamVjdC5zdGF0dXM7CisgICAgICAg
IHRoaXMudXBkYXRlU3RhdHVzKHN0YXR1cyk7CiAKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNh
Y2hlRnJhbWVDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJhcHBsaWNhdGlvbi1jYWNoZS1m
cmFtZSI7CisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5FdmVudC5G
cmFtZU1hbmlmZXN0U3RhdHVzQ2hhbmdlZCwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsKKyAg
ICB9CiAKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hl
RnJhbWVDb250ZW50VmlldywKKyAgICAvLyBQdWJsaWMKIAogICAgIGdldCBhbGxvd2VkTmF2aWdh
dGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFtXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VTaWRlYmFyUGFuZWwuaWRlbnRpZmllcl07Ci0gICAgfSwKKyAgICB9CiAKLSAgICBz
aG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7CiAgICAgICAgIHRoaXMuX21heWJl
VXBkYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBj
bG9zZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLkV2ZW50LkZyYW1lTWFuaWZlc3RTdGF0dXNDaGFuZ2VkLCB0aGlzLl91cGRhdGVTdGF0dXMs
IHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisg
ICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkKQogICAg
ICAgICAgICAgdGhpcy5kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nvb2tpZShjb29r
aWUpCiAgICAgewogICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmll
d0Nvb2tpZVR5cGUuQXBwbGljYXRpb25DYWNoZTsKICAgICAgICAgY29va2llLmZyYW1lID0gdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5mcmFtZS51cmw7CiAgICAgICAgIGNvb2tpZS5tYW5pZmVzdCA9
IHRoaXMucmVwcmVzZW50ZWRPYmplY3QubWFuaWZlc3QubWFuaWZlc3RVUkw7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5fZGF0YUdyaWQpCiAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgIHJldHVybiBb
dGhpcy5fZGF0YUdyaWQuc2Nyb2xsQ29udGFpbmVyXTsKLSAgICB9LAorICAgIH0KIAotICAgIF9t
YXliZVVwZGF0ZTogZnVuY3Rpb24oKQorICAgIF9tYXliZVVwZGF0ZSgpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMudmlzaWJsZSB8fCAhdGhpcy5fdmlld0RpcnR5KQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZSgpOwogICAgICAgICB0aGlzLl92aWV3RGlydHkg
PSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tYXJrRGlydHk6IGZ1bmN0aW9uKCkKKyAg
ICBfbWFya0RpcnR5KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ZpZXdEaXJ0eSA9IHRydWU7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlU3RhdHVzOiBmdW5jdGlvbihldmVudCkKKyAgICBf
dXBkYXRlU3RhdHVzKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGZyYW1lTWFuaWZlc3QgPSBl
dmVudC5kYXRhLmZyYW1lTWFuaWZlc3Q7CiAgICAgICAgIGlmIChmcmFtZU1hbmlmZXN0ICE9PSB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0KQpAQCAtMTExLDkgKzExMCw5IEBAIFdlYkluc3BlY3Rvci5B
cHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGZyYW1lTWFuaWZlc3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQXBwbGlj
YXRpb25DYWNoZUZyYW1lKTsKIAogICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cyhmcmFtZU1hbmlm
ZXN0LnN0YXR1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVTdGF0dXM6IGZ1bmN0aW9u
KHN0YXR1cykKKyAgICB1cGRhdGVTdGF0dXMoc3RhdHVzKQogICAgIHsKICAgICAgICAgdmFyIG9s
ZFN0YXR1cyA9IHRoaXMuX3N0YXR1czsKICAgICAgICAgdGhpcy5fc3RhdHVzID0gc3RhdHVzOwpA
QCAtMTIyLDE0ICsxMjEsMTQgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNv
bnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX21hcmtEaXJ0eSgpOwog
CiAgICAgICAgIHRoaXMuX21heWJlVXBkYXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBk
YXRlOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZSgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IuYXBwbGljYXRpb25DYWNoZU1hbmFnZXIucmVxdWVzdEFwcGxpY2F0aW9uQ2FjaGUodGhpcy5f
ZnJhbWUsIHRoaXMuX3VwZGF0ZUNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3VwZGF0ZUNhbGxiYWNrOiBmdW5jdGlvbihhcHBsaWNhdGlvbkNhY2hlKQorICAgIF91
cGRhdGVDYWxsYmFjayhhcHBsaWNhdGlvbkNhY2hlKQogICAgIHsKICAgICAgICAgaWYgKCFhcHBs
aWNhdGlvbkNhY2hlIHx8ICFhcHBsaWNhdGlvbkNhY2hlLm1hbmlmZXN0VVJMKSB7CiAgICAgICAg
ICAgICBkZWxldGUgdGhpcy5fbWFuaWZlc3Q7CkBAIC0xNjAsOSArMTU5LDkgQEAgV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdGhpcy5fZGF0YUdyaWQuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJoaWRkZW4iKTsKIAog
ICAgICAgICB0aGlzLl9lbXB0eVZpZXcuY2xhc3NMaXN0LmFkZCgiaGlkZGVuIik7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfY3JlYXRlRGF0YUdyaWQ6IGZ1bmN0aW9uKCkKKyAgICBfY3JlYXRlRGF0
YUdyaWQoKQogICAgIHsKICAgICAgICAgdmFyIGNvbHVtbnMgPSB7dXJsOiB7fSwgdHlwZToge30s
IHNpemU6IHt9fTsKIApAQCAtMTg0LDE0ICsxODMsMTUgQEAgV2ViSW5zcGVjdG9yLkFwcGxpY2F0
aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NvcnREYXRh
R3JpZDogZnVuY3Rpb24oKQorICAgIF9zb3J0RGF0YUdyaWQoKQogICAgIHsKICAgICAgICAgZnVu
Y3Rpb24gbnVtYmVyQ29tcGFyZShjb2x1bW5JZGVudGlmaWVyLCBub2RlQSwgbm9kZUIpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBub2RlQS5kYXRhW2NvbHVtbklkZW50aWZpZXJdIC0g
bm9kZUIuZGF0YVtjb2x1bW5JZGVudGlmaWVyXTsKICAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0
aW9uIGxvY2FsZUNvbXBhcmUoY29sdW1uSWRlbnRpZmllciwgbm9kZUEsIG5vZGVCKQogICAgICAg
ICB7CiAgICAgICAgICAgICAgcmV0dXJuIChub2RlQS5kYXRhW2NvbHVtbklkZW50aWZpZXJdICsg
IiIpLmxvY2FsZUNvbXBhcmUobm9kZUIuZGF0YVtjb2x1bW5JZGVudGlmaWVyXSArICIiKTsKQEAg
LTIwNiw5ICsyMDYsOSBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQu
c29ydE5vZGVzKGNvbXBhcmF0b3IpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BvcHVsYXRlRGF0
YUdyaWQ6IGZ1bmN0aW9uKCkKKyAgICBfcG9wdWxhdGVEYXRhR3JpZCgpCiAgICAgewogICAgICAg
ICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC0yMjIsMTggKzIyMiwxOCBA
QCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKICAgICAgICAgICAgIHRo
aXMuX2RhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGUpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfZGVsZXRlQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RlbGV0
ZUJ1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlk
IHx8ICF0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgLy8gRklYTUU6IERlbGV0ZSBCdXR0b24gc2VtYW50aWNzIGFyZSBub3QgeWV0IGRl
ZmluZWQuIChEZWxldGUgYSBzaW5nbGUsIG9yIGFsbD8pCiAgICAgICAgIHRoaXMuX2RlbGV0ZUNh
bGxiYWNrKHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZGVsZXRlQ2FsbGJhY2s6IGZ1bmN0aW9uKG5vZGUpCisgICAgX2RlbGV0ZUNhbGxiYWNrKG5v
ZGUpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGRlbGV0ZSBhIHNpbmdsZSAo
c2VsZWN0ZWQpIHJlc291cmNlIG9yIGFsbCByZXNvdXJjZXM/CiAgICAgICAgIC8vIEluc3BlY3Rv
ckJhY2tlbmQuZGVsZXRlQ2FjaGVkUmVzb3VyY2UoLi4uKQpAQCAtMjQxLDQgKzI0MSw0IEBAIFdl
Ykluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgfQogfQogCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZp
ZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5
cGU7CitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuU3R5bGVD
bGFzc05hbWUgPSAiYXBwbGljYXRpb24tY2FjaGUtZnJhbWUiOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZp
Z2F0aW9uSXRlbS5qcwppbmRleCA0OWZiMTI2Li4yNWRkZjQyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25OYXZpZ2F0aW9uSXRlbS5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CdXR0b25O
YXZpZ2F0aW9uSXRlbS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsNTkgKzIzLDQzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtID0g
ZnVuY3Rpb24oaWRlbnRpZmllciwgdG9vbFRpcE9yTGFiZWwsIGltYWdlLCBpbWFnZVdpZHRoLCBp
bWFnZUhlaWdodCwgc3VwcHJlc3NFbWJvc3MsIHJvbGUsIGxhYmVsKSB7Ci0gICAgV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25JdGVtLmNhbGwodGhpcywgaWRlbnRpZmllcik7Ci0KLSAgICBjb25zb2xl
LmFzc2VydChpZGVudGlmaWVyKTsKLSAgICBjb25zb2xlLmFzc2VydCh0b29sVGlwT3JMYWJlbCk7
Ci0KLSAgICB0aGlzLnRvb2xUaXAgPSB0b29sVGlwT3JMYWJlbDsKLQotICAgIHRoaXMuX2VsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9tb3VzZUNsaWNrZWQuYmluZCh0aGlz
KSk7CitXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBCdXR0b25OYXZp
Z2F0aW9uSXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbQoreworICAgIGNv
bnN0cnVjdG9yKGlkZW50aWZpZXIsIHRvb2xUaXBPckxhYmVsLCBpbWFnZSwgaW1hZ2VXaWR0aCwg
aW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzLCByb2xlLCBsYWJlbCkKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGlkZW50aWZpZXIpOworICAgICAgICBjb25zb2xlLmFzc2VydCh0b29s
VGlwT3JMYWJlbCk7CiAKLSAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJv
bGUgfHwgImJ1dHRvbiIpOworICAgICAgICBzdXBlcihpZGVudGlmaWVyKTsKIAotICAgIGlmIChs
YWJlbCkKLSAgICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtbGFiZWwiLCBs
YWJlbCk7CisgICAgICAgIHRoaXMudG9vbFRpcCA9IHRvb2xUaXBPckxhYmVsOwogCi0gICAgdGhp
cy5faW1hZ2VXaWR0aCA9IGltYWdlV2lkdGggfHwgMTY7Ci0gICAgdGhpcy5faW1hZ2VIZWlnaHQg
PSBpbWFnZUhlaWdodCB8fCAxNjsKLSAgICB0aGlzLl9zdXBwcmVzc0VtYm9zcyA9IHN1cHByZXNz
RW1ib3NzIHx8IGZhbHNlOworICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgdGhpcy5fbW91c2VDbGlja2VkLmJpbmQodGhpcykpOwogCi0gICAgaWYgKHN1cHBy
ZXNzRW1ib3NzKQotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVj
dG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN1cHByZXNzRW1ib3NzU3R5bGVDbGFzc05hbWUpOwor
ICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUgfHwgImJ1dHRv
biIpOwogCi0gICAgaWYgKGltYWdlKQotICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7Ci0gICAg
ZWxzZQotICAgICAgICB0aGlzLmxhYmVsID0gdG9vbFRpcE9yTGFiZWw7Ci19OworICAgICAgICBp
ZiAobGFiZWwpCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1s
YWJlbCIsIGxhYmVsKTsKIAotV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxl
Q2xhc3NOYW1lID0gImJ1dHRvbiI7Ci1XZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
RGlzYWJsZWRTdHlsZUNsYXNzTmFtZSA9ICJkaXNhYmxlZCI7Ci1XZWJJbnNwZWN0b3IuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uU3VwcHJlc3NCZXplbFN0eWxlQ2xhc3NOYW1lID0gInN1cHByZXNzLWJl
emVsIjsKLVdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdXBwcmVzc0VtYm9zc1N0
eWxlQ2xhc3NOYW1lID0gInN1cHByZXNzLWVtYm9zcyI7Ci1XZWJJbnNwZWN0b3IuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uVGV4dE9ubHlDbGFzc05hbWUgPSAidGV4dC1vbmx5IjsKLQotV2ViSW5zcGVj
dG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0YXRlcyA9IHt9OwotV2ViSW5zcGVjdG9yLkJ1dHRv
bk5hdmlnYXRpb25JdGVtLlN0YXRlcy5Ob3JtYWwgPSAibm9ybWFsIjsKLVdlYkluc3BlY3Rvci5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5TdGF0ZXMuQWN0aXZlID0gImFjdGl2ZSI7Ci1XZWJJbnNwZWN0
b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3RhdGVzLkZvY3VzID0gImZvY3VzIjsKLVdlYkluc3Bl
Y3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdGF0ZXMuQWN0aXZlRm9jdXMgPSAiYWN0aXZlLWZv
Y3VzIjsKKyAgICAgICAgdGhpcy5faW1hZ2VXaWR0aCA9IGltYWdlV2lkdGggfHwgMTY7CisgICAg
ICAgIHRoaXMuX2ltYWdlSGVpZ2h0ID0gaW1hZ2VIZWlnaHQgfHwgMTY7CisgICAgICAgIHRoaXMu
X3N1cHByZXNzRW1ib3NzID0gc3VwcHJlc3NFbWJvc3MgfHwgZmFsc2U7CiAKLVdlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudCA9IHsKLSAgICBDbGlja2VkOiAiYnV0dG9uLW5h
dmlnYXRpb24taXRlbS1jbGlja2VkIgotfTsKKyAgICAgICAgaWYgKHN1cHByZXNzRW1ib3NzKQor
ICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5CdXR0
b25OYXZpZ2F0aW9uSXRlbS5TdXBwcmVzc0VtYm9zc1N0eWxlQ2xhc3NOYW1lKTsKIAotV2ViSW5z
cGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLAorICAgICAgICBpZiAoaW1hZ2Up
CisgICAgICAgICAgICB0aGlzLmltYWdlID0gaW1hZ2U7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHRoaXMubGFiZWwgPSB0b29sVGlwT3JMYWJlbDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAogICAgIGdldCB0b29sVGlwKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50
LnRpdGxlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHRvb2xUaXAobmV3VG9vbFRpcCkKICAg
ICB7CkBAIC04NCwxMiArNjgsMTIgQEAgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVt
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9lbGVt
ZW50LnRpdGxlID0gbmV3VG9vbFRpcDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsYWJlbCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9
LAorICAgIH0KIAogICAgIHNldCBsYWJlbChuZXdMYWJlbCkKICAgICB7CkBAIC05NywxMiArODEs
MTIgQEAgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fZWxlbWVudC50ZXh0Q29udGVudCA9IG5ld0xhYmVsIHx8ICIiOwogICAgICAg
ICBpZiAodGhpcy5wYXJlbnROYXZpZ2F0aW9uQmFyKQogICAgICAgICAgICAgdGhpcy5wYXJlbnRO
YXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGlt
YWdlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pbWFnZTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBpbWFnZShuZXdJbWFnZSkKICAgICB7CkBAIC0xMjEsMTIgKzEwNSwxMiBAQCBX
ZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dseXBoRWxlbWVudCk7CiAKICAgICAgICAg
dGhpcy5fdXBkYXRlSW1hZ2UoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBlbmFibGVkKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiAhdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMo
V2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkRpc2FibGVkU3R5bGVDbGFzc05hbWUp
OwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVuYWJsZWQoZmxhZykKICAgICB7CkBAIC0xMzQs
MTIgKzExOCwxMiBAQCBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3Bl
Y3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBzdXBwcmVzc0JlemVsKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3IuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uU3VwcHJlc3NCZXplbFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0K
IAogICAgIHNldCBzdXBwcmVzc0JlemVsKGZsYWcpCiAgICAgewpAQCAtMTQ3LDkgKzEzMSw5IEBA
IFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmln
YXRpb25JdGVtLlN1cHByZXNzQmV6ZWxTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3IuQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uU3VwcHJlc3NCZXplbFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGdlbmVyYXRlU3R5bGVUZXh0OiBmdW5jdGlvbihwYXJlbnRTZWxlY3RvcikK
KyAgICBnZW5lcmF0ZVN0eWxlVGV4dChwYXJlbnRTZWxlY3RvcikKICAgICB7CiAgICAgICAgIHZh
ciBjbGFzc05hbWVzID0gdGhpcy5fY2xhc3NOYW1lcy5qb2luKCIuIik7CiAKQEAgLTE2Nyw0MiAr
MTUxLDY4IEBAIFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc3R5bGVUZXh0OwotICAgIH0sCisgICAgfQog
Ci0gICAgLy8gUHJpdmF0ZQorICAgIC8vIFByb3RlY3RlZAorCisgICAgZ2V0IGFkZGl0aW9uYWxD
bGFzc05hbWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBbImJ1dHRvbiJdOworICAgIH0KIAot
ICAgIF9hZGRpdGlvbmFsQ2xhc3NOYW1lczogW1dlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9u
SXRlbS5TdHlsZUNsYXNzTmFtZV0sCi0gICAgX2VtYm9zc2VkSW1hZ2VTdGF0ZXM6IFdlYkluc3Bl
Y3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdGF0ZXMsCi0gICAgX2ltYWdlQ2FjaGVhYmxlOiB0
cnVlLAorICAgIGdldCBlbWJvc3NlZEltYWdlU3RhdGVzKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3RhdGVzOworICAgIH0KIAotICAg
IF9tb3VzZUNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGdldCBpbWFnZUNhY2hlYWJsZSgp
CisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisK
KyAgICBfbW91c2VDbGlja2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmVuYWJs
ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9jYW52YXNJZGVudGlmaWVyOiBmdW5jdGlvbihzdGF0ZSkK
KyAgICBfY2FudmFzSWRlbnRpZmllcihzdGF0ZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCF0aGlzLl9zdXBwcmVzc0VtYm9zcyk7CiAgICAgICAgIHJldHVybiAibmF2aWdhdGlvbi1p
dGVtLSIgKyB0aGlzLl9pZGVudGlmaWVyICsgIi0iICsgKHN0YXRlIHx8IFdlYkluc3BlY3Rvci5C
dXR0b25OYXZpZ2F0aW9uSXRlbS5TdGF0ZXMuTm9ybWFsKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF91cGRhdGVJbWFnZTogZnVuY3Rpb24oKQorICAgIF91cGRhdGVJbWFnZSgpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fc3VwcHJlc3NFbWJvc3MpCiAgICAgICAgICAgICB0aGlzLl9nbHlwaEVs
ZW1lbnQuc3R5bGUud2Via2l0TWFzayA9ICJ1cmwoIiArIHRoaXMuX2ltYWdlICsgIikiOwogICAg
ICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9nZW5lcmF0ZUltYWdlcygpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX2dlbmVyYXRlSW1hZ2VzOiBmdW5jdGlvbigpCisgICAgX2dlbmVyYXRlSW1h
Z2VzKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9zdXBwcmVzc0VtYm9z
cyk7CiAgICAgICAgIGlmICh0aGlzLl9zdXBwcmVzc0VtYm9zcykKICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgZ2VuZXJhdGVFbWJvc3NlZEltYWdlcyh0aGlzLmltYWdlLCB0aGlzLl9pbWFn
ZVdpZHRoLCB0aGlzLl9pbWFnZUhlaWdodCwgdGhpcy5fZW1ib3NzZWRJbWFnZVN0YXRlcywgdGhp
cy5fY2FudmFzSWRlbnRpZmllci5iaW5kKHRoaXMpLCAhdGhpcy5faW1hZ2VDYWNoZWFibGUpOwor
ICAgICAgICBnZW5lcmF0ZUVtYm9zc2VkSW1hZ2VzKHRoaXMuaW1hZ2UsIHRoaXMuX2ltYWdlV2lk
dGgsIHRoaXMuX2ltYWdlSGVpZ2h0LCB0aGlzLmVtYm9zc2VkSW1hZ2VTdGF0ZXMsIHRoaXMuX2Nh
bnZhc0lkZW50aWZpZXIuYmluZCh0aGlzKSwgIXRoaXMuaW1hZ2VDYWNoZWFibGUpOwogICAgIH0K
IH07CiAKLVdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZTsKK1dlYkluc3BlY3Rv
ci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5EaXNhYmxlZFN0eWxlQ2xhc3NOYW1lID0gImRpc2FibGVk
IjsKK1dlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdXBwcmVzc0JlemVsU3R5bGVD
bGFzc05hbWUgPSAic3VwcHJlc3MtYmV6ZWwiOworV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLlN1cHByZXNzRW1ib3NzU3R5bGVDbGFzc05hbWUgPSAic3VwcHJlc3MtZW1ib3NzIjsK
K1dlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5UZXh0T25seUNsYXNzTmFtZSA9ICJ0
ZXh0LW9ubHkiOworCitXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3RhdGVzID0g
e307CitXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3RhdGVzLk5vcm1hbCA9ICJu
b3JtYWwiOworV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0YXRlcy5BY3RpdmUg
PSAiYWN0aXZlIjsKK1dlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdGF0ZXMuRm9j
dXMgPSAiZm9jdXMiOworV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0YXRlcy5B
Y3RpdmVGb2N1cyA9ICJhY3RpdmUtZm9jdXMiOworCitXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdh
dGlvbkl0ZW0uRXZlbnQgPSB7CisgICAgQ2xpY2tlZDogImJ1dHRvbi1uYXZpZ2F0aW9uLWl0ZW0t
Y2xpY2tlZCIKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9CdXR0b25Ub29sYmFySXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xiYXJJdGVtLmpzCmluZGV4IDYxYzQwOWUuLjM2
Y2YyZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0J1dHRvblRvb2xiYXJJdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0J1dHRvblRvb2xiYXJJdGVtLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzMCArMjMsMjcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQnV0
dG9uVG9vbGJhckl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyLCB0b29sVGlwLCBsYWJlbCwgaW1h
Z2UsIHN1cHByZXNzRW1ib3NzLCByb2xlKQorV2ViSW5zcGVjdG9yLkJ1dHRvblRvb2xiYXJJdGVt
ID0gY2xhc3MgQnV0dG9uVG9vbGJhckl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0KIHsKLSAgICBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY2Fs
bCh0aGlzLCBpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgMzIsIDMyLCBzdXBwcmVzc0VtYm9z
cywgcm9sZSk7Ci0KLSAgICBjb25zb2xlLmFzc2VydChsYWJlbCk7Ci0KLSAgICB0aGlzLl9sYWJl
bEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9sYWJl
bEVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkJ1dHRvblRvb2xiYXJJdGVtLkxhYmVs
U3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sYWJl
bEVsZW1lbnQpOworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIHRvb2xUaXAsIGxhYmVsLCBp
bWFnZSwgc3VwcHJlc3NFbWJvc3MsIHJvbGUpCisgICAgeworICAgICAgICBzdXBlcihpZGVudGlm
aWVyLCB0b29sVGlwLCBpbWFnZSwgMzIsIDMyLCBzdXBwcmVzc0VtYm9zcywgcm9sZSk7CiAKLSAg
ICB0aGlzLmxhYmVsID0gbGFiZWw7Ci19OworICAgICAgICBjb25zb2xlLmFzc2VydChsYWJlbCk7
CiAKLVdlYkluc3BlY3Rvci5CdXR0b25Ub29sYmFySXRlbS5MYWJlbFN0eWxlQ2xhc3NOYW1lID0g
ImxhYmVsIjsKKyAgICAgICAgdGhpcy5fbGFiZWxFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2xhYmVsRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuQnV0dG9uVG9vbGJhckl0ZW0uTGFiZWxTdHlsZUNsYXNzTmFtZTsKKyAgICAgICAg
dGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sYWJlbEVsZW1lbnQpOwogCi1XZWJJbnNw
ZWN0b3IuQnV0dG9uVG9vbGJhckl0ZW0ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuQnV0dG9uVG9vbGJhckl0ZW0sCisgICAgICAgIHRoaXMubGFiZWwgPSBsYWJl
bDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBsYWJlbCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fbGFiZWxFbGVtZW50LnRleHRDb250ZW50OwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGxhYmVsKG5ld0xhYmVsKQogICAgIHsKQEAgLTU4LDQgKzU1LDQgQEAgV2Vi
SW5zcGVjdG9yLkJ1dHRvblRvb2xiYXJJdGVtLnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1X
ZWJJbnNwZWN0b3IuQnV0dG9uVG9vbGJhckl0ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQnV0
dG9uVG9vbGJhckl0ZW0uTGFiZWxTdHlsZUNsYXNzTmFtZSA9ICJsYWJlbCI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCmluZGV4IDg0ZmZjZGYuLjdkNGUxYmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NT
U1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMjYg
KzIzLDEwNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbiA9IGZ1bmN0aW9uKHN0eWxlKQor
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uID0gY2xhc3MgQ1NTU3R5bGVE
ZWNsYXJhdGlvblNlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8g
RklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFu
ZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwot
Ci0gICAgY29uc29sZS5hc3NlcnQoc3R5bGUpOwotICAgIHRoaXMuX3N0eWxlID0gc3R5bGUgfHwg
bnVsbDsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURl
Y2xhcmF0aW9uU2VjdGlvbi5TdHlsZUNsYXNzTmFtZTsKLQotICAgIHRoaXMuX2hlYWRlckVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9oZWFkZXJFbGVt
ZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5I
ZWFkZXJFbGVtZW50U3R5bGVDbGFzc05hbWU7Ci0KLSAgICB0aGlzLl9pY29uRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwotICAgIHRoaXMuX2ljb25FbGVtZW50LmNsYXNz
TmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5JY29uRWxlbWVu
dFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5faWNvbkVsZW1lbnQpOwotCi0gICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOwotICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uU2VsZWN0b3JFbGVt
ZW50U3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LnNldEF0dHJpYnV0
ZSgic3BlbGxjaGVjayIsICJmYWxzZSIpOwotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fc2VsZWN0b3JFbGVtZW50KTsKLQotICAgIHRoaXMuX29yaWdpbkVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgdGhpcy5fb3JpZ2luRWxlbWVu
dC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uT3Jp
Z2luRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fb3JpZ2luRWxlbWVudCk7Ci0KLSAgICB0aGlzLl9wcm9wZXJ0aWVzRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3Byb3BlcnRpZXNF
bGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlv
bi5Qcm9wZXJ0aWVzRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotCi0gICAgdGhpcy5fcHJvcGVydGll
c1RleHRFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25UZXh0RWRp
dG9yKHRoaXMsIHN0eWxlKTsKLSAgICB0aGlzLl9wcm9wZXJ0aWVzRWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5lbGVtZW50KTsKLQotICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVudCk7Ci0gICAgdGhpcy5fZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9wcm9wZXJ0aWVzRWxlbWVudCk7Ci0KLSAgICB2YXIgaWNvbkNsYXNz
TmFtZTsKLSAgICBzd2l0Y2ggKHN0eWxlLnR5cGUpIHsKLSAgICBjYXNlIFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuUnVsZToKLSAgICAgICAgY29uc29sZS5hc3NlcnQoc3R5
bGUub3duZXJSdWxlKTsKLQotICAgICAgICBpZiAoc3R5bGUuaW5oZXJpdGVkKQotICAgICAgICAg
ICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlv
bi5Jbmhlcml0ZWRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIGVsc2UgaWYg
KHN0eWxlLm93bmVyUnVsZS50eXBlID09PSBXZWJJbnNwZWN0b3IuQ1NTUnVsZS5UeXBlLkF1dGhv
cikKLSAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24uQXV0aG9yU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lOwotICAgICAg
ICBlbHNlIGlmIChzdHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1J1bGUu
VHlwZS5Vc2VyKQotICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Vc2VyU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lOwot
ICAgICAgICBlbHNlIGlmIChzdHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNT
U1J1bGUuVHlwZS5Vc2VyQWdlbnQpCi0gICAgICAgICAgICBpY29uQ2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlVzZXJBZ2VudFN0eWxlUnVsZUljb25T
dHlsZUNsYXNzTmFtZTsKLSAgICAgICAgZWxzZSBpZiAoc3R5bGUub3duZXJSdWxlLnR5cGUgPT09
IFdlYkluc3BlY3Rvci5DU1NSdWxlLlR5cGUuSW5zcGVjdG9yKQotICAgICAgICAgICAgaWNvbkNs
YXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5JbnNwZWN0
b3JTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlLklubGluZToKLSAgICBjYXNl
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuQXR0cmlidXRlOgotICAgICAg
ICBpZiAoc3R5bGUuaW5oZXJpdGVkKQotICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Jbmhlcml0ZWRFbGVtZW50U3R5bGVS
dWxlSWNvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBpY29uQ2xh
c3NOYW1lID0gV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50UGF0aENvbXBvbmVudC5ET01FbGVt
ZW50SWNvblN0eWxlQ2xhc3NOYW1lOwotICAgICAgICBicmVhazsKLSAgICB9CisgICAgY29uc3Ry
dWN0b3Ioc3R5bGUpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAgY29uc29sZS5hc3Nl
cnQoaWNvbkNsYXNzTmFtZSk7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGljb25D
bGFzc05hbWUpOworICAgICAgICBjb25zb2xlLmFzc2VydChzdHlsZSk7CisgICAgICAgIHRoaXMu
X3N0eWxlID0gc3R5bGUgfHwgbnVsbDsKIAotICAgIGlmICghc3R5bGUuZWRpdGFibGUpCi0gICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24uTG9ja2VkU3R5bGVDbGFzc05hbWUpOwotICAgIGVsc2UgaWYgKHN0eWxl
Lm93bmVyUnVsZSkgewotICAgICAgICB0aGlzLl9jb21taXRTZWxlY3RvcktleWJvYXJkU2hvcnRj
dXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQobnVsbCwgV2ViSW5zcGVjdG9y
LktleWJvYXJkU2hvcnRjdXQuS2V5LkVudGVyLCB0aGlzLl9jb21taXRTZWxlY3Rvci5iaW5kKHRo
aXMpLCB0aGlzLl9zZWxlY3RvckVsZW1lbnQpOwotICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2NvbW1pdFNlbGVjdG9yLmJpbmQodGhp
cykpOwotICAgIH0gZWxzZQotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlNlbGVjdG9yTG9ja2VkU3R5bGVD
bGFzc05hbWUpOworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlN0eWxlQ2xhc3NOYW1lOwogCi0gICAgaWYgKCFX
ZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uX2dlbmVyYXRlZExvY2tJbWFn
ZXMpIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLl9n
ZW5lcmF0ZWRMb2NrSW1hZ2VzID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9oZWFkZXJFbGVt
ZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5I
ZWFkZXJFbGVtZW50U3R5bGVDbGFzc05hbWU7CiAKLSAgICAgICAgdmFyIHNwZWNpZmljYXRpb25z
ID0geyJzdHlsZS1sb2NrLW5vcm1hbCI6IHtmaWxsQ29sb3I6IFswLCAwLCAwLCAwLjVdfX07Ci0g
ICAgICAgIGdlbmVyYXRlQ29sb3JlZEltYWdlc0ZvckNTUygiSW1hZ2VzL0xvY2tlZC5zdmciLCBz
cGVjaWZpY2F0aW9ucywgOCwgMTApOwotICAgIH0KKyAgICAgICAgdGhpcy5faWNvbkVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKKyAgICAgICAgdGhpcy5faWNvbkVsZW1l
bnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLklj
b25FbGVtZW50U3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2hlYWRlckVsZW1lbnQuYXBw
ZW5kQ2hpbGQodGhpcy5faWNvbkVsZW1lbnQpOwogCi0gICAgdGhpcy5yZWZyZXNoKCk7Ci19Owor
ICAgICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CisgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uU2VsZWN0b3JFbGVtZW50U3R5bGVDbGFz
c05hbWU7CisgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5zZXRBdHRyaWJ1dGUoInNwZWxs
Y2hlY2siLCAiZmFsc2UiKTsKKyAgICAgICAgdGhpcy5faGVhZGVyRWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9zZWxlY3RvckVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJh
dGlvblNlY3Rpb24uU3R5bGVDbGFzc05hbWUgPSAic3R5bGUtZGVjbGFyYXRpb24tc2VjdGlvbiI7
Ci1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uTG9ja2VkU3R5bGVDbGFz
c05hbWUgPSAibG9ja2VkIjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlv
bi5TZWxlY3RvckxvY2tlZFN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdG9yLWxvY2tlZCI7Ci1XZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uTGFzdEluR3JvdXBTdHlsZUNsYXNz
TmFtZSA9ICJsYXN0LWluLWdyb3VwIjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
U2VjdGlvbi5IZWFkZXJFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAiaGVhZGVyIjsKLVdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5JY29uRWxlbWVudFN0eWxlQ2xhc3NOYW1l
ID0gImljb24iOwotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlNlbGVj
dG9yRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInNlbGVjdG9yIjsKLVdlYkluc3BlY3Rvci5DU1NT
dHlsZURlY2xhcmF0aW9uU2VjdGlvbi5PcmlnaW5FbGVtZW50U3R5bGVDbGFzc05hbWUgPSAib3Jp
Z2luIjsKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Qcm9wZXJ0aWVz
RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInByb3BlcnRpZXMiOwotV2ViSW5zcGVjdG9yLkNTU1N0
eWxlRGVjbGFyYXRpb25TZWN0aW9uLk1hdGNoZWRTZWxlY3RvckVsZW1lbnRTdHlsZUNsYXNzTmFt
ZSA9ICJtYXRjaGVkIjsKKyAgICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgdGhpcy5fb3JpZ2luRWxlbWVudC5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uT3JpZ2luRWxlbWVu
dFN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLl9oZWFkZXJFbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX29yaWdpbkVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlv
blNlY3Rpb24uQXV0aG9yU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lID0gImF1dGhvci1zdHls
ZS1ydWxlLWljb24iOwotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlVz
ZXJTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWUgPSAidXNlci1zdHlsZS1ydWxlLWljb24iOwot
V2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlVzZXJBZ2VudFN0eWxlUnVs
ZUljb25TdHlsZUNsYXNzTmFtZSA9ICJ1c2VyLWFnZW50LXN0eWxlLXJ1bGUtaWNvbiI7Ci1XZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSW5zcGVjdG9yU3R5bGVSdWxlSWNv
blN0eWxlQ2xhc3NOYW1lID0gImluc3BlY3Rvci1zdHlsZS1ydWxlLWljb24iOwotV2ViSW5zcGVj
dG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkluaGVyaXRlZFN0eWxlUnVsZUljb25TdHls
ZUNsYXNzTmFtZSA9ICJpbmhlcml0ZWQtc3R5bGUtcnVsZS1pY29uIjsKLVdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Jbmhlcml0ZWRFbGVtZW50U3R5bGVSdWxlSWNvblN0
eWxlQ2xhc3NOYW1lID0gImluaGVyaXRlZC1lbGVtZW50LXN0eWxlLXJ1bGUtaWNvbiI7CisgICAg
ICAgIHRoaXMuX3Byb3BlcnRpZXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CisgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNFbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3Bl
Y3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Qcm9wZXJ0aWVzRWxlbWVudFN0eWxlQ2xh
c3NOYW1lOworCisgICAgICAgIHRoaXMuX3Byb3BlcnRpZXNUZXh0RWRpdG9yID0gbmV3IFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uVGV4dEVkaXRvcih0aGlzLCBzdHlsZSk7CisgICAg
ICAgIHRoaXMuX3Byb3BlcnRpZXNFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Byb3BlcnRpZXNU
ZXh0RWRpdG9yLmVsZW1lbnQpOworCisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5faGVhZGVyRWxlbWVudCk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fcHJvcGVydGllc0VsZW1lbnQpOworCisgICAgICAgIHZhciBpY29uQ2xhc3NOYW1lOwor
ICAgICAgICBzd2l0Y2ggKHN0eWxlLnR5cGUpIHsKKyAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlLlJ1bGU6CisgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dChzdHlsZS5vd25lclJ1bGUpOworCisgICAgICAgICAgICBpZiAoc3R5bGUuaW5oZXJpdGVkKQor
ICAgICAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24uSW5oZXJpdGVkU3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lOworICAg
ICAgICAgICAgZWxzZSBpZiAoc3R5bGUub3duZXJSdWxlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5D
U1NSdWxlLlR5cGUuQXV0aG9yKQorICAgICAgICAgICAgICAgIGljb25DbGFzc05hbWUgPSBXZWJJ
bnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uQXV0aG9yU3R5bGVSdWxlSWNvblN0
eWxlQ2xhc3NOYW1lOworICAgICAgICAgICAgZWxzZSBpZiAoc3R5bGUub3duZXJSdWxlLnR5cGUg
PT09IFdlYkluc3BlY3Rvci5DU1NSdWxlLlR5cGUuVXNlcikKKyAgICAgICAgICAgICAgICBpY29u
Q2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlVzZXJT
dHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBlbHNlIGlmIChzdHlsZS5v
d25lclJ1bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNTU1J1bGUuVHlwZS5Vc2VyQWdlbnQpCisg
ICAgICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbi5Vc2VyQWdlbnRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAg
ICAgICAgICBlbHNlIGlmIChzdHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLkNT
U1J1bGUuVHlwZS5JbnNwZWN0b3IpCisgICAgICAgICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5JbnNwZWN0b3JTdHlsZVJ1bGVJ
Y29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdl
Ykluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuSW5saW5lOgorICAgICAgICBjYXNl
IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuQXR0cmlidXRlOgorICAgICAg
ICAgICAgaWYgKHN0eWxlLmluaGVyaXRlZCkKKyAgICAgICAgICAgICAgICBpY29uQ2xhc3NOYW1l
ID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkluaGVyaXRlZEVsZW1l
bnRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgaWNvbkNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5ET01UcmVlRWxlbWVudFBhdGhD
b21wb25lbnQuRE9NRWxlbWVudEljb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xh
cmF0aW9uU2VjdGlvbiwKKyAgICAgICAgY29uc29sZS5hc3NlcnQoaWNvbkNsYXNzTmFtZSk7Cisg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChpY29uQ2xhc3NOYW1lKTsKKworICAg
ICAgICBpZiAoIXN0eWxlLmVkaXRhYmxlKQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5Mb2NrZWRT
dHlsZUNsYXNzTmFtZSk7CisgICAgICAgIGVsc2UgaWYgKHN0eWxlLm93bmVyUnVsZSkgeworICAg
ICAgICAgICAgdGhpcy5fY29tbWl0U2VsZWN0b3JLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYklu
c3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0LktleS5FbnRlciwgdGhpcy5fY29tbWl0U2VsZWN0b3IuYmluZCh0aGlzKSwgdGhpcy5fc2Vs
ZWN0b3JFbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJibHVyIiwgdGhpcy5fY29tbWl0U2VsZWN0b3IuYmluZCh0aGlzKSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5TZWxlY3RvckxvY2tlZFN0eWxlQ2xh
c3NOYW1lKTsKKworICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
U2VjdGlvbi5fZ2VuZXJhdGVkTG9ja0ltYWdlcykgeworICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLl9nZW5lcmF0ZWRMb2NrSW1hZ2VzID0gdHJ1ZTsK
KworICAgICAgICAgICAgdmFyIHNwZWNpZmljYXRpb25zID0geyJzdHlsZS1sb2NrLW5vcm1hbCI6
IHtmaWxsQ29sb3I6IFswLCAwLCAwLCAwLjVdfX07CisgICAgICAgICAgICBnZW5lcmF0ZUNvbG9y
ZWRJbWFnZXNGb3JDU1MoIkltYWdlcy9Mb2NrZWQuc3ZnIiwgc3BlY2lmaWNhdGlvbnMsIDgsIDEw
KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMucmVmcmVzaCgpOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3R5bGUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0eWxlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxhc3RJbkdy
b3VwKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250
YWlucyhXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uTGFzdEluR3JvdXBT
dHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgbGFzdEluR3JvdXAobGFz
dCkKICAgICB7CkBAIC0xNTAsMTkgKzEzMCwxOSBAQCBXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5j
bGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5MYXN0
SW5Hcm91cFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5f
ZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9u
U2VjdGlvbi5MYXN0SW5Hcm91cFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAg
IGdldCBmb2N1c2VkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzVGV4
dEVkaXRvci5mb2N1c2VkOwotICAgIH0sCisgICAgfQogCi0gICAgZm9jdXM6IGZ1bmN0aW9uKCkK
KyAgICBmb2N1cygpCiAgICAgewogICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzVGV4dEVkaXRvci5m
b2N1cygpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJl
ZnJlc2goKQogICAgIHsKICAgICAgICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LnJlbW92ZUNoaWxk
cmVuKCk7CiAgICAgICAgIHRoaXMuX29yaWdpbkVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKQEAg
LTI2NCwxNiArMjQ0LDE2IEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlv
bi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9vcmlnaW5FbGVtZW50LmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFdlYkluc3BlY3Rvci5VSVN0cmluZygiSFRNTCBB
dHRyaWJ1dGVzIikpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQog
ICAgIHsKICAgICAgICAgdGhpcy5fcHJvcGVydGllc1RleHRFZGl0b3IudXBkYXRlTGF5b3V0KCk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfY29tbWl0U2VsZWN0b3I6
IGZ1bmN0aW9uKG11dGF0aW9ucykKKyAgICBfY29tbWl0U2VsZWN0b3IobXV0YXRpb25zKQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fc3R5bGUub3duZXJSdWxlKTsKICAgICAg
ICAgaWYgKCF0aGlzLl9zdHlsZS5vd25lclJ1bGUpCkBAIC0yOTAsNCArMjcwLDIwIEBAIFdlYklu
c3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgfQog
fTsKIAotV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLnByb3RvdHlwZS5f
X3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlOworV2Vi
SW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLlN0eWxlQ2xhc3NOYW1lID0gInN0
eWxlLWRlY2xhcmF0aW9uLXNlY3Rpb24iOworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRp
b25TZWN0aW9uLkxvY2tlZFN0eWxlQ2xhc3NOYW1lID0gImxvY2tlZCI7CitXZWJJbnNwZWN0b3Iu
Q1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uU2VsZWN0b3JMb2NrZWRTdHlsZUNsYXNzTmFtZSA9
ICJzZWxlY3Rvci1sb2NrZWQiOworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0
aW9uLkxhc3RJbkdyb3VwU3R5bGVDbGFzc05hbWUgPSAibGFzdC1pbi1ncm91cCI7CitXZWJJbnNw
ZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSGVhZGVyRWxlbWVudFN0eWxlQ2xhc3NO
YW1lID0gImhlYWRlciI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24u
SWNvbkVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKK1dlYkluc3BlY3Rvci5DU1NTdHls
ZURlY2xhcmF0aW9uU2VjdGlvbi5TZWxlY3RvckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZWxl
Y3RvciI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uT3JpZ2luRWxl
bWVudFN0eWxlQ2xhc3NOYW1lID0gIm9yaWdpbiI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24uUHJvcGVydGllc0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJwcm9wZXJ0
aWVzIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5NYXRjaGVkU2Vs
ZWN0b3JFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAibWF0Y2hlZCI7CisKK1dlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5BdXRob3JTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05h
bWUgPSAiYXV0aG9yLXN0eWxlLXJ1bGUtaWNvbiI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNs
YXJhdGlvblNlY3Rpb24uVXNlclN0eWxlUnVsZUljb25TdHlsZUNsYXNzTmFtZSA9ICJ1c2VyLXN0
eWxlLXJ1bGUtaWNvbiI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24u
VXNlckFnZW50U3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lID0gInVzZXItYWdlbnQtc3R5bGUt
cnVsZS1pY29uIjsKK1dlYkluc3BlY3Rvci5DU1NTdHlsZURlY2xhcmF0aW9uU2VjdGlvbi5JbnNw
ZWN0b3JTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWUgPSAiaW5zcGVjdG9yLXN0eWxlLXJ1bGUt
aWNvbiI7CitXZWJJbnNwZWN0b3IuQ1NTU3R5bGVEZWNsYXJhdGlvblNlY3Rpb24uSW5oZXJpdGVk
U3R5bGVSdWxlSWNvblN0eWxlQ2xhc3NOYW1lID0gImluaGVyaXRlZC1zdHlsZS1ydWxlLWljb24i
OworV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb25TZWN0aW9uLkluaGVyaXRlZEVsZW1l
bnRTdHlsZVJ1bGVJY29uU3R5bGVDbGFzc05hbWUgPSAiaW5oZXJpdGVkLWVsZW1lbnQtc3R5bGUt
cnVsZS1pY29uIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NsdXN0ZXJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NsdXN0ZXJDb250ZW50Vmlldy5qcwppbmRleCBhYzk4MzZhLi5j
MDRjZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9DbHVzdGVyQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ2x1c3RlckNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyNSArMjMsMjIgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
Q2x1c3RlckNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNw
ZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3ID0gY2xhc3MgQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOwotCi0gICAgdGhpcy5lbGVtZW50LmNs
YXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFt
ZSk7CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBz
dXBlcihyZXByZXNlbnRlZE9iamVjdCk7CiAKLSAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5l
ciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIoKTsKLSAgICB0aGlzLl9j
b250ZW50Vmlld0NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX2N1
cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmVsZW1lbnQpOworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LlN0
eWxlQ2xhc3NOYW1lKTsKIAotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9u
ZW50c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlk
Q2hhbmdlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50
ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2Vu
dGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50Lk51bWJlck9m
U2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdOdW1iZXJPZlNlYXJjaFJl
c3VsdHNEaWRDaGFuZ2UsIHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50
Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJjbHVzdGVyIjsKKyAgICAgICAgdGhpcy5fY29udGVudFZp
ZXdDb250YWluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyKCk7Cisg
ICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250ZW50Vmlld0RpZENo
YW5nZSwgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmVsZW1l
bnQpOwogCi1XZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50VmlldywKKyAgICAgICAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlLCB0aGlzLl9j
b250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRDaGFuZ2UsIHRoaXMpOworICAgICAg
ICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdl
LCB0aGlzLl9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5n
ZSwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5hZGRFdmVudExpc3Rl
bmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3VsdHNE
aWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdl
LCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAtNDksMTAzICs0NiwxMDMgQEAg
V2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgewogICAg
ICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIu
Y3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICByZXR1cm4gY3VycmVudENvbnRlbnRWaWV3ID8g
Y3VycmVudENvbnRlbnRWaWV3Lm5hdmlnYXRpb25JdGVtcyA6IFtdOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGNvbnRlbnRWaWV3Q29udGFpbmVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBw
b3J0c1NwbGl0Q29udGVudEJyb3dzZXIoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NvbnRl
bnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTcGxp
dENvbnRlbnRCcm93c2VyOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewog
ICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250YWlu
ZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3KQog
ICAgICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAg
ICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5zaG93bigpOwotICAgIH0sCisgICAgfQogCi0g
ICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAgICB7CiAgICAgICAgIHRoaXMu
X2NvbnRlbnRWaWV3Q29udGFpbmVyLmhpZGRlbigpOwotICAgIH0sCisgICAgfQogCi0gICAgY2xv
c2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvbnRl
bnRWaWV3Q29udGFpbmVyLmNsb3NlQWxsQ29udGVudFZpZXdzKCk7CiAKICAgICAgICAgV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlLCB0aGlzLl9jb250
ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICBX
ZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdl
LCB0aGlzLl9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5n
ZSwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5yZW1vdmVFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5OdW1iZXJPZlNlYXJjaFJlc3Vs
dHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hh
bmdlLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbkdvQmFjazogZnVuY3Rpb24oKQor
ICAgIGNhbkdvQmFjaygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdD
b250YWluZXIuY2FuR29CYWNrKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYW5Hb0ZvcndhcmQ6
IGZ1bmN0aW9uKCkKKyAgICBjYW5Hb0ZvcndhcmQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmNhbkdvRm9yd2FyZCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgZ29CYWNrOiBmdW5jdGlvbigpCisgICAgZ29CYWNrKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmdvQmFjaygpOwotICAgIH0sCisgICAgfQogCi0gICAg
Z29Gb3J3YXJkOiBmdW5jdGlvbigpCisgICAgZ29Gb3J3YXJkKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmdvRm9yd2FyZCgpOwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAg
cmV0dXJuIFtdOwogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3Vy
cmVudENvbnRlbnRWaWV3LnNlbGVjdGlvblBhdGhDb21wb25lbnRzOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0cygpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldykKICAg
ICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29u
dGFpbmVyLmN1cnJlbnRDb250ZW50Vmlldy5zdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHM7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFuZGxlQ29weUV2ZW50KCkKICAgICB7CiAgICAg
ICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5j
dXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIHJldHVybiBjdXJyZW50Q29udGVudFZpZXcgJiYg
dHlwZW9mIGN1cnJlbnRDb250ZW50Vmlldy5oYW5kbGVDb3B5RXZlbnQgPT09ICJmdW5jdGlvbiIg
PyBjdXJyZW50Q29udGVudFZpZXcuaGFuZGxlQ29weUV2ZW50LmJpbmQoY3VycmVudENvbnRlbnRW
aWV3KSA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNTYXZlKCkKICAg
ICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmlld0Nv
bnRhaW5lci5jdXJyZW50Q29udGVudFZpZXc7CiAgICAgICAgIHJldHVybiBjdXJyZW50Q29udGVu
dFZpZXcgJiYgY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2F2ZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBzYXZlRGF0YSgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRW
aWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAg
ICAgICByZXR1cm4gY3VycmVudENvbnRlbnRWaWV3ICYmIGN1cnJlbnRDb250ZW50Vmlldy5zYXZl
RGF0YSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU2VhcmNoKCkK
ICAgICB7CiAgICAgICAgIC8vIEFsd2F5cyByZXR1cm4gdHJ1ZSBzbyB3ZSBjYW4gaW50ZXJjZXB0
IHRoZSBzZWFyY2ggcXVlcnkgdG8gcmVzZW5kIGl0IHdoZW4gc3dpdGNoaW5nIGNvbnRlbnQgdmll
d3MuCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG51bWJl
ck9mU2VhcmNoUmVzdWx0cygpCiAgICAgewpAQCAtMTUzLDcgKzE1MCw3IEBAIFdlYkluc3BlY3Rv
ci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWN1cnJlbnRD
b250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNoKQogICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiBjdXJyZW50Q29udGVudFZpZXcubnVt
YmVyT2ZTZWFyY2hSZXN1bHRzOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhhc1BlcmZvcm1l
ZFNlYXJjaCgpCiAgICAgewpAQCAtMTYxLDcgKzE1OCw3IEBAIFdlYkluc3BlY3Rvci5DbHVzdGVy
Q29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50Vmll
dyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNoKQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICByZXR1cm4gY3VycmVudENvbnRlbnRWaWV3Lmhhc1BlcmZvcm1l
ZFNlYXJjaDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhdXRvbWF0aWNhbGx5UmV2ZWFsRmly
c3RTZWFyY2hSZXN1bHQocmV2ZWFsKQogICAgIHsKQEAgLTE2OSw5ICsxNjYsOSBAQCBXZWJJbnNw
ZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCFjdXJy
ZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LmF1dG9tYXRpY2Fs
bHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdCA9IHJldmVhbDsKLSAgICB9LAorICAgIH0KIAotICAg
IHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5KQorICAgIHBlcmZvcm1TZWFyY2gocXVlcnkp
CiAgICAgewogICAgICAgICB0aGlzLl9zZWFyY2hRdWVyeSA9IHF1ZXJ5OwogCkBAIC0xNzksOSAr
MTc2LDkgQEAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3Vw
cG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGN1cnJlbnRDb250ZW50
Vmlldy5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlYXJjaENs
ZWFyZWQ6IGZ1bmN0aW9uKCkKKyAgICBzZWFyY2hDbGVhcmVkKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3NlYXJjaFF1ZXJ5ID0gbnVsbDsKIApAQCAtMTg5LDM1ICsxODYsMzUgQEAgV2ViSW5zcGVj
dG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICghY3VycmVu
dENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5zZWFyY2hDbGVhcmVk
KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb246IGZ1bmN0
aW9uKCkKKyAgICBzZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFy
IGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRD
b250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRD
b250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAg
ICAgICByZXR1cm4gY3VycmVudENvbnRlbnRWaWV3LnNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigp
OwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1bmN0
aW9uKGNoYW5nZUZvY3VzKQorICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0KGNoYW5nZUZv
Y3VzKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2NvbnRl
bnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJyZW50
Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgY3VycmVudENvbnRlbnRWaWV3LnJldmVhbFByZXZpb3Vz
U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbE5l
eHRTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQorICAgIHJldmVhbE5leHRTZWFy
Y2hSZXN1bHQoY2hhbmdlRm9jdXMpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRW
aWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAg
ICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBv
cnRzU2VhcmNoKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjdXJyZW50Q29udGVudFZp
ZXcucmV2ZWFsTmV4dFNlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cyk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcml2YXRlCiAKLSAgICBfY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlOiBmdW5j
dGlvbihldmVudCkKKyAgICBfY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3Q29u
dGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50Vmll
dyAmJiBjdXJyZW50Q29udGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpIHsKQEAgLTIzMCwyMyArMjI3
LDIzIEBAIFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UpOwogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQu
TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlKTsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50Lk5hdmlnYXRpb25J
dGVtc0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29udGVudFZpZXdTZWxlY3Rp
b25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudFZp
ZXdTZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENv
bnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0
aENvbXBvbmVudHNEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRWaWV3
U3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkK
KyAgICBfY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2Uo
ZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLl9jb250ZW50
Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50
Vmlldy5FdmVudC5TdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOwotICAg
IH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRWaWV3TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hh
bmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfY29udGVudFZpZXdOdW1iZXJPZlNlYXJjaFJlc3Vs
dHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0
aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jdXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0yNTQsNCArMjUxLDQgQEAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250
ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnBy
b3RvdHlwZTsKK1dlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUg
PSAiY2x1c3RlciI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFuZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVDb21tYW5kLmpzCmluZGV4IGE5YzUzZjguLjY5NWQ4NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnNvbGVDb21tYW5kLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnNvbGVDb21tYW5kLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CkBAIC0yNywyMCArMjcsMTggQEAKICAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kID0gZnVuY3Rpb24oY29tbWFuZCkKK1dlYkluc3Bl
Y3Rvci5Db25zb2xlQ29tbWFuZCA9IGNsYXNzIENvbnNvbGVDb21tYW5kIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuY29tbWFuZCA9IGNvbW1hbmQ7Ci19
OworICAgIGNvbnN0cnVjdG9yKGNvbW1hbmQpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi1X
ZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmQucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmQsCisgICAgICAgIHRoaXMuY29tbWFuZCA9IGNv
bW1hbmQ7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBkZWNvcmF0ZU1lc3NhZ2VFbGVt
ZW50OiBmdW5jdGlvbihlbGVtZW50KSB7CisgICAgZGVjb3JhdGVNZXNzYWdlRWxlbWVudChlbGVt
ZW50KSB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIHRo
aXMuX2VsZW1lbnQ7CiAKQEAgLTUzLDMwICs1MSwyOCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZUNv
bW1hbmQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2Zvcm1hdHRlZENvbW1hbmQpOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50Owot
ICAgIH0sCisgICAgfQogCi0gICAgdG9NZXNzYWdlRWxlbWVudDogZnVuY3Rpb24oKQorICAgIHRv
TWVzc2FnZUVsZW1lbnQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpCiAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKIAogICAgICAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICByZXR1cm4gdGhpcy5kZWNvcmF0
ZU1lc3NhZ2VFbGVtZW50KGVsZW1lbnQpOwotICAgIH0sCisgICAgfQorCisgICAgdG9DbGlwYm9h
cmRTdHJpbmcoaXNQcmVmaXhPcHRpb25hbCkKKyAgICB7CisgICAgICAgIHJldHVybiAoaXNQcmVm
aXhPcHRpb25hbCA/ICIiIDogIj4gIikgKyB0aGlzLmNvbW1hbmQ7CisgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQogCi0gICAgX2Zvcm1hdENvbW1hbmQ6IGZ1bmN0aW9uKCkKKyAgICBfZm9ybWF0Q29t
bWFuZCgpCiAgICAgewogICAgICAgICB0aGlzLl9mb3JtYXR0ZWRDb21tYW5kID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICB0aGlzLl9mb3JtYXR0ZWRDb21tYW5kLmNs
YXNzTmFtZSA9ICJjb25zb2xlLW1lc3NhZ2UtdGV4dCBzb3VyY2UtY29kZSI7CiAgICAgICAgIHRo
aXMuX2Zvcm1hdHRlZENvbW1hbmQudGV4dENvbnRlbnQgPSB0aGlzLmNvbW1hbmQ7Ci0gICAgfSwK
LQotICAgIHRvQ2xpcGJvYXJkU3RyaW5nOiBmdW5jdGlvbihpc1ByZWZpeE9wdGlvbmFsKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIChpc1ByZWZpeE9wdGlvbmFsID8gIiIgOiAiPiAiKSArIHRoaXMu
Y29tbWFuZDsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmQucHJvdG90
eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUNvbW1h
bmRSZXN1bHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b25zb2xlQ29tbWFuZFJlc3VsdC5qcwppbmRleCBlN2MwZjU5Li5hY2UxMDVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlQ29tbWFu
ZFJlc3VsdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db25zb2xlQ29tbWFuZFJlc3VsdC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMywgMjAxNSBBcHBsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEpvc2VwaCBQZWNvcmFybwog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dApAQCAtMjcsNDAgKzI3LDQyIEBACiAgKiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdCA9IGZ1bmN0aW9uKHJlc3VsdCwgd2Fz
VGhyb3duLCBvcmlnaW5hdGluZ0NvbW1hbmQsIHNhdmVkUmVzdWx0SW5kZXgpCitXZWJJbnNwZWN0
b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQgPSBjbGFzcyBDb25zb2xlQ29tbWFuZFJlc3VsdCBleHRl
bmRzIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwKIHsKLSAgICB2YXIgbGV2
ZWwgPSAod2FzVGhyb3duID8gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3Nh
Z2VMZXZlbC5FcnJvciA6IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdl
TGV2ZWwuTG9nKTsKLSAgICB0aGlzLm9yaWdpbmF0aW5nQ29tbWFuZCA9IG9yaWdpbmF0aW5nQ29t
bWFuZDsKLSAgICB0aGlzLnNhdmVkUmVzdWx0SW5kZXggPSBzYXZlZFJlc3VsdEluZGV4OwotCi0g
ICAgaWYgKHRoaXMuc2F2ZWRSZXN1bHRJbmRleCAmJiB0aGlzLnNhdmVkUmVzdWx0SW5kZXggPiBX
ZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQubWF4aW11bVNhdmVkUmVzdWx0SW5kZXgp
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xlQ29tbWFuZFJlc3VsdC5tYXhpbXVtU2F2ZWRS
ZXN1bHRJbmRleCA9IHRoaXMuc2F2ZWRSZXN1bHRJbmRleDsKKyAgICBjb25zdHJ1Y3RvcihyZXN1
bHQsIHdhc1Rocm93biwgb3JpZ2luYXRpbmdDb21tYW5kLCBzYXZlZFJlc3VsdEluZGV4KQorICAg
IHsKKyAgICAgICAgdmFyIGxldmVsID0gKHdhc1Rocm93biA/IFdlYkluc3BlY3Rvci5MZWdhY3lD
b25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwuRXJyb3IgOiBXZWJJbnNwZWN0b3IuTGVnYWN5Q29u
c29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLkxvZyk7CisgICAgICAgIHRoaXMub3JpZ2luYXRpbmdD
b21tYW5kID0gb3JpZ2luYXRpbmdDb21tYW5kOworICAgICAgICB0aGlzLnNhdmVkUmVzdWx0SW5k
ZXggPSBzYXZlZFJlc3VsdEluZGV4OwogCi0gICAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVN
ZXNzYWdlSW1wbC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5N
ZXNzYWdlU291cmNlLkpTLCBsZXZlbCwgIiIsIG51bGwsIFdlYkluc3BlY3Rvci5MZWdhY3lDb25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRl
ZmluZWQsIHVuZGVmaW5lZCwgW3Jlc3VsdF0pOwotfTsKKyAgICAgICAgaWYgKHRoaXMuc2F2ZWRS
ZXN1bHRJbmRleCAmJiB0aGlzLnNhdmVkUmVzdWx0SW5kZXggPiBXZWJJbnNwZWN0b3IuQ29uc29s
ZUNvbW1hbmRSZXN1bHQuX21heGltdW1TYXZlZFJlc3VsdEluZGV4KQorICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0Ll9tYXhpbXVtU2F2ZWRSZXN1bHRJbmRleCA9
IHRoaXMuc2F2ZWRSZXN1bHRJbmRleDsKIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVz
dWx0Lm1heGltdW1TYXZlZFJlc3VsdEluZGV4ID0gMDsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkxl
Z2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5MZWdhY3lDb25z
b2xlTWVzc2FnZS5NZXNzYWdlU291cmNlLkpTLCBsZXZlbCwgIiIsIG51bGwsIFdlYkluc3BlY3Rv
ci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5SZXN1bHQsIHVuZGVmaW5lZCwgdW5k
ZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgW3Jlc3VsdF0pOworICAgIH0KIAotV2ViSW5z
cGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0LmNsZWFyTWF4aW11bVNhdmVkUmVzdWx0SW5kZXgg
PSBmdW5jdGlvbigpCi17Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0Lm1h
eGltdW1TYXZlZFJlc3VsdEluZGV4ID0gMDsKLX0KKyAgICAvLyBTdGF0aWMKIAotV2ViSW5zcGVj
dG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLkNvbnNvbGVDb21tYW5kUmVzdWx0LAorICAgIHN0YXRpYyBjbGVhck1heGlt
dW1TYXZlZFJlc3VsdEluZGV4KCkKKyAgICB7CisgICAgICAgIFdlYkluc3BlY3Rvci5Db25zb2xl
Q29tbWFuZFJlc3VsdC5fbWF4aW11bVNhdmVkUmVzdWx0SW5kZXggPSAwOworICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCi0gICAgZW5mb3JjZXNDbGlwYm9hcmRQcmVmaXhTdHJpbmc6IGZhbHNlLAor
ICAgIGdldCBlbmZvcmNlc0NsaXBib2FyZFByZWZpeFN0cmluZygpCisgICAgeworICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgfQogCi0gICAgdG9NZXNzYWdlRWxlbWVudDogZnVuY3Rpb24oKQor
ICAgIHRvTWVzc2FnZUVsZW1lbnQoKQogICAgIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBXZWJJ
bnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZS50b01lc3NhZ2VFbGVt
ZW50LmNhbGwodGhpcyk7CiAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29uc29sZS11
c2VyLWNvbW1hbmQtcmVzdWx0Iik7CiAgICAgICAgIGlmICghZWxlbWVudC5nZXRBdHRyaWJ1dGUo
ImRhdGEtbGFiZWxwcmVmaXgiKSkKICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCJk
YXRhLWxhYmVscHJlZml4IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPdXRwdXQ6ICIpKTsKICAg
ICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2xpcGJvYXJk
UHJlZml4U3RyaW5nKCkKICAgICB7CkBAIC02OCw0ICs3MCw0IEBAIFdlYkluc3BlY3Rvci5Db25z
b2xlQ29tbWFuZFJlc3VsdC5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9y
LkNvbnNvbGVDb21tYW5kUmVzdWx0LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
TGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Db25zb2xl
Q29tbWFuZFJlc3VsdC5fbWF4aW11bVNhdmVkUmVzdWx0SW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUdyb3VwLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZUdyb3Vw
LmpzCmluZGV4IDkwNTZmNWYuLjRhNDA4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVHcm91cC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db25zb2xlR3JvdXAuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAwOSBKb3NlcGggUGVjb3Jhcm8KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI3LDIwICsyNywxOCBA
QAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwID0gZnVuY3Rp
b24ocGFyZW50R3JvdXApCitXZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwID0gY2xhc3MgQ29uc29s
ZUdyb3VwIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252
ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBl
cigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMu
cGFyZW50R3JvdXAgPSBwYXJlbnRHcm91cDsKLX07CisgICAgY29uc3RydWN0b3IocGFyZW50R3Jv
dXApCisgICAgeworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZUdyb3Vw
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91
cCwKKyAgICAgICAgdGhpcy5wYXJlbnRHcm91cCA9IHBhcmVudEdyb3VwOworICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCi0gICAgcmVuZGVyOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIHJlbmRlciht
ZXNzYWdlKQogICAgIHsKICAgICAgICAgdmFyIGdyb3VwRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICBncm91cEVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNv
bGUtZ3JvdXAiOwpAQCAtNjIsMjggKzYwLDI4IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlR3JvdXAu
cHJvdG90eXBlID0gewogICAgICAgICBncm91cEVsZW1lbnQuYXBwZW5kQ2hpbGQobWVzc2FnZXNF
bGVtZW50KTsKIAogICAgICAgICByZXR1cm4gZ3JvdXBFbGVtZW50OwotICAgIH0sCisgICAgfQog
Ci0gICAgYWRkTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkKKyAgICBhZGRNZXNzYWdlKG1lc3Nh
Z2UpCiAgICAgewogICAgICAgICB2YXIgZWxlbWVudCA9IG1lc3NhZ2UudG9NZXNzYWdlRWxlbWVu
dCgpOwogICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkxvZ0NvbnRl
bnRWaWV3Lkl0ZW1XcmFwcGVyU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB0aGlzLmFwcGVuZChl
bGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIGFwcGVuZDogZnVuY3Rpb24obWVzc2FnZUVs
ZW1lbnQpCisgICAgYXBwZW5kKG1lc3NhZ2VFbGVtZW50KQogICAgIHsKICAgICAgICAgdGhpcy5f
bWVzc2FnZXNFbGVtZW50LmFwcGVuZENoaWxkKG1lc3NhZ2VFbGVtZW50KTsKLSAgICB9LAorICAg
IH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF90aXRsZU1vdXNlRG93bjogZnVuY3Rpb24oZXZl
bnQpCisgICAgX3RpdGxlTW91c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgZXZlbnQucHJl
dmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90aXRsZUNsaWNrZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF90aXRsZUNsaWNrZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIg
Z3JvdXBUaXRsZUVsZW1lbnQgPSBldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhD
bGFzcygiY29uc29sZS1ncm91cC10aXRsZSIpOwogICAgICAgICBpZiAoZ3JvdXBUaXRsZUVsZW1l
bnQpIHsKQEAgLTk3LDUgKzk1LDMgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVHcm91cC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuQ29uc29sZUdyb3Vw
LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNv
bGVQcm9tcHQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b25zb2xlUHJvbXB0LmpzCmluZGV4IGQ0OTdiMWMuLmZhYjRmNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVQcm9tcHQuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVByb21w
dC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsMTQ5ICsyMywxNDQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCA9IGZ1bmN0aW9uKGRlbGVnYXRl
LCBtaW1lVHlwZSwgZWxlbWVudCkKK1dlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0ID0gY2xhc3Mg
Q29uc29sZVByb21wdCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhN
RTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNh
bGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAg
ICBtaW1lVHlwZSA9IHBhcnNlTUlNRVR5cGUobWltZVR5cGUpLnR5cGU7Ci0KLSAgICB0aGlzLl9l
bGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQuU3R5
bGVDbGFzc05hbWUpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0
b3IuU3ludGF4SGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9kZWxlZ2F0
ZSA9IGRlbGVnYXRlIHx8IG51bGw7Ci0KLSAgICB0aGlzLl9jb2RlTWlycm9yID0gQ29kZU1pcnJv
cih0aGlzLmVsZW1lbnQsIHsKLSAgICAgICAgbGluZVdyYXBwaW5nOiB0cnVlLAotICAgICAgICBt
b2RlOiBtaW1lVHlwZSwKLSAgICAgICAgaW5kZW50V2l0aFRhYnM6IHRydWUsCi0gICAgICAgIGlu
ZGVudFVuaXQ6IDQsCi0gICAgICAgIG1hdGNoQnJhY2tldHM6IHRydWUKLSAgICB9KTsKLQotICAg
IHZhciBrZXlNYXAgPSB7Ci0gICAgICAgICJVcCI6IHRoaXMuX2hhbmRsZVByZXZpb3VzS2V5LmJp
bmQodGhpcyksCi0gICAgICAgICJEb3duIjogdGhpcy5faGFuZGxlTmV4dEtleS5iaW5kKHRoaXMp
LAotICAgICAgICAiQ3RybC1QIjogdGhpcy5faGFuZGxlUHJldmlvdXNLZXkuYmluZCh0aGlzKSwK
LSAgICAgICAgIkN0cmwtTiI6IHRoaXMuX2hhbmRsZU5leHRLZXkuYmluZCh0aGlzKSwKLSAgICAg
ICAgIkVudGVyIjogdGhpcy5faGFuZGxlRW50ZXJLZXkuYmluZCh0aGlzKSwKLSAgICAgICAgIkNt
ZC1FbnRlciI6IHRoaXMuX2hhbmRsZUNvbW1hbmRFbnRlcktleS5iaW5kKHRoaXMpLAotICAgICAg
ICAiRXNjIjogdGhpcy5faGFuZGxlRXNjYXBlS2V5LmJpbmQodGhpcykKLSAgICB9OwotCi0gICAg
dGhpcy5fY29kZU1pcnJvci5hZGRLZXlNYXAoa2V5TWFwKTsKLQotICAgIHRoaXMuX2NvbXBsZXRp
b25Db250cm9sbGVyID0gbmV3IFdlYkluc3BlY3Rvci5Db2RlTWlycm9yQ29tcGxldGlvbkNvbnRy
b2xsZXIodGhpcy5fY29kZU1pcnJvciwgdGhpcyk7Ci0gICAgdGhpcy5fY29tcGxldGlvbkNvbnRy
b2xsZXIuYWRkRXh0ZW5kZWRDb21wbGV0aW9uUHJvdmlkZXIoImphdmFzY3JpcHQiLCBXZWJJbnNw
ZWN0b3IuamF2YVNjcmlwdFJ1bnRpbWVDb21wbGV0aW9uUHJvdmlkZXIpOwotCi0gICAgdGhpcy5f
aGlzdG9yeSA9IFt7fV07Ci0gICAgdGhpcy5faGlzdG9yeUluZGV4ID0gMDsKLX07CisgICAgY29u
c3RydWN0b3IoZGVsZWdhdGUsIG1pbWVUeXBlLCBlbGVtZW50KQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQuU3R5bGVDbGFzc05hbWUgPSAiY29u
c29sZS1wcm9tcHQiOwotV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQuTWF4aW11bUhpc3RvcnlT
aXplID0gMzA7CisgICAgICAgIG1pbWVUeXBlID0gcGFyc2VNSU1FVHlwZShtaW1lVHlwZSkudHlw
ZTsKKworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5Db25zb2xlUHJvbXB0LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TeW50YXhIaWdobGlnaHRlZFN0eWxlQ2xh
c3NOYW1lKTsKIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQucHJvdG90eXBlID0gewotICAg
IGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdCwKKyAgICAgICAgdGhpcy5f
ZGVsZWdhdGUgPSBkZWxlZ2F0ZSB8fCBudWxsOworCisgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Ig
PSBDb2RlTWlycm9yKHRoaXMuZWxlbWVudCwgeworICAgICAgICAgICAgbGluZVdyYXBwaW5nOiB0
cnVlLAorICAgICAgICAgICAgbW9kZTogbWltZVR5cGUsCisgICAgICAgICAgICBpbmRlbnRXaXRo
VGFiczogdHJ1ZSwKKyAgICAgICAgICAgIGluZGVudFVuaXQ6IDQsCisgICAgICAgICAgICBtYXRj
aEJyYWNrZXRzOiB0cnVlCisgICAgICAgIH0pOworCisgICAgICAgIHZhciBrZXlNYXAgPSB7Cisg
ICAgICAgICAgICAiVXAiOiB0aGlzLl9oYW5kbGVQcmV2aW91c0tleS5iaW5kKHRoaXMpLAorICAg
ICAgICAgICAgIkRvd24iOiB0aGlzLl9oYW5kbGVOZXh0S2V5LmJpbmQodGhpcyksCisgICAgICAg
ICAgICAiQ3RybC1QIjogdGhpcy5faGFuZGxlUHJldmlvdXNLZXkuYmluZCh0aGlzKSwKKyAgICAg
ICAgICAgICJDdHJsLU4iOiB0aGlzLl9oYW5kbGVOZXh0S2V5LmJpbmQodGhpcyksCisgICAgICAg
ICAgICAiRW50ZXIiOiB0aGlzLl9oYW5kbGVFbnRlcktleS5iaW5kKHRoaXMpLAorICAgICAgICAg
ICAgIkNtZC1FbnRlciI6IHRoaXMuX2hhbmRsZUNvbW1hbmRFbnRlcktleS5iaW5kKHRoaXMpLAor
ICAgICAgICAgICAgIkVzYyI6IHRoaXMuX2hhbmRsZUVzY2FwZUtleS5iaW5kKHRoaXMpCisgICAg
ICAgIH07CisKKyAgICAgICAgdGhpcy5fY29kZU1pcnJvci5hZGRLZXlNYXAoa2V5TWFwKTsKKwor
ICAgICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29k
ZU1pcnJvckNvbXBsZXRpb25Db250cm9sbGVyKHRoaXMuX2NvZGVNaXJyb3IsIHRoaXMpOworICAg
ICAgICB0aGlzLl9jb21wbGV0aW9uQ29udHJvbGxlci5hZGRFeHRlbmRlZENvbXBsZXRpb25Qcm92
aWRlcigiamF2YXNjcmlwdCIsIFdlYkluc3BlY3Rvci5qYXZhU2NyaXB0UnVudGltZUNvbXBsZXRp
b25Qcm92aWRlcik7CisKKyAgICAgICAgdGhpcy5faGlzdG9yeSA9IFt7fV07CisgICAgICAgIHRo
aXMuX2hpc3RvcnlJbmRleCA9IDA7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
ZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBkZWxlZ2F0ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZGVsZWdhdGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZGVsZWdhdGUoZGVsZWdhdGUpCiAg
ICAgewogICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBzZXQgZXNjYXBlS2V5SGFuZGxlcldoZW5FbXB0eShoYW5kbGVyKQogICAg
IHsKICAgICAgICAgdGhpcy5fZXNjYXBlS2V5SGFuZGxlcldoZW5FbXB0eSA9IGhhbmRsZXI7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgdGV4dCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY29kZU1pcnJvci5nZXRWYWx1ZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHRleHQo
dGV4dCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3Iuc2V0VmFsdWUodGV4dCB8fCAi
Iik7CiAgICAgICAgIHRoaXMuX2NvZGVNaXJyb3IuY2xlYXJIaXN0b3J5KCk7CiAgICAgICAgIHRo
aXMuX2NvZGVNaXJyb3IubWFya0NsZWFuKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGlz
dG9yeSgpCiAgICAgewogICAgICAgICB0aGlzLl9oaXN0b3J5W3RoaXMuX2hpc3RvcnlJbmRleF0g
PSB0aGlzLl9oaXN0b3J5RW50cnlGb3JDdXJyZW50VGV4dCgpOwogICAgICAgICByZXR1cm4gdGhp
cy5faGlzdG9yeTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBoaXN0b3J5KGhpc3RvcnkpCiAg
ICAgewogICAgICAgICB0aGlzLl9oaXN0b3J5ID0gaGlzdG9yeSBpbnN0YW5jZW9mIEFycmF5ID8g
aGlzdG9yeS5zbGljZSgwLCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5NYXhpbXVtSGlzdG9y
eVNpemUpIDogW3t9XTsKICAgICAgICAgdGhpcy5faGlzdG9yeUluZGV4ID0gMDsKICAgICAgICAg
dGhpcy5fcmVzdG9yZUhpc3RvcnlFbnRyeSgwKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBm
b2N1c2VkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb2RlTWlycm9yLmdldFdyYXBw
ZXJFbGVtZW50KCkuY2xhc3NMaXN0LmNvbnRhaW5zKCJDb2RlTWlycm9yLWZvY3VzZWQiKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGZvY3VzOiBmdW5jdGlvbigpCisgICAgZm9jdXMoKQogICAgIHsK
ICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5mb2N1cygpOwotICAgIH0sCisgICAgfQogCi0gICAg
c2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICB0aGlzLl9jb2Rl
TWlycm9yLnJlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVu
Y3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB0aGlzLl9jb2RlTWly
cm9yLnJlZnJlc2goKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUNvbXBsZXRpb25zOiBm
dW5jdGlvbihjb21wbGV0aW9ucywgaW1wbGljaXRTdWZmaXgpCisgICAgdXBkYXRlQ29tcGxldGlv
bnMoY29tcGxldGlvbnMsIGltcGxpY2l0U3VmZml4KQogICAgIHsKICAgICAgICAgdGhpcy5fY29t
cGxldGlvbkNvbnRyb2xsZXIudXBkYXRlQ29tcGxldGlvbnMoY29tcGxldGlvbnMsIGltcGxpY2l0
U3VmZml4KTsKLSAgICB9LAorICAgIH0KIAotICAgIHB1c2hIaXN0b3J5SXRlbTogZnVuY3Rpb24o
dGV4dCkKKyAgICBwdXNoSGlzdG9yeUl0ZW0odGV4dCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Nv
bW1pdEhpc3RvcnlFbnRyeSh7dGV4dH0pOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJvdGVj
dGVkCiAKLSAgICBjb21wbGV0aW9uQ29udHJvbGxlckNvbXBsZXRpb25zTmVlZGVkOiBmdW5jdGlv
bihjb21wbGV0aW9uQ29udHJvbGxlciwgcHJlZml4LCBkZWZhdWx0Q29tcGxldGlvbnMsIGJhc2Us
IHN1ZmZpeCwgZm9yY2VkKQorICAgIGNvbXBsZXRpb25Db250cm9sbGVyQ29tcGxldGlvbnNOZWVk
ZWQoY29tcGxldGlvbkNvbnRyb2xsZXIsIHByZWZpeCwgZGVmYXVsdENvbXBsZXRpb25zLCBiYXNl
LCBzdWZmaXgsIGZvcmNlZCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmRlbGVnYXRlICYmIHR5
cGVvZiB0aGlzLmRlbGVnYXRlLmNvbnNvbGVQcm9tcHRDb21wbGV0aW9uc05lZWRlZCA9PT0gImZ1
bmN0aW9uIikKICAgICAgICAgICAgIHRoaXMuZGVsZWdhdGUuY29uc29sZVByb21wdENvbXBsZXRp
b25zTmVlZGVkKHRoaXMsIGRlZmF1bHRDb21wbGV0aW9ucywgYmFzZSwgcHJlZml4LCBzdWZmaXgs
IGZvcmNlZCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2NvbXBsZXRpb25Db250
cm9sbGVyLnVwZGF0ZUNvbXBsZXRpb25zKGRlZmF1bHRDb21wbGV0aW9ucyk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBjb21wbGV0aW9uQ29udHJvbGxlclNob3VsZEFsbG93RXNjYXBlQ29tcGxldGlv
bjogZnVuY3Rpb24oY29tcGxldGlvbkNvbnRyb2xsZXIpCisgICAgY29tcGxldGlvbkNvbnRyb2xs
ZXJTaG91bGRBbGxvd0VzY2FwZUNvbXBsZXRpb24oY29tcGxldGlvbkNvbnRyb2xsZXIpCiAgICAg
ewogICAgICAgICAvLyBPbmx5IGFsbG93IGVzY2FwZSB0byBjb21wbGV0ZSBpZiB0aGVyZSBpcyB0
ZXh0IGluIHRoZSBwcm9tcHQuIE90aGVyd2lzZSBhbGxvdyBpdCB0byBwYXNzIHRocm91Z2gKICAg
ICAgICAgLy8gc28gZXNjYXBlIHRvIHRvZ2dsZSB0aGUgcXVpY2sgY29uc29sZSBzdGlsbCB3b3Jr
cy4KICAgICAgICAgcmV0dXJuICEhdGhpcy50ZXh0OwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQogCi0gICAgX2hhbmRsZUVzY2FwZUtleTogZnVuY3Rpb24oY29kZU1pcnJvcikKKyAg
ICBfaGFuZGxlRXNjYXBlS2V5KGNvZGVNaXJyb3IpCiAgICAgewogICAgICAgICBpZiAodGhpcy50
ZXh0KQogICAgICAgICAgICAgcmV0dXJuIENvZGVNaXJyb3IuUGFzczsKQEAgLTE3NCw5ICsxNjks
OSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICByZXR1cm4gQ29kZU1pcnJvci5QYXNzOwogCiAgICAgICAgIHRoaXMuX2VzY2FwZUtleUhhbmRs
ZXJXaGVuRW1wdHkoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVQcmV2aW91c0tleTog
ZnVuY3Rpb24oY29kZU1pcnJvcikKKyAgICBfaGFuZGxlUHJldmlvdXNLZXkoY29kZU1pcnJvcikK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jb2RlTWlycm9yLnNvbWV0aGluZ1NlbGVjdGVkKCkp
CiAgICAgICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzOwpAQCAtMTk0LDkgKzE4OSw5IEBA
IFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgKyt0aGlz
Ll9oaXN0b3J5SW5kZXg7CiAKICAgICAgICAgdGhpcy5fcmVzdG9yZUhpc3RvcnlFbnRyeSh0aGlz
Ll9oaXN0b3J5SW5kZXgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZU5leHRLZXk6IGZ1
bmN0aW9uKGNvZGVNaXJyb3IpCisgICAgX2hhbmRsZU5leHRLZXkoY29kZU1pcnJvcikKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl9jb2RlTWlycm9yLnNvbWV0aGluZ1NlbGVjdGVkKCkpCiAgICAg
ICAgICAgICByZXR1cm4gQ29kZU1pcnJvci5QYXNzOwpAQCAtMjE0LDkgKzIwOSw5IEBAIFdlYklu
c3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgLS10aGlzLl9oaXN0
b3J5SW5kZXg7CiAKICAgICAgICAgdGhpcy5fcmVzdG9yZUhpc3RvcnlFbnRyeSh0aGlzLl9oaXN0
b3J5SW5kZXgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZUVudGVyS2V5OiBmdW5jdGlv
bihjb2RlTWlycm9yLCBmb3JjZUNvbW1pdCkKKyAgICBfaGFuZGxlRW50ZXJLZXkoY29kZU1pcnJv
ciwgZm9yY2VDb21taXQpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudFRleHQgPSB0aGlzLnRl
eHQ7CiAKQEAgLTI2Myw5ICsyNTgsOSBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBjb21taXRUZXh0T3JJbnNlcnROZXdMaW5l
LmNhbGwodGhpcywgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29tbWl0SGlzdG9yeUVu
dHJ5OiBmdW5jdGlvbihoaXN0b3J5RW50cnkpCisgICAgX2NvbW1pdEhpc3RvcnlFbnRyeShoaXN0
b3J5RW50cnkpCiAgICAgewogICAgICAgICAvLyBSZXBsYWNlIHRoZSBwcmV2aW91cyBlbnRyeSBp
ZiBpdCBkb2VzIG5vdCBoYXZlIHRleHQgb3IgaWYgdGhlIHRleHQgaXMgdGhlIHNhbWUuCiAgICAg
ICAgIGlmICh0aGlzLl9oaXN0b3J5WzFdICYmICghdGhpcy5faGlzdG9yeVsxXS50ZXh0IHx8IHRo
aXMuX2hpc3RvcnlbMV0udGV4dCA9PT0gaGlzdG9yeUVudHJ5LnRleHQpKSB7CkBAIC0yODIsMTQg
KzI3NywxNCBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICB0aGlzLl9oaXN0b3J5SW5kZXggPSAwOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2hhbmRsZUNvbW1hbmRFbnRlcktleTogZnVuY3Rpb24oY29kZU1pcnJvcikKKyAgICBf
aGFuZGxlQ29tbWFuZEVudGVyS2V5KGNvZGVNaXJyb3IpCiAgICAgewogICAgICAgICB0aGlzLl9o
YW5kbGVFbnRlcktleShjb2RlTWlycm9yLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9y
ZXN0b3JlSGlzdG9yeUVudHJ5OiBmdW5jdGlvbihpbmRleCkKKyAgICBfcmVzdG9yZUhpc3RvcnlF
bnRyeShpbmRleCkKICAgICB7CiAgICAgICAgIHZhciBoaXN0b3J5RW50cnkgPSB0aGlzLl9oaXN0
b3J5W2luZGV4XTsKIApAQCAtMzAxLDE0ICsyOTYsMTQgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVQ
cm9tcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fY29kZU1pcnJvci5jbGVhckhp
c3RvcnkoKTsKIAogICAgICAgICB0aGlzLl9jb2RlTWlycm9yLnNldEN1cnNvcihoaXN0b3J5RW50
cnkuY3Vyc29yIHx8IHtsaW5lOiAwfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGlzdG9yeUVu
dHJ5Rm9yQ3VycmVudFRleHQ6IGZ1bmN0aW9uKCkKKyAgICBfaGlzdG9yeUVudHJ5Rm9yQ3VycmVu
dFRleHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHt0ZXh0OiB0aGlzLnRleHQsIHVuZG9IaXN0
b3J5OiB0aGlzLl9jb2RlTWlycm9yLmdldEhpc3RvcnkoKSwgY3Vyc29yOiB0aGlzLl9jb2RlTWly
cm9yLmdldEN1cnNvcigpfTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZW1lbWJlckN1cnJlbnRU
ZXh0SW5IaXN0b3J5OiBmdW5jdGlvbigpCisgICAgX3JlbWVtYmVyQ3VycmVudFRleHRJbkhpc3Rv
cnkoKQogICAgIHsKICAgICAgICAgdGhpcy5faGlzdG9yeVt0aGlzLl9oaXN0b3J5SW5kZXhdID0g
dGhpcy5faGlzdG9yeUVudHJ5Rm9yQ3VycmVudFRleHQoKTsKIApAQCAtMzE3LDQgKzMxMiw1IEBA
IFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0LnByb3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1X
ZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5TdHlsZUNs
YXNzTmFtZSA9ICJjb25zb2xlLXByb21wdCI7CitXZWJJbnNwZWN0b3IuQ29uc29sZVByb21wdC5N
YXhpbXVtSGlzdG9yeVNpemUgPSAzMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVTZXNzaW9uLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVNlc3Npb24uanMKaW5kZXggYzYxNTll
MS4uNWU1MWVlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29uc29sZVNlc3Npb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZVNlc3Npb24uanMKQEAgLTI2LDM2ICsyNiwzMiBAQAog
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24gPSBmdW5jdGlv
bigpCitXZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24gPSBjbGFzcyBDb25zb2xlU2Vzc2lvbiBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlz
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAg
ICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIGVsZW1lbnQuY2xhc3NOYW1lID0g
ImNvbnNvbGUtc2Vzc2lvbiI7Ci0gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKLSAgICB0aGlz
Ll9tZXNzYWdlc0VsZW1lbnQgPSBlbGVtZW50OwotfTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAg
eworICAgICAgICBzdXBlcigpOwogCi1XZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24ucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24sCisg
ICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAg
ICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtc2Vzc2lvbiI7CisgICAgICAgIHRoaXMu
ZWxlbWVudCA9IGVsZW1lbnQ7CisgICAgICAgIHRoaXMuX21lc3NhZ2VzRWxlbWVudCA9IGVsZW1l
bnQ7CisgICAgfQogCi0gICAgYWRkTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkKKyAgICBhZGRN
ZXNzYWdlKG1lc3NhZ2UpCiAgICAgewogICAgICAgICB2YXIgbWVzc2FnZUVsZW1lbnQgPSBtZXNz
YWdlLnRvTWVzc2FnZUVsZW1lbnQoKTsKICAgICAgICAgbWVzc2FnZUVsZW1lbnQuY2xhc3NMaXN0
LmFkZChXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuSXRlbVdyYXBwZXJTdHlsZUNsYXNzTmFt
ZSk7CiAgICAgICAgIHRoaXMuX21lc3NhZ2VzRWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdlRWxl
bWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhcHBlbmQ6IGZ1bmN0aW9uKG1lc3NhZ2VFbGVt
ZW50KQorICAgIGFwcGVuZChtZXNzYWdlRWxlbWVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX21l
c3NhZ2VzRWxlbWVudC5hcHBlbmRDaGlsZChtZXNzYWdlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBoYXNNZXNzYWdlczogZnVuY3Rpb24oKQorICAgIGhhc01lc3NhZ2VzKCkKICAgICB7
CiAgICAgICAgIHJldHVybiAhIXRoaXMuX21lc3NhZ2VzRWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0
aDsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuQ29uc29sZVNlc3Npb24ucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEJyb3dzZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nl
ci5qcwppbmRleCBlYTYwNDRmLi43YjZjNzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50QnJvd3Nlci5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
MTE3ICsyMywxMDUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIgPSBmdW5jdGlvbihlbGVtZW50LCBkZWxlZ2F0
ZSwgZGlzYWJsZUJhY2tGb3J3YXJkKQorV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyID0gY2xh
c3MgQ29udGVudEJyb3dzZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8g
RklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFu
ZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwot
Ci0gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Db250
ZW50QnJvd3Nlci5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0g
bmV3IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyOwotICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKLQotICAgIHRoaXMuX2NvbnRlbnRW
aWV3Q29udGFpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lcjsKLSAg
ICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2Us
IHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5fZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5lbGVtZW50KTsKLQot
ICAgIHRoaXMuX2ZpbmRCYW5uZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIodGhpcyk7
Ci0gICAgdGhpcy5fZmluZEtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJv
YXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFu
ZE9yQ29udHJvbCwgIkYiLCB0aGlzLl9zaG93RmluZEJhbm5lci5iaW5kKHRoaXMpKTsKLSAgICB0
aGlzLl9maW5kQmFubmVyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIu
RXZlbnQuRGlkU2hvdywgdGhpcy5fZmluZEJhbm5lckRpZFNob3csIHRoaXMpOwotICAgIHRoaXMu
X2ZpbmRCYW5uZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5FdmVu
dC5EaWRIaWRlLCB0aGlzLl9maW5kQmFubmVyRGlkSGlkZSwgdGhpcyk7Ci0KLSAgICB0aGlzLl9z
YXZlS2V5Ym9hcmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChX
ZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCAi
UyIsIHRoaXMuX3NhdmUuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fc2F2ZUFzS2V5Ym9hcmRTaG9y
dGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5TaGlmdCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRyb2wsICJTIiwgdGhpcy5fc2F2ZUFzLmJpbmQodGhp
cykpOwotCi0gICAgaWYgKCFkaXNhYmxlQmFja0ZvcndhcmQpIHsKLSAgICAgICAgdGhpcy5fYmFj
a0tleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdl
Ykluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYkluc3BlY3Rv
ci5LZXlib2FyZFNob3J0Y3V0LktleS5MZWZ0LCB0aGlzLl9iYWNrQnV0dG9uQ2xpY2tlZC5iaW5k
KHRoaXMpKTsKLSAgICAgICAgdGhpcy5fZm9yd2FyZEtleWJvYXJkU2hvcnRjdXQgPSBuZXcgV2Vi
SW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQu
TW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5SaWdo
dCwgdGhpcy5fZm9yd2FyZEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgdmFy
IGZvcndhcmRBcnJvdywgYmFja0Fycm93OwotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRm
b3JtLmlzTGVnYWN5TWFjT1MpIHsKLSAgICAgICAgICAgIGZvcndhcmRBcnJvdyA9IHtzcmM6ICJJ
bWFnZXMvTGVnYWN5L0ZvcndhcmRBcnJvdy5zdmciLCB3aWR0aDogOSwgaGVpZ2h0OiA5fTsKLSAg
ICAgICAgICAgIGJhY2tBcnJvdyA9IHtzcmM6ICJJbWFnZXMvTGVnYWN5L0JhY2tBcnJvdy5zdmci
LCB3aWR0aDogOSwgaGVpZ2h0OiA5fTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZv
cndhcmRBcnJvdyA9IHtzcmM6ICJJbWFnZXMvRm9yd2FyZEFycm93LnN2ZyIsIHdpZHRoOiA4LCBo
ZWlnaHQ6IDEzfTsKLSAgICAgICAgICAgIGJhY2tBcnJvdyA9IHtzcmM6ICJJbWFnZXMvQmFja0Fy
cm93LnN2ZyIsIHdpZHRoOiA4LCBoZWlnaHQ6IDEzfTsKLSAgICAgICAgfQorICAgIGNvbnN0cnVj
dG9yKGVsZW1lbnQsIGRlbGVnYXRlLCBkaXNhYmxlQmFja0ZvcndhcmQpCisgICAgeworICAgICAg
ICBzdXBlcigpOwogCi0gICAgICAgIHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5l
dyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImJhY2siLCBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkJhY2sgKCVzKSIpLmZvcm1hdCh0aGlzLl9iYWNrS2V5Ym9hcmRTaG9ydGN1dC5k
aXNwbGF5TmFtZSksIGJhY2tBcnJvdy5zcmMsIGJhY2tBcnJvdy53aWR0aCwgYmFja0Fycm93Lmhl
aWdodCk7Ci0gICAgICAgIHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0
aGlzLl9iYWNrQnV0dG9uQ2xpY2tlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX2JhY2tCdXR0b25O
YXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRpb25C
YXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fYmFja0J1dHRvbk5hdmlnYXRpb25JdGVtKTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
Q29udGVudEJyb3dzZXIuU3R5bGVDbGFzc05hbWUpOwogCi0gICAgICAgIHRoaXMuX2ZvcndhcmRC
dXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0oImZvcndhcmQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcndhcmQgKCVzKSIpLmZvcm1h
dCh0aGlzLl9mb3J3YXJkS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSksIGZvcndhcmRBcnJv
dy5zcmMsIGZvcndhcmRBcnJvdy53aWR0aCwgZm9yd2FyZEFycm93LmhlaWdodCk7Ci0gICAgICAg
IHRoaXMuX2ZvcndhcmRCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9mb3J3YXJk
QnV0dG9uQ2xpY2tlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX2ZvcndhcmRCdXR0b25OYXZpZ2F0
aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRk
TmF2aWdhdGlvbkl0ZW0odGhpcy5fZm9yd2FyZEJ1dHRvbk5hdmlnYXRpb25JdGVtKTsKKyAgICAg
ICAgdGhpcy5fbmF2aWdhdGlvbkJhciA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhcjsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9uYXZpZ2F0aW9uQmFyLmVs
ZW1lbnQpOwogCi0gICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0o
bmV3IFdlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW0pOwotICAgIH0KKyAgICAgICAg
dGhpcy5fY29udGVudFZpZXdDb250YWluZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
Q29udGFpbmVyOworICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29u
dGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhp
cyk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udGVudFZpZXdD
b250YWluZXIuZWxlbWVudCk7CiAKLSAgICB0aGlzLl9oaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlv
bkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbTsK
LSAgICB0aGlzLl9oaWVyYXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLkV2ZW50LlBhdGhD
b21wb25lbnRXYXNTZWxlY3RlZCwgdGhpcy5faGllcmFyY2hpY2FsUGF0aENvbXBvbmVudFdhc1Nl
bGVjdGVkLCB0aGlzKTsKLSAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLmFkZE5hdmlnYXRpb25JdGVt
KHRoaXMuX2hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbSk7CisgICAgICAgIHRoaXMuX2Zp
bmRCYW5uZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbmRCYW5uZXIodGhpcyk7CisgICAgICAgIHRo
aXMuX2ZpbmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0
Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRPckNvbnRy
b2wsICJGIiwgdGhpcy5fc2hvd0ZpbmRCYW5uZXIuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMu
X2ZpbmRCYW5uZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5FdmVu
dC5EaWRTaG93LCB0aGlzLl9maW5kQmFubmVyRGlkU2hvdywgdGhpcyk7CisgICAgICAgIHRoaXMu
X2ZpbmRCYW5uZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRmluZEJhbm5lci5FdmVu
dC5EaWRIaWRlLCB0aGlzLl9maW5kQmFubmVyRGlkSGlkZSwgdGhpcyk7CiAKLSAgICB0aGlzLl9j
b250ZW50Vmlld1NlbGVjdGlvblBhdGhOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
SGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtOworICAgICAgICB0aGlzLl9zYXZlS2V5Ym9h
cmRTaG9ydGN1dCA9IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChXZWJJbnNwZWN0
b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db21tYW5kT3JDb250cm9sLCAiUyIsIHRoaXMu
X3NhdmUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX3NhdmVBc0tleWJvYXJkU2hvcnRjdXQg
PSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJk
U2hvcnRjdXQuTW9kaWZpZXIuU2hpZnQgfCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5N
b2RpZmllci5Db21tYW5kT3JDb250cm9sLCAiUyIsIHRoaXMuX3NhdmVBcy5iaW5kKHRoaXMpKTsK
IAotICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0obmV3IFdlYkluc3Bl
Y3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0pOworICAgICAgICBpZiAoIWRpc2FibGVC
YWNrRm9yd2FyZCkgeworICAgICAgICAgICAgdGhpcy5fYmFja0tleWJvYXJkU2hvcnRjdXQgPSBu
ZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hv
cnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCB8IFdlYkluc3BlY3Rvci5LZXlib2FyZFNo
b3J0Y3V0Lk1vZGlmaWVyLkNvbnRyb2wsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lktl
eS5MZWZ0LCB0aGlzLl9iYWNrQnV0dG9uQ2xpY2tlZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAg
IHRoaXMuX2ZvcndhcmRLZXlib2FyZFNob3J0Y3V0ID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2Fy
ZFNob3J0Y3V0KFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0Lk1vZGlmaWVyLkNvbW1hbmRP
ckNvbnRyb2wgfCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5Nb2RpZmllci5Db250cm9s
LCBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dC5LZXkuUmlnaHQsIHRoaXMuX2ZvcndhcmRC
dXR0b25DbGlja2VkLmJpbmQodGhpcykpOwogCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlv
blBhdGhDb21wb25lbnRzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhD
b21wb25lbnREaWRDaGFuZ2UsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVtZW50
YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U3VwcGxlbWVu
dGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZl
bnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld051bWJl
ck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50Lk5h
dmlnYXRpb25JdGVtc0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdOYXZpZ2F0aW9uSXRlbXNE
aWRDaGFuZ2UsIHRoaXMpOworICAgICAgICAgICAgdmFyIGZvcndhcmRBcnJvdywgYmFja0Fycm93
OworICAgICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TKSB7
CisgICAgICAgICAgICAgICAgZm9yd2FyZEFycm93ID0ge3NyYzogIkltYWdlcy9MZWdhY3kvRm9y
d2FyZEFycm93LnN2ZyIsIHdpZHRoOiA5LCBoZWlnaHQ6IDl9OworICAgICAgICAgICAgICAgIGJh
Y2tBcnJvdyA9IHtzcmM6ICJJbWFnZXMvTGVnYWN5L0JhY2tBcnJvdy5zdmciLCB3aWR0aDogOSwg
aGVpZ2h0OiA5fTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZm9yd2Fy
ZEFycm93ID0ge3NyYzogIkltYWdlcy9Gb3J3YXJkQXJyb3cuc3ZnIiwgd2lkdGg6IDgsIGhlaWdo
dDogMTN9OworICAgICAgICAgICAgICAgIGJhY2tBcnJvdyA9IHtzcmM6ICJJbWFnZXMvQmFja0Fy
cm93LnN2ZyIsIHdpZHRoOiA4LCBoZWlnaHQ6IDEzfTsKKyAgICAgICAgICAgIH0KIAotICAgIHRo
aXMuX2RlbGVnYXRlID0gZGVsZWdhdGUgfHwgbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX2JhY2tC
dXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0oImJhY2siLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkJhY2sgKCVzKSIpLmZvcm1hdCh0aGlz
Ll9iYWNrS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSksIGJhY2tBcnJvdy5zcmMsIGJhY2tB
cnJvdy53aWR0aCwgYmFja0Fycm93LmhlaWdodCk7CisgICAgICAgICAgICB0aGlzLl9iYWNrQnV0
dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fYmFja0J1dHRvbkNsaWNrZWQsIHRoaXMp
OworICAgICAgICAgICAgdGhpcy5fYmFja0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBm
YWxzZTsKKyAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0o
dGhpcy5fYmFja0J1dHRvbk5hdmlnYXRpb25JdGVtKTsKIAotICAgIHRoaXMuX2N1cnJlbnRDb250
ZW50Vmlld05hdmlnYXRpb25JdGVtcyA9IFtdOwotfTsKKyAgICAgICAgICAgIHRoaXMuX2Zvcndh
cmRCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0oImZvcndhcmQiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZvcndhcmQgKCVzKSIpLmZv
cm1hdCh0aGlzLl9mb3J3YXJkS2V5Ym9hcmRTaG9ydGN1dC5kaXNwbGF5TmFtZSksIGZvcndhcmRB
cnJvdy5zcmMsIGZvcndhcmRBcnJvdy53aWR0aCwgZm9yd2FyZEFycm93LmhlaWdodCk7CisgICAg
ICAgICAgICB0aGlzLl9mb3J3YXJkQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5f
Zm9yd2FyZEJ1dHRvbkNsaWNrZWQsIHRoaXMpOworICAgICAgICAgICAgdGhpcy5fZm9yd2FyZEJ1
dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX25h
dmlnYXRpb25CYXIuYWRkTmF2aWdhdGlvbkl0ZW0odGhpcy5fZm9yd2FyZEJ1dHRvbk5hdmlnYXRp
b25JdGVtKTsKIAotLy8gRklYTUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNs
YXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0
ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIpOwor
ICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbShuZXcgV2Vi
SW5zcGVjdG9yLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbSk7CisgICAgICAgIH0KIAotV2ViSW5zcGVj
dG9yLkNvbnRlbnRCcm93c2VyLlN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQtYnJvd3NlciI7Cisg
ICAgICAgIHRoaXMuX2hpZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNw
ZWN0b3IuSGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtOworICAgICAgICB0aGlzLl9oaWVy
YXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
SGllcmFyY2hpY2FsUGF0aE5hdmlnYXRpb25JdGVtLkV2ZW50LlBhdGhDb21wb25lbnRXYXNTZWxl
Y3RlZCwgdGhpcy5faGllcmFyY2hpY2FsUGF0aENvbXBvbmVudFdhc1NlbGVjdGVkLCB0aGlzKTsK
KyAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci5hZGROYXZpZ2F0aW9uSXRlbSh0aGlzLl9oaWVy
YXJjaGljYWxQYXRoTmF2aWdhdGlvbkl0ZW0pOwogCi1XZWJJbnNwZWN0b3IuQ29udGVudEJyb3dz
ZXIuRXZlbnQgPSB7Ci0gICAgQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZTogImNv
bnRlbnQtYnJvd3Nlci1jdXJyZW50LXJlcHJlc2VudGVkLW9iamVjdHMtZGlkLWNoYW5nZSIsCi0g
ICAgQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlOiAiY29udGVudC1icm93c2VyLWN1cnJlbnQt
Y29udGVudC12aWV3LWRpZC1jaGFuZ2UiCi19OworICAgICAgICB0aGlzLl9jb250ZW50Vmlld1Nl
bGVjdGlvblBhdGhOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aE5hdmlnYXRpb25JdGVtOworCisgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuYWRkTmF2
aWdhdGlvbkl0ZW0obmV3IFdlYkluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0p
OwogCi1XZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIsCisgICAgICAgIFdlYkluc3BlY3Rv
ci5Db250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5F
dmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSwgdGhpcy5fY29udGVudFZpZXdT
ZWxlY3Rpb25QYXRoQ29tcG9uZW50RGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LkV2ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSwgdGhpcy5fY29u
dGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMpOwor
ICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0
aGlzLl9jb250ZW50Vmlld051bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSwgdGhpcyk7Cisg
ICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldy5FdmVudC5OYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2UsIHRoaXMuX2Nv
bnRlbnRWaWV3TmF2aWdhdGlvbkl0ZW1zRGlkQ2hhbmdlLCB0aGlzKTsKKworICAgICAgICB0aGlz
Ll9kZWxlZ2F0ZSA9IGRlbGVnYXRlIHx8IG51bGw7CisKKyAgICAgICAgdGhpcy5fY3VycmVudENv
bnRlbnRWaWV3TmF2aWdhdGlvbkl0ZW1zID0gW107CisgICAgfQogCiAgICAgLy8gUHVibGljCiAK
ICAgICBnZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBuYXZpZ2F0aW9uQmFyKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9uYXZpZ2F0aW9uQmFyOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNv
bnRlbnRWaWV3Q29udGFpbmVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50
Vmlld0NvbnRhaW5lcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkZWxlZ2F0ZSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gdGhpcy5fZGVsZWdhdGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgZGVsZWdhdGUobmV3RGVsZWdhdGUpCiAgICAgewogICAgICAgICB0aGlzLl9kZWxlZ2F0ZSA9
IG5ld0RlbGVnYXRlIHx8IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY3VycmVudENv
bnRlbnRWaWV3KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRh
aW5lci5jdXJyZW50Q29udGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY3VycmVu
dFJlcHJlc2VudGVkT2JqZWN0cygpCiAgICAgewpAQCAtMTU1LDQ3ICsxNDMsNDcgQEAgV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiByZXByZXNlbnRlZE9iamVjdHM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVM
YXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgdGhp
cy5fbmF2aWdhdGlvbkJhci51cGRhdGVMYXlvdXQoKTsKICAgICAgICAgdGhpcy5fY29udGVudFZp
ZXdDb250YWluZXIudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93Q29u
dGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3Qs
IGNvb2tpZSkKKyAgICBzaG93Q29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdChyZXByZXNl
bnRlZE9iamVjdCwgY29va2llKQogICAgIHsKICAgICAgICAgdmFyIGNvbnRlbnRWaWV3ID0gdGhp
cy5jb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0KTsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLnNob3dDb250ZW50Vmlldyhj
b250ZW50VmlldywgY29va2llKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dDb250ZW50Vmll
dzogZnVuY3Rpb24oY29udGVudFZpZXcsIGNvb2tpZSkKKyAgICBzaG93Q29udGVudFZpZXcoY29u
dGVudFZpZXcsIGNvb2tpZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmll
d0NvbnRhaW5lci5zaG93Q29udGVudFZpZXcoY29udGVudFZpZXcsIGNvb2tpZSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBjb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0OiBmdW5jdGlvbihy
ZXByZXNlbnRlZE9iamVjdCwgb25seUV4aXN0aW5nKQorICAgIGNvbnRlbnRWaWV3Rm9yUmVwcmVz
ZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QsIG9ubHlFeGlzdGluZykKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5jb250ZW50Vmlld0ZvclJlcHJl
c2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LCBvbmx5RXhpc3RpbmcpOwotICAgIH0sCisg
ICAgfQogCi0gICAgY2FuR29CYWNrOiBmdW5jdGlvbigpCisgICAgY2FuR29CYWNrKCkKICAgICB7
CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50Vmll
dzsKICAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldyAmJiBjdXJyZW50Q29udGVudFZpZXcu
Y2FuR29CYWNrKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmNhbkdvQmFjaygpOwotICAgIH0sCisgICAgfQogCi0g
ICAgY2FuR29Gb3J3YXJkOiBmdW5jdGlvbigpCisgICAgY2FuR29Gb3J3YXJkKCkKICAgICB7CiAg
ICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsK
ICAgICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldyAmJiBjdXJyZW50Q29udGVudFZpZXcuY2Fu
R29Gb3J3YXJkKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmNhbkdvRm9yd2FyZCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgZ29CYWNrOiBmdW5jdGlvbigpCisgICAgZ29CYWNrKCkKICAgICB7CiAgICAgICAgIHZh
ciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAg
aWYgKGN1cnJlbnRDb250ZW50VmlldyAmJiBjdXJyZW50Q29udGVudFZpZXcuY2FuR29CYWNrKCkp
IHsKQEAgLTIwOCw5ICsxOTYsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90
eXBlID0gewogCiAgICAgICAgIC8vIFRoZSBfdXBkYXRlQmFja0ZvcndhcmRCdXR0b25zIGZ1bmN0
aW9uIGlzIGNhbGxlZCBieSBfY3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlLAogICAgICAgICAv
LyBzbyBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlIGNhbGxlZCBoZXJlLgotICAgIH0sCisgICAgfQog
Ci0gICAgZ29Gb3J3YXJkOiBmdW5jdGlvbigpCisgICAgZ29Gb3J3YXJkKCkKICAgICB7CiAgICAg
ICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAg
ICAgICAgaWYgKGN1cnJlbnRDb250ZW50VmlldyAmJiBjdXJyZW50Q29udGVudFZpZXcuY2FuR29G
b3J3YXJkKCkpIHsKQEAgLTIyMyw2NiArMjExLDY2IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJv
d3Nlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gVGhlIF91cGRhdGVCYWNrRm9yd2FyZEJ1
dHRvbnMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IF9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2Us
CiAgICAgICAgIC8vIHNvIGl0IGRvZXMgbm90IG5lZWQgdG8gYmUgY2FsbGVkIGhlcmUuCi0gICAg
fSwKKyAgICB9CiAKLSAgICBmaW5kQmFubmVyUGVyZm9ybVNlYXJjaDogZnVuY3Rpb24oZmluZEJh
bm5lciwgcXVlcnkpCisgICAgZmluZEJhbm5lclBlcmZvcm1TZWFyY2goZmluZEJhbm5lciwgcXVl
cnkpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50
Q29udGVudFZpZXc7CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50
Q29udGVudFZpZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgY3VycmVudENvbnRlbnRWaWV3LnBlcmZvcm1TZWFyY2gocXVlcnkpOwotICAgIH0sCisgICAg
fQogCi0gICAgZmluZEJhbm5lclNlYXJjaENsZWFyZWQ6IGZ1bmN0aW9uKGZpbmRCYW5uZXIpCisg
ICAgZmluZEJhbm5lclNlYXJjaENsZWFyZWQoZmluZEJhbm5lcikKICAgICB7CiAgICAgICAgIHZh
ciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAg
aWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1Nl
YXJjaCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjdXJyZW50Q29udGVudFZpZXcu
c2VhcmNoQ2xlYXJlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgZmluZEJhbm5lclNlYXJjaFF1
ZXJ5Rm9yU2VsZWN0aW9uOiBmdW5jdGlvbihmaW5kQmFubmVyKQorICAgIGZpbmRCYW5uZXJTZWFy
Y2hRdWVyeUZvclNlbGVjdGlvbihmaW5kQmFubmVyKQogICAgIHsKICAgICAgICAgdmFyIGN1cnJl
bnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoIWN1
cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2VhcmNoKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb250ZW50
Vmlldy5zZWFyY2hRdWVyeVdpdGhTZWxlY3Rpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZp
bmRCYW5uZXJSZXZlYWxQcmV2aW91c1Jlc3VsdDogZnVuY3Rpb24oZmluZEJhbm5lcikKKyAgICBm
aW5kQmFubmVyUmV2ZWFsUHJldmlvdXNSZXN1bHQoZmluZEJhbm5lcikKICAgICB7CiAgICAgICAg
IHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAg
ICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0
c1NlYXJjaCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjdXJyZW50Q29udGVudFZp
ZXcucmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQoIWZpbmRCYW5uZXIuc2hvd2luZyk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBmaW5kQmFubmVyUmV2ZWFsTmV4dFJlc3VsdDogZnVuY3Rpb24oZmlu
ZEJhbm5lcikKKyAgICBmaW5kQmFubmVyUmV2ZWFsTmV4dFJlc3VsdChmaW5kQmFubmVyKQogICAg
IHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRW
aWV3OwogICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRW
aWV3LnN1cHBvcnRzU2VhcmNoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGN1cnJl
bnRDb250ZW50Vmlldy5yZXZlYWxOZXh0U2VhcmNoUmVzdWx0KCFmaW5kQmFubmVyLnNob3dpbmcp
OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2JhY2tCdXR0b25DbGlj
a2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfYmFja0J1dHRvbkNsaWNrZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICB0aGlzLmdvQmFjaygpOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZvcndhcmRC
dXR0b25DbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZm9yd2FyZEJ1dHRvbkNsaWNrZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmdvRm9yd2FyZCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3NhdmVEYXRhVG9GaWxlOiBmdW5jdGlvbihzYXZlRGF0YSwgZm9yY2VTYXZlQXMpCisg
ICAgX3NhdmVEYXRhVG9GaWxlKHNhdmVEYXRhLCBmb3JjZVNhdmVBcykKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHNhdmVEYXRhKTsKICAgICAgICAgaWYgKCFzYXZlRGF0YSkKQEAgLTI5
OSw2MiArMjg3LDYyIEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNh
dmUoc2F2ZURhdGEudXJsLCBzYXZlRGF0YS5jb250ZW50LCBmYWxzZSwgZm9yY2VTYXZlQXMgfHwg
c2F2ZURhdGEuZm9yY2VTYXZlQXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NhdmU6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9zYXZlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRD
b250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRWaWV3OwogICAgICAgICBpZiAoIWN1cnJl
bnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRWaWV3LnN1cHBvcnRzU2F2ZSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zYXZlRGF0YVRvRmlsZShjdXJyZW50Q29u
dGVudFZpZXcuc2F2ZURhdGEpOwotICAgIH0sCisgICAgfQogCi0gICAgX3NhdmVBczogZnVuY3Rp
b24oZXZlbnQpCisgICAgX3NhdmVBcyhldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50
Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKCFjdXJy
ZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NhdmUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2F2ZURhdGFUb0ZpbGUoY3VycmVudENv
bnRlbnRWaWV3LnNhdmVEYXRhLCB0cnVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93Rmlu
ZEJhbm5lcjogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Nob3dGaW5kQmFubmVyKGV2ZW50KQogICAg
IHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENvbnRlbnRW
aWV3OwogICAgICAgICBpZiAoIWN1cnJlbnRDb250ZW50VmlldyB8fCAhY3VycmVudENvbnRlbnRW
aWV3LnN1cHBvcnRzU2VhcmNoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMu
X2ZpbmRCYW5uZXIuc2hvdygpOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZpbmRCYW5uZXJEaWRT
aG93OiBmdW5jdGlvbihldmVudCkKKyAgICBfZmluZEJhbm5lckRpZFNob3coZXZlbnQpCiAgICAg
ewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRWaWV3ID0gdGhpcy5jdXJyZW50Q29udGVudFZp
ZXc7CiAgICAgICAgIGlmICghY3VycmVudENvbnRlbnRWaWV3IHx8ICFjdXJyZW50Q29udGVudFZp
ZXcuc3VwcG9ydHNTZWFyY2gpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgY3VycmVu
dENvbnRlbnRWaWV3LmF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdCA9IHRydWU7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZmluZEJhbm5lckRpZEhpZGU6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9maW5kQmFubmVyRGlkSGlkZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjdXJy
ZW50Q29udGVudFZpZXcgPSB0aGlzLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYgKCFj
dXJyZW50Q29udGVudFZpZXcgfHwgIWN1cnJlbnRDb250ZW50Vmlldy5zdXBwb3J0c1NlYXJjaCkK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBjdXJyZW50Q29udGVudFZpZXcuYXV0b21h
dGljYWxseVJldmVhbEZpcnN0U2VhcmNoUmVzdWx0ID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfY29udGVudFZpZXdOdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2U6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9jb250ZW50Vmlld051bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZShl
dmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuY3VycmVudENv
bnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX2ZpbmRCYW5u
ZXIubnVtYmVyT2ZSZXN1bHRzID0gdGhpcy5jdXJyZW50Q29udGVudFZpZXcubnVtYmVyT2ZTZWFy
Y2hSZXN1bHRzOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZUhpZXJhcmNoaWNhbFBhdGhO
YXZpZ2F0aW9uSXRlbTogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCisgICAgX3VwZGF0ZUhp
ZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbShyZXByZXNlbnRlZE9iamVjdCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5kZWxlZ2F0ZSB8fCB0eXBlb2YgdGhpcy5kZWxlZ2F0ZS5jb250ZW50
QnJvd3NlclRyZWVFbGVtZW50Rm9yUmVwcmVzZW50ZWRPYmplY3QgIT09ICJmdW5jdGlvbiIpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0zNjksOSArMzU3LDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRl
bnRCcm93c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2hpZXJh
cmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5jb21wb25lbnRzID0gcGF0aENvbXBvbmVudHM7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlQ29udGVudFZpZXdTZWxlY3Rpb25QYXRoTmF2aWdh
dGlvbkl0ZW06IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAgIF91cGRhdGVDb250ZW50Vmlld1Nl
bGVjdGlvblBhdGhOYXZpZ2F0aW9uSXRlbShjb250ZW50VmlldykKICAgICB7CiAgICAgICAgIHZh
ciBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cyA9IGNvbnRlbnRWaWV3ID8gY29udGVudFZpZXcuc2Vs
ZWN0aW9uUGF0aENvbXBvbmVudHMgfHwgW10gOiBbXTsKICAgICAgICAgdGhpcy5fY29udGVudFZp
ZXdTZWxlY3Rpb25QYXRoTmF2aWdhdGlvbkl0ZW0uY29tcG9uZW50cyA9IHNlbGVjdGlvblBhdGhD
b21wb25lbnRzOwpAQCAtMzg5LDE4ICszNzcsMTggQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93
c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb25CYXIuaW5zZXJ0
TmF2aWdhdGlvbkl0ZW0odGhpcy5fY29udGVudFZpZXdTZWxlY3Rpb25QYXRoTmF2aWdhdGlvbkl0
ZW0sIGhpZXJhcmNoaWNhbFBhdGhJdGVtSW5kZXggKyAxKTsKICAgICAgICAgICAgIHRoaXMuX2hp
ZXJhcmNoaWNhbFBhdGhOYXZpZ2F0aW9uSXRlbS5hbHdheXNTaG93TGFzdFBhdGhDb21wb25lbnRT
ZXBhcmF0b3IgPSB0cnVlOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRl
QmFja0ZvcndhcmRCdXR0b25zOiBmdW5jdGlvbigpCisgICAgX3VwZGF0ZUJhY2tGb3J3YXJkQnV0
dG9ucygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRl
bSB8fCAhdGhpcy5fZm9yd2FyZEJ1dHRvbk5hdmlnYXRpb25JdGVtKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHRoaXMuX2JhY2tCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0g
dGhpcy5jYW5Hb0JhY2soKTsKICAgICAgICAgdGhpcy5fZm9yd2FyZEJ1dHRvbk5hdmlnYXRpb25J
dGVtLmVuYWJsZWQgPSB0aGlzLmNhbkdvRm9yd2FyZCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3VwZGF0ZUNvbnRlbnRWaWV3TmF2aWdhdGlvbkl0ZW1zOiBmdW5jdGlvbigpCisgICAgX3VwZGF0
ZUNvbnRlbnRWaWV3TmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7CiAgICAgICAgIHZhciBuYXZpZ2F0
aW9uQmFyID0gdGhpcy5uYXZpZ2F0aW9uQmFyOwogCkBAIC00MzYsOSArNDI0LDkgQEAgV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gUmVtZW1iZXIg
dGhlIG5hdmlnYXRpb24gaXRlbXMgd2UgaW5zZXJ0ZWQgc28gd2UgY2FuIHJlbW92ZSB0aGVtCiAg
ICAgICAgIC8vIGZvciB0aGUgbmV4dCBjb250ZW50IHZpZXcuCiAgICAgICAgIHRoaXMuX2N1cnJl
bnRDb250ZW50Vmlld05hdmlnYXRpb25JdGVtcyA9IG5ld05hdmlnYXRpb25JdGVtczsKLSAgICB9
LAorICAgIH0KIAotICAgIF91cGRhdGVGaW5kQmFubmVyOiBmdW5jdGlvbihjdXJyZW50Q29udGVu
dFZpZXcpCisgICAgX3VwZGF0ZUZpbmRCYW5uZXIoY3VycmVudENvbnRlbnRWaWV3KQogICAgIHsK
ICAgICAgICAgaWYgKCFjdXJyZW50Q29udGVudFZpZXcpIHsKICAgICAgICAgICAgIHRoaXMuX2Zp
bmRCYW5uZXIudGFyZ2V0RWxlbWVudCA9IG51bGw7CkBAIC00NTMsMTYgKzQ0MSwxNiBAQCBXZWJJ
bnNwZWN0b3IuQ29udGVudEJyb3dzZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgY3VycmVu
dENvbnRlbnRWaWV3LmF1dG9tYXRpY2FsbHlSZXZlYWxGaXJzdFNlYXJjaFJlc3VsdCA9IHRoaXMu
X2ZpbmRCYW5uZXIuc2hvd2luZzsKICAgICAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy5wZXJm
b3JtU2VhcmNoKHRoaXMuX2ZpbmRCYW5uZXIuc2VhcmNoUXVlcnkpOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfZGlzcGF0Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hh
bmdlRXZlbnRTb29uOiBmdW5jdGlvbigpCisgICAgX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVk
T2JqZWN0c0RpZENoYW5nZUV2ZW50U29vbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fY3Vy
cmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZVRpbWVvdXQpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIHRoaXMuX2N1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VUaW1l
b3V0ID0gc2V0VGltZW91dCh0aGlzLl9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNE
aWRDaGFuZ2VFdmVudC5iaW5kKHRoaXMpLCAwKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kaXNw
YXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudDogZnVuY3Rpb24oKQor
ICAgIF9kaXNwYXRjaEN1cnJlbnRSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2VFdmVudCgpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fY3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5n
ZVRpbWVvdXQpIHsKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9jdXJyZW50UmVwcmVz
ZW50ZWRPYmplY3RzRGlkQ2hhbmdlVGltZW91dCk7CkBAIC00NzAsOSArNDU4LDkgQEAgV2ViSW5z
cGVjdG9yLkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nl
ci5FdmVudC5DdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRDaGFuZ2U6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21wb25lbnREaWRD
aGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmN1
cnJlbnRDb250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybjsKQEAgLTQ4NSwxNyArNDczLDE3
IEBAIFdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX25hdmlnYXRpb25CYXIudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5fZGlzcGF0
Y2hDdXJyZW50UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZlbnRTb29uKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfY29udGVudFZpZXdTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNE
aWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50Vmlld1N1cHBsZW1lbnRhbFJl
cHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGlmIChldmVu
dC50YXJnZXQgIT09IHRoaXMuY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ3VycmVudFJlcHJlc2VudGVkT2JqZWN0c0RpZENo
YW5nZUV2ZW50U29vbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2N1cnJlbnRDb250ZW50Vmll
d0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2N1cnJlbnRDb250ZW50Vmlld0RpZENo
YW5nZShldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50Q29udGVudFZpZXcgPSB0aGlz
LmN1cnJlbnRDb250ZW50VmlldzsKIApAQCAtNTExLDE4ICs0OTksMTggQEAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRCcm93c2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLkV2ZW50LkN1cnJlbnRDb250
ZW50Vmlld0RpZENoYW5nZSk7CiAKICAgICAgICAgdGhpcy5fZGlzcGF0Y2hDdXJyZW50UmVwcmVz
ZW50ZWRPYmplY3RzRGlkQ2hhbmdlRXZlbnQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb250
ZW50Vmlld05hdmlnYXRpb25JdGVtc0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2Nv
bnRlbnRWaWV3TmF2aWdhdGlvbkl0ZW1zRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAg
aWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5jdXJyZW50Q29udGVudFZpZXcpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fdXBkYXRlQ29udGVudFZpZXdOYXZpZ2F0aW9uSXRl
bXMoKTsKICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhci51cGRhdGVMYXlvdXQoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9oaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9oaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50V2FzU2VsZWN0ZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5kYXRhLnBhdGhDb21w
b25lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50UGF0aENvbXBv
bmVudCk7CiAKQEAgLTU0MCw0ICs1MjgsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEJyb3dzZXIu
cHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db250ZW50QnJvd3Nlci5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJ
bnNwZWN0b3IuQ29udGVudEJyb3dzZXIuU3R5bGVDbGFzc05hbWUgPSAiY29udGVudC1icm93c2Vy
IjsKKworV2ViSW5zcGVjdG9yLkNvbnRlbnRCcm93c2VyLkV2ZW50ID0geworICAgIEN1cnJlbnRS
ZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2U6ICJjb250ZW50LWJyb3dzZXItY3VycmVudC1yZXBy
ZXNlbnRlZC1vYmplY3RzLWRpZC1jaGFuZ2UiLAorICAgIEN1cnJlbnRDb250ZW50Vmlld0RpZENo
YW5nZTogImNvbnRlbnQtYnJvd3Nlci1jdXJyZW50LWNvbnRlbnQtdmlldy1kaWQtY2hhbmdlIgor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcuanMKaW5k
ZXggM2RjMGE2Zi4uZjMyNDYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudEZsb3dET01U
cmVlQ29udGVudFZpZXcuanMKQEAgLTEsNCArMSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAx
MyBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKQEAgLTI3LDQxICsyOCwzOSBAQAogICogU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93RE9NVHJlZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24oY29u
dGVudEZsb3cpCitXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcgPSBj
bGFzcyBDb250ZW50Rmxvd0RPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5E
T01UcmVlQ29udGVudFZpZXcKIHsKLSAgICBjb25zb2xlLmFzc2VydChjb250ZW50Rmxvdyk7Ci0K
LSAgICBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LmNhbGwodGhpcywgY29udGVudEZs
b3cpOworICAgIGNvbnN0cnVjdG9yKGNvbnRlbnRGbG93KQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoY29udGVudEZsb3cpOwogCi0gICAgY29udGVudEZsb3cuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNBZGRlZCwgdGhp
cy5fY29udGVudE5vZGVXYXNBZGRlZCwgdGhpcyk7Ci0gICAgY29udGVudEZsb3cuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudEZsb3cuRXZlbnQuQ29udGVudE5vZGVXYXNSZW1v
dmVkLCB0aGlzLl9jb250ZW50Tm9kZVdhc1JlbW92ZWQsIHRoaXMpOworICAgICAgICBzdXBlcihj
b250ZW50Rmxvdyk7CiAKLSAgICB0aGlzLl9jcmVhdGVDb250ZW50VHJlZXMoKTsKLX07CisgICAg
ICAgIGNvbnRlbnRGbG93LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93
LkV2ZW50LkNvbnRlbnROb2RlV2FzQWRkZWQsIHRoaXMuX2NvbnRlbnROb2RlV2FzQWRkZWQsIHRo
aXMpOworICAgICAgICBjb250ZW50Rmxvdy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5D
b250ZW50Rmxvdy5FdmVudC5Db250ZW50Tm9kZVdhc1JlbW92ZWQsIHRoaXMuX2NvbnRlbnROb2Rl
V2FzUmVtb3ZlZCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5Db250ZW50Rmxvd0RPTVRyZWVDb250
ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db250
ZW50Rmxvd0RPTVRyZWVDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5E
T01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9jcmVhdGVDb250ZW50
VHJlZXMoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGNsb3NlZDogZnVuY3Rpb24o
KQorICAgIGNsb3NlZCgpCiAgICAgewogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJl
bW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRGbG93LkV2ZW50LkNvbnRlbnRO
b2RlV2FzQWRkZWQsIHRoaXMuX2NvbnRlbnROb2RlV2FzQWRkZWQsIHRoaXMpOwogICAgICAgICB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNv
bnRlbnRGbG93LkV2ZW50LkNvbnRlbnROb2RlV2FzUmVtb3ZlZCwgdGhpcy5fY29udGVudE5vZGVX
YXNSZW1vdmVkLCB0aGlzKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmll
dy5wcm90b3R5cGUuY2xvc2VkLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRT
ZWFyY2hDb250ZXh0Tm9kZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldFNlYXJjaENvbnRl
eHROb2RlcyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGNhbGxiYWNrKHRoaXMuZG9tVHJlZU91
dGxpbmUuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKHRyZWVPdXRsaW5lKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJlZU91dGxpbmUucmVwcmVzZW50ZWRPYmplY3QuaWQ7CiAgICAgICAgIH0pKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9jcmVhdGVDb250ZW50VHJlZXM6
IGZ1bmN0aW9uKCkKKyAgICBfY3JlYXRlQ29udGVudFRyZWVzKCkKICAgICB7CiAgICAgICAgIHZh
ciBjb250ZW50Tm9kZXMgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmNvbnRlbnROb2RlczsKICAg
ICAgICAgZm9yICh2YXIgY29udGVudE5vZGUgb2YgY29udGVudE5vZGVzKQpAQCAtNjksOSArNjgs
OSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHZhciBkb2N1bWVudFVSTCA9IGNvbnRlbnROb2Rlcy5sZW5ndGggPyBj
b250ZW50Tm9kZXNbMF0ub3duZXJEb2N1bWVudC5kb2N1bWVudFVSTCA6IG51bGw7CiAgICAgICAg
IHRoaXMuX3Jlc3RvcmVTZWxlY3RlZE5vZGVBZnRlclVwZGF0ZShkb2N1bWVudFVSTCwgY29udGVu
dE5vZGVzWzBdKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50Tm9kZVdhc0FkZGVkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfY29udGVudE5vZGVXYXNBZGRlZChldmVudCkKICAgICB7CiAg
ICAgICAgIHZhciB0cmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQo
ZXZlbnQuZGF0YS5ub2RlKTsKICAgICAgICAgaWYgKCFldmVudC5kYXRhLmJlZm9yZSkgewpAQCAt
ODYsOSArODUsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudEZsb3dET01UcmVlQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICBjb25zb2xlLmFzc2VydChpbmRleCAhPT0gLTEpOwogCiAg
ICAgICAgIHRoaXMuZG9tVHJlZU91dGxpbmUuaW5zZXJ0Q2hpbGQodHJlZUVsZW1lbnQsIGluZGV4
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50Tm9kZVdhc1JlbW92ZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9jb250ZW50Tm9kZVdhc1JlbW92ZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLmRvbVRyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChl
dmVudC5kYXRhLm5vZGUpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0cmVlRWxlbWVudCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnRlbnRWaWV3LmpzCmluZGV4IDgyYmI4OWYuLjE3MGU2ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MywxMSArMjMsMjYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkK
K1dlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogewotICAgIGlmICh0aGlzLmNvbnN0cnVjdG9yID09PSBXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXcpIHsKLSAgICAgICAgLy8gV2hlbiBpbnN0YW50aWF0ZWQgZGlyZWN0
bHkgcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgdHlwZS1iYXNlZCBjb25jcmV0ZSBzdWJjbGFzcy4K
KyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5pc1ZpZXdhYmxlKHJlcHJlc2VudGVk
T2JqZWN0KSk7CisKKyAgICAgICAgc3VwZXIoKTsKKworICAgICAgICB0aGlzLl9yZXByZXNlbnRl
ZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0OworCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7CisKKyAg
ICAgICAgdGhpcy5fcGFyZW50Q29udGFpbmVyID0gbnVsbDsKKyAgICB9CisKKyAgICAvLyBTdGF0
aWMKIAorICAgIHN0YXRpYyBjcmVhdGUocmVwcmVzZW50ZWRPYmplY3QpCisgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChyZXByZXNlbnRlZE9iamVjdCk7CiAKICAgICAgICAgaWYgKHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkZyYW1lKQpAQCAtOTIsMjQzICsx
MDcsMjIwIEBAIFdlYkluc3BlY3Rvci5Db250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJlc2VudGVk
T2JqZWN0KQogICAgICAgICB0aHJvdyAiQ2FuJ3QgbWFrZSBhIENvbnRlbnRWaWV3IGZvciBhbiB1
bmtub3duIHJlcHJlc2VudGVkT2JqZWN0LiI7CiAgICAgfQogCi0gICAgLy8gQ29uY3JldGUgb2Jq
ZWN0IGluc3RhbnRpYXRpb24uCi0gICAgY29uc29sZS5hc3NlcnQodGhpcy5jb25zdHJ1Y3RvciAh
PT0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3ICYmIHRoaXMgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXcpOwotICAgIGNvbnNvbGUuYXNzZXJ0KFdlYkluc3BlY3Rvci5Db250ZW50
Vmlldy5pc1ZpZXdhYmxlKHJlcHJlc2VudGVkT2JqZWN0KSk7Ci0KLSAgICAvLyBGSVhNRTogQ29u
dmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3Vw
ZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlz
Ll9yZXByZXNlbnRlZE9iamVjdCA9IHJlcHJlc2VudGVkT2JqZWN0OwotCi0gICAgdGhpcy5fZWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOwot
Ci0gICAgdGhpcy5fcGFyZW50Q29udGFpbmVyID0gbnVsbDsKLX07Ci0KLS8vIEZJWE1FOiBNb3Zl
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlz
LgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMo
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3KTsKLQotV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Lmlz
Vmlld2FibGUgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKLXsKLSAgICBpZiAocmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuRnJhbWUpCi0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlNjcmlwdCkKLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkaW5nKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5E
T01TdG9yYWdlT2JqZWN0KQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZU9iamVjdCkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3QpCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5EYXRhYmFz
ZU9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleCkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYg
KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRPTVRyZWUpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5Mb2dPYmplY3QpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmIChyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50RmxvdykKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHR5cGVvZiByZXByZXNlbnRlZE9iamVjdCA9PT0gInN0
cmluZyIgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBTdHJpbmcpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIHJldHVybiBmYWxzZTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db250ZW50
Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50LXZpZXciOwotCi1XZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcuRXZlbnQgPSB7Ci0gICAgU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2U6
ICJjb250ZW50LXZpZXctc2VsZWN0aW9uLXBhdGgtY29tcG9uZW50cy1kaWQtY2hhbmdlIiwKLSAg
ICBTdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2U6ICJjb250ZW50LXZpZXct
c3VwcGxlbWVudGFsLXJlcHJlc2VudGVkLW9iamVjdHMtZGlkLWNoYW5nZSIsCi0gICAgTnVtYmVy
T2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlOiAiY29udGVudC12aWV3LW51bWJlci1vZi1zZWFyY2gt
cmVzdWx0cy1kaWQtY2hhbmdlIiwKLSAgICBOYXZpZ2F0aW9uSXRlbXNEaWRDaGFuZ2U6ICJjb250
ZW50LXZpZXctbmF2aWdhdGlvbi1pdGVtcy1kaWQtY2hhbmdlIgotfTsKLQotV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LAorICAgIHN0YXRpYyBpc1ZpZXdhYmxlKHJlcHJlc2VudGVkT2JqZWN0KQor
ICAgIHsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChyZXByZXNl
bnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuU2NyaXB0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlm
IChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29y
ZGluZykKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAocmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvb2tpZVN0
b3JhZ2VPYmplY3QpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVPYmplY3Qp
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JqZWN0KQorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleCkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5ET01UcmVl
KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Mb2dPYmplY3QpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLkNvbnRlbnRGbG93KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICh0
eXBlb2YgcmVwcmVzZW50ZWRPYmplY3QgPT09ICJzdHJpbmciIHx8IHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgU3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCByZXByZXNlbnRl
ZE9iamVjdCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVwcmVzZW50ZWRPYmplY3Q7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7CiAgICAg
ICAgIC8vIE5hdmlnYXRpb24gaXRlbXMgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBieSB0aGUgQ29u
dGVudEJyb3dzZXIgaW5zdGFuY2UsCiAgICAgICAgIC8vIG1lYW50IHRvIGJlIHN1YmNsYXNzZWQu
IEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBbXTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBhbGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsK
ICAgICAgICAgLy8gQWxsb3cgYW55IG5hdmlnYXRpb24gc2lkZWJhciBwYW5lbC4KICAgICAgICAg
cmV0dXJuIFtdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFy
ZW50Q29udGFpbmVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRDb250YWlu
ZXI7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmlzaWJsZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fdmlzaWJsZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB2aXNpYmxlKGZs
YWcpCiAgICAgewogICAgICAgICB0aGlzLl92aXNpYmxlID0gZmxhZzsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVt
ZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIFtdOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHNob3VsZEtlZXBFbGVtZW50c1Njcm9sbGVkVG9Cb3R0b20oKQogICAgIHsKICAg
ICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAg
ICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVy
biBbXTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBwbGVtZW50YWxSZXByZXNlbnRlZE9i
amVjdHMoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KICAg
ICAgICAgcmV0dXJuIFtdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU3BsaXRD
b250ZW50QnJvd3NlcigpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFz
c2VzLgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxh
eW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICAvLyBJ
bXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1
bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBz
dWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAg
aGlkZGVuKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0g
ICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAg
IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0K
IAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nvb2tpZShj
b29raWUpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAg
IH0sCisgICAgfQogCi0gICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAg
ICByZXN0b3JlRnJvbUNvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRl
ZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCi0gICAgY2FuR29CYWNrOiBmdW5jdGlv
bigpCisgICAgY2FuR29CYWNrKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1
YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNh
bkdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGNhbkdvRm9yd2FyZCgpCiAgICAgewogICAgICAg
ICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBnb0JhY2s6IGZ1bmN0aW9uKCkKKyAgICBnb0JhY2soKQogICAg
IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0K
IAotICAgIGdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGdvRm9yd2FyZCgpCiAgICAgewogICAg
ICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHN1cHBvcnRzU2VhcmNoKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1
YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBudW1iZXJPZlNlYXJjaFJlc3VsdHMoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQg
Ynkgc3ViY2xhc3Nlcy4KICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgaGFzUGVyZm9ybWVkU2VhcmNoKCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVk
IGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCBhdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQocmV2ZWFsKQogICAg
IHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAgICB9LAorICAgIH0K
IAotICAgIHBlcmZvcm1TZWFyY2g6IGZ1bmN0aW9uKHF1ZXJ5KQorICAgIHBlcmZvcm1TZWFyY2go
cXVlcnkpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgotICAg
IH0sCisgICAgfQogCi0gICAgc2VhcmNoQ2xlYXJlZDogZnVuY3Rpb24oKQorICAgIHNlYXJjaENs
ZWFyZWQoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KLSAg
ICB9LAorICAgIH0KIAotICAgIHNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbjogZnVuY3Rpb24oKQor
ICAgIHNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0K
IAotICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykK
KyAgICByZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cykKICAgICB7CiAgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKLSAgICBy
ZXZlYWxOZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICByZXZlYWxO
ZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3Nlcy4KICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXcu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImNvbnRlbnQtdmlldyI7CisK
K1dlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudCA9IHsKKyAgICBTZWxlY3Rpb25QYXRoQ29t
cG9uZW50c0RpZENoYW5nZTogImNvbnRlbnQtdmlldy1zZWxlY3Rpb24tcGF0aC1jb21wb25lbnRz
LWRpZC1jaGFuZ2UiLAorICAgIFN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5n
ZTogImNvbnRlbnQtdmlldy1zdXBwbGVtZW50YWwtcmVwcmVzZW50ZWQtb2JqZWN0cy1kaWQtY2hh
bmdlIiwKKyAgICBOdW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2U6ICJjb250ZW50LXZpZXct
bnVtYmVyLW9mLXNlYXJjaC1yZXN1bHRzLWRpZC1jaGFuZ2UiLAorICAgIE5hdmlnYXRpb25JdGVt
c0RpZENoYW5nZTogImNvbnRlbnQtdmlldy1uYXZpZ2F0aW9uLWl0ZW1zLWRpZC1jaGFuZ2UiCit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGVudFZpZXdDb250YWluZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcwppbmRleCBjMWVjMTEwLi4xMjM4ODU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZW50Vmlld0NvbnRhaW5lci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Db250ZW50Vmlld0NvbnRhaW5lci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNjYgKzIzLDU4IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNv
bnRlbnRWaWV3Q29udGFpbmVyID0gZnVuY3Rpb24oZWxlbWVudCkKK1dlYkluc3BlY3Rvci5Db250
ZW50Vmlld0NvbnRhaW5lciA9IGNsYXNzIENvbnRlbnRWaWV3Q29udGFpbmVyIGV4dGVuZHMgV2Vi
SW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJ
bnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50
IHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIuU3R5bGVDbGFzc05h
bWUpOwotCi0gICAgdGhpcy5fYmFja0ZvcndhcmRMaXN0ID0gW107Ci0gICAgdGhpcy5fY3VycmVu
dEluZGV4ID0gLTE7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIuU3R5
bGVDbGFzc05hbWUgPSAiY29udGVudC12aWV3LWNvbnRhaW5lciI7CisgICAgY29uc3RydWN0b3Io
ZWxlbWVudCkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rvci5Db250ZW50
Vmlld0NvbnRhaW5lci5FdmVudCA9IHsKLSAgICBDdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2U6
ICJjb250ZW50LXZpZXctY29udGFpbmVyLWN1cnJlbnQtY29udGVudC12aWV3LWRpZC1jaGFuZ2Ui
Ci19OworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYklu
c3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5TdHlsZUNsYXNzTmFtZSk7CiAKLVdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lciwKKyAgICAgICAgdGhpcy5fYmFja0Zv
cndhcmRMaXN0ID0gW107CisgICAgICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IC0xOworICAgIH0K
IAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY3VycmVudEluZGV4
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9jdXJyZW50SW5kZXg7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgYmFja0ZvcndhcmRMaXN0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9iYWNrRm9yd2FyZExpc3Q7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY3VycmVudENv
bnRlbnRWaWV3KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9jdXJyZW50SW5kZXggPCAwIHx8
IHRoaXMuX2N1cnJlbnRJbmRleCA+IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHJldHVybiB0aGlzLl9iYWNrRm9yd2Fy
ZExpc3RbdGhpcy5fY3VycmVudEluZGV4XS5jb250ZW50VmlldzsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBjdXJyZW50QmFja0ZvcndhcmRFbnRyeSgpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fY3VycmVudEluZGV4IDwgMCB8fCB0aGlzLl9jdXJyZW50SW5kZXggPiB0aGlzLl9iYWNrRm9y
d2FyZExpc3QubGVuZ3RoIC0gMSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICBy
ZXR1cm4gdGhpcy5fYmFja0ZvcndhcmRMaXN0W3RoaXMuX2N1cnJlbnRJbmRleF07Ci0gICAgfSwK
KyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQo
KQogICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuY3VycmVudENv
bnRlbnRWaWV3OwogICAgICAgICBpZiAoY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAg
Y3VycmVudENvbnRlbnRWaWV3LnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
Y29udGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmpl
Y3QsIG9ubHlFeGlzdGluZykKKyAgICBjb250ZW50Vmlld0ZvclJlcHJlc2VudGVkT2JqZWN0KHJl
cHJlc2VudGVkT2JqZWN0LCBvbmx5RXhpc3RpbmcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChyZXByZXNlbnRlZE9iamVjdCk7CiAgICAgICAgIGlmICghcmVwcmVzZW50ZWRPYmplY3Qp
CkBAIC0xMDksOSArMTAxLDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICB0cnkgewogICAgICAgICAgICAgLy8gTm8gZXhpc3Rpbmcg
Y29udGVudCB2aWV3IGZvdW5kLCBtYWtlIGEgbmV3IG9uZS4KLSAgICAgICAgICAgIGNvbnRlbnRW
aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCk7Cisg
ICAgICAgICAgICBjb250ZW50VmlldyA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jcmVhdGUo
cmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBj
b25zb2xlLmVycm9yKGUpOworICAgICAgICAgICAgY29uc29sZS5lcnJvcihlLCBlLnN0YWNrKTsK
ICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CiAKQEAgLTEyMSw5ICsxMTMsOSBA
QCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAg
ICByZXByZXNlbnRlZE9iamVjdC5fX2NvbnRlbnRWaWV3cy5wdXNoKGNvbnRlbnRWaWV3KTsKIAog
ICAgICAgICByZXR1cm4gY29udGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93Q29u
dGVudFZpZXdGb3JSZXByZXNlbnRlZE9iamVjdDogZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3Qp
CisgICAgc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmpl
Y3QpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0aGlzLmNvbnRlbnRWaWV3Rm9y
UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOwogICAgICAgICBpZiAoIWNvbnRl
bnRWaWV3KQpAQCAtMTMyLDkgKzEyNCw5IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRh
aW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2hvd0NvbnRlbnRWaWV3KGNvbnRlbnRW
aWV3KTsKIAogICAgICAgICByZXR1cm4gY29udGVudFZpZXc7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBzaG93Q29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3LCBjb29raWUpCisgICAgc2hv
d0NvbnRlbnRWaWV3KGNvbnRlbnRWaWV3LCBjb29raWUpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyk7
CiAgICAgICAgIGlmICghKGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3KSkKQEAgLTE1MCw3ICsxNDIsNyBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250
YWluZXIucHJvdG90eXBlID0gewogICAgICAgICB2YXIgcHJvdmlzaW9uYWxFbnRyeSA9IG5ldyBX
ZWJJbnNwZWN0b3IuQmFja0ZvcndhcmRFbnRyeShjb250ZW50VmlldywgY29va2llKTsKICAgICAg
ICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgd2Ugd291bGQgaGF2ZSBhZGRlZCBhbiBpZGVudGlj
YWwgYmFjay9mb3J3YXJkIGxpc3QgZW50cnkuCiAgICAgICAgIGlmIChjdXJyZW50RW50cnkgJiYg
Y3VycmVudEVudHJ5LmNvbnRlbnRWaWV3ID09PSBjb250ZW50VmlldyAmJiBPYmplY3Quc2hhbGxv
d0VxdWFsKHByb3Zpc2lvbmFsRW50cnkuY29va2llLCBjdXJyZW50RW50cnkuY29va2llKSkgewot
ICAgICAgICAgICAgY29uc3Qgc2hvdWxkQ2FsbFNob3duID0gZmFsc2U7CisgICAgICAgICAgICB2
YXIgc2hvdWxkQ2FsbFNob3duID0gZmFsc2U7CiAgICAgICAgICAgICBjdXJyZW50RW50cnkucHJl
cGFyZVRvU2hvdyhzaG91bGRDYWxsU2hvd24pOwogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRF
bnRyeS5jb250ZW50VmlldzsKICAgICAgICAgfQpAQCAtMTgzLDkgKzE3NSw5IEBAIFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2hv
d0JhY2tGb3J3YXJkRW50cnlGb3JJbmRleChuZXdJbmRleCk7CiAKICAgICAgICAgcmV0dXJuIGNv
bnRlbnRWaWV3OwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd0JhY2tGb3J3YXJkRW50cnlGb3JJ
bmRleDogZnVuY3Rpb24oaW5kZXgpCisgICAgc2hvd0JhY2tGb3J3YXJkRW50cnlGb3JJbmRleChp
bmRleCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ID49IDAgJiYgaW5kZXgg
PD0gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpOwogICAgICAgICBpZiAoaW5kZXgg
PCAwIHx8IGluZGV4ID4gdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDEpCkBAIC0yMDks
OSArMjAxLDkgQEAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHRoaXMuX3Nob3dFbnRyeShjdXJyZW50RW50cnksIGZhbHNlKTsKIAog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdlKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHJlcGxhY2VDb250ZW50VmlldzogZnVuY3Rpb24ob2xkQ29udGVudFZp
ZXcsIG5ld0NvbnRlbnRWaWV3KQorICAgIHJlcGxhY2VDb250ZW50VmlldyhvbGRDb250ZW50Vmll
dywgbmV3Q29udGVudFZpZXcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChvbGRDb250
ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyk7CiAgICAgICAgIGlm
ICghKG9sZENvbnRlbnRWaWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3KSkK
QEAgLTI1MCw5ICsyNDIsOSBAQCBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb250YWluZXIucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fc2hvd0VudHJ5KHRoaXMuY3VycmVudEJhY2tG
b3J3YXJkRW50cnksIHRydWUpOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29udGFpbmVyLkV2ZW50LkN1cnJlbnRDb250
ZW50Vmlld0RpZENoYW5nZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGNsb3Nl
QWxsQ29udGVudFZpZXdzT2ZQcm90b3R5cGU6IGZ1bmN0aW9uKGNvbnN0cnVjdG9yKQorICAgIGNs
b3NlQWxsQ29udGVudFZpZXdzT2ZQcm90b3R5cGUoY29uc3RydWN0b3IpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2N1cnJlbnRJbmRleCA9PT0gLTEpOwpAQCAtMzA2LDkgKzI5OCw5IEBA
IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9zaG93RW50cnkoY3VycmVudEVudHJ5LCB0cnVlKTsKICAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRh
aW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UpOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBjbG9zZUFsbENvbnRlbnRWaWV3czogZnVuY3Rpb24oKQorICAgIGNs
b3NlQWxsQ29udGVudFZpZXdzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fYmFja0Zvcndh
cmRMaXN0Lmxlbmd0aCkgewogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY3VycmVu
dEluZGV4ID09PSAtMSk7CkBAIC0zMjcsNjUgKzMxOSw2NSBAQCBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXdDb250YWluZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9jdXJyZW50SW5kZXgg
PSAtMTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb250YWluZXIuRXZlbnQuQ3VycmVudENvbnRlbnRWaWV3RGlkQ2hhbmdl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbkdvQmFjazogZnVuY3Rpb24oKQorICAgIGNhbkdv
QmFjaygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudEluZGV4ID4gMDsKLSAg
ICB9LAorICAgIH0KIAotICAgIGNhbkdvRm9yd2FyZDogZnVuY3Rpb24oKQorICAgIGNhbkdvRm9y
d2FyZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3VycmVudEluZGV4IDwgdGhpcy5f
YmFja0ZvcndhcmRMaXN0Lmxlbmd0aCAtIDE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnb0JhY2s6
IGZ1bmN0aW9uKCkKKyAgICBnb0JhY2soKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmNhbkdv
QmFjaygpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlzLnNob3dCYWNrRm9yd2Fy
ZEVudHJ5Rm9ySW5kZXgodGhpcy5fY3VycmVudEluZGV4IC0gMSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBnb0ZvcndhcmQ6IGZ1bmN0aW9uKCkKKyAgICBnb0ZvcndhcmQoKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLmNhbkdvRm9yd2FyZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB0aGlzLnNob3dCYWNrRm9yd2FyZEVudHJ5Rm9ySW5kZXgodGhpcy5fY3VycmVudEluZGV4ICsg
MSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkK
ICAgICB7CiAgICAgICAgIHZhciBjdXJyZW50RW50cnkgPSB0aGlzLmN1cnJlbnRCYWNrRm9yd2Fy
ZEVudHJ5OwogICAgICAgICBpZiAoIWN1cnJlbnRFbnRyeSkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICB0aGlzLl9zaG93RW50cnkoY3VycmVudEVudHJ5LCB0cnVlKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAg
ICAgICB2YXIgY3VycmVudEVudHJ5ID0gdGhpcy5jdXJyZW50QmFja0ZvcndhcmRFbnRyeTsKICAg
ICAgICAgaWYgKCFjdXJyZW50RW50cnkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
dGhpcy5faGlkZUVudHJ5KGN1cnJlbnRFbnRyeSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cml2YXRlCiAKLSAgICBfYWRkQ29udGVudFZpZXdFbGVtZW50OiBmdW5jdGlvbihjb250ZW50Vmll
dykKKyAgICBfYWRkQ29udGVudFZpZXdFbGVtZW50KGNvbnRlbnRWaWV3KQogICAgIHsKICAgICAg
ICAgaWYgKGNvbnRlbnRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZSAhPT0gdGhpcy5fZWxlbWVudCkK
ICAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudFZpZXcuZWxlbWVu
dCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVtb3ZlQ29udGVudFZpZXdFbGVtZW50OiBmdW5j
dGlvbihjb250ZW50VmlldykKKyAgICBfcmVtb3ZlQ29udGVudFZpZXdFbGVtZW50KGNvbnRlbnRW
aWV3KQogICAgIHsKICAgICAgICAgaWYgKGNvbnRlbnRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZSkK
ICAgICAgICAgICAgIGNvbnRlbnRWaWV3LmVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChj
b250ZW50Vmlldy5lbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kaXNhc3NvY2lhdGVG
cm9tQ29udGVudFZpZXc6IGZ1bmN0aW9uKGNvbnRlbnRWaWV3KQorICAgIF9kaXNhc3NvY2lhdGVG
cm9tQ29udGVudFZpZXcoY29udGVudFZpZXcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dCghY29udGVudFZpZXcudmlzaWJsZSk7CiAKQEAgLTM5OCwxNyArMzkwLDE3IEBAIFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJlcHJlc2Vu
dGVkT2JqZWN0Ll9fY29udGVudFZpZXdzLnJlbW92ZShjb250ZW50Vmlldyk7CiAKICAgICAgICAg
Y29udGVudFZpZXcuY2xvc2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd0VudHJ5OiBm
dW5jdGlvbihlbnRyeSwgc2hvdWxkQ2FsbFNob3duKQorICAgIF9zaG93RW50cnkoZW50cnksIHNo
b3VsZENhbGxTaG93bikKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGVudHJ5IGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLkJhY2tGb3J3YXJkRW50cnkpOwogCiAgICAgICAgIHRoaXMuX2Fk
ZENvbnRlbnRWaWV3RWxlbWVudChlbnRyeS5jb250ZW50Vmlldyk7CiAgICAgICAgIGVudHJ5LnBy
ZXBhcmVUb1Nob3coc2hvdWxkQ2FsbFNob3duKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oaWRl
RW50cnk6IGZ1bmN0aW9uKGVudHJ5KQorICAgIF9oaWRlRW50cnkoZW50cnkpCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydChlbnRyeSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5CYWNrRm9y
d2FyZEVudHJ5KTsKIApAQCAtNDE3LDQgKzQwOSw4IEBAIFdlYkluc3BlY3Rvci5Db250ZW50Vmll
d0NvbnRhaW5lci5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3Q29udGFpbmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5TdHlsZUNsYXNz
TmFtZSA9ICJjb250ZW50LXZpZXctY29udGFpbmVyIjsKKworV2ViSW5zcGVjdG9yLkNvbnRlbnRW
aWV3Q29udGFpbmVyLkV2ZW50ID0geworICAgIEN1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZTog
ImNvbnRlbnQtdmlldy1jb250YWluZXItY3VycmVudC1jb250ZW50LXZpZXctZGlkLWNoYW5nZSIK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250cm9sVG9vbGJhckl0ZW0uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db250cm9sVG9vbGJhckl0ZW0uanMKaW5kZXggMTQ5N2MyYi4uNTY1ZDlkMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
dHJvbFRvb2xiYXJJdGVtLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRyb2xUb29sYmFySXRlbS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTkgKzIzLDE3IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnRyb2xU
b29sYmFySXRlbSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIHRvb2xUaXAsIGltYWdlLCBpbWFnZVdp
ZHRoLCBpbWFnZUhlaWdodCkKK1dlYkluc3BlY3Rvci5Db250cm9sVG9vbGJhckl0ZW0gPSBjbGFz
cyBDb250cm9sVG9vbGJhckl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0KIHsKLSAgICBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uY2FsbCh0aGlz
LCBpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIGZh
bHNlKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5Db250cm9sVG9vbGJhckl0ZW0uU3R5bGVDbGFzc05h
bWUgPSAiY29udHJvbCI7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllciwgdG9vbFRpcCwgaW1h
Z2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0KQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRp
ZmllciwgdG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBmYWxzZSk7Cisg
ICAgfQogCi1XZWJJbnNwZWN0b3IuQ29udHJvbFRvb2xiYXJJdGVtLnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnRyb2xUb29sYmFySXRlbSwKKyAgICAvLyBQ
cm90ZWN0ZWQKIAotICAgIC8vIFByaXZhdGUKLQotICAgIF9hZGRpdGlvbmFsQ2xhc3NOYW1lczog
W1dlYkluc3BlY3Rvci5Db250cm9sVG9vbGJhckl0ZW0uU3R5bGVDbGFzc05hbWVdLAorICAgIGdl
dCBhZGRpdGlvbmFsQ2xhc3NOYW1lcygpCisgICAgeworICAgICAgICByZXR1cm4gWyJjb250cm9s
Il07CisgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkNvbnRyb2xUb29sYmFySXRlbS5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlw
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcwppbmRleCAzYTEwZDVm
Li5jYWEzNzkzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MjMsMjggKzIzLDI1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8K
IAotV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50VmlldyA9IGZ1bmN0aW9uKHJlcHJl
c2VudGVkT2JqZWN0KQorV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50VmlldyA9IGNs
YXNzIENvb2tpZVN0b3JhZ2VDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50
VmlldwogewotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIHJlcHJlc2Vu
dGVkT2JqZWN0KTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOworICAgIGNvbnN0cnVj
dG9yKHJlcHJlc2VudGVkT2JqZWN0KQorICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOwogCi0gICAgdGhpcy51cGRhdGUo
KTsKLX07CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5D
b29raWVTdG9yYWdlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOwogCi1XZWJJbnNwZWN0b3Iu
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImNvb2tpZS1zdG9yYWdl
IjsKLQotV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcs
CisgICAgICAgIHRoaXMudXBkYXRlKCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgYWxsb3dlZE5hdmlnYXRpb25TaWRlYmFyUGFuZWxzKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBbV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVsLmlkZW50aWZpZXJdOwotICAgIH0s
CisgICAgfQogCi0gICAgdXBkYXRlOiBmdW5jdGlvbigpCisgICAgdXBkYXRlKCkKICAgICB7CiAg
ICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGVycm9yLCBjb29raWVzKQogICAgICAgICB7CkBAIC01
NSwzMSArNTIsMzMgQEAgV2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9yZWJ1aWxkVGFibGUoKTsKICAgICAgICAgfQog
CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgaGVyZSBhbmQgaXQgc2hvdWxk
IGJlIGluIGEgbWFuYWdlci4KKyAgICAgICAgLy8gVGhpcyBmaWxlIGxlYWtzIHRoZSBwcm90b2Nv
bCBiYWRseS4KICAgICAgICAgUGFnZUFnZW50LmdldENvb2tpZXMoY2FsbGJhY2suYmluZCh0aGlz
KSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1
cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2RhdGFHcmlkKQogICAgICAg
ICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBzYXZlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlVG9Db29raWUoY29va2ll
KQogICAgIHsKICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdD
b29raWVUeXBlLkNvb2tpZVN0b3JhZ2U7CiAgICAgICAgIGNvb2tpZS5ob3N0ID0gdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5ob3N0OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjcm9sbGFibGVF
bGVtZW50cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKQogICAgICAgICAg
ICAgcmV0dXJuIFtdOwogICAgICAgICByZXR1cm4gW3RoaXMuX2RhdGFHcmlkLnNjcm9sbENvbnRh
aW5lcl07Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfcmVidWlsZFRh
YmxlOiBmdW5jdGlvbigpCisgICAgX3JlYnVpbGRUYWJsZSgpCiAgICAgewogICAgICAgICAvLyBG
SVhNRTogSWYgdGhlcmUgYXJlIG5vIGNvb2tpZXMsIGRvIHdlIHdhbnQgdG8gc2hvdyBhbiBlbXB0
eSBkYXRhZ3JpZCwgb3IgZG8gc29tZXRoaW5nIGxpa2UgdGhlIG9sZAogICAgICAgICAvLyBpbnNw
ZWN0b3IgYW5kIHNob3cgc29tZSB0ZXh0IHNheWluZyB0aGVyZSBhcmUgbm8gY29va2llcz8KQEAg
LTEzMSw4ICsxMzAsOCBAQCBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZGF0YUdyaWQpOwogICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwogCisgICAgICAgIHZhciBjaGVj
a21hcmsgPSAiXHUyNzEzIjsKICAgICAgICAgZm9yICh2YXIgY29va2llIG9mIHRoaXMuX2Nvb2tp
ZXMpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoZWNrbWFyayA9ICJcdTI3MTMiOwogICAgICAgICAg
ICAgdmFyIGRhdGEgPSB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiBjb29raWUubmFtZSwKICAg
ICAgICAgICAgICAgICAidmFsdWUiOiBjb29raWUudmFsdWUsCkBAIC0xNDQsNyArMTQzLDcgQEAg
V2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICAgICAgInNlY3VyZSI6IGNvb2tpZS5zZWN1cmUgPyBjaGVja21hcmsgOiAiIiwKICAg
ICAgICAgICAgIH07CiAKLSAgICAgICAgICAgIGlmIChjb29raWUudHlwZSAhPT0gV2ViSW5zcGVj
dG9yLkNvb2tpZVR5cGUuUmVxdWVzdCkKKyAgICAgICAgICAgIGlmIChjb29raWUudHlwZSAhPT0g
V2ViSW5zcGVjdG9yLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5Db29raWVUeXBlLlJlcXVlc3Qp
CiAgICAgICAgICAgICAgICAgZGF0YVsiZXhwaXJlcyJdID0gY29va2llLnNlc3Npb24gPyBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlNlc3Npb24iKSA6IG5ldyBEYXRlKGNvb2tpZS5leHBpcmVzKS50
b0xvY2FsZVN0cmluZygpOwogCiAgICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0
b3IuRGF0YUdyaWROb2RlKGRhdGEpOwpAQCAtMTU1LDkgKzE1NCw5IEBAIFdlYkluc3BlY3Rvci5D
b29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgdGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgPSAibmFtZSI7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZmlsdGVyQ29va2llczogZnVuY3Rpb24oY29va2llcykKKyAgICBfZmls
dGVyQ29va2llcyhjb29raWVzKQogICAgIHsKICAgICAgICAgdmFyIGZpbHRlcmVkQ29va2llcyA9
IFtdOwogICAgICAgICB2YXIgcmVzb3VyY2VzRm9yRG9tYWluID0gW107CkBAIC0xNzgsOSArMTc3
LDI3IEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgICAgIHJlc291cmNlc0ZvckRvbWFpbi5wdXNoKGZyYW1lc1tpXS5tYWlu
UmVzb3VyY2UudXJsKTsKICAgICAgICAgfQogCisgICAgICAgIGZ1bmN0aW9uIGNvb2tpZURvbWFp
bk1hdGNoZXNSZXNvdXJjZURvbWFpbihjb29raWVEb21haW4sIHJlc291cmNlRG9tYWluKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoY29va2llRG9tYWluLmNoYXJBdCgwKSAhPT0gIi4iKQor
ICAgICAgICAgICAgICAgIHJldHVybiByZXNvdXJjZURvbWFpbiA9PT0gY29va2llRG9tYWluOwor
ICAgICAgICAgICAgcmV0dXJuICEhcmVzb3VyY2VEb21haW4ubWF0Y2gobmV3IFJlZ0V4cCgiXihb
XlxcLl0rXFwuKT8iICsgY29va2llRG9tYWluLnN1YnN0cmluZygxKS5lc2NhcGVGb3JSZWdFeHAo
KSArICIkIiksICJpIik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBjb29raWVNYXRj
aGVzUmVzb3VyY2VVUkwoY29va2llLCByZXNvdXJjZVVSTCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHBhcnNlZFVSTCA9IHBhcnNlVVJMKHJlc291cmNlVVJMKTsKKyAgICAgICAgICAgIGlm
ICghcGFyc2VkVVJMIHx8ICFXZWJJbnNwZWN0b3IuY29va2llRG9tYWluTWF0Y2hlc1Jlc291cmNl
RG9tYWluKGNvb2tpZS5kb21haW4sIHBhcnNlZFVSTC5ob3N0KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiAocGFyc2VkVVJMLnBhdGguc3RhcnRz
V2l0aChjb29raWUucGF0aCkKKyAgICAgICAgICAgICAgICAmJiAoIWNvb2tpZS5wb3J0IHx8IHBh
cnNlZFVSTC5wb3J0ID09PSBjb29raWUucG9ydCkKKyAgICAgICAgICAgICAgICAmJiAoIWNvb2tp
ZS5zZWN1cmUgfHwgcGFyc2VkVVJMLnNjaGVtZSA9PT0gImh0dHBzIikpOworICAgICAgICB9CisK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb29raWVzLmxlbmd0aDsgKytpKSB7CiAgICAg
ICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJlc291cmNlc0ZvckRvbWFpbi5sZW5ndGg7ICsr
aikgewotICAgICAgICAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuY29va2llTWF0Y2hlc1Jlc291
cmNlVVJMKGNvb2tpZXNbaV0sIHJlc291cmNlc0ZvckRvbWFpbltqXSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoY29va2llTWF0Y2hlc1Jlc291cmNlVVJMKGNvb2tpZXNbaV0sIHJlc291cmNlc0Zv
ckRvbWFpbltqXSkpIHsKICAgICAgICAgICAgICAgICAgICAgZmlsdGVyZWRDb29raWVzLnB1c2go
Y29va2llc1tpXSk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KQEAgLTE4OCw5ICsyMDUsOSBAQCBXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBmaWx0ZXJlZENv
b2tpZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc29ydERhdGFHcmlkOiBmdW5jdGlvbigpCisg
ICAgX3NvcnREYXRhR3JpZCgpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBsb2NhbGVDb21wYXJl
KGZpZWxkLCBub2RlQSwgbm9kZUIpCiAgICAgICAgIHsKQEAgLTIyOCw5ICsyNDUsOSBAQCBXZWJJ
bnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICBjb25zb2xlLmFzc2VydChjb21wYXJhdG9yKTsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29y
dE5vZGVzKGNvbXBhcmF0b3IpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RlbGV0ZUNhbGxiYWNr
OiBmdW5jdGlvbihub2RlKQorICAgIF9kZWxldGVDYWxsYmFjayhub2RlKQogICAgIHsKICAgICAg
ICAgaWYgKCFub2RlIHx8ICFub2RlLmNvb2tpZSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI0
NSwyNyArMjYyLDEwIEBAIFdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJv
dG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVu
dFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90
b3R5cGU7Ci0KLVdlYkluc3BlY3Rvci5jb29raWVNYXRjaGVzUmVzb3VyY2VVUkwgPSBmdW5jdGlv
bihjb29raWUsIHJlc291cmNlVVJMKQotewotICAgIHZhciBwYXJzZWRVUkwgPSBwYXJzZVVSTChy
ZXNvdXJjZVVSTCk7Ci0gICAgaWYgKCFwYXJzZWRVUkwgfHwgIVdlYkluc3BlY3Rvci5jb29raWVE
b21haW5NYXRjaGVzUmVzb3VyY2VEb21haW4oY29va2llLmRvbWFpbiwgcGFyc2VkVVJMLmhvc3Qp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gKHBhcnNlZFVSTC5wYXRoLnN0
YXJ0c1dpdGgoY29va2llLnBhdGgpCi0gICAgICAgICYmICghY29va2llLnBvcnQgfHwgcGFyc2Vk
VVJMLnBvcnQgPT09IGNvb2tpZS5wb3J0KQotICAgICAgICAmJiAoIWNvb2tpZS5zZWN1cmUgfHwg
cGFyc2VkVVJMLnNjaGVtZSA9PT0gImh0dHBzIikpOwotfQotCi1XZWJJbnNwZWN0b3IuY29va2ll
RG9tYWluTWF0Y2hlc1Jlc291cmNlRG9tYWluID0gZnVuY3Rpb24oY29va2llRG9tYWluLCByZXNv
dXJjZURvbWFpbikKLXsKLSAgICBpZiAoY29va2llRG9tYWluLmNoYXJBdCgwKSAhPT0gIi4iKQot
ICAgICAgICByZXR1cm4gcmVzb3VyY2VEb21haW4gPT09IGNvb2tpZURvbWFpbjsKLSAgICByZXR1
cm4gISFyZXNvdXJjZURvbWFpbi5tYXRjaChuZXcgUmVnRXhwKCJeKFteXFwuXStcXC4pPyIgKyBj
b29raWVEb21haW4uc3Vic3RyaW5nKDEpLmVzY2FwZUZvclJlZ0V4cCgpICsgIiQiKSwgImkiKTsK
LX0KK1dlYkluc3BlY3Rvci5Db29raWVTdG9yYWdlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUg
PSAiY29va2llLXN0b3JhZ2UiOwogCi1XZWJJbnNwZWN0b3IuQ29va2llVHlwZSA9IHsKKy8vIEZJ
WE1FOiBVc2UgYW4gZW51bSBmcm9tIGEgbWFuYWdlciBhbmQgbm90IHJhdyBwcm90b2NvbCB2YWx1
ZXMuCitXZWJJbnNwZWN0b3IuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LkNvb2tpZVR5cGUgPSB7
CiAgICAgUmVxdWVzdDogMCwKICAgICBSZXNwb25zZTogMQogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVN0b3JhZ2VDb250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVN0b3Jh
Z2VDb250ZW50Vmlldy5qcwppbmRleCA0MDZhMzVmLi4xZTUwZGM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01TdG9yYWdlQ29udGVudFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
U3RvcmFnZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDM4ICsyNCwzMCBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZp
ZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdl
Q29udGVudFZpZXcgPSBjbGFzcyBET01TdG9yYWdlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuQ29udGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0
aGlzLCByZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKLQot
ICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VPYmplY3QuRXZlbnQuSXRlbXNDbGVhcmVkLCB0aGlzLml0ZW1zQ2xlYXJlZCwgdGhpcyk7
Ci0gICAgcmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZU9iamVjdC5FdmVudC5JdGVtQWRkZWQsIHRoaXMuaXRlbUFkZGVkLCB0aGlzKTsKLSAg
ICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlT2JqZWN0LkV2ZW50Lkl0ZW1SZW1vdmVkLCB0aGlzLml0ZW1SZW1vdmVkLCB0aGlzKTsKLSAg
ICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlT2JqZWN0LkV2ZW50Lkl0ZW1VcGRhdGVkLCB0aGlzLml0ZW1VcGRhdGVkLCB0aGlzKTsKLQot
ICAgIHRoaXMucmVzZXQoKTsKLX07CisgICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3Qp
CisgICAgeworICAgICAgICBzdXBlcihyZXByZXNlbnRlZE9iamVjdCk7CiAKLVdlYkluc3BlY3Rv
ci5ET01TdG9yYWdlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZG9tLXN0b3JhZ2UiOwot
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5EdXBsaWNhdGVLZXlTdHlsZUNsYXNz
TmFtZSA9ICJkdXBsaWNhdGUta2V5IjsKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZp
ZXcuTWlzc2luZ0tleVN0eWxlQ2xhc3NOYW1lID0gIm1pc3Npbmcta2V5IjsKLVdlYkluc3BlY3Rv
ci5ET01TdG9yYWdlQ29udGVudFZpZXcuTWlzc2luZ1ZhbHVlU3R5bGVDbGFzc05hbWUgPSAibWlz
c2luZy12YWx1ZSI7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJkb20tc3Rv
cmFnZSIpOwogCisgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbXNDbGVhcmVkLCB0aGlzLml0ZW1z
Q2xlYXJlZCwgdGhpcyk7CisgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbUFkZGVkLCB0aGlzLml0
ZW1BZGRlZCwgdGhpcyk7CisgICAgICAgIHJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYmplY3QuRXZlbnQuSXRlbVJlbW92ZWQsIHRoaXMu
aXRlbVJlbW92ZWQsIHRoaXMpOworICAgICAgICByZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JqZWN0LkV2ZW50Lkl0ZW1VcGRhdGVkLCB0
aGlzLml0ZW1VcGRhdGVkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5ET01TdG9y
YWdlQ29udGVudFZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcu
cHJvdG90eXBlLAorICAgICAgICB0aGlzLnJlc2V0KCk7CisgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKICAgICBnZXQgYWxsb3dlZE5hdmlnYXRpb25TaWRlYmFyUGFuZWxzKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBbV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVsLmlkZW50aWZpZXJd
OwotICAgIH0sCisgICAgfQogCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICByZXNldCgpCiAg
ICAgewogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmdldEVudHJpZXMoZnVuY3Rpb24o
ZXJyb3IsIGVudHJpZXMpIHsKICAgICAgICAgICAgIGlmIChlcnJvcikKQEAgLTg4LDMwICs4MCwz
MCBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZFBsYWNlaG9sZGVyTm9kZSgpOwogICAgICAgICAg
ICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAg
ICBzYXZlVG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkRPTVN0b3JhZ2U7CiAgICAgICAgIGNvb2tp
ZS5pc0xvY2FsU3RvcmFnZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaXNMb2NhbFN0b3JhZ2Uo
KTsKICAgICAgICAgY29va2llLmhvc3QgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lmhvc3Q7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBpdGVtc0NsZWFyZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGl0
ZW1zQ2xlYXJlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNo
aWxkcmVuKCk7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZFBsYWNlaG9sZGVyTm9kZSgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgaXRlbVJlbW92ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIGl0
ZW1SZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgZm9yICh2YXIgbm9kZSBvZiB0aGlzLl9k
YXRhR3JpZC5jaGlsZHJlbikgewogICAgICAgICAgICAgaWYgKG5vZGUuZGF0YS5rZXkgPT09IGV2
ZW50LmRhdGEua2V5KQogICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhR3JpZC5yZW1v
dmVDaGlsZChub2RlKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgaXRlbUFkZGVk
OiBmdW5jdGlvbihldmVudCkKKyAgICBpdGVtQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2
YXIga2V5ID0gZXZlbnQuZGF0YS5rZXk7CiAgICAgICAgIHZhciB2YWx1ZSA9IGV2ZW50LmRhdGEu
dmFsdWU7CkBAIC0xMjUsOSArMTE3LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBkYXRhID0ge2tleSwgdmFsdWV9OwogICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZShkYXRhLCBmYWxzZSkpOwogICAgICAgICB0aGlzLl9zb3J0RGF0YUdyaWQoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGl0ZW1VcGRhdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBpdGVtVXBk
YXRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBrZXkgPSBldmVudC5kYXRhLmtleTsKICAg
ICAgICAgdmFyIHZhbHVlID0gZXZlbnQuZGF0YS52YWx1ZTsKQEAgLTE0NywyNCArMTM5LDI0IEBA
IFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHRoaXMuX3NvcnREYXRhR3JpZCgpOwotICAgIH0s
CisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZCkKICAgICAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjcm9s
bGFibGVFbGVtZW50cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKQogICAg
ICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgICByZXR1cm4gW3RoaXMuX2RhdGFHcmlkLnNjcm9s
bENvbnRhaW5lcl07Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfc29y
dERhdGFHcmlkOiBmdW5jdGlvbigpCisgICAgX3NvcnREYXRhR3JpZCgpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlcikKICAgICAgICAgICAgIHJldHVybjsKQEAg
LTE3NywxOCArMTY5LDE4IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlQ29udGVudFZpZXcucHJv
dG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydE5vZGVz
KGNvbXBhcmF0b3IsIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlcik7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfZGVsZXRlQ2FsbGJhY2s6IGZ1bmN0aW9uKG5vZGUpCisgICAgX2RlbGV0ZUNhbGxiYWNr
KG5vZGUpCiAgICAgewogICAgICAgICBpZiAoIW5vZGUgfHwgbm9kZS5pc1BsYWNlaG9sZGVyTm9k
ZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVD
aGlsZChub2RlKTsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVJdGVtKG5v
ZGUuZGF0YVsia2V5Il0pOwotICAgIH0sCisgICAgfQogCi0gICAgX2VkaXRpbmdDYWxsYmFjazog
ZnVuY3Rpb24oZWRpdGluZ05vZGUsIGNvbHVtbklkZW50aWZpZXIsIG9sZFRleHQsIG5ld1RleHQs
IG1vdmVEaXJlY3Rpb24pCisgICAgX2VkaXRpbmdDYWxsYmFjayhlZGl0aW5nTm9kZSwgY29sdW1u
SWRlbnRpZmllciwgb2xkVGV4dCwgbmV3VGV4dCwgbW92ZURpcmVjdGlvbikKICAgICB7CiAgICAg
ICAgIHZhciBrZXkgPSBlZGl0aW5nTm9kZS5kYXRhWyJrZXkiXS50cmltKCkucmVtb3ZlV29yZEJy
ZWFrQ2hhcmFjdGVycygpOwogICAgICAgICB2YXIgdmFsdWUgPSBlZGl0aW5nTm9kZS5kYXRhWyJ2
YWx1ZSJdLnRyaW0oKS5yZW1vdmVXb3JkQnJlYWtDaGFyYWN0ZXJzKCk7CkBAIC0yODIsMyArMjc0
LDcgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGRvbVN0b3JhZ2Uuc2V0SXRlbShrZXksIHZhbHVlKTsKICAgICB9CiB9OworCitXZWJJ
bnNwZWN0b3IuRE9NU3RvcmFnZUNvbnRlbnRWaWV3LkR1cGxpY2F0ZUtleVN0eWxlQ2xhc3NOYW1l
ID0gImR1cGxpY2F0ZS1rZXkiOworV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VDb250ZW50Vmlldy5N
aXNzaW5nS2V5U3R5bGVDbGFzc05hbWUgPSAibWlzc2luZy1rZXkiOworV2ViSW5zcGVjdG9yLkRP
TVN0b3JhZ2VDb250ZW50Vmlldy5NaXNzaW5nVmFsdWVTdHlsZUNsYXNzTmFtZSA9ICJtaXNzaW5n
LXZhbHVlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwppbmRleCA1MWM2Njc2Li4wNDgz
ZGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9ET01UcmVlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxMDQgKzIzLDEwMCBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5E
T01UcmVlQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3Bl
Y3Rvci5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIHsKLSAgICBjb25zb2xlLmFzc2VydChyZXByZXNl
bnRlZE9iamVjdCk7Ci0KLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0aGlzLCBy
ZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICB2YXIgbGF5ZXJCb3JkZXJzSW1hZ2UsIHNoYWRvd0RP
TUltYWdlOwotICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUykgewot
ICAgICAgICBsYXllckJvcmRlcnNJbWFnZSA9IHtzcmM6ICJJbWFnZXMvTGVnYWN5L0xheWVyQm9y
ZGVycy5zdmciLCB3aWR0aDogMTYsIGhlaWdodDogMTZ9OwotICAgICAgICBzaGFkb3dET01JbWFn
ZSA9IHtzcmM6ICJJbWFnZXMvTGVnYWN5L1NoYWRvd0RPTS5zdmciLCB3aWR0aDogMTYsIGhlaWdo
dDogMTZ9OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGxheWVyQm9yZGVyc0ltYWdlID0ge3NyYzog
IkltYWdlcy9MYXllckJvcmRlcnMuc3ZnIiwgd2lkdGg6IDEzLCBoZWlnaHQ6IDEzfTsKLSAgICAg
ICAgc2hhZG93RE9NSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL1NoYWRvd0RPTS5zdmciLCB3aWR0aDog
MTMsIGhlaWdodDogMTN9OwotICAgIH0KKyAgICBjb25zdHJ1Y3RvcihyZXByZXNlbnRlZE9iamVj
dCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsKIAot
ICAgIHRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdl
Ykluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJsYXllci1ib3JkZXJzIiwg
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IGNvbXBvc2l0aW5nIGJvcmRlcnMiKSwgV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJIaWRlIGNvbXBvc2l0aW5nIGJvcmRlcnMiKSwgbGF5ZXJCb3JkZXJz
SW1hZ2Uuc3JjLCBsYXllckJvcmRlcnNJbWFnZS53aWR0aCwgbGF5ZXJCb3JkZXJzSW1hZ2UuaGVp
Z2h0KTsKLSAgICB0aGlzLl9jb21wb3NpdGluZ0JvcmRlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbS5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5D
bGlja2VkLCB0aGlzLl90b2dnbGVDb21wb3NpdGluZ0JvcmRlcnMsIHRoaXMpOwotICAgIHRoaXMu
X2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSAhIVBhZ2VB
Z2VudC5nZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlOworICAgICAgICBzdXBlcihyZXByZXNl
bnRlZE9iamVjdCk7CiAKLSAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhaW50UmVjdHNTZXR0aW5nLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5f
c2hvd1BhaW50UmVjdHNTZXR0aW5nQ2hhbmdlZCwgdGhpcyk7Ci0gICAgdGhpcy5fcGFpbnRGbGFz
aGluZ0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRv
bk5hdmlnYXRpb25JdGVtKCJwYWludC1mbGFzaGluZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
RW5hYmxlIHBhaW50IGZsYXNoaW5nIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRGlzYWJsZSBw
YWludCBmbGFzaGluZyIpLCAiSW1hZ2VzL1BhaW50Rmxhc2hpbmcuc3ZnIiwgMTYsIDE2KTsKLSAg
ICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5f
dG9nZ2xlUGFpbnRGbGFzaGluZywgdGhpcyk7Ci0gICAgdGhpcy5fcGFpbnRGbGFzaGluZ0J1dHRv
bk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSAhIVBhZ2VBZ2VudC5zZXRTaG93UGFpbnRSZWN0czsK
LSAgICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0g
UGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzICYmIFdlYkluc3BlY3Rvci5zaG93UGFpbnRSZWN0
c1NldHRpbmcudmFsdWU7CisgICAgICAgIHZhciBsYXllckJvcmRlcnNJbWFnZSwgc2hhZG93RE9N
SW1hZ2U7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUykg
eworICAgICAgICAgICAgbGF5ZXJCb3JkZXJzSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL0xlZ2FjeS9M
YXllckJvcmRlcnMuc3ZnIiwgd2lkdGg6IDE2LCBoZWlnaHQ6IDE2fTsKKyAgICAgICAgICAgIHNo
YWRvd0RPTUltYWdlID0ge3NyYzogIkltYWdlcy9MZWdhY3kvU2hhZG93RE9NLnN2ZyIsIHdpZHRo
OiAxNiwgaGVpZ2h0OiAxNn07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsYXllckJv
cmRlcnNJbWFnZSA9IHtzcmM6ICJJbWFnZXMvTGF5ZXJCb3JkZXJzLnN2ZyIsIHdpZHRoOiAxMywg
aGVpZ2h0OiAxM307CisgICAgICAgICAgICBzaGFkb3dET01JbWFnZSA9IHtzcmM6ICJJbWFnZXMv
U2hhZG93RE9NLnN2ZyIsIHdpZHRoOiAxMywgaGVpZ2h0OiAxM307CisgICAgICAgIH0KIAotICAg
IFdlYkluc3BlY3Rvci5zaG93U2hhZG93RE9NU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5nZWQsIHRoaXMuX3Nob3dTaGFkb3dET01TZXR0aW5n
Q2hhbmdlZCwgdGhpcyk7Ci0gICAgdGhpcy5fc2hvd3NTaGFkb3dET01CdXR0b25OYXZpZ2F0aW9u
SXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hv
d3Mtc2hhZG93LURPTSIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBzaGFkb3cgRE9NIG5v
ZGVzIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSBzaGFkb3cgRE9NIG5vZGVzIiksIHNo
YWRvd0RPTUltYWdlLnNyYywgc2hhZG93RE9NSW1hZ2Uud2lkdGgsIHNoYWRvd0RPTUltYWdlLmhl
aWdodCk7Ci0gICAgdGhpcy5fc2hvd3NTaGFkb3dET01CdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlj
a2VkLCB0aGlzLl90b2dnbGVTaG93c1NoYWRvd0RPTVNldHRpbmcsIHRoaXMpOwotICAgIHRoaXMu
X3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZCgpOworICAgICAgICB0aGlzLl9jb21wb3NpdGlu
Z0JvcmRlcnNCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVC
dXR0b25OYXZpZ2F0aW9uSXRlbSgibGF5ZXItYm9yZGVycyIsIFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2hvdyBjb21wb3NpdGluZyBib3JkZXJzIiksIFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlk
ZSBjb21wb3NpdGluZyBib3JkZXJzIiksIGxheWVyQm9yZGVyc0ltYWdlLnNyYywgbGF5ZXJCb3Jk
ZXJzSW1hZ2Uud2lkdGgsIGxheWVyQm9yZGVyc0ltYWdlLmhlaWdodCk7CisgICAgICAgIHRoaXMu
X2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3Rv
Z2dsZUNvbXBvc2l0aW5nQm9yZGVycywgdGhpcyk7CisgICAgICAgIHRoaXMuX2NvbXBvc2l0aW5n
Qm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSAhIVBhZ2VBZ2VudC5nZXRDb21w
b3NpdGluZ0JvcmRlcnNWaXNpYmxlOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0gICAgdGhp
cy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbW91c2VXYXNDbGlja2Vk
LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dQYWludFJlY3Rz
U2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50LkNoYW5n
ZWQsIHRoaXMuX3Nob3dQYWludFJlY3RzU2V0dGluZ0NoYW5nZWQsIHRoaXMpOworICAgICAgICB0
aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
LkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInBhaW50LWZsYXNoaW5nIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJFbmFibGUgcGFpbnQgZmxhc2hpbmciKSwgV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJEaXNhYmxlIHBhaW50IGZsYXNoaW5nIiksICJJbWFnZXMvUGFpbnRGbGFzaGluZy5zdmci
LCAxNiwgMTYpOworICAgICAgICB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZl
bnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlUGFpbnRGbGFzaGluZywgdGhpcyk7CisgICAgICAgIHRo
aXMuX3BhaW50Rmxhc2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gISFQYWdlQWdl
bnQuc2V0U2hvd1BhaW50UmVjdHM7CisgICAgICAgIHRoaXMuX3BhaW50Rmxhc2hpbmdCdXR0b25O
YXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQgPSBQYWdlQWdlbnQuc2V0U2hvd1BhaW50UmVjdHMgJiYg
V2ViSW5zcGVjdG9yLnNob3dQYWludFJlY3RzU2V0dGluZy52YWx1ZTsKIAotICAgIHRoaXMuX2Rv
bVRyZWVPdXRsaW5lID0gbmV3IFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZSh0cnVlLCB0cnVl
LCBmYWxzZSk7Ci0gICAgdGhpcy5fZG9tVHJlZU91dGxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRE9NVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5f
c2VsZWN0ZWROb2RlRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlzLl9kb21UcmVlT3V0bGluZS53
aXJlVG9Eb21BZ2VudCgpOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kb21U
cmVlT3V0bGluZS5lbGVtZW50KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dTaGFkb3dET01T
ZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdl
ZCwgdGhpcy5fc2hvd1NoYWRvd0RPTVNldHRpbmdDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdGhp
cy5fc2hvd3NTaGFkb3dET01CdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
QWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgic2hvd3Mtc2hhZG93LURPTSIsIFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU2hvdyBzaGFkb3cgRE9NIG5vZGVzIiksIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiSGlkZSBzaGFkb3cgRE9NIG5vZGVzIiksIHNoYWRvd0RPTUltYWdlLnNyYywgc2hhZG93
RE9NSW1hZ2Uud2lkdGgsIHNoYWRvd0RPTUltYWdlLmhlaWdodCk7CisgICAgICAgIHRoaXMuX3No
b3dzU2hhZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlU2hv
d3NTaGFkb3dET01TZXR0aW5nLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fc2hvd1NoYWRvd0RPTVNl
dHRpbmdDaGFuZ2VkKCk7CiAKLSAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlTW9k
aWZpZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIu
RXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwgdGhpcy5fZG9tTm9kZUNoYW5nZWQsIHRoaXMpOwotICAg
IFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5ET01UcmVlTWFuYWdlci5FdmVudC5DaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMuX2RvbU5v
ZGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRv
bS10cmVlIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX21vdXNlV2FzQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKLSAgICB0aGlzLl9s
YXN0U2VsZWN0ZWROb2RlUGF0aFNldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoImxh
c3Qtc2VsZWN0ZWQtbm9kZS1wYXRoIiwgbnVsbCk7CisgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRs
aW5lID0gbmV3IFdlYkluc3BlY3Rvci5ET01UcmVlT3V0bGluZSh0cnVlLCB0cnVlLCBmYWxzZSk7
CisgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLkRPTVRyZWVPdXRsaW5lLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX3NlbGVj
dGVkTm9kZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLndp
cmVUb0RvbUFnZW50KCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9k
b21UcmVlT3V0bGluZS5lbGVtZW50KTsKIAotICAgIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0
cyA9IG51bGw7Ci19OworICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlTW9k
aWZpZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5h
Z2VyLkV2ZW50LkF0dHJpYnV0ZVJlbW92ZWQsIHRoaXMuX2RvbU5vZGVDaGFuZ2VkLCB0aGlzKTsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNoYXJhY3RlckRhdGFNb2RpZmllZCwgdGhp
cy5fZG9tTm9kZUNoYW5nZWQsIHRoaXMpOwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRW
aWV3LlN0eWxlQ2xhc3NOYW1lID0gImRvbS10cmVlIjsKKyAgICAgICAgdGhpcy5fbGFzdFNlbGVj
dGVkTm9kZVBhdGhTZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5nKCJsYXN0LXNlbGVj
dGVkLW5vZGUtcGF0aCIsIG51bGwpOwogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250
ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5
cGUsCisgICAgICAgIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0cyA9IG51bGw7CisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgYWxsb3dlZE5hdmlnYXRpb25TaWRlYmFyUGFuZWxz
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBbV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBh
bmVsLmlkZW50aWZpZXJdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVt
cygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3Nob3dzU2hhZG93RE9NQnV0dG9uTmF2
aWdhdGlvbkl0ZW0sIHRoaXMuX2NvbXBvc2l0aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVt
LCB0aGlzLl9wYWludEZsYXNoaW5nQnV0dG9uTmF2aWdhdGlvbkl0ZW1dOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IGRvbVRyZWVPdXRsaW5lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9kb21UcmVlT3V0bGluZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3JvbGxhYmxlRWxl
bWVudHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLmVsZW1lbnRdOwotICAgIH0sCisg
ICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLnVwZGF0ZVNlbGVjdGlvbigpOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAg
ewogICAgICAgICB0aGlzLl9kb21UcmVlT3V0bGluZS5zZXRWaXNpYmxlKHRydWUsIFdlYkluc3Bl
Y3Rvci5pc0NvbnNvbGVGb2N1c2VkKCkpOwogICAgICAgICB0aGlzLl91cGRhdGVDb21wb3NpdGlu
Z0JvcmRlcnNCdXR0b25Ub01hdGNoUGFnZVNldHRpbmdzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBoaWRkZW46IGZ1bmN0aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0KCk7CiAgICAgICAgIHRo
aXMuX2RvbVRyZWVPdXRsaW5lLnNldFZpc2libGUoZmFsc2UpOwotICAgIH0sCisgICAgfQogCi0g
ICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRo
aXMpOwogCiAgICAgICAgIHRoaXMuX2RvbVRyZWVPdXRsaW5lLmNsb3NlKCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsKQEAgLTE0Miwx
NCArMTM4LDE0IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHBhdGhDb21wb25lbnRzOwotICAgIH0sCisg
ICAgfQogCi0gICAgc2VsZWN0QW5kUmV2ZWFsRE9NTm9kZTogZnVuY3Rpb24oZG9tTm9kZSwgcHJl
dmVudEZvY3VzQ2hhbmdlKQorICAgIHNlbGVjdEFuZFJldmVhbERPTU5vZGUoZG9tTm9kZSwgcHJl
dmVudEZvY3VzQ2hhbmdlKQogICAgIHsKICAgICAgICAgdGhpcy5fZG9tVHJlZU91dGxpbmUuc2Vs
ZWN0RE9NTm9kZShkb21Ob2RlLCAhcHJldmVudEZvY3VzQ2hhbmdlKTsKLSAgICB9LAorICAgIH0K
IAotICAgIGhhbmRsZUNvcHlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgaGFuZGxlQ29weUV2
ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGVkRE9NTm9kZSA9IHRoaXMuX2Rv
bVRyZWVPdXRsaW5lLnNlbGVjdGVkRE9NTm9kZSgpOwogICAgICAgICBpZiAoIXNlbGVjdGVkRE9N
Tm9kZSkKQEAgLTE1OSwxMiArMTU1LDEyIEBAIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogCiAgICAg
ICAgIHNlbGVjdGVkRE9NTm9kZS5jb3B5Tm9kZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHN1cHBvcnRzU2F2ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLmNhbkFy
Y2hpdmVNYWluRnJhbWUoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzYXZlRGF0YSgpCiAg
ICAgewpAQCAtMTc0LDIyICsxNzAsMjIgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4geyBjdXN0b21TYXZl
SGFuZGxlcjogc2F2ZUhhbmRsZXIgfTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdXBwb3J0
c1NlYXJjaCgpCiAgICAgewogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBudW1iZXJPZlNlYXJjaFJlc3VsdHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX251bWJlck9mU2VhcmNoUmVzdWx0czsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoYXNQ
ZXJmb3JtZWRTZWFyY2goKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlck9mU2Vh
cmNoUmVzdWx0cyAhPT0gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhdXRvbWF0aWNh
bGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQocmV2ZWFsKQogICAgIHsKQEAgLTIwMCw5ICsxOTYs
OSBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGlmICh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPT09IC0xKQogICAgICAg
ICAgICAgICAgIHRoaXMucmV2ZWFsTmV4dFNlYXJjaFJlc3VsdCgpOwogICAgICAgICB9Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihxdWVyeSkKKyAgICBwZXJm
b3JtU2VhcmNoKHF1ZXJ5KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NlYXJjaFF1ZXJ5ID09
PSBxdWVyeSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIzOSwxNiArMjM1LDE2IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgdGhpcy5nZXRTZWFyY2hDb250ZXh0Tm9kZXMoY29udGV4dE5vZGVzUmVhZHkuYmluZCh0
aGlzKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRTZWFyY2hDb250ZXh0Tm9kZXM6IGZ1bmN0
aW9uKGNhbGxiYWNrKQorICAgIGdldFNlYXJjaENvbnRleHROb2RlcyhjYWxsYmFjaykKICAgICB7
CiAgICAgICAgIC8vIE92ZXJ3cml0ZSB0aGlzIHRvIGxpbWl0IHRoZSBzZWFyY2ggdG8ganVzdCBh
IHN1YnRyZWUuCiAgICAgICAgIC8vIFBhc3NpbmcgdW5kZWZpbmVkIHdpbGwgbWFrZSBET01BZ2Vu
dC5wZXJmb3JtU2VhcmNoIHNlYXJjaCB0aHJvdWdoIGFsbCB0aGUgZG9jdW1lbnRzLgogICAgICAg
ICBjYWxsYmFjayh1bmRlZmluZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VhcmNoQ2xlYXJl
ZDogZnVuY3Rpb24oKQorICAgIHNlYXJjaENsZWFyZWQoKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX3NlYXJjaElkZW50aWZpZXIpIHsKICAgICAgICAgICAgIERPTUFnZW50LmRpc2NhcmRTZWFy
Y2hSZXN1bHRzKHRoaXMuX3NlYXJjaElkZW50aWZpZXIpOwpAQCAtMjU5LDkgKzI1NSw5IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9zZWFyY2hJZGVudGlmaWVyID0gbnVsbDsKICAgICAgICAgdGhpcy5fbnVtYmVyT2ZTZWFyY2hS
ZXN1bHRzID0gbnVsbDsKICAgICAgICAgdGhpcy5fY3VycmVudFNlYXJjaFJlc3VsdEluZGV4ID0g
LTE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdDogZnVu
Y3Rpb24oY2hhbmdlRm9jdXMpCisgICAgcmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQoY2hhbmdl
Rm9jdXMpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0cykK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTI3Miw5ICsyNjgsOSBAQCBXZWJJbnNwZWN0b3IuRE9N
VHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRT
ZWFyY2hSZXN1bHRJbmRleCA9IHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0cyAtIDE7CiAKICAg
ICAgICAgdGhpcy5fcmV2ZWFsU2VhcmNoUmVzdWx0KHRoaXMuX2N1cnJlbnRTZWFyY2hSZXN1bHRJ
bmRleCwgY2hhbmdlRm9jdXMpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsTmV4dFNlYXJj
aFJlc3VsdDogZnVuY3Rpb24oY2hhbmdlRm9jdXMpCisgICAgcmV2ZWFsTmV4dFNlYXJjaFJlc3Vs
dChjaGFuZ2VGb2N1cykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbnVtYmVyT2ZTZWFyY2hS
ZXN1bHRzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjg1LDExICsyODEsMTEgQEAgV2ViSW5z
cGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlz
Ll9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXggPSAwOwogCiAgICAgICAgIHRoaXMuX3JldmVhbFNl
YXJjaFJlc3VsdCh0aGlzLl9jdXJyZW50U2VhcmNoUmVzdWx0SW5kZXgsIGNoYW5nZUZvY3VzKTsK
LSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9yZXZlYWxTZWFyY2hSZXN1
bHQ6IGZ1bmN0aW9uKGluZGV4LCBjaGFuZ2VGb2N1cykKKyAgICBfcmV2ZWFsU2VhcmNoUmVzdWx0
KGluZGV4LCBjaGFuZ2VGb2N1cykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X3NlYXJjaElkZW50aWZpZXIpOwogCkBAIC0zMTksOSArMzE1LDkgQEAgV2ViSW5zcGVjdG9yLkRP
TVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBET01B
Z2VudC5nZXRTZWFyY2hSZXN1bHRzKHRoaXMuX3NlYXJjaElkZW50aWZpZXIsIGluZGV4LCBpbmRl
eCArIDEsIHJldmVhbFJlc3VsdC5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9y
ZXN0b3JlU2VsZWN0ZWROb2RlQWZ0ZXJVcGRhdGU6IGZ1bmN0aW9uKGRvY3VtZW50VVJMLCBkZWZh
dWx0Tm9kZSkKKyAgICBfcmVzdG9yZVNlbGVjdGVkTm9kZUFmdGVyVXBkYXRlKGRvY3VtZW50VVJM
LCBkZWZhdWx0Tm9kZSkKICAgICB7CiAgICAgICAgIGlmICghV2ViSW5zcGVjdG9yLmRvbVRyZWVN
YW5hZ2VyLnJlc3RvcmVTZWxlY3RlZE5vZGVJc0FsbG93ZWQpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0zNTUsOSArMzUxLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIucHVzaE5v
ZGVCeVBhdGhUb0Zyb250ZW5kKHRoaXMuX2xhc3RTZWxlY3RlZE5vZGVQYXRoU2V0dGluZy52YWx1
ZS5wYXRoLCBzZWxlY3RMYXN0U2VsZWN0ZWROb2RlLmJpbmQodGhpcykpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBzZWxlY3ROb2RlLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfc2VsZWN0ZWROb2RlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2VsZWN0ZWRO
b2RlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNlbGVjdGVkRE9NTm9kZSA9
IHRoaXMuX2RvbVRyZWVPdXRsaW5lLnNlbGVjdGVkRE9NTm9kZSgpOwogICAgICAgICBpZiAoc2Vs
ZWN0ZWRET01Ob2RlICYmICF0aGlzLl9kb250U2V0TGFzdFNlbGVjdGVkTm9kZVBhdGgpCkBAIC0z
NjcsMjYgKzM2MywyNiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIENvbnNvbGVBZ2VudC5hZGRJbnNwZWN0ZWROb2RlKHNlbGVjdGVk
RE9NTm9kZS5pZCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hh
bmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0ZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0ZWQoZXZlbnQpCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydChldmVudC5kYXRhLnBhdGhDb21wb25lbnQgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50KTsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LmRvbVRyZWVFbGVtZW50IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9kb21UcmVl
T3V0bGluZS5zZWxlY3RET01Ob2RlKGV2ZW50LmRhdGEucGF0aENvbXBvbmVudC5kb21UcmVlRWxl
bWVudC5yZXByZXNlbnRlZE9iamVjdCwgdHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZG9t
Tm9kZUNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kb21Ob2RlQ2hhbmdlZChldmVudCkK
ICAgICB7CiAgICAgICAgIHZhciBzZWxlY3RlZERPTU5vZGUgPSB0aGlzLl9kb21UcmVlT3V0bGlu
ZS5zZWxlY3RlZERPTU5vZGUoKTsKICAgICAgICAgaWYgKHNlbGVjdGVkRE9NTm9kZSAhPT0gZXZl
bnQuZGF0YS5ub2RlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rp
b25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2VX
YXNDbGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VXYXNDbGlja2VkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdmFyIGFuY2hvckVsZW1lbnQgPSBldmVudC50YXJnZXQuZW5jbG9zaW5n
Tm9kZU9yU2VsZldpdGhOb2RlTmFtZSgiYSIpOwogICAgICAgICBpZiAoIWFuY2hvckVsZW1lbnQg
fHwgIWFuY2hvckVsZW1lbnQuaHJlZikKQEAgLTQyNCwyMyArNDIwLDIzIEBAIFdlYkluc3BlY3Rv
ci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyB0aGVuIGEgZG91
YmxlLWNsaWNrIGhhcHBlbmVkIG9yIGFub3RoZXIgbGluayB3YXMgY2xpY2tlZC4KICAgICAgICAg
Ly8gRklYTUU6IFRoZSBkdXJhdGlvbiBtaWdodCBiZSBsb25nZXIgb3Igc2hvcnRlciB0aGFuIHRo
ZSB1c2VyJ3MgY29uZmlndXJlZCBkb3VibGUgY2xpY2sgc3BlZWQuCiAgICAgICAgIHRoaXMuX2Zv
bGxvd0xpbmtUaW1lb3V0SWRlbnRpZmllciA9IHNldFRpbWVvdXQoZm9sbG93TGluay5iaW5kKHRo
aXMpLCAzMzMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2dsZUNvbXBvc2l0aW5nQm9yZGVy
czogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RvZ2dsZUNvbXBvc2l0aW5nQm9yZGVycyhldmVudCkK
ICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFBhZ2VBZ2VudC5zZXRDb21wb3NpdGluZ0Jv
cmRlcnNWaXNpYmxlKTsKIAogICAgICAgICB2YXIgYWN0aXZhdGVkID0gIXRoaXMuX2NvbXBvc2l0
aW5nQm9yZGVyc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZDsKICAgICAgICAgdGhpcy5f
Y29tcG9zaXRpbmdCb3JkZXJzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gYWN0aXZh
dGVkOwogICAgICAgICBQYWdlQWdlbnQuc2V0Q29tcG9zaXRpbmdCb3JkZXJzVmlzaWJsZShhY3Rp
dmF0ZWQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2dsZVBhaW50Rmxhc2hpbmc6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF90b2dnbGVQYWludEZsYXNoaW5nKGV2ZW50KQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLnNob3dQYWludFJlY3RzU2V0dGluZy52YWx1ZSA9ICFXZWJJbnNwZWN0
b3Iuc2hvd1BhaW50UmVjdHNTZXR0aW5nLnZhbHVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3Vw
ZGF0ZUNvbXBvc2l0aW5nQm9yZGVyc0J1dHRvblRvTWF0Y2hQYWdlU2V0dGluZ3M6IGZ1bmN0aW9u
KCkKKyAgICBfdXBkYXRlQ29tcG9zaXRpbmdCb3JkZXJzQnV0dG9uVG9NYXRjaFBhZ2VTZXR0aW5n
cygpCiAgICAgewogICAgICAgICBpZiAoIVBhZ2VBZ2VudC5nZXRDb21wb3NpdGluZ0JvcmRlcnNW
aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDUzLDI4ICs0NDksMjggQEAgV2ViSW5z
cGVjdG9yLkRPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBidXR0
b24uYWN0aXZhdGVkID0gZXJyb3IgPyBmYWxzZSA6IGNvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGU7
CiAgICAgICAgICAgICBidXR0b24uZW5hYmxlZCA9IGVycm9yICE9PSAidW5zdXBwb3J0ZWQiOwog
ICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93UGFpbnRSZWN0c1NldHRpbmdD
aGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2hvd1BhaW50UmVjdHNTZXR0aW5nQ2hhbmdl
ZChldmVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFBhZ2VBZ2VudC5zZXRTaG93
UGFpbnRSZWN0cyk7CiAKICAgICAgICAgdGhpcy5fcGFpbnRGbGFzaGluZ0J1dHRvbk5hdmlnYXRp
b25JdGVtLmFjdGl2YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93UGFpbnRSZWN0c1NldHRpbmcudmFs
dWU7CiAKICAgICAgICAgUGFnZUFnZW50LnNldFNob3dQYWludFJlY3RzKHRoaXMuX3BhaW50Rmxh
c2hpbmdCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3RpdmF0ZWQpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3Nob3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3No
b3dTaGFkb3dET01TZXR0aW5nQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3No
b3dzU2hhZG93RE9NQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2ViSW5zcGVjdG9y
LnNob3dTaGFkb3dET01TZXR0aW5nLnZhbHVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2ds
ZVNob3dzU2hhZG93RE9NU2V0dGluZzogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RvZ2dsZVNob3dz
U2hhZG93RE9NU2V0dGluZyhldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93
U2hhZG93RE9NU2V0dGluZy52YWx1ZSA9ICFXZWJJbnNwZWN0b3Iuc2hvd1NoYWRvd0RPTVNldHRp
bmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd1NlYXJjaEhpZ2hsaWdodHM6IGZ1
bmN0aW9uKCkKKyAgICBfc2hvd1NlYXJjaEhpZ2hsaWdodHMoKQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fc2VhcmNoSWRlbnRpZmllcik7CiAKQEAgLTUwNSw5ICs1MDEsOSBA
QCBXZWJJbnNwZWN0b3IuRE9NVHJlZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICAgICAgdHJlZUVsZW1lbnQuaGlnaGxpZ2h0U2VhcmNoUmVzdWx0cyh0aGlzLl9zZWFy
Y2hRdWVyeSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfaGlkZVNlYXJjaEhpZ2hsaWdodHM6IGZ1bmN0aW9uKCkKKyAgICBfaGlk
ZVNlYXJjaEhpZ2hsaWdodHMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zZWFyY2hSZXN1
bHROb2RlcykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVEYXRhR3JpZC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVEYXRhR3JpZC5qcwppbmRl
eCBjOTAzMWQyLi5lMjNiMDg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlRGF0YUdyaWQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZURhdGFHcmlkLmpzCkBAIC0xLDQgKzEs
NSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWRvYmUgU3lzdGVtcyBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yMywzNCArMjQsMzMgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NVHJl
ZURhdGFHcmlkID0gZnVuY3Rpb24oKSB7Ci0gICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLmNhbGwo
dGhpcywgewotICAgICAgICBuYW1lOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5v
ZGUiKSwgc29ydGFibGU6IGZhbHNlIH0KLSAgICB9KTsKK1dlYkluc3BlY3Rvci5ET01UcmVlRGF0
YUdyaWQgPSBjbGFzcyBET01UcmVlRGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQKK3sKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcih7bmFtZToge3Rp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk5vZGUiKSwgc29ydGFibGU6IGZhbHNlfX0pOwog
Ci0gICAgdGhpcy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVudCA9IG51bGw7CisgICAgICAgIHRoaXMu
X3ByZXZpb3VzSG92ZXJlZEVsZW1lbnQgPSBudWxsOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoImRvbS10cmVlLWRhdGEtZ3JpZCIpOwotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJpbmxpbmUiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRv
bS10cmVlLWRhdGEtZ3JpZCIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
aW5saW5lIik7CiAKLSAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3Zl
IiwgdGhpcy5fb25tb3VzZW1vdmUuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIHRoaXMuZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX29ubW91c2VvdXQuYmluZCh0aGlz
KSwgZmFsc2UpOwotfTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlbW92ZSIsIHRoaXMuX29ubW91c2Vtb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAg
dGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5fb25tb3VzZW91
dC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRE9NVHJlZURhdGFH
cmlkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRPTVRyZWVE
YXRhR3JpZCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUs
CisgICAgLy8gUHJpdmF0ZQogCi0gICAgX29ubW91c2Vtb3ZlOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfb25tb3VzZW1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZ3JpZE5vZGUgPSB0aGlz
LmRhdGFHcmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIGlmICghZ3JpZE5v
ZGUgfHwgdGhpcy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVudCA9PT0gZ3JpZE5vZGUuZG9tTm9kZSkK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fcHJldmlvdXNIb3ZlcmVkRWxlbWVu
dCA9IGdyaWROb2RlLmRvbU5vZGU7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdl
ci5oaWdobGlnaHRET01Ob2RlKGdyaWROb2RlLmRvbU5vZGUuaWQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX29ubW91c2VvdXQ6IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgX29ubW91c2VvdXQoZXZl
bnQpIHsKICAgICAgICAgaWYgKCF0aGlzLl9wcmV2aW91c0hvdmVyZWRFbGVtZW50KQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuaGlkZURP
TU5vZGVIaWdobGlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRGF0YUdyaWROb2RlLmpzCmluZGV4IDY4
M2E0YWUuLjA4ZGU1YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTVRyZWVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZURhdGFHcmlkTm9kZS5qcwpAQCAtMSw0
ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzIEFkb2JlIFN5c3RlbXMgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjMsNDQgKzI0LDQ0IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRP
TVRyZWVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkb21Ob2RlKQorV2ViSW5zcGVjdG9yLkRPTVRy
ZWVEYXRhR3JpZE5vZGUgPSBjbGFzcyBET01UcmVlRGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkTm9kZQogewotICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUuY2Fs
bCh0aGlzKTsKLQotICAgIHRoaXMuX25hbWVMYWJlbCA9IG51bGw7Ci0gICAgdGhpcy5fZG9tTm9k
ZSA9IGRvbU5vZGU7Ci0gICAgdGhpcy5fdXBkYXRlTm9kZU5hbWUoKTsKLX07CisgICAgY29uc3Ry
dWN0b3IoZG9tTm9kZSkKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLVdlYkluc3BlY3Rvci5E
T01UcmVlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkRPTVRyZWVEYXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlLnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fbmFtZUxhYmVsID0gbnVsbDsK
KyAgICAgICAgdGhpcy5fZG9tTm9kZSA9IGRvbU5vZGU7CisgICAgICAgIHRoaXMuX3VwZGF0ZU5v
ZGVOYW1lKCk7CisgICAgfQogCisgICAgLy8gUHVibGljCisgICAgCiAgICAgZ2V0IGRvbU5vZGUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbU5vZGU7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBEYXRhR3JpZE5vZGUgT3ZlcnJpZGVzLgogCi0gICAgY3JlYXRlQ2VsbENvbnRlbnQ6
IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCisgICAgY3JlYXRlQ2VsbENvbnRlbnQo
Y29sdW1uSWRlbnRpZmllciwgY2VsbCkKICAgICB7CiAgICAgICAgIGlmIChjb2x1bW5JZGVudGlm
aWVyICE9PSAibmFtZSIpCi0gICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbENvbnRlbnQuY2FsbCh0aGlzLCBjb2x1bW5JZGVudGlm
aWVyLCBjZWxsKTsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5jcmVhdGVDZWxsQ29udGVudChj
b2x1bW5JZGVudGlmaWVyLCBjZWxsKTsKIAogICAgICAgICB2YXIgY2VsbCA9IHRoaXMuX21ha2VO
YW1lQ2VsbCgpOwogICAgICAgICB0aGlzLl91cGRhdGVOYW1lQ2VsbERhdGEoKTsKICAgICAgICAg
cmV0dXJuIGNlbGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBk
YXRlTm9kZU5hbWU6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlTm9kZU5hbWUoKQogICAgIHsKICAg
ICAgICAgdGhpcy5kYXRhID0ge25hbWU6IFdlYkluc3BlY3Rvci5kaXNwbGF5TmFtZUZvck5vZGUo
dGhpcy5fZG9tTm9kZSl9OwotICAgIH0sCisgICAgfQogCi0gICAgX21ha2VOYW1lQ2VsbDogZnVu
Y3Rpb24oKQorICAgIF9tYWtlTmFtZUNlbGwoKQogICAgIHsKICAgICAgICAgdmFyIGZyYWdtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCkBAIC03NCwxNCArNzUsMTQg
QEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAg
ICBnb1RvQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZ29Ub0Fycm93V2Fz
Q2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKICAgICAgICAgcmV0dXJuIGZyYWdtZW50Owot
ICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU5hbWVDZWxsRGF0YTogZnVuY3Rpb24oKQorICAg
IF91cGRhdGVOYW1lQ2VsbERhdGEoKQogICAgIHsKICAgICAgICAgdGhpcy5fbmFtZUxhYmVsLnRl
eHRDb250ZW50ID0gdGhpcy5kYXRhLm5hbWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ29Ub0Fy
cm93V2FzQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9nb1RvQXJyb3dXYXNDbGlja2VkKCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93TWFpbkZy
YW1lRE9NVHJlZSh0aGlzLl9kb21Ob2RlLCB0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVy
LmpzCmluZGV4IGFkMjY4NDEuLmZmODFhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVyLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVVcGRhdGVyLmpzCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAxMyBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDggTWF0dCBMaWxlayA8d2Via2l0QG1hdHRsaWxlay5jb20+CiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDkgSm9zZXBoIFBlY29yYXJvCiAgKgpAQCAtMjgsNzQgKzI4LDgxIEBACiAgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01UcmVlVXBkYXRlciA9IGZ1bmN0aW9uKHRyZWVP
dXRsaW5lKQorV2ViSW5zcGVjdG9yLkRPTVRyZWVVcGRhdGVyID0gY2xhc3MgRE9NVHJlZVVwZGF0
ZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLmRvbVRy
ZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2
ZW50Lk5vZGVJbnNlcnRlZCwgdGhpcy5fbm9kZUluc2VydGVkLCB0aGlzKTsKLSAgICBXZWJJbnNw
ZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJl
ZU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1vdmVkLCB0aGlzKTsKLSAg
ICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHRoaXMuX2F0dHJpYnV0
ZXNVcGRhdGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlUmVt
b3ZlZCwgdGhpcy5fYXR0cmlidXRlc1VwZGF0ZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5k
b21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdl
ci5FdmVudC5DaGFyYWN0ZXJEYXRhTW9kaWZpZWQsIHRoaXMuX2NoYXJhY3RlckRhdGFNb2RpZmll
ZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkRvY3VtZW50VXBkYXRlZCwgdGhp
cy5fZG9jdW1lbnRVcGRhdGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQ2hp
bGROb2RlQ291bnRVcGRhdGVkLCB0aGlzLl9jaGlsZE5vZGVDb3VudFVwZGF0ZWQsIHRoaXMpOwot
Ci0gICAgdGhpcy5fdHJlZU91dGxpbmUgPSB0cmVlT3V0bGluZTsKLSAgICB0aGlzLl9yZWNlbnRs
eU1vZGlmaWVkTm9kZXMgPSBbXTsKLX07CisgICAgY29uc3RydWN0b3IodHJlZU91dGxpbmUpCisg
ICAgeworICAgICAgICBzdXBlcigpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5O
b2RlSW5zZXJ0ZWQsIHRoaXMuX25vZGVJbnNlcnRlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21UcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5ET01UcmVl
TWFuYWdlci5FdmVudC5Ob2RlUmVtb3ZlZCwgdGhpcy5fbm9kZVJlbW92ZWQsIHRoaXMpOworICAg
ICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHRoaXMuX2F0dHJp
YnV0ZXNVcGRhdGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkF0dHJp
YnV0ZVJlbW92ZWQsIHRoaXMuX2F0dHJpYnV0ZXNVcGRhdGVkLCB0aGlzKTsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRP
TVRyZWVNYW5hZ2VyLkV2ZW50LkNoYXJhY3RlckRhdGFNb2RpZmllZCwgdGhpcy5fY2hhcmFjdGVy
RGF0YU1vZGlmaWVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkRvY3Vt
ZW50VXBkYXRlZCwgdGhpcy5fZG9jdW1lbnRVcGRhdGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5z
cGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRy
ZWVNYW5hZ2VyLkV2ZW50LkNoaWxkTm9kZUNvdW50VXBkYXRlZCwgdGhpcy5fY2hpbGROb2RlQ291
bnRVcGRhdGVkLCB0aGlzKTsKIAotV2ViSW5zcGVjdG9yLkRPTVRyZWVVcGRhdGVyLnByb3RvdHlw
ZSA9IHsKLSAgICBjbG9zZTogZnVuY3Rpb24oKQorICAgICAgICB0aGlzLl90cmVlT3V0bGluZSA9
IHRyZWVPdXRsaW5lOworICAgICAgICB0aGlzLl9yZWNlbnRseU1vZGlmaWVkTm9kZXMgPSBbXTsK
KyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGNsb3NlKCkKICAgICB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGws
IHRoaXMpOwotICAgIH0sCisgICAgfQorCisgICAgLy8gUHJpdmF0ZQogCi0gICAgX2RvY3VtZW50
VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RvY3VtZW50VXBkYXRlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3Jlc2V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYXR0cmli
dXRlc1VwZGF0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9hdHRyaWJ1dGVzVXBkYXRlZChldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlY2VudGx5TW9kaWZpZWROb2Rlcy5wdXNoKHtub2Rl
OiBldmVudC5kYXRhLm5vZGUsIHVwZGF0ZWQ6IHRydWV9KTsKICAgICAgICAgaWYgKHRoaXMuX3Ry
ZWVPdXRsaW5lLl92aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rl
c1Nvb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQ6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9jaGFyYWN0ZXJEYXRhTW9kaWZpZWQoZXZlbnQpCiAgICAgewog
ICAgICAgICB0aGlzLl9yZWNlbnRseU1vZGlmaWVkTm9kZXMucHVzaCh7bm9kZTogZXZlbnQuZGF0
YS5ub2RlLCB1cGRhdGVkOiB0cnVlfSk7CiAgICAgICAgIGlmICh0aGlzLl90cmVlT3V0bGluZS5f
dmlzaWJsZSkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXNTb29uKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfbm9kZUluc2VydGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBf
bm9kZUluc2VydGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVjZW50bHlNb2RpZmll
ZE5vZGVzLnB1c2goe25vZGU6IGV2ZW50LmRhdGEubm9kZSwgcGFyZW50OiBldmVudC5kYXRhLnBh
cmVudCwgaW5zZXJ0ZWQ6IHRydWV9KTsKICAgICAgICAgaWYgKHRoaXMuX3RyZWVPdXRsaW5lLl92
aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc1Nvb24oKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9ub2RlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX25v
ZGVSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fcmVjZW50bHlNb2RpZmllZE5v
ZGVzLnB1c2goe25vZGU6IGV2ZW50LmRhdGEubm9kZSwgcGFyZW50OiBldmVudC5kYXRhLnBhcmVu
dCwgcmVtb3ZlZDogdHJ1ZX0pOwogICAgICAgICBpZiAodGhpcy5fdHJlZU91dGxpbmUuX3Zpc2li
bGUpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzU29vbigpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2NoaWxkTm9kZUNvdW50VXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2NoaWxkTm9kZUNvdW50VXBkYXRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciB0cmVl
RWxlbWVudCA9IHRoaXMuX3RyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChldmVudC5kYXRhKTsK
ICAgICAgICAgaWYgKHRyZWVFbGVtZW50KQogICAgICAgICAgICAgdHJlZUVsZW1lbnQuaGFzQ2hp
bGRyZW4gPSBldmVudC5kYXRhLmhhc0NoaWxkTm9kZXMoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF91cGRhdGVNb2RpZmllZE5vZGVzU29vbjogZnVuY3Rpb24oKQorICAgIF91cGRhdGVNb2RpZmll
ZE5vZGVzU29vbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rl
c1RpbWVvdXQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlm
aWVkTm9kZXNUaW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzLmJp
bmQodGhpcyksIDApOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZU1vZGlmaWVkTm9kZXM6
IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlTW9kaWZpZWROb2RlcygpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fdXBkYXRlTW9kaWZpZWROb2Rlc1RpbWVvdXQpIHsKICAgICAgICAgICAgIGNsZWFy
VGltZW91dCh0aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzVGltZW91dCk7CkBAIC0xMzEsOSArMTM4
LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVVcGRhdGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGRlbGV0ZSB1cGRhdGVkUGFyZW50VHJlZUVsZW1lbnRzW2ldLmFscmVhZHlVcGRhdGVkQ2hp
bGRyZW47CiAKICAgICAgICAgdGhpcy5fcmVjZW50bHlNb2RpZmllZE5vZGVzID0gW107Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICBfcmVzZXQoKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLmhpZGVET01Ob2RlSGlnaGxpZ2h0
KCk7CiAgICAgICAgIHRoaXMuX3JlY2VudGx5TW9kaWZpZWROb2RlcyA9IFtdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcwpp
bmRleCBlNTJkODdjLi4zYzg4NjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywx
ODEgKzIzLDE2OCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGF0YUdy
aWQgPSBmdW5jdGlvbihjb2x1bW5zRGF0YSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaywg
cHJlZmVycmVkQ29sdW1uT3JkZXIpCitXZWJJbnNwZWN0b3IuRGF0YUdyaWQgPSBjbGFzcyBEYXRh
R3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0aGlzLmNvbHVtbnMgPSBu
ZXcgTWFwOwotICAgIHRoaXMub3JkZXJlZENvbHVtbnMgPSBbXTsKLQotICAgIHRoaXMuX3NvcnRD
b2x1bW5JZGVudGlmaWVyID0gbnVsbDsKLSAgICB0aGlzLl9zb3J0T3JkZXIgPSBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQuU29ydE9yZGVyLkluZGV0ZXJtaW5hdGU7Ci0KLSAgICB0aGlzLmNoaWxkcmVu
ID0gW107Ci0gICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBudWxsOwotICAgIHRoaXMuZXhwYW5kTm9k
ZXNXaGVuQXJyb3dpbmcgPSBmYWxzZTsKLSAgICB0aGlzLnJvb3QgPSB0cnVlOwotICAgIHRoaXMu
aGFzQ2hpbGRyZW4gPSBmYWxzZTsKLSAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTsKLSAgICB0aGlz
LnJldmVhbGVkID0gdHJ1ZTsKLSAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7Ci0gICAgdGhpcy5k
YXRhR3JpZCA9IHRoaXM7Ci0gICAgdGhpcy5pbmRlbnRXaWR0aCA9IDE1OwotICAgIHRoaXMucmVz
aXplcnMgPSBbXTsKLSAgICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwot
Ci0gICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
dGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhLWdyaWQiOwotICAgIHRoaXMuZWxlbWVudC50
YWJJbmRleCA9IDA7Ci0gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24i
LCB0aGlzLl9rZXlEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLmVsZW1lbnQuY29w
eUhhbmRsZXIgPSB0aGlzOwotCi0gICAgdGhpcy5faGVhZGVyVGFibGVFbGVtZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTsKLSAgICB0aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQu
Y2xhc3NOYW1lID0gImhlYWRlciI7Ci0gICAgdGhpcy5faGVhZGVyVGFibGVDb2x1bW5Hcm91cEVs
ZW1lbnQgPSB0aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQuY3JlYXRlQ2hpbGQoImNvbGdyb3VwIik7
Ci0gICAgdGhpcy5faGVhZGVyVGFibGVCb2R5RWxlbWVudCA9IHRoaXMuX2hlYWRlclRhYmxlRWxl
bWVudC5jcmVhdGVDaGlsZCgidGJvZHkiKTsKLSAgICB0aGlzLl9oZWFkZXJUYWJsZVJvd0VsZW1l
bnQgPSB0aGlzLl9oZWFkZXJUYWJsZUJvZHlFbGVtZW50LmNyZWF0ZUNoaWxkKCJ0ciIpOwotICAg
IHRoaXMuX2hlYWRlclRhYmxlQ2VsbEVsZW1lbnRzID0gbmV3IE1hcDsKLQotICAgIHRoaXMuX3Nj
cm9sbENvbnRhaW5lckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRhLWNvbnRhaW5l
ciI7Ci0KLSAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50ID0gdGhpcy5fc2Nyb2xsQ29udGFpbmVy
RWxlbWVudC5jcmVhdGVDaGlsZCgidGFibGUiKTsKLSAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50
LmNsYXNzTmFtZSA9ICJkYXRhIjsKLQotICAgIHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duSW5EYXRhVGFibGUuYmluZCh0
aGlzKSk7Ci0gICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX2NsaWNrSW5EYXRhVGFibGUuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5fZGF0YVRh
YmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRoaXMuX2NvbnRleHRN
ZW51SW5EYXRhVGFibGUuYmluZCh0aGlzKSwgdHJ1ZSk7Ci0KLSAgICAvLyBGSVhNRTogQWRkIGEg
Y3JlYXRlQ2FsbGJhY2sgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gZWRpdENhbGxiYWNrIGFuZCBo
YXMgZGlmZmVyZW50Ci0gICAgLy8gYmVoYXZpb3Igd2hlbiBjcmVhdGluZyBhIG5ldyBub2RlLgot
ICAgIGlmIChlZGl0Q2FsbGJhY2spIHsKLSAgICAgICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJkYmxjbGljayIsIHRoaXMuX29uZGJsY2xpY2suYmluZCh0aGlzKSwg
ZmFsc2UpOwotICAgICAgICB0aGlzLl9lZGl0Q2FsbGJhY2sgPSBlZGl0Q2FsbGJhY2s7Ci0gICAg
fQotICAgIGlmIChkZWxldGVDYWxsYmFjaykKLSAgICAgICAgdGhpcy5fZGVsZXRlQ2FsbGJhY2sg
PSBkZWxldGVDYWxsYmFjazsKLQotICAgIHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVu
dCA9IHRoaXMuX2hlYWRlclRhYmxlQ29sdW1uR3JvdXBFbGVtZW50LmNsb25lTm9kZSh0cnVlKTsK
LSAgICB0aGlzLl9kYXRhVGFibGVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFUYWJsZUNv
bHVtbkdyb3VwRWxlbWVudCk7Ci0KLSAgICAvLyBUaGlzIGVsZW1lbnQgaXMgdXNlZCBieSBEYXRh
R3JpZE5vZGVzIHRvIG1hbmlwdWxhdGUgdGFibGUgcm93cyBhbmQgY2VsbHMuCi0gICAgdGhpcy5k
YXRhVGFibGVCb2R5RWxlbWVudCA9IHRoaXMuX2RhdGFUYWJsZUVsZW1lbnQuY3JlYXRlQ2hpbGQo
InRib2R5Iik7Ci0gICAgdGhpcy5fZmlsbGVyUm93RWxlbWVudCA9IHRoaXMuZGF0YVRhYmxlQm9k
eUVsZW1lbnQuY3JlYXRlQ2hpbGQoInRyIik7Ci0gICAgdGhpcy5fZmlsbGVyUm93RWxlbWVudC5j
bGFzc05hbWUgPSAiZmlsbGVyIjsKLQotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9oZWFkZXJUYWJsZUVsZW1lbnQpOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlz
Ll9zY3JvbGxDb250YWluZXJFbGVtZW50KTsKLQotICAgIGlmIChwcmVmZXJyZWRDb2x1bW5PcmRl
cikgewotICAgICAgICBmb3IgKHZhciBjb2x1bW5JZGVudGlmaWVyIG9mIHByZWZlcnJlZENvbHVt
bk9yZGVyKQotICAgICAgICAgICAgdGhpcy5pbnNlcnRDb2x1bW4oY29sdW1uSWRlbnRpZmllciwg
Y29sdW1uc0RhdGFbY29sdW1uSWRlbnRpZmllcl0pOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZv
ciAodmFyIGNvbHVtbklkZW50aWZpZXIgaW4gY29sdW1uc0RhdGEpCi0gICAgICAgICAgICB0aGlz
Lmluc2VydENvbHVtbihjb2x1bW5JZGVudGlmaWVyLCBjb2x1bW5zRGF0YVtjb2x1bW5JZGVudGlm
aWVyXSk7Ci0gICAgfQotCi0gICAgdGhpcy5fZ2VuZXJhdGVTb3J0SW5kaWNhdG9ySW1hZ2VzSWZO
ZWVkZWQoKTsKLX0KKyAgICBjb25zdHJ1Y3Rvcihjb2x1bW5zRGF0YSwgZWRpdENhbGxiYWNrLCBk
ZWxldGVDYWxsYmFjaywgcHJlZmVycmVkQ29sdW1uT3JkZXIpCisgICAgeworICAgICAgICBzdXBl
cigpOwogCi1XZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQgPSB7Ci0gICAgRGlkTGF5b3V0OiAi
ZGF0YWdyaWQtZGlkLWxheW91dCIsCi0gICAgU29ydENoYW5nZWQ6ICJkYXRhZ3JpZC1zb3J0LWNo
YW5nZWQiLAotICAgIFNlbGVjdGVkTm9kZUNoYW5nZWQ6ICJkYXRhZ3JpZC1zZWxlY3RlZC1ub2Rl
LWNoYW5nZWQiLAotICAgIEV4cGFuZGVkTm9kZTogImRhdGFncmlkLWV4cGFuZGVkLW5vZGUiLAot
ICAgIENvbGxhcHNlZE5vZGU6ICJkYXRhZ3JpZC1jb2xsYXBzZWQtbm9kZSIKLX07CisgICAgICAg
IHRoaXMuY29sdW1ucyA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMub3JkZXJlZENvbHVtbnMgPSBb
XTsKIAotV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRlciA9IHsKLSAgICBJbmRldGVybWlu
YXRlOiAiZGF0YS1ncmlkLXNvcnQtb3JkZXItaW5kZXRlcm1pbmF0ZSIsCi0gICAgQXNjZW5kaW5n
OiAiZGF0YS1ncmlkLXNvcnQtb3JkZXItYXNjZW5kaW5nIiwKLSAgICBEZXNjZW5kaW5nOiAiZGF0
YS1ncmlkLXNvcnQtb3JkZXItZGVzY2VuZGluZyIKLX07CisgICAgICAgIHRoaXMuX3NvcnRDb2x1
bW5JZGVudGlmaWVyID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc29ydE9yZGVyID0gV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLlNvcnRPcmRlci5JbmRldGVybWluYXRlOwogCi1XZWJJbnNwZWN0b3IuRGF0
YUdyaWQuUHJldmlvdXNDb2x1bW5PcmRpbmFsU3ltYm9sID0gU3ltYm9sKCJwcmV2aW91cy1jb2x1
bW4tb3JkaW5hbCIpOwotV2ViSW5zcGVjdG9yLkRhdGFHcmlkLk5leHRDb2x1bW5PcmRpbmFsU3lt
Ym9sID0gU3ltYm9sKCJuZXh0LWNvbHVtbi1vcmRpbmFsIik7CisgICAgICAgIHRoaXMuY2hpbGRy
ZW4gPSBbXTsKKyAgICAgICAgdGhpcy5zZWxlY3RlZE5vZGUgPSBudWxsOworICAgICAgICB0aGlz
LmV4cGFuZE5vZGVzV2hlbkFycm93aW5nID0gZmFsc2U7CisgICAgICAgIHRoaXMucm9vdCA9IHRy
dWU7CisgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBmYWxzZTsKKyAgICAgICAgdGhpcy5leHBh
bmRlZCA9IHRydWU7CisgICAgICAgIHRoaXMucmV2ZWFsZWQgPSB0cnVlOworICAgICAgICB0aGlz
LnNlbGVjdGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuZGF0YUdyaWQgPSB0aGlzOworICAgICAg
ICB0aGlzLmluZGVudFdpZHRoID0gMTU7CisgICAgICAgIHRoaXMucmVzaXplcnMgPSBbXTsKKyAg
ICAgICAgdGhpcy5fY29sdW1uV2lkdGhzSW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAotV2ViSW5zcGVj
dG9yLkRhdGFHcmlkLlNvcnRDb2x1bW5Bc2NlbmRpbmdTdHlsZUNsYXNzTmFtZSA9ICJzb3J0LWFz
Y2VuZGluZyI7Ci1XZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydENvbHVtbkRlc2NlbmRpbmdTdHls
ZUNsYXNzTmFtZSA9ICJzb3J0LWRlc2NlbmRpbmciOwotV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNv
cnRhYmxlQ29sdW1uU3R5bGVDbGFzc05hbWUgPSAic29ydGFibGUiOworICAgICAgICB0aGlzLmVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5lbGVt
ZW50LmNsYXNzTmFtZSA9ICJkYXRhLWdyaWQiOworICAgICAgICB0aGlzLmVsZW1lbnQudGFiSW5k
ZXggPSAwOworICAgICAgICB0aGlzLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIs
IHRoaXMuX2tleURvd24uYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLmVsZW1lbnQu
Y29weUhhbmRsZXIgPSB0aGlzOworCisgICAgICAgIHRoaXMuX2hlYWRlclRhYmxlRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7CisgICAgICAgIHRoaXMuX2hlYWRlclRh
YmxlRWxlbWVudC5jbGFzc05hbWUgPSAiaGVhZGVyIjsKKyAgICAgICAgdGhpcy5faGVhZGVyVGFi
bGVDb2x1bW5Hcm91cEVsZW1lbnQgPSB0aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQuY3JlYXRlQ2hp
bGQoImNvbGdyb3VwIik7CisgICAgICAgIHRoaXMuX2hlYWRlclRhYmxlQm9keUVsZW1lbnQgPSB0
aGlzLl9oZWFkZXJUYWJsZUVsZW1lbnQuY3JlYXRlQ2hpbGQoInRib2R5Iik7CisgICAgICAgIHRo
aXMuX2hlYWRlclRhYmxlUm93RWxlbWVudCA9IHRoaXMuX2hlYWRlclRhYmxlQm9keUVsZW1lbnQu
Y3JlYXRlQ2hpbGQoInRyIik7CisgICAgICAgIHRoaXMuX2hlYWRlclRhYmxlQ2VsbEVsZW1lbnRz
ID0gbmV3IE1hcDsKKworICAgICAgICB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5l
ckVsZW1lbnQuY2xhc3NOYW1lID0gImRhdGEtY29udGFpbmVyIjsKKworICAgICAgICB0aGlzLl9k
YXRhVGFibGVFbGVtZW50ID0gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5jcmVhdGVDaGls
ZCgidGFibGUiKTsKKyAgICAgICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5jbGFzc05hbWUgPSAi
ZGF0YSI7CisKKyAgICAgICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd25JbkRhdGFUYWJsZS5iaW5kKHRoaXMpKTsKKyAg
ICAgICAgdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRo
aXMuX2NsaWNrSW5EYXRhVGFibGUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2RhdGFUYWJs
ZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlzLl9jb250ZXh0TWVu
dUluRGF0YVRhYmxlLmJpbmQodGhpcyksIHRydWUpOworCisgICAgICAgIC8vIEZJWE1FOiBBZGQg
YSBjcmVhdGVDYWxsYmFjayB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSBlZGl0Q2FsbGJhY2sgYW5k
IGhhcyBkaWZmZXJlbnQKKyAgICAgICAgLy8gYmVoYXZpb3Igd2hlbiBjcmVhdGluZyBhIG5ldyBu
b2RlLgorICAgICAgICBpZiAoZWRpdENhbGxiYWNrKSB7CisgICAgICAgICAgICB0aGlzLl9kYXRh
VGFibGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fb25kYmxjbGlj
ay5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgICAgICB0aGlzLl9lZGl0Q2FsbGJhY2sgPSBl
ZGl0Q2FsbGJhY2s7CisgICAgICAgIH0KIAotV2ViSW5zcGVjdG9yLkRhdGFHcmlkLmNyZWF0ZVNv
cnRhYmxlRGF0YUdyaWQgPSBmdW5jdGlvbihjb2x1bW5OYW1lcywgdmFsdWVzKQotewotICAgIHZh
ciBudW1Db2x1bW5zID0gY29sdW1uTmFtZXMubGVuZ3RoOwotICAgIGlmICghbnVtQ29sdW1ucykK
LSAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICB2YXIgY29sdW1uc0RhdGEgPSB7fTsKLSAgICBm
b3IgKHZhciBjb2x1bW5OYW1lIG9mIGNvbHVtbk5hbWVzKSB7Ci0gICAgICAgIGNvbHVtbnNEYXRh
W2NvbHVtbk5hbWVdID0gewotICAgICAgICAgICAgd2lkdGg6IGNvbHVtbk5hbWUubGVuZ3RoLAot
ICAgICAgICAgICAgdGl0bGU6IGNvbHVtbk5hbWUsCi0gICAgICAgICAgICBzb3J0YWJsZTogdHJ1
ZSwKLSAgICAgICAgfTsKLSAgICB9CisgICAgICAgIGlmIChkZWxldGVDYWxsYmFjaykKKyAgICAg
ICAgICAgIHRoaXMuX2RlbGV0ZUNhbGxiYWNrID0gZGVsZXRlQ2FsbGJhY2s7CisKKyAgICAgICAg
dGhpcy5fZGF0YVRhYmxlQ29sdW1uR3JvdXBFbGVtZW50ID0gdGhpcy5faGVhZGVyVGFibGVDb2x1
bW5Hcm91cEVsZW1lbnQuY2xvbmVOb2RlKHRydWUpOworICAgICAgICB0aGlzLl9kYXRhVGFibGVF
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2RhdGFUYWJsZUNvbHVtbkdyb3VwRWxlbWVudCk7CiAK
LSAgICB2YXIgZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkKGNvbHVtbnNEYXRh
LCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29sdW1uTmFtZXMpOwotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdmFsdWVzLmxlbmd0aCAvIG51bUNvbHVtbnM7ICsraSkgewotICAgICAgICB2YXIgZGF0
YSA9IHt9OwotICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNvbHVtbk5hbWVzLmxlbmd0aDsg
KytqKQotICAgICAgICAgICAgZGF0YVtjb2x1bW5OYW1lc1tqXV0gPSB2YWx1ZXNbbnVtQ29sdW1u
cyAqIGkgKyBqXTsKKyAgICAgICAgLy8gVGhpcyBlbGVtZW50IGlzIHVzZWQgYnkgRGF0YUdyaWRO
b2RlcyB0byBtYW5pcHVsYXRlIHRhYmxlIHJvd3MgYW5kIGNlbGxzLgorICAgICAgICB0aGlzLmRh
dGFUYWJsZUJvZHlFbGVtZW50ID0gdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5jcmVhdGVDaGlsZCgi
dGJvZHkiKTsKKyAgICAgICAgdGhpcy5fZmlsbGVyUm93RWxlbWVudCA9IHRoaXMuZGF0YVRhYmxl
Qm9keUVsZW1lbnQuY3JlYXRlQ2hpbGQoInRyIik7CisgICAgICAgIHRoaXMuX2ZpbGxlclJvd0Vs
ZW1lbnQuY2xhc3NOYW1lID0gImZpbGxlciI7CiAKLSAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZShkYXRhLCBmYWxzZSk7Ci0gICAgICAgIG5vZGUuc2VsZWN0
YWJsZSA9IGZhbHNlOwotICAgICAgICBkYXRhR3JpZC5hcHBlbmRDaGlsZChub2RlKTsKKyAgICAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2hlYWRlclRhYmxlRWxlbWVudCk7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zY3JvbGxDb250YWluZXJFbGVt
ZW50KTsKKworICAgICAgICBpZiAocHJlZmVycmVkQ29sdW1uT3JkZXIpIHsKKyAgICAgICAgICAg
IGZvciAodmFyIGNvbHVtbklkZW50aWZpZXIgb2YgcHJlZmVycmVkQ29sdW1uT3JkZXIpCisgICAg
ICAgICAgICAgICAgdGhpcy5pbnNlcnRDb2x1bW4oY29sdW1uSWRlbnRpZmllciwgY29sdW1uc0Rh
dGFbY29sdW1uSWRlbnRpZmllcl0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9y
ICh2YXIgY29sdW1uSWRlbnRpZmllciBpbiBjb2x1bW5zRGF0YSkKKyAgICAgICAgICAgICAgICB0
aGlzLmluc2VydENvbHVtbihjb2x1bW5JZGVudGlmaWVyLCBjb2x1bW5zRGF0YVtjb2x1bW5JZGVu
dGlmaWVyXSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9nZW5lcmF0ZVNvcnRJbmRpY2F0
b3JJbWFnZXNJZk5lZWRlZCgpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHNvcnREYXRhR3JpZCgp
CisgICAgLy8gU3RhdGljCisKKyAgICBzdGF0aWMgY3JlYXRlU29ydGFibGVEYXRhR3JpZChjb2x1
bW5OYW1lcywgdmFsdWVzKQogICAgIHsKLSAgICAgICAgdmFyIHNvcnRDb2x1bW5JZGVudGlmaWVy
ID0gZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXI7CisgICAgICAgIHZhciBudW1Db2x1bW5z
ID0gY29sdW1uTmFtZXMubGVuZ3RoOworICAgICAgICBpZiAoIW51bUNvbHVtbnMpCisgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKworICAgICAgICB2YXIgY29sdW1uc0RhdGEgPSB7fTsKKyAgICAg
ICAgZm9yICh2YXIgY29sdW1uTmFtZSBvZiBjb2x1bW5OYW1lcykgeworICAgICAgICAgICAgY29s
dW1uc0RhdGFbY29sdW1uTmFtZV0gPSB7CisgICAgICAgICAgICAgICAgd2lkdGg6IGNvbHVtbk5h
bWUubGVuZ3RoLAorICAgICAgICAgICAgICAgIHRpdGxlOiBjb2x1bW5OYW1lLAorICAgICAgICAg
ICAgICAgIHNvcnRhYmxlOiB0cnVlLAorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1uc0RhdGEs
IHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb2x1bW5OYW1lcyk7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdmFsdWVzLmxlbmd0aCAvIG51bUNvbHVtbnM7ICsraSkgeworICAgICAgICAgICAg
dmFyIGRhdGEgPSB7fTsKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY29sdW1uTmFt
ZXMubGVuZ3RoOyArK2opCisgICAgICAgICAgICAgICAgZGF0YVtjb2x1bW5OYW1lc1tqXV0gPSB2
YWx1ZXNbbnVtQ29sdW1ucyAqIGkgKyBqXTsKIAotICAgICAgICB2YXIgY29sdW1uSXNOdW1lcmlj
ID0gdHJ1ZTsKLSAgICAgICAgZm9yICh2YXIgbm9kZSBvZiBkYXRhR3JpZC5jaGlsZHJlbikgewot
ICAgICAgICAgICAgdmFyIHZhbHVlID0gZGF0YUdyaWQudGV4dEZvckRhdGFHcmlkTm9kZUNvbHVt
bihub2RlLCBzb3J0Q29sdW1uSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBpZiAoaXNOYU4oTnVt
YmVyKHZhbHVlKSkpCi0gICAgICAgICAgICAgICAgY29sdW1uSXNOdW1lcmljID0gZmFsc2U7Cisg
ICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKGRhdGEs
IGZhbHNlKTsKKyAgICAgICAgICAgIG5vZGUuc2VsZWN0YWJsZSA9IGZhbHNlOworICAgICAgICAg
ICAgZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBmdW5j
dGlvbiBjb21wYXJhdG9yKGRhdGFHcmlkTm9kZTEsIGRhdGFHcmlkTm9kZTIpCisgICAgICAgIGZ1
bmN0aW9uIHNvcnREYXRhR3JpZCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHZhciBpdGVtMSA9
IGRhdGFHcmlkLnRleHRGb3JEYXRhR3JpZE5vZGVDb2x1bW4oZGF0YUdyaWROb2RlMSwgc29ydENv
bHVtbklkZW50aWZpZXIpOwotICAgICAgICAgICAgdmFyIGl0ZW0yID0gZGF0YUdyaWQudGV4dEZv
ckRhdGFHcmlkTm9kZUNvbHVtbihkYXRhR3JpZE5vZGUyLCBzb3J0Q29sdW1uSWRlbnRpZmllcik7
Ci0KLSAgICAgICAgICAgIHZhciBjb21wYXJpc29uOwotICAgICAgICAgICAgaWYgKGNvbHVtbklz
TnVtZXJpYykgewotICAgICAgICAgICAgICAgIHZhciBudW1iZXIxID0gcGFyc2VGbG9hdChpdGVt
MSk7Ci0gICAgICAgICAgICAgICAgdmFyIG51bWJlcjIgPSBwYXJzZUZsb2F0KGl0ZW0yKTsKLSAg
ICAgICAgICAgICAgICBjb21wYXJpc29uID0gbnVtYmVyMSA8IG51bWJlcjIgPyAtMSA6IChudW1i
ZXIxID4gbnVtYmVyMiA/IDEgOiAwKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIGNvbXBhcmlzb24gPSBpdGVtMSA8IGl0ZW0yID8gLTEgOiAoaXRlbTEgPiBpdGVtMiA/IDEg
OiAwKTsKLQotICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmlzb247CisgICAgICAgICAgICB2YXIg
c29ydENvbHVtbklkZW50aWZpZXIgPSBkYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllcjsKKwor
ICAgICAgICAgICAgdmFyIGNvbHVtbklzTnVtZXJpYyA9IHRydWU7CisgICAgICAgICAgICBmb3Ig
KHZhciBub2RlIG9mIGRhdGFHcmlkLmNoaWxkcmVuKSB7CisgICAgICAgICAgICAgICAgdmFyIHZh
bHVlID0gZGF0YUdyaWQudGV4dEZvckRhdGFHcmlkTm9kZUNvbHVtbihub2RlLCBzb3J0Q29sdW1u
SWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgaWYgKGlzTmFOKE51bWJlcih2YWx1ZSkpKQor
ICAgICAgICAgICAgICAgICAgICBjb2x1bW5Jc051bWVyaWMgPSBmYWxzZTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gY29tcGFyYXRvcihkYXRhR3JpZE5vZGUxLCBkYXRh
R3JpZE5vZGUyKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBpdGVtMSA9IGRh
dGFHcmlkLnRleHRGb3JEYXRhR3JpZE5vZGVDb2x1bW4oZGF0YUdyaWROb2RlMSwgc29ydENvbHVt
bklkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIHZhciBpdGVtMiA9IGRhdGFHcmlkLnRleHRG
b3JEYXRhR3JpZE5vZGVDb2x1bW4oZGF0YUdyaWROb2RlMiwgc29ydENvbHVtbklkZW50aWZpZXIp
OworCisgICAgICAgICAgICAgICAgdmFyIGNvbXBhcmlzb247CisgICAgICAgICAgICAgICAgaWYg
KGNvbHVtbklzTnVtZXJpYykgeworICAgICAgICAgICAgICAgICAgICB2YXIgbnVtYmVyMSA9IHBh
cnNlRmxvYXQoaXRlbTEpOworICAgICAgICAgICAgICAgICAgICB2YXIgbnVtYmVyMiA9IHBhcnNl
RmxvYXQoaXRlbTIpOworICAgICAgICAgICAgICAgICAgICBjb21wYXJpc29uID0gbnVtYmVyMSA8
IG51bWJlcjIgPyAtMSA6IChudW1iZXIxID4gbnVtYmVyMiA/IDEgOiAwKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgY29tcGFyaXNvbiA9IGl0ZW0xIDwgaXRl
bTIgPyAtMSA6IChpdGVtMSA+IGl0ZW0yID8gMSA6IDApOworCisgICAgICAgICAgICAgICAgcmV0
dXJuIGNvbXBhcmlzb247CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRhdGFHcmlkLnNv
cnROb2Rlcyhjb21wYXJhdG9yKTsKICAgICAgICAgfQogCi0gICAgICAgIGRhdGFHcmlkLnNvcnRO
b2Rlcyhjb21wYXJhdG9yKTsKLSAgICB9CisgICAgICAgIGRhdGFHcmlkLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNvcnRDaGFuZ2VkLCBzb3J0RGF0YUdyaWQs
IHRoaXMpOwogCi0gICAgZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0
YUdyaWQuRXZlbnQuU29ydENoYW5nZWQsIHNvcnREYXRhR3JpZCwgdGhpcyk7CisgICAgICAgIGRh
dGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5k
aW5nOworICAgICAgICBkYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9IGNvbHVtbk5hbWVz
WzBdOwogCi0gICAgZGF0YUdyaWQuc29ydE9yZGVyID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNv
cnRPcmRlci5Bc2NlbmRpbmc7Ci0gICAgZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgPSBj
b2x1bW5OYW1lc1swXTsKKyAgICAgICAgcmV0dXJuIGRhdGFHcmlkOworICAgIH0KIAotICAgIHJl
dHVybiBkYXRhR3JpZDsKLX0KKyAgICAvLyBQdWJsaWMKIAotV2ViSW5zcGVjdG9yLkRhdGFHcmlk
LnByb3RvdHlwZSA9IHsKICAgICBnZXQgcmVmcmVzaENhbGxiYWNrKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9yZWZyZXNoQ2FsbGJhY2s7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQg
cmVmcmVzaENhbGxiYWNrKHJlZnJlc2hDYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX3Jl
ZnJlc2hDYWxsYmFjayA9IHJlZnJlc2hDYWxsYmFjazsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzb3J0T3JkZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRPcmRlcjsKLSAg
ICB9LAorICAgIH0KIAogICAgIHNldCBzb3J0T3JkZXIob3JkZXIpCiAgICAgewpAQCAtMjE1LDEy
ICsyMDIsMTIgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAg
c29ydEhlYWRlckNlbGxFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLlNvcnRDb2x1bW5EZXNjZW5kaW5nU3R5bGVDbGFzc05hbWUsIHRoaXMuX3NvcnRPcmRlciA9
PT0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRlci5EZXNjZW5kaW5nKTsKIAogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZl
bnQuU29ydENoYW5nZWQpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNvcnRDb2x1bW5JZGVu
dGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3J0Q29sdW1uSWRlbnRpZmll
cjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzb3J0Q29sdW1uSWRlbnRpZmllcihjb2x1bW5J
ZGVudGlmaWVyKQogICAgIHsKQEAgLTI0NiwxNyArMjMzLDE3IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX29uZGJsY2xpY2s6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9v
bmRibGNsaWNrKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmcgfHwgdGhp
cy5fZWRpdGluZ05vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc3Rh
cnRFZGl0aW5nKGV2ZW50LnRhcmdldCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc3RhcnRFZGl0
aW5nTm9kZUF0Q29sdW1uSW5kZXg6IGZ1bmN0aW9uKG5vZGUsIGNvbHVtbkluZGV4KQorICAgIF9z
dGFydEVkaXRpbmdOb2RlQXRDb2x1bW5JbmRleChub2RlLCBjb2x1bW5JbmRleCkKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGUsICJJbnZhbGlkIGFyZ3VtZW50OiBtdXN0IHByb3Zp
ZGUgRGF0YUdyaWROb2RlIHRvIGVkaXQuIik7CiAKQEAgLTI2Nyw5ICsyNTQsOSBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMu
X2VkaXRpbmdOb2RlLl9lbGVtZW50LmNoaWxkcmVuW2NvbHVtbkluZGV4XTsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnN0YXJ0RWRpdGluZyhlbGVtZW50LCB0aGlzLl9zdGFydEVkaXRpbmdDb25maWco
ZWxlbWVudCkpOwogICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVu
dChlbGVtZW50LCAwLCBlbGVtZW50LCAxKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdGFydEVk
aXRpbmc6IGZ1bmN0aW9uKHRhcmdldCkKKyAgICBfc3RhcnRFZGl0aW5nKHRhcmdldCkKICAgICB7
CiAgICAgICAgIHZhciBlbGVtZW50ID0gdGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9k
ZU5hbWUoInRkIik7CiAgICAgICAgIGlmICghZWxlbWVudCkKQEAgLTI5MCwxNCArMjc3LDE0IEBA
IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5zdGFydEVkaXRpbmcoZWxlbWVudCwgdGhpcy5fc3RhcnRFZGl0aW5nQ29uZmlnKGVsZW1lbnQp
KTsKIAogICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChlbGVt
ZW50LCAwLCBlbGVtZW50LCAxKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zdGFydEVkaXRpbmdD
b25maWc6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgX3N0YXJ0RWRpdGluZ0NvbmZpZyhlbGVtZW50
KQogICAgIHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZyh0
aGlzLl9lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksIHRoaXMuX2VkaXRpbmdDYW5jZWxsZWQu
YmluZCh0aGlzKSwgZWxlbWVudC50ZXh0Q29udGVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
ZWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgbmV3VGV4dCwgb2xkVGV4dCwgY29u
dGV4dCwgbW92ZURpcmVjdGlvbikKKyAgICBfZWRpdGluZ0NvbW1pdHRlZChlbGVtZW50LCBuZXdU
ZXh0LCBvbGRUZXh0LCBjb250ZXh0LCBtb3ZlRGlyZWN0aW9uKQogICAgIHsKICAgICAgICAgdmFy
IGNvbHVtbklkZW50aWZpZXIgPSBlbGVtZW50Ll9fY29sdW1uSWRlbnRpZmllcjsKICAgICAgICAg
dmFyIGNvbHVtbkluZGV4ID0gdGhpcy5vcmRlcmVkQ29sdW1ucy5pbmRleE9mKGNvbHVtbklkZW50
aWZpZXIpOwpAQCAtMzQ4LDE2ICszMzUsMTYgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICB2YXIgdGV4dERpZENoYW5nZSA9IHRleHRCZWZvcmVFZGl0aW5n
LnRyaW0oKSAhPT0gbmV3VGV4dC50cmltKCk7CiAgICAgICAgIG1vdmVUb05leHRDZWxsLmNhbGwo
dGhpcywgdGV4dERpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZWRpdGluZ0NhbmNl
bGxlZDogZnVuY3Rpb24oZWxlbWVudCkKKyAgICBfZWRpdGluZ0NhbmNlbGxlZChlbGVtZW50KQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZWRpdGluZ05vZGUuZWxlbWVudCA9
PT0gZWxlbWVudC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0ciIpKTsKICAgICAg
ICAgZGVsZXRlIHRoaXMuX2VkaXRpbmc7CiAgICAgICAgIHRoaXMuX2VkaXRpbmdOb2RlID0gbnVs
bDsKLSAgICB9LAorICAgIH0KIAotICAgIGF1dG9TaXplQ29sdW1uczogZnVuY3Rpb24obWluUGVy
Y2VudCwgbWF4UGVyY2VudCwgbWF4RGVzY2VudExldmVsKQorICAgIGF1dG9TaXplQ29sdW1ucyht
aW5QZXJjZW50LCBtYXhQZXJjZW50LCBtYXhEZXNjZW50TGV2ZWwpCiAgICAgewogICAgICAgICBp
ZiAobWluUGVyY2VudCkKICAgICAgICAgICAgIG1pblBlcmNlbnQgPSBNYXRoLm1pbihtaW5QZXJj
ZW50LCBNYXRoLmZsb29yKDEwMCAvIHRoaXMub3JkZXJlZENvbHVtbnMubGVuZ3RoKSk7CkBAIC00
MjIsOSArNDA5LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGNvbHVtblsiZWxlbWVudCJdLnN0eWxlLndpZHRoID0gd2lkdGhzW2lkZW50aWZpZXJd
ICsgIiUiOwogICAgICAgICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwog
ICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgaW5zZXJ0
Q29sdW1uOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyLCBjb2x1bW5EYXRhLCBpbnNlcnRpb25J
bmRleCkKKyAgICBpbnNlcnRDb2x1bW4oY29sdW1uSWRlbnRpZmllciwgY29sdW1uRGF0YSwgaW5z
ZXJ0aW9uSW5kZXgpCiAgICAgewogICAgICAgICBpZiAoaW5zZXJ0aW9uSW5kZXggPT09IHVuZGVm
aW5lZCkKICAgICAgICAgICAgIGluc2VydGlvbkluZGV4ID0gdGhpcy5vcmRlcmVkQ29sdW1ucy5s
ZW5ndGg7CkBAIC01MTYsOSArNTAzLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBpZiAoY29sdW1uWyJoaWRkZW4iXSkKICAgICAgICAgICAgIHRoaXMu
X2hpZGVDb2x1bW4oY29sdW1uSWRlbnRpZmllcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1v
dmVDb2x1bW46IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCisgICAgcmVtb3ZlQ29sdW1uKGNv
bHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmNvbHVt
bnMuaGFzKGNvbHVtbklkZW50aWZpZXIpKTsKICAgICAgICAgdmFyIHJlbW92ZWRDb2x1bW4gPSB0
aGlzLmNvbHVtbnMuZ2V0KGNvbHVtbklkZW50aWZpZXIpOwpAQCAtNTUwLDkgKzUzNyw5IEBAIFdl
Ykluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIgY2hp
bGQgb2YgdGhpcy5jaGlsZHJlbikKICAgICAgICAgICAgIGNoaWxkLnJlZnJlc2goKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9lbnVtZXJhdGVDaGlsZHJlbjogZnVuY3Rpb24ocm9vdE5vZGUsIHJl
c3VsdCwgbWF4TGV2ZWwpCisgICAgX2VudW1lcmF0ZUNoaWxkcmVuKHJvb3ROb2RlLCByZXN1bHQs
IG1heExldmVsKQogICAgIHsKICAgICAgICAgaWYgKCFyb290Tm9kZS5yb290KQogICAgICAgICAg
ICAgcmVzdWx0LnB1c2gocm9vdE5vZGUpOwpAQCAtNTYxLDcgKzU0OCw3IEBAIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcm9v
dE5vZGUuY2hpbGRyZW4ubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9lbnVtZXJhdGVD
aGlsZHJlbihyb290Tm9kZS5jaGlsZHJlbltpXSwgcmVzdWx0LCBtYXhMZXZlbCAtIDEpOwogICAg
ICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gVXBkYXRlcyB0aGUg
d2lkdGhzIG9mIHRoZSB0YWJsZSwgaW5jbHVkaW5nIHRoZSBwb3NpdGlvbnMgb2YgdGhlIGNvbHVt
bgogICAgIC8vIHJlc2l6ZXJzLgpAQCAtNTczLDcgKzU2MCw3IEBAIFdlYkluc3BlY3Rvci5EYXRh
R3JpZC5wcm90b3R5cGUgPSB7CiAgICAgLy8KICAgICAvLyBJZiB0aGlzIGZ1bmN0aW9uIGlzIG5v
dCBjYWxsZWQgYWZ0ZXIgdGhlIERhdGFHcmlkIGlzIGF0dGFjaGVkIHRvIGl0cwogICAgIC8vIHBh
cmVudCBlbGVtZW50LCB0aGVuIHRoZSBEYXRhR3JpZCdzIGNvbHVtbnMgd2lsbCBub3QgYmUgcmVz
aXphYmxlLgotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgp
CiAgICAgewogICAgICAgICAvLyBEbyBub3QgYXR0ZW1wdCB0byB1c2Ugb2Zmc2V0ZXMgaWYgd2Un
cmUgbm90IGF0dGFjaGVkIHRvIHRoZSBkb2N1bWVudCB0cmVlIHlldC4KICAgICAgICAgaWYgKCF0
aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCAmJiB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGgp
IHsKQEAgLTYwMiw5ICs1ODksOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHRoaXMuX3Bvc2l0aW9uUmVzaXplckVsZW1lbnRzKCk7CiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5E
aWRMYXlvdXQpOwotICAgIH0sCisgICAgfQogCi0gICAgY29sdW1uV2lkdGhzTWFwOiBmdW5jdGlv
bigpCisgICAgY29sdW1uV2lkdGhzTWFwKCkKICAgICB7CiAgICAgICAgIHZhciByZXN1bHQgPSB7
fTsKICAgICAgICAgZm9yICh2YXIgW2lkZW50aWZpZXIsIGNvbHVtbl0gb2YgdGhpcy5jb2x1bW5z
KSB7CkBAIC02MTIsOSArNTk5LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJlc3VsdFtjb2x1bW5JZGVudGlmaWVyXSA9IHBhcnNlRmxvYXQod2lk
dGgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBhcHBseUNvbHVtbldpZHRoc01hcDogZnVuY3Rpb24oY29sdW1uV2lkdGhzTWFwKQorICAg
IGFwcGx5Q29sdW1uV2lkdGhzTWFwKGNvbHVtbldpZHRoc01hcCkKICAgICB7CiAgICAgICAgIGZv
ciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1ucykgewogICAgICAgICAg
ICAgdmFyIHdpZHRoID0gKGNvbHVtbldpZHRoc01hcFtpZGVudGlmaWVyXSB8fCAwKSArICIlIjsK
QEAgLTYyNCwxOSArNjExLDE5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAg
fQogCi0gICAgX2lzQ29sdW1uVmlzaWJsZTogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAg
ICBfaXNDb2x1bW5WaXNpYmxlKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1
cm4gIXRoaXMuY29sdW1ucy5nZXQoY29sdW1uSWRlbnRpZmllcilbImhpZGRlbiJdOwotICAgIH0s
CisgICAgfQogCi0gICAgX3Nob3dDb2x1bW46IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIpCisg
ICAgX3Nob3dDb2x1bW4oY29sdW1uSWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGRlbGV0ZSB0
aGlzLmNvbHVtbnMuZ2V0KGNvbHVtbklkZW50aWZpZXIpWyJoaWRkZW4iXTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9oaWRlQ29sdW1uOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIF9o
aWRlQ29sdW1uKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICB2YXIgY29sdW1uID0g
dGhpcy5jb2x1bW5zLmdldChjb2x1bW5JZGVudGlmaWVyKTsKICAgICAgICAgY29sdW1uWyJoaWRk
ZW4iXSA9IHRydWU7CkBAIC02NDUsMjQgKzYzMiwyNCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQu
cHJvdG90eXBlID0gewogICAgICAgICBjb2x1bW5FbGVtZW50LnN0eWxlLndpZHRoID0gMDsKIAog
ICAgICAgICB0aGlzLl9jb2x1bW5XaWR0aHNJbml0aWFsaXplZCA9IGZhbHNlOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHNjcm9sbENvbnRhaW5lcigpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIGlzU2Ny
b2xsZWRUb0xhc3RSb3c6IGZ1bmN0aW9uKCkKKyAgICBpc1Njcm9sbGVkVG9MYXN0Um93KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50LmlzU2Nyb2xs
ZWRUb0JvdHRvbSgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2Nyb2xsVG9MYXN0Um93OiBmdW5j
dGlvbigpCisgICAgc2Nyb2xsVG9MYXN0Um93KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Njcm9s
bENvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVu
dC5zY3JvbGxIZWlnaHQgLSB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50Lm9mZnNldEhlaWdo
dDsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3NpdGlvblJlc2l6ZXJFbGVtZW50czogZnVuY3Rp
b24oKQorICAgIF9wb3NpdGlvblJlc2l6ZXJFbGVtZW50cygpCiAgICAgewogICAgICAgICB2YXIg
bGVmdCA9IDA7CiAgICAgICAgIHZhciBwcmV2aW91c1Jlc2l6ZXIgPSBudWxsOwpAQCAtNjk5LDkg
KzY4Niw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKHByZXZpb3VzUmVzaXplcikKICAgICAgICAgICAgIHByZXZpb3VzUmVzaXpl
cltXZWJJbnNwZWN0b3IuRGF0YUdyaWQuTmV4dENvbHVtbk9yZGluYWxTeW1ib2xdID0gdGhpcy5v
cmRlcmVkQ29sdW1ucy5sZW5ndGggLSAxOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkUGxhY2Vo
b2xkZXJOb2RlOiBmdW5jdGlvbigpCisgICAgYWRkUGxhY2Vob2xkZXJOb2RlKCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyTm9kZSkKICAgICAgICAgICAgIHRoaXMucGxhY2Vo
b2xkZXJOb2RlLm1ha2VOb3JtYWwoKTsKQEAgLTcxMSwxNCArNjk4LDE0IEBAIFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbXB0eURhdGFbaWRlbnRpZmll
cl0gPSAiIjsKICAgICAgICAgdGhpcy5wbGFjZWhvbGRlck5vZGUgPSBuZXcgV2ViSW5zcGVjdG9y
LlBsYWNlaG9sZGVyRGF0YUdyaWROb2RlKGVtcHR5RGF0YSk7CiAgICAgICAgIHRoaXMuYXBwZW5k
Q2hpbGQodGhpcy5wbGFjZWhvbGRlck5vZGUpOwotICAgIH0sCisgICAgfQogCi0gICAgYXBwZW5k
Q2hpbGQ6IGZ1bmN0aW9uKGNoaWxkKQorICAgIGFwcGVuZENoaWxkKGNoaWxkKQogICAgIHsKICAg
ICAgICAgdGhpcy5pbnNlcnRDaGlsZChjaGlsZCwgdGhpcy5jaGlsZHJlbi5sZW5ndGgpOwotICAg
IH0sCisgICAgfQogCi0gICAgaW5zZXJ0Q2hpbGQ6IGZ1bmN0aW9uKGNoaWxkLCBpbmRleCkKKyAg
ICBpbnNlcnRDaGlsZChjaGlsZCwgaW5kZXgpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxkKQog
ICAgICAgICAgICAgdGhyb3coImluc2VydENoaWxkOiBOb2RlIGNhbid0IGJlIHVuZGVmaW5lZCBv
ciBudWxsLiIpOwpAQCAtNzUyLDkgKzczOSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICBjaGls
ZC5fYXR0YWNoKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVDaGlsZDogZnVuY3Rpb24o
Y2hpbGQpCisgICAgcmVtb3ZlQ2hpbGQoY2hpbGQpCiAgICAgewogICAgICAgICBpZiAoIWNoaWxk
KQogICAgICAgICAgICAgdGhyb3coInJlbW92ZUNoaWxkOiBOb2RlIGNhbid0IGJlIHVuZGVmaW5l
ZCBvciBudWxsLiIpOwpAQCAtNzgwLDkgKzc2Nyw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7CiAKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoIWNoaWxkLmlzUGxhY2Vob2xkZXJOb2RlLCAiU2hvdWxkbid0
IGRlbGV0ZSB0aGUgcGxhY2Vob2xkZXIgbm9kZS4iKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJl
bW92ZUNoaWxkcmVuOiBmdW5jdGlvbigpCisgICAgcmVtb3ZlQ2hpbGRyZW4oKQogICAgIHsKICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNoaWxkcmVuLmxlbmd0aDsgKytpKSB7CiAg
ICAgICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLmNoaWxkcmVuW2ldOwpAQCAtNzk3LDkgKzc4NCw5
IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5j
aGlsZHJlbiA9IFtdOwogICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gZmFsc2U7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICByZW1vdmVDaGlsZHJlblJlY3Vyc2l2ZTogZnVuY3Rpb24oKQorICAgIHJl
bW92ZUNoaWxkcmVuUmVjdXJzaXZlKCkKICAgICB7CiAgICAgICAgIHZhciBjaGlsZHJlblRvUmVt
b3ZlID0gdGhpcy5jaGlsZHJlbjsKIApAQCAtODIzLDE3ICs4MTAsMTcgQEAgV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuY2hpbGRy
ZW4gPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIHNvcnROb2RlczogZnVuY3Rpb24oY29tcGFy
YXRvcikKKyAgICBzb3J0Tm9kZXMoY29tcGFyYXRvcikKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9zb3J0Tm9kZXNSZXF1ZXN0SWQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhp
cy5fc29ydE5vZGVzUmVxdWVzdElkID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlz
Ll9zb3J0Tm9kZXNDYWxsYmFjay5iaW5kKHRoaXMsIGNvbXBhcmF0b3IpKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9zb3J0Tm9kZXNDYWxsYmFjazogZnVuY3Rpb24oY29tcGFyYXRvcikKKyAgICBf
c29ydE5vZGVzQ2FsbGJhY2soY29tcGFyYXRvcikKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIGNv
bXBhcmF0b3JXcmFwcGVyKGFSb3csIGJSb3cpCiAgICAgICAgIHsKQEAgLTg3OCw5ICs4NjUsOSBA
QCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcHJldmlv
dXNTaWJsaW5nTm9kZS5uZXh0U2libGluZyA9IG51bGw7CiAKICAgICAgICAgdGJvZHkuYXBwZW5k
Q2hpbGQoZmlsbGVyUm93RWxlbWVudCk7IC8vIFdlIGV4cGVjdCB0byBmaW5kIGEgZmlsbGVyIHJv
dyB3aGVuIGF0dGFjaGluZyBub2Rlcy4KLSAgICB9LAorICAgIH0KIAotICAgIF9rZXlEb3duOiBm
dW5jdGlvbihldmVudCkKKyAgICBfa2V5RG93bihldmVudCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5zZWxlY3RlZE5vZGUgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSB8fCBl
dmVudC5jdHJsS2V5IHx8IHRoaXMuX2VkaXRpbmcpCiAgICAgICAgICAgICByZXR1cm47CkBAIC05
NDksNDIgKzkzNiw0MiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgIGV2ZW50LnN0b3BQ
cm9wYWdhdGlvbigpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBleHBhbmQ6IGZ1
bmN0aW9uKCkKKyAgICBleHBhbmQoKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcm9v
dCwgZG8gbm90aGluZy4KLSAgICB9LAorICAgIH0KIAotICAgIGNvbGxhcHNlOiBmdW5jdGlvbigp
CisgICAgY29sbGFwc2UoKQogICAgIHsKICAgICAgICAgLy8gVGhpcyBpcyB0aGUgcm9vdCwgZG8g
bm90aGluZy4KLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbDogZnVuY3Rpb24oKQorICAgIHJl
dmVhbCgpCiAgICAgewogICAgICAgICAvLyBUaGlzIGlzIHRoZSByb290LCBkbyBub3RoaW5nLgot
ICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsQW5kU2VsZWN0OiBmdW5jdGlvbigpCisgICAgcmV2
ZWFsQW5kU2VsZWN0KCkKICAgICB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHJvb3QsIGRvIG5v
dGhpbmcuCi0gICAgfSwKKyAgICB9CiAKLSAgICBkYXRhR3JpZE5vZGVGcm9tTm9kZTogZnVuY3Rp
b24odGFyZ2V0KQorICAgIGRhdGFHcmlkTm9kZUZyb21Ob2RlKHRhcmdldCkKICAgICB7CiAgICAg
ICAgIHZhciByb3dFbGVtZW50ID0gdGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5h
bWUoInRyIik7CiAgICAgICAgIHJldHVybiByb3dFbGVtZW50ICYmIHJvd0VsZW1lbnQuX2RhdGFH
cmlkTm9kZTsKLSAgICB9LAorICAgIH0KIAotICAgIGRhdGFHcmlkTm9kZUZyb21Qb2ludDogZnVu
Y3Rpb24oeCwgeSkKKyAgICBkYXRhR3JpZE5vZGVGcm9tUG9pbnQoeCwgeSkKICAgICB7CiAgICAg
ICAgIHZhciBub2RlID0gdGhpcy5fZGF0YVRhYmxlRWxlbWVudC5vd25lckRvY3VtZW50LmVsZW1l
bnRGcm9tUG9pbnQoeCwgeSk7CiAgICAgICAgIHZhciByb3dFbGVtZW50ID0gbm9kZS5lbmNsb3Np
bmdOb2RlT3JTZWxmV2l0aE5vZGVOYW1lKCJ0ciIpOwogICAgICAgICByZXR1cm4gcm93RWxlbWVu
dCAmJiByb3dFbGVtZW50Ll9kYXRhR3JpZE5vZGU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGVh
ZGVyQ2VsbENsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oZWFkZXJDZWxsQ2xpY2tlZChl
dmVudCkKICAgICB7CiAgICAgICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05v
ZGVPclNlbGZXaXRoTm9kZU5hbWUoInRoIik7CiAgICAgICAgIGlmICghY2VsbCB8fCAhY2VsbC5j
b2x1bW5JZGVudGlmaWVyIHx8ICFjZWxsLmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQuU29ydGFibGVDb2x1bW5TdHlsZUNsYXNzTmFtZSkpCkBAIC05OTgsMjcgKzk4NSwy
NyBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAg
IHRoaXMuc29ydE9yZGVyID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRlci5Bc2NlbmRp
bmc7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdGhpcy5zb3J0Q29sdW1uSWRlbnRpZmll
ciA9IGNsaWNrZWRDb2x1bW5JZGVudGlmaWVyOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNl
b3ZlckNvbHVtbkNvbGxhcHNlcjogZnVuY3Rpb24oZXZlbnQpCisgICAgX21vdXNlb3ZlckNvbHVt
bkNvbGxhcHNlcihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjZWxsID0gZXZlbnQudGFyZ2V0
LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoInRoIik7CiAgICAgICAgIGlmICghY2Vs
bCB8fCAhY2VsbC5jb2xsYXBzZXNHcm91cCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAg
ICBjZWxsLmNsYXNzTGlzdC5hZGQoIm1vdXNlLW92ZXItY29sbGFwc2VyIik7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfbW91c2VvdXRDb2x1bW5Db2xsYXBzZXI6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9tb3VzZW91dENvbHVtbkNvbGxhcHNlcihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBjZWxs
ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoTm9kZU5hbWUoInRoIik7CiAg
ICAgICAgIGlmICghY2VsbCB8fCAhY2VsbC5jb2xsYXBzZXNHcm91cCkKICAgICAgICAgICAgIHJl
dHVybjsKIAogICAgICAgICBjZWxsLmNsYXNzTGlzdC5yZW1vdmUoIm1vdXNlLW92ZXItY29sbGFw
c2VyIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xpY2tJbkNvbHVtbkNvbGxhcHNlcjogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX2NsaWNrSW5Db2x1bW5Db2xsYXBzZXIoZXZlbnQpCiAgICAgewog
ICAgICAgICB2YXIgY2VsbCA9IGV2ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aE5v
ZGVOYW1lKCJ0aCIpOwogICAgICAgICBpZiAoIWNlbGwgfHwgIWNlbGwuY29sbGFwc2VzR3JvdXAp
CkBAIC0xMDI4LDkgKzEwMTUsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0g
ewogCiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgY29sbGFwc2VDb2x1bW5Hcm91cDog
ZnVuY3Rpb24oY29sdW1uR3JvdXApCisgICAgY29sbGFwc2VDb2x1bW5Hcm91cChjb2x1bW5Hcm91
cCkKICAgICB7CiAgICAgICAgIHZhciBjb2xsYXBzZXJDb2x1bW5JZGVudGlmaWVyID0gbnVsbDsK
ICAgICAgICAgZm9yICh2YXIgW2lkZW50aWZpZXIsIGNvbHVtbl0gb2YgdGhpcy5jb2x1bW5zKSB7
CkBAIC0xMDQ2LDkgKzEwMzMsOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0g
ewogCiAgICAgICAgIHZhciBjZWxsID0gdGhpcy5faGVhZGVyVGFibGVDZWxsRWxlbWVudHMuZ2V0
KGNvbGxhcHNlckNvbHVtbklkZW50aWZpZXIpOwogICAgICAgICB0aGlzLl9jb2xsYXBzZUNvbHVt
bkdyb3VwV2l0aENlbGwoY2VsbCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29sbGFwc2VDb2x1
bW5Hcm91cFdpdGhDZWxsOiBmdW5jdGlvbihjZWxsKQorICAgIF9jb2xsYXBzZUNvbHVtbkdyb3Vw
V2l0aENlbGwoY2VsbCkKICAgICB7CiAgICAgICAgIHZhciBjb2x1bW5zV2lsbENvbGxhcHNlID0g
Y2VsbC5jbGFzc0xpc3QudG9nZ2xlKCJjb2xsYXBzZWQiKTsKIApAQCAtMTA2NSwzNCArMTA1Miwz
NCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29s
bGFwc2VyQnV0dG9uLnRpdGxlID0gY29sdW1uc1dpbGxDb2xsYXBzZSA/IHRoaXMuX2NvbGxhcHNl
ckJ1dHRvbkV4cGFuZENvbHVtbnNUb29sVGlwKCkgOiB0aGlzLl9jb2xsYXBzZXJCdXR0b25Db2xs
YXBzZUNvbHVtbnNUb29sVGlwKCk7CiAKICAgICAgICAgdGhpcy5kaWRUb2dnbGVDb2x1bW5Hcm91
cChjZWxsLmNvbGxhcHNlc0dyb3VwLCBjb2x1bW5zV2lsbENvbGxhcHNlKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9jb2xsYXBzZXJCdXR0b25Db2xsYXBzZUNvbHVtbnNUb29sVGlwOiBmdW5jdGlv
bigpCisgICAgX2NvbGxhcHNlckJ1dHRvbkNvbGxhcHNlQ29sdW1uc1Rvb2xUaXAoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29sbGFwc2UgY29sdW1ucyIp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbGxhcHNlckJ1dHRvbkV4cGFuZENvbHVtbnNUb29s
VGlwOiBmdW5jdGlvbigpCisgICAgX2NvbGxhcHNlckJ1dHRvbkV4cGFuZENvbHVtbnNUb29sVGlw
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkV4cGFuZCBj
b2x1bW5zIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB3aWxsVG9nZ2xlQ29sdW1uR3JvdXA6IGZ1
bmN0aW9uKGNvbHVtbkdyb3VwLCB3aWxsQ29sbGFwc2UpCisgICAgd2lsbFRvZ2dsZUNvbHVtbkdy
b3VwKGNvbHVtbkdyb3VwLCB3aWxsQ29sbGFwc2UpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1l
bnRlZCBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIGRpZFRv
Z2dsZUNvbHVtbkdyb3VwOiBmdW5jdGlvbihjb2x1bW5Hcm91cCwgZGlkQ29sbGFwc2UpCisgICAg
ZGlkVG9nZ2xlQ29sdW1uR3JvdXAoY29sdW1uR3JvdXAsIGRpZENvbGxhcHNlKQogICAgIHsKICAg
ICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCi0gICAgfSwKKyAg
ICB9CiAKLSAgICBoZWFkZXJUYWJsZUhlYWRlcjogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikK
KyAgICBoZWFkZXJUYWJsZUhlYWRlcihjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2hlYWRlclRhYmxlQ2VsbEVsZW1lbnRzLmdldChjb2x1bW5JZGVudGlmaWVy
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nZW5lcmF0ZVNvcnRJbmRpY2F0b3JJbWFnZXNJZk5l
ZWRlZDogZnVuY3Rpb24oKQorICAgIF9nZW5lcmF0ZVNvcnRJbmRpY2F0b3JJbWFnZXNJZk5lZWRl
ZCgpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLl9nZW5lcmF0ZWRT
b3J0SW5kaWNhdG9ySW1hZ2VzKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTExNyw5ICsxMTA0
LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBnZW5l
cmF0ZUNvbG9yZWRJbWFnZXNGb3JDU1MocGxhdGZvcm1JbWFnZVBhdGgoIlNvcnRJbmRpY2F0b3JE
b3duQXJyb3cuc3ZnIiksIHNwZWNpZmljYXRpb25zLCA5LCA4LCAiZGF0YS1ncmlkLXNvcnQtaW5k
aWNhdG9yLWRvd24tIik7CiAgICAgICAgIGdlbmVyYXRlQ29sb3JlZEltYWdlc0ZvckNTUyhwbGF0
Zm9ybUltYWdlUGF0aCgiU29ydEluZGljYXRvclVwQXJyb3cuc3ZnIiksIHNwZWNpZmljYXRpb25z
LCA5LCA4LCAiZGF0YS1ncmlkLXNvcnQtaW5kaWNhdG9yLXVwLSIpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX21vdXNlRG93bkluRGF0YVRhYmxlOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VE
b3duSW5EYXRhVGFibGUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZ3JpZE5vZGUgPSB0aGlz
LmRhdGFHcmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIGlmICghZ3JpZE5v
ZGUgfHwgIWdyaWROb2RlLnNlbGVjdGFibGUpCkBAIC0xMTM1LDkgKzExMjIsOSBAQCBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIGdyaWROb2RlLnNl
bGVjdCgpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGdyaWROb2RlLnNlbGVjdCgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRleHRNZW51SW5EYXRhVGFibGU6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9jb250ZXh0TWVudUluRGF0YVRhYmxlKGV2ZW50KQogICAgIHsKICAgICAgICAg
dmFyIGNvbnRleHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAK
QEAgLTExNjMsOSArMTE1MCw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfY2xpY2tJbkRhdGFUYWJsZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NsaWNrSW5E
YXRhVGFibGUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZ3JpZE5vZGUgPSB0aGlzLmRhdGFH
cmlkTm9kZUZyb21Ob2RlKGV2ZW50LnRhcmdldCk7CiAgICAgICAgIGlmICghZ3JpZE5vZGUgfHwg
IWdyaWROb2RlLmhhc0NoaWxkcmVuKQpAQCAtMTE4NSwxNSArMTE3MiwxNSBAQCBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIGdyaWROb2RlLmV4cGFuZCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0
ZXh0Rm9yRGF0YUdyaWROb2RlQ29sdW1uOiBmdW5jdGlvbihub2RlLCBjb2x1bW5JZGVudGlmaWVy
KQorICAgIHRleHRGb3JEYXRhR3JpZE5vZGVDb2x1bW4obm9kZSwgY29sdW1uSWRlbnRpZmllcikK
ICAgICB7CiAgICAgICAgIHZhciBkYXRhID0gbm9kZS5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwog
ICAgICAgICByZXR1cm4gKGRhdGEgaW5zdGFuY2VvZiBOb2RlID8gZGF0YS50ZXh0Q29udGVudCA6
IGRhdGEpIHx8ICIiOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvcHlUZXh0Rm9yRGF0YUdyaWRO
b2RlOiBmdW5jdGlvbihub2RlKQorICAgIF9jb3B5VGV4dEZvckRhdGFHcmlkTm9kZShub2RlKQog
ICAgIHsKICAgICAgICAgdmFyIGZpZWxkcyA9IFtdOwogICAgICAgICBmb3IgKHZhciBpZGVudGlm
aWVyIG9mIG5vZGUuZGF0YUdyaWQub3JkZXJlZENvbHVtbnMpCkBAIC0xMjAxLDE1ICsxMTg4LDE1
IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIHRh
YlNlcGFyYXRlZFZhbHVlcyA9IGZpZWxkcy5qb2luKCJcdCIpOwogICAgICAgICByZXR1cm4gdGFi
U2VwYXJhdGVkVmFsdWVzOwotICAgIH0sCisgICAgfQogCi0gICAgaGFuZGxlQmVmb3JlQ29weUV2
ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBoYW5kbGVCZWZvcmVDb3B5RXZlbnQoZXZlbnQpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGUgJiYgd2luZG93LmdldFNlbGVjdGlv
bigpLmlzQ29sbGFwc2VkKQogICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGhhbmRsZUNvcHlFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAg
aGFuZGxlQ29weUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVk
Tm9kZSB8fCAhd2luZG93LmdldFNlbGVjdGlvbigpLmlzQ29sbGFwc2VkKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTIxOCw5ICsxMjA1LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCJ0ZXh0L3BsYWlu
IiwgY29weVRleHQpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb3B5Um93OiBm
dW5jdGlvbih0YXJnZXQpCisgICAgX2NvcHlSb3codGFyZ2V0KQogICAgIHsKICAgICAgICAgdmFy
IGdyaWROb2RlID0gdGhpcy5kYXRhR3JpZE5vZGVGcm9tTm9kZSh0YXJnZXQpOwogICAgICAgICBp
ZiAoIWdyaWROb2RlKQpAQCAtMTIyOCwyOSArMTIxNSwyOSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciBjb3B5VGV4dCA9IHRoaXMuX2NvcHlUZXh0
Rm9yRGF0YUdyaWROb2RlKGdyaWROb2RlKTsKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0
LmNvcHlUZXh0KGNvcHlUZXh0KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXNpemVNZXRo
b2QoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9yZXNpemVNZXRob2QpCiAgICAgICAgICAg
ICByZXR1cm4gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlJlc2l6ZU1ldGhvZC5OZWFyZXN0OwogICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzaXplTWV0aG9kOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHJlc2l6ZU1ldGhvZChtZXRob2QpCiAgICAgewogICAgICAgICB0aGlzLl9yZXNpemVNZXRob2Qg
PSBtZXRob2Q7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNpemVyRHJhZ1N0YXJ0ZWQ6IGZ1bmN0
aW9uKHJlc2l6ZXIpCisgICAgcmVzaXplckRyYWdTdGFydGVkKHJlc2l6ZXIpCiAgICAgewogICAg
ICAgICBpZiAoIXJlc2l6ZXJbV2ViSW5zcGVjdG9yLkRhdGFHcmlkLk5leHRDb2x1bW5PcmRpbmFs
U3ltYm9sXSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBBYm9ydCB0aGUgZHJhZzsKIAog
ICAgICAgICB0aGlzLl9jdXJyZW50UmVzaXplciA9IHJlc2l6ZXI7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICByZXNpemVyRHJhZ2dpbmc6IGZ1bmN0aW9uKHJlc2l6ZXIsIHBvc2l0aW9uRGVsdGEpCisg
ICAgcmVzaXplckRyYWdnaW5nKHJlc2l6ZXIsIHBvc2l0aW9uRGVsdGEpCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChyZXNpemVyID09PSB0aGlzLl9jdXJyZW50UmVzaXplciwgcmVzaXpl
ciwgdGhpcy5fY3VycmVudFJlc2l6ZXIpOwogICAgICAgICBpZiAocmVzaXplciAhPSB0aGlzLl9j
dXJyZW50UmVzaXplcikKQEAgLTEyOTcsOSArMTI4NCw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3Bvc2l0aW9uUmVzaXplckVsZW1lbnRzKCk7
CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5EaWRMYXlvdXQpOwot
ICAgIH0sCisgICAgfQogCi0gICAgcmVzaXplckRyYWdFbmRlZDogZnVuY3Rpb24ocmVzaXplcikK
KyAgICByZXNpemVyRHJhZ0VuZGVkKHJlc2l6ZXIpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChyZXNpemVyID09PSB0aGlzLl9jdXJyZW50UmVzaXplciwgcmVzaXplciwgdGhpcy5fY3Vy
cmVudFJlc2l6ZXIpOwogICAgICAgICBpZiAocmVzaXplciAhPSB0aGlzLl9jdXJyZW50UmVzaXpl
cikKQEAgLTEzMDcsMTIgKzEyOTQsMzIgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICB0aGlzLl9jdXJyZW50UmVzaXplciA9IG51bGw7CiAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5E
aWRMYXlvdXQpOwotICAgIH0sCisgICAgfQorfTsKIAotICAgIENvbHVtblJlc2l6ZVBhZGRpbmc6
IDEwLAorV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkNvbHVtblJlc2l6ZVBhZGRpbmcgPSAxMDsKK1dl
Ykluc3BlY3Rvci5EYXRhR3JpZC5DZW50ZXJSZXNpemVyT3ZlckJvcmRlckFkanVzdG1lbnQgPSAz
OwogCi0gICAgQ2VudGVyUmVzaXplck92ZXJCb3JkZXJBZGp1c3RtZW50OiAzLAotfQorV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLkV2ZW50ID0geworICAgIERpZExheW91dDogImRhdGFncmlkLWRpZC1s
YXlvdXQiLAorICAgIFNvcnRDaGFuZ2VkOiAiZGF0YWdyaWQtc29ydC1jaGFuZ2VkIiwKKyAgICBT
ZWxlY3RlZE5vZGVDaGFuZ2VkOiAiZGF0YWdyaWQtc2VsZWN0ZWQtbm9kZS1jaGFuZ2VkIiwKKyAg
ICBFeHBhbmRlZE5vZGU6ICJkYXRhZ3JpZC1leHBhbmRlZC1ub2RlIiwKKyAgICBDb2xsYXBzZWRO
b2RlOiAiZGF0YWdyaWQtY29sbGFwc2VkLW5vZGUiCit9OworCitXZWJJbnNwZWN0b3IuRGF0YUdy
aWQuU29ydE9yZGVyID0geworICAgIEluZGV0ZXJtaW5hdGU6ICJkYXRhLWdyaWQtc29ydC1vcmRl
ci1pbmRldGVybWluYXRlIiwKKyAgICBBc2NlbmRpbmc6ICJkYXRhLWdyaWQtc29ydC1vcmRlci1h
c2NlbmRpbmciLAorICAgIERlc2NlbmRpbmc6ICJkYXRhLWdyaWQtc29ydC1vcmRlci1kZXNjZW5k
aW5nIgorfTsKKworV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlByZXZpb3VzQ29sdW1uT3JkaW5hbFN5
bWJvbCA9IFN5bWJvbCgicHJldmlvdXMtY29sdW1uLW9yZGluYWwiKTsKK1dlYkluc3BlY3Rvci5E
YXRhR3JpZC5OZXh0Q29sdW1uT3JkaW5hbFN5bWJvbCA9IFN5bWJvbCgibmV4dC1jb2x1bW4tb3Jk
aW5hbCIpOworCitXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydENvbHVtbkFzY2VuZGluZ1N0eWxl
Q2xhc3NOYW1lID0gInNvcnQtYXNjZW5kaW5nIjsKK1dlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0
Q29sdW1uRGVzY2VuZGluZ1N0eWxlQ2xhc3NOYW1lID0gInNvcnQtZGVzY2VuZGluZyI7CitXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQuU29ydGFibGVDb2x1bW5TdHlsZUNsYXNzTmFtZSA9ICJzb3J0YWJs
ZSI7CiAKIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5SZXNpemVNZXRob2QgPSB7CiAgICAgTmVhcmVz
dDogIm5lYXJlc3QiLApAQCAtMTMyMCwzOSArMTMyNyw0MiBAQCBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQuUmVzaXplTWV0aG9kID0gewogICAgIExhc3Q6ICJsYXN0IgogfTsKIAotV2ViSW5zcGVjdG9y
LkRhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZTsKLQotV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGRhdGEsIGhhc0No
aWxkcmVuKQorV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZSA9IGNsYXNzIERhdGFHcmlkTm9kZSBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNl
OwotICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7Ci0gICAgdGhpcy5fY29weWFibGUgPSB0cnVl
OwotICAgIHRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7Ci0gICAgdGhpcy5fZGF0
YSA9IGRhdGEgfHwge307Ci0gICAgdGhpcy5oYXNDaGlsZHJlbiA9IGhhc0NoaWxkcmVuIHx8IGZh
bHNlOwotICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKLSAgICB0aGlzLmRhdGFHcmlkID0gbnVsbDsK
LSAgICB0aGlzLnBhcmVudCA9IG51bGw7Ci0gICAgdGhpcy5wcmV2aW91c1NpYmxpbmcgPSBudWxs
OwotICAgIHRoaXMubmV4dFNpYmxpbmcgPSBudWxsOwotICAgIHRoaXMuZGlzY2xvc3VyZVRvZ2ds
ZVdpZHRoID0gMTA7Ci19Ci0KLVdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0g
eworICAgIGNvbnN0cnVjdG9yKGRhdGEsIGhhc0NoaWxkcmVuKQorICAgIHsKKyAgICAgICAgc3Vw
ZXIoKTsKKworICAgICAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9z
ZWxlY3RlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9jb3B5YWJsZSA9IHRydWU7CisgICAgICAg
IHRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHRydWU7CisgICAgICAgIHRoaXMuX2RhdGEg
PSBkYXRhIHx8IHt9OworICAgICAgICB0aGlzLmhhc0NoaWxkcmVuID0gaGFzQ2hpbGRyZW4gfHwg
ZmFsc2U7CisgICAgICAgIHRoaXMuY2hpbGRyZW4gPSBbXTsKKyAgICAgICAgdGhpcy5kYXRhR3Jp
ZCA9IG51bGw7CisgICAgICAgIHRoaXMucGFyZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5wcmV2
aW91c1NpYmxpbmcgPSBudWxsOworICAgICAgICB0aGlzLm5leHRTaWJsaW5nID0gbnVsbDsKKyAg
ICAgICAgdGhpcy5kaXNjbG9zdXJlVG9nZ2xlV2lkdGggPSAxMDsKKyAgICB9CisKKyAgICAvLyBQ
dWJsaWMKKwogICAgIGdldCBzZWxlY3RhYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiAhdGhp
cy5fZWxlbWVudCB8fCAhdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoImhpZGRlbiIp
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGNvcHlhYmxlKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9jb3B5YWJsZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBjb3B5YWJsZSh4
KQogICAgIHsKICAgICAgICAgdGhpcy5fY29weWFibGUgPSB4OwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKQEAgLTEzNzYsMTUgKzEzODYsMTUgQEAgV2ViSW5zcGVj
dG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5jcmVhdGVDZWxs
cygpOwogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAg
IGNyZWF0ZUNlbGxzOiBmdW5jdGlvbigpCisgICAgY3JlYXRlQ2VsbHMoKQogICAgIHsKICAgICAg
ICAgZm9yICh2YXIgY29sdW1uSWRlbnRpZmllciBvZiB0aGlzLmRhdGFHcmlkLm9yZGVyZWRDb2x1
bW5zKQogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmNyZWF0ZUNl
bGwoY29sdW1uSWRlbnRpZmllcikpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVmcmVzaElmTmVl
ZGVkOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaElmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlm
ICghdGhpcy5fbmVlZHNSZWZyZXNoKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTM5Miw5ICsx
NDAyLDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9uZWVkc1JlZnJlc2g7CiAKICAgICAgICAgdGhpcy5yZWZyZXNoKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBuZWVkc1JlZnJlc2g6IGZ1bmN0aW9uKCkKKyAgICBuZWVkc1Jl
ZnJlc2goKQogICAgIHsKICAgICAgICAgdGhpcy5fbmVlZHNSZWZyZXNoID0gdHJ1ZTsKIApAQCAt
MTQwNSwxOCArMTQxNSwxOCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zY2hlZHVsZWRSZWZyZXNo
SWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnJlZnJlc2guYmluZCh0aGlz
KSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fZGF0YTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBkYXRhKHgpCiAgICAgewog
ICAgICAgICB0aGlzLl9kYXRhID0geCB8fCB7fTsKICAgICAgICAgdGhpcy5uZWVkc1JlZnJlc2go
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCByZXZlYWxlZCgpCiAgICAgewpAQCAtMTQzNSw3
ICsxNDQ1LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgdGhpcy5fcmV2ZWFsZWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
LAorICAgIH0KIAogICAgIHNldCBoYXNDaGlsZHJlbih4KQogICAgIHsKQEAgLTE0NTgsMTIgKzE0
NjgsMTIgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoInBhcmVudCIpOwogICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJleHBhbmRlZCIpOwogICAgICAgICB9
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFzQ2hpbGRyZW4oKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2hhc0NoaWxkcmVuOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJldmVh
bGVkKHgpCiAgICAgewpAQCAtMTQ4Myw3ICsxNDkzLDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmNo
aWxkcmVuLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgdGhpcy5jaGlsZHJlbltpXS5yZXZlYWxl
ZCA9IHggJiYgdGhpcy5leHBhbmRlZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkZXB0aCgp
CiAgICAgewpAQCAtMTQ5NCw3ICsxNTA0LDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2RlcHRoID0gMDsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2RlcHRoOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGxl
ZnRQYWRkaW5nKCkKICAgICB7CkBAIC0xNTAzLDI0ICsxNTEzLDI0IEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2xlZnRQYWRkaW5nID0g
dGhpcy5kZXB0aCAqIHRoaXMuZGF0YUdyaWQuaW5kZW50V2lkdGg7CiAgICAgICAgIHJldHVybiB0
aGlzLl9sZWZ0UGFkZGluZzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzaG91bGRSZWZyZXNo
Q2hpbGRyZW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3VsZFJlZnJlc2hDaGls
ZHJlbjsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzaG91bGRSZWZyZXNoQ2hpbGRyZW4oeCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3VsZFJlZnJlc2hDaGlsZHJlbiA9IHg7CiAgICAgICAg
IGlmICh4ICYmIHRoaXMuZXhwYW5kZWQpCiAgICAgICAgICAgICB0aGlzLmV4cGFuZCgpOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zZWxlY3RlZDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBzZWxlY3RlZCh4KQogICAg
IHsKQEAgLTE1MjgsMTIgKzE1MzgsMTIgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLnNlbGVjdCgpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICB0aGlzLmRlc2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZXhwYW5k
ZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V4cGFuZGVkOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGV4cGFuZGVkKHgpCiAgICAgewpAQCAtMTU0MSw5ICsxNTUxLDkgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLmV4
cGFuZCgpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLmNvbGxhcHNlKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigpCisgICAgcmVmcmVzaCgpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX2VsZW1lbnQgfHwgIXRoaXMuZGF0YUdyaWQpCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC0xNTU3LDE0ICsxNTY3LDE0IEBAIFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKICAgICAgICAgdGhpcy5jcmVhdGVDZWxscygpOwotICAgIH0sCisgICAgfQogCi0gICAg
dXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgotICAgIH0sCisgICAg
fQogCi0gICAgY3JlYXRlQ2VsbDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllcikKKyAgICBjcmVh
dGVDZWxsKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICB2YXIgY2VsbEVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwogICAgICAgICBjZWxsRWxlbWVudC5jbGFz
c05hbWUgPSBjb2x1bW5JZGVudGlmaWVyICsgIi1jb2x1bW4iOwpAQCAtMTU4OSw1MiArMTU5OSwz
MCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQog
CiAgICAgICAgIHJldHVybiBjZWxsRWxlbWVudDsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0
ZUNlbGxDb250ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIGNyZWF0ZUNlbGxD
b250ZW50KGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5kYXRh
W2NvbHVtbklkZW50aWZpZXJdIHx8ICJcdTIwMGIiOyAvLyBaZXJvIHdpZHRoIHNwYWNlIHRvIGtl
ZXAgdGhlIGNlbGwgZnJvbSBjb2xsYXBzaW5nLgotICAgIH0sCisgICAgfQogCi0gICAgZWxlbWVu
dFdpdGhDb2x1bW5JZGVudGlmaWVyOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIGVs
ZW1lbnRXaXRoQ29sdW1uSWRlbnRpZmllcihjb2x1bW5JZGVudGlmaWVyKQogICAgIHsKICAgICAg
ICAgdmFyIGluZGV4ID0gdGhpcy5kYXRhR3JpZC5vcmRlcmVkQ29sdW1ucy5pbmRleE9mKGNvbHVt
bklkZW50aWZpZXIpOwogICAgICAgICBpZiAoaW5kZXggPT09IC0xKQogICAgICAgICAgICAgcmV0
dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2hpbGRyZW5baW5kZXhd
OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gU2hhcmUgdGhlc2UgZnVuY3Rpb25zIHdpdGggRGF0
YUdyaWQuIFRoZXkgYXJlIHdyaXR0ZW4gdG8gd29yayB3aXRoIGEgRGF0YUdyaWROb2RlIHRoaXMg
b2JqZWN0LgotICAgIGFwcGVuZENoaWxkOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBl
LmFwcGVuZENoaWxkLAotICAgIGluc2VydENoaWxkOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJv
dG90eXBlLmluc2VydENoaWxkLAotICAgIHJlbW92ZUNoaWxkOiBXZWJJbnNwZWN0b3IuRGF0YUdy
aWQucHJvdG90eXBlLnJlbW92ZUNoaWxkLAotICAgIHJlbW92ZUNoaWxkcmVuOiBXZWJJbnNwZWN0
b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuLAotICAgIHJlbW92ZUNoaWxkcmVu
UmVjdXJzaXZlOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVu
UmVjdXJzaXZlLAorICAgIGFwcGVuZENoaWxkKCkgeyByZXR1cm4gV2ViSW5zcGVjdG9yLkRhdGFH
cmlkLnByb3RvdHlwZS5hcHBlbmRDaGlsZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9CisgICAg
aW5zZXJ0Q2hpbGQoKSB7IHJldHVybiBXZWJJbnNwZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLmlu
c2VydENoaWxkLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH0KKyAgICByZW1vdmVDaGlsZCgpIHsg
cmV0dXJuIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUucmVtb3ZlQ2hpbGQuYXBwbHko
dGhpcywgYXJndW1lbnRzKTsgfQorICAgIHJlbW92ZUNoaWxkcmVuKCkgeyByZXR1cm4gV2ViSW5z
cGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZS5yZW1vdmVDaGlsZHJlbi5hcHBseSh0aGlzLCBhcmd1
bWVudHMpOyB9CisgICAgcmVtb3ZlQ2hpbGRyZW5SZWN1cnNpdmUoKSB7IHJldHVybiBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQucHJvdG90eXBlLnJlbW92ZUNoaWxkcmVuUmVjdXJzaXZlLmFwcGx5KHRo
aXMsIGFyZ3VtZW50cyk7IH0KIAotICAgIF9yZWNhbGN1bGF0ZVNpYmxpbmdzOiBmdW5jdGlvbiht
eUluZGV4KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnBhcmVudCkKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB2YXIgcHJldmlvdXNDaGlsZCA9IChteUluZGV4ID4gMCA/IHRoaXMu
cGFyZW50LmNoaWxkcmVuW215SW5kZXggLSAxXSA6IG51bGwpOwotCi0gICAgICAgIGlmIChwcmV2
aW91c0NoaWxkKSB7Ci0gICAgICAgICAgICBwcmV2aW91c0NoaWxkLm5leHRTaWJsaW5nID0gdGhp
czsKLSAgICAgICAgICAgIHRoaXMucHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNDaGlsZDsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLnByZXZpb3VzU2libGluZyA9IG51bGw7Ci0K
LSAgICAgICAgdmFyIG5leHRDaGlsZCA9IHRoaXMucGFyZW50LmNoaWxkcmVuW215SW5kZXggKyAx
XTsKLQotICAgICAgICBpZiAobmV4dENoaWxkKSB7Ci0gICAgICAgICAgICBuZXh0Q2hpbGQucHJl
dmlvdXNTaWJsaW5nID0gdGhpczsKLSAgICAgICAgICAgIHRoaXMubmV4dFNpYmxpbmcgPSBuZXh0
Q2hpbGQ7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy5uZXh0U2libGluZyA9IG51
bGw7Ci0gICAgfSwKLQotICAgIGNvbGxhcHNlOiBmdW5jdGlvbigpCisgICAgY29sbGFwc2UoKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpCiAgICAgICAgICAgICB0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoImV4cGFuZGVkIik7CkBAIC0xNjQ4LDkgKzE2MzYsOSBAQCBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhp
cy5kYXRhR3JpZCkKICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5Db2xsYXBzZWROb2RlLCB7ZGF0YUdy
aWROb2RlOiB0aGlzfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb2xsYXBzZVJlY3Vyc2l2ZWx5
OiBmdW5jdGlvbigpCisgICAgY29sbGFwc2VSZWN1cnNpdmVseSgpCiAgICAgewogICAgICAgICB2
YXIgaXRlbSA9IHRoaXM7CiAgICAgICAgIHdoaWxlIChpdGVtKSB7CkBAIC0xNjU4LDkgKzE2NDYs
OSBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
ICAgICBpdGVtLmNvbGxhcHNlKCk7CiAgICAgICAgICAgICBpdGVtID0gaXRlbS50cmF2ZXJzZU5l
eHROb2RlKGZhbHNlLCB0aGlzLCB0cnVlKTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0g
ICAgZXhwYW5kOiBmdW5jdGlvbigpCisgICAgZXhwYW5kKCkKICAgICB7CiAgICAgICAgIGlmICgh
dGhpcy5oYXNDaGlsZHJlbiB8fCB0aGlzLmV4cGFuZGVkKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTY5NiwxOCArMTY4NCwxOCBAQCBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5kYXRhR3JpZCkKICAgICAgICAgICAgIHRoaXMuZGF0
YUdyaWQuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVu
dC5FeHBhbmRlZE5vZGUsIHtkYXRhR3JpZE5vZGU6IHRoaXN9KTsKLSAgICB9LAorICAgIH0KIAot
ICAgIGV4cGFuZFJlY3Vyc2l2ZWx5OiBmdW5jdGlvbigpCisgICAgZXhwYW5kUmVjdXJzaXZlbHko
KQogICAgIHsKICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzOwogICAgICAgICB3aGlsZSAoaXRlbSkg
ewogICAgICAgICAgICAgaXRlbS5leHBhbmQoKTsKICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRy
YXZlcnNlTmV4dE5vZGUoZmFsc2UsIHRoaXMpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAK
LSAgICByZXZlYWw6IGZ1bmN0aW9uKCkKKyAgICByZXZlYWwoKQogICAgIHsKICAgICAgICAgdmFy
IGN1cnJlbnRBbmNlc3RvciA9IHRoaXMucGFyZW50OwogICAgICAgICB3aGlsZSAoY3VycmVudEFu
Y2VzdG9yICYmICFjdXJyZW50QW5jZXN0b3Iucm9vdCkgewpAQCAtMTcxOSw5ICsxNzA3LDkgQEAg
V2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZWxl
bWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKIAogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycygicmV2ZWFsZWQiKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNl
bGVjdDogZnVuY3Rpb24oc3VwcmVzc1NlbGVjdGVkRXZlbnQpCisgICAgc2VsZWN0KHN1cHJlc3NT
ZWxlY3RlZEV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmRhdGFHcmlkIHx8ICF0aGlz
LnNlbGVjdGFibGUgfHwgdGhpcy5zZWxlY3RlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3
MzcsMTUgKzE3MjUsMTUgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgaWYgKCFzdXByZXNzU2VsZWN0ZWRFdmVudCkKICAgICAgICAgICAgIHRoaXMu
ZGF0YUdyaWQuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5F
dmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbEFu
ZFNlbGVjdDogZnVuY3Rpb24oKQorICAgIHJldmVhbEFuZFNlbGVjdCgpCiAgICAgewogICAgICAg
ICB0aGlzLnJldmVhbCgpOwogICAgICAgICB0aGlzLnNlbGVjdCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgZGVzZWxlY3Q6IGZ1bmN0aW9uKHN1cHJlc3NEZXNlbGVjdGVkRXZlbnQpCisgICAgZGVz
ZWxlY3Qoc3VwcmVzc0Rlc2VsZWN0ZWRFdmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5k
YXRhR3JpZCB8fCB0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZSAhPT0gdGhpcyB8fCAhdGhpcy5z
ZWxlY3RlZCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE3NTgsOSArMTc0Niw5IEBAIFdlYklu
c3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICghc3VwcmVz
c0Rlc2VsZWN0ZWRFdmVudCkKICAgICAgICAgICAgIHRoaXMuZGF0YUdyaWQuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5TZWxlY3RlZE5vZGVDaGFu
Z2VkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHRyYXZlcnNlTmV4dE5vZGU6IGZ1bmN0aW9uKHNr
aXBIaWRkZW4sIHN0YXlXaXRoaW4sIGRvbnRQb3B1bGF0ZSwgaW5mbykKKyAgICB0cmF2ZXJzZU5l
eHROb2RlKHNraXBIaWRkZW4sIHN0YXlXaXRoaW4sIGRvbnRQb3B1bGF0ZSwgaW5mbykKICAgICB7
CiAgICAgICAgIGlmICghZG9udFBvcHVsYXRlICYmIHRoaXMuaGFzQ2hpbGRyZW4pCiAgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygicG9wdWxhdGUiKTsKQEAgLTE3OTMs
OSArMTc4MSw5IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAgICAgcmV0dXJuICghc2tpcEhpZGRlbiB8fCBu
b2RlLnJldmVhbGVkKSA/IG5vZGUubmV4dFNpYmxpbmcgOiBudWxsOwotICAgIH0sCisgICAgfQog
Ci0gICAgdHJhdmVyc2VQcmV2aW91c05vZGU6IGZ1bmN0aW9uKHNraXBIaWRkZW4sIGRvbnRQb3B1
bGF0ZSkKKyAgICB0cmF2ZXJzZVByZXZpb3VzTm9kZShza2lwSGlkZGVuLCBkb250UG9wdWxhdGUp
CiAgICAgewogICAgICAgICB2YXIgbm9kZSA9ICghc2tpcEhpZGRlbiB8fCB0aGlzLnJldmVhbGVk
KSA/IHRoaXMucHJldmlvdXNTaWJsaW5nIDogbnVsbDsKICAgICAgICAgaWYgKCFkb250UG9wdWxh
dGUgJiYgbm9kZSAmJiBub2RlLmhhc0NoaWxkcmVuKQpAQCAtMTgxNCw5ICsxODAyLDkgQEAgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbDsKIAogICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBpc0V2ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlOiBmdW5jdGlvbihldmVudCkKKyAgICBp
c0V2ZW50V2l0aGluRGlzY2xvc3VyZVRyaWFuZ2xlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYg
KCF0aGlzLmhhc0NoaWxkcmVuKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgyNiw5
ICsxODE0LDU3IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHZhciBsZWZ0ID0gY2VsbC50b3RhbE9mZnNldExlZnQgKyB0aGlzLmxlZnRQYWRkaW5n
OwogICAgICAgICByZXR1cm4gZXZlbnQucGFnZVggPj0gbGVmdCAmJiBldmVudC5wYWdlWCA8PSBs
ZWZ0ICsgdGhpcy5kaXNjbG9zdXJlVG9nZ2xlV2lkdGg7Ci0gICAgfSwKKyAgICB9CisKKyAgICBz
YXZlUG9zaXRpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3NhdmVkUG9zaXRpb24pCisg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICBfYXR0YWNoOiBmdW5jdGlvbigpCisgICAgICAgIGlm
ICghdGhpcy5wYXJlbnQpCisgICAgICAgICAgICB0aHJvdygic2F2ZVBvc2l0aW9uOiBOb2RlIG11
c3QgaGF2ZSBhIHBhcmVudC4iKTsKKyAgICAgICAgdGhpcy5fc2F2ZWRQb3NpdGlvbiA9IHsKKyAg
ICAgICAgICAgIHBhcmVudDogdGhpcy5wYXJlbnQsCisgICAgICAgICAgICBpbmRleDogdGhpcy5w
YXJlbnQuY2hpbGRyZW4uaW5kZXhPZih0aGlzKQorICAgICAgICB9OworICAgIH0KKworICAgIHJl
c3RvcmVQb3NpdGlvbigpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NhdmVkUG9zaXRpb24p
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMucGFyZW50ICE9PSB0aGlz
Ll9zYXZlZFBvc2l0aW9uLnBhcmVudCkKKyAgICAgICAgICAgIHRoaXMuX3NhdmVkUG9zaXRpb24u
cGFyZW50Lmluc2VydENoaWxkKHRoaXMsIHRoaXMuX3NhdmVkUG9zaXRpb24uaW5kZXgpOworCisg
ICAgICAgIGRlbGV0ZSB0aGlzLl9zYXZlZFBvc2l0aW9uOworICAgIH0KKworICAgIC8vIFByaXZh
dGUKKworICAgIF9yZWNhbGN1bGF0ZVNpYmxpbmdzKG15SW5kZXgpCisgICAgeworICAgICAgICBp
ZiAoIXRoaXMucGFyZW50KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciBwcmV2
aW91c0NoaWxkID0gKG15SW5kZXggPiAwID8gdGhpcy5wYXJlbnQuY2hpbGRyZW5bbXlJbmRleCAt
IDFdIDogbnVsbCk7CisKKyAgICAgICAgaWYgKHByZXZpb3VzQ2hpbGQpIHsKKyAgICAgICAgICAg
IHByZXZpb3VzQ2hpbGQubmV4dFNpYmxpbmcgPSB0aGlzOworICAgICAgICAgICAgdGhpcy5wcmV2
aW91c1NpYmxpbmcgPSBwcmV2aW91c0NoaWxkOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IHRoaXMucHJldmlvdXNTaWJsaW5nID0gbnVsbDsKKworICAgICAgICB2YXIgbmV4dENoaWxkID0g
dGhpcy5wYXJlbnQuY2hpbGRyZW5bbXlJbmRleCArIDFdOworCisgICAgICAgIGlmIChuZXh0Q2hp
bGQpIHsKKyAgICAgICAgICAgIG5leHRDaGlsZC5wcmV2aW91c1NpYmxpbmcgPSB0aGlzOworICAg
ICAgICAgICAgdGhpcy5uZXh0U2libGluZyA9IG5leHRDaGlsZDsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICB0aGlzLm5leHRTaWJsaW5nID0gbnVsbDsKKyAgICB9CisKKyAgICBfYXR0YWNo
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5kYXRhR3JpZCB8fCB0aGlzLl9hdHRhY2hlZCkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4NTQsOSArMTg5MCw5IEBAIFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICBpZiAodGhpcy5leHBhbmRlZCkKICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkK
ICAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuW2ldLl9hdHRhY2goKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9kZXRhY2g6IGZ1bmN0aW9uKCkKKyAgICBfZGV0YWNoKCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fYXR0YWNoZWQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xODY4LDQ5
ICsxOTA0LDIyIEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jaGlsZHJlbi5sZW5ndGg7ICsraSkKICAg
ICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0uX2RldGFjaCgpOwotICAgIH0sCi0KLSAgICBzYXZl
UG9zaXRpb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zYXZlZFBvc2l0
aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICghdGhpcy5wYXJlbnQpCi0g
ICAgICAgICAgICB0aHJvdygic2F2ZVBvc2l0aW9uOiBOb2RlIG11c3QgaGF2ZSBhIHBhcmVudC4i
KTsKLSAgICAgICAgdGhpcy5fc2F2ZWRQb3NpdGlvbiA9IHsKLSAgICAgICAgICAgIHBhcmVudDog
dGhpcy5wYXJlbnQsCi0gICAgICAgICAgICBpbmRleDogdGhpcy5wYXJlbnQuY2hpbGRyZW4uaW5k
ZXhPZih0aGlzKQotICAgICAgICB9OwotICAgIH0sCi0KLSAgICByZXN0b3JlUG9zaXRpb246IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5fc2F2ZWRQb3NpdGlvbikKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAodGhpcy5wYXJlbnQgIT09IHRoaXMuX3NhdmVk
UG9zaXRpb24ucGFyZW50KQotICAgICAgICAgICAgdGhpcy5fc2F2ZWRQb3NpdGlvbi5wYXJlbnQu
aW5zZXJ0Q2hpbGQodGhpcywgdGhpcy5fc2F2ZWRQb3NpdGlvbi5pbmRleCk7Ci0KLSAgICAgICAg
ZGVsZXRlIHRoaXMuX3NhdmVkUG9zaXRpb247CiAgICAgfQotfQotCi1XZWJJbnNwZWN0b3IuRGF0
YUdyaWROb2RlLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3Rv
dHlwZTsKK307CiAKIC8vIFVzZWQgdG8gY3JlYXRlIGEgbmV3IHRhYmxlIHJvdyB3aGVuIGVudGVy
aW5nIG5ldyBkYXRhIGJ5IGVkaXRpbmcgY2VsbHMuCi1XZWJJbnNwZWN0b3IuUGxhY2Vob2xkZXJE
YXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRhKQorV2ViSW5zcGVjdG9yLlBsYWNlaG9sZGVyRGF0
YUdyaWROb2RlID0gY2xhc3MgUGxhY2Vob2xkZXJEYXRhR3JpZE5vZGUgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWROb2RlCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxs
KHRoaXMsIGRhdGEsIGZhbHNlKTsKLSAgICB0aGlzLmlzUGxhY2Vob2xkZXJOb2RlID0gdHJ1ZTsK
LX0KLQotV2ViSW5zcGVjdG9yLlBsYWNlaG9sZGVyRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlBsYWNlaG9sZGVyRGF0YUdyaWROb2RlLAot
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUsCisgICAg
Y29uc3RydWN0b3IoZGF0YSkKKyAgICB7CisgICAgICAgIHN1cGVyKGRhdGEsIGZhbHNlKTsKIAot
ICAgIG1ha2VOb3JtYWw6IGZ1bmN0aW9uKCkKKyAgICAgICAgdGhpcy5pc1BsYWNlaG9sZGVyTm9k
ZSA9IHRydWU7CisgICAgfQorICAgIAorICAgIG1ha2VOb3JtYWwoKQogICAgIHsKICAgICAgICAg
ZGVsZXRlIHRoaXMuaXNQbGFjZWhvbGRlck5vZGU7CiAgICAgICAgIGRlbGV0ZSB0aGlzLm1ha2VO
b3JtYWw7CiAgICAgfQotfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZUNvbnRlbnRWaWV3LmpzCmluZGV4
IDI3ZWEwZDkuLjYzNWFlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VDb250ZW50Vmlldy5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
NDYgKzIzLDQxIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9i
amVjdCkKK1dlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRWaWV3ID0gY2xhc3MgRGF0YWJhc2VD
b250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50VmlldwogewotICAgIFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAg
IHRoaXMuZGF0YWJhc2UgPSByZXByZXNlbnRlZE9iamVjdDsKKyAgICBjb25zdHJ1Y3RvcihyZXBy
ZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0KTsK
IAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJzdG9yYWdlLXZpZXciKTsKLSAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicXVlcnkiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZCgibW9ub3NwYWNlIik7CisgICAgICAgIHRoaXMuZGF0YWJhc2UgPSByZXByZXNl
bnRlZE9iamVjdDsKIAotICAgIHRoaXMuX3Byb21wdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLl9wcm9tcHRFbGVtZW50LmNsYXNzTmFtZSA9ICJkYXRh
YmFzZS1xdWVyeS1wcm9tcHQiOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9w
cm9tcHRFbGVtZW50KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInN0b3Jh
Z2UtdmlldyIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicXVlcnkiKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1vbm9zcGFjZSIpOwogCi0gICAg
dGhpcy5wcm9tcHQgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbnNvbGVQcm9tcHQodGhpcywgInRleHQv
eC1zcWwiKTsKLSAgICB0aGlzLl9wcm9tcHRFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucHJvbXB0
LmVsZW1lbnQpOworICAgICAgICB0aGlzLl9wcm9tcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3Byb21wdEVsZW1lbnQuY2xhc3NOYW1lID0g
ImRhdGFiYXNlLXF1ZXJ5LXByb21wdCI7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZCh0aGlzLl9wcm9tcHRFbGVtZW50KTsKIAotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX21lc3NhZ2VzQ2xpY2tlZC5iaW5kKHRoaXMpLCB0cnVlKTsKLX07
CisgICAgICAgIHRoaXMucHJvbXB0ID0gbmV3IFdlYkluc3BlY3Rvci5Db25zb2xlUHJvbXB0KHRo
aXMsICJ0ZXh0L3gtc3FsIik7CisgICAgICAgIHRoaXMuX3Byb21wdEVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5wcm9tcHQuZWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRlbnRW
aWV3LkV2ZW50ID0gewotICAgIFNjaGVtYVVwZGF0ZWQ6ICJTY2hlbWFVcGRhdGVkIgotfTsKLQot
V2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50VmlldywKKyAgICAgICAgdGhpcy5l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fbWVzc2FnZXNDbGlja2VkLmJp
bmQodGhpcyksIHRydWUpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGFsbG93
ZWROYXZpZ2F0aW9uU2lkZWJhclBhbmVscygpCiAgICAgewogICAgICAgICByZXR1cm4gW1dlYklu
c3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5pZGVudGlmaWVyXTsKLSAgICB9LAorICAgIH0K
IAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdGhp
cy5wcm9tcHQuc2hvd24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVu
Y3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB0aGlzLnByb21wdC51
cGRhdGVMYXlvdXQoKTsKIApAQCAtNzIsMTYgKzY3LDE2IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFz
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChyZXN1bHRFbGVtZW50
LmRhdGFHcmlkKQogICAgICAgICAgICAgICAgIHJlc3VsdEVsZW1lbnQuZGF0YUdyaWQudXBkYXRl
TGF5b3V0KCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZTog
ZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAg
ICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuRGF0YWJh
c2U7CiAgICAgICAgIGNvb2tpZS5ob3N0ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5ob3N0Owog
ICAgICAgICBjb29raWUubmFtZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QubmFtZTsKLSAgICB9
LAorICAgIH0KIAotICAgIGNvbnNvbGVQcm9tcHRDb21wbGV0aW9uc05lZWRlZDogZnVuY3Rpb24o
cHJvbXB0LCBkZWZhdWx0Q29tcGxldGlvbnMsIGJhc2UsIHByZWZpeCwgc3VmZml4KQorICAgIGNv
bnNvbGVQcm9tcHRDb21wbGV0aW9uc05lZWRlZChwcm9tcHQsIGRlZmF1bHRDb21wbGV0aW9ucywg
YmFzZSwgcHJlZml4LCBzdWZmaXgpCiAgICAgewogICAgICAgICB2YXIgcmVzdWx0cyA9IFtdOwog
CkBAIC0xMDUsMjEgKzEwMCwyMSBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmRhdGFiYXNlLmdldFRhYmxl
TmFtZXModGFibGVOYW1lc0NhbGxiYWNrLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0g
ICAgY29uc29sZVByb21wdFRleHRDb21taXR0ZWQ6IGZ1bmN0aW9uKHByb21wdCwgcXVlcnkpCisg
ICAgY29uc29sZVByb21wdFRleHRDb21taXR0ZWQocHJvbXB0LCBxdWVyeSkKICAgICB7CiAgICAg
ICAgIHRoaXMuZGF0YWJhc2UuZXhlY3V0ZVNRTChxdWVyeSwgdGhpcy5fcXVlcnlGaW5pc2hlZC5i
aW5kKHRoaXMsIHF1ZXJ5KSwgdGhpcy5fcXVlcnlFcnJvci5iaW5kKHRoaXMsIHF1ZXJ5KSk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfbWVzc2FnZXNDbGlja2VkOiBm
dW5jdGlvbigpCisgICAgX21lc3NhZ2VzQ2xpY2tlZCgpCiAgICAgewogICAgICAgICB0aGlzLnBy
b21wdC5mb2N1cygpOwotICAgIH0sCisgICAgfQogCi0gICAgX3F1ZXJ5RmluaXNoZWQ6IGZ1bmN0
aW9uKHF1ZXJ5LCBjb2x1bW5OYW1lcywgdmFsdWVzKQorICAgIF9xdWVyeUZpbmlzaGVkKHF1ZXJ5
LCBjb2x1bW5OYW1lcywgdmFsdWVzKQogICAgIHsKICAgICAgICAgdmFyIGRhdGFHcmlkID0gV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkLmNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQoY29sdW1uTmFtZXMsIHZh
bHVlcyk7CiAgICAgICAgIHZhciB0cmltbWVkUXVlcnkgPSBxdWVyeS50cmltKCk7CkBAIC0xMzIs
OSArMTI3LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewogCiAgICAgICAgIGlmICh0cmltbWVkUXVlcnkubWF0Y2goL15jcmVhdGUgL2kpIHx8IHRyaW1t
ZWRRdWVyeS5tYXRjaCgvXmRyb3AgdGFibGUgL2kpKQogICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcuRXZlbnQu
U2NoZW1hVXBkYXRlZCwgdGhpcy5kYXRhYmFzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcXVl
cnlFcnJvcjogZnVuY3Rpb24ocXVlcnksIGVycm9yKQorICAgIF9xdWVyeUVycm9yKHF1ZXJ5LCBl
cnJvcikKICAgICB7CiAgICAgICAgIGlmIChlcnJvci5tZXNzYWdlKQogICAgICAgICAgICAgdmFy
IG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlOwpAQCAtMTQ0LDkgKzEzOSw5IEBAIFdlYkluc3BlY3Rv
ci5EYXRhYmFzZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBtZXNz
YWdlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbiB1bmV4cGVjdGVkIGVycm9yICVzIG9jY3Vy
cmVkLiIpLmZvcm1hdChlcnJvci5jb2RlKTsKIAogICAgICAgICB0aGlzLl9hcHBlbmRFcnJvclF1
ZXJ5UmVzdWx0KHF1ZXJ5LCBtZXNzYWdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hcHBlbmRW
aWV3UXVlcnlSZXN1bHQ6IGZ1bmN0aW9uKHF1ZXJ5LCB2aWV3KQorICAgIF9hcHBlbmRWaWV3UXVl
cnlSZXN1bHQocXVlcnksIHZpZXcpCiAgICAgewogICAgICAgICB2YXIgcmVzdWx0RWxlbWVudCA9
IHRoaXMuX2FwcGVuZFF1ZXJ5UmVzdWx0KHF1ZXJ5KTsKIApAQCAtMTU1LDE4ICsxNTAsMTggQEAg
V2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBy
ZXN1bHRFbGVtZW50LmFwcGVuZENoaWxkKHZpZXcuZWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5f
cHJvbXB0RWxlbWVudC5zY3JvbGxJbnRvVmlldyhmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfYXBwZW5kRXJyb3JRdWVyeVJlc3VsdDogZnVuY3Rpb24ocXVlcnksIGVycm9yVGV4dCkKKyAg
ICBfYXBwZW5kRXJyb3JRdWVyeVJlc3VsdChxdWVyeSwgZXJyb3JUZXh0KQogICAgIHsKICAgICAg
ICAgdmFyIHJlc3VsdEVsZW1lbnQgPSB0aGlzLl9hcHBlbmRRdWVyeVJlc3VsdChxdWVyeSk7CiAg
ICAgICAgIHJlc3VsdEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZXJyb3IiKTsKICAgICAgICAgcmVz
dWx0RWxlbWVudC50ZXh0Q29udGVudCA9IGVycm9yVGV4dDsKIAogICAgICAgICB0aGlzLl9wcm9t
cHRFbGVtZW50LnNjcm9sbEludG9WaWV3KGZhbHNlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9h
cHBlbmRRdWVyeVJlc3VsdDogZnVuY3Rpb24ocXVlcnkpCisgICAgX2FwcGVuZFF1ZXJ5UmVzdWx0
KHF1ZXJ5KQogICAgIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKICAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSAiZGF0YWJhc2UtdXNlci1x
dWVyeSI7CkBAIC0xODQsNCArMTc5LDYgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZUNvbnRl
bnRWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJv
dG90eXBlOworV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcuRXZlbnQgPSB7CisgICAg
U2NoZW1hVXBkYXRlZDogIlNjaGVtYVVwZGF0ZWQiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VU
YWJsZUNvbnRlbnRWaWV3LmpzCmluZGV4IDE3YWMxNGMuLjcyZGFhY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlVGFibGVDb250
ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDc5ICsyMyw3NSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5EYXRhYmFzZVRh
YmxlQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXByZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rv
ci5EYXRhYmFzZVRhYmxlQ29udGVudFZpZXcgPSBjbGFzcyBEYXRhYmFzZVRhYmxlQ29udGVudFZp
ZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
Q29udGVudFZpZXcuY2FsbCh0aGlzLCByZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3
LlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHZhciByZWZyZXNoU291cmNlLCByZWZyZXNoU2l6ZTsK
LSAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MpIHsKLSAgICAgICAg
cmVmcmVzaFNvdXJjZSA9ICJJbWFnZXMvTGVnYWN5L1JlbG9hZC5zdmciOwotICAgICAgICByZWZy
ZXNoU2l6ZSA9IDE2OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlZnJlc2hTb3VyY2UgPSAiSW1h
Z2VzL1JlbG9hZEZ1bGwuc3ZnIjsKLSAgICAgICAgcmVmcmVzaFNpemUgPSAxMzsKLSAgICB9Cisg
ICAgY29uc3RydWN0b3IocmVwcmVzZW50ZWRPYmplY3QpCisgICAgeworICAgICAgICBzdXBlcihy
ZXByZXNlbnRlZE9iamVjdCk7CiAKLSAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0
ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkYXRhYmFzZS10YWJs
ZS1yZWZyZXNoIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksIHJlZnJlc2hTb3Vy
Y2UsIHJlZnJlc2hTaXplLCByZWZyZXNoU2l6ZSk7Ci0gICAgdGhpcy5fcmVmcmVzaEJ1dHRvbk5h
dmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRp
b25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3JlZnJlc2hCdXR0b25DbGlja2VkLCB0aGlzKTsK
KyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImRhdGFiYXNlLXRhYmxlIik7CiAK
LSAgICB0aGlzLnVwZGF0ZSgpOwotfTsKKyAgICAgICAgdmFyIHJlZnJlc2hTb3VyY2UsIHJlZnJl
c2hTaXplOworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1Mp
IHsKKyAgICAgICAgICAgIHJlZnJlc2hTb3VyY2UgPSAiSW1hZ2VzL0xlZ2FjeS9SZWxvYWQuc3Zn
IjsKKyAgICAgICAgICAgIHJlZnJlc2hTaXplID0gMTY7CisgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICByZWZyZXNoU291cmNlID0gIkltYWdlcy9SZWxvYWRGdWxsLnN2ZyI7CisgICAgICAg
ICAgICByZWZyZXNoU2l6ZSA9IDEzOworICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5EYXRhYmFz
ZVRhYmxlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAiZGF0YWJhc2UtdGFibGUiOworICAg
ICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
LkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJkYXRhYmFzZS10YWJsZS1yZWZyZXNoIiwgV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksIHJlZnJlc2hTb3VyY2UsIHJlZnJlc2hTaXplLCByZWZy
ZXNoU2l6ZSk7CisgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25OYXZpZ2F0aW9uSXRlbS5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlj
a2VkLCB0aGlzLl9yZWZyZXNoQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5E
YXRhYmFzZVRhYmxlQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuRGF0YWJhc2VUYWJsZUNvbnRlbnRWaWV3LAotICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy51cGRhdGUoKTsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIFt0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0ZW1dOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFsbG93ZWROYXZpZ2F0aW9uU2lkZWJhclBhbmVscygp
CiAgICAgewogICAgICAgICByZXR1cm4gW1dlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5l
bC5pZGVudGlmaWVyXTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQor
ICAgIHVwZGF0ZSgpCiAgICAgewogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRhdGFi
YXNlLmV4ZWN1dGVTUUwoIlNFTEVDVCAqIEZST00gXCIiICsgdGhpcy5fZXNjYXBlVGFibGVOYW1l
KHRoaXMucmVwcmVzZW50ZWRPYmplY3QubmFtZSkgKyAiXCIiLCB0aGlzLl9xdWVyeUZpbmlzaGVk
LmJpbmQodGhpcyksIHRoaXMuX3F1ZXJ5RXJyb3IuYmluZCh0aGlzKSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX2RhdGFHcmlkKQogICAgICAgICAgICAgdGhpcy5fZGF0YUdy
aWQudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzYXZlVG9Db29raWU6IGZ1
bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZlVG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAg
Y29va2llLnR5cGUgPSBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkRhdGFiYXNl
VGFibGU7CiAgICAgICAgIGNvb2tpZS5ob3N0ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5ob3N0
OwogICAgICAgICBjb29raWUubmFtZSA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QubmFtZTsKICAg
ICAgICAgY29va2llLmRhdGFiYXNlID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kYXRhYmFzZS5u
YW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjcm9sbGFibGVFbGVtZW50cygpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKQogICAgICAgICAgICAgcmV0dXJuIFtdOwog
ICAgICAgICByZXR1cm4gW3RoaXMuX2RhdGFHcmlkLnNjcm9sbENvbnRhaW5lcl07Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfZXNjYXBlVGFibGVOYW1lOiBmdW5jdGlv
bihuYW1lKQorICAgIF9lc2NhcGVUYWJsZU5hbWUobmFtZSkKICAgICB7CiAgICAgICAgIHJldHVy
biBuYW1lLnJlcGxhY2UoL1wiL2csICJcIlwiIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcXVl
cnlGaW5pc2hlZDogZnVuY3Rpb24oY29sdW1uTmFtZXMsIHZhbHVlcykKKyAgICBfcXVlcnlGaW5p
c2hlZChjb2x1bW5OYW1lcywgdmFsdWVzKQogICAgIHsKICAgICAgICAgLy8gSXQgd291bGQgYmUg
bmljZSB0byBkbyBiZXR0ZXIgdGhhbiBjcmVhdGluZyBhIG5ldyBkYXRhIGdyaWQgZWFjaCB0aW1l
IHRoZSB0YWJsZSBpcyB1cGRhdGVkLCBidXQgdGhlIHRhYmxlIHVwZGF0aW5nCiAgICAgICAgIC8v
IGRvZXNuJ3QgaGFwcGVuIHZlcnkgZnJlcXVlbnRseS4gQWRkaXRpb25hbGx5LCB1c2luZyBEYXRh
R3JpZCdzIGNyZWF0ZVNvcnRhYmxlRGF0YUdyaWQgbWFrZXMgb3VyIGNvZGUgbXVjaCBjbGVhbmVy
IGFuZCBpdCBrbm93cwpAQCAtMTEzLDE1ICsxMDksMTUgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNl
VGFibGVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQpOwogICAgICAgICB0aGlzLl9kYXRhR3Jp
ZC51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9xdWVyeUVycm9yOiBmdW5j
dGlvbihlcnJvcikKKyAgICBfcXVlcnlFcnJvcihlcnJvcikKICAgICB7CiAgICAgICAgIHRoaXMu
ZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hp
bGQoV2ViSW5zcGVjdG9yLmNyZWF0ZU1lc3NhZ2VUZXh0VmlldyhXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkFuIGVycm9yIG9jY3VyZWQgdHJ5aW5nIHRvXG5yZWFkIHRoZSDigJwlc+KAnSB0YWJsZS4i
KS5mb3JtYXQodGhpcy5yZXByZXNlbnRlZE9iamVjdC5uYW1lKSwgdHJ1ZSkpOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3JlZnJlc2hCdXR0b25DbGlja2VkOiBmdW5jdGlvbigpCisgICAgX3JlZnJl
c2hCdXR0b25DbGlja2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMudXBkYXRlKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGl2
aWRlck5hdmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmpzCmluZGV4IDVlOTc2N2EwLi45MTBjMDQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
aXZpZGVyTmF2aWdhdGlvbkl0ZW0uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRGl2aWRlck5hdmlnYXRpb25JdGVtLmpzCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxOCArMjMsMTcgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
RGl2aWRlck5hdmlnYXRpb25JdGVtID0gZnVuY3Rpb24oaWRlbnRpZmllcikgewotICAgIFdlYklu
c3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMsIGlkZW50aWZpZXIpOwotfTsKLQotV2Vi
SW5zcGVjdG9yLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZSA9ICJkaXZpZGVy
IjsKK1dlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBEaXZpZGVyTmF2
aWdhdGlvbkl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0KK3sKKyAgICBj
b25zdHJ1Y3RvcihpZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgc3VwZXIoaWRlbnRpZmllcik7
CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRGl2aWRlck5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRpdmlkZXJOYXZpZ2F0aW9uSXRlbSwK
KyAgICAvLyBQcm90ZWN0ZWQKIAotICAgIC8vIFByaXZhdGUKLQotICAgIF9hZGRpdGlvbmFsQ2xh
c3NOYW1lczogW1dlYkluc3BlY3Rvci5EaXZpZGVyTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05h
bWVdLAorICAgIGdldCBhZGRpdGlvbmFsQ2xhc3NOYW1lcygpCisgICAgeworICAgICAgICByZXR1
cm4gWyJkaXZpZGVyIl07CisgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRpdmlkZXJOYXZpZ2F0
aW9uSXRlbS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVt
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5q
cwppbmRleCBhZTU3NmZmLi44NWM5ZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9GbGV4aWJsZVNwYWNlTmF2aWdhdGlvbkl0ZW0uanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRmxleGlibGVTcGFj
ZU5hdmlnYXRpb25JdGVtLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMywxOCArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRmxleGlibGVTcGFjZU5hdmlnYXRp
b25JdGVtID0gZnVuY3Rpb24oaWRlbnRpZmllcikgewotICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0
aW9uSXRlbS5jYWxsKHRoaXMsIGlkZW50aWZpZXIpOwotfTsKLQotV2ViSW5zcGVjdG9yLkZsZXhp
YmxlU3BhY2VOYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZSA9ICJmbGV4aWJsZS1zcGFjZSI7
CitXZWJJbnNwZWN0b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtID0gY2xhc3MgRmxleGli
bGVTcGFjZU5hdmlnYXRpb25JdGVtIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVt
Cit7CisgICAgY29uc3RydWN0b3IoaWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHN1cGVyKGlk
ZW50aWZpZXIpOworICAgIH0KIAotV2ViSW5zcGVjdG9yLkZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9u
SXRlbS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5GbGV4aWJs
ZVNwYWNlTmF2aWdhdGlvbkl0ZW0sCisgICAgLy8gUHJvdGVjdGVkCiAKLSAgICAvLyBQcml2YXRl
Ci0KLSAgICBfYWRkaXRpb25hbENsYXNzTmFtZXM6IFtXZWJJbnNwZWN0b3IuRmxleGlibGVTcGFj
ZU5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lXSwKKyAgICBnZXQgYWRkaXRpb25hbENsYXNz
TmFtZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFsiZmxleGlibGUtc3BhY2UiXTsKKyAgICB9
CiB9OwotCi1XZWJJbnNwZWN0b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRm9udFJl
c291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Gb250UmVzb3VyY2VDb250ZW50Vmlldy5qcwppbmRleCBiZTNhMWY1Li5iYTE4ODM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9G
b250UmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Gb250UmVzb3VyY2VDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzMgKzIzLDE1
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24ocmVzb3VyY2UpCitXZWJJbnNw
ZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBGb250UmVzb3VyY2VDb250ZW50
VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3CiB7Ci0gICAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcuY2FsbCh0aGlzLCByZXNvdXJjZSwgV2ViSW5z
cGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHRo
aXMuX3N0eWxlRWxlbWVudCA9IG51bGw7Ci0gICAgdGhpcy5fcHJldmlld0VsZW1lbnQgPSBudWxs
OwotfTsKLQotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3Ll91bmlxdWVGb250
SWRlbnRpZmllciA9IDA7Ci0KLVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5T
dHlsZUNsYXNzTmFtZSA9ICJmb250IjsKLVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50
Vmlldy5QcmV2aWV3RWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInByZXZpZXciOwotV2ViSW5zcGVj
dG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LkxpbmVFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAi
bGluZSI7Ci1XZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuQ29udGVudEVsZW1l
bnRTdHlsZUNsYXNzTmFtZSA9ICJjb250ZW50IjsKLVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VD
b250ZW50Vmlldy5NZXRyaWNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAibWV0cmljIjsKLVdlYklu
c3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5Ub3BNZXRyaWNFbGVtZW50U3R5bGVDbGFz
c05hbWUgPSAidG9wIjsKLVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5YSGVp
Z2h0TWV0cmljRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInhoZWlnaHQiOwotV2ViSW5zcGVjdG9y
LkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3Lk1pZGRsZU1ldHJpY0VsZW1lbnRTdHlsZUNsYXNzTmFt
ZSA9ICJtaWRkbGUiOwotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LkJhc2Vs
aW5lTWV0cmljRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImJhc2VsaW5lIjsKLVdlYkluc3BlY3Rv
ci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5Cb3R0b21NZXRyaWNFbGVtZW50U3R5bGVDbGFzc05h
bWUgPSAiYm90dG9tIjsKLVdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5QcmV2
aWV3TGluZXMgPSBbIkFCQ0RFRkdISUpLTE0iLCAiTk9QUVJTVFVWV1hZWiIsICJhYmNkZWZnaGlq
a2xtIiwgIm5vcHFyc3R1dnd4eXoiLCAiMTIzNDU2Nzg5MCJdOwotCi1XZWJJbnNwZWN0b3IuRm9u
dFJlc291cmNlQ29udGVudFZpZXcuTWF4aW11bUZvbnRTaXplID0gNzI7Ci1XZWJJbnNwZWN0b3Iu
Rm9udFJlc291cmNlQ29udGVudFZpZXcuTWluaW11bUZvbnRTaXplID0gMTI7CisgICAgY29uc3Ry
dWN0b3IocmVzb3VyY2UpCisgICAgeworICAgICAgICBzdXBlcihyZXNvdXJjZSwgImZvbnQiKTsK
IAotV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LAorICAg
ICAgICB0aGlzLl9zdHlsZUVsZW1lbnQgPSBudWxsOworICAgICAgICB0aGlzLl9wcmV2aWV3RWxl
bWVudCA9IG51bGw7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKQEAgLTU5LDE0ICs0MSwxNCBA
QCBXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnJlc291cmNlU2lkZWJhclBhbmVsLmlkZW50aWZpZXIsCiAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFyUGFuZWwuaWRlbnRpZmllcgog
ICAgICAgICBdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByZXZpZXdFbGVtZW50KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcmV2aWV3RWxlbWVudDsKLSAgICB9LAorICAgIH0K
IAotICAgIHNpemVUb0ZpdDogZnVuY3Rpb24oKQorICAgIHNpemVUb0ZpdCgpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX3ByZXZpZXdFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NzcsMTMgKzU5LDEzIEBAIFdlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy5fcHJldmlld0VsZW1lbnQub2Zmc2V0V2lk
dGggPD0gdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoKQogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb250ZW50QXZhaWxhYmxlOiBmdW5jdGlv
bihjb250ZW50LCBiYXNlNjRFbmNvZGVkKQorICAgIGNvbnRlbnRBdmFpbGFibGUoY29udGVudCwg
YmFzZTY0RW5jb2RlZCkKICAgICB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJl
bigpOwogCi0gICAgICAgIGNvbnN0IHVuaXF1ZUZvbnROYW1lID0gIldlYkluc3BlY3RvckZvbnRQ
cmV2aWV3IiArICgrK1dlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5fdW5pcXVl
Rm9udElkZW50aWZpZXIpOworICAgICAgICB2YXIgdW5pcXVlRm9udE5hbWUgPSAiV2ViSW5zcGVj
dG9yRm9udFByZXZpZXciICsgKCsrV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3
Ll91bmlxdWVGb250SWRlbnRpZmllcik7CiAKICAgICAgICAgdmFyIGZvcm1hdCA9ICIiOwogCkBA
IC0xMzYsMjggKzExOCwyOCBAQCBXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fcHJl
dmlld0VsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuc2l6ZVRvRml0KCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAg
IHsKICAgICAgICAgdGhpcy5zaXplVG9GaXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3du
OiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgLy8gQWRkIHRoZSBzdHls
ZSBlbGVtZW50IHNpbmNlIGl0IGlzIHJlbW92ZWQgd2hlbiBoaWRkZW4uCiAgICAgICAgIGlmICh0
aGlzLl9zdHlsZUVsZW1lbnQpCiAgICAgICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxk
KHRoaXMuX3N0eWxlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0
aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBzdHlsZSBl
bGVtZW50IHNvIGl0IHdpbGwgbm90IHN0aWNrIGFyb3VuZCB3aGVuIHRoaXMgY29udGVudCB2aWV3
IGlzIGRlc3Ryb3llZC4KICAgICAgICAgaWYgKHRoaXMuX3N0eWxlRWxlbWVudCAmJiB0aGlzLl9z
dHlsZUVsZW1lbnQucGFyZW50Tm9kZSkKICAgICAgICAgICAgIHRoaXMuX3N0eWxlRWxlbWVudC5w
YXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuX3N0eWxlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAg
Ly8gVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGJyb3dzZXIgZG9l
cyBub3Qgc2VuZCBhbnkgZXZlbnRzCiAgICAgICAgIC8vIHdoZW4gYSBAZm9udC1mYWNlIHJlc291
cmNlIGlzIGxvYWRlZC4gU28sIHdlIGFzc3VtZSBpdCBjb3VsZCBiZSBuZWVkZWQgdW50aWwKQEAg
LTE2OCw0ICsxNTAsMTggQEAgV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVu
dFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRW
aWV3LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5fdW5p
cXVlRm9udElkZW50aWZpZXIgPSAwOworCitXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVu
dFZpZXcuUHJldmlld0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJwcmV2aWV3IjsKK1dlYkluc3Bl
Y3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5MaW5lRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0g
ImxpbmUiOworV2ViSW5zcGVjdG9yLkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3LkNvbnRlbnRFbGVt
ZW50U3R5bGVDbGFzc05hbWUgPSAiY29udGVudCI7CitXZWJJbnNwZWN0b3IuRm9udFJlc291cmNl
Q29udGVudFZpZXcuTWV0cmljRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gIm1ldHJpYyI7CitXZWJJ
bnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuVG9wTWV0cmljRWxlbWVudFN0eWxlQ2xh
c3NOYW1lID0gInRvcCI7CitXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuWEhl
aWdodE1ldHJpY0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJ4aGVpZ2h0IjsKK1dlYkluc3BlY3Rv
ci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5NaWRkbGVNZXRyaWNFbGVtZW50U3R5bGVDbGFzc05h
bWUgPSAibWlkZGxlIjsKK1dlYkluc3BlY3Rvci5Gb250UmVzb3VyY2VDb250ZW50Vmlldy5CYXNl
bGluZU1ldHJpY0VsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJiYXNlbGluZSI7CitXZWJJbnNwZWN0
b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuQm90dG9tTWV0cmljRWxlbWVudFN0eWxlQ2xhc3NO
YW1lID0gImJvdHRvbSI7CitXZWJJbnNwZWN0b3IuRm9udFJlc291cmNlQ29udGVudFZpZXcuUHJl
dmlld0xpbmVzID0gWyJBQkNERUZHSElKS0xNIiwgIk5PUFFSU1RVVldYWVoiLCAiYWJjZGVmZ2hp
amtsbSIsICJub3BxcnN0dXZ3eHl6IiwgIjEyMzQ1Njc4OTAiXTsKKworV2ViSW5zcGVjdG9yLkZv
bnRSZXNvdXJjZUNvbnRlbnRWaWV3Lk1heGltdW1Gb250U2l6ZSA9IDcyOworV2ViSW5zcGVjdG9y
LkZvbnRSZXNvdXJjZUNvbnRlbnRWaWV3Lk1pbmltdW1Gb250U2l6ZSA9IDEyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1l
Q29udGVudFZpZXcuanMKaW5kZXggNDg0NWY5OS4uYjI5N2RjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVDb250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9GcmFtZUNvbnRl
bnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMyw0NSArMjMsMzggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50VmlldyA9IGZ1bmN0aW9uKGZy
YW1lKQorV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcgPSBjbGFzcyBGcmFtZUNvbnRlbnRW
aWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50VmlldwogewotICAgIFdlYklu
c3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcuY2FsbCh0aGlzLCBmcmFtZSk7Ci0KLSAgICB0aGlz
Ll9mcmFtZSA9IGZyYW1lOwotCi0gICAgZnVuY3Rpb24gY3JlYXRlUGF0aENvbXBvbmVudChkaXNw
bGF5TmFtZSwgY2xhc3NOYW1lLCBpZGVudGlmaWVyKQorICAgIGNvbnN0cnVjdG9yKGZyYW1lKQog
ICAgIHsKLSAgICAgICAgdmFyIHBhdGhDb21wb25lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkhpZXJh
cmNoaWNhbFBhdGhDb21wb25lbnQoZGlzcGxheU5hbWUsIGNsYXNzTmFtZSwgaWRlbnRpZmllciwg
ZmFsc2UsIHRydWUpOwotICAgICAgICBwYXRoQ29tcG9uZW50LmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuRXZlbnQuU2libGluZ1dhc1NlbGVj
dGVkLCB0aGlzLl9wYXRoQ29tcG9uZW50U2VsZWN0ZWQsIHRoaXMpOwotICAgICAgICByZXR1cm4g
cGF0aENvbXBvbmVudDsKLSAgICB9CisgICAgICAgIHN1cGVyKGZyYW1lKTsKIAotICAgIHRoaXMu
X3NvdXJjZUNvZGVQYXRoQ29tcG9uZW50ID0gY3JlYXRlUGF0aENvbXBvbmVudC5jYWxsKHRoaXMs
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU291cmNlIENvZGUiKSwgV2ViSW5zcGVjdG9yLkZyYW1l
Q29udGVudFZpZXcuU291cmNlQ29kZUljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLkZy
YW1lQ29udGVudFZpZXcuU291cmNlQ29kZUlkZW50aWZpZXIpOwotICAgIHRoaXMuX2RvbVRyZWVQ
YXRoQ29tcG9uZW50ID0gY3JlYXRlUGF0aENvbXBvbmVudC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiRE9NIFRyZWUiKSwgV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcuRE9N
VHJlZUljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcuRE9N
VHJlZUlkZW50aWZpZXIpOworICAgICAgICB0aGlzLl9mcmFtZSA9IGZyYW1lOwogCi0gICAgdGhp
cy5fc291cmNlQ29kZVBhdGhDb21wb25lbnQubmV4dFNpYmxpbmcgPSB0aGlzLl9kb21UcmVlUGF0
aENvbXBvbmVudDsKLSAgICB0aGlzLl9kb21UcmVlUGF0aENvbXBvbmVudC5wcmV2aW91c1NpYmxp
bmcgPSB0aGlzLl9zb3VyY2VDb2RlUGF0aENvbXBvbmVudDsKKyAgICAgICAgZnVuY3Rpb24gY3Jl
YXRlUGF0aENvbXBvbmVudChkaXNwbGF5TmFtZSwgY2xhc3NOYW1lLCBpZGVudGlmaWVyKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgcGF0aENvbXBvbmVudCA9IG5ldyBXZWJJbnNwZWN0b3Iu
SGllcmFyY2hpY2FsUGF0aENvbXBvbmVudChkaXNwbGF5TmFtZSwgY2xhc3NOYW1lLCBpZGVudGlm
aWVyLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICBwYXRoQ29tcG9uZW50LmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQuRXZlbnQuU2libGlu
Z1dhc1NlbGVjdGVkLCB0aGlzLl9wYXRoQ29tcG9uZW50U2VsZWN0ZWQsIHRoaXMpOworICAgICAg
ICAgICAgcmV0dXJuIHBhdGhDb21wb25lbnQ7CisgICAgICAgIH0KIAotICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NO
YW1lKTsKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZVBhdGhDb21wb25lbnQgPSBjcmVhdGVQYXRo
Q29tcG9uZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTb3VyY2UgQ29kZSIp
LCBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5Tb3VyY2VDb2RlSWNvblN0eWxlQ2xhc3NO
YW1lLCBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5Tb3VyY2VDb2RlSWRlbnRpZmllcik7
CisgICAgICAgIHRoaXMuX2RvbVRyZWVQYXRoQ29tcG9uZW50ID0gY3JlYXRlUGF0aENvbXBvbmVu
dC5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiRE9NIFRyZWUiKSwgV2ViSW5zcGVj
dG9yLkZyYW1lQ29udGVudFZpZXcuRE9NVHJlZUljb25TdHlsZUNsYXNzTmFtZSwgV2ViSW5zcGVj
dG9yLkZyYW1lQ29udGVudFZpZXcuRE9NVHJlZUlkZW50aWZpZXIpOwogCi0gICAgdGhpcy5fY3Vy
cmVudENvbnRlbnRWaWV3U2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygiZnJhbWUt
Y3VycmVudC12aWV3LSIgKyB0aGlzLl9mcmFtZS51cmwuaGFzaCwgV2ViSW5zcGVjdG9yLkZyYW1l
Q29udGVudFZpZXcuRE9NVHJlZUlkZW50aWZpZXIpOwotfTsKKyAgICAgICAgdGhpcy5fc291cmNl
Q29kZVBhdGhDb21wb25lbnQubmV4dFNpYmxpbmcgPSB0aGlzLl9kb21UcmVlUGF0aENvbXBvbmVu
dDsKKyAgICAgICAgdGhpcy5fZG9tVHJlZVBhdGhDb21wb25lbnQucHJldmlvdXNTaWJsaW5nID0g
dGhpcy5fc291cmNlQ29kZVBhdGhDb21wb25lbnQ7CiAKLVdlYkluc3BlY3Rvci5GcmFtZUNvbnRl
bnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImZyYW1lIjsKLVdlYkluc3BlY3Rvci5GcmFtZUNvbnRl
bnRWaWV3LlNvdXJjZUNvZGVJY29uU3R5bGVDbGFzc05hbWUgPSAic291cmNlLWNvZGUtaWNvbiI7
Ci1XZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5Tb3VyY2VDb2RlSWRlbnRpZmllciA9ICJz
b3VyY2UtY29kZSI7Ci1XZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5ET01UcmVlSWNvblN0
eWxlQ2xhc3NOYW1lID0gImRvbS10cmVlLWljb24iOwotV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVu
dFZpZXcuRE9NVHJlZUlkZW50aWZpZXIgPSAiZG9tLXRyZWUiOworICAgICAgICB0aGlzLmVsZW1l
bnQuY2xhc3NMaXN0LmFkZCgiZnJhbWUiKTsKIAotV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRnJhbWVDb250
ZW50VmlldywKKyAgICAgICAgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3U2V0dGluZyA9IG5ldyBX
ZWJJbnNwZWN0b3IuU2V0dGluZygiZnJhbWUtY3VycmVudC12aWV3LSIgKyB0aGlzLl9mcmFtZS51
cmwuaGFzaCwgV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcuRE9NVHJlZUlkZW50aWZpZXIp
OworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IGZyYW1lKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9mcmFtZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rp
b25QYXRoQ29tcG9uZW50cygpCiAgICAgewpAQCAtNzEsOSArNjQsOSBAQCBXZWJJbnNwZWN0b3Iu
RnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEFwcGVuZCB0aGUgY3Vy
cmVudCB2aWV3J3MgcGF0aCBjb21wb25lbnRzIHRvIHRoZSBwYXRoIGNvbXBvbmVudCByZXByZXNl
bnRpbmcgdGhlIGN1cnJlbnQgdmlldy4KICAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBbdGhpcy5f
cGF0aENvbXBvbmVudEZvckNvbnRlbnRWaWV3KHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1
cnJlbnRDb250ZW50VmlldyldOwogICAgICAgICByZXR1cm4gY29tcG9uZW50cy5jb25jYXQodGhp
cy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3LnNlbGVjdGlvblBhdGhD
b21wb25lbnRzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAg
c2hvd24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50Vmlldy5w
cm90b3R5cGUuc2hvd24uY2FsbCh0aGlzKTsKIApAQCAtODEsMzggKzc0LDM4IEBAIFdlYkluc3Bl
Y3Rvci5GcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKHRoaXMuX2N1cnJl
bnRDb250ZW50Vmlld1NldHRpbmcudmFsdWUpOwotICAgIH0sCisgICAgfQogCi0gICAgY2xvc2Vk
OiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5D
bHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZC5jYWxsKHRoaXMpOwogCiAgICAgICAg
IHRoaXMuX3Nob3duSW5pdGlhbENvbnRlbnQgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAg
IHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAgIHNhdmVUb0Nvb2tpZShjb29raWUp
CiAgICAgewogICAgICAgICBjb29raWUudHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nv
b2tpZVR5cGUuUmVzb3VyY2U7CiAgICAgICAgIGNvb2tpZS5zdWJ2aWV3ID0gdGhpcy5fY3VycmVu
dENvbnRlbnRWaWV3U2V0dGluZy52YWx1ZTsKICAgICAgICAgaWYgKCF0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LmlzTWFpbkZyYW1lKCkpCiAgICAgICAgICAgICBjb29raWUudXJsID0gdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC51cmw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXN0b3JlRnJvbUNvb2tp
ZTogZnVuY3Rpb24oY29va2llKQorICAgIHJlc3RvcmVGcm9tQ29va2llKGNvb2tpZSkKICAgICB7
CiAgICAgICAgIHZhciBzaG93blZpZXcgPSB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVudGlm
aWVyKGNvb2tpZS5zdWJ2aWV3KTsKICAgICAgICAgaWYgKCJsaW5lTnVtYmVyIiBpbiBjb29raWUg
JiYgImNvbHVtbk51bWJlciIgaW4gY29va2llKQogICAgICAgICAgICAgdGhpcy5zaG93U291cmNl
Q29kZShuZXcgV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVQb3NpdGlvbihjb29raWUubGluZU51bWJl
ciwgY29va2llLmNvbHVtbk51bWJlcikpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd1Jlc291
cmNlOiBmdW5jdGlvbigpCisgICAgc2hvd1Jlc291cmNlKCkKICAgICB7CiAgICAgICAgIHRoaXMu
X3Nob3duSW5pdGlhbENvbnRlbnQgPSB0cnVlOwogCiAgICAgICAgIHJldHVybiB0aGlzLl9zaG93
Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKFdlYkluc3BlY3Rvci5GcmFtZUNvbnRlbnRWaWV3LlNv
dXJjZUNvZGVJZGVudGlmaWVyKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3dTb3VyY2VDb2Rl
OiBmdW5jdGlvbihwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZv
cm1hdHRlZCkKKyAgICBzaG93U291cmNlQ29kZShwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VU
b1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZUNv
bnRlbnRWaWV3ID0gdGhpcy5zaG93UmVzb3VyY2UoKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
cmVzb3VyY2VDb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0
ZXJDb250ZW50Vmlldyk7CkBAIC0xMjAsOSArMTEzLDkgQEAgV2ViSW5zcGVjdG9yLkZyYW1lQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKICAgICAg
ICAgcmV0dXJuIHJlc291cmNlQ29udGVudFZpZXcuc2hvd1Jlc3BvbnNlKHBvc2l0aW9uVG9SZXZl
YWwsIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHNob3dET01UcmVlOiBmdW5jdGlvbihkb21Ob2RlVG9TZWxlY3QsIHByZXZlbnRGb2N1
c0NoYW5nZSkKKyAgICBzaG93RE9NVHJlZShkb21Ob2RlVG9TZWxlY3QsIHByZXZlbnRGb2N1c0No
YW5nZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3duSW5pdGlhbENvbnRlbnQgPSB0cnVlOwog
CkBAIC0xMzQsMTEgKzEyNywxMSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIGRvbVRyZWVDb250ZW50Vmlldy5zZWxlY3RBbmRSZXZlYWxET01O
b2RlKGRvbU5vZGVUb1NlbGVjdCwgcHJldmVudEZvY3VzQ2hhbmdlKTsKIAogICAgICAgICByZXR1
cm4gZG9tVHJlZUNvbnRlbnRWaWV3OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQog
Ci0gICAgX3BhdGhDb21wb25lbnRGb3JDb250ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcp
CisgICAgX3BhdGhDb21wb25lbnRGb3JDb250ZW50Vmlldyhjb250ZW50VmlldykKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3KTsKICAgICAgICAgaWYgKCFjb250ZW50
VmlldykKQEAgLTE0OSw5ICsxNDIsOSBAQCBXZWJJbnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZG9tVHJlZVBhdGhDb21wb25l
bnQ7CiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gY29udGVudFZpZXcuIik7CiAgICAg
ICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgX2lkZW50aWZpZXJGb3JDb250
ZW50VmlldzogZnVuY3Rpb24oY29udGVudFZpZXcpCisgICAgX2lkZW50aWZpZXJGb3JDb250ZW50
Vmlldyhjb250ZW50VmlldykKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRW
aWV3KTsKICAgICAgICAgaWYgKCFjb250ZW50VmlldykKQEAgLTE2Miw5ICsxNTUsOSBAQCBXZWJJ
bnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm4gV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcuRE9NVHJlZUlkZW50aWZpZXI7CiAgICAg
ICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gY29udGVudFZpZXcuIik7CiAgICAgICAgIHJldHVy
biBudWxsOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZp
ZXI6IGZ1bmN0aW9uKGlkZW50aWZpZXIpCisgICAgX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZp
ZXIoaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIHZhciByZXByZXNlbnRlZE9iamVjdFRvU2hv
dyA9IG51bGw7CiAKQEAgLTE4NCwxMiArMTc3LDE1IEBAIFdlYkluc3BlY3Rvci5GcmFtZUNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3U2V0
dGluZy52YWx1ZSA9IGlkZW50aWZpZXI7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuY29udGVudFZp
ZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3Rm9yUmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50
ZWRPYmplY3RUb1Nob3cpOwotICAgIH0sCisgICAgfQogCi0gICAgX3BhdGhDb21wb25lbnRTZWxl
Y3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3BhdGhDb21wb25lbnRTZWxlY3RlZChldmVudCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dDb250ZW50Vmlld0ZvcklkZW50aWZpZXIoZXZlbnQu
ZGF0YS5wYXRoQ29tcG9uZW50LnJlcHJlc2VudGVkT2JqZWN0KTsKICAgICB9CiB9OwogCi1XZWJJ
bnNwZWN0b3IuRnJhbWVDb250ZW50Vmlldy5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLkNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuRnJhbWVDb250
ZW50Vmlldy5Tb3VyY2VDb2RlSWNvblN0eWxlQ2xhc3NOYW1lID0gInNvdXJjZS1jb2RlLWljb24i
OworV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcuU291cmNlQ29kZUlkZW50aWZpZXIgPSAi
c291cmNlLWNvZGUiOworV2ViSW5zcGVjdG9yLkZyYW1lQ29udGVudFZpZXcuRE9NVHJlZUljb25T
dHlsZUNsYXNzTmFtZSA9ICJkb20tdHJlZS1pY29uIjsKK1dlYkluc3BlY3Rvci5GcmFtZUNvbnRl
bnRWaWV3LkRPTVRyZWVJZGVudGlmaWVyID0gImRvbS10cmVlIjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ZyYW1lRE9NVHJlZUNvbnRlbnRW
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVE
T01UcmVlQ29udGVudFZpZXcuanMKaW5kZXggYzhjZWM2ZS4uM2Q2ODE5NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRnJhbWVET01UcmVlQ29u
dGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRnJhbWVET01UcmVlQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDUxICsyMyw0OCBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5GcmFtZURPTVRy
ZWVDb250ZW50VmlldyA9IGZ1bmN0aW9uKGRvbVRyZWUpCitXZWJJbnNwZWN0b3IuRnJhbWVET01U
cmVlQ29udGVudFZpZXcgPSBjbGFzcyBGcmFtZURPTVRyZWVDb250ZW50VmlldyBleHRlbmRzIFdl
Ykluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcKIHsKLSAgICBjb25zb2xlLmFzc2VydChkb21U
cmVlKTsKLQotICAgIFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcuY2FsbCh0aGlzLCBk
b21UcmVlKTsKLQotICAgIHRoaXMuX2RvbVRyZWUgPSBkb21UcmVlOwotICAgIHRoaXMuX2RvbVRy
ZWUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRE9NVHJlZS5FdmVudC5Sb290RE9NTm9k
ZUludmFsaWRhdGVkLCB0aGlzLl9yb290RE9NTm9kZUludmFsaWRhdGVkLCB0aGlzKTsKKyAgICBj
b25zdHJ1Y3Rvcihkb21UcmVlKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tVHJl
ZSk7CiAKLSAgICB0aGlzLl9yZXF1ZXN0Um9vdERPTU5vZGUoKTsKLX07CisgICAgICAgIHN1cGVy
KGRvbVRyZWUpOwogCisgICAgICAgIHRoaXMuX2RvbVRyZWUgPSBkb21UcmVlOworICAgICAgICB0
aGlzLl9kb21UcmVlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRPTVRyZWUuRXZlbnQu
Um9vdERPTU5vZGVJbnZhbGlkYXRlZCwgdGhpcy5fcm9vdERPTU5vZGVJbnZhbGlkYXRlZCwgdGhp
cyk7CiAKLVdlYkluc3BlY3Rvci5GcmFtZURPTVRyZWVDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5GcmFtZURPTVRyZWVDb250ZW50VmlldywK
LSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5ET01UcmVlQ29udGVudFZpZXcucHJvdG90eXBl
LAorICAgICAgICB0aGlzLl9yZXF1ZXN0Um9vdERPTU5vZGUoKTsKKyAgICB9CiAKICAgICAvLyBQ
dWJsaWMKIAogICAgIGdldCBhbGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIFtXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuaWRlbnRp
Zmllcl07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZG9tVHJlZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fZG9tVHJlZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNsb3NlZDogZnVu
Y3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9kb21UcmVlLnJlbW92
ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5E
T01UcmVlQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZC5jYWxsKHRoaXMpOwotICAgIH0sCisg
ICAgfQogCi0gICAgZ2V0U2VhcmNoQ29udGV4dE5vZGVzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAg
ICBnZXRTZWFyY2hDb250ZXh0Tm9kZXMoY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9k
b21UcmVlLnJlcXVlc3RSb290RE9NTm9kZShmdW5jdGlvbihyb290RE9NTm9kZSkgewogICAgICAg
ICAgICAgY2FsbGJhY2soW3Jvb3RET01Ob2RlLmlkXSk7CiAgICAgICAgIH0pOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Jvb3RET01Ob2RlQXZhaWxhYmxlOiBmdW5j
dGlvbihyb290RE9NTm9kZSkKKyAgICBfcm9vdERPTU5vZGVBdmFpbGFibGUocm9vdERPTU5vZGUp
CiAgICAgewogICAgICAgICB0aGlzLmRvbVRyZWVPdXRsaW5lLnJvb3RET01Ob2RlID0gcm9vdERP
TU5vZGU7CiAKQEAgLTc3LDE0ICs3NCwxNCBAQCBXZWJJbnNwZWN0b3IuRnJhbWVET01UcmVlQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcmVzdG9y
ZVNlbGVjdGVkTm9kZUFmdGVyVXBkYXRlKHRoaXMuX2RvbVRyZWUuZnJhbWUudXJsLCByb290RE9N
Tm9kZS5ib2R5IHx8IHJvb3RET01Ob2RlLmRvY3VtZW50RWxlbWVudCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcm9vdERPTU5vZGVJbnZhbGlkYXRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Jv
b3RET01Ob2RlSW52YWxpZGF0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9yZXF1ZXN0
Um9vdERPTU5vZGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXF1ZXN0Um9vdERPTU5vZGU6
IGZ1bmN0aW9uKCkKKyAgICBfcmVxdWVzdFJvb3RET01Ob2RlKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2RvbVRyZWUucmVxdWVzdFJvb3RET01Ob2RlKHRoaXMuX3Jvb3RET01Ob2RlQXZhaWxhYmxl
LmJpbmQodGhpcykpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0dlbmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJpY1Jlc291cmNlQ29udGVu
dFZpZXcuanMKaW5kZXggMmVhODczOC4uYmNhN2I2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJpY1Jlc291cmNlQ29udGVudFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvR2VuZXJp
Y1Jlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE1ICsyMywxMCBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5HZW5lcmljUmVzb3VyY2VD
b250ZW50VmlldyA9IGZ1bmN0aW9uKHJlc291cmNlKQorV2ViSW5zcGVjdG9yLkdlbmVyaWNSZXNv
dXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgR2VuZXJpY1Jlc291cmNlQ29udGVudFZpZXcgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVu
dFZpZXcuY2FsbCh0aGlzLCByZXNvdXJjZSwgV2ViSW5zcGVjdG9yLkdlbmVyaWNSZXNvdXJjZUNv
bnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICBjb25zdHJ1Y3RvcihyZXNvdXJjZSkKKyAg
ICB7CisgICAgICAgIHN1cGVyKHJlc291cmNlLCAiZ2VuZXJpYyIpOworICAgIH0KIH07Ci0KLVdl
Ykluc3BlY3Rvci5HZW5lcmljUmVzb3VyY2VDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSA9ICJn
ZW5lcmljIjsKLQotV2ViSW5zcGVjdG9yLkdlbmVyaWNSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkdlbmVyaWNSZXNvdXJjZUNv
bnRlbnRWaWV3Ci19OwotCi1XZWJJbnNwZWN0b3IuR2VuZXJpY1Jlc291cmNlQ29udGVudFZpZXcu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LnBy
b3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0ltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5qcwppbmRleCAy
Nzk2NzhjLi45ZGVlNjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9JbWFnZVJlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3
LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywyNiArMjMsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3ID0gZnVuY3Rpb24o
cmVzb3VyY2UpCitXZWJJbnNwZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3Mg
SW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29u
dGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5jYWxsKHRo
aXMsIHJlc291cmNlLCBXZWJJbnNwZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LlN0eWxl
Q2xhc3NOYW1lKTsKLQotICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9IG51bGw7Ci19OwotCi1XZWJJ
bnNwZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImltYWdl
IjsKKyAgICBjb25zdHJ1Y3RvcihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlc291
cmNlLCAiaW1hZ2UiKTsKIAotV2ViSW5zcGVjdG9yLkltYWdlUmVzb3VyY2VDb250ZW50Vmlldy5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5JbWFnZVJlc291cmNl
Q29udGVudFZpZXcsCisgICAgICAgIHRoaXMuX2ltYWdlRWxlbWVudCA9IG51bGw7CisgICAgfQog
CiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgaW1hZ2VFbGVtZW50KCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9pbWFnZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjb250ZW50
QXZhaWxhYmxlOiBmdW5jdGlvbihjb250ZW50LCBiYXNlNjRFbmNvZGVkKQorICAgIGNvbnRlbnRB
dmFpbGFibGUoY29udGVudCwgYmFzZTY0RW5jb2RlZCkKICAgICB7CiAgICAgICAgIHRoaXMuZWxl
bWVudC5yZW1vdmVDaGlsZHJlbigpOwogCkBAIC01NCw1ICs1MSwzIEBAIFdlYkluc3BlY3Rvci5J
bWFnZVJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5faW1hZ2VFbGVtZW50KTsKICAgICB9CiB9OwotCi1XZWJJbnNw
ZWN0b3IuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRldGVybWluYXRlUHJvZ3Jl
c3NTcGlubmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
SW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5qcwppbmRleCA1YmYyZDc2Li41MmEwZjQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRl
dGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0luZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE5
ICsyMywxNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NTcGlubmVyID0gZnVuY3Rpb24oKQorV2Vi
SW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIgPSBjbGFzcyBJbmRldGVybWlu
YXRlUHJvZ3Jlc3NTcGlubmVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
LQotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJv
Z3Jlc3NTcGlubmVyLlN0eWxlQ2xhc3NOYW1lOwotfTsKLQotV2ViSW5zcGVjdG9yLkluZGV0ZXJt
aW5hdGVQcm9ncmVzc1NwaW5uZXIuU3R5bGVDbGFzc05hbWUgPSAiaW5kZXRlcm1pbmF0ZS1wcm9n
cmVzcy1zcGlubmVyIjsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBlcigp
OwogCi1XZWJJbnNwZWN0b3IuSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJvZ3Jlc3NT
cGlubmVyLAorICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gImluZGV0ZXJtaW5hdGUt
cHJvZ3Jlc3Mtc3Bpbm5lciI7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKQEAgLTQ0LDUgKzQw
LDMgQEAgV2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXIucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKICAgICB9CiB9OwotCi1XZWJJbnNw
ZWN0b3IuSW5kZXRlcm1pbmF0ZVByb2dyZXNzU3Bpbm5lci5wcm90b3R5cGUuX19wcm90b19fID0g
V2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VFbnRyeURhdGFHcmlk
Tm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4
ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2RlLmpzCmluZGV4IGQ4MzlmZmMuLmRlMDJiZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4
ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2RlLmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTIzLDMwICsyMywyOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VFbnRyeURhdGFHcmlkTm9kZSA9IGZ1bmN0
aW9uKGVudHJ5KQorV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZUVudHJ5RGF0YUdyaWROb2Rl
ID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlRW50cnlEYXRhR3JpZE5vZGUgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWROb2RlCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxs
KHRoaXMsIGVudHJ5KTsKLQotICAgIHRoaXMuX2VudHJ5ID0gZW50cnk7Ci19OworICAgIGNvbnN0
cnVjdG9yKGVudHJ5KQorICAgIHsKKyAgICAgICAgc3VwZXIoZW50cnkpOwogCi1XZWJJbnNwZWN0
b3IuSW5kZXhlZERhdGFiYXNlRW50cnlEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlRW50cnlEYXRhR3JpZE5vZGUs
Ci0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZSwKKyAg
ICAgICAgdGhpcy5fZW50cnkgPSBlbnRyeTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAg
IGdldCBlbnRyeSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZW50cnk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBjcmVhdGVDZWxsQ29udGVudDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmll
ciwgY2VsbCkKKyAgICBjcmVhdGVDZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQog
ICAgIHsKICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5fZW50cnlbY29sdW1uSWRlbnRpZmllcl07
CiAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qp
CiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZU9i
amVjdFRyZWVPckZvcm1hdHRlZFZhbHVlRm9yUmVtb3RlT2JqZWN0KHZhbHVlLCBudWxsLCB0cnVl
KTsKIAotICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUu
Y3JlYXRlQ2VsbENvbnRlbnQuY2FsbCh0aGlzLCBjb2x1bW5JZGVudGlmaWVyLCBjZWxsKTsKKyAg
ICAgICAgcmV0dXJuIHN1cGVyLmNyZWF0ZUNlbGxDb250ZW50KGNvbHVtbklkZW50aWZpZXIsIGNl
bGwpOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSW5kZXhlZERhdGFiYXNl
T2JqZWN0U3RvcmVDb250ZW50Vmlldy5qcwppbmRleCAxNDVjOTEwLi5mODA5Y2YyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9JbmRleGVkRGF0
YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZp
ZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsMTA0ICsyMywxMDAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50
VmlldyA9IGZ1bmN0aW9uKG9iamVjdFN0b3JlT3JJbmRleCkKK1dlYkluc3BlY3Rvci5JbmRleGVk
RGF0YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3ID0gY2xhc3MgSW5kZXhlZERhdGFiYXNlT2Jq
ZWN0U3RvcmVDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldwogewot
ICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5jYWxsKHRoaXMsIG9iamVjdFN0b3JlT3JJbmRl
eCk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuSW5kZXhl
ZERhdGFiYXNlT2JqZWN0U3RvcmVDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICBp
ZiAob2JqZWN0U3RvcmVPckluZGV4IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRh
YmFzZU9iamVjdFN0b3JlKSB7Ci0gICAgICAgIHRoaXMuX29iamVjdFN0b3JlID0gb2JqZWN0U3Rv
cmVPckluZGV4OwotICAgICAgICB0aGlzLl9vYmplY3RTdG9yZUluZGV4ID0gbnVsbDsKLSAgICB9
IGVsc2UgaWYgKG9iamVjdFN0b3JlT3JJbmRleCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5JbmRl
eGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4KSB7Ci0gICAgICAgIHRoaXMuX29iamVjdFN0b3Jl
ID0gb2JqZWN0U3RvcmVPckluZGV4LnBhcmVudE9iamVjdFN0b3JlOwotICAgICAgICB0aGlzLl9v
YmplY3RTdG9yZUluZGV4ID0gb2JqZWN0U3RvcmVPckluZGV4OwotICAgIH0KLQotICAgIGZ1bmN0
aW9uIGRpc3BsYXlLZXlQYXRoKGtleVBhdGgpCisgICAgY29uc3RydWN0b3Iob2JqZWN0U3RvcmVP
ckluZGV4KQogICAgIHsKLSAgICAgICAgaWYgKCFrZXlQYXRoKQotICAgICAgICAgICAgcmV0dXJu
ICIiOwotICAgICAgICBpZiAoa2V5UGF0aCBpbnN0YW5jZW9mIEFycmF5KQotICAgICAgICAgICAg
cmV0dXJuIGtleVBhdGguam9pbihXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIiwgIikpOwotICAgICAg
ICBjb25zb2xlLmFzc2VydChrZXlQYXRoIGluc3RhbmNlb2YgU3RyaW5nIHx8IHR5cGVvZiBrZXlQ
YXRoID09PSAic3RyaW5nIik7Ci0gICAgICAgIHJldHVybiBrZXlQYXRoOwotICAgIH0KKyAgICAg
ICAgc3VwZXIob2JqZWN0U3RvcmVPckluZGV4KTsKIAotICAgIHZhciBkaXNwbGF5UHJpbWFyeUtl
eVBhdGggPSBkaXNwbGF5S2V5UGF0aCh0aGlzLl9vYmplY3RTdG9yZS5rZXlQYXRoKTsKLQotICAg
IHZhciBjb2x1bW5JbmZvID0gewotICAgICAgICBwcmltYXJ5S2V5OiB7dGl0bGU6IGRpc3BsYXlQ
cmltYXJ5S2V5UGF0aCA/IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJpbWFyeSBLZXkgXHUyMDE0
ICVzIikuZm9ybWF0KGRpc3BsYXlQcmltYXJ5S2V5UGF0aCkgOiBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlByaW1hcnkgS2V5Iil9LAotICAgICAgICBrZXk6IHt9LAotICAgICAgICB2YWx1ZToge3Rp
dGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZhbHVlIil9Ci0gICAgfTsKLQotICAgIGlmICh0
aGlzLl9vYmplY3RTdG9yZUluZGV4KSB7Ci0gICAgICAgIC8vIFdoZW4gdGhlcmUgaXMgYW4gaW5k
ZXgsIHNob3cgdGhlIGtleSBwYXRoIGluIHRoZSBLZXkgY29sdW1uLgotICAgICAgICB2YXIgZGlz
cGxheUluZGV4S2V5UGF0aCA9IGRpc3BsYXlLZXlQYXRoKHRoaXMuX29iamVjdFN0b3JlSW5kZXgu
a2V5UGF0aCk7Ci0gICAgICAgIGNvbHVtbkluZm8ua2V5LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCJJbmRleCBLZXkgXHUyMDE0ICVzIikuZm9ybWF0KGRpc3BsYXlJbmRleEtleVBhdGgp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIE9ubHkgbmVlZCB0byBzaG93IEtleSBmb3IgaW5k
ZXhlcyAtLSBpdCBpcyB0aGUgc2FtZSBhcyBQcmltYXJ5IEtleQotICAgICAgICAvLyB3aGVuIHRo
ZXJlIGlzIG5vIGluZGV4IGJlaW5nIHVzZWQuCi0gICAgICAgIGRlbGV0ZSBjb2x1bW5JbmZvLmtl
eTsKLSAgICB9CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbmRleGVkLWRh
dGFiYXNlLW9iamVjdC1zdG9yZSIpOwogCi0gICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkKGNvbHVtbkluZm8pOwotICAgIHRoaXMuX2RhdGFHcmlkLnNjcm9sbENv
bnRhaW5lci5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9kYXRhR3JpZFNjcm9sbGVk
LmJpbmQodGhpcykpOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3Jp
ZC5lbGVtZW50KTsKKyAgICAgICAgaWYgKG9iamVjdFN0b3JlT3JJbmRleCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZSkgeworICAgICAgICAgICAgdGhp
cy5fb2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZU9ySW5kZXg7CisgICAgICAgICAgICB0aGlzLl9v
YmplY3RTdG9yZUluZGV4ID0gbnVsbDsKKyAgICAgICAgfSBlbHNlIGlmIChvYmplY3RTdG9yZU9y
SW5kZXggaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJ
bmRleCkgeworICAgICAgICAgICAgdGhpcy5fb2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZU9ySW5k
ZXgucGFyZW50T2JqZWN0U3RvcmU7CisgICAgICAgICAgICB0aGlzLl9vYmplY3RTdG9yZUluZGV4
ID0gb2JqZWN0U3RvcmVPckluZGV4OworICAgICAgICB9CiAKLSAgICB0aGlzLl9lbnRyaWVzID0g
W107CisgICAgICAgIGZ1bmN0aW9uIGRpc3BsYXlLZXlQYXRoKGtleVBhdGgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICgha2V5UGF0aCkKKyAgICAgICAgICAgICAgICByZXR1cm4gIiI7Cisg
ICAgICAgICAgICBpZiAoa2V5UGF0aCBpbnN0YW5jZW9mIEFycmF5KQorICAgICAgICAgICAgICAg
IHJldHVybiBrZXlQYXRoLmpvaW4oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIsICIpKTsKKyAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGtleVBhdGggaW5zdGFuY2VvZiBTdHJpbmcgfHwgdHlwZW9m
IGtleVBhdGggPT09ICJzdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBrZXlQYXRoOworICAg
ICAgICB9CiAKLSAgICB0aGlzLl9mZXRjaE1vcmVEYXRhKCk7CisgICAgICAgIHZhciBkaXNwbGF5
UHJpbWFyeUtleVBhdGggPSBkaXNwbGF5S2V5UGF0aCh0aGlzLl9vYmplY3RTdG9yZS5rZXlQYXRo
KTsKKworICAgICAgICB2YXIgY29sdW1uSW5mbyA9IHsKKyAgICAgICAgICAgIHByaW1hcnlLZXk6
IHt0aXRsZTogZGlzcGxheVByaW1hcnlLZXlQYXRoID8gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJQ
cmltYXJ5IEtleSBcdTIwMTQgJXMiKS5mb3JtYXQoZGlzcGxheVByaW1hcnlLZXlQYXRoKSA6IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiUHJpbWFyeSBLZXkiKX0sCisgICAgICAgICAgICBrZXk6IHt9
LAorICAgICAgICAgICAgdmFsdWU6IHt0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWYWx1
ZSIpfQorICAgICAgICB9OworCisgICAgICAgIGlmICh0aGlzLl9vYmplY3RTdG9yZUluZGV4KSB7
CisgICAgICAgICAgICAvLyBXaGVuIHRoZXJlIGlzIGFuIGluZGV4LCBzaG93IHRoZSBrZXkgcGF0
aCBpbiB0aGUgS2V5IGNvbHVtbi4KKyAgICAgICAgICAgIHZhciBkaXNwbGF5SW5kZXhLZXlQYXRo
ID0gZGlzcGxheUtleVBhdGgodGhpcy5fb2JqZWN0U3RvcmVJbmRleC5rZXlQYXRoKTsKKyAgICAg
ICAgICAgIGNvbHVtbkluZm8ua2V5LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJJbmRl
eCBLZXkgXHUyMDE0ICVzIikuZm9ybWF0KGRpc3BsYXlJbmRleEtleVBhdGgpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gT25seSBuZWVkIHRvIHNob3cgS2V5IGZvciBpbmRleGVz
IC0tIGl0IGlzIHRoZSBzYW1lIGFzIFByaW1hcnkgS2V5CisgICAgICAgICAgICAvLyB3aGVuIHRo
ZXJlIGlzIG5vIGluZGV4IGJlaW5nIHVzZWQuCisgICAgICAgICAgICBkZWxldGUgY29sdW1uSW5m
by5rZXk7CisgICAgICAgIH0KIAotICAgIHZhciByZWZyZXNoU291cmNlLCByZWZyZXNoU2l6ZTsK
LSAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MpIHsKLSAgICAgICAg
cmVmcmVzaFNvdXJjZSA9ICJJbWFnZXMvTGVnYWN5L1JlbG9hZC5zdmciOwotICAgICAgICByZWZy
ZXNoU2l6ZSA9IDE2OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHJlZnJlc2hTb3VyY2UgPSAiSW1h
Z2VzL1JlbG9hZEZ1bGwuc3ZnIjsKLSAgICAgICAgcmVmcmVzaFNpemUgPSAxMzsKLSAgICB9Cisg
ICAgICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5J
bmZvKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuc2Nyb2xsQ29udGFpbmVyLmFkZEV2ZW50TGlz
dGVuZXIoInNjcm9sbCIsIHRoaXMuX2RhdGFHcmlkU2Nyb2xsZWQuYmluZCh0aGlzKSk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKIAot
ICAgIHRoaXMuX3JlZnJlc2hCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0oImluZGV4ZWQtZGF0YWJhc2Utb2JqZWN0LXN0b3JlLXJlZnJl
c2giLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlZnJlc2giKSwgcmVmcmVzaFNvdXJjZSwgcmVm
cmVzaFNpemUsIHJlZnJlc2hTaXplKTsKLSAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
RXZlbnQuQ2xpY2tlZCwgdGhpcy5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQsIHRoaXMpOwotfTsKKyAg
ICAgICAgdGhpcy5fZW50cmllcyA9IFtdOworCisgICAgICAgIHRoaXMuX2ZldGNoTW9yZURhdGEo
KTsKIAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZpZXcu
U3R5bGVDbGFzc05hbWUgPSAiaW5kZXhlZC1kYXRhYmFzZS1vYmplY3Qtc3RvcmUiOworICAgICAg
ICB2YXIgcmVmcmVzaFNvdXJjZSwgcmVmcmVzaFNpemU7CisgICAgICAgIGlmIChXZWJJbnNwZWN0
b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUykgeworICAgICAgICAgICAgcmVmcmVzaFNvdXJjZSA9
ICJJbWFnZXMvTGVnYWN5L1JlbG9hZC5zdmciOworICAgICAgICAgICAgcmVmcmVzaFNpemUgPSAx
NjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlZnJlc2hTb3VyY2UgPSAiSW1hZ2Vz
L1JlbG9hZEZ1bGwuc3ZnIjsKKyAgICAgICAgICAgIHJlZnJlc2hTaXplID0gMTM7CisgICAgICAg
IH0KIAotV2ViSW5zcGVjdG9yLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlQ29udGVudFZpZXcu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuSW5kZXhlZERhdGFi
YXNlT2JqZWN0U3RvcmVDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25OYXZpZ2F0
aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImluZGV4ZWQt
ZGF0YWJhc2Utb2JqZWN0LXN0b3JlLXJlZnJlc2giLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJl
ZnJlc2giKSwgcmVmcmVzaFNvdXJjZSwgcmVmcmVzaFNpemUsIHJlZnJlc2hTaXplKTsKKyAgICAg
ICAgdGhpcy5fcmVmcmVzaEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3JlZnJl
c2hCdXR0b25DbGlja2VkLCB0aGlzKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdl
dCBuYXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLl9yZWZyZXNo
QnV0dG9uTmF2aWdhdGlvbkl0ZW1dOwotICAgIH0sCisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5j
dGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Jlc2V0KCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBzYXZlVG9Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICBzYXZl
VG9Db29raWUoY29va2llKQogICAgIHsKICAgICAgICAgY29va2llLnR5cGUgPSBXZWJJbnNwZWN0
b3IuQ29udGVudFZpZXdDb29raWVUeXBlLkluZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlOwogICAg
ICAgICBjb29raWUuc2VjdXJpdHlPcmlnaW4gPSB0aGlzLl9vYmplY3RTdG9yZS5wYXJlbnREYXRh
YmFzZS5zZWN1cml0eU9yaWdpbjsKICAgICAgICAgY29va2llLmRhdGFiYXNlTmFtZSA9IHRoaXMu
X29iamVjdFN0b3JlLnBhcmVudERhdGFiYXNlLm5hbWU7CiAgICAgICAgIGNvb2tpZS5vYmplY3RT
dG9yZU5hbWUgPSB0aGlzLl9vYmplY3RTdG9yZS5uYW1lOwogICAgICAgICBjb29raWUub2JqZWN0
U3RvcmVJbmRleE5hbWUgPSB0aGlzLl9vYmplY3RTdG9yZUluZGV4ICYmIHRoaXMuX29iamVjdFN0
b3JlSW5kZXgubmFtZTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rp
b24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB0aGlzLl9kYXRhR3JpZC51
cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9y
ZXNldDogZnVuY3Rpb24oKQorICAgIF9yZXNldCgpCiAgICAgewogICAgICAgICBmb3IgKHZhciBl
bnRyeSBvZiB0aGlzLl9lbnRyaWVzKSB7CiAgICAgICAgICAgICBlbnRyeS5wcmltYXJ5S2V5LnJl
bGVhc2UoKTsKQEAgLTEzMCwxNyArMTI2LDE3IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0YWJh
c2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9l
bnRyaWVzID0gW107CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWRTY3JvbGxlZDogZnVuY3Rpb24oKQorICAgIF9k
YXRhR3JpZFNjcm9sbGVkKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fbW9yZUVudHJpZXNB
dmFpbGFibGUgfHwgIXRoaXMuX2RhdGFHcmlkLmlzU2Nyb2xsZWRUb0xhc3RSb3coKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9mZXRjaE1vcmVEYXRhKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfZmV0Y2hNb3JlRGF0YTogZnVuY3Rpb24oKQorICAgIF9mZXRjaE1vcmVE
YXRhKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9mZXRjaGluZ01vcmVEYXRhKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTY0LDkgKzE2MCw5IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkRGF0
YWJhc2VPYmplY3RTdG9yZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5f
ZmV0Y2hpbmdNb3JlRGF0YSA9IHRydWU7CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VN
YW5hZ2VyLnJlcXVlc3RJbmRleGVkRGF0YWJhc2VEYXRhKHRoaXMuX29iamVjdFN0b3JlLCB0aGlz
Ll9vYmplY3RTdG9yZUluZGV4LCB0aGlzLl9lbnRyaWVzLmxlbmd0aCwgMjUsIHByb2Nlc3NFbnRy
aWVzLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlZnJlc2hCdXR0b25DbGlj
a2VkOiBmdW5jdGlvbigpCisgICAgX3JlZnJlc2hCdXR0b25DbGlja2VkKCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3Jlc2V0KCk7CiAgICAgICAgIHRoaXMuX2ZldGNoTW9yZURhdGEoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyVHJl
ZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0xheWVyVHJlZURhdGFHcmlkTm9kZS5qcwppbmRleCAxNTFhNWEzLi42NjQwMzkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllclRy
ZWVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTGF5ZXJUcmVlRGF0YUdyaWROb2RlLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0MCArMjMsMzkgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTGF5ZXJU
cmVlRGF0YUdyaWROb2RlID0gZnVuY3Rpb24obGF5ZXIpCitXZWJJbnNwZWN0b3IuTGF5ZXJUcmVl
RGF0YUdyaWROb2RlID0gY2xhc3MgTGF5ZXJUcmVlRGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkRhdGFHcmlkTm9kZQogewotICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUuY2Fs
bCh0aGlzKTsKLQotICAgIHRoaXMuX291dGxldHMgPSB7fTsKKyAgICBjb25zdHJ1Y3RvcihsYXll
cikKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLmxheWVyID0gbGF5ZXI7Ci19
OworICAgICAgICB0aGlzLl9vdXRsZXRzID0ge307CiAKLVdlYkluc3BlY3Rvci5MYXllclRyZWVE
YXRhR3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWROb2RlLAorICAgICAgICB0aGlzLmxheWVyID0gbGF5ZXI7CisgICAgfQogCiAgICAg
Ly8gRGF0YUdyaWROb2RlIE92ZXJyaWRlcy4KIAotICAgIGNyZWF0ZUNlbGxzOiBmdW5jdGlvbigp
CisgICAgY3JlYXRlQ2VsbHMoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlk
Tm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbHMuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl9j
ZWxsc1dlcmVDcmVhdGVkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZUNlbGxD
b250ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQorICAgIGNyZWF0ZUNlbGxD
b250ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCiAgICAgewogICAgICAgICB2YXIgY2VsbCA9
IGNvbHVtbklkZW50aWZpZXIgPT09ICJuYW1lIiA/IHRoaXMuX21ha2VOYW1lQ2VsbCgpIDogdGhp
cy5fbWFrZU91dGxldChjb2x1bW5JZGVudGlmaWVyLCBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgp
KTsKICAgICAgICAgdGhpcy5fdXBkYXRlQ2VsbChjb2x1bW5JZGVudGlmaWVyKTsKICAgICAgICAg
cmV0dXJuIGNlbGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBs
YXllcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbGF5ZXI7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBzZXQgbGF5ZXIobGF5ZXIpCiAgICAgewpAQCAtNjksMTIgKzY4LDEyIEBAIFdlYklu
c3BlY3Rvci5MYXllclRyZWVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAg
cGFpbnRDb3VudDogbGF5ZXIucGFpbnRDb3VudCB8fCAiXHUyMDE0IiwKICAgICAgICAgICAgIG1l
bW9yeTogTnVtYmVyLmJ5dGVzVG9TdHJpbmcobGF5ZXIubWVtb3J5IHx8IDApCiAgICAgICAgIH07
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fZGF0YTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBkYXRhKGRhdGEpCiAgICAgewpA
QCAtODYsMTcgKzg1LDE3IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVEYXRhR3JpZE5vZGUucHJv
dG90eXBlID0gewogICAgICAgICAgICAgaWYgKHRoaXMuX2NlbGxzV2VyZUNyZWF0ZWQpCiAgICAg
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ2VsbChjb2x1bW5JZGVudGlmaWVyKTsKICAgICAgICAg
fSwgdGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfbWFrZU91
dGxldDogZnVuY3Rpb24obmFtZSwgZWxlbWVudCkKKyAgICBfbWFrZU91dGxldChuYW1lLCBlbGVt
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fb3V0bGV0c1tuYW1lXSA9IGVsZW1lbnQ7CiAgICAg
ICAgIHJldHVybiBlbGVtZW50OwotICAgIH0sCisgICAgfQogCi0gICAgX21ha2VOYW1lQ2VsbDog
ZnVuY3Rpb24oKQorICAgIF9tYWtlTmFtZUNlbGwoKQogICAgIHsKICAgICAgICAgdmFyIGZyYWdt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwogCkBAIC0xMTksMTggKzEx
OCwxOCBAQCBXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcmVmbGVjdGlvbkxhYmVsLnRleHRDb250ZW50ID0gIiBcdTIwMTQgIiArIFdlYklu
c3BlY3Rvci5VSVN0cmluZygiUmVmbGVjdGlvbiIpOwogCiAgICAgICAgIHJldHVybiBmcmFnbWVu
dDsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVu
dGlmaWVyKQorICAgIF91cGRhdGVDZWxsKGNvbHVtbklkZW50aWZpZXIpCiAgICAgewogICAgICAg
ICB2YXIgZGF0YSA9IHRoaXMuX2RhdGFbY29sdW1uSWRlbnRpZmllcl07CiAgICAgICAgIGlmIChj
b2x1bW5JZGVudGlmaWVyID09PSAibmFtZSIpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVOYW1l
Q2VsbERhdGEoZGF0YSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX291dGxldHNb
Y29sdW1uSWRlbnRpZmllcl0udGV4dENvbnRlbnQgPSBkYXRhOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3VwZGF0ZU5hbWVDZWxsRGF0YTogZnVuY3Rpb24oZGF0YSkKKyAgICBfdXBkYXRlTmFtZUNl
bGxEYXRhKGRhdGEpCiAgICAgewogICAgICAgICB2YXIgbGF5ZXIgPSB0aGlzLl9sYXllcjsKICAg
ICAgICAgdmFyIGxhYmVsID0gdGhpcy5fb3V0bGV0cy5sYWJlbDsKQEAgLTE1NywxMyArMTU2LDEx
IEBAIFdlYkluc3BlY3Rvci5MYXllclRyZWVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJyZWZsZWN0aW9uIik7CiAgICAgICAgIGVs
c2UgaWYgKGxheWVyLnBzZXVkb0VsZW1lbnQpCiAgICAgICAgICAgICBlbGVtZW50LmNsYXNzTGlz
dC5hZGQoInBzZXVkby1lbGVtZW50Iik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZ29Ub0Fycm93
V2FzQ2xpY2tlZDogZnVuY3Rpb24oKQorICAgIF9nb1RvQXJyb3dXYXNDbGlja2VkKCkKICAgICB7
CiAgICAgICAgIHZhciBkb21Ob2RlID0gV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5vZGVG
b3JJZCh0aGlzLl9sYXllci5ub2RlSWQpOwogICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VT
aWRlYmFyUGFuZWwuc2hvd01haW5GcmFtZURPTVRyZWUoZG9tTm9kZSwgdHJ1ZSk7CiAgICAgfQog
fTsKLQotV2ViSW5zcGVjdG9yLkxheWVyVHJlZURhdGFHcmlkTm9kZS5wcm90b3R5cGUuX19wcm90
b19fID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURh
dGFHcmlkLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5
b3V0VGltZWxpbmVEYXRhR3JpZC5qcwppbmRleCA1ZmIwOTQyLi5kOGJlMTIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGlu
ZURhdGFHcmlkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0xheW91dFRpbWVsaW5lRGF0YUdyaWQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIwICsyMywxNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1l
bGluZURhdGFHcmlkID0gZnVuY3Rpb24odHJlZU91dGxpbmUsIGNvbHVtbnMsIGRlbGVnYXRlLCBl
ZGl0Q2FsbGJhY2ssIGRlbGV0ZUNhbGxiYWNrKQorV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5l
RGF0YUdyaWQgPSBjbGFzcyBMYXlvdXRUaW1lbGluZURhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lRGF0YUdyaWQKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3Jp
ZC5jYWxsKHRoaXMsIHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNr
LCBkZWxldGVDYWxsYmFjayk7Ci19OwotCi1XZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRh
R3JpZC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZURhdGFHcmlkLAorICAgIGNvbnN0cnVjdG9yKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBk
ZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHN1
cGVyKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVD
YWxsYmFjayk7CisgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBjYWxsRnJhbWVQb3Bv
dmVyQW5jaG9yRWxlbWVudDogZnVuY3Rpb24oKQorICAgIGNhbGxGcmFtZVBvcG92ZXJBbmNob3JF
bGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTm9kZS5lbGVtZW50
V2l0aENvbHVtbklkZW50aWZpZXIoImluaXRpYXRvckNhbGxGcmFtZSIpOwogICAgIH0KIH07Ci0K
LVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZURh
dGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0xheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCmluZGV4IGEwNjJhZWUuLmE5MWRkNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91
dFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw0NCArMjMs
MzYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNw
ZWN0b3IuTGF5b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihsYXlvdXRUaW1lbGlu
ZVJlY29yZCwgYmFzZVN0YXJ0VGltZSkKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZURhdGFH
cmlkTm9kZSA9IGNsYXNzIExheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
RGF0YUdyaWROb2RlLmNhbGwodGhpcywgZmFsc2UsIG51bGwpOwotCi0gICAgdGhpcy5fcmVjb3Jk
ID0gbGF5b3V0VGltZWxpbmVSZWNvcmQ7Ci0gICAgdGhpcy5fYmFzZVN0YXJ0VGltZSA9IGJhc2VT
dGFydFRpbWUgfHwgMDsKLX07Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9i
amVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVj
dC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLkxheW91dFRp
bWVsaW5lRGF0YUdyaWROb2RlKTsKLQotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdy
aWROb2RlLkljb25TdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKLVdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZURhdGFHcmlkTm9kZS5TdWJ0aXRsZVN0eWxlQ2xhc3NOYW1lID0gInN1YnRpdGxlIjsK
KyAgICBjb25zdHJ1Y3RvcihsYXlvdXRUaW1lbGluZVJlY29yZCwgYmFzZVN0YXJ0VGltZSkKKyAg
ICB7CisgICAgICAgIHN1cGVyKGZhbHNlLCBudWxsKTsKIAotV2ViSW5zcGVjdG9yLkxheW91dFRp
bWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLAotICAgIF9fcHJvdG9fXzogV2ViSW5z
cGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fcmVj
b3JkID0gbGF5b3V0VGltZWxpbmVSZWNvcmQ7CisgICAgICAgIHRoaXMuX2Jhc2VTdGFydFRpbWUg
PSBiYXNlU3RhcnRUaW1lIHx8IDA7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQg
cmVjb3JkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9yZWNvcmQ7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgcmVjb3JkcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3Jl
Y29yZF07Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVjb3JkOwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlQ2VsbENvbnRl
bnQ6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCisgICAgY3JlYXRlQ2VsbENvbnRl
bnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCkKICAgICB7Ci0gICAgICAgIGNvbnN0IGVtcHR5VmFs
dWVQbGFjZWhvbGRlclN0cmluZyA9ICJcdTIwMTQiOworICAgICAgICB2YXIgZW1wdHlWYWx1ZVBs
YWNlaG9sZGVyU3RyaW5nID0gIlx1MjAxNCI7CiAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMuZGF0
YVtjb2x1bW5JZGVudGlmaWVyXTsKIAogICAgICAgICBzd2l0Y2ggKGNvbHVtbklkZW50aWZpZXIp
IHsKQEAgLTgxLDYgKzczLDkgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWRO
b2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBpc05hTih2YWx1ZSkgPyBlbXB0
eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgOiBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHZhbHVlLCB0
cnVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGltZWxpbmVE
YXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGxDb250ZW50LmNhbGwodGhpcywgY29sdW1u
SWRlbnRpZmllciwgY2VsbCk7CisgICAgICAgIHJldHVybiBzdXBlci5jcmVhdGVDZWxsQ29udGVu
dChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuTGF5
b3V0VGltZWxpbmVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xhc3NOYW1lID0gImljb24iOworV2Vi
SW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWROb2RlLlN1YnRpdGxlU3R5bGVDbGFzc05h
bWUgPSAic3VidGl0bGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVPdmVydmlld0dyYXBoLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVPdmVydmlld0dy
YXBoLmpzCmluZGV4IGY3NDg5ZGMuLjI1ZTczZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRU
aW1lbGluZU92ZXJ2aWV3R3JhcGguanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMzggKzIzLDM0IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lT3Zl
cnZpZXdHcmFwaCA9IGZ1bmN0aW9uKHRpbWVsaW5lKQorV2ViSW5zcGVjdG9yLkxheW91dFRpbWVs
aW5lT3ZlcnZpZXdHcmFwaCA9IGNsYXNzIExheW91dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCBleHRl
bmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgKIHsKLSAgICBXZWJJbnNwZWN0
b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLmNhbGwodGhpcywgdGltZWxpbmUpOwotCi0gICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lT3ZlcnZp
ZXdHcmFwaC5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9sYXlvdXRUaW1lbGluZSA9IHRp
bWVsaW5lOwotICAgIHRoaXMuX2xheW91dFRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9sYXlvdXRUaW1lbGluZVJl
Y29yZEFkZGVkLCB0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZSkKKyAgICB7CisgICAg
ICAgIHN1cGVyKHRpbWVsaW5lKTsKIAotICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFycyA9IFtd
OworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibGF5b3V0Iik7CiAKLSAgICB0
aGlzLnJlc2V0KCk7Ci19OworICAgICAgICB0aGlzLl9sYXlvdXRUaW1lbGluZSA9IHRpbWVsaW5l
OworICAgICAgICB0aGlzLl9sYXlvdXRUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbGF5b3V0VGltZWxpbmVSZWNv
cmRBZGRlZCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguU3R5bGVDbGFzc05hbWUgPSAibGF5b3V0IjsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVSZWNv
cmRCYXJzID0gW107CiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZU92ZXJ2aWV3R3JhcGgu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxp
bmVPdmVydmlld0dyYXBoLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3Zl
cnZpZXdHcmFwaC5wcm90b3R5cGUsCisgICAgICAgIHRoaXMucmVzZXQoKTsKKyAgICB9CiAKICAg
ICAvLyBQdWJsaWMKIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgcmVzZXQoKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUucmVz
ZXQuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhck1hcCA9IG5l
dyBNYXA7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQo
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90
b3R5cGUudXBkYXRlTGF5b3V0LmNhbGwodGhpcyk7CiAKQEAgLTg0LDExICs4MCwxMSBAQCBXZWJJ
bnNwZWN0b3IuTGF5b3V0VGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFyc1tyZWNvcmRCYXJJbmRleF0ucmVjb3JkcyA9
IG51bGw7CiAgICAgICAgICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnNbcmVjb3JkQmFySW5k
ZXhdLmVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF9sYXlvdXRUaW1lbGluZVJlY29yZEFkZGVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfbGF5b3V0VGltZWxpbmVSZWNvcmRBZGRlZChldmVudCkKICAgICB7CiAgICAgICAg
IHRoaXMubmVlZHNMYXlvdXQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXlvdXRUaW1lbGluZVZpZXcuanMK
aW5kZXggMTM3NzZlYi4uYzU3MjE4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5b3V0VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheW91dFRpbWVsaW5lVmlldy5qcwpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0yMywxNTEgKzIzLDE0NiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcgPSBmdW5jdGlvbih0aW1l
bGluZSkKK1dlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcgPSBjbGFzcyBMYXlvdXRUaW1l
bGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3CiB7Ci0gICAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lVmlldy5jYWxsKHRoaXMsIHRpbWVsaW5lKTsKLQotICAgIGNvbnNvbGUu
YXNzZXJ0KHRpbWVsaW5lLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBl
LkxheW91dCB8fCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5SdW5Mb29wKTsKKyAg
ICBjb25zdHJ1Y3Rvcih0aW1lbGluZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHRpbWVsaW5lKTsK
IAotICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMu
X3RyZWVFbGVtZW50U2VsZWN0ZWQuYmluZCh0aGlzKTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRl
YmFyVHJlZU91dGxpbmUub25kZXNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50RGVzZWxlY3RlZC5i
aW5kKHRoaXMpOwotICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuSGlkZURp
c2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMubmF2aWdhdGlvblNpZGVi
YXJUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLkxheW91dFRp
bWVsaW5lVmlldy5UcmVlT3V0bGluZVN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGltZWxpbmUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUu
TGF5b3V0IHx8IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLlJ1bkxvb3ApOwogCi0g
ICAgdmFyIGNvbHVtbnMgPSB7ZXZlbnRUeXBlOiB7fSwgaW5pdGlhdG9yQ2FsbEZyYW1lOiB7fSwg
d2lkdGg6IHt9LCBoZWlnaHQ6IHt9LCBzdGFydFRpbWU6IHt9LCBkdXJhdGlvbjoge319OworICAg
ICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90
cmVlRWxlbWVudFNlbGVjdGVkLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNp
ZGViYXJUcmVlT3V0bGluZS5vbmRlc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnREZXNlbGVjdGVk
LmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwu
SGlkZURpc2Nsb3N1cmVCdXR0b25zU3R5bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLm5hdmln
YXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJsYXlvdXQiKTsK
IAotICAgIGNvbHVtbnMuZXZlbnRUeXBlLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJU
eXBlIik7Ci0gICAgY29sdW1ucy5ldmVudFR5cGUud2lkdGggPSAiMTUlIjsKKyAgICAgICAgdmFy
IGNvbHVtbnMgPSB7ZXZlbnRUeXBlOiB7fSwgaW5pdGlhdG9yQ2FsbEZyYW1lOiB7fSwgd2lkdGg6
IHt9LCBoZWlnaHQ6IHt9LCBzdGFydFRpbWU6IHt9LCBkdXJhdGlvbjoge319OwogCi0gICAgdmFy
IHR5cGVUb0xhYmVsTWFwID0gbmV3IE1hcDsKLSAgICBmb3IgKHZhciBrZXkgaW4gV2ViSW5zcGVj
dG9yLkxheW91dFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZSkgewotICAgICAgICB2YXIgdmFsdWUg
PSBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlW2tleV07Ci0gICAg
ICAgIHR5cGVUb0xhYmVsTWFwLnNldCh2YWx1ZSwgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5l
UmVjb3JkLmRpc3BsYXlOYW1lRm9yRXZlbnRUeXBlKHZhbHVlKSk7Ci0gICAgfQorICAgICAgICBj
b2x1bW5zLmV2ZW50VHlwZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHlwZSIpOwor
ICAgICAgICBjb2x1bW5zLmV2ZW50VHlwZS53aWR0aCA9ICIxNSUiOwogCi0gICAgY29sdW1ucy5l
dmVudFR5cGUuc2NvcGVCYXIgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5jcmVhdGVD
b2x1bW5TY29wZUJhcigibGF5b3V0IiwgdHlwZVRvTGFiZWxNYXApOwotICAgIGNvbHVtbnMuZXZl
bnRUeXBlLmhpZGRlbiA9IHRydWU7Ci0KLSAgICBjb2x1bW5zLmluaXRpYXRvckNhbGxGcmFtZS50
aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSW5pdGlhdG9yIik7Ci0gICAgY29sdW1ucy5p
bml0aWF0b3JDYWxsRnJhbWUud2lkdGggPSAiMjUlIjsKKyAgICAgICAgdmFyIHR5cGVUb0xhYmVs
TWFwID0gbmV3IE1hcDsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIFdlYkluc3BlY3Rvci5MYXlv
dXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGUpIHsKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IFdl
Ykluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVJlY29yZC5FdmVudFR5cGVba2V5XTsKKyAgICAgICAg
ICAgIHR5cGVUb0xhYmVsTWFwLnNldCh2YWx1ZSwgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5l
UmVjb3JkLmRpc3BsYXlOYW1lRm9yRXZlbnRUeXBlKHZhbHVlKSk7CisgICAgICAgIH0KIAotICAg
IGNvbHVtbnMud2lkdGgudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldpZHRoIik7Ci0g
ICAgY29sdW1ucy53aWR0aC53aWR0aCA9ICI4JSI7CisgICAgICAgIGNvbHVtbnMuZXZlbnRUeXBl
LnNjb3BlQmFyID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuY3JlYXRlQ29sdW1uU2Nv
cGVCYXIoImxheW91dCIsIHR5cGVUb0xhYmVsTWFwKTsKKyAgICAgICAgY29sdW1ucy5ldmVudFR5
cGUuaGlkZGVuID0gdHJ1ZTsKIAotICAgIGNvbHVtbnMuaGVpZ2h0LnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJIZWlnaHQiKTsKLSAgICBjb2x1bW5zLmhlaWdodC53aWR0aCA9ICI4JSI7
CisgICAgICAgIGNvbHVtbnMuaW5pdGlhdG9yQ2FsbEZyYW1lLnRpdGxlID0gV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJJbml0aWF0b3IiKTsKKyAgICAgICAgY29sdW1ucy5pbml0aWF0b3JDYWxsRnJh
bWUud2lkdGggPSAiMjUlIjsKIAotICAgIGNvbHVtbnMuc3RhcnRUaW1lLnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTdGFydCBUaW1lIik7Ci0gICAgY29sdW1ucy5zdGFydFRpbWUud2lk
dGggPSAiOCUiOwotICAgIGNvbHVtbnMuc3RhcnRUaW1lLmFsaWduZWQgPSAicmlnaHQiOworICAg
ICAgICBjb2x1bW5zLndpZHRoLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXaWR0aCIp
OworICAgICAgICBjb2x1bW5zLndpZHRoLndpZHRoID0gIjglIjsKIAotICAgIGNvbHVtbnMuZHVy
YXRpb24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkR1cmF0aW9uIik7Ci0gICAgY29s
dW1ucy5kdXJhdGlvbi53aWR0aCA9ICI4JSI7Ci0gICAgY29sdW1ucy5kdXJhdGlvbi5hbGlnbmVk
ID0gInJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy5oZWlnaHQudGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIkhlaWdodCIpOworICAgICAgICBjb2x1bW5zLmhlaWdodC53aWR0aCA9ICI4JSI7
CiAKLSAgICBmb3IgKHZhciBjb2x1bW4gaW4gY29sdW1ucykKLSAgICAgICAgY29sdW1uc1tjb2x1
bW5dLnNvcnRhYmxlID0gdHJ1ZTsKKyAgICAgICAgY29sdW1ucy5zdGFydFRpbWUudGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKKyAgICAgICAgY29sdW1ucy5zdGFy
dFRpbWUud2lkdGggPSAiOCUiOworICAgICAgICBjb2x1bW5zLnN0YXJ0VGltZS5hbGlnbmVkID0g
InJpZ2h0IjsKIAotICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5MYXlvdXRU
aW1lbGluZURhdGFHcmlkKHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZSwgY29sdW1u
cyk7Ci0gICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVEYXRhR3JpZC5FdmVudC5GaWx0ZXJzRGlkQ2hhbmdlLCB0aGlzLl9kYXRhR3JpZEZpbHRl
cnNEaWRDaGFuZ2UsIHRoaXMpOwotICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX2Rh
dGFHcmlkTm9kZVNlbGVjdGVkLCB0aGlzKTsKKyAgICAgICAgY29sdW1ucy5kdXJhdGlvbi50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRHVyYXRpb24iKTsKKyAgICAgICAgY29sdW1ucy5k
dXJhdGlvbi53aWR0aCA9ICI4JSI7CisgICAgICAgIGNvbHVtbnMuZHVyYXRpb24uYWxpZ25lZCA9
ICJyaWdodCI7CiAKLSAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJz
dGFydFRpbWUiOwotICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOworICAgICAgICBmb3IgKHZhciBjb2x1bW4gaW4g
Y29sdW1ucykKKyAgICAgICAgICAgIGNvbHVtbnNbY29sdW1uXS5zb3J0YWJsZSA9IHRydWU7CiAK
LSAgICB0aGlzLl9ob3ZlcmVkVHJlZUVsZW1lbnQgPSBudWxsOwotICAgIHRoaXMuX2hvdmVyZWRE
YXRhR3JpZE5vZGUgPSBudWxsOwotICAgIHRoaXMuX3Nob3dpbmdIaWdobGlnaHQgPSBmYWxzZTsK
LSAgICB0aGlzLl9zaG93aW5nSGlnaGxpZ2h0Rm9yUmVjb3JkID0gbnVsbDsKKyAgICAgICAgdGhp
cy5fZGF0YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lRGF0YUdyaWQodGhp
cy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLCBjb2x1bW5zKTsKKyAgICAgICAgdGhpcy5f
ZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5F
dmVudC5GaWx0ZXJzRGlkQ2hhbmdlLCB0aGlzLl9kYXRhR3JpZEZpbHRlcnNEaWRDaGFuZ2UsIHRo
aXMpOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rv
ci5EYXRhR3JpZC5FdmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZE5vZGVT
ZWxlY3RlZCwgdGhpcyk7CiAKLSAgICB0aGlzLl9kYXRhR3JpZC5lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlb3ZlciIsIHRoaXMuX21vdXNlT3ZlckRhdGFHcmlkLmJpbmQodGhpcykpOwot
ICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIs
IHRoaXMuX21vdXNlTGVhdmVEYXRhR3JpZC5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLm5hdmlnYXRp
b25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIi
LCB0aGlzLl9tb3VzZU92ZXJUcmVlT3V0bGluZS5iaW5kKHRoaXMpKTsKLSAgICB0aGlzLm5hdmln
YXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxl
YXZlIiwgdGhpcy5fbW91c2VMZWF2ZVRyZWVPdXRsaW5lLmJpbmQodGhpcykpOworICAgICAgICB0
aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJzdGFydFRpbWUiOworICAgICAg
ICB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9y
ZGVyLkFzY2VuZGluZzsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3Bl
Y3Rvci5MYXlvdXRUaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5faG92
ZXJlZFRyZWVFbGVtZW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5faG92ZXJlZERhdGFHcmlkTm9k
ZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3Nob3dpbmdIaWdobGlnaHQgPSBmYWxzZTsKKyAgICAg
ICAgdGhpcy5fc2hvd2luZ0hpZ2hsaWdodEZvclJlY29yZCA9IG51bGw7CiAKLSAgICB0aW1lbGlu
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRl
ZCwgdGhpcy5fbGF5b3V0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMu
X2RhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fbW91
c2VPdmVyRGF0YUdyaWQuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX21vdXNlTGVhdmVEYXRhR3Jp
ZC5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5l
LmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5fbW91c2VPdmVyVHJl
ZU91dGxpbmUuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVl
T3V0bGluZS5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLCB0aGlzLl9tb3Vz
ZUxlYXZlVHJlZU91dGxpbmUuYmluZCh0aGlzKSk7CiAKLSAgICB0aGlzLl9wZW5kaW5nUmVjb3Jk
cyA9IFtdOwotfTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImxheW91dCIp
OworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVu
dCk7CiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUgPSAi
bGF5b3V0IjsKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcuVHJlZU91dGxpbmVTdHls
ZUNsYXNzTmFtZSA9ICJsYXlvdXQiOworICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbGF5b3V0VGlt
ZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZp
ZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuTGF5b3V0VGlt
ZWxpbmVWaWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90
b3R5cGUsCisgICAgICAgIHRoaXMuX3BlbmRpbmdSZWNvcmRzID0gW107CisgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKICAgICBnZXQgbmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZUxhYmVsKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZHMiKTsK
LSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxs
KHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUhpZ2hsaWdodCgpOwogCiAgICAgICAgIHRo
aXMuX2RhdGFHcmlkLnNob3duKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0
aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5faGlkZUhpZ2hsaWdodElm
TmVlZGVkKCk7CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuaGlkZGVuKCk7CiAKICAgICAgICAg
V2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4uY2FsbCh0aGlzKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGZpbHRlckRpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIGZpbHRl
ckRpZENoYW5nZSgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnBy
b3RvdHlwZS5maWx0ZXJEaWRDaGFuZ2UuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl91cGRh
dGVIaWdobGlnaHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rp
b24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVWaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQuY2FsbCh0aGlzKTsKIAogICAgICAgICB0
aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKIAogICAgICAgICB0aGlzLl9wcm9jZXNzUGVu
ZGluZ1JlY29yZHMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2Fp
bnN0Q3VzdG9tRmlsdGVyczogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgbWF0Y2hUcmVlRWxl
bWVudEFnYWluc3RDdXN0b21GaWx0ZXJzKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2RhdGFHcmlkLnRyZWVFbGVtZW50TWF0Y2hlc0FjdGl2ZVNjb3BlRmlsdGVycyh0
cmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXNldDogZnVuY3Rpb24oKQorICAg
IHJlc2V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90
eXBlLnJlc2V0LmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5faGlkZUhpZ2hsaWdodElmTmVl
ZGVkKCk7CiAKICAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVzZXQoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByb3RlY3RlZAogCi0gICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIHRyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVk
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGRhdGFHcmlkTm9kZSA9IHRoaXMuX2RhdGFHcmlk
LmRhdGFHcmlkTm9kZUZvclRyZWVFbGVtZW50KGV2ZW50LmRhdGEucGF0aENvbXBvbmVudC5nZW5l
cmFsVHJlZUVsZW1lbnQpOwogICAgICAgICBpZiAoIWRhdGFHcmlkTm9kZSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgZGF0YUdyaWROb2RlLnJldmVhbEFuZFNlbGVjdCgpOwotICAgIH0s
CisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3Byb2Nlc3NQZW5kaW5nUmVjb3Jkczog
ZnVuY3Rpb24oKQorICAgIF9wcm9jZXNzUGVuZGluZ1JlY29yZHMoKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9wZW5kaW5nUmVjb3Jkcy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xODAsOSArMTc1LDkgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9IFtdOwot
ICAgIH0sCisgICAgfQogCi0gICAgX2xheW91dFRpbWVsaW5lUmVjb3JkQWRkZWQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9sYXlvdXRUaW1lbGluZVJlY29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdmFyIGxheW91dFRpbWVsaW5lUmVjb3JkID0gZXZlbnQuZGF0YS5yZWNvcmQ7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGxheW91dFRpbWVsaW5lUmVjb3JkIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLkxheW91dFRpbWVsaW5lUmVjb3JkIHx8IGxheW91dFRpbWVsaW5lUmVjb3JkIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZVJlY29yZCk7CkBAIC0xOTAsMjcgKzE4
NSwyNyBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fcGVuZGluZ1JlY29yZHMucHVzaChsYXlvdXRUaW1lbGluZVJlY29yZCk7CiAK
ICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFH
cmlkRmlsdGVyc0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlkRmlsdGVy
c0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNp
ZGViYXJQYW5lbC51cGRhdGVGaWx0ZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kYXRhR3Jp
ZE5vZGVTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlkTm9kZVNlbGVjdGVk
KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hh
bmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudERlc2VsZWN0ZWQ6IGZ1bmN0
aW9uKHRyZWVFbGVtZW50KQorICAgIF90cmVlRWxlbWVudERlc2VsZWN0ZWQodHJlZUVsZW1lbnQp
CiAgICAgewogICAgICAgICBpZiAodHJlZUVsZW1lbnQuc3RhdHVzKQogICAgICAgICAgICAgdHJl
ZUVsZW1lbnQuc3RhdHVzID0gIiI7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlSGlnaGxpZ2h0KCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJl
ZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQorICAgIF90cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVF
bGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3Jp
ZC5zaG91bGRJZ25vcmVTZWxlY3Rpb25FdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjM1LDkgKzIzMCw5IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93T3Jp
Z2luYWxPckZvcm1hdHRlZFNvdXJjZUNvZGVMb2NhdGlvbih0cmVlRWxlbWVudC5yZWNvcmQuc291
cmNlQ29kZUxvY2F0aW9uKTsKICAgICAgICAgdGhpcy5fdXBkYXRlVHJlZUVsZW1lbnRXaXRoQ2xv
c2VCdXR0b24odHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVRyZWVF
bGVtZW50V2l0aENsb3NlQnV0dG9uOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdXBkYXRl
VHJlZUVsZW1lbnRXaXRoQ2xvc2VCdXR0b24odHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fY2xvc2VTdGF0dXNCdXR0b24pIHsKICAgICAgICAgICAgIHRyZWVFbGVtZW50LnN0
YXR1cyA9IHRoaXMuX2Nsb3NlU3RhdHVzQnV0dG9uLmVsZW1lbnQ7CkBAIC0yNTAsMTUgKzI0NSwx
NSBAQCBXZWJJbnNwZWN0b3IuTGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGlmICh0cmVlRWxlbWVudCA9PT0gdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRs
aW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVHJl
ZUVsZW1lbnRXaXRoQ2xvc2VCdXR0b24odHJlZUVsZW1lbnQpOwogICAgICAgICB9LmJpbmQodGhp
cykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nsb3NlU3RhdHVzQnV0dG9uQ2xpY2tlZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX2Nsb3NlU3RhdHVzQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7
CiAgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVF
bGVtZW50LmRlc2VsZWN0KCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQ
YW5lbC5zaG93VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlSGlnaGxpZ2h0OiBmdW5jdGlvbigpCisgICAg
X3VwZGF0ZUhpZ2hsaWdodCgpCiAgICAgewogICAgICAgICB2YXIgcmVjb3JkID0gdGhpcy5faG92
ZXJlZE9yU2VsZWN0ZWRSZWNvcmQoKTsKICAgICAgICAgaWYgKCFyZWNvcmQpIHsKQEAgLTI2Nywx
NyArMjYyLDE3IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc2hvd0hpZ2hsaWdodEZvclJlY29yZChyZWNv
cmQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nob3dIaWdobGlnaHRGb3JSZWNvcmQ6IGZ1bmN0
aW9uKHJlY29yZCkKKyAgICBfc2hvd0hpZ2hsaWdodEZvclJlY29yZChyZWNvcmQpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fc2hvd2luZ0hpZ2hsaWdodEZvclJlY29yZCA9PT0gcmVjb3JkKQog
ICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3Nob3dpbmdIaWdobGlnaHRGb3JS
ZWNvcmQgPSByZWNvcmQ7CiAKLSAgICAgICAgY29uc3QgY29udGVudENvbG9yID0ge3I6IDExMSwg
ZzogMTY4LCBiOiAyMjAsIGE6IDAuNjZ9OwotICAgICAgICBjb25zdCBvdXRsaW5lQ29sb3IgPSB7
cjogMjU1LCBnOiAyMjksIGI6IDE1MywgYTogMC42Nn07CisgICAgICAgIHZhciBjb250ZW50Q29s
b3IgPSB7cjogMTExLCBnOiAxNjgsIGI6IDIyMCwgYTogMC42Nn07CisgICAgICAgIHZhciBvdXRs
aW5lQ29sb3IgPSB7cjogMjU1LCBnOiAyMjksIGI6IDE1MywgYTogMC42Nn07CiAKICAgICAgICAg
dmFyIHF1YWQgPSByZWNvcmQucXVhZDsKICAgICAgICAgaWYgKHF1YWQgJiYgRE9NQWdlbnQuaGln
aGxpZ2h0UXVhZCkgewpAQCAtMjk5LDkgKzI5NCw5IEBAIFdlYkluc3BlY3Rvci5MYXlvdXRUaW1l
bGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fc2hvd2luZ0hpZ2hsaWdo
dCA9IGZhbHNlOwogICAgICAgICAgICAgRE9NQWdlbnQuaGlkZUhpZ2hsaWdodCgpOwogICAgICAg
ICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaGlkZUhpZ2hsaWdodElmTmVlZGVkOiBmdW5jdGlv
bigpCisgICAgX2hpZGVIaWdobGlnaHRJZk5lZWRlZCgpCiAgICAgewogICAgICAgICB0aGlzLl9z
aG93aW5nSGlnaGxpZ2h0Rm9yUmVjb3JkID0gbnVsbDsKIApAQCAtMzA5LDkgKzMwNCw5IEBAIFdl
Ykluc3BlY3Rvci5MYXlvdXRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dGhpcy5fc2hvd2luZ0hpZ2hsaWdodCA9IGZhbHNlOwogICAgICAgICAgICAgRE9NQWdlbnQuaGlk
ZUhpZ2hsaWdodCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfaG92ZXJlZE9y
U2VsZWN0ZWRSZWNvcmQ6IGZ1bmN0aW9uKCkKKyAgICBfaG92ZXJlZE9yU2VsZWN0ZWRSZWNvcmQo
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2hvdmVyZWREYXRhR3JpZE5vZGUpCiAgICAgICAg
ICAgICByZXR1cm4gdGhpcy5faG92ZXJlZERhdGFHcmlkTm9kZS5yZWNvcmQ7CkBAIC0zMjYsOSAr
MzIxLDkgQEAgV2ViSW5zcGVjdG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAotICAgIF9t
b3VzZU92ZXJEYXRhR3JpZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX21vdXNlT3ZlckRhdGFHcmlk
KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGhvdmVyZWREYXRhR3JpZE5vZGUgPSB0aGlzLl9k
YXRhR3JpZC5kYXRhR3JpZE5vZGVGcm9tTm9kZShldmVudC50YXJnZXQpOwogICAgICAgICBpZiAo
IWhvdmVyZWREYXRhR3JpZE5vZGUpCkBAIC0zMzYsMTUgKzMzMSwxNSBAQCBXZWJJbnNwZWN0b3Iu
TGF5b3V0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9ob3ZlcmVk
RGF0YUdyaWROb2RlID0gaG92ZXJlZERhdGFHcmlkTm9kZTsKICAgICAgICAgdGhpcy5fdXBkYXRl
SGlnaGxpZ2h0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2VMZWF2ZURhdGFHcmlkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfbW91c2VMZWF2ZURhdGFHcmlkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5faG92ZXJlZERhdGFHcmlkTm9kZSA9IG51bGw7CiAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUhpZ2hsaWdodCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNlT3ZlclRyZWVPdXRs
aW5lOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VPdmVyVHJlZU91dGxpbmUoZXZlbnQpCiAg
ICAgewogICAgICAgICB2YXIgaG92ZXJlZFRyZWVFbGVtZW50ID0gdGhpcy5uYXZpZ2F0aW9uU2lk
ZWJhclRyZWVPdXRsaW5lLnRyZWVFbGVtZW50RnJvbU5vZGUoZXZlbnQudGFyZ2V0KTsKICAgICAg
ICAgaWYgKCFob3ZlcmVkVHJlZUVsZW1lbnQpCkBAIC0zNTIsOSArMzQ3LDkgQEAgV2ViSW5zcGVj
dG9yLkxheW91dFRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5faG92
ZXJlZFRyZWVFbGVtZW50ID0gaG92ZXJlZFRyZWVFbGVtZW50OwogICAgICAgICB0aGlzLl91cGRh
dGVIaWdobGlnaHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZUxlYXZlVHJlZU91dGxp
bmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZUxlYXZlVHJlZU91dGxpbmUoZXZlbnQpCiAg
ICAgewogICAgICAgICB0aGlzLl9ob3ZlcmVkVHJlZUVsZW1lbnQgPSBudWxsOwogICAgICAgICB0
aGlzLl91cGRhdGVIaWdobGlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUNvbnNvbGVNZXNzYWdlLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2UuanMK
aW5kZXggZGY4ZDcxMi4uMzllZjI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2UuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2Uu
anMKQEAgLTEsNiArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENv
cHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI4
LDQyICsyOCw0OSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29u
c29sZU1lc3NhZ2UgPSBmdW5jdGlvbihzb3VyY2UsIGxldmVsLCB1cmwsIGxpbmUsIGNvbHVtbiwg
cmVwZWF0Q291bnQpCitXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UgPSBjbGFzcyBM
ZWdhY3lDb25zb2xlTWVzc2FnZSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIHsKLSAgICB0
aGlzLnNvdXJjZSA9IHNvdXJjZTsKLSAgICB0aGlzLmxldmVsID0gbGV2ZWw7Ci0gICAgdGhpcy51
cmwgPSB1cmwgfHwgbnVsbDsKLSAgICB0aGlzLmxpbmUgPSBsaW5lIHx8IDA7Ci0gICAgdGhpcy5j
b2x1bW4gPSBjb2x1bW4gfHwgMDsKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2UsIGxldmVsLCB1cmws
IGxpbmUsIGNvbHVtbiwgcmVwZWF0Q291bnQpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0g
ICAgcmVwZWF0Q291bnQgPSByZXBlYXRDb3VudCB8fCAxOwotICAgIHRoaXMucmVwZWF0Q291bnQg
PSByZXBlYXRDb3VudDsKLSAgICB0aGlzLnJlcGVhdERlbHRhID0gcmVwZWF0Q291bnQ7Ci0gICAg
dGhpcy50b3RhbFJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7Ci19OworICAgICAgICB0aGlzLnNv
dXJjZSA9IHNvdXJjZTsKKyAgICAgICAgdGhpcy5sZXZlbCA9IGxldmVsOworICAgICAgICB0aGlz
LnVybCA9IHVybCB8fCBudWxsOworICAgICAgICB0aGlzLmxpbmUgPSBsaW5lIHx8IDA7CisgICAg
ICAgIHRoaXMuY29sdW1uID0gY29sdW1uIHx8IDA7CisKKyAgICAgICAgcmVwZWF0Q291bnQgPSBy
ZXBlYXRDb3VudCB8fCAxOworICAgICAgICB0aGlzLnJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7
CisgICAgICAgIHRoaXMucmVwZWF0RGVsdGEgPSByZXBlYXRDb3VudDsKKyAgICAgICAgdGhpcy50
b3RhbFJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7CisgICAgfQorCisgICAgLy8gU3RhdGljCisK
KyAgICBzdGF0aWMgY3JlYXRlKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHR5cGUsIHVybCwgbGlu
ZSwgY29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkK
KyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNz
YWdlSW1wbChzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBudWxsLCB0eXBlLCB1cmwsIGxpbmUsIGNv
bHVtbiwgcmVwZWF0Q291bnQsIHBhcmFtZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpOworICAg
IH0KKworICAgIC8vIFB1YmxpYwogCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2Uu
cHJvdG90eXBlID0gewotICAgIGlzRXJyb3JPcldhcm5pbmc6IGZ1bmN0aW9uKCkKKyAgICBpc0Vy
cm9yT3JXYXJuaW5nKCkKICAgICB7CiAgICAgICAgIHJldHVybiAodGhpcy5sZXZlbCA9PT0gV2Vi
SW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5XYXJuaW5nIHx8IHRo
aXMubGV2ZWwgPT09IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2
ZWwuRXJyb3IpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlUmVwZWF0Q291bnQ6IGZ1bmN0
aW9uKCkKKyAgICB1cGRhdGVSZXBlYXRDb3VudCgpCiAgICAgewogICAgICAgICAvLyBJbXBsZW1l
bnRlZCBieSBjb25jcmV0ZSBpbnN0YW5jZXMKLSAgICB9LAorICAgIH0KIAotICAgIGNsb25lOiBm
dW5jdGlvbigpCisgICAgY2xvbmUoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkg
Y29uY3JldGUgaW5zdGFuY2VzCiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNv
bGVNZXNzYWdlLmNyZWF0ZSA9IGZ1bmN0aW9uKHNvdXJjZSwgbGV2ZWwsIG1lc3NhZ2UsIHR5cGUs
IHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwg
cmVxdWVzdCkKLXsKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVz
c2FnZUltcGwoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbnVsbCwgdHlwZSwgdXJsLCBsaW5lLCBj
b2x1bW4sIHJlcGVhdENvdW50LCBwYXJhbWV0ZXJzLCBzdGFja1RyYWNlLCByZXF1ZXN0KTsKLX07
Ci0KIC8vIEZJWE1FOiBTd2l0Y2ggdG8gQ29uc29sZUFnZW50LkNvbnNvbGVNZXNzYWdlU291cmNl
LgogV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VTb3VyY2UgPSB7CiAg
ICAgSFRNTDogImh0bWwiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLmpz
CmluZGV4IDEyNDZkYzkuLjU0MmZjOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MZWdhY3lDb25zb2xlTWVz
c2FnZUltcGwuanMKQEAgLTEsNiArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAy
MDA4LCAyMDEzLCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDcsIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBKb3NlcGggUGVjb3Jhcm8KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTI4LDM2ICsyOCwzOSBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
TGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsID0gZnVuY3Rpb24oc291cmNlLCBsZXZlbCwgbWVzc2Fn
ZSwgbGlua2lmaWVyLCB0eXBlLCB1cmwsIGxpbmUsIGNvbHVtbiwgcmVwZWF0Q291bnQsIHBhcmFt
ZXRlcnMsIHN0YWNrVHJhY2UsIHJlcXVlc3QpCitXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1l
c3NhZ2VJbXBsID0gY2xhc3MgTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsIGV4dGVuZHMgV2ViSW5z
cGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlCiB7Ci0gICAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNv
bnNvbGVNZXNzYWdlLmNhbGwodGhpcywgc291cmNlLCBsZXZlbCwgdXJsLCBsaW5lLCBjb2x1bW4s
IHJlcGVhdENvdW50KTsKLQotICAgIHRoaXMuX2xpbmtpZmllciA9IGxpbmtpZmllcjsKLSAgICB0
aGlzLnR5cGUgPSB0eXBlIHx8IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNz
YWdlVHlwZS5Mb2c7Ci0gICAgdGhpcy5fbWVzc2FnZVRleHQgPSBtZXNzYWdlOwotICAgIHRoaXMu
X3BhcmFtZXRlcnMgPSBwYXJhbWV0ZXJzOwotICAgIHRoaXMuX3N0YWNrVHJhY2UgPSBzdGFja1Ry
YWNlOwotICAgIHRoaXMuX3JlcXVlc3QgPSByZXF1ZXN0OwotCi0gICAgdGhpcy5fY3VzdG9tRm9y
bWF0dGVycyA9IHsKLSAgICAgICAgIm9iamVjdCI6IHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFzT2Jq
ZWN0LAotICAgICAgICAiZXJyb3IiOiB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJBc09iamVjdCwKLSAg
ICAgICAgIm1hcCI6IHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFzT2JqZWN0LAotICAgICAgICAic2V0
IjogdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNPYmplY3QsCi0gICAgICAgICJ3ZWFrbWFwIjogdGhp
cy5fZm9ybWF0UGFyYW1ldGVyQXNPYmplY3QsCi0gICAgICAgICJpdGVyYXRvciI6IHRoaXMuX2Zv
cm1hdFBhcmFtZXRlckFzT2JqZWN0LAotICAgICAgICAiY2xhc3MiOiB0aGlzLl9mb3JtYXRQYXJh
bWV0ZXJBc09iamVjdCwKLSAgICAgICAgImFycmF5IjogIHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFz
QXJyYXksCi0gICAgICAgICJub2RlIjogICB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJBc05vZGUsCi0g
ICAgICAgICJzdHJpbmciOiB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJBc1N0cmluZwotICAgIH07Ci19
OwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsK
KyAgICBjb25zdHJ1Y3Rvcihzb3VyY2UsIGxldmVsLCBtZXNzYWdlLCBsaW5raWZpZXIsIHR5cGUs
IHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCwgcGFyYW1ldGVycywgc3RhY2tUcmFjZSwg
cmVxdWVzdCkKKyAgICB7CisgICAgICAgIHN1cGVyKHNvdXJjZSwgbGV2ZWwsIHVybCwgbGluZSwg
Y29sdW1uLCByZXBlYXRDb3VudCk7CisKKyAgICAgICAgdGhpcy5fbGlua2lmaWVyID0gbGlua2lm
aWVyOworICAgICAgICB0aGlzLnR5cGUgPSB0eXBlIHx8IFdlYkluc3BlY3Rvci5MZWdhY3lDb25z
b2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5Mb2c7CisgICAgICAgIHRoaXMuX21lc3NhZ2VUZXh0ID0g
bWVzc2FnZTsKKyAgICAgICAgdGhpcy5fcGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgICAg
IHRoaXMuX3N0YWNrVHJhY2UgPSBzdGFja1RyYWNlOworICAgICAgICB0aGlzLl9yZXF1ZXN0ID0g
cmVxdWVzdDsKKworICAgICAgICB0aGlzLl9jdXN0b21Gb3JtYXR0ZXJzID0geworICAgICAgICAg
ICAgIm9iamVjdCI6IHRoaXMuX2Zvcm1hdFBhcmFtZXRlckFzT2JqZWN0LAorICAgICAgICAgICAg
ImVycm9yIjogdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNPYmplY3QsCisgICAgICAgICAgICAibWFw
IjogdGhpcy5fZm9ybWF0UGFyYW1ldGVyQXNPYmplY3QsCisgICAgICAgICAgICAic2V0IjogdGhp
cy5fZm9ybWF0UGFyYW1ldGVyQXNPYmplY3QsCisgICAgICAgICAgICAid2Vha21hcCI6IHRoaXMu
X2Zvcm1hdFBhcmFtZXRlckFzT2JqZWN0LAorICAgICAgICAgICAgIml0ZXJhdG9yIjogdGhpcy5f
Zm9ybWF0UGFyYW1ldGVyQXNPYmplY3QsCisgICAgICAgICAgICAiY2xhc3MiOiB0aGlzLl9mb3Jt
YXRQYXJhbWV0ZXJBc09iamVjdCwKKyAgICAgICAgICAgICJhcnJheSI6ICB0aGlzLl9mb3JtYXRQ
YXJhbWV0ZXJBc0FycmF5LAorICAgICAgICAgICAgIm5vZGUiOiAgIHRoaXMuX2Zvcm1hdFBhcmFt
ZXRlckFzTm9kZSwKKyAgICAgICAgICAgICJzdHJpbmciOiB0aGlzLl9mb3JtYXRQYXJhbWV0ZXJB
c1N0cmluZworICAgICAgICB9OworICAgIH0KIAotICAgIGVuZm9yY2VzQ2xpcGJvYXJkUHJlZml4
U3RyaW5nOiB0cnVlLAorICAgIGdldCBlbmZvcmNlc0NsaXBib2FyZFByZWZpeFN0cmluZygpCisg
ICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKLSAgICBfZm9ybWF0TWVzc2FnZTog
ZnVuY3Rpb24oKQorICAgIF9mb3JtYXRNZXNzYWdlKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Zv
cm1hdHRlZE1lc3NhZ2UgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAg
IHRoaXMuX2Zvcm1hdHRlZE1lc3NhZ2UuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZS10ZXh0
IjsKQEAgLTE1NSwxOSArMTU4LDE5IEBAIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2Fn
ZUltcGwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgaW5saW5l
IG1lc3NhZ2UgYnViYmxlcyBpbiBTb3VyY2VGcmFtZXMsIG9yIG90aGVyIHBsYWluLXRleHQgcmVw
cmVzZW50YXRpb25zLgogICAgICAgICB0aGlzLl9tZXNzYWdlID0gbWVzc2FnZVRleHQudGV4dENv
bnRlbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvdWxkRHVtcFN0YWNrVHJhY2U6IGZ1bmN0
aW9uKCkKKyAgICBfc2hvdWxkRHVtcFN0YWNrVHJhY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJu
ICEhdGhpcy5fc3RhY2tUcmFjZSAmJiB0aGlzLl9zdGFja1RyYWNlLmxlbmd0aCAmJiAodGhpcy5z
b3VyY2UgPT09IFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlU291cmNl
Lk5ldHdvcmsgfHwgdGhpcy5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNz
YWdlLk1lc3NhZ2VMZXZlbC5FcnJvciB8fCB0aGlzLnR5cGUgPT09IFdlYkluc3BlY3Rvci5MZWdh
Y3lDb25zb2xlTWVzc2FnZS5NZXNzYWdlVHlwZS5UcmFjZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfc2hvdWxkSGlkZVVSTDogZnVuY3Rpb24odXJsKQorICAgIF9zaG91bGRIaWRlVVJMKHVybCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB1cmwgPT09ICJ1bmRlZmluZWQiIHx8IHVybCA9PT0gIltu
YXRpdmUgY29kZV0iOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZpcnN0Tm9uTmF0aXZlQ2FsbEZy
YW1lOiBmdW5jdGlvbigpCisgICAgX2ZpcnN0Tm9uTmF0aXZlQ2FsbEZyYW1lKCkKICAgICB7CiAg
ICAgICAgIGlmICghdGhpcy5fc3RhY2tUcmFjZSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwpA
QCAtMTgwLDQyICsxODMsNDIgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1w
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBtZXNzYWdlKCkKICAgICB7CiAgICAgICAgIC8vIGZvcmNlIG1l
c3NhZ2UgZm9ybWF0dGluZwogICAgICAgICB2YXIgZm9ybWF0dGVkTWVzc2FnZSA9IHRoaXMuZm9y
bWF0dGVkTWVzc2FnZTsKICAgICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2U7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZm9ybWF0dGVkTWVzc2FnZSgpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuX2Zvcm1hdHRlZE1lc3NhZ2UpCiAgICAgICAgICAgICB0aGlzLl9mb3JtYXRNZXNzYWdlKCk7
CiAgICAgICAgIHJldHVybiB0aGlzLl9mb3JtYXR0ZWRNZXNzYWdlOwotICAgIH0sCisgICAgfQog
Ci0gICAgX2xpbmtpZnlMb2NhdGlvbjogZnVuY3Rpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpCisgICAgX2xpbmtpZnlMb2NhdGlvbih1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cikKICAgICB7CiAgICAgICAgIC8vIENvbnNvbGVNZXNzYWdlIHN0YWNrIHRyYWNlIGxpbmUgbnVt
YmVycyBhcmUgb25lLWJhc2VkLgogICAgICAgICBsaW5lTnVtYmVyID0gbGluZU51bWJlciA/IGxp
bmVOdW1iZXIgLSAxIDogMDsKICAgICAgICAgY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyID8g
Y29sdW1uTnVtYmVyIC0gMSA6IDA7CiAKICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5saW5r
aWZ5TG9jYXRpb24odXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICJjb25zb2xlLW1lc3Nh
Z2UtdXJsIik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbGlua2lmeUNhbGxGcmFtZTogZnVuY3Rp
b24oY2FsbEZyYW1lKQorICAgIF9saW5raWZ5Q2FsbEZyYW1lKGNhbGxGcmFtZSkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9saW5raWZ5TG9jYXRpb24oY2FsbEZyYW1lLnVybCwgY2FsbEZy
YW1lLmxpbmVOdW1iZXIsIGNhbGxGcmFtZS5jb2x1bW5OdW1iZXIpOwotICAgIH0sCisgICAgfQog
Ci0gICAgaXNFcnJvck9yV2FybmluZzogZnVuY3Rpb24oKQorICAgIGlzRXJyb3JPcldhcm5pbmco
KQogICAgIHsKICAgICAgICAgcmV0dXJuICh0aGlzLmxldmVsID09PSBXZWJJbnNwZWN0b3IuTGVn
YWN5Q29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsLldhcm5pbmcgfHwgdGhpcy5sZXZlbCA9PT0g
V2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbC5FcnJvcik7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0OiBmdW5jdGlvbihwYXJhbWV0ZXJzKQorICAgIF9m
b3JtYXQocGFyYW1ldGVycykKICAgICB7CiAgICAgICAgIC8vIFRoaXMgbm9kZSBpcyB1c2VkIGxp
a2UgYSBCdWlsZGVyLiBWYWx1ZXMgYXJlIGNvbnRpbnVhbGx5IGFwcGVuZGVkIG9udG8gaXQuCiAg
ICAgICAgIHZhciBmb3JtYXR0ZWRSZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7CkBAIC0yNjcsOSArMjcwLDkgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdl
SW1wbC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZm9ybWF0dGVk
UmVzdWx0OwotICAgIH0sCisgICAgfQogCi0gICAgX2lzRXhwYW5kYWJsZTogZnVuY3Rpb24ocmVt
b3RlT2JqZWN0KSB7CisgICAgX2lzRXhwYW5kYWJsZShyZW1vdGVPYmplY3QpIHsKICAgICAgICAg
aWYgKCFyZW1vdGVPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI3Nyw5
ICsyODAsOSBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICByZXR1cm4gcmVtb3Rl
T2JqZWN0Lmhhc0NoaWxkcmVuOwotICAgIH0sCisgICAgfQogCi0gICAgX2Zvcm1hdFBhcmFtZXRl
cjogZnVuY3Rpb24ob3V0cHV0LCBmb3JjZU9iamVjdEZvcm1hdCkKKyAgICBfZm9ybWF0UGFyYW1l
dGVyKG91dHB1dCwgZm9yY2VPYmplY3RGb3JtYXQpCiAgICAgewogICAgICAgICB2YXIgdHlwZTsK
ICAgICAgICAgaWYgKGZvcmNlT2JqZWN0Rm9ybWF0KQpAQCAtMzAwLDQ3ICszMDMsNDcgQEAgV2Vi
SW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgZm9ybWF0dGVyLmNhbGwodGhpcywgb3V0cHV0LCBzcGFuLCBmb3JjZU9iamVjdEZvcm1hdCk7
CiAgICAgICAgIHJldHVybiBzcGFuOwotICAgIH0sCisgICAgfQogCi0gICAgX2Zvcm1hdFBhcmFt
ZXRlckFzVmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCBlbGVtKQorICAgIF9mb3JtYXRQYXJhbWV0ZXJB
c1ZhbHVlKHZhbHVlLCBlbGVtKQogICAgIHsKICAgICAgICAgZWxlbS5hcHBlbmRDaGlsZChXZWJJ
bnNwZWN0b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRlRWxlbWVudEZvclJlbW90ZU9iamVjdCh2YWx1
ZSkpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Zvcm1hdFBhcmFtZXRlckFzT2JqZWN0OiBmdW5j
dGlvbihvYmosIGVsZW0sIGZvcmNlRXhwYW5zaW9uKQorICAgIF9mb3JtYXRQYXJhbWV0ZXJBc09i
amVjdChvYmosIGVsZW0sIGZvcmNlRXhwYW5zaW9uKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6
IFNob3VsZCBoYXZlIGEgYmV0dGVyIE9iamVjdFRyZWVWaWV3IG1vZGUgZm9yIGNsYXNzZXMgKHN0
YXRpYyBtZXRob2RzIGFuZCBtZXRob2RzKS4KICAgICAgICAgdGhpcy5fb2JqZWN0VHJlZSA9IG5l
dyBXZWJJbnNwZWN0b3IuT2JqZWN0VHJlZVZpZXcob2JqLCBudWxsLCB0aGlzLl9yb290UHJvcGVy
dHlQYXRoRm9yT2JqZWN0KG9iaiksIGZvcmNlRXhwYW5zaW9uKTsKICAgICAgICAgZWxlbS5hcHBl
bmRDaGlsZCh0aGlzLl9vYmplY3RUcmVlLmVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2Zvcm1hdFBhcmFtZXRlckFzU3RyaW5nOiBmdW5jdGlvbihvdXRwdXQsIGVsZW0pCisgICAgX2Zv
cm1hdFBhcmFtZXRlckFzU3RyaW5nKG91dHB1dCwgZWxlbSkKICAgICB7CiAgICAgICAgIHZhciBz
cGFuID0gV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNyZWF0ZUxpbmtpZmllZEVsZW1lbnRT
dHJpbmcob3V0cHV0LmRlc2NyaXB0aW9uKTsKICAgICAgICAgZWxlbS5hcHBlbmRDaGlsZChzcGFu
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mb3JtYXRQYXJhbWV0ZXJBc05vZGU6IGZ1bmN0aW9u
KG9iamVjdCwgZWxlbSkKKyAgICBfZm9ybWF0UGFyYW1ldGVyQXNOb2RlKG9iamVjdCwgZWxlbSkK
ICAgICB7CiAgICAgICAgIHZhciBzcGFuID0gV2ViSW5zcGVjdG9yLkZvcm1hdHRlZFZhbHVlLmNy
ZWF0ZUVsZW1lbnRGb3JOb2RlKG9iamVjdCk7CiAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQoc3Bh
bik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0UGFyYW1ldGVyQXNBcnJheTogZnVuY3Rp
b24oYXJyLCBlbGVtKQorICAgIF9mb3JtYXRQYXJhbWV0ZXJBc0FycmF5KGFyciwgZWxlbSkKICAg
ICB7CiAgICAgICAgIHRoaXMuX29iamVjdFRyZWUgPSBuZXcgV2ViSW5zcGVjdG9yLk9iamVjdFRy
ZWVWaWV3KGFyciwgV2ViSW5zcGVjdG9yLk9iamVjdFRyZWVWaWV3Lk1vZGUuUHJvcGVydGllcywg
dGhpcy5fcm9vdFByb3BlcnR5UGF0aEZvck9iamVjdChhcnIpKTsKICAgICAgICAgZWxlbS5hcHBl
bmRDaGlsZCh0aGlzLl9vYmplY3RUcmVlLmVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAg
X3Jvb3RQcm9wZXJ0eVBhdGhGb3JPYmplY3Q6IGZ1bmN0aW9uKG9iamVjdCkKKyAgICBfcm9vdFBy
b3BlcnR5UGF0aEZvck9iamVjdChvYmplY3QpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuc2F2
ZWRSZXN1bHRJbmRleCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCiAgICAgICAgIHJldHVy
biBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5UGF0aChvYmplY3QsICIkIiArIHRoaXMuc2F2ZWRS
ZXN1bHRJbmRleCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXNlclByb3ZpZGVkQ29sdW1uTmFt
ZXM6IGZ1bmN0aW9uKGNvbHVtbk5hbWVzQXJndW1lbnQpCisgICAgX3VzZXJQcm92aWRlZENvbHVt
bk5hbWVzKGNvbHVtbk5hbWVzQXJndW1lbnQpCiAgICAgewogICAgICAgICBpZiAoIWNvbHVtbk5h
bWVzQXJndW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTM2Myw5ICszNjYsOSBA
QCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIHJldHVybiBleHRyYWN0ZWRDb2x1bW5OYW1lcy5sZW5ndGggPyBl
eHRyYWN0ZWRDb2x1bW5OYW1lcyA6IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZm9ybWF0
UGFyYW1ldGVyQXNUYWJsZTogZnVuY3Rpb24ocGFyYW1ldGVycykKKyAgICBfZm9ybWF0UGFyYW1l
dGVyQXNUYWJsZShwYXJhbWV0ZXJzKQogICAgIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHZhciB0YWJsZSA9IHBhcmFtZXRl
cnNbMF07CkBAIC0zOTQsNyArMzk3LDcgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNz
YWdlSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAg
ICAgICAgICAgICAgICAgdmFyIHJvd1ZhbHVlID0ge307Ci0gICAgICAgICAgICAgICAgY29uc3Qg
bWF4Q29sdW1uc1RvUmVuZGVyID0gMTA7CisgICAgICAgICAgICAgICAgdmFyIG1heENvbHVtbnNU
b1JlbmRlciA9IDEwOwogICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcm93UHJl
dmlldy5wcm9wZXJ0eVByZXZpZXdzLmxlbmd0aDsgKytqKSB7CiAgICAgICAgICAgICAgICAgICAg
IHZhciBjZWxsUHJvcGVydHkgPSByb3dQcmV2aWV3LnByb3BlcnR5UHJldmlld3Nbal07CiAgICAg
ICAgICAgICAgICAgICAgIHZhciBjb2x1bW5SZW5kZXJlZCA9IGNvbHVtbk5hbWVzLmNvbnRhaW5z
KGNlbGxQcm9wZXJ0eS5uYW1lKTsKQEAgLTQxMyw3ICs0MTYsNyBAQCBXZWJJbnNwZWN0b3IuTGVn
YWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBJZiB0aGVy
ZSB3ZXJlIHZhbHVlUHJldmlld3MsIGNvbnZlcnQgdG8gYSBmbGF0IGxpc3QuCiAgICAgICAgIGlm
IChyb3dzLmxlbmd0aCkgewotICAgICAgICAgICAgY29uc3QgZW1EYXNoID0gIlx1MjAxNCI7Cisg
ICAgICAgICAgICB2YXIgZW1EYXNoID0gIlx1MjAxNCI7CiAgICAgICAgICAgICBjb2x1bW5OYW1l
cy51bnNoaWZ0KFdlYkluc3BlY3Rvci5VSVN0cmluZygiKEluZGV4KSIpKTsKICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgcm93cy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgICAg
IHZhciByb3dOYW1lID0gcm93c1tpXVswXTsKQEAgLTQ1OCw5ICs0NjEsOSBAQCBXZWJJbnNwZWN0
b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxlbWVu
dC5hcHBlbmRDaGlsZChkYXRhR3JpZC5lbGVtZW50KTsKIAogICAgICAgICByZXR1cm4gZWxlbWVu
dDsKLSAgICB9LAorICAgIH0KIAotICAgIF9mb3JtYXRXaXRoU3Vic3RpdHV0aW9uU3RyaW5nOiBm
dW5jdGlvbihwYXJhbWV0ZXJzLCBmb3JtYXR0ZWRSZXN1bHQpCisgICAgX2Zvcm1hdFdpdGhTdWJz
dGl0dXRpb25TdHJpbmcocGFyYW1ldGVycywgZm9ybWF0dGVkUmVzdWx0KQogICAgIHsKICAgICAg
ICAgdmFyIGZvcm1hdHRlcnMgPSB7fTsKIApAQCAtNTQ5LDkgKzU1Miw5IEBAIFdlYkluc3BlY3Rv
ci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFN0
cmluZy5mb3JtYXQgZG9lcyB0cmVhdCBmb3JtYXR0ZWRSZXN1bHQgbGlrZSBhIEJ1aWxkZXIsIHJl
c3VsdCBpcyBhbiBvYmplY3QuCiAgICAgICAgIHJldHVybiBTdHJpbmcuZm9ybWF0KHBhcmFtZXRl
cnNbMF0uZGVzY3JpcHRpb24sIHBhcmFtZXRlcnMuc2xpY2UoMSksIGZvcm1hdHRlcnMsIGZvcm1h
dHRlZFJlc3VsdCwgYXBwZW5kKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRlY29yYXRlTWVzc2Fn
ZUVsZW1lbnQ6IGZ1bmN0aW9uKGVsZW1lbnQpCisgICAgZGVjb3JhdGVNZXNzYWdlRWxlbWVudChl
bGVtZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQpCiAgICAgICAgICAgICBy
ZXR1cm4gdGhpcy5fZWxlbWVudDsKQEAgLTU5Myw5ICs1OTYsOSBAQCBXZWJJbnNwZWN0b3IuTGVn
YWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMudXBk
YXRlUmVwZWF0Q291bnQoKTsKIAogICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9LAorICAg
IH0KIAotICAgIHRvTWVzc2FnZUVsZW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICB0b01lc3NhZ2VFbGVt
ZW50KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50KQogICAgICAgICAgICAgcmV0
dXJuIHRoaXMuX2VsZW1lbnQ7CkBAIC02MDMsOSArNjA2LDkgQEAgV2ViSW5zcGVjdG9yLkxlZ2Fj
eUNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBlbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuZGVj
b3JhdGVNZXNzYWdlRWxlbWVudChlbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3B1
bGF0ZVN0YWNrVHJhY2VUcmVlRWxlbWVudDogZnVuY3Rpb24ocGFyZW50VHJlZUVsZW1lbnQpCisg
ICAgX3BvcHVsYXRlU3RhY2tUcmFjZVRyZWVFbGVtZW50KHBhcmVudFRyZWVFbGVtZW50KQogICAg
IHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zdGFja1RyYWNlLmxlbmd0aDsg
aSsrKSB7CiAgICAgICAgICAgICB2YXIgZnJhbWUgPSB0aGlzLl9zdGFja1RyYWNlW2ldOwpAQCAt
NjI1LDkgKzYyOCw5IEBAIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgdmFyIHRyZWVFbGVtZW50ID0gbmV3IFdlYkluc3BlY3Rv
ci5UcmVlRWxlbWVudChjb250ZW50KTsKICAgICAgICAgICAgIHBhcmVudFRyZWVFbGVtZW50LmFw
cGVuZENoaWxkKHRyZWVFbGVtZW50KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAg
dXBkYXRlUmVwZWF0Q291bnQ6IGZ1bmN0aW9uKCkgeworICAgIHVwZGF0ZVJlcGVhdENvdW50KCkg
ewogICAgICAgICBpZiAoIXRoaXMucmVwZWF0Q291bnRFbGVtZW50KSB7CiAgICAgICAgICAgICB0
aGlzLnJlcGVhdENvdW50RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsK
ICAgICAgICAgICAgIHRoaXMucmVwZWF0Q291bnRFbGVtZW50LmNsYXNzTmFtZSA9ICJidWJibGUi
OwpAQCAtNjM1LDkgKzYzOCw5IEBAIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUlt
cGwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZvcmUo
dGhpcy5yZXBlYXRDb3VudEVsZW1lbnQsIHRoaXMuX2VsZW1lbnQuZmlyc3RDaGlsZCk7CiAgICAg
ICAgIH0KICAgICAgICAgdGhpcy5yZXBlYXRDb3VudEVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlz
LnJlcGVhdENvdW50OwotICAgIH0sCisgICAgfQogCi0gICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkK
KyAgICB0b1N0cmluZygpCiAgICAgewogICAgICAgICB2YXIgc291cmNlU3RyaW5nOwogICAgICAg
ICBzd2l0Y2ggKHRoaXMuc291cmNlKSB7CkBAIC02OTEsMTQgKzY5NCwxNCBAQCBXZWJJbnNwZWN0
b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAg
ICAgICAgIHJldHVybiBzb3VyY2VTdHJpbmcgKyAiICIgKyB0eXBlU3RyaW5nICsgIiAiICsgdGhp
cy5sZXZlbFN0cmluZyArICI6ICIgKyB0aGlzLmZvcm1hdHRlZE1lc3NhZ2UudGV4dENvbnRlbnQg
KyAiXG4iICsgdGhpcy51cmwgKyAiIGxpbmUgIiArIHRoaXMubGluZTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCB0ZXh0KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlVGV4
dDsKLSAgICB9LAorICAgIH0KIAotICAgIGlzRXF1YWw6IGZ1bmN0aW9uKG1zZykKKyAgICBpc0Vx
dWFsKG1zZykKICAgICB7CiAgICAgICAgIGlmICghbXNnKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtNzI0LDE3ICs3MjcsMTcgQEAgV2ViSW5zcGVjdG9yLkxlZ2FjeUNvbnNvbGVNZXNz
YWdlSW1wbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAmJiAodGhpcy51cmwgPT09IG1zZy51
cmwpCiAgICAgICAgICAgICAmJiAodGhpcy5tZXNzYWdlID09PSBtc2cubWVzc2FnZSkKICAgICAg
ICAgICAgICYmICh0aGlzLl9yZXF1ZXN0ID09PSBtc2cuX3JlcXVlc3QpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHN0YWNrVHJhY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0
YWNrVHJhY2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9uZTogZnVuY3Rpb24oKQorICAgIGNs
b25lKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1l
c3NhZ2UuY3JlYXRlKHRoaXMuc291cmNlLCB0aGlzLmxldmVsLCB0aGlzLl9tZXNzYWdlVGV4dCwg
dGhpcy50eXBlLCB0aGlzLnVybCwgdGhpcy5saW5lLCB0aGlzLmNvbHVtbiwgdGhpcy5yZXBlYXRD
b3VudCwgdGhpcy5fcGFyYW1ldGVycywgdGhpcy5fc3RhY2tUcmFjZSwgdGhpcy5fcmVxdWVzdCk7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGV2ZWxTdHJpbmcoKQogICAgIHsKQEAgLTc1MCwx
NCArNzUzLDE0IEBAIFdlYkluc3BlY3Rvci5MZWdhY3lDb25zb2xlTWVzc2FnZUltcGwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3Nh
Z2UuTWVzc2FnZUxldmVsLkVycm9yOgogICAgICAgICAgICAgICAgIHJldHVybiAiRXJyb3IiOwog
ICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY2xpcGJvYXJkUHJlZml4U3RyaW5n
KCkKICAgICB7CiAgICAgICAgIHJldHVybiAiWyIgKyB0aGlzLmxldmVsU3RyaW5nICsgIl0gIjsK
LSAgICB9LAorICAgIH0KIAotICAgIHRvQ2xpcGJvYXJkU3RyaW5nOiBmdW5jdGlvbihpc1ByZWZp
eE9wdGlvbmFsKQorICAgIHRvQ2xpcGJvYXJkU3RyaW5nKGlzUHJlZml4T3B0aW9uYWwpCiAgICAg
ewogICAgICAgICB2YXIgaXNUcmFjZSA9IHRoaXMuX3Nob3VsZER1bXBTdGFja1RyYWNlKCk7CiAK
QEAgLTc5OCw1ICs4MDEsMyBAQCBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGNsaXBib2FyZFN0cmluZzsKICAgICB9CiB9
OwotCi1XZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2VJbXBsLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuTGVnYWN5Q29uc29sZU1lc3NhZ2UucHJvdG90eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTG9nQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9M
b2dDb250ZW50Vmlldy5qcwppbmRleCA5NTU2M2E5Li5lOTUxMWE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Mb2dDb250ZW50
Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsMTU1ICsyMywxMzkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXBy
ZXNlbnRlZE9iamVjdCkKK1dlYkluc3BlY3Rvci5Mb2dDb250ZW50VmlldyA9IGNsYXNzIExvZ0Nv
bnRlbnRWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5z
cGVjdG9yLkNvbnRlbnRWaWV3LmNhbGwodGhpcywgcmVwcmVzZW50ZWRPYmplY3QpOwotCi0gICAg
dGhpcy5fbmVzdGluZ0xldmVsID0gMDsKLSAgICB0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzID0gW107
Ci0KLSAgICAvLyBGSVhNRTogVHJ5IHRvIHVzZSBhIG1hcmtlciwgaW5zdGVhZCBvZiBhIGxpc3Qg
b2YgbWVzc2FnZXMgdGhhdCBnZXQgcmUtYWRkZWQuCi0gICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNz
YWdlcyA9IFtdOwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9y
LkxvZ0NvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICBjb25zdHJ1Y3RvcihyZXByZXNl
bnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2JqZWN0KTsKIAot
ICAgIHRoaXMubWVzc2FnZXNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0gICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuY2xhc3NOYW1lID0gImNvbnNvbGUtbWVzc2FnZXMi
OwotICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LnRhYkluZGV4ID0gMDsKLSAgICB0aGlzLm1lc3Nh
Z2VzRWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAibG9nIik7Ci0gICAgdGhpcy5tZXNzYWdl
c0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2Vkb3duLmJp
bmQodGhpcykpOwotICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZv
Y3VzIiwgdGhpcy5fZGlkRm9jdXMuYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5tZXNzYWdlc0VsZW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIHRoaXMuX2RpZEJsdXIuYmluZCh0aGlzKSk7Ci0g
ICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMu
X2tleURvd24uYmluZCh0aGlzKSk7Ci0gICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiZHJhZ3N0YXJ0IiwgdGhpcy5fb25kcmFnc3RhcnQuYmluZCh0aGlzKSwgdHJ1ZSk7
Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMubWVzc2FnZXNFbGVtZW50KTsKKyAg
ICAgICAgdGhpcy5fbmVzdGluZ0xldmVsID0gMDsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRNZXNz
YWdlcyA9IFtdOwogCi0gICAgdGhpcy5wcm9tcHQgPSBXZWJJbnNwZWN0b3IucXVpY2tDb25zb2xl
LnByb21wdDsKKyAgICAgICAgLy8gRklYTUU6IFRyeSB0byB1c2UgYSBtYXJrZXIsIGluc3RlYWQg
b2YgYSBsaXN0IG9mIG1lc3NhZ2VzIHRoYXQgZ2V0IHJlLWFkZGVkLgorICAgICAgICB0aGlzLl9w
cm92aXNpb25hbE1lc3NhZ2VzID0gW107CiAKLSAgICB0aGlzLl9rZXlib2FyZFNob3J0Y3V0Q29t
bWFuZEEgPSBuZXcgV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29tbWFuZE9yQ29udHJvbCwgIkEiKTsKLSAgICB0aGlz
Ll9rZXlib2FyZFNob3J0Y3V0RXNjID0gbmV3IFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0
KG51bGwsIFdlYkluc3BlY3Rvci5LZXlib2FyZFNob3J0Y3V0LktleS5Fc2NhcGUpOworICAgICAg
ICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibG9nIik7CiAKLSAgICB0aGlzLl9sb2dWaWV3
Q29udHJvbGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdExvZ1ZpZXdDb250cm9sbGVy
KHRoaXMubWVzc2FnZXNFbGVtZW50LCB0aGlzLmVsZW1lbnQsIHRoaXMucHJvbXB0LCB0aGlzLCAi
Y29uc29sZS1wcm9tcHQtaGlzdG9yeSIpOworICAgICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLm1lc3NhZ2VzRWxl
bWVudC5jbGFzc05hbWUgPSAiY29uc29sZS1tZXNzYWdlcyI7CisgICAgICAgIHRoaXMubWVzc2Fn
ZXNFbGVtZW50LnRhYkluZGV4ID0gMDsKKyAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuc2V0
QXR0cmlidXRlKCJyb2xlIiwgImxvZyIpOworICAgICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZWRvd24uYmluZCh0aGlzKSk7
CisgICAgICAgIHRoaXMubWVzc2FnZXNFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwg
dGhpcy5fZGlkRm9jdXMuYmluZCh0aGlzKSk7CisgICAgICAgIHRoaXMubWVzc2FnZXNFbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9kaWRCbHVyLmJpbmQodGhpcykpOworICAg
ICAgICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhp
cy5fa2V5RG93bi5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5tZXNzYWdlc0VsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiZHJhZ3N0YXJ0IiwgdGhpcy5fb25kcmFnc3RhcnQuYmluZCh0aGlzKSwg
dHJ1ZSk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLm1lc3NhZ2VzRWxl
bWVudCk7CiAKLSAgICB0aGlzLl9zZWFyY2hCYXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNlYXJjaEJh
cigibG9nLXNlYXJjaC1iYXIiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkZpbHRlciBDb25zb2xl
IExvZyIpLCB0aGlzKTsKLSAgICB0aGlzLl9zZWFyY2hCYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuU2VhcmNoQmFyLkV2ZW50LlRleHRDaGFuZ2VkLCB0aGlzLl9zZWFyY2hUZXh0RGlk
Q2hhbmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5wcm9tcHQgPSBXZWJJbnNwZWN0b3IucXVpY2tD
b25zb2xlLnByb21wdDsKIAotICAgIHZhciBzY29wZUJhckl0ZW1zID0gWwotICAgICAgICBuZXcg
V2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbShXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2Nv
cGVzLkFsbCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbGwiKSksCi0gICAgICAgIG5ldyBXZWJJ
bnNwZWN0b3IuU2NvcGVCYXJJdGVtKFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TY29wZXMu
RXJyb3JzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkVycm9ycyIpKSwKLSAgICAgICAgbmV3IFdl
Ykluc3BlY3Rvci5TY29wZUJhckl0ZW0oV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3Bl
cy5XYXJuaW5ncywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJXYXJuaW5ncyIpKSwKLSAgICAgICAg
bmV3IFdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0oV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3
LlNjb3Blcy5Mb2dzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvZ3MiKSkKLSAgICBdOworICAg
ICAgICB0aGlzLl9rZXlib2FyZFNob3J0Y3V0Q29tbWFuZEEgPSBuZXcgV2ViSW5zcGVjdG9yLktl
eWJvYXJkU2hvcnRjdXQoV2ViSW5zcGVjdG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXIuQ29t
bWFuZE9yQ29udHJvbCwgIkEiKTsKKyAgICAgICAgdGhpcy5fa2V5Ym9hcmRTaG9ydGN1dEVzYyA9
IG5ldyBXZWJJbnNwZWN0b3IuS2V5Ym9hcmRTaG9ydGN1dChudWxsLCBXZWJJbnNwZWN0b3IuS2V5
Ym9hcmRTaG9ydGN1dC5LZXkuRXNjYXBlKTsKIAotICAgIHRoaXMuX3Njb3BlQmFyID0gbmV3IFdl
Ykluc3BlY3Rvci5TY29wZUJhcigibG9nLXNjb3BlLWJhciIsIHNjb3BlQmFySXRlbXMsIHNjb3Bl
QmFySXRlbXNbMF0pOwotICAgIHRoaXMuX3Njb3BlQmFyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlNjb3BlQmFyLkV2ZW50LlNlbGVjdGlvbkNoYW5nZWQsIHRoaXMuX3Njb3BlQmFyU2Vs
ZWN0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fbG9nVmlld0NvbnRyb2xsZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRMb2dWaWV3Q29udHJvbGxlcih0aGlzLm1lc3Nh
Z2VzRWxlbWVudCwgdGhpcy5lbGVtZW50LCB0aGlzLnByb21wdCwgdGhpcywgImNvbnNvbGUtcHJv
bXB0LWhpc3RvcnkiKTsKIAotICAgIHZhciB0cmFzaEltYWdlOwotICAgIGlmIChXZWJJbnNwZWN0
b3IuUGxhdGZvcm0uaXNMZWdhY3lNYWNPUykKLSAgICAgICAgdHJhc2hJbWFnZSA9IHtzcmM6ICJJ
bWFnZXMvTGVnYWN5L05hdmlnYXRpb25JdGVtVHJhc2guc3ZnIiwgd2lkdGg6IDE2LCBoZWlnaHQ6
IDE2fTsKLSAgICBlbHNlCi0gICAgICAgIHRyYXNoSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL05hdmln
YXRpb25JdGVtVHJhc2guc3ZnIiwgd2lkdGg6IDE1LCBoZWlnaHQ6IDE1fTsKKyAgICAgICAgdGhp
cy5fc2VhcmNoQmFyID0gbmV3IFdlYkluc3BlY3Rvci5TZWFyY2hCYXIoImxvZy1zZWFyY2gtYmFy
IiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJGaWx0ZXIgQ29uc29sZSBMb2ciKSwgdGhpcyk7Cisg
ICAgICAgIHRoaXMuX3NlYXJjaEJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZWFy
Y2hCYXIuRXZlbnQuVGV4dENoYW5nZWQsIHRoaXMuX3NlYXJjaFRleHREaWRDaGFuZ2UsIHRoaXMp
OwogCi0gICAgdGhpcy5fY2xlYXJMb2dOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3Iu
QnV0dG9uTmF2aWdhdGlvbkl0ZW0oImNsZWFyLWxvZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygi
Q2xlYXIgbG9nICglcyBvciAlcykiKS5mb3JtYXQodGhpcy5fbG9nVmlld0NvbnRyb2xsZXIubWVz
c2FnZXNDbGVhcktleWJvYXJkU2hvcnRjdXQuZGlzcGxheU5hbWUsIHRoaXMuX2xvZ1ZpZXdDb250
cm9sbGVyLm1lc3NhZ2VzQWx0ZXJuYXRlQ2xlYXJLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1l
KSwgdHJhc2hJbWFnZS5zcmMsIHRyYXNoSW1hZ2Uud2lkdGgsIHRyYXNoSW1hZ2UuaGVpZ2h0KTsK
LSAgICB0aGlzLl9jbGVhckxvZ05hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX2NsZWFyTG9n
LCB0aGlzKTsKKyAgICAgICAgdmFyIHNjb3BlQmFySXRlbXMgPSBbCisgICAgICAgICAgICBuZXcg
V2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbShXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2Nv
cGVzLkFsbCwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJBbGwiKSksCisgICAgICAgICAgICBuZXcg
V2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbShXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2Nv
cGVzLkVycm9ycywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJFcnJvcnMiKSksCisgICAgICAgICAg
ICBuZXcgV2ViSW5zcGVjdG9yLlNjb3BlQmFySXRlbShXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZp
ZXcuU2NvcGVzLldhcm5pbmdzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldhcm5pbmdzIikpLAor
ICAgICAgICAgICAgbmV3IFdlYkluc3BlY3Rvci5TY29wZUJhckl0ZW0oV2ViSW5zcGVjdG9yLkxv
Z0NvbnRlbnRWaWV3LlNjb3Blcy5Mb2dzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkxvZ3MiKSkK
KyAgICAgICAgXTsKIAotICAgIHRoaXMuX2NsZWFyTG9nT25SZWxvYWRTZXR0aW5nID0gbmV3IFdl
Ykluc3BlY3Rvci5TZXR0aW5nKCJjbGVhci1sb2ctb24tcmVsb2FkIiwgdHJ1ZSk7CisgICAgICAg
IHRoaXMuX3Njb3BlQmFyID0gbmV3IFdlYkluc3BlY3Rvci5TY29wZUJhcigibG9nLXNjb3BlLWJh
ciIsIHNjb3BlQmFySXRlbXMsIHNjb3BlQmFySXRlbXNbMF0pOworICAgICAgICB0aGlzLl9zY29w
ZUJhci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TY29wZUJhci5FdmVudC5TZWxlY3Rp
b25DaGFuZ2VkLCB0aGlzLl9zY29wZUJhclNlbGVjdGlvbkRpZENoYW5nZSwgdGhpcyk7CiAKLSAg
ICB2YXIgdG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBzcGxpdCBjb25zb2xl
Iik7Ci0gICAgdmFyIGFsdFRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgZnVs
bC1oZWlnaHQgY29uc29sZSIpOworICAgICAgICB2YXIgdHJhc2hJbWFnZTsKKyAgICAgICAgaWYg
KFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TKQorICAgICAgICAgICAgdHJhc2hJ
bWFnZSA9IHtzcmM6ICJJbWFnZXMvTGVnYWN5L05hdmlnYXRpb25JdGVtVHJhc2guc3ZnIiwgd2lk
dGg6IDE2LCBoZWlnaHQ6IDE2fTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdHJhc2hJbWFn
ZSA9IHtzcmM6ICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UcmFzaC5zdmciLCB3aWR0aDogMTUsIGhl
aWdodDogMTV9OwogCi0gICAgdGhpcy5fdG9nZ2xlU3BsaXROYXZpZ2F0aW9uSXRlbSA9IG5ldyBX
ZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNwbGl0LXRvZ2dsZSIsIHRv
b2xUaXAsIGFsdFRvb2xUaXAsIHBsYXRmb3JtSW1hZ2VQYXRoKCJTcGxpdFRvZ2dsZURvd24uc3Zn
IiksIHBsYXRmb3JtSW1hZ2VQYXRoKCJTcGxpdFRvZ2dsZVVwLnN2ZyIpLCAxNiwgMTYpOwotICAg
IHRoaXMuX3RvZ2dsZVNwbGl0TmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlU3Bs
aXQsIHRoaXMpOwotICAgIHRoaXMuX3RvZ2dsZVNwbGl0TmF2aWdhdGlvbkl0ZW0udG9nZ2xlZCA9
IFdlYkluc3BlY3Rvci5pc1Nob3dpbmdTcGxpdENvbnNvbGUoKTsKKyAgICAgICAgdGhpcy5fY2xl
YXJMb2dOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0oImNsZWFyLWxvZyIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ2xlYXIgbG9nICglcyBvciAl
cykiKS5mb3JtYXQodGhpcy5fbG9nVmlld0NvbnRyb2xsZXIubWVzc2FnZXNDbGVhcktleWJvYXJk
U2hvcnRjdXQuZGlzcGxheU5hbWUsIHRoaXMuX2xvZ1ZpZXdDb250cm9sbGVyLm1lc3NhZ2VzQWx0
ZXJuYXRlQ2xlYXJLZXlib2FyZFNob3J0Y3V0LmRpc3BsYXlOYW1lKSwgdHJhc2hJbWFnZS5zcmMs
IHRyYXNoSW1hZ2Uud2lkdGgsIHRyYXNoSW1hZ2UuaGVpZ2h0KTsKKyAgICAgICAgdGhpcy5fY2xl
YXJMb2dOYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25O
YXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9jbGVhckxvZywgdGhpcyk7CiAKLSAg
ICB0aGlzLm1lc3NhZ2VzRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjb250ZXh0bWVudSIsIHRo
aXMuX2hhbmRsZUNvbnRleHRNZW51RXZlbnQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0
aGlzLl9jbGVhckxvZ09uUmVsb2FkU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygi
Y2xlYXItbG9nLW9uLXJlbG9hZCIsIHRydWUpOwogCi0gICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5DbGVhcmVk
LCB0aGlzLl9zZXNzaW9uc0NsZWFyZWQsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5sb2dNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuU2Vzc2lv
blN0YXJ0ZWQsIHRoaXMuX3Nlc3Npb25TdGFydGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3Iu
bG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50
Lk1lc3NhZ2VBZGRlZCwgdGhpcy5fbWVzc2FnZUFkZGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0
b3IubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2
ZW50LlByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhpcy5fcHJldmlvdXNNZXNz
YWdlUmVwZWF0Q291bnRVcGRhdGVkLCB0aGlzKTsKLSAgICBXZWJJbnNwZWN0b3IubG9nTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50LkFjdGl2ZUxv
Z0NsZWFyZWQsIHRoaXMuX2FjdGl2ZUxvZ0NsZWFyZWQsIHRoaXMpOworICAgICAgICB2YXIgdG9v
bFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyBzcGxpdCBjb25zb2xlIik7CisgICAg
ICAgIHZhciBhbHRUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IGZ1bGwtaGVp
Z2h0IGNvbnNvbGUiKTsKIAotICAgIFdlYkluc3BlY3Rvci5GcmFtZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5GcmFtZS5FdmVudC5Qcm92aXNpb25hbExvYWRTdGFydGVkLCB0aGlzLl9w
cm92aXNpb25hbExvYWRTdGFydGVkLCB0aGlzKTsKLX07CisgICAgICAgIHRoaXMuX3RvZ2dsZVNw
bGl0TmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRp
b25JdGVtKCJzcGxpdC10b2dnbGUiLCB0b29sVGlwLCBhbHRUb29sVGlwLCBwbGF0Zm9ybUltYWdl
UGF0aCgiU3BsaXRUb2dnbGVEb3duLnN2ZyIpLCBwbGF0Zm9ybUltYWdlUGF0aCgiU3BsaXRUb2dn
bGVVcC5zdmciKSwgMTYsIDE2KTsKKyAgICAgICAgdGhpcy5fdG9nZ2xlU3BsaXROYXZpZ2F0aW9u
SXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5F
dmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVTcGxpdCwgdGhpcyk7CisgICAgICAgIHRoaXMuX3Rv
Z2dsZVNwbGl0TmF2aWdhdGlvbkl0ZW0udG9nZ2xlZCA9IFdlYkluc3BlY3Rvci5pc1Nob3dpbmdT
cGxpdENvbnNvbGUoKTsKIAotV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNjb3BlcyA9IHsK
LSAgICBBbGw6ICJsb2ctYWxsIiwKLSAgICBFcnJvcnM6ICJsb2ctZXJyb3JzIiwKLSAgICBXYXJu
aW5nczogImxvZy13YXJuaW5ncyIsCi0gICAgTG9nczogImxvZy1sb2dzIgotfTsKKyAgICAgICAg
dGhpcy5tZXNzYWdlc0VsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCB0aGlz
Ll9oYW5kbGVDb250ZXh0TWVudUV2ZW50LmJpbmQodGhpcyksIGZhbHNlKTsKIAotV2ViSW5zcGVj
dG9yLkxvZ0NvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gImxvZyI7Ci1XZWJJbnNwZWN0b3Iu
TG9nQ29udGVudFZpZXcuSXRlbVdyYXBwZXJTdHlsZUNsYXNzTmFtZSA9ICJjb25zb2xlLWl0ZW0i
OwotV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LkZpbHRlcmVkT3V0U3R5bGVDbGFzc05hbWUg
PSAiZmlsdGVyZWQtb3V0IjsKLVdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TZWxlY3RlZFN0
eWxlQ2xhc3NOYW1lID0gInNlbGVjdGVkIjsKLVdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5T
ZWFyY2hJblByb2dyZXNzU3R5bGVDbGFzc05hbWUgPSAic2VhcmNoLWluLXByb2dyZXNzIjsKLVdl
Ykluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5GaWx0ZXJlZE91dEJ5U2VhcmNoU3R5bGVDbGFzc05h
bWUgPSAiZmlsdGVyZWQtb3V0LWJ5LXNlYXJjaCI7Ci1XZWJJbnNwZWN0b3IuTG9nQ29udGVudFZp
ZXcuSGlnaGxpZ2h0ZWRTdHlsZUNsYXNzTmFtZSA9ICJoaWdobGlnaHRlZCI7CisgICAgICAgIFdl
Ykluc3BlY3Rvci5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkxvZ01h
bmFnZXIuRXZlbnQuQ2xlYXJlZCwgdGhpcy5fc2Vzc2lvbnNDbGVhcmVkLCB0aGlzKTsKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
TG9nTWFuYWdlci5FdmVudC5TZXNzaW9uU3RhcnRlZCwgdGhpcy5fc2Vzc2lvblN0YXJ0ZWQsIHRo
aXMpOworICAgICAgICBXZWJJbnNwZWN0b3IubG9nTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Mb2dNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCwgdGhpcy5fbWVzc2FnZUFk
ZGVkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuTG9nTWFuYWdlci5FdmVudC5QcmV2aW91c01lc3NhZ2VSZXBlYXRD
b3VudFVwZGF0ZWQsIHRoaXMuX3ByZXZpb3VzTWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZCwgdGhp
cyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5sb2dNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkxvZ01hbmFnZXIuRXZlbnQuQWN0aXZlTG9nQ2xlYXJlZCwgdGhpcy5fYWN0aXZl
TG9nQ2xlYXJlZCwgdGhpcyk7CiAKLVdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Mb2dDb250ZW50VmlldywKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkZy
YW1lLkV2ZW50LlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQsIHRoaXMuX3Byb3Zpc2lvbmFsTG9hZFN0
YXJ0ZWQsIHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogICAgIGdldCBhbGxvd2VkTmF2
aWdhdGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsKICAgICAgICAgLy8gRG9uJ3Qgc2hvdyBhbnkg
c2lkZWJhcnMgd2hlbiB0aGUgQ29uc29sZSBpcyBvcGVuZWQuCiAgICAgICAgIHJldHVybiBudWxs
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVtcygpCiAgICAgewogICAg
ICAgICByZXR1cm4gW3RoaXMuX3NlYXJjaEJhciwgdGhpcy5fc2NvcGVCYXIsIHRoaXMuX2NsZWFy
TG9nTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3RvZ2dsZVNwbGl0TmF2aWdhdGlvbkl0ZW1dOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IHNjb3BlQmFyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9zY29wZUJhcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBsb2dWaWV3Q29udHJvbGxl
cigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbG9nVmlld0NvbnRyb2xsZXI7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlv
dXQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS51
cGRhdGVMYXlvdXQuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl9zY3JvbGxFbGVtZW50SGVp
Z2h0ID0gdGhpcy5tZXNzYWdlc0VsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0
OwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAg
ICAgewogICAgICAgICB0aGlzLl90b2dnbGVTcGxpdE5hdmlnYXRpb25JdGVtLnRvZ2dsZWQgPSBX
ZWJJbnNwZWN0b3IuaXNTaG93aW5nU3BsaXRDb25zb2xlKCk7CiAKICAgICAgICAgdGhpcy5wcm9t
cHQuZm9jdXMoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLmVsZW1lbnRdOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHNob3VsZEtlZXBFbGVtZW50c1Njcm9sbGVkVG9Cb3R0b20oKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2VhcmNoSW5Qcm9n
cmVzcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5tZXNzYWdlc0VsZW1lbnQuY2xhc3NM
aXN0LmNvbnRhaW5zKFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5TZWFyY2hJblByb2dyZXNz
U3R5bGVDbGFzc05hbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgZGlkQ2xlYXJNZXNzYWdlczog
ZnVuY3Rpb24oKQorICAgIGRpZENsZWFyTWVzc2FnZXMoKQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX2lnbm9yZURpZENsZWFyTWVzc2FnZXMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IFdlYkluc3BlY3Rvci5sb2dNYW5hZ2VyLnJlcXVlc3RDbGVhck1lc3NhZ2VzKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBkaWRBcHBlbmRDb25zb2xlTWVzc2FnZTogZnVuY3Rpb24obWVzc2FnZSkK
KyAgICBkaWRBcHBlbmRDb25zb2xlTWVzc2FnZShtZXNzYWdlKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnF1aWNrQ29uc29sZS51cGRhdGVMYXlvdXQoKTsKIApAQCAtMjA5LDI0ICsxOTMs
MjQgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5zaG93U3BsaXRDb25zb2xlKCk7CiAKICAgICAgICAgdGhpcy5fbG9n
Vmlld0NvbnRyb2xsZXIuc2Nyb2xsVG9Cb3R0b20oKTsKLSAgICB9LAorICAgIH0KIAotICAgIHBy
b21wdERpZENoYW5nZUhlaWdodDogZnVuY3Rpb24oKQorICAgIHByb21wdERpZENoYW5nZUhlaWdo
dCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucXVpY2tDb25zb2xlLnVwZGF0ZUxheW91
dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU2F2ZSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzYXZlRGF0YSgpCiAg
ICAgewogICAgICAgICByZXR1cm4ge3VybDogIndlYi1pbnNwZWN0b3I6Ly8vQ29uc29sZS50eHQi
LCBjb250ZW50OiB0aGlzLl9mb3JtYXRNZXNzYWdlc0FzRGF0YShmYWxzZSksIGZvcmNlU2F2ZUFz
OiB0cnVlfTsKLSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUNvcHlFdmVudDogZnVuY3Rpb24o
ZXZlbnQpCisgICAgaGFuZGxlQ29weUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIz
NCw0OSArMjE4LDQ5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIGV2ZW50LmNsaXBib2FyZERhdGEuc2V0RGF0YSgidGV4dC9wbGFpbiIsIHRoaXMu
X2Zvcm1hdE1lc3NhZ2VzQXNEYXRhKHRydWUpKTsKICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0
aW9uKCk7CiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBmb2N1c1NlYXJjaEJhcjogZnVuY3Rpb24oKQorICAgIGZvY3VzU2VhcmNoQmFyKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3NlYXJjaEJhci5mb2N1cygpOwotICAgIH0sCisgICAgfQogCi0g
ICAgaGlnaGxpZ2h0UHJldmlvdXNTZWFyY2hNYXRjaDogZnVuY3Rpb24oKQorICAgIGhpZ2hsaWdo
dFByZXZpb3VzU2VhcmNoTWF0Y2goKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlYXJjaElu
UHJvZ3Jlc3MgfHwgaXNFbXB0eU9iamVjdCh0aGlzLl9zZWFyY2hNYXRjaGVzKSkKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9zZWxlY3RlZFNlYXJjaE1h
dGNoID8gdGhpcy5fc2VhcmNoTWF0Y2hlcy5pbmRleE9mKHRoaXMuX3NlbGVjdGVkU2VhcmNoTWF0
Y2gpIDogdGhpcy5fc2VhcmNoTWF0Y2hlcy5sZW5ndGg7CiAgICAgICAgIHRoaXMuX2hpZ2hsaWdo
dFNlYXJjaE1hdGNoQXRJbmRleChpbmRleCAtIDEpOwotICAgIH0sCisgICAgfQogCi0gICAgaGln
aGxpZ2h0TmV4dFNlYXJjaE1hdGNoOiBmdW5jdGlvbigpCisgICAgaGlnaGxpZ2h0TmV4dFNlYXJj
aE1hdGNoKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5zZWFyY2hJblByb2dyZXNzIHx8IGlz
RW1wdHlPYmplY3QodGhpcy5fc2VhcmNoTWF0Y2hlcykpCiAgICAgICAgICAgICByZXR1cm47CiAK
ICAgICAgICAgdmFyIGluZGV4ID0gdGhpcy5fc2VsZWN0ZWRTZWFyY2hNYXRjaCA/IHRoaXMuX3Nl
YXJjaE1hdGNoZXMuaW5kZXhPZih0aGlzLl9zZWxlY3RlZFNlYXJjaE1hdGNoKSArIDEgOiAwOwog
ICAgICAgICB0aGlzLl9oaWdobGlnaHRTZWFyY2hNYXRjaEF0SW5kZXgoaW5kZXgpOwotICAgIH0s
CisgICAgfQogCi0gICAgc2VhcmNoQmFyV2FudHNUb0xvc2VGb2N1czogZnVuY3Rpb24oc2VhcmNo
QmFyKQorICAgIHNlYXJjaEJhcldhbnRzVG9Mb3NlRm9jdXMoc2VhcmNoQmFyKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkTWVzc2FnZXMubGVuZ3RoKQogICAgICAgICAgICAgdGhp
cy5tZXNzYWdlc0VsZW1lbnQuZm9jdXMoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhp
cy5wcm9tcHQuZm9jdXMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlYXJjaEJhckRpZEFjdGl2
YXRlOiBmdW5jdGlvbihzZWFyY2hCYXIpCisgICAgc2VhcmNoQmFyRGlkQWN0aXZhdGUoc2VhcmNo
QmFyKQogICAgIHsKICAgICAgICAgaWYgKCFpc0VtcHR5T2JqZWN0KHRoaXMuX3NlYXJjaE1hdGNo
ZXMpKQogICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2VhcmNoTWF0Y2hBdEluZGV4KDApOwog
ICAgICAgICB0aGlzLnByb21wdC5mb2N1cygpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQogCi0gICAgX2Zvcm1hdE1lc3NhZ2VzQXNEYXRhOiBmdW5jdGlvbihvbmx5U2VsZWN0ZWQp
CisgICAgX2Zvcm1hdE1lc3NhZ2VzQXNEYXRhKG9ubHlTZWxlY3RlZCkKICAgICB7CiAgICAgICAg
IHZhciBtZXNzYWdlcyA9IHRoaXMuX2FsbE1lc3NhZ2VzKCk7CiAKQEAgLTMwMiwxNiArMjg2LDE2
IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0p
OwogCiAgICAgICAgIHJldHVybiBkYXRhOwotICAgIH0sCisgICAgfQogCi0gICAgX3Nlc3Npb25z
Q2xlYXJlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Nlc3Npb25zQ2xlYXJlZChldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX2lnbm9yZURpZENsZWFyTWVzc2FnZXMgPSB0cnVlOwogICAgICAg
ICB0aGlzLl9sb2dWaWV3Q29udHJvbGxlci5jbGVhcigpOwogICAgICAgICB0aGlzLl9pZ25vcmVE
aWRDbGVhck1lc3NhZ2VzID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2Vzc2lvblN0
YXJ0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zZXNzaW9uU3RhcnRlZChldmVudCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl9jbGVhckxvZ09uUmVsb2FkU2V0dGluZy52YWx1ZSkgIHsKICAg
ICAgICAgICAgIHRoaXMuX2NsZWFyTG9nKCk7CkBAIC0zMjIsOSArMzA2LDkgQEAgV2ViSW5zcGVj
dG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbG9nVmlld0Nv
bnRyb2xsZXIuc3RhcnROZXdTZXNzaW9uKCk7CiAKICAgICAgICAgdGhpcy5fY2xlYXJQcm92aXNp
b25hbFN0YXRlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbWVzc2FnZUFkZGVkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfbWVzc2FnZUFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRo
aXMuX3N0YXJ0ZWRQcm92aXNpb25hbExvYWQpCiAgICAgICAgICAgICB0aGlzLl9wcm92aXNpb25h
bE1lc3NhZ2VzLnB1c2goZXZlbnQuZGF0YS5tZXNzYWdlKTsKQEAgLTMzMiwxNCArMzE2LDE0IEBA
IFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBt
ZXNzYWdlID0gdGhpcy5fbG9nVmlld0NvbnRyb2xsZXIuYXBwZW5kQ29uc29sZU1lc3NhZ2UoZXZl
bnQuZGF0YS5tZXNzYWdlKTsKICAgICAgICAgaWYgKG1lc3NhZ2UudHlwZSAhPT0gV2ViSW5zcGVj
dG9yLkxlZ2FjeUNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VUeXBlLkVuZEdyb3VwKQogICAgICAgICAg
ICAgdGhpcy5fZmlsdGVyTWVzc2FnZXMoW21lc3NhZ2UudG9NZXNzYWdlRWxlbWVudCgpXSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfcHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfcHJldmlvdXNNZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkKGV2
ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fbG9nVmlld0NvbnRyb2xsZXIudXBkYXRlUHJldmlv
dXNNZXNzYWdlUmVwZWF0Q291bnQoZXZlbnQuZGF0YS5jb3VudCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBfaGFuZGxlQ29udGV4dE1lbnVFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2hhbmRs
ZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIXdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5pc0NvbGxhcHNlZCkgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBz
ZWxlY3Rpb24sIHdlIHdhbnQgdG8gc2hvdyBvdXIgbm9ybWFsIGNvbnRleHQgbWVudQpAQCAtMzYw
LDkgKzM0NCw5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oY2xlYXJMb2dPblJlbG9hZFVJU3RyaW5nLCB0
aGlzLl90b2dnbGVDbGVhckxvZ09uUmVsb2FkU2V0dGluZy5iaW5kKHRoaXMpKTsKIAogICAgICAg
ICBjb250ZXh0TWVudS5zaG93KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2Vkb3duOiBm
dW5jdGlvbihldmVudCkKKyAgICBfbW91c2Vkb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYg
KGV2ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMzg0LDE2ICszNjgsMTYgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwg
dGhpcyk7CiAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIiwgdGhpcyk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGFyZ2V0SW5NZXNzYWdlQ2FuQmVTZWxlY3RlZDogZnVu
Y3Rpb24odGFyZ2V0LCBtZXNzYWdlKQorICAgIF90YXJnZXRJbk1lc3NhZ2VDYW5CZVNlbGVjdGVk
KHRhcmdldCwgbWVzc2FnZSkKICAgICB7CiAgICAgICAgIGlmICh0YXJnZXQuZW5jbG9zaW5nTm9k
ZU9yU2VsZldpdGhOb2RlTmFtZSgiYSIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3VzZW1vdmU6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9tb3VzZW1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2Vs
ZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOwogICAgICAgICB2YXIgd3JhcHBlciA9IGV2
ZW50LnRhcmdldC5lbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKFdlYkluc3BlY3Rvci5Mb2dD
b250ZW50Vmlldy5JdGVtV3JhcHBlclN0eWxlQ2xhc3NOYW1lKTsKQEAgLTQyNiw5ICs0MTAsOSBA
QCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2
ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX21vdXNldXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3Vz
ZXVwKGV2ZW50KQogICAgIHsKICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1v
dXNlbW92ZSIsIHRoaXMpOwogICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91
c2V1cCIsIHRoaXMpOwpAQCAtNDU4LDE3ICs0NDIsMTcgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgZGVsZXRlIHRoaXMuX21vdXNlRG93bldyYXBw
ZXI7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9tb3VzZURvd25TaGlmdEtleTsKICAgICAgICAgZGVs
ZXRlIHRoaXMuX21vdXNlRG93bkNvbW1hbmRLZXk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfb25k
cmFnc3RhcnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9vbmRyYWdzdGFydChldmVudCkKICAgICB7
CiAgICAgICAgIGlmIChldmVudC50YXJnZXQuZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyhX
ZWJJbnNwZWN0b3IuRE9NVHJlZU91dGxpbmUuU3R5bGVDbGFzc05hbWUpKSB7CiAgICAgICAgICAg
ICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIGhhbmRsZUV2ZW50OiBmdW5j
dGlvbihldmVudCkKKyAgICBoYW5kbGVFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHN3aXRj
aCAoZXZlbnQudHlwZSkgewogICAgICAgICBjYXNlICJtb3VzZW1vdmUiOgpAQCAtNDc4LDkgKzQ2
Miw5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB0aGlzLl9tb3VzZXVwKGV2ZW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBkYXRlTWVzc2FnZXNTZWxlY3Rpb246IGZ1bmN0aW9u
KG1lc3NhZ2UsIG11bHRpcGxlU2VsZWN0aW9uLCByYW5nZVNlbGVjdGlvbiwgc2hvdWxkU2Nyb2xs
SW50b1ZpZXcpCisgICAgX3VwZGF0ZU1lc3NhZ2VzU2VsZWN0aW9uKG1lc3NhZ2UsIG11bHRpcGxl
U2VsZWN0aW9uLCByYW5nZVNlbGVjdGlvbiwgc2hvdWxkU2Nyb2xsSW50b1ZpZXcpCiAgICAgewog
ICAgICAgICB2YXIgYWxyZWFkeVNlbGVjdGVkTWVzc2FnZSA9IHRoaXMuX3NlbGVjdGVkTWVzc2Fn
ZXMuY29udGFpbnMobWVzc2FnZSk7CiAgICAgICAgIGlmIChhbHJlYWR5U2VsZWN0ZWRNZXNzYWdl
ICYmIHRoaXMuX3NlbGVjdGVkTWVzc2FnZXMubGVuZ3RoICYmIG11bHRpcGxlU2VsZWN0aW9uKSB7
CkBAIC01MjgsOSArNTEyLDkgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICBpZiAoc2hvdWxkU2Nyb2xsSW50b1ZpZXcgJiYgIWFscmVhZHlTZWxl
Y3RlZE1lc3NhZ2UpCiAgICAgICAgICAgICB0aGlzLl9lbnN1cmVNZXNzYWdlSXNWaXNpYmxlKHRo
aXMuX3NlbGVjdGVkTWVzc2FnZXMubGFzdFZhbHVlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9l
bnN1cmVNZXNzYWdlSXNWaXNpYmxlOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIF9lbnN1cmVNZXNz
YWdlSXNWaXNpYmxlKG1lc3NhZ2UpCiAgICAgewogICAgICAgICBpZiAoIW1lc3NhZ2UpCiAgICAg
ICAgICAgICByZXR1cm47CkBAIC01NTEsMTUgKzUzNSwxNSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgaWYgKHkgPiB0aGlzLl9zY3JvbGxF
bGVtZW50SGVpZ2h0KQogICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zY3JvbGxUb3AgKz0g
eSAtIHRoaXMuX3Njcm9sbEVsZW1lbnRIZWlnaHQ7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0K
IAotICAgIF9wb3NpdGlvbkZvck1lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgX3Bvc2l0
aW9uRm9yTWVzc2FnZShtZXNzYWdlKQogICAgIHsKICAgICAgICAgdmFyIHBhZ2VQb2ludCA9IHdp
bmRvdy53ZWJraXRDb252ZXJ0UG9pbnRGcm9tTm9kZVRvUGFnZShtZXNzYWdlLCBuZXcgV2ViS2l0
UG9pbnQoMCwgMCkpOwogICAgICAgICByZXR1cm4gd2luZG93LndlYmtpdENvbnZlcnRQb2ludEZy
b21QYWdlVG9Ob2RlKHRoaXMuZWxlbWVudCwgcGFnZVBvaW50KTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9pc01lc3NhZ2VWaXNpYmxlOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIF9pc01lc3NhZ2VW
aXNpYmxlKG1lc3NhZ2UpCiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IG1lc3NhZ2U7CiAKQEAg
LTU3OSwyMyArNTYzLDIzIEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9pc01lc3NhZ2VTZWxlY3RlZDogZnVuY3Rpb24obWVzc2FnZSkKKyAgICBfaXNNZXNzYWdl
U2VsZWN0ZWQobWVzc2FnZSkKICAgICB7CiAgICAgICAgIHJldHVybiBtZXNzYWdlLmNsYXNzTGlz
dC5jb250YWlucyhXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2VsZWN0ZWRTdHlsZUNsYXNz
TmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY2xlYXJNZXNzYWdlc1NlbGVjdGlvbjogZnVu
Y3Rpb24oKQorICAgIF9jbGVhck1lc3NhZ2VzU2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX3NlbGVjdGVkTWVzc2FnZXMuZm9yRWFjaChmdW5jdGlvbihtZXNzYWdlKSB7CiAgICAgICAg
ICAgICBtZXNzYWdlLmNsYXNzTGlzdC5yZW1vdmUoV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3
LlNlbGVjdGVkU3R5bGVDbGFzc05hbWUpOwogICAgICAgICB9KTsKICAgICAgICAgdGhpcy5fc2Vs
ZWN0ZWRNZXNzYWdlcyA9IFtdOwogICAgICAgICBkZWxldGUgdGhpcy5fcmVmZXJlbmNlTWVzc2Fn
ZUZvclJhbmdlU2VsZWN0aW9uOwotICAgIH0sCisgICAgfQogCi0gICAgX3NlbGVjdEFsbE1lc3Nh
Z2VzOiBmdW5jdGlvbigpCisgICAgX3NlbGVjdEFsbE1lc3NhZ2VzKCkKICAgICB7CiAgICAgICAg
IHRoaXMuX2NsZWFyTWVzc2FnZXNTZWxlY3Rpb24oKTsKIApAQCAtNjA1LDIxICs1ODksMjEgQEAg
V2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIG1l
c3NhZ2UuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuU2VsZWN0ZWRT
dHlsZUNsYXNzTmFtZSk7CiAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLnB1c2go
bWVzc2FnZSk7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9hbGxNZXNzYWdlczog
ZnVuY3Rpb24oKQorICAgIF9hbGxNZXNzYWdlcygpCiAgICAgewogICAgICAgICByZXR1cm4gQXJy
YXkuZnJvbSh0aGlzLm1lc3NhZ2VzRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCIuY29uc29sZS1t
ZXNzYWdlLCAuY29uc29sZS11c2VyLWNvbW1hbmQiKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
dW5maWx0ZXJlZE1lc3NhZ2VzOiBmdW5jdGlvbigpCisgICAgX3VuZmlsdGVyZWRNZXNzYWdlcygp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWxsTWVzc2FnZXMoKS5maWx0ZXIoZnVuY3Rp
b24obWVzc2FnZSkgewogICAgICAgICAgICAgcmV0dXJuICFtZXNzYWdlLmNsYXNzTGlzdC5jb250
YWlucyhXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuRmlsdGVyZWRPdXRTdHlsZUNsYXNzTmFt
ZSk7CiAgICAgICAgIH0pOwotICAgIH0sCisgICAgfQogCi0gICAgX3Zpc2libGVNZXNzYWdlczog
ZnVuY3Rpb24oKQorICAgIF92aXNpYmxlTWVzc2FnZXMoKQogICAgIHsKICAgICAgICAgdmFyIHVu
ZmlsdGVyZWRNZXNzYWdlcyA9IHRoaXMuX3VuZmlsdGVyZWRNZXNzYWdlcygpOwogCkBAIC02Mjks
NDEgKzYxMyw0MSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICByZXR1cm4gdW5maWx0ZXJlZE1lc3NhZ2VzLmZpbHRlcihmdW5jdGlvbihtZXNzYWdl
KSB7CiAgICAgICAgICAgICByZXR1cm4gIW1lc3NhZ2UuY2xhc3NMaXN0LmNvbnRhaW5zKFdlYklu
c3BlY3Rvci5Mb2dDb250ZW50Vmlldy5GaWx0ZXJlZE91dEJ5U2VhcmNoU3R5bGVDbGFzc05hbWUp
OwogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hY3RpdmVMb2dDbGVhcmVkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfYWN0aXZlTG9nQ2xlYXJlZChldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2lnbm9yZURpZENsZWFyTWVzc2FnZXMgPSB0cnVlOwogICAgICAgICB0aGlzLl9s
b2dWaWV3Q29udHJvbGxlci5jbGVhcigpOwogICAgICAgICB0aGlzLl9pZ25vcmVEaWRDbGVhck1l
c3NhZ2VzID0gZmFsc2U7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdG9nZ2xlU3BsaXQ6IGZ1bmN0
aW9uKCkKKyAgICBfdG9nZ2xlU3BsaXQoKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5pc1Nob3dpbmdTcGxpdENvbnNvbGUoKSkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zaG93
RnVsbEhlaWdodENvbnNvbGUoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnNob3dTcGxpdENvbnNvbGUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90b2dnbGVDbGVh
ckxvZ09uUmVsb2FkU2V0dGluZzogZnVuY3Rpb24oKQorICAgIF90b2dnbGVDbGVhckxvZ09uUmVs
b2FkU2V0dGluZygpCiAgICAgewogICAgICAgICB0aGlzLl9jbGVhckxvZ09uUmVsb2FkU2V0dGlu
Zy52YWx1ZSA9ICF0aGlzLl9jbGVhckxvZ09uUmVsb2FkU2V0dGluZy52YWx1ZTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF9jbGVhckxvZzogZnVuY3Rpb24oKQorICAgIF9jbGVhckxvZygpCiAgICAg
ewogICAgICAgICB0aGlzLl9pZ25vcmVEaWRDbGVhck1lc3NhZ2VzID0gdHJ1ZTsKICAgICAgICAg
dGhpcy5fbG9nVmlld0NvbnRyb2xsZXIuY2xlYXIoKTsKICAgICAgICAgdGhpcy5faWdub3JlRGlk
Q2xlYXJNZXNzYWdlcyA9IGZhbHNlOwotICAgIH0sCisgICAgfQogCi0gICAgX3Njb3BlQmFyU2Vs
ZWN0aW9uRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2NvcGVCYXJTZWxlY3Rpb25E
aWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9maWx0ZXJNZXNzYWdlcyh0aGlz
Ll9hbGxNZXNzYWdlcygpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9maWx0ZXJNZXNzYWdlczog
ZnVuY3Rpb24obWVzc2FnZXMpCisgICAgX2ZpbHRlck1lc3NhZ2VzKG1lc3NhZ2VzKQogICAgIHsK
ICAgICAgICAgdmFyIHNob3dzQWxsID0gdGhpcy5fc2NvcGVCYXIuaXRlbShXZWJJbnNwZWN0b3Iu
TG9nQ29udGVudFZpZXcuU2NvcGVzLkFsbCkuc2VsZWN0ZWQ7CiAgICAgICAgIHZhciBzaG93c0Vy
cm9ycyA9IHRoaXMuX3Njb3BlQmFyLml0ZW0oV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LlNj
b3Blcy5FcnJvcnMpLnNlbGVjdGVkOwpAQCAtNjk4LDE5ICs2ODIsMTkgQEAgV2ViSW5zcGVjdG9y
LkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfSwgdGhpcyk7CiAKICAgICAg
ICAgdGhpcy5fcGVyZm9ybVNlYXJjaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RpZEZvY3Vz
OiBmdW5jdGlvbihldmVudCkKKyAgICBfZGlkRm9jdXMoZXZlbnQpCiAgICAgewogICAgICAgICB0
aGlzLl9mb2N1c2VkID0gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9kaWRCbHVyOiBmdW5j
dGlvbihldmVudCkKKyAgICBfZGlkQmx1cihldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2Zv
Y3VzZWQgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9rZXlEb3duOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfa2V5RG93bihldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9rZXli
b2FyZFNob3J0Y3V0Q29tbWFuZEEubWF0Y2hlc0V2ZW50KGV2ZW50KSkKICAgICAgICAgICAgIHRo
aXMuX2NvbW1hbmRBV2FzUHJlc3NlZChldmVudCk7CkBAIC03MjQsMTUgKzcwOCwxNSBAQCBXZWJJ
bnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5f
bGVmdEFycm93V2FzUHJlc3NlZChldmVudCk7CiAgICAgICAgIGVsc2UgaWYgKGV2ZW50LmtleUlk
ZW50aWZpZXIgPT09ICJSaWdodCIpCiAgICAgICAgICAgICB0aGlzLl9yaWdodEFycm93V2FzUHJl
c3NlZChldmVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY29tbWFuZEFXYXNQcmVzc2VkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfY29tbWFuZEFXYXNQcmVzc2VkKGV2ZW50KQogICAgIHsKICAg
ICAgICAgdGhpcy5fc2VsZWN0QWxsTWVzc2FnZXMoKTsKICAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9lc2NhcGVXYXNQcmVzc2VkOiBmdW5jdGlv
bihldmVudCkKKyAgICBfZXNjYXBlV2FzUHJlc3NlZChldmVudCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLmxlbmd0aCkKICAgICAgICAgICAgIHRoaXMuX2NsZWFy
TWVzc2FnZXNTZWxlY3Rpb24oKTsKQEAgLTc0MCw5ICs3MjQsOSBAQCBXZWJJbnNwZWN0b3IuTG9n
Q29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5wcm9tcHQuZm9jdXMo
KTsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3VwQXJyb3dXYXNQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfdXBBcnJvd1dhc1By
ZXNzZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgbWVzc2FnZXMgPSB0aGlzLl92aXNpYmxl
TWVzc2FnZXMoKTsKIApAQCAtNzYyLDkgKzc0Niw5IEBAIFdlYkluc3BlY3Rvci5Mb2dDb250ZW50
Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rvd25BcnJvd1dhc1ByZXNzZWQ6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9kb3duQXJyb3dXYXNQcmVzc2VkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fdmlzaWJsZU1lc3NhZ2VzKCk7CiAKQEAgLTc4NCw5ICs3
NjgsOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9sZWZ0QXJyb3dXYXNQcmVzc2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbGVmdEFycm93
V2FzUHJlc3NlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZE1lc3Nh
Z2VzLmxlbmd0aCAhPT0gMSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTgwOCw5ICs3OTIsOSBA
QCBXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgICAgICBvdXRsaW5lU2VjdGlvbi5fc2VjdGlvbi5jb2xsYXBzZSgpOwogICAgICAgICAgICAg
fQogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmlnaHRBcnJvd1dhc1ByZXNzZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9yaWdodEFycm93V2FzUHJlc3NlZChldmVudCkKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZE1lc3NhZ2VzLmxlbmd0aCAhPT0gMSkKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTg0Miw5ICs4MjYsOSBAQCBXZWJJbnNwZWN0b3IuTG9nQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3Byb3BlcnRpZXNTZWN0aW9uRGlkVXBkYXRl
Q29udGVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Byb3BlcnRpZXNTZWN0aW9uRGlkVXBkYXRl
Q29udGVudChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzZWN0aW9uID0gZXZlbnQudGFyZ2V0
OwogICAgICAgICBzZWN0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNlY3Rp
b24uRXZlbnQuVmlzaWJsZUNvbnRlbnREaWRDaGFuZ2UsIHRoaXMuX3Byb3BlcnRpZXNTZWN0aW9u
RGlkVXBkYXRlQ29udGVudCwgdGhpcyk7CkBAIC04NTcsMzkgKzg0MSwzOSBAQCBXZWJJbnNwZWN0
b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fZW5zdXJl
TWVzc2FnZUlzVmlzaWJsZShtZXNzYWdlKTsKICAgICAgICAgICAgIHRoaXMuX2NsZWFyRm9jdXNh
YmxlQ2hpbGRyZW4oKTsKICAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF9wcmV2aW91c01lc3NhZ2U6IGZ1bmN0aW9uKG1lc3NhZ2UpCisgICAgX3ByZXZpb3VzTWVz
c2FnZShtZXNzYWdlKQogICAgIHsKICAgICAgICAgdmFyIG1lc3NhZ2VzID0gdGhpcy5fdmlzaWJs
ZU1lc3NhZ2VzKCk7CiAgICAgICAgIGZvciAodmFyIGkgPSBtZXNzYWdlcy5pbmRleE9mKG1lc3Nh
Z2UpIC0gMTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgICAgIGlmICh0aGlzLl9pc01lc3NhZ2VW
aXNpYmxlKG1lc3NhZ2VzW2ldKSkKICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZXNbaV07
CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9uZXh0TWVzc2FnZTogZnVuY3Rpb24o
bWVzc2FnZSkKKyAgICBfbmV4dE1lc3NhZ2UobWVzc2FnZSkKICAgICB7CiAgICAgICAgIHZhciBt
ZXNzYWdlcyA9IHRoaXMuX3Zpc2libGVNZXNzYWdlcygpOwogICAgICAgICBmb3IgKHZhciBpID0g
bWVzc2FnZXMuaW5kZXhPZihtZXNzYWdlKSArIDE7IGkgPCBtZXNzYWdlcy5sZW5ndGg7ICsraSkg
ewogICAgICAgICAgICAgaWYgKHRoaXMuX2lzTWVzc2FnZVZpc2libGUobWVzc2FnZXNbaV0pKQog
ICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlc1tpXTsKICAgICAgICAgfQotICAgIH0sCisg
ICAgfQogCi0gICAgX2NsZWFyRm9jdXNhYmxlQ2hpbGRyZW46IGZ1bmN0aW9uKCkKKyAgICBfY2xl
YXJGb2N1c2FibGVDaGlsZHJlbigpCiAgICAgewogICAgICAgICB2YXIgZm9jdXNhYmxlRWxlbWVu
dHMgPSB0aGlzLm1lc3NhZ2VzRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCJbdGFiaW5kZXhdIik7
CiAgICAgICAgIGZvciAodmFyIGkgPSAwLCBjb3VudCA9IGZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0
aDsgaSA8IGNvdW50OyArK2kpCiAgICAgICAgICAgICBmb2N1c2FibGVFbGVtZW50c1tpXS5yZW1v
dmVBdHRyaWJ1dGUoInRhYmluZGV4Iik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2VhcmNoVGV4
dERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NlYXJjaFRleHREaWRDaGFuZ2UoZXZl
bnQpCiAgICAgewogICAgICAgICB0aGlzLl9wZXJmb3JtU2VhcmNoKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfcGVyZm9ybVNlYXJjaDogZnVuY3Rpb24oKQorICAgIF9wZXJmb3JtU2VhcmNoKCkK
ICAgICB7CiAgICAgICAgIGlmICghaXNFbXB0eU9iamVjdCh0aGlzLl9zZWFyY2hIaWdobGlnaHRE
T01DaGFuZ2VzKSkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5yZXZlcnREb21DaGFuZ2VzKHRo
aXMuX3NlYXJjaEhpZ2hsaWdodERPTUNoYW5nZXMpOwpAQCAtOTMzLDkgKzkxNyw5IEBAIFdlYklu
c3BlY3Rvci5Mb2dDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9z
ZWxlY3RlZFNlYXJjaE1hdGNoLmhpZ2hsaWdodC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rv
ci5Mb2dDb250ZW50Vmlldy5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAgICAgICAgIGRl
bGV0ZSB0aGlzLl9zZWxlY3RlZFNlYXJjaE1hdGNoOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfaGlnaGxpZ2h0UmFuZ2VzOiBmdW5jdGlvbihtZXNzYWdlLCBtYXRjaFJhbmdlcykK
KyAgICBfaGlnaGxpZ2h0UmFuZ2VzKG1lc3NhZ2UsIG1hdGNoUmFuZ2VzKQogICAgIHsKICAgICAg
ICAgdmFyIGhpZ2hsaWdodGVkRWxlbWVudHMgPSBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0UmFuZ2Vz
V2l0aFN0eWxlQ2xhc3MobWVzc2FnZSwgbWF0Y2hSYW5nZXMsIFdlYkluc3BlY3Rvci5Mb2dDb250
ZW50Vmlldy5IaWdobGlnaHRlZFN0eWxlQ2xhc3NOYW1lLCB0aGlzLl9zZWFyY2hIaWdobGlnaHRE
T01DaGFuZ2VzKTsKIApAQCAtOTU2LDE0ICs5NDAsMTQgQEAgV2ViSW5zcGVjdG9yLkxvZ0NvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0sIHRoaXMpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Jhbmdlc092ZXJsYXA6IGZ1
bmN0aW9uKHJhbmdlMSwgcmFuZ2UyKQorICAgIF9yYW5nZXNPdmVybGFwKHJhbmdlMSwgcmFuZ2Uy
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHJhbmdlMS5vZmZzZXQgPD0gcmFuZ2UyLm9mZnNldCAr
IHJhbmdlMi5sZW5ndGggJiYgcmFuZ2UyLm9mZnNldCA8PSByYW5nZTEub2Zmc2V0ICsgcmFuZ2Ux
Lmxlbmd0aDsKLSAgICB9LAorICAgIH0KIAotICAgIF9oaWdobGlnaHRTZWFyY2hNYXRjaEF0SW5k
ZXg6IGZ1bmN0aW9uKGluZGV4KQorICAgIF9oaWdobGlnaHRTZWFyY2hNYXRjaEF0SW5kZXgoaW5k
ZXgpCiAgICAgewogICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5fc2VhcmNoTWF0Y2hlcy5sZW5n
dGgpCiAgICAgICAgICAgICBpbmRleCA9IDA7CkBAIC05NzcsMTQgKzk2MSwxNCBAQCBXZWJJbnNw
ZWN0b3IuTG9nQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9zZWxlY3Rl
ZFNlYXJjaE1hdGNoLmhpZ2hsaWdodC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5Mb2dDb250
ZW50Vmlldy5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0aGlzLl9lbnN1cmVN
ZXNzYWdlSXNWaXNpYmxlKHRoaXMuX3NlbGVjdGVkU2VhcmNoTWF0Y2gubWVzc2FnZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcHJvdmlzaW9uYWxMb2FkU3RhcnRlZDogZnVuY3Rpb24oKQorICAg
IF9wcm92aXNpb25hbExvYWRTdGFydGVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3N0YXJ0ZWRQ
cm92aXNpb25hbExvYWQgPSB0cnVlOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlYXBwZW5kUHJv
dmlzaW9uYWxNZXNzYWdlczogZnVuY3Rpb24oKQorICAgIF9yZWFwcGVuZFByb3Zpc2lvbmFsTWVz
c2FnZXMoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9zdGFydGVkUHJvdmlzaW9uYWxMb2Fk
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtOTk4LDEzICs5ODIsMjUgQEAgV2ViSW5zcGVjdG9y
LkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMu
X3Byb3Zpc2lvbmFsTWVzc2FnZXMgPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jbGVhclBy
b3Zpc2lvbmFsU3RhdGU6IGZ1bmN0aW9uKCkKKyAgICBfY2xlYXJQcm92aXNpb25hbFN0YXRlKCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3N0YXJ0ZWRQcm92aXNpb25hbExvYWQgPSBmYWxzZTsKICAg
ICAgICAgdGhpcy5fcHJvdmlzaW9uYWxNZXNzYWdlcyA9IFtdOyAgICAgICAgCiAgICAgfQogfTsK
IAotV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRW
aWV3LlNjb3BlcyA9IHsKKyAgICBBbGw6ICJsb2ctYWxsIiwKKyAgICBFcnJvcnM6ICJsb2ctZXJy
b3JzIiwKKyAgICBXYXJuaW5nczogImxvZy13YXJuaW5ncyIsCisgICAgTG9nczogImxvZy1sb2dz
IgorfTsKKworV2ViSW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3Lkl0ZW1XcmFwcGVyU3R5bGVDbGFz
c05hbWUgPSAiY29uc29sZS1pdGVtIjsKK1dlYkluc3BlY3Rvci5Mb2dDb250ZW50Vmlldy5GaWx0
ZXJlZE91dFN0eWxlQ2xhc3NOYW1lID0gImZpbHRlcmVkLW91dCI7CitXZWJJbnNwZWN0b3IuTG9n
Q29udGVudFZpZXcuU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3RlZCI7CitXZWJJbnNw
ZWN0b3IuTG9nQ29udGVudFZpZXcuU2VhcmNoSW5Qcm9ncmVzc1N0eWxlQ2xhc3NOYW1lID0gInNl
YXJjaC1pbi1wcm9ncmVzcyI7CitXZWJJbnNwZWN0b3IuTG9nQ29udGVudFZpZXcuRmlsdGVyZWRP
dXRCeVNlYXJjaFN0eWxlQ2xhc3NOYW1lID0gImZpbHRlcmVkLW91dC1ieS1zZWFyY2giOworV2Vi
SW5zcGVjdG9yLkxvZ0NvbnRlbnRWaWV3LkhpZ2hsaWdodGVkU3R5bGVDbGFzc05hbWUgPSAiaGln
aGxpZ2h0ZWQiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTmF2aWdhdGlvbkJhci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25CYXIuanMKaW5kZXggZmIzMzYyYS4uMWQ1ZTlhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTmF2aWdh
dGlvbkJhci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9OYXZpZ2F0aW9uQmFyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMyw1OSArMjMsNDggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhciA9IGZ1bmN0
aW9uKGVsZW1lbnQsIG5hdmlnYXRpb25JdGVtcywgcm9sZSwgbGFiZWwpIHsKLSAgICAvLyBGSVhN
RTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNh
bGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAg
ICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5jb25zdHJ1Y3Rvci5TdHls
ZUNsYXNzTmFtZSB8fCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5TdHlsZUNsYXNzTmFtZSk7
Ci0gICAgdGhpcy5fZWxlbWVudC50YWJJbmRleCA9IDA7Ci0KLSAgICBpZiAocm9sZSkKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCByb2xlKTsKLSAgICBpZiAobGFi
ZWwpCi0gICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFi
ZWwpOwotCi0gICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMu
X2ZvY3VzLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICB0aGlzLl9l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9rZXlEb3duLmJpbmQodGhp
cyksIGZhbHNlKTsKLSAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIHRoaXMuX21vdXNlRG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0KLSAgICBkb2N1bWVudC5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgdGhpcy51cGRhdGVMYXlvdXQuYmluZCh0aGlzKSwgZmFs
c2UpOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIgPSBjbGFzcyBOYXZpZ2F0aW9uQmFyIGV4
dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAoreworICAgIGNvbnN0cnVjdG9yKGVsZW1lbnQsIG5h
dmlnYXRpb25JdGVtcywgcm9sZSwgbGFiZWwpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0g
ICAgdGhpcy5fc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCh0aGlzLmNvbnN0
cnVjdG9yLlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC50YWJJbmRleCA9
IDA7CiAKLSAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMgPSBbXTsKKyAgICAgICAgaWYgKHJvbGUp
CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsIHJvbGUpOwor
ICAgICAgICBpZiAobGFiZWwpCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0
ZSgiYXJpYS1sYWJlbCIsIGxhYmVsKTsKIAotICAgIGlmIChuYXZpZ2F0aW9uSXRlbXMpIHsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpCi0g
ICAgICAgICAgICB0aGlzLmFkZE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtc1tpXSk7Ci0g
ICAgfQorICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhp
cy5fZm9jdXMuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImJsdXIiLCB0aGlzLl9ibHVyLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5fa2V5RG93
bi5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fbW91c2VEb3duLmJpbmQodGhpcyksIGZhbHNlKTsKIAot
ICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5fc3R5bGVFbGVtZW50KTsKLX07Cisg
ICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCB0aGlzLnVwZGF0ZUxheW91
dC5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9i
amVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLk5hdmln
YXRpb25CYXIpOworICAgICAgICB0aGlzLl9zdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJzdHlsZSIpOwogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5TdHlsZUNsYXNz
TmFtZSA9ICJuYXZpZ2F0aW9uLWJhciI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5Db2xs
YXBzZWRTdHlsZUNsYXNzTmFtZSA9ICJjb2xsYXBzZWQiOworICAgICAgICB0aGlzLl9uYXZpZ2F0
aW9uSXRlbXMgPSBbXTsKIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuRXZlbnQgPSB7Ci0g
ICAgTmF2aWdhdGlvbkl0ZW1TZWxlY3RlZDogIm5hdmlnYXRpb24tYmFyLW5hdmlnYXRpb24taXRl
bS1zZWxlY3RlZCIKLX07CisgICAgICAgIGlmIChuYXZpZ2F0aW9uSXRlbXMpIHsKKyAgICAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aDsgKytpKQorICAg
ICAgICAgICAgICAgIHRoaXMuYWRkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW1zW2ldKTsK
KyAgICAgICAgfQogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLAorICAgICAgICBkb2N1
bWVudC5oZWFkLmFwcGVuZENoaWxkKHRoaXMuX3N0eWxlRWxlbWVudCk7CisgICAgfQogCiAgICAg
Ly8gUHVibGljCiAKLSAgICBhZGROYXZpZ2F0aW9uSXRlbTogZnVuY3Rpb24obmF2aWdhdGlvbkl0
ZW0sIHBhcmVudEVsZW1lbnQpCisgICAgYWRkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW0s
IHBhcmVudEVsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5pbnNlcnROYXZpZ2F0
aW9uSXRlbShuYXZpZ2F0aW9uSXRlbSwgdGhpcy5fbmF2aWdhdGlvbkl0ZW1zLmxlbmd0aCwgcGFy
ZW50RWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpbnNlcnROYXZpZ2F0aW9uSXRlbTog
ZnVuY3Rpb24obmF2aWdhdGlvbkl0ZW0sIGluZGV4LCBwYXJlbnRFbGVtZW50KQorICAgIGluc2Vy
dE5hdmlnYXRpb25JdGVtKG5hdmlnYXRpb25JdGVtLCBpbmRleCwgcGFyZW50RWxlbWVudCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5hdmlnYXRpb25JdGVtIGluc3RhbmNlb2YgV2Vi
SW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtKTsKICAgICAgICAgaWYgKCEobmF2aWdhdGlvbkl0ZW0g
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0pKQpAQCAtMTA3LDkgKzk2LDkg
QEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
LnVwZGF0ZUxheW91dFNvb24oKTsKIAogICAgICAgICByZXR1cm4gbmF2aWdhdGlvbkl0ZW07Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICByZW1vdmVOYXZpZ2F0aW9uSXRlbTogZnVuY3Rpb24obmF2aWdh
dGlvbkl0ZW1PcklkZW50aWZpZXJPckluZGV4LCBpbmRleCkKKyAgICByZW1vdmVOYXZpZ2F0aW9u
SXRlbShuYXZpZ2F0aW9uSXRlbU9ySWRlbnRpZmllck9ySW5kZXgsIGluZGV4KQogICAgIHsKICAg
ICAgICAgdmFyIG5hdmlnYXRpb25JdGVtID0gdGhpcy5fZmluZE5hdmlnYXRpb25JdGVtKG5hdmln
YXRpb25JdGVtT3JJZGVudGlmaWVyT3JJbmRleCk7CiAgICAgICAgIGlmICghbmF2aWdhdGlvbkl0
ZW0pCkBAIC0xMjksOSArMTE4LDkgQEAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLnVwZGF0ZUxheW91dFNvb24oKTsKIAogICAgICAgICByZXR1
cm4gbmF2aWdhdGlvbkl0ZW07Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRTb29u
OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0U29vbigpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fdXBkYXRlTGF5b3V0VGltZW91dCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE0Nyw5
ICsxMzYsOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICB0aGlzLl91cGRhdGVMYXlvdXRUaW1lb3V0ID0gc2V0VGltZW91dCh1
cGRhdGUuYmluZCh0aGlzKSwgMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6
IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
X3VwZGF0ZUxheW91dFRpbWVvdXQpIHsKICAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLl91
cGRhdGVMYXlvdXRUaW1lb3V0KTsKQEAgLTE5MSwxMiArMTgwLDEyIEBAIFdlYkluc3BlY3Rvci5O
YXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gR2l2ZSBlYWNoIG5hdmlnYXRp
b24gaXRlbSB0aGUgb3Bwb3J0dW5pdHkgdG8gY29sbGFwc2UgZnVydGhlci4KICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9uYXZpZ2F0aW9uSXRlbXMubGVuZ3RoOyArK2kpCiAgICAg
ICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbaV0udXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbSB8fCBudWxsOwotICAgIH0sCisg
ICAgfQogCiAgICAgc2V0IHNlbGVjdGVkTmF2aWdhdGlvbkl0ZW0obmF2aWdhdGlvbkl0ZW1Pcklk
ZW50aWZpZXJPckluZGV4KQogICAgIHsKQEAgLTIyMSwxNyArMjEwLDE3IEBAIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gVGhpcyBwcmV2ZW50cyBz
ZW5kaW5nIHRoZSBldmVudCB3aGlsZSB0aGUgdXNlciBpcyBzY3J1YmJpbmcgdGhlIGJhci4KICAg
ICAgICAgaWYgKCF0aGlzLl9tb3VzZUlzRG93bikKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLkV2ZW50Lk5hdmlnYXRp
b25JdGVtU2VsZWN0ZWQpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG5hdmlnYXRpb25JdGVt
cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbmF2aWdhdGlvbkl0ZW1zOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbWluaW11bVdpZHRoKCkKICAgICB7
CkBAIC0yNDEsMTcgKzIzMCwxNyBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gdGhpcy5fbWluaW11bVdpZHRoOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNpemVzVG9GaXQoKQogICAgIHsKICAgICAgICAgLy8g
Q2FuIGJlIG92ZXJyaWRlbiBieSBzdWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfZmluZE5hdmlnYXRpb25JdGVt
OiBmdW5jdGlvbihuYXZpZ2F0aW9uSXRlbU9ySWRlbnRpZmllck9ySW5kZXgpCisgICAgX2ZpbmRO
YXZpZ2F0aW9uSXRlbShuYXZpZ2F0aW9uSXRlbU9ySWRlbnRpZmllck9ySW5kZXgpCiAgICAgewog
ICAgICAgICB2YXIgbmF2aWdhdGlvbkl0ZW0gPSBudWxsOwogCkBAIC0yNzAsOSArMjU5LDkgQEAg
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAg
ICAgICAgcmV0dXJuIG5hdmlnYXRpb25JdGVtOwotICAgIH0sCisgICAgfQogCi0gICAgX21vdXNl
RG93bjogZnVuY3Rpb24oZXZlbnQpCisgICAgX21vdXNlRG93bihldmVudCkKICAgICB7CiAgICAg
ICAgIC8vIE9ubHkgaGFuZGxlIGxlZnQgbW91c2UgY2xpY2tzLgogICAgICAgICBpZiAoZXZlbnQu
YnV0dG9uICE9PSAwKQpAQCAtMzAxLDkgKzI5MCw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9u
QmFyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9tb3Vz
ZU1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VNb3ZlZChldmVudCkKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LmJ1dHRvbiA9PT0gMCk7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX21vdXNlSXNEb3duKTsKQEAgLTMzMiw5ICszMjEsOSBAQCBXZWJJbnNw
ZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc2VsZWN0ZWRO
YXZpZ2F0aW9uSXRlbSA9IGl0ZW1FbGVtZW50Lm5hdmlnYXRpb25JdGVtOwogCiAgICAgICAgIHRo
aXMuc2VsZWN0ZWROYXZpZ2F0aW9uSXRlbS5hY3RpdmUgPSB0cnVlOwotICAgIH0sCisgICAgfQog
Ci0gICAgX21vdXNlVXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9tb3VzZVVwKGV2ZW50KQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQodGhpcy5fbW91c2VJc0Rvd24pOwpAQCAtMzY0LDkgKzM1Myw5IEBAIFdl
Ykluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9rZXlEb3duOiBmdW5jdGlvbihldmVudCkKKyAgICBfa2V5RG93bihl
dmVudCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZm9jdXNlZCkKICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTM5NiwxOSArMzg1LDE5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLnNlbGVjdGVk
TmF2aWdhdGlvbkl0ZW0gPSB0aGlzLl9uYXZpZ2F0aW9uSXRlbXNbc2VsZWN0ZWROYXZpZ2F0aW9u
SXRlbUluZGV4XTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mb2N1czogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2ZvY3VzKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZm9jdXNlZCA9IHRydWU7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfYmx1cjogZnVuY3Rpb24oZXZlbnQpCisgICAgX2JsdXIo
ZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9mb2N1c2VkID0gZmFsc2U7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdXBkYXRlU3R5bGU6IGZ1bmN0aW9uKCkKKyAgICBfdXBkYXRlU3R5bGUoKQog
ICAgIHsKICAgICAgICAgdGhpcy5fbmVlZHNTdHlsZVVwZGF0ZWQgPSBmYWxzZTsKIApAQCAtNDI0
LDkgKzQxMyw5IEBAIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgfQogCiAgICAgICAgIHRoaXMuX3N0eWxlRWxlbWVudC50ZXh0Q29udGVudCA9IHN0eWxl
VGV4dDsKLSAgICB9LAorICAgIH0KIAotICAgIF9jYWxjdWxhdGVNaW5pbXVtV2lkdGg6IGZ1bmN0
aW9uKCkKKyAgICBfY2FsY3VsYXRlTWluaW11bVdpZHRoKCkKICAgICB7CiAgICAgICAgIHZhciB3
YXNDb2xsYXBzZWQgPSB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0
b3IuTmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7CiAKQEAgLTQ1MCw0ICs0
MzksOSBAQCBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90b3R5cGUgPSB7CiAgICAgfQog
fTsKIAotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdl
Ykluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIu
U3R5bGVDbGFzc05hbWUgPSAibmF2aWdhdGlvbi1iYXIiOworV2ViSW5zcGVjdG9yLk5hdmlnYXRp
b25CYXIuQ29sbGFwc2VkU3R5bGVDbGFzc05hbWUgPSAiY29sbGFwc2VkIjsKKworV2ViSW5zcGVj
dG9yLk5hdmlnYXRpb25CYXIuRXZlbnQgPSB7CisgICAgTmF2aWdhdGlvbkl0ZW1TZWxlY3RlZDog
Im5hdmlnYXRpb24tYmFyLW5hdmlnYXRpb24taXRlbS1zZWxlY3RlZCIKK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OYXZpZ2F0aW9uSXRl
bS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRp
b25JdGVtLmpzCmluZGV4IGEzMTI1NjkuLmE3YTA1OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05hdmlnYXRpb25JdGVtLmpz
CkBAIC0yMyw2MCArMjMsNTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVy
LCByb2xlLCBsYWJlbCkgewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNw
ZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3Bl
Y3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuX2lkZW50aWZpZXIgPSBpZGVudGlm
aWVyIHx8IG51bGw7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgdGhpcy5faGlkZGVuID0gZmFsc2U7CitXZWJJbnNwZWN0b3IuTmF2aWdh
dGlvbkl0ZW0gPSBjbGFzcyBOYXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmpl
Y3QKK3sKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCByb2xlLCBsYWJlbCkKKyAgICB7Cisg
ICAgICAgIHN1cGVyKCk7CiAKLSAgICBpZiAocm9sZSkKLSAgICAgICAgdGhpcy5fZWxlbWVudC5z
ZXRBdHRyaWJ1dGUoInJvbGUiLCByb2xlKTsKLSAgICBpZiAobGFiZWwpCi0gICAgICAgIHRoaXMu
X2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxhYmVsIiwgbGFiZWwpOworICAgICAgICB0aGlz
Ll9pZGVudGlmaWVyID0gaWRlbnRpZmllciB8fCBudWxsOwogCi0gICAgdmFyIGNsYXNzTmFtZXMg
PSB0aGlzLl9jbGFzc05hbWVzOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2xhc3NOYW1lcy5s
ZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFt
ZXNbaV0pOworICAgICAgICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CisgICAgICAgIHRoaXMuX2hpZGRlbiA9IGZhbHNlOwogCi0gICAgdGhpcy5fZWxlbWVu
dC5uYXZpZ2F0aW9uSXRlbSA9IHRoaXM7Ci19OworICAgICAgICBpZiAocm9sZSkKKyAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgcm9sZSk7CisgICAgICAgIGlm
IChsYWJlbCkKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCJhcmlhLWxh
YmVsIiwgbGFiZWwpOwogCi1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05h
bWUgPSAiaXRlbSI7Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0uSGlkZGVuU3R5bGVDbGFz
c05hbWUgPSAiaGlkZGVuIjsKKyAgICAgICAgdmFyIGNsYXNzTmFtZXMgPSB0aGlzLl9jbGFzc05h
bWVzOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNsYXNzTmFtZXMubGVuZ3RoOyArK2kp
CisgICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lc1tpXSk7
CiAKLQotV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtLAorICAgICAgICB0aGlzLl9lbGVt
ZW50Lm5hdmlnYXRpb25JdGVtID0gdGhpczsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAg
IGdldCBpZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pZGVudGlmaWVy
OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2VsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcGFyZW50TmF2aWdh
dGlvbkJhcigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50TmF2aWdhdGlvbkJh
cjsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oZXhwYW5kT25s
eSkKKyAgICB1cGRhdGVMYXlvdXQoZXhwYW5kT25seSkKICAgICB7CiAgICAgICAgIC8vIEltcGxl
bWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGlkZGVuKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9oaWRkZW47Ci0gICAgfSwKKyAgICB9CiAKICAg
ICBzZXQgaGlkZGVuKGZsYWcpCiAgICAgewpAQCAtODUsMjYgKzgwLDIxIEBAIFdlYkluc3BlY3Rv
ci5OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5faGlkZGVuID0g
ZmxhZzsKIAotICAgICAgICBpZiAoZmxhZykKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkl0ZW0uSGlkZGVuU3R5bGVDbGFzc05h
bWUpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5y
ZW1vdmUoV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25JdGVtLkhpZGRlblN0eWxlQ2xhc3NOYW1lKTsK
KyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKCJoaWRkZW4iLCBmbGFnKTsK
IAogICAgICAgICBpZiAodGhpcy5fcGFyZW50TmF2aWdhdGlvbkJhcikKICAgICAgICAgICAgIHRo
aXMuX3BhcmVudE5hdmlnYXRpb25CYXIudXBkYXRlTGF5b3V0U29vbigpOwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgZ2V0IF9jbGFzc05hbWVzKCkKICAgICB7Ci0gICAg
ICAgIHZhciBjbGFzc05hbWVzID0gW1dlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5TdHlsZUNs
YXNzTmFtZV07CisgICAgICAgIHZhciBjbGFzc05hbWVzID0gWyJpdGVtIl07CiAgICAgICAgIGlm
ICh0aGlzLl9pZGVudGlmaWVyKQogICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoKHRoaXMuX2lk
ZW50aWZpZXIpOwotICAgICAgICBpZiAodGhpcy5fYWRkaXRpb25hbENsYXNzTmFtZXMgaW5zdGFu
Y2VvZiBBcnJheSkKLSAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBjbGFzc05hbWVzLmNvbmNhdCh0
aGlzLl9hZGRpdGlvbmFsQ2xhc3NOYW1lcyk7CisgICAgICAgIGlmICh0aGlzLmFkZGl0aW9uYWxD
bGFzc05hbWVzIGluc3RhbmNlb2YgQXJyYXkpCisgICAgICAgICAgICBjbGFzc05hbWVzID0gY2xh
c3NOYW1lcy5jb25jYXQodGhpcy5hZGRpdGlvbmFsQ2xhc3NOYW1lcyk7CiAgICAgICAgIHJldHVy
biBjbGFzc05hbWVzOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uSXRlbS5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9OZXR3b3Jr
VGltZWxpbmVPdmVydmlld0dyYXBoLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwppbmRleCA4NTY3Nzhi
Li44ZDMzOWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3Jh
cGguanMKQEAgLTEsNiArMSw2IEBACiAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNCwzMiArMjQsMjMgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGZ1
bmN0aW9uKHRpbWVsaW5lKQorV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3Jh
cGggPSBjbGFzcyBOZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoIGV4dGVuZHMgV2ViSW5zcGVj
dG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaAogewotICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZU92
ZXJ2aWV3R3JhcGguY2FsbCh0aGlzLCB0aW1lbGluZSk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xh
c3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5TdHls
ZUNsYXNzTmFtZSk7CisgICAgY29uc3RydWN0b3IodGltZWxpbmUpCisgICAgeworICAgICAgICBz
dXBlcih0aW1lbGluZSk7CiAKLSAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVj
b3JkQWRkZWQsIHRoaXMpOwotICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lLkV2ZW50LlRpbWVzVXBkYXRlZCwgdGhpcy5uZWVkc0xheW91dCwgdGhpcyk7
CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJuZXR3b3JrIik7CiAKLSAgICB0
aGlzLnJlc2V0KCk7Ci19OwotCi1XZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdH
cmFwaC5TdHlsZUNsYXNzTmFtZSA9ICJuZXR3b3JrIjsKLVdlYkluc3BlY3Rvci5OZXR3b3JrVGlt
ZWxpbmVPdmVydmlld0dyYXBoLkdyYXBoUm93U3R5bGVDbGFzc05hbWUgPSAiZ3JhcGgtcm93IjsK
LVdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLkJhclN0eWxlQ2xhc3NO
YW1lID0gImJhciI7Ci1XZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5J
bmFjdGl2ZUJhclN0eWxlQ2xhc3NOYW1lID0gImluYWN0aXZlIjsKLVdlYkluc3BlY3Rvci5OZXR3
b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLlVuZmluaXNoZWRTdHlsZUNsYXNzTmFtZSA9ICJ1bmZp
bmlzaGVkIjsKLVdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLk1heGlt
dW1Sb3dDb3VudCA9IDY7CisgICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9uZXR3b3JrVGltZWxpbmVS
ZWNvcmRBZGRlZCwgdGhpcyk7CisgICAgICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlRpbWVzVXBkYXRlZCwgdGhpcy5uZWVkc0xheW91dCwg
dGhpcyk7CiAKLVdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92
ZXJ2aWV3R3JhcGgsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmll
d0dyYXBoLnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5yZXNldCgpOworICAgIH0KIAogICAgIC8v
IFB1YmxpYwogCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICByZXNldCgpCiAgICAgewogICAg
ICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZS5yZXNldC5j
YWxsKHRoaXMpOwogCkBAIC02OCw5ICs1OSw5IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxp
bmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgcm93UmVjb3Jkcy5f
X3JlY29yZEJhcnMgPSBbXTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRl
TGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlLnVwZGF0ZUxheW91dC5j
YWxsKHRoaXMpOwogCkBAIC0xMDcsMTEgKzk4LDExIEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGlt
ZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByb3dSZWNv
cmRCYXJzW3JlY29yZEJhckluZGV4XS5lbGVtZW50LnJlbW92ZSgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfbmV0d29y
a1RpbWVsaW5lUmVjb3JkQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9uZXR3b3JrVGltZWxp
bmVSZWNvcmRBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZVRpbWVsaW5l
UmVjb3JkID0gZXZlbnQuZGF0YS5yZWNvcmQ7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291
cmNlVGltZWxpbmVSZWNvcmQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGlu
ZVJlY29yZCk7CkBAIC0xNjEsMyArMTUyLDkgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGlu
ZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7
CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGgu
R3JhcGhSb3dTdHlsZUNsYXNzTmFtZSA9ICJncmFwaC1yb3ciOworV2ViSW5zcGVjdG9yLk5ldHdv
cmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguQmFyU3R5bGVDbGFzc05hbWUgPSAiYmFyIjsKK1dlYklu
c3BlY3Rvci5OZXR3b3JrVGltZWxpbmVPdmVydmlld0dyYXBoLkluYWN0aXZlQmFyU3R5bGVDbGFz
c05hbWUgPSAiaW5hY3RpdmUiOworV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3
R3JhcGguVW5maW5pc2hlZFN0eWxlQ2xhc3NOYW1lID0gInVuZmluaXNoZWQiOworV2ViSW5zcGVj
dG9yLk5ldHdvcmtUaW1lbGluZU92ZXJ2aWV3R3JhcGguTWF4aW11bVJvd0NvdW50ID0gNjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdv
cmtUaW1lbGluZVZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9OZXR3b3JrVGltZWxpbmVWaWV3LmpzCmluZGV4IDg0M2UzYzcuLjFkYWNjN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL05ldHdvcmtU
aW1lbGluZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvTmV0d29ya1RpbWVsaW5lVmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywxNDQgKzIzLDEzOSBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5OZXR3b3JrVGlt
ZWxpbmVWaWV3ID0gZnVuY3Rpb24odGltZWxpbmUpCitXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVs
aW5lVmlldyA9IGNsYXNzIE5ldHdvcmtUaW1lbGluZVZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5jYWxsKHRoaXMs
IHRpbWVsaW5lKTsKLQotICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lLnR5cGUgPT09IFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBlLk5ldHdvcmspOwotCi0gICAgdGhpcy5uYXZpZ2F0
aW9uU2lkZWJhclRyZWVPdXRsaW5lLm9uc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnRTZWxlY3Rl
ZC5iaW5kKHRoaXMpOwotICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5vbmRl
c2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnREZXNlbGVjdGVkLmJpbmQodGhpcyk7ICAgIAotICAg
IHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
V2ViSW5zcGVjdG9yLk5hdmlnYXRpb25TaWRlYmFyUGFuZWwuSGlkZURpc2Nsb3N1cmVCdXR0b25z
U3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5l
bGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcuVHJl
ZU91dGxpbmVTdHlsZUNsYXNzTmFtZSk7CisgICAgY29uc3RydWN0b3IodGltZWxpbmUpCisgICAg
eworICAgICAgICBzdXBlcih0aW1lbGluZSk7CiAKLSAgICB2YXIgY29sdW1ucyA9IHtkb21haW46
IHt9LCB0eXBlOiB7fSwgbWV0aG9kOiB7fSwgc2NoZW1lOiB7fSwgc3RhdHVzQ29kZToge30sIGNh
Y2hlZDoge30sIHNpemU6IHt9LCB0cmFuc2ZlclNpemU6IHt9LCByZXF1ZXN0U2VudDoge30sIGxh
dGVuY3k6IHt9LCBkdXJhdGlvbjoge319OworICAgICAgICBjb25zb2xlLmFzc2VydCh0aW1lbGlu
ZS50eXBlID09PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3JrKTsKIAot
ICAgIGNvbHVtbnMuZG9tYWluLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEb21haW4i
KTsKLSAgICBjb2x1bW5zLmRvbWFpbi53aWR0aCA9ICIxMCUiOworICAgICAgICB0aGlzLm5hdmln
YXRpb25TaWRlYmFyVHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudFNlbGVj
dGVkLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGlu
ZS5vbmRlc2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnREZXNlbGVjdGVkLmJpbmQodGhpcyk7ICAg
IAorICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uU2lkZWJhclBhbmVsLkhpZGVEaXNjbG9z
dXJlQnV0dG9uc1N0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJh
clRyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibmV0d29yayIpOwogCi0gICAgY29s
dW1ucy50eXBlLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUeXBlIik7Ci0gICAgY29s
dW1ucy50eXBlLndpZHRoID0gIjglIjsKKyAgICAgICAgdmFyIGNvbHVtbnMgPSB7ZG9tYWluOiB7
fSwgdHlwZToge30sIG1ldGhvZDoge30sIHNjaGVtZToge30sIHN0YXR1c0NvZGU6IHt9LCBjYWNo
ZWQ6IHt9LCBzaXplOiB7fSwgdHJhbnNmZXJTaXplOiB7fSwgcmVxdWVzdFNlbnQ6IHt9LCBsYXRl
bmN5OiB7fSwgZHVyYXRpb246IHt9fTsKIAotICAgIHZhciB0eXBlVG9MYWJlbE1hcCA9IG5ldyBN
YXA7Ci0gICAgZm9yICh2YXIga2V5IGluIFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlKSB7Ci0g
ICAgICAgIHZhciB2YWx1ZSA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZS5UeXBlW2tleV07Ci0gICAg
ICAgIHR5cGVUb0xhYmVsTWFwLnNldCh2YWx1ZSwgV2ViSW5zcGVjdG9yLlJlc291cmNlLmRpc3Bs
YXlOYW1lRm9yVHlwZSh2YWx1ZSwgdHJ1ZSkpOwotICAgIH0KKyAgICAgICAgY29sdW1ucy5kb21h
aW4udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkRvbWFpbiIpOworICAgICAgICBjb2x1
bW5zLmRvbWFpbi53aWR0aCA9ICIxMCUiOwogCi0gICAgY29sdW1ucy50eXBlLnNjb3BlQmFyID0g
V2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuY3JlYXRlQ29sdW1uU2NvcGVCYXIoIm5ldHdv
cmsiLCB0eXBlVG9MYWJlbE1hcCk7CisgICAgICAgIGNvbHVtbnMudHlwZS50aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiVHlwZSIpOworICAgICAgICBjb2x1bW5zLnR5cGUud2lkdGggPSAi
OCUiOwogCi0gICAgY29sdW1ucy5tZXRob2QudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
Ik1ldGhvZCIpOwotICAgIGNvbHVtbnMubWV0aG9kLndpZHRoID0gIjYlIjsKKyAgICAgICAgdmFy
IHR5cGVUb0xhYmVsTWFwID0gbmV3IE1hcDsKKyAgICAgICAgZm9yICh2YXIga2V5IGluIFdlYklu
c3BlY3Rvci5SZXNvdXJjZS5UeXBlKSB7CisgICAgICAgICAgICB2YXIgdmFsdWUgPSBXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuVHlwZVtrZXldOworICAgICAgICAgICAgdHlwZVRvTGFiZWxNYXAuc2V0
KHZhbHVlLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKHZhbHVlLCB0
cnVlKSk7CisgICAgICAgIH0KIAotICAgIGNvbHVtbnMuc2NoZW1lLnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJTY2hlbWUiKTsKLSAgICBjb2x1bW5zLnNjaGVtZS53aWR0aCA9ICI2JSI7
CisgICAgICAgIGNvbHVtbnMudHlwZS5zY29wZUJhciA9IFdlYkluc3BlY3Rvci5UaW1lbGluZURh
dGFHcmlkLmNyZWF0ZUNvbHVtblNjb3BlQmFyKCJuZXR3b3JrIiwgdHlwZVRvTGFiZWxNYXApOwog
Ci0gICAgY29sdW1ucy5zdGF0dXNDb2RlLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJT
dGF0dXMiKTsKLSAgICBjb2x1bW5zLnN0YXR1c0NvZGUud2lkdGggPSAiNiUiOworICAgICAgICBj
b2x1bW5zLm1ldGhvZC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWV0aG9kIik7Cisg
ICAgICAgIGNvbHVtbnMubWV0aG9kLndpZHRoID0gIjYlIjsKIAotICAgIGNvbHVtbnMuY2FjaGVk
LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWNoZWQiKTsKLSAgICBjb2x1bW5zLmNh
Y2hlZC53aWR0aCA9ICI2JSI7CisgICAgICAgIGNvbHVtbnMuc2NoZW1lLnRpdGxlID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTY2hlbWUiKTsKKyAgICAgICAgY29sdW1ucy5zY2hlbWUud2lkdGgg
PSAiNiUiOwogCi0gICAgY29sdW1ucy5zaXplLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTaXplIik7Ci0gICAgY29sdW1ucy5zaXplLndpZHRoID0gIjglIjsKLSAgICBjb2x1bW5zLnNp
emUuYWxpZ25lZCA9ICJyaWdodCI7CisgICAgICAgIGNvbHVtbnMuc3RhdHVzQ29kZS50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3RhdHVzIik7CisgICAgICAgIGNvbHVtbnMuc3RhdHVz
Q29kZS53aWR0aCA9ICI2JSI7CiAKLSAgICBjb2x1bW5zLnRyYW5zZmVyU2l6ZS50aXRsZSA9IFdl
Ykluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNmZXJlZCIpOwotICAgIGNvbHVtbnMudHJhbnNmZXJT
aXplLndpZHRoID0gIjglIjsKLSAgICBjb2x1bW5zLnRyYW5zZmVyU2l6ZS5hbGlnbmVkID0gInJp
Z2h0IjsKKyAgICAgICAgY29sdW1ucy5jYWNoZWQudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIkNhY2hlZCIpOworICAgICAgICBjb2x1bW5zLmNhY2hlZC53aWR0aCA9ICI2JSI7CiAKLSAg
ICBjb2x1bW5zLnJlcXVlc3RTZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdGFy
dCBUaW1lIik7Ci0gICAgY29sdW1ucy5yZXF1ZXN0U2VudC53aWR0aCA9ICI5JSI7Ci0gICAgY29s
dW1ucy5yZXF1ZXN0U2VudC5hbGlnbmVkID0gInJpZ2h0IjsKKyAgICAgICAgY29sdW1ucy5zaXpl
LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaXplIik7CisgICAgICAgIGNvbHVtbnMu
c2l6ZS53aWR0aCA9ICI4JSI7CisgICAgICAgIGNvbHVtbnMuc2l6ZS5hbGlnbmVkID0gInJpZ2h0
IjsKIAotICAgIGNvbHVtbnMubGF0ZW5jeS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
TGF0ZW5jeSIpOwotICAgIGNvbHVtbnMubGF0ZW5jeS53aWR0aCA9ICI5JSI7Ci0gICAgY29sdW1u
cy5sYXRlbmN5LmFsaWduZWQgPSAicmlnaHQiOworICAgICAgICBjb2x1bW5zLnRyYW5zZmVyU2l6
ZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVHJhbnNmZXJlZCIpOworICAgICAgICBj
b2x1bW5zLnRyYW5zZmVyU2l6ZS53aWR0aCA9ICI4JSI7CisgICAgICAgIGNvbHVtbnMudHJhbnNm
ZXJTaXplLmFsaWduZWQgPSAicmlnaHQiOwogCi0gICAgY29sdW1ucy5kdXJhdGlvbi50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiRHVyYXRpb24iKTsKLSAgICBjb2x1bW5zLmR1cmF0aW9u
LndpZHRoID0gIjklIjsKLSAgICBjb2x1bW5zLmR1cmF0aW9uLmFsaWduZWQgPSAicmlnaHQiOwor
ICAgICAgICBjb2x1bW5zLnJlcXVlc3RTZW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJTdGFydCBUaW1lIik7CisgICAgICAgIGNvbHVtbnMucmVxdWVzdFNlbnQud2lkdGggPSAiOSUi
OworICAgICAgICBjb2x1bW5zLnJlcXVlc3RTZW50LmFsaWduZWQgPSAicmlnaHQiOwogCi0gICAg
Zm9yICh2YXIgY29sdW1uIGluIGNvbHVtbnMpCi0gICAgICAgIGNvbHVtbnNbY29sdW1uXS5zb3J0
YWJsZSA9IHRydWU7CisgICAgICAgIGNvbHVtbnMubGF0ZW5jeS50aXRsZSA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiTGF0ZW5jeSIpOworICAgICAgICBjb2x1bW5zLmxhdGVuY3kud2lkdGggPSAi
OSUiOworICAgICAgICBjb2x1bW5zLmxhdGVuY3kuYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICB0
aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZCh0aGlzLm5h
dmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUsIGNvbHVtbnMpOwotICAgIHRoaXMuX2RhdGFHcmlk
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuRXZlbnQuRmls
dGVyc0RpZENoYW5nZSwgdGhpcy5fZGF0YUdyaWRGaWx0ZXJzRGlkQ2hhbmdlLCB0aGlzKTsKLSAg
ICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5F
dmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZE5vZGVTZWxlY3RlZCwgdGhp
cyk7Ci0gICAgdGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgPSAicmVxdWVzdFNl
bnQiOwotICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRPcmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3Jp
ZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOworICAgICAgICBjb2x1bW5zLmR1cmF0aW9uLnRpdGxlID0g
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJEdXJhdGlvbiIpOworICAgICAgICBjb2x1bW5zLmR1cmF0
aW9uLndpZHRoID0gIjklIjsKKyAgICAgICAgY29sdW1ucy5kdXJhdGlvbi5hbGlnbmVkID0gInJp
Z2h0IjsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rvci5OZXR3
b3JrVGltZWxpbmVWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CisgICAgICAgIGZvciAodmFyIGNvbHVtbiBp
biBjb2x1bW5zKQorICAgICAgICAgICAgY29sdW1uc1tjb2x1bW5dLnNvcnRhYmxlID0gdHJ1ZTsK
IAotICAgIHRpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2
ZW50LlJlY29yZEFkZGVkLCB0aGlzLl9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7
CisgICAgICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFH
cmlkKHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZSwgY29sdW1ucyk7CisgICAgICAg
IHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0
YUdyaWQuRXZlbnQuRmlsdGVyc0RpZENoYW5nZSwgdGhpcy5fZGF0YUdyaWRGaWx0ZXJzRGlkQ2hh
bmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuRGF0YUdyaWQuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fZGF0YUdy
aWROb2RlU2VsZWN0ZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1u
SWRlbnRpZmllciA9ICJyZXF1ZXN0U2VudCI7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRP
cmRlciA9IFdlYkluc3BlY3Rvci5EYXRhR3JpZC5Tb3J0T3JkZXIuQXNjZW5kaW5nOwogCi0gICAg
dGhpcy5fcGVuZGluZ1JlY29yZHMgPSBbXTsKLX07CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKCJuZXR3b3JrIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKIAotV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZp
ZXcuU3R5bGVDbGFzc05hbWUgPSAibmV0d29yayI7Ci1XZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVs
aW5lVmlldy5UcmVlT3V0bGluZVN0eWxlQ2xhc3NOYW1lID0gIm5ldHdvcmsiOworICAgICAgICB0
aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNv
cmRBZGRlZCwgdGhpcy5fbmV0d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogCi1XZWJJ
bnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3LAotICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX3BlbmRpbmdS
ZWNvcmRzID0gW107CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmF2aWdhdGlv
blNpZGViYXJUcmVlT3V0bGluZUxhYmVsKCkKICAgICB7CiAgICAgICAgIHJldHVybiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlJlc291cmNlcyIpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246
IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcucHJvdG90eXBlLnNob3duLmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fZGF0
YUdyaWQuc2hvd24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQor
ICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICB0aGlzLl9kYXRhR3JpZC5oaWRkZW4oKTsKIAog
ICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLmhpZGRlbi5jYWxsKHRo
aXMpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAg
dXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcu
cHJvdG90eXBlLnVwZGF0ZUxheW91dC5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnVwZGF0ZUxheW91dCgpOwogCiAgICAgICAgIHRoaXMuX3Byb2Nlc3NQZW5kaW5nUmVjb3Jk
cygpOwotICAgIH0sCisgICAgfQogCi0gICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21G
aWx0ZXJzOiBmdW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5z
dEN1c3RvbUZpbHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
ZGF0YUdyaWQudHJlZUVsZW1lbnRNYXRjaGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRyZWVFbGVtZW50
KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgcmVzZXQoKQog
ICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUucmVzZXQu
Y2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZXNldCgpOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICB0cmVlRWxlbWVudFBhdGhDb21wb25lbnRT
ZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2Vs
ZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0
YUdyaWQuZGF0YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50
LmdlbmVyYWxUcmVlRWxlbWVudCk7CiAgICAgICAgIGlmICghZGF0YUdyaWROb2RlKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBkYXRhR3JpZE5vZGUucmV2ZWFsQW5kU2VsZWN0KCk7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfcHJvY2Vzc1BlbmRpbmdSZWNv
cmRzOiBmdW5jdGlvbigpCisgICAgX3Byb2Nlc3NQZW5kaW5nUmVjb3JkcygpCiAgICAgewogICAg
ICAgICBpZiAoIXRoaXMuX3BlbmRpbmdSZWNvcmRzLmxlbmd0aCkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTE3OCw5ICsxNzMsOSBAQCBXZWJJbnNwZWN0b3IuTmV0d29ya1RpbWVsaW5lVmlldy5w
cm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9
IFtdOwotICAgIH0sCisgICAgfQogCi0gICAgX25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfbmV0d29ya1RpbWVsaW5lUmVjb3JkQWRkZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB2YXIgcmVzb3VyY2VUaW1lbGluZVJlY29yZCA9IGV2ZW50LmRhdGEucmVj
b3JkOwogICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZVRpbWVsaW5lUmVjb3JkIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVSZWNvcmQpOwpAQCAtMTg4LDI1ICsx
ODMsMjUgQEAgV2ViSW5zcGVjdG9yLk5ldHdvcmtUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLl9wZW5kaW5nUmVjb3Jkcy5wdXNoKHJlc291cmNlVGltZWxpbmVSZWNvcmQp
OwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9k
YXRhR3JpZEZpbHRlcnNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZEZp
bHRlcnNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxp
bmVTaWRlYmFyUGFuZWwudXBkYXRlRmlsdGVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0
YUdyaWROb2RlU2VsZWN0ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9kYXRhR3JpZE5vZGVTZWxl
Y3RlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0Rp
ZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVsZW1lbnREZXNlbGVjdGVkOiBm
dW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICBfdHJlZUVsZW1lbnREZXNlbGVjdGVkKHRyZWVFbGVt
ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRyZWVFbGVtZW50LnN0YXR1cykKICAgICAgICAgICAg
IHRyZWVFbGVtZW50LnN0YXR1cyA9ICIiOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVt
ZW50U2VsZWN0ZWQ6IGZ1bmN0aW9uKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKKyAgICBf
dHJlZUVsZW1lbnRTZWxlY3RlZCh0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCiAgICAgewog
ICAgICAgICBpZiAodGhpcy5fZGF0YUdyaWQuc2hvdWxkSWdub3JlU2VsZWN0aW9uRXZlbnQoKSkK
ICAgICAgICAgICAgIHJldHVybjsKQEAgLTIyNCw5ICsyMTksOSBAQCBXZWJJbnNwZWN0b3IuTmV0
d29ya1RpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBjb25z
b2xlLmVycm9yKCJVbmtub3duIHRyZWUgZWxlbWVudCBzZWxlY3RlZC4iKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF91cGRhdGVUcmVlRWxlbWVudFdpdGhDbG9zZUJ1dHRvbjogZnVuY3Rpb24odHJl
ZUVsZW1lbnQpCisgICAgX3VwZGF0ZVRyZWVFbGVtZW50V2l0aENsb3NlQnV0dG9uKHRyZWVFbGVt
ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2Nsb3NlU3RhdHVzQnV0dG9uKSB7CiAgICAg
ICAgICAgICB0cmVlRWxlbWVudC5zdGF0dXMgPSB0aGlzLl9jbG9zZVN0YXR1c0J1dHRvbi5lbGVt
ZW50OwpAQCAtMjM5LDkgKzIzNCw5IEBAIFdlYkluc3BlY3Rvci5OZXR3b3JrVGltZWxpbmVWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCA9PT0gdGhpcy5uYXZp
Z2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlVHJlZUVsZW1lbnRXaXRoQ2xvc2VCdXR0b24odHJlZUVsZW1lbnQp
OwogICAgICAgICB9LmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nsb3NlU3Rh
dHVzQnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2Nsb3NlU3RhdHVzQnV0dG9u
Q2xpY2tlZChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVl
T3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50LmRlc2VsZWN0KCk7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC5zaG93VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUodGhp
cy5yZXByZXNlbnRlZE9iamVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9PdmVydmlld1RpbWVsaW5lVmlldy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzCmlu
ZGV4IGJkODBlZDIuLjcyY2U3ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL092ZXJ2aWV3VGltZWxpbmVWaWV3Lmpz
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMyw3MiArMjMsNjggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcgPSBmdW5jdGlvbihyZWNvcmRp
bmcpCitXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcgPSBjbGFzcyBPdmVydmlld1Rp
bWVsaW5lVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcKIHsKLSAgICBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVWaWV3LmNhbGwodGhpcywgcmVjb3JkaW5nKTsKLQotICAgIHRoaXMu
bmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50
U2VsZWN0ZWQuYmluZCh0aGlzKTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxp
bmUub25kZXNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50RGVzZWxlY3RlZC5iaW5kKHRoaXMpOwot
Ci0gICAgdGhpcy5fcmVjb3JkaW5nID0gcmVjb3JkaW5nOworICAgIGNvbnN0cnVjdG9yKHJlY29y
ZGluZykKKyAgICB7CisgICAgICAgIHN1cGVyKHJlY29yZGluZyk7CiAKLSAgICB2YXIgY29sdW1u
cyA9IHsiZ3JhcGgiOiB7d2lkdGg6ICIxMDAlIn19OworICAgICAgICB0aGlzLm5hdmlnYXRpb25T
aWRlYmFyVHJlZU91dGxpbmUub25zZWxlY3QgPSB0aGlzLl90cmVlRWxlbWVudFNlbGVjdGVkLmJp
bmQodGhpcyk7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5vbmRl
c2VsZWN0ID0gdGhpcy5fdHJlZUVsZW1lbnREZXNlbGVjdGVkLmJpbmQodGhpcyk7CiAKLSAgICB0
aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucyk7Ci0gICAg
dGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdyaWQuRXZl
bnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fZGF0YUdyaWROb2RlU2VsZWN0ZWQsIHRoaXMp
OwotICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibm8taGVhZGVyIik7
CisgICAgICAgIHRoaXMuX3JlY29yZGluZyA9IHJlY29yZGluZzsKIAotICAgIHRoaXMuX3RyZWVP
dXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5l
RGF0YUdyaWRTeW5jaHJvbml6ZXIodGhpcy5fY29udGVudFRyZWVPdXRsaW5lLCB0aGlzLl9kYXRh
R3JpZCk7CisgICAgICAgIHZhciBjb2x1bW5zID0geyJncmFwaCI6IHt3aWR0aDogIjEwMCUifX07
CiAKLSAgICB0aGlzLl90aW1lbGluZVJ1bGVyID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyOwotICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWxsb3dzQ2xpcHBlZExhYmVscyA9IHRydWU7
Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3RpbWVsaW5lUnVsZXIuZWxlbWVu
dCk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChj
b2x1bW5zKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwgdGhpcy5fZGF0YUdyaWRO
b2RlU2VsZWN0ZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoIm5vLWhlYWRlciIpOwogCi0gICAgdGhpcy5fY3VycmVudFRpbWVNYXJrZXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyKDAsIFdlYkluc3BlY3Rvci5UaW1lbGluZU1h
cmtlci5UeXBlLkN1cnJlbnRUaW1lKTsKLSAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmFkZE1hcmtl
cih0aGlzLl9jdXJyZW50VGltZU1hcmtlcik7CisgICAgICAgIHRoaXMuX3RyZWVPdXRsaW5lRGF0
YUdyaWRTeW5jaHJvbml6ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRyZWVPdXRsaW5lRGF0YUdyaWRT
eW5jaHJvbml6ZXIodGhpcy5fY29udGVudFRyZWVPdXRsaW5lLCB0aGlzLl9kYXRhR3JpZCk7CiAK
LSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1l
bGluZVZpZXcuU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlciA9IG5l
dyBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlcjsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxl
ci5hbGxvd3NDbGlwcGVkTGFiZWxzID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuX3RpbWVsaW5lUnVsZXIuZWxlbWVudCk7CiAKLSAgICB0aGlzLl9uZXR3b3Jr
VGltZWxpbmUgPSByZWNvcmRpbmcudGltZWxpbmVzLmdldChXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmQuVHlwZS5OZXR3b3JrKTsKLSAgICB0aGlzLl9uZXR3b3JrVGltZWxpbmUuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX25l
dHdvcmtUaW1lbGluZVJlY29yZEFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fY3VycmVudFRp
bWVNYXJrZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyKDAsIFdlYkluc3BlY3Rv
ci5UaW1lbGluZU1hcmtlci5UeXBlLkN1cnJlbnRUaW1lKTsKKyAgICAgICAgdGhpcy5fdGltZWxp
bmVSdWxlci5hZGRNYXJrZXIodGhpcy5fY3VycmVudFRpbWVNYXJrZXIpOwogCi0gICAgcmVjb3Jk
aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50
LlNvdXJjZUNvZGVUaW1lbGluZUFkZGVkLCB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmVBZGRlZCwg
dGhpcyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJvdmVydmlldyIpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7
CiAKLSAgICB0aGlzLl9wZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzID0gW107Ci19OworICAgICAg
ICB0aGlzLl9uZXR3b3JrVGltZWxpbmUgPSByZWNvcmRpbmcudGltZWxpbmVzLmdldChXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZS5OZXR3b3JrKTsKKyAgICAgICAgdGhpcy5fbmV0d29y
a1RpbWVsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lLkV2ZW50LlJl
Y29yZEFkZGVkLCB0aGlzLl9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CiAKLVdl
Ykluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5TdHlsZUNsYXNzTmFtZSA9ICJvdmVydmll
dyI7CisgICAgICAgIHJlY29yZGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZGluZy5FdmVudC5Tb3VyY2VDb2RlVGltZWxpbmVBZGRlZCwgdGhpcy5fc291cmNl
Q29kZVRpbWVsaW5lQWRkZWQsIHRoaXMpOwogCi1XZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGlu
ZVZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuT3ZlcnZp
ZXdUaW1lbGluZVZpZXcsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3
LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cyA9IFtd
OworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25TaWRlYmFyVHJl
ZU91dGxpbmVMYWJlbCgpCiAgICAgewogICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJUaW1lbGluZSBFdmVudHMiKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWNvbmRz
UGVyUGl4ZWwoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RpbWVsaW5lUnVsZXIuc2Vj
b25kc1BlclBpeGVsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlY29uZHNQZXJQaXhlbCh4
KQogICAgIHsKICAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci5zZWNvbmRzUGVyUGl4ZWwgPSB4
OwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAg
ICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucHJvdG90eXBlLnNob3duLmNh
bGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fdHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXpl
ci5zeW5jaHJvbml6ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5j
dGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5U
aW1lbGluZVZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dC5jYWxsKHRoaXMpOwogCkBAIC0xMTUs
NyArMTExLDcgQEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fdGltZWxpbmVSdWxlci51cGRhdGVMYXlvdXQoKTsKIAogICAgICAg
ICB0aGlzLl9wcm9jZXNzUGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cygpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHNlbGVjdGlvblBhdGhDb21wb25lbnRzKCkKICAgICB7CkBAIC0xNDEsMjEg
KzEzNywyMSBAQCBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHBhdGhDb21wb25lbnRzOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICB0cmVlRWxlbWVudFBhdGhDb21wb25lbnRT
ZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2Vs
ZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fdHJl
ZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5kYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudChl
dmVudC5kYXRhLnBhdGhDb21wb25lbnQuZ2VuZXJhbFRyZWVFbGVtZW50KTsKICAgICAgICAgaWYg
KCFkYXRhR3JpZE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRhdGFHcmlkTm9k
ZS5yZXZlYWxBbmRTZWxlY3QoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9jb21wYXJlVHJlZUVsZW1lbnRzQnlEZXRhaWxzOiBmdW5jdGlvbihhLCBiKQorICAgIF9j
b21wYXJlVHJlZUVsZW1lbnRzQnlEZXRhaWxzKGEsIGIpCiAgICAgewogICAgICAgICBpZiAoYSBp
bnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUcmVlRWxlbWVudCAmJiBi
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZUVsZW1lbnQpCiAgICAgICAgICAg
ICByZXR1cm4gLTE7CkBAIC0xODUsOSArMTgxLDkgQEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGlt
ZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBGYWxsYmFjayB0byBjb21wYXJp
bmcgYnkgc3RhcnQgdGltZSBmb3IgUmVzb3VyY2VUcmVlRWxlbWVudCBvciBhbnl0aGluZyBlbHNl
LgogICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZVRyZWVFbGVtZW50c0J5U3RhcnRUaW1lKGEs
IGIpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbXBhcmVUcmVlRWxlbWVudHNCeVN0YXJ0VGlt
ZTogZnVuY3Rpb24oYSwgYikKKyAgICBfY29tcGFyZVRyZWVFbGVtZW50c0J5U3RhcnRUaW1lKGEs
IGIpCiAgICAgewogICAgICAgICBmdW5jdGlvbiBnZXRTdGFydFRpbWUodHJlZUVsZW1lbnQpCiAg
ICAgICAgIHsKQEAgLTIwNiwxOCArMjAyLDE4IEBAIFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVs
aW5lVmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgLy8gRmFsbGJhY2sgdG8gY29tcGFyaW5n
IHRpdGxlcy4KICAgICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmxvY2FsZUNvbXBhcmUoYi5tYWlu
VGl0bGUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2luc2VydFRyZWVFbGVtZW50OiBmdW5jdGlv
bih0cmVlRWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQpCisgICAgX2luc2VydFRyZWVFbGVtZW50
KHRyZWVFbGVtZW50LCBwYXJlbnRUcmVlRWxlbWVudCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRyZWVFbGVtZW50KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRyZWVFbGVtZW50
LnBhcmVudCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudFRyZWVFbGVtZW50KTsKIAog
ICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZCh0cmVlRWxlbWVudCwgaW5zZXJ0
aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKHRyZWVFbGVtZW50LCBwYXJl
bnRUcmVlRWxlbWVudC5jaGlsZHJlbiwgdGhpcy5fY29tcGFyZVRyZWVFbGVtZW50c0J5U3RhcnRU
aW1lLmJpbmQodGhpcykpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9hZGRSZXNvdXJjZVRvVHJl
ZUlmTmVlZGVkOiBmdW5jdGlvbihyZXNvdXJjZSkKKyAgICBfYWRkUmVzb3VyY2VUb1RyZWVJZk5l
ZWRlZChyZXNvdXJjZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsK
ICAgICAgICAgaWYgKCFyZXNvdXJjZSkKQEAgLTI2Miw5ICsyNTgsOSBAQCBXZWJJbnNwZWN0b3Iu
T3ZlcnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pbnNlcnRU
cmVlRWxlbWVudChyZXNvdXJjZVRyZWVFbGVtZW50LCBwYXJlbnRUcmVlRWxlbWVudCk7CiAKICAg
ICAgICAgcmV0dXJuIHJlc291cmNlVHJlZUVsZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
YWRkU291cmNlQ29kZVRpbWVsaW5lOiBmdW5jdGlvbihzb3VyY2VDb2RlVGltZWxpbmUpCisgICAg
X2FkZFNvdXJjZUNvZGVUaW1lbGluZShzb3VyY2VDb2RlVGltZWxpbmUpCiAgICAgewogICAgICAg
ICB2YXIgcGFyZW50VHJlZUVsZW1lbnQgPSBzb3VyY2VDb2RlVGltZWxpbmUuc291cmNlQ29kZUxv
Y2F0aW9uID8gdGhpcy5fYWRkUmVzb3VyY2VUb1RyZWVJZk5lZWRlZChzb3VyY2VDb2RlVGltZWxp
bmUuc291cmNlQ29kZSkgOiB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmU7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudFRyZWVFbGVtZW50KTsKQEAgLTI3Niw5ICsyNzIsOSBA
QCBXZWJJbnNwZWN0b3IuT3ZlcnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogCiAgICAg
ICAgIHRoaXMuX3RyZWVPdXRsaW5lRGF0YUdyaWRTeW5jaHJvbml6ZXIuYXNzb2NpYXRlKHNvdXJj
ZUNvZGVUaW1lbGluZVRyZWVFbGVtZW50LCBzb3VyY2VDb2RlVGltZWxpbmVEYXRhR3JpZE5vZGUp
OwogICAgICAgICB0aGlzLl9pbnNlcnRUcmVlRWxlbWVudChzb3VyY2VDb2RlVGltZWxpbmVUcmVl
RWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3Byb2Nl
c3NQZW5kaW5nUmVwcmVzZW50ZWRPYmplY3RzOiBmdW5jdGlvbigpCisgICAgX3Byb2Nlc3NQZW5k
aW5nUmVwcmVzZW50ZWRPYmplY3RzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcGVuZGlu
Z1JlcHJlc2VudGVkT2JqZWN0cyB8fCAhdGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cy5s
ZW5ndGgpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yOTMsOSArMjg5LDkgQEAgV2ViSW5zcGVj
dG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHRoaXMuX3BlbmRpbmdSZXByZXNlbnRlZE9iamVjdHMgPSBbXTsKLSAgICB9LAorICAgIH0K
IAotICAgIF9uZXR3b3JrVGltZWxpbmVSZWNvcmRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X25ldHdvcmtUaW1lbGluZVJlY29yZEFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHJl
c291cmNlVGltZWxpbmVSZWNvcmQgPSBldmVudC5kYXRhLnJlY29yZDsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQocmVzb3VyY2VUaW1lbGluZVJlY29yZCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZVRpbWVsaW5lUmVjb3JkKTsKQEAgLTMwNiw5ICszMDIsOSBAQCBXZWJJbnNwZWN0b3Iu
T3ZlcnZpZXdUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIC8vIFdlIGRvbid0
IGV4cGVjdCB0byBoYXZlIGFueSBzb3VyY2UgY29kZSB0aW1lbGluZXMgeWV0LiBUaG9zZSBzaG91
bGQgYmUgYWRkZWQgd2l0aCBfc291cmNlQ29kZVRpbWVsaW5lQWRkZWQuCiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCF0aGlzLl9yZWNvcmRpbmcuc291cmNlQ29kZVRpbWVsaW5lc0ZvclNvdXJjZUNv
ZGUocmVzb3VyY2VUaW1lbGluZVJlY29yZC5yZXNvdXJjZSkubGVuZ3RoKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9zb3VyY2VDb2RlVGltZWxpbmVBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X3NvdXJjZUNvZGVUaW1lbGluZUFkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHNvdXJj
ZUNvZGVUaW1lbGluZSA9IGV2ZW50LmRhdGEuc291cmNlQ29kZVRpbWVsaW5lOwogICAgICAgICBj
b25zb2xlLmFzc2VydChzb3VyY2VDb2RlVGltZWxpbmUpOwpAQCAtMzE4LDIwICszMTQsMjAgQEAg
V2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
dGhpcy5fcGVuZGluZ1JlcHJlc2VudGVkT2JqZWN0cy5wdXNoKHNvdXJjZUNvZGVUaW1lbGluZSk7
CiAKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Rh
dGFHcmlkTm9kZVNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWROb2RlU2Vs
ZWN0ZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNE
aWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RyZWVFbGVtZW50RGVzZWxlY3RlZDog
ZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgX3RyZWVFbGVtZW50RGVzZWxlY3RlZCh0cmVlRWxl
bWVudCkKICAgICB7CiAgICAgICAgIGlmICh0cmVlRWxlbWVudC5zdGF0dXMpCiAgICAgICAgICAg
ICB0cmVlRWxlbWVudC5zdGF0dXMgPSAiIjsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxl
bWVudFNlbGVjdGVkOiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCisgICAg
X3RyZWVFbGVtZW50U2VsZWN0ZWQodHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQogICAgIHsK
ICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFyUGFuZWwuY2FuU2hvd0Rp
ZmZlcmVudENvbnRlbnRWaWV3KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNTgsOSArMzU0
LDkgQEAgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd09yaWdpbmFsT3JG
b3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24odHJlZUVsZW1lbnQuc291cmNlQ29kZVRpbWVsaW5l
LnNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVRyZWVFbGVtZW50V2l0
aENsb3NlQnV0dG9uKHRyZWVFbGVtZW50KTsKLSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVU
cmVlRWxlbWVudFdpdGhDbG9zZUJ1dHRvbjogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgX3Vw
ZGF0ZVRyZWVFbGVtZW50V2l0aENsb3NlQnV0dG9uKHRyZWVFbGVtZW50KQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX2Nsb3NlU3RhdHVzQnV0dG9uKSB7CiAgICAgICAgICAgICB0cmVlRWxlbWVu
dC5zdGF0dXMgPSB0aGlzLl9jbG9zZVN0YXR1c0J1dHRvbi5lbGVtZW50OwpAQCAtMzczLDkgKzM2
OSw5IEBAIFdlYkluc3BlY3Rvci5PdmVydmlld1RpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBpZiAodHJlZUVsZW1lbnQgPT09IHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVl
T3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50KQogICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZVRyZWVFbGVtZW50V2l0aENsb3NlQnV0dG9uKHRyZWVFbGVtZW50KTsKICAgICAgICAgfS5iaW5k
KHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jbG9zZVN0YXR1c0J1dHRvbkNsaWNrZWQ6
IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jbG9zZVN0YXR1c0J1dHRvbkNsaWNrZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUuc2VsZWN0ZWRU
cmVlRWxlbWVudC5kZXNlbGVjdCgpOwogICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRl
YmFyUGFuZWwuc2hvd1RpbWVsaW5lT3ZlcnZpZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGF0YUdyaWQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERhdGFHcmlkLmpz
CmluZGV4IDFjYjdlYmMuLmJiZTU5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGF0YUdyaWQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREYXRhR3JpZC5qcwpAQCAt
MSw2ICsxLDYgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBX
YXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjQsNzUgKzI0LDY4IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5Qcm9iZVNldERhdGFHcmlkID0gZnVuY3Rpb24ocHJvYmVTZXQpCitXZWJJbnNwZWN0b3Iu
UHJvYmVTZXREYXRhR3JpZCA9IGNsYXNzIFByb2JlU2V0RGF0YUdyaWQgZXh0ZW5kcyBXZWJJbnNw
ZWN0b3IuRGF0YUdyaWQKIHsKLSAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9m
IFdlYkluc3BlY3Rvci5Qcm9iZVNldCwgIkludmFsaWQgUHJvYmVTZXQgYXJndW1lbnQ6ICIsIHBy
b2JlU2V0KTsKLSAgICB0aGlzLnByb2JlU2V0ID0gcHJvYmVTZXQ7Ci0KLSAgICB2YXIgY29sdW1u
c0RhdGEgPSB7fTsKLSAgICBmb3IgKHZhciBwcm9iZSBvZiBwcm9iZVNldC5wcm9iZXMpIHsKLSAg
ICAgICAgdmFyIHByb2JlVGl0bGUgPSBwcm9iZS5leHByZXNzaW9uIHx8IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiKHVuaW5pdGlhbGl6ZWQpIik7Ci0gICAgICAgIGNvbHVtbnNEYXRhW3Byb2JlLmlk
XSA9IHsgdGl0bGU6IHByb2JlVGl0bGUgfTsKLSAgICB9Ci0KLSAgICBXZWJJbnNwZWN0b3IuRGF0
YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zRGF0YSk7CisgICAgY29uc3RydWN0b3IocHJvYmVTZXQp
CisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdlYklu
c3BlY3Rvci5Qcm9iZVNldCwgIkludmFsaWQgUHJvYmVTZXQgYXJndW1lbnQ6ICIsIHByb2JlU2V0
KTsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbmxpbmUiKTsKKyAgICAgICAg
dmFyIGNvbHVtbnNEYXRhID0ge307CisgICAgICAgIGZvciAodmFyIHByb2JlIG9mIHByb2JlU2V0
LnByb2JlcykgeworICAgICAgICAgICAgdmFyIHByb2JlVGl0bGUgPSBwcm9iZS5leHByZXNzaW9u
IHx8IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHVuaW5pdGlhbGl6ZWQpIik7CisgICAgICAgICAg
ICBjb2x1bW5zRGF0YVtwcm9iZS5pZF0gPSB7IHRpdGxlOiBwcm9iZVRpdGxlIH07CisgICAgICAg
IH0KIAotICAgIHRoaXMuX2ZyYW1lTm9kZXMgPSBuZXcgTWFwOwotICAgIHRoaXMuX25vZGVzU2lu
Y2VMYXN0TmF2aWdhdGlvbiA9IFtdOworICAgICAgICBzdXBlcihjb2x1bW5zRGF0YSk7CiAKLSAg
ICB0aGlzLl9saXN0ZW5lcnMgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQodGhp
cywgIlByb2JlU2V0RGF0YUdyaWQgaW5zdGFuY2UgbGlzdGVuZXJzIik7Ci0gICAgdGhpcy5fbGlz
dGVuZXJzLnJlZ2lzdGVyKHByb2JlU2V0LCBXZWJJbnNwZWN0b3IuUHJvYmVTZXQuRXZlbnQuUHJv
YmVBZGRlZCwgdGhpcy5fc2V0dXBQcm9iZSk7Ci0gICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVy
KHByb2JlU2V0LCBXZWJJbnNwZWN0b3IuUHJvYmVTZXQuRXZlbnQuUHJvYmVSZW1vdmVkLCB0aGlz
Ll90ZWFyZG93blByb2JlKTsKLSAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIocHJvYmVTZXQs
IFdlYkluc3BlY3Rvci5Qcm9iZVNldC5FdmVudC5TYW1wbGVzQ2xlYXJlZCwgdGhpcy5fc2V0dXBE
YXRhKTsKLSAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIoV2ViSW5zcGVjdG9yLlByb2JlLCBX
ZWJJbnNwZWN0b3IuUHJvYmUuRXZlbnQuRXhwcmVzc2lvbkNoYW5nZWQsIHRoaXMuX3Byb2JlRXhw
cmVzc2lvbkNoYW5nZWQpCi0gICAgdGhpcy5fbGlzdGVuZXJzLmluc3RhbGwoKTsKKyAgICAgICAg
dGhpcy5wcm9iZVNldCA9IHByb2JlU2V0OwogCi0gICAgdGhpcy5fc2V0dXBEYXRhKCk7Ci19Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJpbmxpbmUiKTsKIAotV2ViSW5zcGVj
dG9yLlByb2JlU2V0RGF0YUdyaWQuRGF0YVVwZGF0ZWRTdHlsZUNsYXNzTmFtZSA9ICJkYXRhLXVw
ZGF0ZWQiOwotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQuUGFzdEZyYW1lU3R5bGVDbGFz
c05hbWUgPSAicGFzdC12YWx1ZSI7Ci1XZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5IaWdo
bGlnaHRlZEZyYW1lU3R5bGVDbGFzc05hbWUgPSAiaGlnaGxpZ2h0ZWQiOworICAgICAgICB0aGlz
Ll9mcmFtZU5vZGVzID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fbm9kZXNTaW5jZUxhc3ROYXZp
Z2F0aW9uID0gW107CiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLkRhdGFVcGRhdGVk
QW5pbWF0aW9uRHVyYXRpb24gPSAzMDA7IC8vIG1pbGxpc2Vjb25kcworICAgICAgICB0aGlzLl9s
aXN0ZW5lcnMgPSBuZXcgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQodGhpcywgIlByb2Jl
U2V0RGF0YUdyaWQgaW5zdGFuY2UgbGlzdGVuZXJzIik7CisgICAgICAgIHRoaXMuX2xpc3RlbmVy
cy5yZWdpc3Rlcihwcm9iZVNldCwgV2ViSW5zcGVjdG9yLlByb2JlU2V0LkV2ZW50LlByb2JlQWRk
ZWQsIHRoaXMuX3NldHVwUHJvYmUpOworICAgICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIo
cHJvYmVTZXQsIFdlYkluc3BlY3Rvci5Qcm9iZVNldC5FdmVudC5Qcm9iZVJlbW92ZWQsIHRoaXMu
X3RlYXJkb3duUHJvYmUpOworICAgICAgICB0aGlzLl9saXN0ZW5lcnMucmVnaXN0ZXIocHJvYmVT
ZXQsIFdlYkluc3BlY3Rvci5Qcm9iZVNldC5FdmVudC5TYW1wbGVzQ2xlYXJlZCwgdGhpcy5fc2V0
dXBEYXRhKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJzLnJlZ2lzdGVyKFdlYkluc3BlY3Rvci5Q
cm9iZSwgV2ViSW5zcGVjdG9yLlByb2JlLkV2ZW50LkV4cHJlc3Npb25DaGFuZ2VkLCB0aGlzLl9w
cm9iZUV4cHJlc3Npb25DaGFuZ2VkKQorICAgICAgICB0aGlzLl9saXN0ZW5lcnMuaW5zdGFsbCgp
OwogCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLAotICAgIF9fcHJvdG9fXzog
V2ViSW5zcGVjdG9yLkRhdGFHcmlkLnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5fc2V0dXBEYXRh
KCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAg
ICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgcHJvYmUgb2YgdGhpcy5wcm9iZVNl
dCkKICAgICAgICAgICAgIHRoaXMuX3RlYXJkb3duUHJvYmUocHJvYmUpOwogCiAgICAgICAgIHRo
aXMuX2xpc3RlbmVycy51bmluc3RhbGwodHJ1ZSk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQ
cml2YXRlCiAKLSAgICBfc2V0dXBQcm9iZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3NldHVwUHJv
YmUoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgcHJvYmUgPSBldmVudC5kYXRhOwogICAgICAg
ICB0aGlzLmluc2VydENvbHVtbihwcm9iZS5pZCwge3RpdGxlOiBwcm9iZS5leHByZXNzaW9ufSk7
CiAKICAgICAgICAgZm9yICh2YXIgZnJhbWUgb2YgdGhpcy5fZGF0YS5mcmFtZXMpCiAgICAgICAg
ICAgICB0aGlzLl91cGRhdGVOb2RlRm9yRnJhbWUoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3RlYXJkb3duUHJvYmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90ZWFyZG93blByb2JlKGV2
ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlID0gZXZlbnQuZGF0YTsKICAgICAgICAgdGhp
cy5yZW1vdmVDb2x1bW4ocHJvYmUuaWQpOwogCiAgICAgICAgIGZvciAodmFyIGZyYW1lIG9mIHRo
aXMuX2RhdGEuZnJhbWVzKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlTm9kZUZvckZyYW1lKGZy
YW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zZXR1cERhdGE6IGZ1bmN0aW9uKCkKKyAgICBf
c2V0dXBEYXRhKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2RhdGEgPSB0aGlzLnByb2JlU2V0LmRh
dGFUYWJsZTsKICAgICAgICAgZm9yICh2YXIgZnJhbWUgb2YgdGhpcy5fZGF0YS5mcmFtZXMpCkBA
IC0xMDMsMTggKzk2LDE4IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fZGF0YUxpc3RlbmVycy5yZWdpc3Rlcih0aGlzLl9kYXRhLCBX
ZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhVGFibGUuRXZlbnQuU2VwYXJhdG9ySW5zZXJ0ZWQsIHRo
aXMuX2RhdGFTZXBhcmF0b3JJbnNlcnRlZCk7CiAgICAgICAgIHRoaXMuX2RhdGFMaXN0ZW5lcnMu
cmVnaXN0ZXIodGhpcy5fZGF0YSwgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YVRhYmxlLkV2ZW50
LldpbGxSZW1vdmUsIHRoaXMuX3RlYXJkb3duRGF0YSk7CiAgICAgICAgIHRoaXMuX2RhdGFMaXN0
ZW5lcnMuaW5zdGFsbCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RlYXJkb3duRGF0YTogZnVu
Y3Rpb24oKQorICAgIF90ZWFyZG93bkRhdGEoKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUxp
c3RlbmVycy51bmluc3RhbGwodHJ1ZSk7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsK
ICAgICAgICAgdGhpcy5fZnJhbWVOb2RlcyA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX3NlcGFy
YXRvcnMgPSBuZXcgTWFwOwogICAgICAgICBkZWxldGUgdGhpcy5fbGFzdFVwZGF0ZWRGcmFtZTsK
LSAgICB9LAorICAgIH0KIAotICAgIF91cGRhdGVOb2RlRm9yRnJhbWU6IGZ1bmN0aW9uKGZyYW1l
KQorICAgIF91cGRhdGVOb2RlRm9yRnJhbWUoZnJhbWUpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChmcmFtZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFGcmFtZSwg
IkludmFsaWQgUHJvYmVTZXREYXRhRnJhbWUgYXJndW1lbnQ6ICIsIGZyYW1lKTsKICAgICAgICAg
dmFyIG5vZGUgPSBudWxsOwpAQCAtMTQ4LDkgKzE0MSw5IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNl
dERhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgfSwgV2ViSW5zcGVjdG9yLlByb2JlU2V0
RGF0YUdyaWQuRGF0YVVwZGF0ZWRBbmltYXRpb25EdXJhdGlvbik7CiAKICAgICAgICAgdGhpcy5f
bm9kZXNTaW5jZUxhc3ROYXZpZ2F0aW9uLnB1c2gobm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfdXBkYXRlTm9kZUZvclNlcGFyYXRvcjogZnVuY3Rpb24oZnJhbWUpCisgICAgX3VwZGF0ZU5v
ZGVGb3JTZXBhcmF0b3IoZnJhbWUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9mcmFtZU5vZGVzLmhhcyhmcmFtZSksICJUcmllZCB0byBhZGQgc2VwYXJhdG9yIGZvciB1bmtu
b3duIGRhdGEgZnJhbWU6ICIsIGZyYW1lKTsKICAgICAgICAgdGhpcy5fZnJhbWVOb2Rlcy5nZXQo
ZnJhbWUpLnVwZGF0ZUNlbGxzRm9yU2VwYXJhdG9yKGZyYW1lLCB0aGlzLnByb2JlU2V0KTsKQEAg
LTE1OSwyMiArMTUyLDIyIEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIG5vZGUuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5Qcm9iZVNldERhdGFHcmlkLlBhc3RGcmFtZVN0eWxlQ2xhc3NOYW1lKTsKIAogICAgICAgICB0
aGlzLl9ub2Rlc1NpbmNlTGFzdE5hdmlnYXRpb24gPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9kYXRhRnJhbWVJbnNlcnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFGcmFtZUluc2Vy
dGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGZyYW1lID0gZXZlbnQuZGF0YTsKICAgICAg
ICAgdGhpcy5fbGFzdFVwZGF0ZWRGcmFtZSA9IGZyYW1lOwogICAgICAgICB0aGlzLl91cGRhdGVO
b2RlRm9yRnJhbWUoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RhdGFTZXBhcmF0b3JJ
bnNlcnRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFTZXBhcmF0b3JJbnNlcnRlZChldmVu
dCkKICAgICB7CiAgICAgICAgIHZhciBmcmFtZSA9IGV2ZW50LmRhdGE7CiAgICAgICAgIHRoaXMu
X3VwZGF0ZU5vZGVGb3JTZXBhcmF0b3IoZnJhbWUpOwotICAgIH0sCisgICAgfQogCi0gICAgX3By
b2JlRXhwcmVzc2lvbkNoYW5nZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wcm9iZUV4cHJlc3Np
b25DaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHByb2JlID0gZXZlbnQudGFyZ2V0
OwogICAgICAgICBpZiAocHJvYmUuYnJlYWtwb2ludCAhPT0gdGhpcy5wcm9iZVNldC5icmVha3Bv
aW50KQpAQCAtMTkyLDQgKzE4NSwxMCBAQCBXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIGZyYW1lIG9mIHRoaXMuX2RhdGEuZnJhbWVz
KQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlTm9kZUZvckZyYW1lKGZyYW1lKTsKICAgICB9Ci19
Cit9OworCitXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5EYXRhVXBkYXRlZFN0eWxlQ2xh
c3NOYW1lID0gImRhdGEtdXBkYXRlZCI7CitXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZC5Q
YXN0RnJhbWVTdHlsZUNsYXNzTmFtZSA9ICJwYXN0LXZhbHVlIjsKK1dlYkluc3BlY3Rvci5Qcm9i
ZVNldERhdGFHcmlkLkhpZ2hsaWdodGVkRnJhbWVTdHlsZUNsYXNzTmFtZSA9ICJoaWdobGlnaHRl
ZCI7CisKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkLkRhdGFVcGRhdGVkQW5pbWF0aW9u
RHVyYXRpb24gPSAzMDA7IC8vIG1pbGxpc2Vjb25kcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREYXRhR3JpZE5vZGUuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERhdGFHcmlk
Tm9kZS5qcwppbmRleCAzYjViMWJhLi44Y2U1MWM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREYXRhR3JpZE5vZGUuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREYXRh
R3JpZE5vZGUuanMKQEAgLTEsNiArMSw2IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEz
IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI0LDM3ICsyNCwzMyBAQAogICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
ICAqLwogCi1XZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRh
R3JpZCkKK1dlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFHcmlkTm9kZSA9IGNsYXNzIFByb2JlU2V0
RGF0YUdyaWROb2RlIGV4dGVuZHMgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZQogewotICAgIGNv
bnNvbGUuYXNzZXJ0KGRhdGFHcmlkIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0
YUdyaWQsICJJbnZhbGlkIFByb2JlU2V0RGF0YUdyaWQgYXJndW1lbnQ6IiwgZGF0YUdyaWQpOwot
Ci0gICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIHRoaXMuZGF0YSk7Ci0g
ICAgdGhpcy5kYXRhR3JpZCA9IGRhdGFHcmlkOyAvLyBUaGlzIGlzIHNldCB0byBudWxsIGluIERh
dGFHcmlkTm9kZSdzIGNvbnN0cnVjdG9yLgotICAgIHRoaXMuX2RhdGEgPSB7fTsKKyAgICBjb25z
dHJ1Y3RvcihkYXRhR3JpZCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFHcmlk
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWQsICJJbnZhbGlkIFByb2Jl
U2V0RGF0YUdyaWQgYXJndW1lbnQ6IiwgZGF0YUdyaWQpOwogCi0gICAgdGhpcy5fZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgdGhpcy5fZWxlbWVudC5kYXRhR3Jp
ZE5vZGUgPSB0aGlzOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgicmV2ZWFsZWQi
KTsKLX07CisgICAgICAgIHN1cGVyKHRoaXMuZGF0YSk7CiAKLVdlYkluc3BlY3Rvci5Qcm9iZVNl
dERhdGFHcmlkTm9kZS5TZXBhcmF0b3JTdHlsZUNsYXNzTmFtZSA9ICJzZXBhcmF0b3IiOwotV2Vi
SW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWROb2RlLlVua25vd25WYWx1ZVN0eWxlQ2xhc3NOYW1l
ID0gInVua25vd24tdmFsdWUiOworICAgICAgICB0aGlzLmRhdGFHcmlkID0gZGF0YUdyaWQ7IC8v
IFRoaXMgaXMgc2V0IHRvIG51bGwgaW4gRGF0YUdyaWROb2RlJ3MgY29uc3RydWN0b3IuCisgICAg
ICAgIHRoaXMuX2RhdGEgPSB7fTsKIAotV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWROb2Rl
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0
YUdyaWROb2RlLAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90
b3R5cGUsCisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
ciIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmRhdGFHcmlkTm9kZSA9IHRoaXM7CisgICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZCgicmV2ZWFsZWQiKTsKKyAgICB9CiAKICAgICAv
LyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2RhdGE7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZnJhbWUodmFs
dWUpCiAgICAgewpAQCAtNzAsMTQgKzY2LDE0IEBAIFdlYkluc3BlY3Rvci5Qcm9iZVNldERhdGFH
cmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgZGF0YVtwcm9iZS5pZF0gPSBz
YW1wbGUub2JqZWN0OwogICAgICAgICB9CiAgICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhOwotICAg
IH0sCisgICAgfQogCiAgICAgZ2V0IGZyYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9mcmFtZTsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZUNlbGxDb250ZW50OiBmdW5jdGlv
bihjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQorICAgIGNyZWF0ZUNlbGxDb250ZW50KGNvbHVtbklk
ZW50aWZpZXIsIGNlbGwpCiAgICAgewogICAgICAgICB2YXIgc2FtcGxlID0gdGhpcy5kYXRhW2Nv
bHVtbklkZW50aWZpZXJdOwogICAgICAgICBpZiAoc2FtcGxlID09PSBXZWJJbnNwZWN0b3IuUHJv
YmVTZXREYXRhRnJhbWUuTWlzc2luZ1ZhbHVlKSB7CkBAIC04OSwxNCArODUsMTcgQEAgV2ViSW5z
cGVjdG9yLlByb2JlU2V0RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJl
dHVybiBXZWJJbnNwZWN0b3IuRm9ybWF0dGVkVmFsdWUuY3JlYXRlT2JqZWN0VHJlZU9yRm9ybWF0
dGVkVmFsdWVGb3JSZW1vdGVPYmplY3Qoc2FtcGxlLCBudWxsKTsKIAogICAgICAgICByZXR1cm4g
c2FtcGxlOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlQ2VsbHNGcm9tRnJhbWU6IGZ1bmN0
aW9uKGZyYW1lLCBwcm9iZVNldCkKKyAgICB1cGRhdGVDZWxsc0Zyb21GcmFtZShmcmFtZSwgcHJv
YmVTZXQpCiAgICAgewotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlQ2VsbHNGb3JTZXBhcmF0
b3I6IGZ1bmN0aW9uKGZyYW1lLCBwcm9iZVNldCkKKyAgICB1cGRhdGVDZWxsc0ZvclNlcGFyYXRv
cihmcmFtZSwgcHJvYmVTZXQpCiAgICAgewogICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlz
dC5hZGQoV2ViSW5zcGVjdG9yLlByb2JlU2V0RGF0YUdyaWROb2RlLlNlcGFyYXRvclN0eWxlQ2xh
c3NOYW1lKTsKICAgICB9CiB9OworCitXZWJJbnNwZWN0b3IuUHJvYmVTZXREYXRhR3JpZE5vZGUu
U2VwYXJhdG9yU3R5bGVDbGFzc05hbWUgPSAic2VwYXJhdG9yIjsKK1dlYkluc3BlY3Rvci5Qcm9i
ZVNldERhdGFHcmlkTm9kZS5Vbmtub3duVmFsdWVTdHlsZUNsYXNzTmFtZSA9ICJ1bmtub3duLXZh
bHVlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1Byb2ZpbGVOb2RlRGF0YUdyaWROb2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuanMKaW5kZXggZWRlMTFj
Ni4uZDcxYzJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUuanMKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
NjMgKzIzLDU2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWROb2RlID0gZnVuY3Rpb24ocHJvZmlsZU5v
ZGUsIGJhc2VTdGFydFRpbWUsIHJhbmdlU3RhcnRUaW1lLCByYW5nZUVuZFRpbWUpCitXZWJJbnNw
ZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUgPSBjbGFzcyBQcm9maWxlTm9kZURhdGFHcmlk
Tm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZQogewotICAgIHZh
ciBoYXNDaGlsZHJlbiA9ICEhcHJvZmlsZU5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7Ci0KLSAgICBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBmYWxzZSwgbnVsbCwg
aGFzQ2hpbGRyZW4pOwotCi0gICAgdGhpcy5fcHJvZmlsZU5vZGUgPSBwcm9maWxlTm9kZTsKLSAg
ICB0aGlzLl9iYXNlU3RhcnRUaW1lID0gYmFzZVN0YXJ0VGltZSB8fCAwOwotICAgIHRoaXMuX3Jh
bmdlU3RhcnRUaW1lID0gcmFuZ2VTdGFydFRpbWUgfHwgMDsKLSAgICB0aGlzLl9yYW5nZUVuZFRp
bWUgPSB0eXBlb2YgcmFuZ2VFbmRUaW1lID09PSAibnVtYmVyIiA/IHJhbmdlRW5kVGltZSA6IElu
ZmluaXR5OwotCi0gICAgdGhpcy5fZGF0YSA9IHRoaXMuX3Byb2ZpbGVOb2RlLmNvbXB1dGVDYWxs
SW5mb0ZvclRpbWVSYW5nZSh0aGlzLl9yYW5nZVN0YXJ0VGltZSwgdGhpcy5fcmFuZ2VFbmRUaW1l
KTsKLSAgICB0aGlzLl9kYXRhLmxvY2F0aW9uID0gdGhpcy5fcHJvZmlsZU5vZGUuc291cmNlQ29k
ZUxvY2F0aW9uOwotfTsKKyAgICBjb25zdHJ1Y3Rvcihwcm9maWxlTm9kZSwgYmFzZVN0YXJ0VGlt
ZSwgcmFuZ2VTdGFydFRpbWUsIHJhbmdlRW5kVGltZSkKKyAgICB7CisgICAgICAgIHZhciBoYXND
aGlsZHJlbiA9ICEhcHJvZmlsZU5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7CiAKLS8vIEZJWE1FOiBN
b3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0
aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlv
bnMoV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdyaWROb2RlKTsKKyAgICAgICAgc3VwZXIo
ZmFsc2UsIG51bGwsIGhhc0NoaWxkcmVuKTsKIAotV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0
YUdyaWROb2RlLkljb25TdHlsZUNsYXNzTmFtZSA9ICJpY29uIjsKKyAgICAgICAgdGhpcy5fcHJv
ZmlsZU5vZGUgPSBwcm9maWxlTm9kZTsKKyAgICAgICAgdGhpcy5fYmFzZVN0YXJ0VGltZSA9IGJh
c2VTdGFydFRpbWUgfHwgMDsKKyAgICAgICAgdGhpcy5fcmFuZ2VTdGFydFRpbWUgPSByYW5nZVN0
YXJ0VGltZSB8fCAwOworICAgICAgICB0aGlzLl9yYW5nZUVuZFRpbWUgPSB0eXBlb2YgcmFuZ2VF
bmRUaW1lID09PSAibnVtYmVyIiA/IHJhbmdlRW5kVGltZSA6IEluZmluaXR5OwogCi1XZWJJbnNw
ZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVEYXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLAorICAgICAgICB0
aGlzLl9kYXRhID0gdGhpcy5fcHJvZmlsZU5vZGUuY29tcHV0ZUNhbGxJbmZvRm9yVGltZVJhbmdl
KHRoaXMuX3JhbmdlU3RhcnRUaW1lLCB0aGlzLl9yYW5nZUVuZFRpbWUpOworICAgICAgICB0aGlz
Ll9kYXRhLmxvY2F0aW9uID0gdGhpcy5fcHJvZmlsZU5vZGUuc291cmNlQ29kZUxvY2F0aW9uOwor
ICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IHByb2ZpbGVOb2RlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9wcm9maWxlTm9kZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCByZWNvcmRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IGJhc2VTdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Jh
c2VTdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmFuZ2VTdGFydFRpbWUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3JhbmdlU3RhcnRUaW1lOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHJhbmdlRW5kVGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
cmFuZ2VFbmRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVSYW5n
ZVRpbWVzOiBmdW5jdGlvbihzdGFydFRpbWUsIGVuZFRpbWUpCisgICAgdXBkYXRlUmFuZ2VUaW1l
cyhzdGFydFRpbWUsIGVuZFRpbWUpCiAgICAgewogICAgICAgICB2YXIgb2xkUmFuZ2VTdGFydFRp
bWUgPSB0aGlzLl9yYW5nZVN0YXJ0VGltZTsKICAgICAgICAgdmFyIG9sZFJhbmdlRW5kVGltZSA9
IHRoaXMuX3JhbmdlRW5kVGltZTsKQEAgLTEwMCwxOSArOTMsMTkgQEAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVOb2RlRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAob2xkU3Rh
cnRCb3VuZGFyeSAhPT0gbmV3U3RhcnRCb3VuZGFyeSB8fCBvbGRFbmRCb3VuZGFyeSAhPT0gbmV3
RW5kQm91bmRhcnkpCiAgICAgICAgICAgICB0aGlzLm5lZWRzUmVmcmVzaCgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgcmVmcmVzaDogZnVuY3Rpb24oKQorICAgIHJlZnJlc2goKQogICAgIHsKICAg
ICAgICAgdGhpcy5fZGF0YSA9IHRoaXMuX3Byb2ZpbGVOb2RlLmNvbXB1dGVDYWxsSW5mb0ZvclRp
bWVSYW5nZSh0aGlzLl9yYW5nZVN0YXJ0VGltZSwgdGhpcy5fcmFuZ2VFbmRUaW1lKTsKICAgICAg
ICAgdGhpcy5fZGF0YS5sb2NhdGlvbiA9IHRoaXMuX3Byb2ZpbGVOb2RlLnNvdXJjZUNvZGVMb2Nh
dGlvbjsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90
eXBlLnJlZnJlc2guY2FsbCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNyZWF0ZUNlbGxD
b250ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQorICAgIGNyZWF0ZUNlbGxD
b250ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCiAgICAgewotICAgICAgICBjb25zdCBlbXB0
eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgPSAiXHUyMDE0IjsKKyAgICAgICAgdmFyIGVtcHR5VmFs
dWVQbGFjZWhvbGRlclN0cmluZyA9ICJcdTIwMTQiOwogICAgICAgICB2YXIgdmFsdWUgPSB0aGlz
LmRhdGFbY29sdW1uSWRlbnRpZmllcl07CiAKICAgICAgICAgc3dpdGNoIChjb2x1bW5JZGVudGlm
aWVyKSB7CkBAIC0xMjUsNiArMTE4LDYgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2RlRGF0YUdy
aWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBpc05hTih2YWx1ZSkgPyBl
bXB0eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgOiBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHZhbHVl
LCB0cnVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGltZWxp
bmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGxDb250ZW50LmNhbGwodGhpcywgY29s
dW1uSWRlbnRpZmllciwgY2VsbCk7CisgICAgICAgIHJldHVybiBzdXBlci5jcmVhdGVDZWxsQ29u
dGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvcGVydGllc1NlY3Rpb24u
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9wZXJ0aWVz
U2VjdGlvbi5qcwppbmRleCAzNDc3Y2M1Li5kZDlkOTk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9wZXJ0aWVzU2VjdGlvbi5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9wZXJ0aWVzU2Vj
dGlvbi5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjMsMTcgKzIzLDE4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uID0gZnVuY3Rpb24odGl0
bGUsIHN1YnRpdGxlKQorV2ViSW5zcGVjdG9yLlByb3BlcnRpZXNTZWN0aW9uID0gY2xhc3MgUHJv
cGVydGllc1NlY3Rpb24gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuU2VjdGlvbgogewotICAgIHRoaXMu
cHJvcGVydGllc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwotICAgIHRo
aXMucHJvcGVydGllc0VsZW1lbnQuY2xhc3NOYW1lID0gInByb3BlcnRpZXMgcHJvcGVydGllcy10
cmVlIjsKLSAgICB0aGlzLnByb3BlcnRpZXNFbGVtZW50LnRhYkluZGV4ID0gMDsKLSAgICB0aGlz
LnByb3BlcnRpZXNUcmVlT3V0bGluZSA9IG5ldyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmUodGhp
cy5wcm9wZXJ0aWVzRWxlbWVudCk7Ci0gICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuc2Vj
dGlvbiA9IHRoaXM7CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgc3VwZXIodGl0
bGUsIHN1YnRpdGxlKTsKIAotICAgIFdlYkluc3BlY3Rvci5TZWN0aW9uLmNhbGwodGhpcywgdGl0
bGUsIHN1YnRpdGxlKTsKKyAgICAgICAgdGhpcy5wcm9wZXJ0aWVzRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoIm9sIik7CisgICAgICAgIHRoaXMucHJvcGVydGllc0VsZW1lbnQuY2xh
c3NOYW1lID0gInByb3BlcnRpZXMgcHJvcGVydGllcy10cmVlIjsKKyAgICAgICAgdGhpcy5wcm9w
ZXJ0aWVzRWxlbWVudC50YWJJbmRleCA9IDA7CisgICAgICAgIHRoaXMucHJvcGVydGllc1RyZWVP
dXRsaW5lID0gbmV3IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZSh0aGlzLnByb3BlcnRpZXNFbGVt
ZW50KTsKKyAgICAgICAgdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuc2VjdGlvbiA9IHRoaXM7
CiAKLSAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5wcm9wZXJ0aWVzRWxlbWVudCk7
CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnByb3BlcnRpZXNFbGVtZW50
KTsKKyAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNrQ29uc29sZU5h
dmlnYXRpb25CYXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9RdWlja0NvbnNvbGVOYXZpZ2F0aW9uQmFyLmpzCmluZGV4IDI5MTA4ZTcuLjE0MzZlNWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1F1aWNr
Q29uc29sZU5hdmlnYXRpb25CYXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhci5qcwpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjQgKzIzLDIz
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVj
dG9yLlF1aWNrQ29uc29sZU5hdmlnYXRpb25CYXIgPSBmdW5jdGlvbihlbGVtZW50LCBuYXZpZ2F0
aW9uSXRlbXMpCitXZWJJbnNwZWN0b3IuUXVpY2tDb25zb2xlTmF2aWdhdGlvbkJhciA9IGNsYXNz
IFF1aWNrQ29uc29sZU5hdmlnYXRpb25CYXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkJhcgogewotICAgIFdlYkluc3BlY3Rvci5OYXZpZ2F0aW9uQmFyLmNhbGwodGhpcywgZWxlbWVu
dCwgbmF2aWdhdGlvbkl0ZW1zKTsKLX07CisgICAgY29uc3RydWN0b3IoZWxlbWVudCwgbmF2aWdh
dGlvbkl0ZW1zKQorICAgIHsKKyAgICAgICAgc3VwZXIoZWxlbWVudCwgbmF2aWdhdGlvbkl0ZW1z
KTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGVOYXZpZ2F0aW9uQmFyLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlF1aWNrQ29uc29sZU5hdmln
YXRpb25CYXIsCisgICAgLy8gUHVibGljCiAKICAgICBnZXQgc2l6ZXNUb0ZpdCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZE5hdmlnYXRpb25J
dGVtOiBmdW5jdGlvbihuYXZpZ2F0aW9uSXRlbSkKKyAgICBhZGROYXZpZ2F0aW9uSXRlbShuYXZp
Z2F0aW9uSXRlbSkKICAgICB7CiAgICAgICAgIC8vIEFkZCBuZXcgbmF2aWdhdGlvbiBpdGVtcyB0
byB0aGUgbGVmdC4KICAgICAgICAgcmV0dXJuIHRoaXMuaW5zZXJ0TmF2aWdhdGlvbkl0ZW0obmF2
aWdhdGlvbkl0ZW0sIDApOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5RdWlja0NvbnNvbGVO
YXZpZ2F0aW9uQmFyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlv
bkJhci5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5q
cwppbmRleCBhYzgyZDk5Li5iZWJmZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1JhZGlvQnV0dG9uTmF2
aWdhdGlvbkl0ZW0uanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTIzLDIzICsyMywxOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVt
ID0gZnVuY3Rpb24oaWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdl
SGVpZ2h0KSB7Ci0gICAgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLmNhbGwodGhp
cywgaWRlbnRpZmllciwgdG9vbFRpcCwgaW1hZ2UsIGltYWdlV2lkdGgsIGltYWdlSGVpZ2h0LCBu
dWxsLCAidGFiIik7Ci19OwotCi1XZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRl
bS5TdHlsZUNsYXNzTmFtZSA9ICJyYWRpbyI7Ci1XZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZp
Z2F0aW9uSXRlbS5BY3RpdmVTdHlsZUNsYXNzTmFtZSA9ICJhY3RpdmUiOwotV2ViSW5zcGVjdG9y
LlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU2VsZWN0ZWRTdHlsZUNsYXNzTmFtZSA9ICJzZWxl
Y3RlZCI7Ci0KLVdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlv
bkl0ZW0sCitXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbSA9IGNsYXNzIFJh
ZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0gZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdh
dGlvbkl0ZW0KK3sKKyAgICBjb25zdHJ1Y3RvcihpZGVudGlmaWVyLCB0b29sVGlwLCBpbWFnZSwg
aW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpCisgICAgeworICAgICAgICBzdXBlcihpZGVudGlmaWVy
LCB0b29sVGlwLCBpbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQsIG51bGwsICJ0YWIiKTsK
KyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBzZWxlY3RlZCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0b3Iu
UmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9
LAorICAgIH0KIAogICAgIHNldCBzZWxlY3RlZChmbGFnKQogICAgIHsKQEAgLTUwLDEyICs0Niwx
MiBAQCBXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXZWJJbnNwZWN0b3Iu
UmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5TZWxlY3RlZFN0eWxlQ2xhc3NOYW1lKTsKICAgICAg
ICAgICAgIHRoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoImFyaWEtc2VsZWN0ZWQiLCAiZmFsc2Ui
KTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFjdGl2ZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhXZWJJbnNwZWN0
b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5BY3RpdmVTdHlsZUNsYXNzTmFtZSk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBzZXQgYWN0aXZlKGZsYWcpCiAgICAgewpAQCAtNjMsOSArNTksOSBA
QCBXZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUmFkaW9C
dXR0b25OYXZpZ2F0aW9uSXRlbS5BY3RpdmVTdHlsZUNsYXNzTmFtZSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFdlYkluc3BlY3Rvci5S
YWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLkFjdGl2ZVN0eWxlQ2xhc3NOYW1lKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGdlbmVyYXRlU3R5bGVUZXh0OiBmdW5jdGlvbihwYXJlbnRTZWxlY3RvcikK
KyAgICBnZW5lcmF0ZVN0eWxlVGV4dChwYXJlbnRTZWxlY3RvcikKICAgICB7CiAgICAgICAgIHZh
ciBjbGFzc05hbWVzID0gdGhpcy5fY2xhc3NOYW1lcy5qb2luKCIuIik7CiAKQEAgLTc5LDkgKzc1
LDkgQEAgV2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlID0g
ewogICAgICAgICBzdHlsZVRleHQgKz0gcGFyZW50U2VsZWN0b3IgKyAiIC4iICsgY2xhc3NOYW1l
cyArICIuc2VsZWN0ZWQ6bm90KC5kaXNhYmxlZCk6YWN0aXZlID4gLmdseXBoIHsgYmFja2dyb3Vu
ZC1pbWFnZTogLXdlYmtpdC1jYW52YXMoIiArIHRoaXMuX2NhbnZhc0lkZW50aWZpZXIoV2ViSW5z
cGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0YXRlcy5BY3RpdmVGb2N1cykgKyAiKTsgfVxu
IjsKIAogICAgICAgICByZXR1cm4gc3R5bGVUZXh0OwotICAgIH0sCisgICAgfQogCi0gICAgdXBk
YXRlTGF5b3V0OiBmdW5jdGlvbihleHBhbmRPbmx5KQorICAgIHVwZGF0ZUxheW91dChleHBhbmRP
bmx5KQogICAgIHsKICAgICAgICAgaWYgKGV4cGFuZE9ubHkpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xMDEsMTEgKzk3LDE1IEBAIFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25J
dGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVt
b3ZlKFdlYkluc3BlY3Rvci5SYWRpb0J1dHRvbk5hdmlnYXRpb25JdGVtLlNlbGVjdGVkU3R5bGVD
bGFzc05hbWUpOwogICAgICAgICAgICAgdGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZSgiYXJpYS1z
ZWxlY3RlZCIsICJmYWxzZSIpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICAvLyBQ
cml2YXRlCisgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBfYWRkaXRpb25hbENsYXNzTmFtZXM6IFtX
ZWJJbnNwZWN0b3IuUmFkaW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5TdHlsZUNsYXNzTmFtZSwgV2Vi
SW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lXSwKKyAgICBnZXQg
YWRkaXRpb25hbENsYXNzTmFtZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmFkZGl0
aW9uYWxDbGFzc05hbWVzLnVuc2hpZnQoInJhZGlvIik7CisgICAgfQogfTsKIAotV2ViSW5zcGVj
dG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuUmFk
aW9CdXR0b25OYXZpZ2F0aW9uSXRlbS5BY3RpdmVTdHlsZUNsYXNzTmFtZSA9ICJhY3RpdmUiOwor
V2ViSW5zcGVjdG9yLlJhZGlvQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU2VsZWN0ZWRTdHlsZUNsYXNz
TmFtZSA9ICJzZWxlY3RlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRW
aWV3LmpzCmluZGV4IGVlNmRhZGIuLmQxNDc5MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNl
Q2x1c3RlckNvbnRlbnRWaWV3LmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywzOSArMjMsMzEgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29u
dGVudFZpZXcgPSBmdW5jdGlvbihyZXNvdXJjZSkKK1dlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0
ZXJDb250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3IGV4dGVuZHMg
V2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250ZW50VmlldwogewotICAgIFdlYkluc3BlY3Rvci5DbHVz
dGVyQ29udGVudFZpZXcuY2FsbCh0aGlzLCByZXNvdXJjZSk7Ci0KLSAgICB0aGlzLl9yZXNvdXJj
ZSA9IHJlc291cmNlOwotICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlJlc291cmNlLkV2ZW50LlR5cGVEaWRDaGFuZ2UsIHRoaXMuX3Jlc291cmNlVHlwZURp
ZENoYW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuTG9hZGluZ0RpZEZpbmlzaCwgdGhpcy5fcmVzb3VyY2VM
b2FkaW5nRGlkRmluaXNoLCB0aGlzKTsKLQotICAgIGZ1bmN0aW9uIGNyZWF0ZVBhdGhDb21wb25l
bnQoZGlzcGxheU5hbWUsIGNsYXNzTmFtZSwgaWRlbnRpZmllcikKKyAgICBjb25zdHJ1Y3Rvcihy
ZXNvdXJjZSkKICAgICB7Ci0gICAgICAgIHZhciBwYXRoQ29tcG9uZW50ID0gbmV3IFdlYkluc3Bl
Y3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50KGRpc3BsYXlOYW1lLCBjbGFzc05hbWUsIGlk
ZW50aWZpZXIsIGZhbHNlLCB0cnVlKTsKLSAgICAgICAgcGF0aENvbXBvbmVudC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29tcG9uZW50LkV2ZW50LlNpYmxp
bmdXYXNTZWxlY3RlZCwgdGhpcy5fcGF0aENvbXBvbmVudFNlbGVjdGVkLCB0aGlzKTsKLSAgICAg
ICAgcmV0dXJuIHBhdGhDb21wb25lbnQ7Ci0gICAgfQorICAgICAgICBzdXBlcihyZXNvdXJjZSk7
CiAKLSAgICB0aGlzLl9yZXF1ZXN0UGF0aENvbXBvbmVudCA9IGNyZWF0ZVBhdGhDb21wb25lbnQu
Y2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlcXVlc3QiKSwgV2ViSW5zcGVjdG9y
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlcXVlc3RJY29uU3R5bGVDbGFzc05hbWUsIFdl
Ykluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWRlbnRpZmllcik7
Ci0gICAgdGhpcy5fcmVzcG9uc2VQYXRoQ29tcG9uZW50ID0gY3JlYXRlUGF0aENvbXBvbmVudC5j
YWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiUmVzcG9uc2UiKSwgV2ViSW5zcGVjdG9y
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWNvblN0eWxlQ2xhc3NOYW1lLCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJZGVudGlmaWVy
KTsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZTsKKyAgICAgICAgdGhpcy5fcmVz
b3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHlwZURp
ZENoYW5nZSwgdGhpcy5fcmVzb3VyY2VUeXBlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgdGhp
cy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQu
TG9hZGluZ0RpZEZpbmlzaCwgdGhpcy5fcmVzb3VyY2VMb2FkaW5nRGlkRmluaXNoLCB0aGlzKTsK
IAotICAgIHRoaXMuX3JlcXVlc3RQYXRoQ29tcG9uZW50Lm5leHRTaWJsaW5nID0gdGhpcy5fcmVz
cG9uc2VQYXRoQ29tcG9uZW50OwotICAgIHRoaXMuX3Jlc3BvbnNlUGF0aENvbXBvbmVudC5wcmV2
aW91c1NpYmxpbmcgPSB0aGlzLl9yZXF1ZXN0UGF0aENvbXBvbmVudDsKLQotICAgIHRoaXMuX2N1
cnJlbnRDb250ZW50Vmlld1NldHRpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoInJlc291
cmNlLWN1cnJlbnQtdmlldy0iICsgdGhpcy5fcmVzb3VyY2UudXJsLmhhc2gsIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25zZUlkZW50aWZpZXIpOwotfTsKKyAg
ICAgICAgZnVuY3Rpb24gY3JlYXRlUGF0aENvbXBvbmVudChkaXNwbGF5TmFtZSwgY2xhc3NOYW1l
LCBpZGVudGlmaWVyKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgcGF0aENvbXBvbmVudCA9
IG5ldyBXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2FsUGF0aENvbXBvbmVudChkaXNwbGF5TmFtZSwg
Y2xhc3NOYW1lLCBpZGVudGlmaWVyLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgICAgICBwYXRoQ29t
cG9uZW50LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21w
b25lbnQuRXZlbnQuU2libGluZ1dhc1NlbGVjdGVkLCB0aGlzLl9wYXRoQ29tcG9uZW50U2VsZWN0
ZWQsIHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIHBhdGhDb21wb25lbnQ7CisgICAgICAgIH0K
IAotV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkNvbnRlbnRWaWV3SWRl
bnRpZmllckNvb2tpZUtleSA9ICJyZXNvdXJjZS1jbHVzdGVyLWNvbnRlbnQtdmlldy1pZGVudGlm
aWVyIjsKKyAgICAgICAgdGhpcy5fcmVxdWVzdFBhdGhDb21wb25lbnQgPSBjcmVhdGVQYXRoQ29t
cG9uZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXF1ZXN0IiksIFdlYklu
c3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWNvblN0eWxlQ2xhc3NO
YW1lLCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdElkZW50
aWZpZXIpOworICAgICAgICB0aGlzLl9yZXNwb25zZVBhdGhDb21wb25lbnQgPSBjcmVhdGVQYXRo
Q29tcG9uZW50LmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZXNwb25zZSIpLCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9uc2VJY29uU3R5bGVD
bGFzc05hbWUsIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXNwb25z
ZUlkZW50aWZpZXIpOwogCi1XZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcu
UmVxdWVzdEljb25TdHlsZUNsYXNzTmFtZSA9ICJyZXF1ZXN0LWljb24iOwotV2ViSW5zcGVjdG9y
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWNvblN0eWxlQ2xhc3NOYW1lID0g
InJlc3BvbnNlLWljb24iOwotV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3
LlJlcXVlc3RJZGVudGlmaWVyID0gInJlcXVlc3QiOwotV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1
c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWRlbnRpZmllciA9ICJyZXNwb25zZSI7CisgICAgICAg
IHRoaXMuX3JlcXVlc3RQYXRoQ29tcG9uZW50Lm5leHRTaWJsaW5nID0gdGhpcy5fcmVzcG9uc2VQ
YXRoQ29tcG9uZW50OworICAgICAgICB0aGlzLl9yZXNwb25zZVBhdGhDb21wb25lbnQucHJldmlv
dXNTaWJsaW5nID0gdGhpcy5fcmVxdWVzdFBhdGhDb21wb25lbnQ7CiAKLVdlYkluc3BlY3Rvci5S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50VmlldywKKyAgICAgICAgdGhpcy5f
Y3VycmVudENvbnRlbnRWaWV3U2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygicmVz
b3VyY2UtY3VycmVudC12aWV3LSIgKyB0aGlzLl9yZXNvdXJjZS51cmwuaGFzaCwgV2ViSW5zcGVj
dG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LlJlc3BvbnNlSWRlbnRpZmllcik7CisgICAg
fQogCiAgICAgLy8gUHVibGljCiAKQEAgLTczLDEyICs2NSwxMiBAQCBXZWJJbnNwZWN0b3IuUmVz
b3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC5pZGVudGlmaWVyCiAgICAgICAgICAgICBd
OwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVzb3VyY2UoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHJlc3BvbnNlQ29udGVudFZpZXcoKQogICAgIHsKQEAgLTEwNyw3ICs5OSw3IEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0K
IAogICAgICAgICByZXR1cm4gdGhpcy5fcmVzcG9uc2VDb250ZW50VmlldzsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCByZXF1ZXN0Q29udGVudFZpZXcoKQogICAgIHsKQEAgLTEyMCw3ICsxMTIs
NyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9yZXF1ZXN0Q29udGVudFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlRl
eHRDb250ZW50Vmlldyh0aGlzLl9yZXNvdXJjZS5yZXF1ZXN0RGF0YSB8fCAiIiwgdGhpcy5fcmVz
b3VyY2UucmVxdWVzdERhdGFDb250ZW50VHlwZSk7CiAKICAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
cXVlc3RDb250ZW50VmlldzsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzZWxlY3Rpb25QYXRo
Q29tcG9uZW50cygpCiAgICAgewpAQCAtMTM0LDkgKzEyNiw5IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEFwcGVuZCB0
aGUgY3VycmVudCB2aWV3J3MgcGF0aCBjb21wb25lbnRzIHRvIHRoZSBwYXRoIGNvbXBvbmVudCBy
ZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgdmlldy4KICAgICAgICAgdmFyIGNvbXBvbmVudHMgPSBb
dGhpcy5fcGF0aENvbXBvbmVudEZvckNvbnRlbnRWaWV3KGN1cnJlbnRDb250ZW50VmlldyldOwog
ICAgICAgICByZXR1cm4gY29tcG9uZW50cy5jb25jYXQoY3VycmVudENvbnRlbnRWaWV3LnNlbGVj
dGlvblBhdGhDb21wb25lbnRzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlv
bigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkNsdXN0ZXJDb250
ZW50Vmlldy5wcm90b3R5cGUuc2hvd24uY2FsbCh0aGlzKTsKIApAQCAtMTQ0LDM1ICsxMzYsMzUg
QEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJ
ZGVudGlmaWVyKHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld1NldHRpbmcudmFsdWUpOwotICAgIH0s
CisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5DbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlLmNsb3NlZC5j
YWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3Nob3duSW5pdGlhbENvbnRlbnQgPSBmYWxzZTsK
LSAgICB9LAorICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24oY29va2llKQorICAg
IHNhdmVUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWVbV2ViSW5zcGVjdG9y
LlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LkNvbnRlbnRWaWV3SWRlbnRpZmllckNvb2tpZUtl
eV0gPSB0aGlzLl9jdXJyZW50Q29udGVudFZpZXdTZXR0aW5nLnZhbHVlOwotICAgIH0sCisgICAg
fQogCi0gICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkKKyAgICByZXN0b3Jl
RnJvbUNvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICB2YXIgY29udGVudFZpZXcgPSB0aGlz
Ll9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKGNvb2tpZVtXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VDbHVzdGVyQ29udGVudFZpZXcuQ29udGVudFZpZXdJZGVudGlmaWVyQ29va2llS2V5XSk7CiAg
ICAgICAgIGlmICh0eXBlb2YgY29udGVudFZpZXcucmV2ZWFsUG9zaXRpb24gPT09ICJmdW5jdGlv
biIgJiYgImxpbmVOdW1iZXIiIGluIGNvb2tpZSAmJiAiY29sdW1uTnVtYmVyIiBpbiBjb29raWUp
CiAgICAgICAgICAgICBjb250ZW50Vmlldy5yZXZlYWxQb3NpdGlvbihuZXcgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVQb3NpdGlvbihjb29raWUubGluZU51bWJlciwgY29va2llLmNvbHVtbk51bWJl
cikpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd1JlcXVlc3Q6IGZ1bmN0aW9uKCkKKyAgICBz
aG93UmVxdWVzdCgpCiAgICAgewogICAgICAgICB0aGlzLl9zaG93bkluaXRpYWxDb250ZW50ID0g
dHJ1ZTsKIAogICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmll
cihXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdElkZW50aWZp
ZXIpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hvd1Jlc3BvbnNlOiBmdW5jdGlvbihwb3NpdGlv
blRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKKyAgICBzaG93
UmVzcG9uc2UocG9zaXRpb25Ub1JldmVhbCwgdGV4dFJhbmdlVG9TZWxlY3QsIGZvcmNlVW5mb3Jt
YXR0ZWQpCiAgICAgewogICAgICAgICB0aGlzLl9zaG93bkluaXRpYWxDb250ZW50ID0gdHJ1ZTsK
IApAQCAtMTg2LDExICsxNzgsMTEgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHR5cGVvZiByZXNwb25zZUNvbnRlbnRW
aWV3LnJldmVhbFBvc2l0aW9uID09PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgcmVzcG9uc2VD
b250ZW50Vmlldy5yZXZlYWxQb3NpdGlvbihwb3NpdGlvblRvUmV2ZWFsLCB0ZXh0UmFuZ2VUb1Nl
bGVjdCwgZm9yY2VVbmZvcm1hdHRlZCk7CiAgICAgICAgIHJldHVybiByZXNwb25zZUNvbnRlbnRW
aWV3OwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2NhblNob3dSZXF1
ZXN0Q29udGVudFZpZXc6IGZ1bmN0aW9uKCkKKyAgICBfY2FuU2hvd1JlcXVlc3RDb250ZW50Vmll
dygpCiAgICAgewogICAgICAgICB2YXIgcmVxdWVzdERhdGEgPSB0aGlzLl9yZXNvdXJjZS5yZXF1
ZXN0RGF0YTsKICAgICAgICAgaWYgKCFyZXF1ZXN0RGF0YSkKQEAgLTIwMSw5ICsxOTMsOSBAQCBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisg
ICAgfQogCi0gICAgX3BhdGhDb21wb25lbnRGb3JDb250ZW50VmlldzogZnVuY3Rpb24oY29udGVu
dFZpZXcpCisgICAgX3BhdGhDb21wb25lbnRGb3JDb250ZW50Vmlldyhjb250ZW50VmlldykKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3KTsKICAgICAgICAgaWYgKCFj
b250ZW50VmlldykKQEAgLTIxNCw5ICsyMDYsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVz
dGVyQ29udGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jl
c3BvbnNlUGF0aENvbXBvbmVudDsKICAgICAgICAgY29uc29sZS5lcnJvcigiVW5rbm93biBjb250
ZW50Vmlldy4iKTsKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
aWRlbnRpZmllckZvckNvbnRlbnRWaWV3OiBmdW5jdGlvbihjb250ZW50VmlldykKKyAgICBfaWRl
bnRpZmllckZvckNvbnRlbnRWaWV3KGNvbnRlbnRWaWV3KQogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoY29udGVudFZpZXcpOwogICAgICAgICBpZiAoIWNvbnRlbnRWaWV3KQpAQCAtMjI3
LDkgKzIxOSw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3Rl
ckNvbnRlbnRWaWV3LlJlc3BvbnNlSWRlbnRpZmllcjsKICAgICAgICAgY29uc29sZS5lcnJvcigi
VW5rbm93biBjb250ZW50Vmlldy4iKTsKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc2hvd0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmllcjogZnVuY3Rpb24oaWRlbnRp
ZmllcikKKyAgICBfc2hvd0NvbnRlbnRWaWV3Rm9ySWRlbnRpZmllcihpZGVudGlmaWVyKQogICAg
IHsKICAgICAgICAgdmFyIGNvbnRlbnRWaWV3VG9TaG93ID0gbnVsbDsKIApAQCAtMjUwLDE0ICsy
NDIsMTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5fY3VycmVudENvbnRlbnRWaWV3U2V0dGluZy52YWx1ZSA9IHRo
aXMuX2lkZW50aWZpZXJGb3JDb250ZW50Vmlldyhjb250ZW50Vmlld1RvU2hvdyk7CiAKICAgICAg
ICAgcmV0dXJuIHRoaXMuY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3KGNvbnRl
bnRWaWV3VG9TaG93KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9wYXRoQ29tcG9uZW50U2VsZWN0ZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB0aGlzLl9zaG93Q29udGVudFZpZXdGb3JJZGVudGlmaWVyKGV2ZW50LmRh
dGEucGF0aENvbXBvbmVudC5yZXByZXNlbnRlZE9iamVjdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfcmVzb3VyY2VUeXBlRGlkQ2hhbmdlOiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVzb3VyY2VU
eXBlRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gU2luY2UgcmVzb3VyY2Ugdmll
d3MgYXJlIGJhc2VkIG9uIHRoZSB0eXBlLCB3ZSBuZWVkIHRvIG1ha2UgYSBuZXcgY29udGVudCB2
aWV3IGFuZCB0ZWxsIHRoZSBjb250YWluZXIgdG8gcmVwbGFjZSB0aGlzCiAgICAgICAgIC8vIGNv
bnRlbnQgdmlldyB3aXRoIHRoZSBuZXcgb25lLiBNYWtlIGEgbmV3IFJlc291cmNlQ29udGVudFZp
ZXcgd2hpY2ggd2lsbCB1c2UgdGhlIG5ldyByZXNvdXJjZSB0eXBlIHRvIG1ha2UgdGhlIGNvcnJl
Y3QKQEAgLTI3MCw5ICsyNjIsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcucHJvdG90eXBlID0gewogICAgICAgICBkZWxldGUgdGhpcy5fcmVzcG9uc2VDb250ZW50
VmlldzsKIAogICAgICAgICB0aGlzLmNvbnRlbnRWaWV3Q29udGFpbmVyLnJlcGxhY2VDb250ZW50
VmlldyhjdXJyZW50UmVzcG9uc2VDb250ZW50VmlldywgdGhpcy5yZXNwb25zZUNvbnRlbnRWaWV3
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXNvdXJjZUxvYWRpbmdEaWRGaW5pc2g6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9yZXNvdXJjZUxvYWRpbmdEaWRGaW5pc2goZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAoIl9wb3NpdGlvblRvUmV2ZWFsIiBpbiB0aGlzKSB7CiAgICAgICAgICAgICBp
ZiAodGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3ID09PSB0aGlz
Ll9yZXNwb25zZUNvbnRlbnRWaWV3KQpAQCAtMjg1LDQgKzI3Nyw5IEBAIFdlYkluc3BlY3Rvci5S
ZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2Vi
SW5zcGVjdG9yLlJlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuQ2x1c3RlckNvbnRlbnRWaWV3LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rv
ci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5Db250ZW50Vmlld0lkZW50aWZpZXJDb29raWVL
ZXkgPSAicmVzb3VyY2UtY2x1c3Rlci1jb250ZW50LXZpZXctaWRlbnRpZmllciI7CisKK1dlYklu
c3BlY3Rvci5SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5SZXF1ZXN0SWNvblN0eWxlQ2xhc3NO
YW1lID0gInJlcXVlc3QtaWNvbiI7CitXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVu
dFZpZXcuUmVzcG9uc2VJY29uU3R5bGVDbGFzc05hbWUgPSAicmVzcG9uc2UtaWNvbiI7CitXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVxdWVzdElkZW50aWZpZXIgPSAi
cmVxdWVzdCI7CitXZWJJbnNwZWN0b3IuUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuUmVzcG9u
c2VJZGVudGlmaWVyID0gInJlc3BvbnNlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbnRlbnRWaWV3Lmpz
CmluZGV4IDU4Zjc0MTQuLmRkOGJkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb250ZW50Vmlldy5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsNzEgKzIzLDY3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcgPSBmdW5jdGlvbihyZXNvdXJj
ZSwgc3R5bGVDbGFzc05hbWUpCitXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50VmlldyA9IGNs
YXNzIFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcK
IHsKLSAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSk7Ci0gICAgY29uc29sZS5hc3NlcnQoc3R5
bGVDbGFzc05hbWUpOworICAgIGNvbnN0cnVjdG9yKHJlc291cmNlLCBzdHlsZUNsYXNzTmFtZSkK
KyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlKTsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoc3R5bGVDbGFzc05hbWUpOwogCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LmNhbGwodGhpcywgcmVzb3VyY2UpOworICAgICAgICBzdXBlcihyZXNvdXJjZSk7CiAKLSAgICB0
aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlOworICAgICAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291
cmNlOwogCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlJlc291
cmNlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKHN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoInJlc291cmNlIik7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKHN0eWxl
Q2xhc3NOYW1lKTsKIAotICAgIC8vIEFwcGVuZCBhIHNwaW5uZXIgd2hpbGUgd2FpdGluZyBmb3Ig
Y29udGVudEF2YWlsYWJsZS4gVGhlIHN1YmNsYXNzZXMgYXJlIHJlc3BvbnNpYmxlIGZvciByZW1v
dmluZwotICAgIC8vIHRoZSBzcGlubmVyIGJlZm9yZSBzaG93aW5nIHRoZSByZXNvdXJjZSBjb250
ZW50LgotICAgIHZhciBzcGlubmVyID0gbmV3IFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRlUHJv
Z3Jlc3NTcGlubmVyOwotICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzcGlubmVyLmVsZW1l
bnQpOworICAgICAgICAvLyBBcHBlbmQgYSBzcGlubmVyIHdoaWxlIHdhaXRpbmcgZm9yIGNvbnRl
bnRBdmFpbGFibGUuIFRoZSBzdWJjbGFzc2VzIGFyZSByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcK
KyAgICAgICAgLy8gdGhlIHNwaW5uZXIgYmVmb3JlIHNob3dpbmcgdGhlIHJlc291cmNlIGNvbnRl
bnQuCisgICAgICAgIHZhciBzcGlubmVyID0gbmV3IFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRl
UHJvZ3Jlc3NTcGlubmVyOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3Bpbm5l
ci5lbGVtZW50KTsKIAotICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IHRoaXMuX21vdXNlV2FzQ2xpY2tlZC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgICAgIHRoaXMu
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX21vdXNlV2FzQ2xpY2tlZC5i
aW5kKHRoaXMpLCBmYWxzZSk7CiAKLSAgICAvLyBSZXF1ZXN0IGNvbnRlbnQgbGFzdCBzbyB0aGUg
c3Bpbm5lciB3aWxsIGFsd2F5cyBiZSByZW1vdmVkIGluIGNhc2UgdGhlIGNvbnRlbnQgaXMgaW1t
ZWRpYXRlbHkgYXZhaWxhYmxlLgotICAgIHJlc291cmNlLnJlcXVlc3RDb250ZW50KCkudGhlbih0
aGlzLl9jb250ZW50QXZhaWxhYmxlLmJpbmQodGhpcykpLmNhdGNoKHRoaXMuX2NvbnRlbnRFcnJv
ci5iaW5kKHRoaXMpKTsKKyAgICAgICAgLy8gUmVxdWVzdCBjb250ZW50IGxhc3Qgc28gdGhlIHNw
aW5uZXIgd2lsbCBhbHdheXMgYmUgcmVtb3ZlZCBpbiBjYXNlIHRoZSBjb250ZW50IGlzIGltbWVk
aWF0ZWx5IGF2YWlsYWJsZS4KKyAgICAgICAgcmVzb3VyY2UucmVxdWVzdENvbnRlbnQoKS50aGVu
KHRoaXMuX2NvbnRlbnRBdmFpbGFibGUuYmluZCh0aGlzKSkuY2F0Y2godGhpcy5fY29udGVudEVy
cm9yLmJpbmQodGhpcykpOwogCi0gICAgaWYgKCF0aGlzLm1hbmFnZXNPd25Jc3N1ZXMpIHsKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLmlzc3VlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5Jc3N1ZU1hbmFnZXIuRXZlbnQuSXNzdWVXYXNBZGRlZCwgdGhpcy5faXNzdWVXYXNBZGRl
ZCwgdGhpcyk7CisgICAgICAgIGlmICghdGhpcy5tYW5hZ2VzT3duSXNzdWVzKSB7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuaXNzdWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLklzc3VlTWFuYWdlci5FdmVudC5Jc3N1ZVdhc0FkZGVkLCB0aGlzLl9pc3N1ZVdhc0FkZGVk
LCB0aGlzKTsKIAotICAgICAgICB2YXIgaXNzdWVzID0gV2ViSW5zcGVjdG9yLmlzc3VlTWFuYWdl
ci5pc3N1ZXNGb3JTb3VyY2VDb2RlKHJlc291cmNlKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBpc3N1ZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLmFkZElzc3VlKGlzc3Vl
c1tpXSk7CisgICAgICAgICAgICB2YXIgaXNzdWVzID0gV2ViSW5zcGVjdG9yLmlzc3VlTWFuYWdl
ci5pc3N1ZXNGb3JTb3VyY2VDb2RlKHJlc291cmNlKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgaXNzdWVzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgICAgIHRoaXMuYWRkSXNz
dWUoaXNzdWVzW2ldKTsKKyAgICAgICAgfQogICAgIH0KLX07Ci0KLVdlYkluc3BlY3Rvci5SZXNv
dXJjZUNvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gInJlc291cmNlIjsKLQotV2ViSW5zcGVj
dG9yLlJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50VmlldywKLSAgICBfX3Byb3RvX186IFdlYkluc3Bl
Y3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGUsCiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBy
ZXNvdXJjZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2U7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBjb250ZW50QXZhaWxhYmxlOiBmdW5jdGlvbihjb250ZW50LCBiYXNlNjRF
bmNvZGVkKQorICAgIGNvbnRlbnRBdmFpbGFibGUoY29udGVudCwgYmFzZTY0RW5jb2RlZCkKICAg
ICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9
CiAKLSAgICBhZGRJc3N1ZTogZnVuY3Rpb24oaXNzdWUpCisgICAgYWRkSXNzdWUoaXNzdWUpCiAg
ICAgewogICAgICAgICAvLyBUaGlzIGdlbmVyaWNhbGx5IHNob3dzIG9ubHkgdGhlIGxhc3QgaXNz
dWUsIHN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIGZvciBiZXR0ZXIgaGFuZGxpbmcuCiAgICAgICAg
IHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLmNyZWF0ZU1lc3NhZ2VUZXh0Vmlldyhpc3N1ZS50ZXh0LCBp
c3N1ZS5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLklzc3VlTWVzc2FnZS5MZXZlbC5FcnJvcikpOwot
ICAgIH0sCisgICAgfQogCi0gICAgY2xvc2VkOiBmdW5jdGlvbigpCisgICAgY2xvc2VkKCkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5tYW5hZ2VzT3duSXNzdWVzKQogICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmlzc3VlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5J
c3N1ZU1hbmFnZXIuRXZlbnQuSXNzdWVXYXNBZGRlZCwgdGhpcy5faXNzdWVXYXNBZGRlZCwgdGhp
cyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfY29udGVudEF2YWls
YWJsZTogZnVuY3Rpb24ocGFyYW1ldGVycykKKyAgICBfY29udGVudEF2YWlsYWJsZShwYXJhbWV0
ZXJzKQogICAgIHsKICAgICAgICAgaWYgKHBhcmFtZXRlcnMuZXJyb3IpIHsKICAgICAgICAgICAg
IHRoaXMuX2NvbnRlbnRFcnJvcih7IG1lc3NhZ2U6IHBhcmFtZXRlcnMuZXJyb3IgfSk7CkBAIC05
Niw5ICs5Miw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKIAogICAgICAgICAvLyBDb250ZW50IGlzIHJlYWR5IHRvIHNob3csIGNhbGwgdGhlIHB1Ymxp
YyBtZXRob2Qgbm93LgogICAgICAgICB0aGlzLmNvbnRlbnRBdmFpbGFibGUocGFyYW1ldGVycy5j
b250ZW50LCBwYXJhbWV0ZXJzLmJhc2U2NEVuY29kZWQpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2NvbnRlbnRFcnJvcjogZnVuY3Rpb24oZXJyb3IpCisgICAgX2NvbnRlbnRFcnJvcihlcnJvcikK
ICAgICB7CiAgICAgICAgIC8vIERvbid0IHNob3cgYW4gZXJyb3IgbWVzc2FnZSBpZiB0aGVyZSBp
cyBhbHJlYWR5IGFuIGVycm9yIG1lc3NhZ2Ugc2hvd2luZyAobGlrZSBvbmUgYWRkZWQgYnkgYWRk
SXNzdWUuKQogICAgICAgICBpZiAodGhpcy5lbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIi5tZXNzYWdl
LXRleHQtdmlldy5lcnJvciIpKQpAQCAtMTA2LDkgKzEwMiw5IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLmVsZW1lbnQucmVt
b3ZlQ2hpbGRyZW4oKTsKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKFdlYkluc3Bl
Y3Rvci5jcmVhdGVNZXNzYWdlVGV4dFZpZXcoZXJyb3IubWVzc2FnZSwgdHJ1ZSkpOwotICAgIH0s
CisgICAgfQogCi0gICAgX2lzc3VlV2FzQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9pc3N1
ZVdhc0FkZGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMubWFu
YWdlc093bklzc3Vlcyk7CiAKQEAgLTExOSw5ICsxMTUsOSBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgdGhpcy5hZGRJc3N1ZShpc3N1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbW91c2VXYXND
bGlja2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfbW91c2VXYXNDbGlja2VkKGV2ZW50KQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmhhbmRsZVBvc3NpYmxlTGlua0NsaWNrKGV2ZW50LCB0
aGlzLnJlc291cmNlLnBhcmVudEZyYW1lKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWRO
b2RlLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3Vy
Y2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcwppbmRleCA4MzkzMzU3Li45NTM1NWQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZVRp
bWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDQ2ICsyMywz
OCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlID0gZnVuY3Rpb24ocmVzb3VyY2VUaW1l
bGluZVJlY29yZCwgZ3JhcGhPbmx5LCBncmFwaERhdGFTb3VyY2UpCitXZWJJbnNwZWN0b3IuUmVz
b3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZSA9IGNsYXNzIFJlc291cmNlVGltZWxpbmVEYXRhR3Jp
ZE5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUKIHsKLSAgICBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBncmFwaE9ubHksIGdy
YXBoRGF0YVNvdXJjZSk7CisgICAgY29uc3RydWN0b3IocmVzb3VyY2VUaW1lbGluZVJlY29yZCwg
Z3JhcGhPbmx5LCBncmFwaERhdGFTb3VyY2UpCisgICAgeworICAgICAgICBzdXBlcihncmFwaE9u
bHksIGdyYXBoRGF0YVNvdXJjZSk7CiAKLSAgICB0aGlzLl9yZXNvdXJjZSA9IHJlc291cmNlVGlt
ZWxpbmVSZWNvcmQucmVzb3VyY2U7Ci0gICAgdGhpcy5fcmVjb3JkID0gcmVzb3VyY2VUaW1lbGlu
ZVJlY29yZDsKKyAgICAgICAgdGhpcy5fcmVzb3VyY2UgPSByZXNvdXJjZVRpbWVsaW5lUmVjb3Jk
LnJlc291cmNlOworICAgICAgICB0aGlzLl9yZWNvcmQgPSByZXNvdXJjZVRpbWVsaW5lUmVjb3Jk
OwogCi0gICAgdGhpcy5fcmVjb3JkLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkLkV2ZW50LlVwZGF0ZWQsIGdyYXBoT25seSA/IHRoaXMuX3RpbWVsaW5lUmVjb3Jk
VXBkYXRlZCA6IHRoaXMuX25lZWRzUmVmcmVzaCwgdGhpcyk7CisgICAgICAgIHRoaXMuX3JlY29y
ZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5FdmVudC5VcGRh
dGVkLCBncmFwaE9ubHkgPyB0aGlzLl90aW1lbGluZVJlY29yZFVwZGF0ZWQgOiB0aGlzLl9uZWVk
c1JlZnJlc2gsIHRoaXMpOwogCi0gICAgaWYgKCFncmFwaE9ubHkpIHsKLSAgICAgICAgdGhpcy5f
cmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVVJM
RGlkQ2hhbmdlLCB0aGlzLl9uZWVkc1JlZnJlc2gsIHRoaXMpOwotICAgICAgICB0aGlzLl9yZXNv
dXJjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UeXBlRGlk
Q2hhbmdlLCB0aGlzLl9uZWVkc1JlZnJlc2gsIHRoaXMpOwotICAgICAgICB0aGlzLl9yZXNvdXJj
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlk
RmluaXNoLCB0aGlzLl9uZWVkc1JlZnJlc2gsIHRoaXMpOwotICAgICAgICB0aGlzLl9yZXNvdXJj
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlk
RmFpbCwgdGhpcy5fbmVlZHNSZWZyZXNoLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2Uu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuU2l6ZURpZENoYW5n
ZSwgdGhpcy5fbmVlZHNSZWZyZXNoLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHJhbnNmZXJTaXplRGlk
Q2hhbmdlLCB0aGlzLl9uZWVkc1JlZnJlc2gsIHRoaXMpOworICAgICAgICBpZiAoIWdyYXBoT25s
eSkgeworICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuRXZlbnQuVVJMRGlkQ2hhbmdlLCB0aGlzLl9uZWVkc1JlZnJlc2gsIHRo
aXMpOworICAgICAgICAgICAgdGhpcy5fcmVzb3VyY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuUmVzb3VyY2UuRXZlbnQuVHlwZURpZENoYW5nZSwgdGhpcy5fbmVlZHNSZWZyZXNoLCB0
aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlJlc291cmNlLkV2ZW50LkxvYWRpbmdEaWRGaW5pc2gsIHRoaXMuX25lZWRzUmVmcmVz
aCwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5Mb2FkaW5nRGlkRmFpbCwgdGhpcy5fbmVlZHNSZWZy
ZXNoLCB0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuX3Jlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlJlc291cmNlLkV2ZW50LlNpemVEaWRDaGFuZ2UsIHRoaXMuX25lZWRzUmVm
cmVzaCwgdGhpcyk7CisgICAgICAgICAgICB0aGlzLl9yZXNvdXJjZS5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5SZXNvdXJjZS5FdmVudC5UcmFuc2ZlclNpemVEaWRDaGFuZ2UsIHRoaXMu
X25lZWRzUmVmcmVzaCwgdGhpcyk7CisgICAgICAgIH0KICAgICB9Ci19OwotCi0vLyBGSVhNRTog
TW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUg
dGhpcy4KLVdlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rp
b25zKFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlKTsKLQotV2ViSW5z
cGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xhc3NOYW1lID0g
Imljb24iOwotV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuRXJyb3JT
dHlsZUNsYXNzTmFtZSA9ICJlcnJvciI7Ci0KLVdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5l
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLAogCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgcmVjb3JkcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3JlY29yZF07Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgcmVzb3VyY2UoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3Jlc291cmNlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsK
QEAgLTkzLDE2ICs4NSwxNiBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlk
Tm9kZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fY2FjaGVkRGF0YSA9IGRhdGE7CiAg
ICAgICAgIHJldHVybiBkYXRhOwotICAgIH0sCisgICAgfQogCi0gICAgY3JlYXRlQ2VsbENvbnRl
bnQ6IGZ1bmN0aW9uKGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCisgICAgY3JlYXRlQ2VsbENvbnRl
bnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCkKICAgICB7CiAgICAgICAgIHZhciByZXNvdXJjZSA9
IHRoaXMuX3Jlc291cmNlOwogCiAgICAgICAgIGlmIChyZXNvdXJjZS5mYWlsZWQgfHwgcmVzb3Vy
Y2UuY2FuY2VsZWQgfHwgcmVzb3VyY2Uuc3RhdHVzQ29kZSA+PSA0MDApCi0gICAgICAgICAgICBj
ZWxsLmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5v
ZGUuRXJyb3JTdHlsZUNsYXNzTmFtZSk7CisgICAgICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQo
ImVycm9yIik7CiAKLSAgICAgICAgY29uc3QgZW1wdHlWYWx1ZVBsYWNlaG9sZGVyU3RyaW5nID0g
Ilx1MjAxNCI7CisgICAgICAgIHZhciBlbXB0eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgPSAiXHUy
MDE0IjsKICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwog
CiAgICAgICAgIHN3aXRjaCAoY29sdW1uSWRlbnRpZmllcikgewpAQCAtMTE3LDcgKzEwOSw3IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGdvVG9CdXR0b24pOwogCiAgICAgICAg
ICAgICB2YXIgaWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAg
ICAgaWNvbi5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuUmVzb3VyY2VUaW1lbGluZURhdGFHcmlk
Tm9kZS5JY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBpY29uLmNsYXNzTmFtZSA9ICJp
Y29uIjsKICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGljb24pOwogCiAgICAgICAg
ICAgICB2YXIgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHZhbHVlKTsKQEAgLTE1MCwx
MCArMTQyLDEwIEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBpc05hTih2YWx1ZSkgPyBlbXB0eVZhbHVl
UGxhY2Vob2xkZXJTdHJpbmcgOiBOdW1iZXIuc2Vjb25kc1RvU3RyaW5nKHZhbHVlLCB0cnVlKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGxDb250ZW50LmNhbGwodGhpcywgY29sdW1uSWRlbnRp
ZmllciwgY2VsbCk7Ci0gICAgfSwKKyAgICAgICAgcmV0dXJuIHN1cGVyLmNyZWF0ZUNlbGxDb250
ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpOworICAgIH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0
aW9uKCkKKyAgICByZWZyZXNoKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRS
ZWZyZXNoSWRlbnRpZmllcikgewogICAgICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhp
cy5fc2NoZWR1bGVkUmVmcmVzaElkZW50aWZpZXIpOwpAQCAtMTYzLDExICsxNTUsMTEgQEAgV2Vi
SW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAg
ICAgICBkZWxldGUgdGhpcy5fY2FjaGVkRGF0YTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlLnJlZnJlc2guY2FsbCh0aGlzKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9uZWVkc1JlZnJlc2g6IGZ1bmN0aW9uKCkK
KyAgICBfbmVlZHNSZWZyZXNoKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmRhdGFHcmlkIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQpIHsKICAgICAgICAgICAgIHRo
aXMuZGF0YUdyaWQuZGF0YUdyaWROb2RlTmVlZHNSZWZyZXNoKHRoaXMpOwpAQCAtMTc4LDE0ICsx
NzAsMTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3NjaGVkdWxlZFJl
ZnJlc2hJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMucmVmcmVzaC5iaW5k
KHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9nb1RvUmVzb3VyY2U6IGZ1bmN0aW9uKGV2
ZW50KQorICAgIF9nb1RvUmVzb3VyY2UoZXZlbnQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IucmVzb3VyY2VTaWRlYmFyUGFuZWwuc2hvd1NvdXJjZUNvZGUodGhpcy5fcmVzb3VyY2UpOwot
ICAgIH0sCisgICAgfQogCi0gICAgX3RpbWVsaW5lUmVjb3JkVXBkYXRlZDogZnVuY3Rpb24oZXZl
bnQpCisgICAgX3RpbWVsaW5lUmVjb3JkVXBkYXRlZChldmVudCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLmlzUmVjb3JkVmlzaWJsZSh0aGlzLl9yZWNvcmQpKQogICAgICAgICAgICAgdGhpcy5u
ZWVkc0dyYXBoUmVmcmVzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1J1bkxvb3BUaW1lbGluZU92ZXJ2
aWV3R3JhcGguanMKaW5kZXggMmQzMDBjYi4uZmFlZGU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdH
cmFwaC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9S
dW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBoLmpzCkBAIC0yMywyOCArMjMsMjMgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUnVuTG9v
cFRpbWVsaW5lT3ZlcnZpZXdHcmFwaCA9IGZ1bmN0aW9uKHRpbWVsaW5lKQorV2ViSW5zcGVjdG9y
LlJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBjbGFzcyBSdW5Mb29wVGltZWxpbmVPdmVy
dmlld0dyYXBoIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaAogewot
ICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGguY2FsbCh0aGlzLCB0aW1lbGlu
ZSk7Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuUnVuTG9v
cFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl9ydW5M
b29wVGltZWxpbmUgPSB0aW1lbGluZTsKLSAgICB0aGlzLl90aW1lbGluZVJlY29yZEZyYW1lcyA9
IFtdOwotICAgIHRoaXMuX2dyYXBoSGVpZ2h0U2Vjb25kcyA9IE5hTjsKLSAgICB0aGlzLl9mcmFt
ZXNQZXJTZWNvbmREaXZpZGVycyA9IG5ldyBNYXA7CisgICAgY29uc3RydWN0b3IodGltZWxpbmUp
CisgICAgeworICAgICAgICBzdXBlcih0aW1lbGluZSk7CiAKLSAgICB0aGlzLl9ydW5Mb29wVGlt
ZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZlbnQuUmVjb3Jk
QWRkZWQsIHRoaXMuX3RpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOworICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgicnVubG9vcCIpOwogCi0gICAgdGhpcy5yZXNldCgpOwotfTsK
KyAgICAgICAgdGhpcy5fcnVuTG9vcFRpbWVsaW5lID0gdGltZWxpbmU7CisgICAgICAgIHRoaXMu
X3RpbWVsaW5lUmVjb3JkRnJhbWVzID0gW107CisgICAgICAgIHRoaXMuX2dyYXBoSGVpZ2h0U2Vj
b25kcyA9IE5hTjsKKyAgICAgICAgdGhpcy5fZnJhbWVzUGVyU2Vjb25kRGl2aWRlcnMgPSBuZXcg
TWFwOwogCi1XZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5TdHlsZUNs
YXNzTmFtZSA9ICJydW5sb29wIjsKLVdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVPdmVydmll
d0dyYXBoLk1heGltdW1HcmFwaEhlaWdodFNlY29uZHMgPSAwLjA1OworICAgICAgICB0aGlzLl9y
dW5Mb29wVGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUuRXZl
bnQuUmVjb3JkQWRkZWQsIHRoaXMuX3RpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMpOwogCi1XZWJJ
bnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBoLAot
ICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5
cGUsCisgICAgICAgIHRoaXMucmVzZXQoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIApAQCAt
NjAsNyArNTUsNyBAQCBXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2dyYXBoSGVpZ2h0U2Vjb25kcyA9IG1heGltdW1G
cmFtZUR1cmF0aW9uICogMS4xOyAgLy8gQWRkIDEwJSBtYXJnaW4gYWJvdmUgZnJhbWVzLgogICAg
ICAgICB0aGlzLl9ncmFwaEhlaWdodFNlY29uZHMgPSBNYXRoLm1pbih0aGlzLl9ncmFwaEhlaWdo
dFNlY29uZHMsIFdlYkluc3BlY3Rvci5SdW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBoLk1heGlt
dW1HcmFwaEhlaWdodFNlY29uZHMpOwogICAgICAgICByZXR1cm4gdGhpcy5fZ3JhcGhIZWlnaHRT
ZWNvbmRzOwotICAgIH0sCisgICAgfQogCiAgICAgcmVzZXQoKQogICAgIHsKQEAgLTY5LDcgKzY0
LDcgQEAgV2ViSW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAogICAgICAgICB0
aGlzLl9mcmFtZXNQZXJTZWNvbmREaXZpZGVycy5jbGVhcigpOwotICAgIH0sCisgICAgfQogCiAg
ICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CkBAIC0xMDIsNyArOTcsNyBAQCBXZWJJbnNwZWN0b3Iu
UnVuTG9vcFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICB0aGlzLl91cGRhdGVEaXZpZGVycygpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQogCkBAIC0xMTEsNyArMTA2LDcgQEAgV2ViSW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGlu
ZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9ncmFwaEhlaWdodFNl
Y29uZHMgPSBOYU47CiAKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAg
fQogCiAgICAgX3VwZGF0ZURpdmlkZXJzKCkKICAgICB7CkBAIC0xNDYsNyArMTQxLDcgQEAgV2Vi
SW5zcGVjdG9yLlJ1bkxvb3BUaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGNyZWF0ZURpdmlkZXJBdFBvc2l0aW9uLmNhbGwodGhpcywgNjApOwogICAgICAgICBj
cmVhdGVEaXZpZGVyQXRQb3NpdGlvbi5jYWxsKHRoaXMsIDMwKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIF91cGRhdGVFbGVtZW50UG9zaXRpb24oZWxlbWVudCwgbmV3UG9zaXRpb24sIHByb3BlcnR5
KQogICAgIHsKQEAgLTE1OCwzICsxNTMsNSBAQCBXZWJJbnNwZWN0b3IuUnVuTG9vcFRpbWVsaW5l
T3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbGVtZW50LnN0eWxlW3By
b3BlcnR5XSA9IG5ld1Bvc2l0aW9uICsgIiUiOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5S
dW5Mb29wVGltZWxpbmVPdmVydmlld0dyYXBoLk1heGltdW1HcmFwaEhlaWdodFNlY29uZHMgPSAw
LjA1OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU2NyaXB0Q29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcwppbmRleCBmM2E3YWJkLi4wNDNmMzBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3Jp
cHRDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9TY3JpcHRDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNzMgKzIzLDcwIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRl
bnRWaWV3ID0gZnVuY3Rpb24oc2NyaXB0KQorV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3
ID0gY2xhc3MgU2NyaXB0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2FsbCh0aGlzLCBzY3JpcHQpOwot
Ci0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRl
bnRWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIC8vIEFwcGVuZCBhIHNwaW5uZXIgd2hpbGUg
d2FpdGluZyBmb3IgX2NvbnRlbnRXaWxsUG9wdWxhdGUuCi0gICAgdmFyIHNwaW5uZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLkluZGV0ZXJtaW5hdGVQcm9ncmVzc1NwaW5uZXI7Ci0gICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHNwaW5uZXIuZWxlbWVudCk7Ci0KLSAgICB0aGlzLl9zY3JpcHQgPSBz
Y3JpcHQ7Ci0KLSAgICAvLyBUaGlzIHZpZXcgaXMgb25seSBmb3Igc3RhbmRhbG9uZSBTY3JpcHRz
IHdpdGggbm8gY29ycmVzcG9uZGluZyBSZXNvdXJjZS4gQWxsIG90aGVyIFNjcmlwdHMKLSAgICAv
LyBzaG91bGQgYmUgaGFuZGxlZCBieSBUZXh0UmVzb3VyY2VDb250ZW50VmlldyB2aWEgdGhlIFJl
c291cmNlLgotICAgIGNvbnNvbGUuYXNzZXJ0KCFzY3JpcHQucmVzb3VyY2UpOwotICAgIGNvbnNv
bGUuYXNzZXJ0KHNjcmlwdC5yYW5nZS5zdGFydExpbmUgPT09IDApOwotICAgIGNvbnNvbGUuYXNz
ZXJ0KHNjcmlwdC5yYW5nZS5zdGFydENvbHVtbiA9PT0gMCk7Ci0KLSAgICB0aGlzLl90ZXh0RWRp
dG9yID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvcihzY3JpcHQpOwotICAg
IHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRv
ci5FdmVudC5FeGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hhbmdlLCB0aGlzLl9leGVjdXRpb25MaW5l
TnVtYmVyRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRz
RGlkQ2hhbmdlLCB0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMpOwot
ICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVk
aXRvci5FdmVudC5Gb3JtYXR0aW5nRGlkQ2hhbmdlLCB0aGlzLl90ZXh0RWRpdG9yRm9ybWF0dGlu
Z0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvci5FdmVudC5Db250ZW50V2lsbFBvcHVs
YXRlLCB0aGlzLl9jb250ZW50V2lsbFBvcHVsYXRlLCB0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRp
dG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkV2
ZW50LkNvbnRlbnREaWRQb3B1bGF0ZSwgdGhpcy5fY29udGVudERpZFBvcHVsYXRlLCB0aGlzKTsK
LQotICAgIHZhciBjdXJsZXlCcmFjZXNJbWFnZTsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRm
b3JtLmlzTGVnYWN5TWFjT1MpCi0gICAgICAgIGN1cmxleUJyYWNlc0ltYWdlID0ge3NyYzogIklt
YWdlcy9MZWdhY3kvTmF2aWdhdGlvbkl0ZW1DdXJsZXlCcmFjZXMuc3ZnIiwgd2lkdGg6IDE2LCBo
ZWlnaHQ6IDE2fTsKLSAgICBlbHNlCi0gICAgICAgIGN1cmxleUJyYWNlc0ltYWdlID0ge3NyYzog
IkltYWdlcy9OYXZpZ2F0aW9uSXRlbUN1cmxleUJyYWNlcy5zdmciLCB3aWR0aDogMTMsIGhlaWdo
dDogMTN9OwotCi0gICAgdmFyIHRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByZXR0
eSBwcmludCIpOwotICAgIHZhciBhY3RpdmF0ZWRUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJPcmlnaW5hbCBmb3JtYXR0aW5nIik7Ci0gICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25O
YXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9u
SXRlbSgicHJldHR5LXByaW50IiwgdG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgY3VybGV5QnJh
Y2VzSW1hZ2Uuc3JjLCBjdXJsZXlCcmFjZXNJbWFnZS53aWR0aCwgY3VybGV5QnJhY2VzSW1hZ2Uu
aGVpZ2h0KTsKLSAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNr
ZWQsIHRoaXMuX3RvZ2dsZVByZXR0eVByaW50LCB0aGlzKTsKLSAgICB0aGlzLl9wcmV0dHlQcmlu
dEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsgLy8gRW5hYmxlZCB3aGVuIHRo
ZSB0ZXh0IGVkaXRvciBpcyBwb3B1bGF0ZWQgd2l0aCBjb250ZW50LgotCi0gICAgdmFyIHRvb2xU
aXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0eXBlIGluZm9ybWF0aW9uIik7
Ci0gICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
SGlkZSB0eXBlIGluZm9ybWF0aW9uIik7Ci0gICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdh
dGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0o
InNob3ctdHlwZXMiLCB0b29sVGlwVHlwZXMsIGFjdGl2YXRlZFRvb2xUaXBUeXBlcywgIkltYWdl
cy9OYXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIsIDEzLCAxNCk7Ci0gICAgdGhpcy5fc2hvd1R5cGVz
QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fdG9nZ2xlVHlwZUFubm90YXRpb25z
LCB0aGlzKTsKLSAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVk
ID0gZmFsc2U7Ci0KLSAgICBXZWJJbnNwZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRp
b25TZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hh
bmdlZCwgdGhpcy5fc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZCwg
dGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcuU3R5bGVDbGFzc05h
bWUgPSAic2NyaXB0IjsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNjcmlwdENvbnRlbnRWaWV3LAor
ICAgIGNvbnN0cnVjdG9yKHNjcmlwdCkKKyAgICB7CisgICAgICAgIHN1cGVyKHNjcmlwdCk7CisK
KyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNjcmlwdCIpOworCisgICAgICAg
IC8vIEFwcGVuZCBhIHNwaW5uZXIgd2hpbGUgd2FpdGluZyBmb3IgX2NvbnRlbnRXaWxsUG9wdWxh
dGUuCisgICAgICAgIHZhciBzcGlubmVyID0gbmV3IFdlYkluc3BlY3Rvci5JbmRldGVybWluYXRl
UHJvZ3Jlc3NTcGlubmVyOworICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3Bpbm5l
ci5lbGVtZW50KTsKKworICAgICAgICB0aGlzLl9zY3JpcHQgPSBzY3JpcHQ7CisKKyAgICAgICAg
Ly8gVGhpcyB2aWV3IGlzIG9ubHkgZm9yIHN0YW5kYWxvbmUgU2NyaXB0cyB3aXRoIG5vIGNvcnJl
c3BvbmRpbmcgUmVzb3VyY2UuIEFsbCBvdGhlciBTY3JpcHRzCisgICAgICAgIC8vIHNob3VsZCBi
ZSBoYW5kbGVkIGJ5IFRleHRSZXNvdXJjZUNvbnRlbnRWaWV3IHZpYSB0aGUgUmVzb3VyY2UuCisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFzY3JpcHQucmVzb3VyY2UpOworICAgICAgICBjb25zb2xl
LmFzc2VydChzY3JpcHQucmFuZ2Uuc3RhcnRMaW5lID09PSAwKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoc2NyaXB0LnJhbmdlLnN0YXJ0Q29sdW1uID09PSAwKTsKKworICAgICAgICB0aGlzLl90
ZXh0RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGV4dEVkaXRvcihzY3JpcHQp
OworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlRleHRFZGl0b3IuRXZlbnQuRXhlY3V0aW9uTGluZU51bWJlckRpZENoYW5nZSwgdGhpcy5fZXhl
Y3V0aW9uTGluZU51bWJlckRpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0
b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5OdW1iZXJP
ZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENo
YW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5Gb3JtYXR0aW5nRGlkQ2hhbmdlLCB0aGlzLl90
ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX3RleHRF
ZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
RXZlbnQuQ29udGVudFdpbGxQb3B1bGF0ZSwgdGhpcy5fY29udGVudFdpbGxQb3B1bGF0ZSwgdGhp
cyk7CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRleHRFZGl0b3IuRXZlbnQuQ29udGVudERpZFBvcHVsYXRlLCB0aGlzLl9j
b250ZW50RGlkUG9wdWxhdGUsIHRoaXMpOworCisgICAgICAgIHZhciBjdXJsZXlCcmFjZXNJbWFn
ZTsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5QbGF0Zm9ybS5pc0xlZ2FjeU1hY09TKQorICAg
ICAgICAgICAgY3VybGV5QnJhY2VzSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL0xlZ2FjeS9OYXZpZ2F0
aW9uSXRlbUN1cmxleUJyYWNlcy5zdmciLCB3aWR0aDogMTYsIGhlaWdodDogMTZ9OworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjdXJsZXlCcmFjZXNJbWFnZSA9IHtzcmM6ICJJbWFnZXMvTmF2
aWdhdGlvbkl0ZW1DdXJsZXlCcmFjZXMuc3ZnIiwgd2lkdGg6IDEzLCBoZWlnaHQ6IDEzfTsKKwor
ICAgICAgICB2YXIgdG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJldHR5IHByaW50
Iik7CisgICAgICAgIHZhciBhY3RpdmF0ZWRUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJPcmlnaW5hbCBmb3JtYXR0aW5nIik7CisgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9u
TmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlv
bkl0ZW0oInByZXR0eS1wcmludCIsIHRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGN1cmxleUJy
YWNlc0ltYWdlLnNyYywgY3VybGV5QnJhY2VzSW1hZ2Uud2lkdGgsIGN1cmxleUJyYWNlc0ltYWdl
LmhlaWdodCk7CisgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0u
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQu
Q2xpY2tlZCwgdGhpcy5fdG9nZ2xlUHJldHR5UHJpbnQsIHRoaXMpOworICAgICAgICB0aGlzLl9w
cmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsgLy8gRW5hYmxl
ZCB3aGVuIHRoZSB0ZXh0IGVkaXRvciBpcyBwb3B1bGF0ZWQgd2l0aCBjb250ZW50LgorCisgICAg
ICAgIHZhciB0b29sVGlwVHlwZXMgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNob3cgdHlwZSBp
bmZvcm1hdGlvbiIpOworICAgICAgICB2YXIgYWN0aXZhdGVkVG9vbFRpcFR5cGVzID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJIaWRlIHR5cGUgaW5mb3JtYXRpb24iKTsKKyAgICAgICAgdGhpcy5f
c2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRl
QnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlwVHlwZXMsIGFjdGl2YXRl
ZFRvb2xUaXBUeXBlcywgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIsIDEzLCAxNCk7
CisgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRo
aXMuX3RvZ2dsZVR5cGVBbm5vdGF0aW9ucywgdGhpcyk7CisgICAgICAgIHRoaXMuX3Nob3dUeXBl
c0J1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSBmYWxzZTsKKworICAgICAgICBXZWJJbnNw
ZWN0b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvd0phdmFTY3Jp
cHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7CisgICAgfQogCiAgICAgLy8g
UHVibGljCiAKICAgICBnZXQgbmF2aWdhdGlvbkl0ZW1zKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBbdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSwgdGhpcy5fc2hvd1R5cGVz
QnV0dG9uTmF2aWdhdGlvbkl0ZW1dOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNjcmlwdCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0OwotICAgIH0sCisgICAgfQogCiAg
ICAgZ2V0IHRleHRFZGl0b3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RleHRFZGl0
b3I7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmpl
Y3RzKCkKICAgICB7CkBAIC05OSwxMDQgKzk2LDEwNCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Q29u
dGVudFZpZXcucHJvdG90eXBlID0gewogICAgICAgICAvLyBJZiB0aGUgU291cmNlQ29kZVRleHRF
ZGl0b3IgaGFzIGFuIGV4ZWN1dGlvbkxpbmVOdW1iZXIsIHdlIGNhbiBhc3N1bWUKICAgICAgICAg
Ly8gaXQgaXMgYWx3YXlzIHRoZSBhY3RpdmUgY2FsbCBmcmFtZS4KICAgICAgICAgcmV0dXJuIFtX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFjdGl2ZUNhbGxGcmFtZV07Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICByZXZlYWxQb3NpdGlvbjogZnVuY3Rpb24ocG9zaXRpb24sIHRleHRSYW5nZVRv
U2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQorICAgIHJldmVhbFBvc2l0aW9uKHBvc2l0aW9uLCB0
ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKICAgICB7CiAgICAgICAgIHRoaXMu
X3RleHRFZGl0b3IucmV2ZWFsUG9zaXRpb24ocG9zaXRpb24sIHRleHRSYW5nZVRvU2VsZWN0LCBm
b3JjZVVuZm9ybWF0dGVkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigp
CisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5zaG93bigpOwot
ICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IuaGlkZGVuKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgdGhp
cy5fdGV4dEVkaXRvci5jbG9zZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2F2ZVRvQ29va2ll
OiBmdW5jdGlvbihjb29raWUpCisgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAg
ICAgIGNvb2tpZS50eXBlID0gV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3Q29va2llVHlwZS5SZXNv
dXJjZTsKICAgICAgICAgY29va2llLnVybCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QudXJsOwot
ICAgIH0sCisgICAgfQogCi0gICAgcmVzdG9yZUZyb21Db29raWU6IGZ1bmN0aW9uKGNvb2tpZSkK
KyAgICByZXN0b3JlRnJvbUNvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBpZiAoImxpbmVO
dW1iZXIiIGluIGNvb2tpZSAmJiAiY29sdW1uTnVtYmVyIiBpbiBjb29raWUpCiAgICAgICAgICAg
ICB0aGlzLnJldmVhbFBvc2l0aW9uKG5ldyBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVBvc2l0aW9u
KGNvb2tpZS5saW5lTnVtYmVyLCBjb29raWUuY29sdW1uTnVtYmVyKSk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgc3VwcG9ydHNTYXZlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNhdmVEYXRhKCkKICAgICB7CiAgICAgICAgIHZhciB1
cmwgPSB0aGlzLl9zY3JpcHQudXJsIHx8ICJ3ZWItaW5zcGVjdG9yOi8vLyIgKyBlbmNvZGVVUkko
dGhpcy5fc2NyaXB0LmRpc3BsYXlOYW1lKSArICIuanMiOwogICAgICAgICByZXR1cm4ge3VybCwg
Y29udGVudDogdGhpcy5fdGV4dEVkaXRvci5zdHJpbmd9OwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHN1cHBvcnRzU2VhcmNoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IG51bWJlck9mU2VhcmNoUmVzdWx0cygpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fdGV4dEVkaXRvci5udW1iZXJPZlNlYXJjaFJlc3VsdHM7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgaGFzUGVyZm9ybWVkU2VhcmNoKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl90ZXh0RWRpdG9yLmN1cnJlbnRTZWFyY2hRdWVyeSAhPT0gbnVsbDsKLSAgICB9
LAorICAgIH0KIAogICAgIHNldCBhdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQo
cmV2ZWFsKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5hdXRvbWF0aWNhbGx5UmV2
ZWFsRmlyc3RTZWFyY2hSZXN1bHQgPSByZXZlYWw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwZXJm
b3JtU2VhcmNoOiBmdW5jdGlvbihxdWVyeSkKKyAgICBwZXJmb3JtU2VhcmNoKHF1ZXJ5KQogICAg
IHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTsKLSAgICB9
LAorICAgIH0KIAotICAgIHNlYXJjaENsZWFyZWQ6IGZ1bmN0aW9uKCkKKyAgICBzZWFyY2hDbGVh
cmVkKCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2VhcmNoQ2xlYXJlZCgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uOiBmdW5jdGlvbigp
CisgICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl90ZXh0RWRpdG9yLnNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigpOwotICAgIH0sCisgICAg
fQogCi0gICAgcmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZvY3Vz
KQorICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAg
ICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VG
b2N1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0OiBmdW5j
dGlvbihjaGFuZ2VGb2N1cykKKyAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3Vz
KQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZXZlYWxOZXh0U2VhcmNoUmVzdWx0
KGNoYW5nZUZvY3VzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rp
b24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9y
LnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAg
X2NvbnRlbnRXaWxsUG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50V2lsbFBv
cHVsYXRlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3RleHRFZGl0b3IuZWxlbWVu
dC5wYXJlbnROb2RlID09PSB0aGlzLmVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0y
MDcsNDUgKzIwNCw0MyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJvdG90eXBl
ID0gewogCiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0
aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGV4dEVkaXRvci5lbGVtZW50KTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9jb250ZW50RGlkUG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9jb250ZW50RGlkUG9wdWxhdGUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0dHlQ
cmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhbkJl
Rm9ybWF0dGVkKCk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVt
LmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhblNob3dUeXBlQW5ub3RhdGlvbnMoKTsKICAg
ICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0gV2Vi
SW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF90b2dnbGVQcmV0dHlQcmludDogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX3RvZ2dsZVByZXR0eVByaW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGFjdGl2YXRl
ZCA9ICF0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZDsKICAg
ICAgICAgdGhpcy5fdGV4dEVkaXRvci5mb3JtYXR0ZWQgPSBhY3RpdmF0ZWQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdG9nZ2xlVHlwZUFubm90YXRpb25zOiBmdW5jdGlvbihldmVudCkKKyAgICBf
dG9nZ2xlVHlwZUFubm90YXRpb25zKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVk
aXRvci50b2dnbGVUeXBlQW5ub3RhdGlvbnMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zaG93
SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZChldmVudCkK
ICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2
YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmcu
dmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRDaGFu
Z2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZShl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0
ZW0uYWN0aXZhdGVkID0gdGhpcy5fdGV4dEVkaXRvci5mb3JtYXR0ZWQ7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfZXhlY3V0aW9uTGluZU51bWJlckRpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisg
ICAgX2V4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZl
bnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50
KQorICAgIF9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlKTsKICAgICB9CiB9OwotCi1X
ZWJJbnNwZWN0b3IuU2NyaXB0Q29udGVudFZpZXcucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYklu
c3BlY3Rvci5Db250ZW50Vmlldy5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZURhdGFHcmlkLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVE
YXRhR3JpZC5qcwppbmRleCAwMjIzYTI4Li4wYzc2NjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZURhdGFHcmlkLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRp
bWVsaW5lRGF0YUdyaWQuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIwICsyMywxNyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFHcmlk
ID0gZnVuY3Rpb24odHJlZU91dGxpbmUsIGNvbHVtbnMsIGRlbGVnYXRlLCBlZGl0Q2FsbGJhY2ss
IGRlbGV0ZUNhbGxiYWNrKQorV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWQgPSBj
bGFzcyBTY3JpcHRUaW1lbGluZURhdGFHcmlkIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
RGF0YUdyaWQKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5jYWxsKHRoaXMs
IHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxs
YmFjayk7Ci19OwotCi1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZC5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURhdGFH
cmlkLAorICAgIGNvbnN0cnVjdG9yKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRp
dENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaykKKyAgICB7CisgICAgICAgIHN1cGVyKHRyZWVPdXRs
aW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjayk7Cisg
ICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBjYWxsRnJhbWVQb3BvdmVyQW5jaG9yRWxl
bWVudDogZnVuY3Rpb24oKQorICAgIGNhbGxGcmFtZVBvcG92ZXJBbmNob3JFbGVtZW50KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkTm9kZS5lbGVtZW50V2l0aENvbHVtbklk
ZW50aWZpZXIoImxvY2F0aW9uIik7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLlNjcmlwdFRp
bWVsaW5lRGF0YUdyaWQucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5UaW1lbGlu
ZURhdGFHcmlkLnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRhR3Jp
ZE5vZGUuanMKaW5kZXggNjk1NWJkMS4uMmIyM2RhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0
VGltZWxpbmVEYXRhR3JpZE5vZGUuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDUxICsyMyw0NCBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZURh
dGFHcmlkTm9kZSA9IGZ1bmN0aW9uKHNjcmlwdFRpbWVsaW5lUmVjb3JkLCBiYXNlU3RhcnRUaW1l
LCByYW5nZVN0YXJ0VGltZSwgcmFuZ2VFbmRUaW1lKQorV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVs
aW5lRGF0YUdyaWROb2RlID0gY2xhc3MgU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUKIHsKLSAgICBXZWJJbnNwZWN0b3Iu
VGltZWxpbmVEYXRhR3JpZE5vZGUuY2FsbCh0aGlzLCBmYWxzZSwgbnVsbCk7Ci0KLSAgICB0aGlz
Ll9yZWNvcmQgPSBzY3JpcHRUaW1lbGluZVJlY29yZDsKLSAgICB0aGlzLl9iYXNlU3RhcnRUaW1l
ID0gYmFzZVN0YXJ0VGltZSB8fCAwOwotICAgIHRoaXMuX3JhbmdlU3RhcnRUaW1lID0gcmFuZ2VT
dGFydFRpbWUgfHwgMDsKLSAgICB0aGlzLl9yYW5nZUVuZFRpbWUgPSB0eXBlb2YgcmFuZ2VFbmRU
aW1lID09PSAibnVtYmVyIiA/IHJhbmdlRW5kVGltZSA6IEluZmluaXR5OwotfTsKLQotLy8gRklY
TUU6IE1vdmUgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVt
b3ZlIHRoaXMuCi1XZWJJbnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1
bmN0aW9ucyhXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUpOwotCi1XZWJJ
bnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUuSWNvblN0eWxlQ2xhc3NOYW1lID0g
Imljb24iOworICAgIGNvbnN0cnVjdG9yKHNjcmlwdFRpbWVsaW5lUmVjb3JkLCBiYXNlU3RhcnRU
aW1lLCByYW5nZVN0YXJ0VGltZSwgcmFuZ2VFbmRUaW1lKQorICAgIHsKKyAgICAgICAgc3VwZXIo
ZmFsc2UsIG51bGwpOwogCi1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZE5vZGUu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxp
bmVEYXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRh
R3JpZE5vZGUucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9yZWNvcmQgPSBzY3JpcHRUaW1lbGlu
ZVJlY29yZDsKKyAgICAgICAgdGhpcy5fYmFzZVN0YXJ0VGltZSA9IGJhc2VTdGFydFRpbWUgfHwg
MDsKKyAgICAgICAgdGhpcy5fcmFuZ2VTdGFydFRpbWUgPSByYW5nZVN0YXJ0VGltZSB8fCAwOwor
ICAgICAgICB0aGlzLl9yYW5nZUVuZFRpbWUgPSB0eXBlb2YgcmFuZ2VFbmRUaW1lID09PSAibnVt
YmVyIiA/IHJhbmdlRW5kVGltZSA6IEluZmluaXR5OworICAgIH0KIAogICAgIC8vIFB1YmxpYwog
CiAgICAgZ2V0IHJlY29yZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVjb3JkOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJlY29yZHMoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IFt0aGlzLl9yZWNvcmRdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGJhc2VTdGFydFRpbWUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Jhc2VTdGFydFRpbWU7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgcmFuZ2VTdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3JhbmdlU3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHJhbmdlRW5kVGlt
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmFuZ2VFbmRUaW1lOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IGRhdGEoKQogICAgIHsKQEAgLTc3LDkgKzcwLDkgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdFRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBy
ZXR1cm4ge2V2ZW50VHlwZTogdGhpcy5fcmVjb3JkLmV2ZW50VHlwZSwgc3RhcnRUaW1lLCBzZWxm
VGltZTogZHVyYXRpb24sIHRvdGFsVGltZTogZHVyYXRpb24sCiAgICAgICAgICAgICBhdmVyYWdl
VGltZTogZHVyYXRpb24sIGNhbGxDb3VudDogMSwgbG9jYXRpb246IGNhbGxGcmFtZU9yU291cmNl
Q29kZUxvY2F0aW9ufTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZVJhbmdlVGltZXM6IGZ1
bmN0aW9uKHN0YXJ0VGltZSwgZW5kVGltZSkKKyAgICB1cGRhdGVSYW5nZVRpbWVzKHN0YXJ0VGlt
ZSwgZW5kVGltZSkKICAgICB7CiAgICAgICAgIHZhciBvbGRSYW5nZVN0YXJ0VGltZSA9IHRoaXMu
X3JhbmdlU3RhcnRUaW1lOwogICAgICAgICB2YXIgb2xkUmFuZ2VFbmRUaW1lID0gdGhpcy5fcmFu
Z2VFbmRUaW1lOwpAQCAtMTA0LDExICs5NywxMSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxp
bmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChvbGRTdGFydEJvdW5k
YXJ5ICE9PSBuZXdTdGFydEJvdW5kYXJ5IHx8IG9sZEVuZEJvdW5kYXJ5ICE9PSBuZXdFbmRCb3Vu
ZGFyeSkKICAgICAgICAgICAgIHRoaXMubmVlZHNSZWZyZXNoKCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBjcmVhdGVDZWxsQ29udGVudDogZnVuY3Rpb24oY29sdW1uSWRlbnRpZmllciwgY2VsbCkK
KyAgICBjcmVhdGVDZWxsQ29udGVudChjb2x1bW5JZGVudGlmaWVyLCBjZWxsKQogICAgIHsKLSAg
ICAgICAgY29uc3QgZW1wdHlWYWx1ZVBsYWNlaG9sZGVyU3RyaW5nID0gIlx1MjAxNCI7CisgICAg
ICAgIHZhciBlbXB0eVZhbHVlUGxhY2Vob2xkZXJTdHJpbmcgPSAiXHUyMDE0IjsKICAgICAgICAg
dmFyIHZhbHVlID0gdGhpcy5kYXRhW2NvbHVtbklkZW50aWZpZXJdOwogCiAgICAgICAgIHN3aXRj
aCAoY29sdW1uSWRlbnRpZmllcikgewpAQCAtMTI0LDYgKzExNyw2IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRUaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm4gaXNOYU4odmFsdWUpID8gZW1wdHlWYWx1ZVBsYWNlaG9sZGVyU3RyaW5nIDogTnVtYmVyLnNl
Y29uZHNUb1N0cmluZyh2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4g
V2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxsQ29u
dGVudC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIsIGNlbGwpOworICAgICAgICByZXR1cm4g
c3VwZXIuY3JlYXRlQ2VsbENvbnRlbnQoY29sdW1uSWRlbnRpZmllciwgY2VsbCk7CiAgICAgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwppbmRleCAz
Nzg3YTMzLi40YjIwYTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGguanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVPdmVydmll
d0dyYXBoLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDM4ICsyMywzNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBm
dW5jdGlvbih0aW1lbGluZSkKK1dlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3Jh
cGggPSBjbGFzcyBTY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGggZXh0ZW5kcyBXZWJJbnNwZWN0
b3IuVGltZWxpbmVPdmVydmlld0dyYXBoCiB7Ci0gICAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3Zl
cnZpZXdHcmFwaC5jYWxsKHRoaXMsIHRpbWVsaW5lKTsKLQotICAgIHRoaXMuZWxlbWVudC5jbGFz
c0xpc3QuYWRkKFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZU92ZXJ2aWV3R3JhcGguU3R5bGVD
bGFzc05hbWUpOwotCi0gICAgdGhpcy5fc2NyaXB0VGltZWxpbmUgPSB0aW1lbGluZTsKLSAgICB0
aGlzLl9zY3JpcHRUaW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGlu
ZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhp
cyk7CisgICAgY29uc3RydWN0b3IodGltZWxpbmUpCisgICAgeworICAgICAgICBzdXBlcih0aW1l
bGluZSk7CiAKLSAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnMgPSBbXTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNjcmlwdCIpOwogCi0gICAgdGhpcy5yZXNldCgpOwot
fTsKKyAgICAgICAgdGhpcy5fc2NyaXB0VGltZWxpbmUgPSB0aW1lbGluZTsKKyAgICAgICAgdGhp
cy5fc2NyaXB0VGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmUu
RXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX3NjcmlwdFRpbWVsaW5lUmVjb3JkQWRkZWQsIHRoaXMp
OwogCi1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVPdmVydmlld0dyYXBoLlN0eWxlQ2xhc3NO
YW1lID0gInNjcmlwdCI7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFycyA9IFtdOwog
Ci1XZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVPdmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lT3ZlcnZpZXdHcmFw
aCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJv
dG90eXBlLAorICAgICAgICB0aGlzLnJlc2V0KCk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAK
LSAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHJlc2V0KCkKICAgICB7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlLnJlc2V0LmNhbGwodGhpcyk7
CiAKICAgICAgICAgdGhpcy5fdGltZWxpbmVSZWNvcmRCYXJNYXAgPSBuZXcgTWFwOwogCiAgICAg
ICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAgIH0sCisgICAgfQogCi0gICAg
dXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlLnVwZGF0ZUxh
eW91dC5jYWxsKHRoaXMpOwogCkBAIC04NCwxMSArODAsMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dFRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl90
aW1lbGluZVJlY29yZEJhcnNbcmVjb3JkQmFySW5kZXhdLnJlY29yZHMgPSBudWxsOwogICAgICAg
ICAgICAgdGhpcy5fdGltZWxpbmVSZWNvcmRCYXJzW3JlY29yZEJhckluZGV4XS5lbGVtZW50LnJl
bW92ZSgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAg
ICBfc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Njcmlw
dFRpbWVsaW5lUmVjb3JkQWRkZWQoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLm5lZWRzTGF5
b3V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU2NyaXB0VGltZWxpbmVWaWV3LmpzCmluZGV4IGMzYTRkNzcu
LjM4ODg5MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NjcmlwdFRpbWVsaW5lVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TY3JpcHRUaW1lbGluZVZpZXcuanMKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsODcgKzIzLDgyIEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
LlNjcmlwdFRpbWVsaW5lVmlldyA9IGZ1bmN0aW9uKHRpbWVsaW5lKQorV2ViSW5zcGVjdG9yLlNj
cmlwdFRpbWVsaW5lVmlldyA9IGNsYXNzIFNjcmlwdFRpbWVsaW5lVmlldyBleHRlbmRzIFdlYklu
c3BlY3Rvci5UaW1lbGluZVZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LmNh
bGwodGhpcywgdGltZWxpbmUpOwotCi0gICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUudHlwZSA9
PT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUuU2NyaXB0KTsKLQotICAgIHRoaXMu
bmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50
U2VsZWN0ZWQuYmluZCh0aGlzKTsKLSAgICB0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxp
bmUub25kZXNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50RGVzZWxlY3RlZC5iaW5kKHRoaXMpOwot
ICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5lbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV2ViSW5zcGVjdG9yLlNjcmlwdFRpbWVsaW5lVmlldy5UcmVlT3V0bGluZVN0eWxlQ2xhc3NO
YW1lKTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1lbGluZSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRpbWVsaW5lLnR5cGUgPT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZC5UeXBl
LlNjcmlwdCk7CiAKLSAgICB2YXIgY29sdW1ucyA9IHtsb2NhdGlvbjoge30sIGNhbGxDb3VudDog
e30sIHN0YXJ0VGltZToge30sIHRvdGFsVGltZToge30sIHNlbGZUaW1lOiB7fSwgYXZlcmFnZVRp
bWU6IHt9fTsKKyAgICAgICAgc3VwZXIodGltZWxpbmUpOwogCi0gICAgY29sdW1ucy5sb2NhdGlv
bi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTG9jYXRpb24iKTsKLSAgICBjb2x1bW5z
LmxvY2F0aW9uLndpZHRoID0gIjE1JSI7CisgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJU
cmVlT3V0bGluZS5vbnNlbGVjdCA9IHRoaXMuX3RyZWVFbGVtZW50U2VsZWN0ZWQuYmluZCh0aGlz
KTsKKyAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLm9uZGVzZWxlY3Qg
PSB0aGlzLl90cmVlRWxlbWVudERlc2VsZWN0ZWQuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5u
YXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRsaW5lLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic2NyaXB0
Iik7CiAKLSAgICBjb2x1bW5zLmNhbGxDb3VudC50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiQ2FsbHMiKTsKLSAgICBjb2x1bW5zLmNhbGxDb3VudC53aWR0aCA9ICI1JSI7Ci0gICAgY29s
dW1ucy5jYWxsQ291bnQuYWxpZ25lZCA9ICJyaWdodCI7CisgICAgICAgIHZhciBjb2x1bW5zID0g
e2xvY2F0aW9uOiB7fSwgY2FsbENvdW50OiB7fSwgc3RhcnRUaW1lOiB7fSwgdG90YWxUaW1lOiB7
fSwgc2VsZlRpbWU6IHt9LCBhdmVyYWdlVGltZToge319OwogCi0gICAgY29sdW1ucy5zdGFydFRp
bWUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlN0YXJ0IFRpbWUiKTsKLSAgICBjb2x1
bW5zLnN0YXJ0VGltZS53aWR0aCA9ICIxMCUiOwotICAgIGNvbHVtbnMuc3RhcnRUaW1lLmFsaWdu
ZWQgPSAicmlnaHQiOworICAgICAgICBjb2x1bW5zLmxvY2F0aW9uLnRpdGxlID0gV2ViSW5zcGVj
dG9yLlVJU3RyaW5nKCJMb2NhdGlvbiIpOworICAgICAgICBjb2x1bW5zLmxvY2F0aW9uLndpZHRo
ID0gIjE1JSI7CiAKLSAgICBjb2x1bW5zLnRvdGFsVGltZS50aXRsZSA9IFdlYkluc3BlY3Rvci5V
SVN0cmluZygiVG90YWwgVGltZSIpOwotICAgIGNvbHVtbnMudG90YWxUaW1lLndpZHRoID0gIjEw
JSI7Ci0gICAgY29sdW1ucy50b3RhbFRpbWUuYWxpZ25lZCA9ICJyaWdodCI7CisgICAgICAgIGNv
bHVtbnMuY2FsbENvdW50LnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDYWxscyIpOwor
ICAgICAgICBjb2x1bW5zLmNhbGxDb3VudC53aWR0aCA9ICI1JSI7CisgICAgICAgIGNvbHVtbnMu
Y2FsbENvdW50LmFsaWduZWQgPSAicmlnaHQiOwogCi0gICAgY29sdW1ucy5zZWxmVGltZS50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2VsZiBUaW1lIik7Ci0gICAgY29sdW1ucy5zZWxm
VGltZS53aWR0aCA9ICIxMCUiOwotICAgIGNvbHVtbnMuc2VsZlRpbWUuYWxpZ25lZCA9ICJyaWdo
dCI7CisgICAgICAgIGNvbHVtbnMuc3RhcnRUaW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3Ry
aW5nKCJTdGFydCBUaW1lIik7CisgICAgICAgIGNvbHVtbnMuc3RhcnRUaW1lLndpZHRoID0gIjEw
JSI7CisgICAgICAgIGNvbHVtbnMuc3RhcnRUaW1lLmFsaWduZWQgPSAicmlnaHQiOwogCi0gICAg
Y29sdW1ucy5hdmVyYWdlVGltZS50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXZlcmFn
ZSBUaW1lIik7Ci0gICAgY29sdW1ucy5hdmVyYWdlVGltZS53aWR0aCA9ICIxMCUiOwotICAgIGNv
bHVtbnMuYXZlcmFnZVRpbWUuYWxpZ25lZCA9ICJyaWdodCI7CisgICAgICAgIGNvbHVtbnMudG90
YWxUaW1lLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJUb3RhbCBUaW1lIik7CisgICAg
ICAgIGNvbHVtbnMudG90YWxUaW1lLndpZHRoID0gIjEwJSI7CisgICAgICAgIGNvbHVtbnMudG90
YWxUaW1lLmFsaWduZWQgPSAicmlnaHQiOwogCi0gICAgZm9yICh2YXIgY29sdW1uIGluIGNvbHVt
bnMpCi0gICAgICAgIGNvbHVtbnNbY29sdW1uXS5zb3J0YWJsZSA9IHRydWU7CisgICAgICAgIGNv
bHVtbnMuc2VsZlRpbWUudGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNlbGYgVGltZSIp
OworICAgICAgICBjb2x1bW5zLnNlbGZUaW1lLndpZHRoID0gIjEwJSI7CisgICAgICAgIGNvbHVt
bnMuc2VsZlRpbWUuYWxpZ25lZCA9ICJyaWdodCI7CiAKLSAgICB0aGlzLl9kYXRhR3JpZCA9IG5l
dyBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVEYXRhR3JpZCh0aGlzLm5hdmlnYXRpb25TaWRl
YmFyVHJlZU91dGxpbmUsIGNvbHVtbnMsIHRoaXMpOwotICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuRXZlbnQuRmlsdGVyc0Rp
ZENoYW5nZSwgdGhpcy5fZGF0YUdyaWRGaWx0ZXJzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlz
Ll9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EYXRhR3JpZC5FdmVudC5T
ZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZE5vZGVTZWxlY3RlZCwgdGhpcyk7Ci0g
ICAgdGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgPSAic3RhcnRUaW1lIjsKLSAg
ICB0aGlzLl9kYXRhR3JpZC5zb3J0T3JkZXIgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWQuU29ydE9y
ZGVyLkFzY2VuZGluZzsKKyAgICAgICAgY29sdW1ucy5hdmVyYWdlVGltZS50aXRsZSA9IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiQXZlcmFnZSBUaW1lIik7CisgICAgICAgIGNvbHVtbnMuYXZlcmFn
ZVRpbWUud2lkdGggPSAiMTAlIjsKKyAgICAgICAgY29sdW1ucy5hdmVyYWdlVGltZS5hbGlnbmVk
ID0gInJpZ2h0IjsKIAotICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKFdlYkluc3BlY3Rv
ci5TY3JpcHRUaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUpOwotICAgIHRoaXMuZWxlbWVudC5h
cHBlbmRDaGlsZCh0aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgZm9yICh2YXIgY29s
dW1uIGluIGNvbHVtbnMpCisgICAgICAgICAgICBjb2x1bW5zW2NvbHVtbl0uc29ydGFibGUgPSB0
cnVlOwogCi0gICAgdGltZWxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxp
bmUuRXZlbnQuUmVjb3JkQWRkZWQsIHRoaXMuX3NjcmlwdFRpbWVsaW5lUmVjb3JkQWRkZWQsIHRo
aXMpOworICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0VGlt
ZWxpbmVEYXRhR3JpZCh0aGlzLm5hdmlnYXRpb25TaWRlYmFyVHJlZU91dGxpbmUsIGNvbHVtbnMs
IHRoaXMpOworICAgICAgICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZURhdGFHcmlkLkV2ZW50LkZpbHRlcnNEaWRDaGFuZ2UsIHRoaXMuX2RhdGFH
cmlkRmlsdGVyc0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50LlNlbGVjdGVkTm9kZUNoYW5n
ZWQsIHRoaXMuX2RhdGFHcmlkTm9kZVNlbGVjdGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZGF0
YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgPSAic3RhcnRUaW1lIjsKKyAgICAgICAgdGhpcy5f
ZGF0YUdyaWQuc29ydE9yZGVyID0gV2ViSW5zcGVjdG9yLkRhdGFHcmlkLlNvcnRPcmRlci5Bc2Nl
bmRpbmc7CiAKLSAgICB0aGlzLl9wZW5kaW5nUmVjb3JkcyA9IFtdOwotfTsKKyAgICAgICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNjcmlwdCIpOworICAgICAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5TY3Jp
cHRUaW1lbGluZVZpZXcuU3R5bGVDbGFzc05hbWUgPSAic2NyaXB0IjsKLVdlYkluc3BlY3Rvci5T
Y3JpcHRUaW1lbGluZVZpZXcuVHJlZU91dGxpbmVTdHlsZUNsYXNzTmFtZSA9ICJzY3JpcHQiOwor
ICAgICAgICB0aW1lbGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5F
dmVudC5SZWNvcmRBZGRlZCwgdGhpcy5fc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7
CiAKLVdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewotICAgIGNv
bnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3LAotICAgIF9fcHJvdG9f
XzogV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUsCisgICAgICAgIHRoaXMuX3Bl
bmRpbmdSZWNvcmRzID0gW107CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmF2
aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZUxhYmVsKCkKICAgICB7CiAgICAgICAgIHJldHVybiBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlJlY29yZHMiKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNo
b3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLnNob3duKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0aW9u
KCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuaGlkZGVuKCk7
CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5oaWRkZW4uY2Fs
bCh0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQor
ICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVW
aWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQuY2FsbCh0aGlzKTsKIApAQCAtMTIzLDcgKzExOCw3
IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB9CiAKICAgICAgICAgdGhpcy5fcHJvY2Vzc1BlbmRpbmdSZWNvcmRzKCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsKQEAgLTE0OSwz
OCArMTQ0LDM4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHBhdGhDb21wb25lbnRzOwotICAgIH0sCisg
ICAgfQogCi0gICAgbWF0Y2hUcmVlRWxlbWVudEFnYWluc3RDdXN0b21GaWx0ZXJzOiBmdW5jdGlv
bih0cmVlRWxlbWVudCkKKyAgICBtYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnMo
dHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGF0YUdyaWQudHJlZUVs
ZW1lbnRNYXRjaGVzQWN0aXZlU2NvcGVGaWx0ZXJzKHRyZWVFbGVtZW50KTsKLSAgICB9LAorICAg
IH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgcmVzZXQoKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUucmVzZXQuY2FsbCh0aGlzKTsKIAog
ICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZXNldCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8g
UHJvdGVjdGVkCiAKLSAgICB0cmVlRWxlbWVudFBhdGhDb21wb25lbnRTZWxlY3RlZDogZnVuY3Rp
b24oZXZlbnQpCisgICAgdHJlZUVsZW1lbnRQYXRoQ29tcG9uZW50U2VsZWN0ZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhpcy5fZGF0YUdyaWQuZGF0YUdyaWRO
b2RlRm9yVHJlZUVsZW1lbnQoZXZlbnQuZGF0YS5wYXRoQ29tcG9uZW50LmdlbmVyYWxUcmVlRWxl
bWVudCk7CiAgICAgICAgIGlmICghZGF0YUdyaWROb2RlKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBkYXRhR3JpZE5vZGUucmV2ZWFsQW5kU2VsZWN0KCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBkYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisg
ICAgZGF0YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQodHJlZUVsZW1lbnQpCiAgICAgewogICAgICAg
ICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGVUcmVl
RWxlbWVudCkKICAgICAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGVOb2Rl
RGF0YUdyaWROb2RlKHRyZWVFbGVtZW50LnByb2ZpbGVOb2RlLCB0aGlzLnplcm9UaW1lLCB0aGlz
LnN0YXJ0VGltZSwgdGhpcy5lbmRUaW1lKTsKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBwb3B1bGF0ZVByb2ZpbGVOb2RlVHJlZUVsZW1lbnQ6IGZ1bmN0aW9uKHRy
ZWVFbGVtZW50KQorICAgIHBvcHVsYXRlUHJvZmlsZU5vZGVUcmVlRWxlbWVudCh0cmVlRWxlbWVu
dCkKICAgICB7CiAgICAgICAgIHZhciB6ZXJvVGltZSA9IHRoaXMuemVyb1RpbWU7CiAgICAgICAg
IHZhciBzdGFydFRpbWUgPSB0aGlzLnN0YXJ0VGltZTsKQEAgLTE5MSwxMSArMTg2LDExIEBAIFdl
Ykluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dmFyIHByb2ZpbGVOb2RlRGF0YUdyaWROb2RlID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9maWxlTm9k
ZURhdGFHcmlkTm9kZShjaGlsZFByb2ZpbGVOb2RlLCB6ZXJvVGltZSwgc3RhcnRUaW1lLCBlbmRU
aW1lKTsKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZFJvd0luU29ydE9yZGVyKHByb2Zp
bGVOb2RlVHJlZUVsZW1lbnQsIHByb2ZpbGVOb2RlRGF0YUdyaWROb2RlLCB0cmVlRWxlbWVudCk7
CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAgIF9wcm9j
ZXNzUGVuZGluZ1JlY29yZHM6IGZ1bmN0aW9uKCkKKyAgICBfcHJvY2Vzc1BlbmRpbmdSZWNvcmRz
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcGVuZGluZ1JlY29yZHMubGVuZ3RoKQogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtMjI0LDkgKzIxOSw5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRU
aW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fcGVu
ZGluZ1JlY29yZHMgPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIF9zY3JpcHRUaW1lbGluZVJl
Y29yZEFkZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfc2NyaXB0VGltZWxpbmVSZWNvcmRBZGRl
ZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzY3JpcHRUaW1lbGluZVJlY29yZCA9IGV2ZW50
LmRhdGEucmVjb3JkOwogICAgICAgICBjb25zb2xlLmFzc2VydChzY3JpcHRUaW1lbGluZVJlY29y
ZCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZCk7CkBAIC0yMzQs
MjUgKzIyOSwyNSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fcGVuZGluZ1JlY29yZHMucHVzaChzY3JpcHRUaW1lbGluZVJlY29y
ZCk7CiAKICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCi0gICAg
X2RhdGFHcmlkRmlsdGVyc0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlk
RmlsdGVyc0RpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1l
bGluZVNpZGViYXJQYW5lbC51cGRhdGVGaWx0ZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9k
YXRhR3JpZE5vZGVTZWxlY3RlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RhdGFHcmlkTm9kZVNl
bGVjdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRz
RGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF90cmVlRWxlbWVudERlc2VsZWN0ZWQ6
IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAgIF90cmVlRWxlbWVudERlc2VsZWN0ZWQodHJlZUVs
ZW1lbnQpCiAgICAgewogICAgICAgICBpZiAodHJlZUVsZW1lbnQuc3RhdHVzKQogICAgICAgICAg
ICAgdHJlZUVsZW1lbnQuc3RhdHVzID0gIiI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdHJlZUVs
ZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNlbGVjdGVkQnlVc2VyKQorICAg
IF90cmVlRWxlbWVudFNlbGVjdGVkKHRyZWVFbGVtZW50LCBzZWxlY3RlZEJ5VXNlcikKICAgICB7
CiAgICAgICAgIGlmICh0aGlzLl9kYXRhR3JpZC5zaG91bGRJZ25vcmVTZWxlY3Rpb25FdmVudCgp
KQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjc4LDkgKzI3Myw5IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRUaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIFdlYkluc3BlY3Rvci5y
ZXNvdXJjZVNpZGViYXJQYW5lbC5zaG93T3JpZ2luYWxPckZvcm1hdHRlZFNvdXJjZUNvZGVMb2Nh
dGlvbihzb3VyY2VDb2RlTG9jYXRpb24pOwogICAgICAgICB0aGlzLl91cGRhdGVUcmVlRWxlbWVu
dFdpdGhDbG9zZUJ1dHRvbih0cmVlRWxlbWVudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdXBk
YXRlVHJlZUVsZW1lbnRXaXRoQ2xvc2VCdXR0b246IGZ1bmN0aW9uKHRyZWVFbGVtZW50KQorICAg
IF91cGRhdGVUcmVlRWxlbWVudFdpdGhDbG9zZUJ1dHRvbih0cmVlRWxlbWVudCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9jbG9zZVN0YXR1c0J1dHRvbikgewogICAgICAgICAgICAgdHJlZUVs
ZW1lbnQuc3RhdHVzID0gdGhpcy5fY2xvc2VTdGF0dXNCdXR0b24uZWxlbWVudDsKQEAgLTI5Myw5
ICsyODgsOSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCA9PT0gdGhpcy5uYXZpZ2F0aW9uU2lkZWJhclRy
ZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fdXBk
YXRlVHJlZUVsZW1lbnRXaXRoQ2xvc2VCdXR0b24odHJlZUVsZW1lbnQpOwogICAgICAgICB9LmJp
bmQodGhpcykpOwotICAgIH0sCisgICAgfQogCi0gICAgX2Nsb3NlU3RhdHVzQnV0dG9uQ2xpY2tl
ZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2Nsb3NlU3RhdHVzQnV0dG9uQ2xpY2tlZChldmVudCkK
ICAgICB7CiAgICAgICAgIHRoaXMubmF2aWdhdGlvblNpZGViYXJUcmVlT3V0bGluZS5zZWxlY3Rl
ZFRyZWVFbGVtZW50LmRlc2VsZWN0KCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZVNp
ZGViYXJQYW5lbC5zaG93VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUodGhpcy5yZXByZXNlbnRlZE9i
amVjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9TZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU2VjdGlvbi5qcwppbmRleCAxZTY0Y2YyLi41OTk4MjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TZWN0aW9uLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NlY3Rpb24uanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDUxICsy
Myw0OSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5TZWN0aW9uID0gZnVuY3Rpb24odGl0bGUsIHN1YnRpdGxlKQorV2ViSW5zcGVjdG9y
LlNlY3Rpb24gPSBjbGFzcyBTZWN0aW9uIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewot
ICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNs
YXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0
aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcih0aXRsZSwgc3VidGl0bGUpCisgICAgeworICAgICAgICBz
dXBlcigpOwogCi0gICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJzZWN0aW9uIjsKLSAgICB0aGlzLmVs
ZW1lbnQuX3NlY3Rpb24gPSB0aGlzOworICAgICAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTmFtZSA9ICJz
ZWN0aW9uIjsKKyAgICAgICAgdGhpcy5lbGVtZW50Ll9zZWN0aW9uID0gdGhpczsKIAotICAgIGlm
ICh0eXBlb2YgdGl0bGUgPT09ICJzdHJpbmciIHx8IHRpdGxlIGluc3RhbmNlb2YgTm9kZSB8fCB0
eXBlb2Ygc3VidGl0bGUgPT09ICJzdHJpbmciKSB7Ci0gICAgICAgIHRoaXMuaGVhZGVyRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLmhlYWRlckVs
ZW1lbnQuY2xhc3NOYW1lID0gImhlYWRlciI7CisgICAgICAgIGlmICh0eXBlb2YgdGl0bGUgPT09
ICJzdHJpbmciIHx8IHRpdGxlIGluc3RhbmNlb2YgTm9kZSB8fCB0eXBlb2Ygc3VidGl0bGUgPT09
ICJzdHJpbmciKSB7CisgICAgICAgICAgICB0aGlzLmhlYWRlckVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHRoaXMuaGVhZGVyRWxlbWVudC5jbGFz
c05hbWUgPSAiaGVhZGVyIjsKIAotICAgICAgICB0aGlzLnRpdGxlRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLnRpdGxlRWxlbWVudC5jbGFzc05h
bWUgPSAidGl0bGUiOworICAgICAgICAgICAgdGhpcy50aXRsZUVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgICAgIHRoaXMudGl0bGVFbGVtZW50LmNsYXNz
TmFtZSA9ICJ0aXRsZSI7CiAKLSAgICAgICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQuY2xh
c3NOYW1lID0gInN1YnRpdGxlIjsKKyAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgICAgICB0aGlzLnN1YnRpdGxl
RWxlbWVudC5jbGFzc05hbWUgPSAic3VidGl0bGUiOwogCi0gICAgICAgIHRoaXMuaGVhZGVyRWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLnN1YnRpdGxlRWxlbWVudCk7Ci0gICAgICAgIHRoaXMuaGVh
ZGVyRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnRpdGxlRWxlbWVudCk7CisgICAgICAgICAgICB0
aGlzLmhlYWRlckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5zdWJ0aXRsZUVsZW1lbnQpOworICAg
ICAgICAgICAgdGhpcy5oZWFkZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMudGl0bGVFbGVtZW50
KTsKIAotICAgICAgICB0aGlzLmhlYWRlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCB0aGlzLmhhbmRsZUNsaWNrLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICAgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuaGVhZGVyRWxlbWVudCk7CisgICAgICAgICAgICB0aGlzLmhl
YWRlckVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLmhhbmRsZUNsaWNrLmJp
bmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLmhlYWRlckVsZW1lbnQpOwogCi0gICAgICAgIHRoaXMudGl0bGUgPSB0aXRsZTsKLSAgICAg
ICAgdGhpcy5zdWJ0aXRsZSA9IHN1YnRpdGxlOwotICAgIH0gZWxzZQotICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgibm8taGVhZGVyIik7CisgICAgICAgICAgICB0aGlzLnRpdGxl
ID0gdGl0bGU7CisgICAgICAgICAgICB0aGlzLnN1YnRpdGxlID0gc3VidGl0bGU7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm5vLWhlYWRl
ciIpOwogCi0gICAgdGhpcy5fZXhwYW5kZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fZXhwYW5k
ZWQgPSBmYWxzZTsKIAotICAgIGlmICghdGhpcy5oZWFkZXJFbGVtZW50KQotICAgICAgICB0aGlz
LmV4cGFuZCgpOwotfTsKKyAgICAgICAgaWYgKCF0aGlzLmhlYWRlckVsZW1lbnQpCisgICAgICAg
ICAgICB0aGlzLmV4cGFuZCgpOworICAgIH0KIAotV2ViSW5zcGVjdG9yLlNlY3Rpb24uRXZlbnQg
PSB7Ci0gICAgVmlzaWJsZUNvbnRlbnREaWRDaGFuZ2U6ICJzZWN0aW9uLXZpc2libGUtY29udGVu
dC1kaWQtY2hhbmdlIgotfTsKKyAgICAvLyBQdWJsaWMKIAotV2ViSW5zcGVjdG9yLlNlY3Rpb24u
cHJvdG90eXBlID0gewogICAgIGdldCB0aXRsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fdGl0bGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgdGl0bGUoeCkKICAgICB7CkBAIC04
MCwxMiArNzgsMTIgQEAgV2ViSW5zcGVjdG9yLlNlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgdGhpcy50aXRsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoeCk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgIHRoaXMudGl0bGVFbGVtZW50LnRleHRDb250ZW50ID0geDsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBzdWJ0aXRsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3Vi
dGl0bGU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc3VidGl0bGUoeCkKICAgICB7CkBAIC05
Myw3ICs5MSw3IEBAIFdlYkluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgdGhpcy5fc3VidGl0bGUgPSB4OwogICAgICAgICB0aGlzLnN1
YnRpdGxlRWxlbWVudC50ZXh0Q29udGVudCA9IHg7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
c3VidGl0bGVBc1RleHRGb3JUZXN0KCkKICAgICB7CkBAIC0xMDUsMTIgKzEwMywxMiBAQCBXZWJJ
bnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgcmVzdWx0ICs9
IGxpbmtEYXRhOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgZXhwYW5kZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2V4
cGFuZGVkOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGV4cGFuZGVkKHgpCiAgICAgewpAQCAt
MTE4LDEyICsxMTYsMTIgQEAgV2ViSW5zcGVjdG9yLlNlY3Rpb24ucHJvdG90eXBlID0gewogICAg
ICAgICAgICAgdGhpcy5leHBhbmQoKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5j
b2xsYXBzZSgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHBvcHVsYXRlZCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fcG9wdWxhdGVkOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHBvcHVsYXRlZCh4KQogICAgIHsKQEAgLTEzMiwxMiArMTMwLDEyIEBAIFdlYkluc3BlY3Rvci5T
ZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMub25wb3B1bGF0ZSgpOwogICAg
ICAgICAgICAgdGhpcy5fcG9wdWxhdGVkID0gdHJ1ZTsKICAgICAgICAgfQotICAgIH0sCisgICAg
fQogCi0gICAgb25wb3B1bGF0ZTogZnVuY3Rpb24oKQorICAgIG9ucG9wdWxhdGUoKQogICAgIHsK
ICAgICAgICAgLy8gT3ZlcnJpZGVuIGJ5IHN1YmNsYXNzZXMuCi0gICAgfSwKKyAgICB9CiAKICAg
ICBnZXQgZmlyc3RTaWJsaW5nKCkKICAgICB7CkBAIC0xNTMsNyArMTUxLDcgQEAgV2ViSW5zcGVj
dG9yLlNlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG51
bGw7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgbGFzdFNpYmxpbmcoKQogICAgIHsKQEAgLTE2
OSw3ICsxNjcsNyBAQCBXZWJJbnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAg
IH0KIAogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBuZXh0
U2libGluZygpCiAgICAgewpAQCAtMTc5LDcgKzE3Nyw3IEBAIFdlYkluc3BlY3Rvci5TZWN0aW9u
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfSB3aGlsZSAoY3VyRWxlbWVudCAmJiAhY3VyRWxlbWVu
dC5fc2VjdGlvbik7CiAKICAgICAgICAgcmV0dXJuIGN1ckVsZW1lbnQgPyBjdXJFbGVtZW50Ll9z
ZWN0aW9uIDogbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcmV2aW91c1NpYmxpbmco
KQogICAgIHsKQEAgLTE4OSw5ICsxODcsOSBAQCBXZWJJbnNwZWN0b3IuU2VjdGlvbi5wcm90b3R5
cGUgPSB7CiAgICAgICAgIH0gd2hpbGUgKGN1ckVsZW1lbnQgJiYgIWN1ckVsZW1lbnQuX3NlY3Rp
b24pOwogCiAgICAgICAgIHJldHVybiBjdXJFbGVtZW50ID8gY3VyRWxlbWVudC5fc2VjdGlvbiA6
IG51bGw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBleHBhbmQ6IGZ1bmN0aW9uKCkKKyAgICBleHBh
bmQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2V4cGFuZGVkKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtMjAzLDI2ICsyMDEsMjggQEAgV2ViSW5zcGVjdG9yLlNlY3Rpb24ucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fcG9wdWxhdGVkID0gdHJ1ZTsKICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
U2VjdGlvbi5FdmVudC5WaXNpYmxlQ29udGVudERpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBjb2xsYXBzZTogZnVuY3Rpb24oKQorICAgIGNvbGxhcHNlKCkKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5fZXhwYW5kZWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMu
X2V4cGFuZGVkID0gZmFsc2U7CiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KCJleHBhbmRlZCIpOwotICAgIH0sCisgICAgfQogCi0gICAgdG9nZ2xlRXhwYW5kZWQ6IGZ1bmN0
aW9uKCkKKyAgICB0b2dnbGVFeHBhbmRlZCgpCiAgICAgewogICAgICAgICB0aGlzLmV4cGFuZGVk
ID0gIXRoaXMuZXhwYW5kZWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoYW5kbGVDbGljazogZnVu
Y3Rpb24oZSkKKyAgICBoYW5kbGVDbGljayhlKQogICAgIHsKICAgICAgICAgdGhpcy50b2dnbGVF
eHBhbmRlZCgpOwogICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwogICAgIH0KIH07CiAKLVdl
Ykluc3BlY3Rvci5TZWN0aW9uLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5TZWN0aW9uLkV2ZW50ID0geworICAgIFZpc2li
bGVDb250ZW50RGlkQ2hhbmdlOiAic2VjdGlvbi12aXNpYmxlLWNvbnRlbnQtZGlkLWNoYW5nZSIK
K307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Tb3VyY2VDb2RlVGltZWxpbmVUaW1lbGluZURhdGFHcmlkTm9kZS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5l
RGF0YUdyaWROb2RlLmpzCmluZGV4IGEwMjEyMzAuLmQyZGE1OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRp
bWVsaW5lRGF0YUdyaWROb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIz
LDQxICsyMywzNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LVdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUaW1lbGluZURhdGFHcmlkTm9kZSA9IGZ1
bmN0aW9uKHNvdXJjZUNvZGVUaW1lbGluZSwgZ3JhcGhEYXRhU291cmNlKQorV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUaW1lbGluZVRpbWVsaW5lRGF0YUdyaWROb2RlID0gY2xhc3MgU291cmNlQ29k
ZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuVGltZWxp
bmVEYXRhR3JpZE5vZGUKIHsKLSAgICBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUu
Y2FsbCh0aGlzLCB0cnVlLCBncmFwaERhdGFTb3VyY2UpOwotCi0gICAgdGhpcy5fc291cmNlQ29k
ZVRpbWVsaW5lID0gc291cmNlQ29kZVRpbWVsaW5lOwotICAgIHRoaXMuX3NvdXJjZUNvZGVUaW1l
bGluZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRB
ZGRlZCwgdGhpcy5fdGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7Ci19OwotCi0vLyBGSVhNRTog
TW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MgYW5kIHdlIGNhbiByZW1vdmUg
dGhpcy4KLVdlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVjYXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rp
b25zKFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlVGltZWxpbmVUaW1lbGluZURhdGFHcmlkTm9kZSk7
CisgICAgY29uc3RydWN0b3Ioc291cmNlQ29kZVRpbWVsaW5lLCBncmFwaERhdGFTb3VyY2UpCisg
ICAgeworICAgICAgICBzdXBlcih0cnVlLCBncmFwaERhdGFTb3VyY2UpOwogCi1XZWJJbnNwZWN0
b3IuU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRpbWVsaW5lVGltZWxpbmVE
YXRhR3JpZE5vZGUsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3Jp
ZE5vZGUucHJvdG90eXBlLAorICAgICAgICB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmUgPSBzb3Vy
Y2VDb2RlVGltZWxpbmU7CisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVUaW1lbGluZS5hZGRFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZS5FdmVudC5SZWNvcmRBZGRlZCwgdGhpcy5f
dGltZWxpbmVSZWNvcmRBZGRlZCwgdGhpcyk7CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAg
ICBnZXQgcmVjb3JkcygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZVRp
bWVsaW5lLnJlY29yZHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc291cmNlQ29kZVRpbWVs
aW5lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmU7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAgICAgewogICAgICAgICByZXR1cm4ge2dy
YXBoOiB0aGlzLl9zb3VyY2VDb2RlVGltZWxpbmUuc3RhcnRUaW1lfTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIFByaXZhdGUKIAotICAgIF90aW1lbGluZVJlY29yZEFkZGVkOiBmdW5jdGlvbihl
dmVudCkKKyAgICBfdGltZWxpbmVSZWNvcmRBZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLmlzUmVjb3JkVmlzaWJsZShldmVudC5kYXRhLnJlY29yZCkpCiAgICAgICAgICAgICB0
aGlzLm5lZWRzR3JhcGhSZWZyZXNoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0Q29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0Q29udGVudFZpZXcuanMKaW5kZXggZDFj
NTYyNy4uNTgyYzg3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVGV4dENvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMTYxICsyMywxNTYg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuVGV4dENvbnRlbnRWaWV3ID0gZnVuY3Rpb24oc3RyaW5nLCBtaW1lVHlwZSkKK1dlYkluc3Bl
Y3Rvci5UZXh0Q29udGVudFZpZXcgPSBjbGFzcyBUZXh0Q29udGVudFZpZXcgZXh0ZW5kcyBXZWJJ
bnNwZWN0b3IuQ29udGVudFZpZXcKIHsKLSAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuY2Fs
bCh0aGlzLCBzdHJpbmcpOwotCi0gICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5z
cGVjdG9yLlRleHRDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl90ZXh0
RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yOwotICAgIHRoaXMuX3RleHRFZGl0
b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5OdW1iZXJP
ZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMuX251bWJlck9mU2VhcmNoUmVzdWx0c0RpZENo
YW5nZSwgdGhpcyk7Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50LkZvcm1hdHRpbmdEaWRDaGFuZ2UsIHRoaXMuX3RleHRF
ZGl0b3JGb3JtYXR0aW5nRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICBjb25zdHJ1Y3RvcihzdHJpbmcs
IG1pbWVUeXBlKQorICAgIHsKKyAgICAgICAgc3VwZXIoc3RyaW5nKTsKIAotICAgIHRoaXMuZWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLl90ZXh0RWRpdG9yLmVsZW1lbnQpOworICAgICAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGV4dCIpOwogCi0gICAgdGhpcy5fdGV4dEVkaXRvci5y
ZWFkT25seSA9IHRydWU7Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5taW1lVHlwZSA9IG1pbWVUeXBl
OwotICAgIHRoaXMuX3RleHRFZGl0b3Iuc3RyaW5nID0gc3RyaW5nOworICAgICAgICB0aGlzLl90
ZXh0RWRpdG9yID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yOworICAgICAgICB0aGlzLl90
ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQu
TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0aGlzLl9udW1iZXJPZlNlYXJjaFJlc3Vs
dHNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlz
dGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuRm9ybWF0dGluZ0RpZENoYW5nZSwg
dGhpcy5fdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRDaGFuZ2UsIHRoaXMpOwogCi0gICAgdmFyIGN1
cmxleUJyYWNlc0ltYWdlOwotICAgIGlmIChXZWJJbnNwZWN0b3IuUGxhdGZvcm0uaXNMZWdhY3lN
YWNPUykKLSAgICAgICAgY3VybGV5QnJhY2VzSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL0xlZ2FjeS9O
YXZpZ2F0aW9uSXRlbUN1cmxleUJyYWNlcy5zdmciLCB3aWR0aDogMTYsIGhlaWdodDogMTZ9Owot
ICAgIGVsc2UKLSAgICAgICAgY3VybGV5QnJhY2VzSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL05hdmln
YXRpb25JdGVtQ3VybGV5QnJhY2VzLnN2ZyIsIHdpZHRoOiAxMywgaGVpZ2h0OiAxM307CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90ZXh0RWRpdG9yLmVsZW1lbnQpOwog
Ci0gICAgdmFyIHRvb2xUaXAgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByZXR0eSBwcmludCIp
OwotICAgIHZhciBhY3RpdmF0ZWRUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcmln
aW5hbCBmb3JtYXR0aW5nIik7Ci0gICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9u
SXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgicHJl
dHR5LXByaW50IiwgdG9vbFRpcCwgYWN0aXZhdGVkVG9vbFRpcCwgY3VybGV5QnJhY2VzSW1hZ2Uu
c3JjLCBjdXJsZXlCcmFjZXNJbWFnZS53aWR0aCwgY3VybGV5QnJhY2VzSW1hZ2UuaGVpZ2h0KTsK
LSAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMu
X3RvZ2dsZVByZXR0eVByaW50LCB0aGlzKTsKLSAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5h
dmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhbkJlRm9ybWF0dGVkKCk7
CisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmVhZE9ubHkgPSB0cnVlOworICAgICAgICB0aGlz
Ll90ZXh0RWRpdG9yLm1pbWVUeXBlID0gbWltZVR5cGU7CisgICAgICAgIHRoaXMuX3RleHRFZGl0
b3Iuc3RyaW5nID0gc3RyaW5nOwogCi0gICAgdmFyIHRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiU2hvdyB0eXBlIGluZm9ybWF0aW9uIik7Ci0gICAgdmFyIGFjdGl2YXRlZFRv
b2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0eXBlIGluZm9ybWF0aW9u
Iik7Ci0gICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5z
cGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlw
VHlwZXMsIGFjdGl2YXRlZFRvb2xUaXBUeXBlcywgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVz
LnN2ZyIsIDEzLCAxNCk7Ci0gICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
ZW5hYmxlZCA9IGZhbHNlOwotfTsKKyAgICAgICAgdmFyIGN1cmxleUJyYWNlc0ltYWdlOworICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MpCisgICAgICAgICAg
ICBjdXJsZXlCcmFjZXNJbWFnZSA9IHtzcmM6ICJJbWFnZXMvTGVnYWN5L05hdmlnYXRpb25JdGVt
Q3VybGV5QnJhY2VzLnN2ZyIsIHdpZHRoOiAxNiwgaGVpZ2h0OiAxNn07CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGN1cmxleUJyYWNlc0ltYWdlID0ge3NyYzogIkltYWdlcy9OYXZpZ2F0aW9u
SXRlbUN1cmxleUJyYWNlcy5zdmciLCB3aWR0aDogMTMsIGhlaWdodDogMTN9OwogCi1XZWJJbnNw
ZWN0b3IuVGV4dENvbnRlbnRWaWV3LlN0eWxlQ2xhc3NOYW1lID0gInRleHQiOworICAgICAgICB2
YXIgdG9vbFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiUHJldHR5IHByaW50Iik7CisgICAg
ICAgIHZhciBhY3RpdmF0ZWRUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcmlnaW5h
bCBmb3JtYXR0aW5nIik7CisgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlv
bkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9yLkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInBy
ZXR0eS1wcmludCIsIHRvb2xUaXAsIGFjdGl2YXRlZFRvb2xUaXAsIGN1cmxleUJyYWNlc0ltYWdl
LnNyYywgY3VybGV5QnJhY2VzSW1hZ2Uud2lkdGgsIGN1cmxleUJyYWNlc0ltYWdlLmhlaWdodCk7
CisgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tlZCwg
dGhpcy5fdG9nZ2xlUHJldHR5UHJpbnQsIHRoaXMpOworICAgICAgICB0aGlzLl9wcmV0dHlQcmlu
dEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhbkJlRm9y
bWF0dGVkKCk7CiAKLVdlYkluc3BlY3Rvci5UZXh0Q29udGVudFZpZXcucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGV4dENvbnRlbnRWaWV3LAorICAgICAgICB2
YXIgdG9vbFRpcFR5cGVzID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTaG93IHR5cGUgaW5mb3Jt
YXRpb24iKTsKKyAgICAgICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiSGlkZSB0eXBlIGluZm9ybWF0aW9uIik7CisgICAgICAgIHRoaXMuX3Nob3dU
eXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRv
bk5hdmlnYXRpb25JdGVtKCJzaG93LXR5cGVzIiwgdG9vbFRpcFR5cGVzLCBhY3RpdmF0ZWRUb29s
VGlwVHlwZXMsICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UeXBlcy5zdmciLCAxMywgMTQpOworICAg
ICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7
CisgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgdGV4dEVkaXRvcigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVkaXRvcjsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBuYXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0aGlzLl9wcmV0dHlQ
cmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLCB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9u
SXRlbV07Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxQb3NpdGlvbjogZnVuY3Rpb24ocG9z
aXRpb24sIHRleHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKQorICAgIHJldmVhbFBv
c2l0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3IucmV2ZWFsUG9zaXRpb24ocG9zaXRpb24sIHRl
eHRSYW5nZVRvU2VsZWN0LCBmb3JjZVVuZm9ybWF0dGVkKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHNob3duOiBmdW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93bi5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRo
aXMuX3RleHRFZGl0b3Iuc2hvd24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVu
Y3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcucHJvdG90eXBlLmhpZGRlbi5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3RleHRF
ZGl0b3IuaGlkZGVuKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkK
KyAgICBjbG9zZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5jbG9zZWQuY2FsbCh0aGlzKTsKIAogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmNs
b3NlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNTYXZlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNhdmVEYXRhKCkK
ICAgICB7CiAgICAgICAgIHZhciB1cmwgPSAid2ViLWluc3BlY3RvcjovLy8iICsgZW5jb2RlVVJJ
KFdlYkluc3BlY3Rvci5VSVN0cmluZygiVW50aXRsZWQiKSkgKyAiLnR4dCI7CiAgICAgICAgIHJl
dHVybiB7dXJsLCBjb250ZW50OiB0aGlzLl90ZXh0RWRpdG9yLnN0cmluZywgZm9yY2VTYXZlQXM6
IHRydWV9OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU2VhcmNoKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IG51bWJlck9m
U2VhcmNoUmVzdWx0cygpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdGV4dEVkaXRvci5u
dW1iZXJPZlNlYXJjaFJlc3VsdHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgaGFzUGVyZm9y
bWVkU2VhcmNoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWRpdG9yLmN1cnJl
bnRTZWFyY2hRdWVyeSAhPT0gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCBhdXRvbWF0
aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQocmV2ZWFsKQogICAgIHsKICAgICAgICAgdGhp
cy5fdGV4dEVkaXRvci5hdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQgPSByZXZl
YWw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwZXJmb3JtU2VhcmNoOiBmdW5jdGlvbihxdWVyeSkK
KyAgICBwZXJmb3JtU2VhcmNoKHF1ZXJ5KQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRv
ci5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlYXJjaENsZWFy
ZWQ6IGZ1bmN0aW9uKCkKKyAgICBzZWFyY2hDbGVhcmVkKCkKICAgICB7CiAgICAgICAgIHRoaXMu
X3RleHRFZGl0b3Iuc2VhcmNoQ2xlYXJlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgc2VhcmNo
UXVlcnlXaXRoU2VsZWN0aW9uOiBmdW5jdGlvbigpCisgICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0
aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90ZXh0RWRpdG9yLnNlYXJjaFF1ZXJ5
V2l0aFNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsUHJldmlvdXNTZWFy
Y2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQorICAgIHJldmVhbFByZXZpb3VzU2VhcmNo
UmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZXZl
YWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlvbihjaGFuZ2VGb2N1cykKKyAgICByZXZl
YWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4
dEVkaXRvci5yZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dCgpCiAg
ICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnVwZGF0ZUxheW91dCgpOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3RvZ2dsZVByZXR0eVByaW50OiBmdW5jdGlv
bihldmVudCkKKyAgICBfdG9nZ2xlUHJldHR5UHJpbnQoZXZlbnQpCiAgICAgewogICAgICAgICB2
YXIgYWN0aXZhdGVkID0gIXRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0
aXZhdGVkOwogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmZvcm1hdHRlZCA9IGFjdGl2YXRlZDsK
LSAgICB9LAorICAgIH0KIAotICAgIF90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5nZTogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX3RleHRFZGl0b3JGb3JtYXR0aW5nRGlkQ2hhbmdlKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbS5hY3Rp
dmF0ZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmZvcm1hdHRlZDsKLSAgICB9LAorICAgIH0KIAotICAg
IF9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9u
dW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQu
TnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0
b3IuVGV4dENvbnRlbnRWaWV3LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5q
cwppbmRleCAxNzI4NzM0Li41MDA2YTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250
ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMjMsNjYgKzIzLDYzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gZnVu
Y3Rpb24ocmVzb3VyY2UpCitXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBj
bGFzcyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5SZXNvdXJj
ZUNvbnRlbnRWaWV3CiB7Ci0gICAgV2ViSW5zcGVjdG9yLlJlc291cmNlQ29udGVudFZpZXcuY2Fs
bCh0aGlzLCByZXNvdXJjZSwgV2ViSW5zcGVjdG9yLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LlN0
eWxlQ2xhc3NOYW1lKTsKLQotICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlNvdXJjZUNvZGUuRXZlbnQuQ29udGVudERpZENoYW5nZSwgdGhpcy5fc291cmNlQ29kZUNv
bnRlbnREaWRDaGFuZ2UsIHRoaXMpOwotCi0gICAgdGhpcy5fdGV4dEVkaXRvciA9IG5ldyBXZWJJ
bnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3IocmVzb3VyY2UpOwotICAgIHRoaXMuX3RleHRF
ZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5FeGVj
dXRpb25MaW5lTnVtYmVyRGlkQ2hhbmdlLCB0aGlzLl9leGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hh
bmdlLCB0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0
aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMpOwotICAgIHRoaXMuX3Rl
eHRFZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGV4dEVkaXRvci5FdmVudC5D
b250ZW50RGlkQ2hhbmdlLCB0aGlzLl90ZXh0RWRpdG9yQ29udGVudERpZENoYW5nZSwgdGhpcyk7
Ci0gICAgdGhpcy5fdGV4dEVkaXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UZXh0
RWRpdG9yLkV2ZW50LkZvcm1hdHRpbmdEaWRDaGFuZ2UsIHRoaXMuX3RleHRFZGl0b3JGb3JtYXR0
aW5nRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnRXaWxsUG9w
dWxhdGUsIHRoaXMuX2NvbnRlbnRXaWxsUG9wdWxhdGUsIHRoaXMpOwotICAgIHRoaXMuX3RleHRF
ZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU291cmNlQ29kZVRleHRFZGl0b3Iu
RXZlbnQuQ29udGVudERpZFBvcHVsYXRlLCB0aGlzLl9jb250ZW50RGlkUG9wdWxhdGUsIHRoaXMp
OwotCi0gICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRBZGRlZCwgdGhpcy5fcHJvYmVTZXRz
Q2hhbmdlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIuRXZlbnQuUHJvYmVTZXRSZW1vdmVkLCB0
aGlzLl9wcm9iZVNldHNDaGFuZ2VkLCB0aGlzKTsKLQotICAgIHZhciBjdXJsZXlCcmFjZXNJbWFn
ZTsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MpCi0gICAgICAg
IGN1cmxleUJyYWNlc0ltYWdlID0ge3NyYzogIkltYWdlcy9MZWdhY3kvTmF2aWdhdGlvbkl0ZW1D
dXJsZXlCcmFjZXMuc3ZnIiwgd2lkdGg6IDE2LCBoZWlnaHQ6IDE2fTsKLSAgICBlbHNlCi0gICAg
ICAgIGN1cmxleUJyYWNlc0ltYWdlID0ge3NyYzogIkltYWdlcy9OYXZpZ2F0aW9uSXRlbUN1cmxl
eUJyYWNlcy5zdmciLCB3aWR0aDogMTMsIGhlaWdodDogMTN9OwotCi0gICAgdmFyIHRvb2xUaXAg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlByZXR0eSBwcmludCIpOwotICAgIHZhciBhY3RpdmF0
ZWRUb29sVGlwID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJPcmlnaW5hbCBmb3JtYXR0aW5nIik7
Ci0gICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNw
ZWN0b3IuQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbSgicHJldHR5LXByaW50IiwgdG9vbFRp
cCwgYWN0aXZhdGVkVG9vbFRpcCwgY3VybGV5QnJhY2VzSW1hZ2Uuc3JjLCBjdXJsZXlCcmFjZXNJ
bWFnZS53aWR0aCwgY3VybGV5QnJhY2VzSW1hZ2UuaGVpZ2h0KTsKLSAgICB0aGlzLl9wcmV0dHlQ
cmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkJ1
dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVByZXR0eVByaW50
LCB0aGlzKTsKLSAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJs
ZWQgPSBmYWxzZTsgLy8gRW5hYmxlZCB3aGVuIHRoZSB0ZXh0IGVkaXRvciBpcyBwb3B1bGF0ZWQg
d2l0aCBjb250ZW50LgotCi0gICAgdmFyIHRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2hvdyB0eXBlIGluZm9ybWF0aW9uIik7Ci0gICAgdmFyIGFjdGl2YXRlZFRvb2xUaXBU
eXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0eXBlIGluZm9ybWF0aW9uIik7Ci0g
ICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV2ViSW5zcGVjdG9y
LkFjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInNob3ctdHlwZXMiLCB0b29sVGlwVHlwZXMs
IGFjdGl2YXRlZFRvb2xUaXBUeXBlcywgIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVR5cGVzLnN2ZyIs
IDEzLCAxNCk7Ci0gICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQuQ2xpY2tl
ZCwgdGhpcy5fdG9nZ2xlVHlwZUFubm90YXRpb25zLCB0aGlzKTsKLSAgICB0aGlzLl9zaG93VHlw
ZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFsc2U7Ci0KLSAgICBXZWJJbnNwZWN0
b3Iuc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nLmFkZEV2ZW50TGlzdGVuZXIo
V2ViSW5zcGVjdG9yLlNldHRpbmcuRXZlbnQuQ2hhbmdlZCwgdGhpcy5fc2hvd0phdmFTY3JpcHRU
eXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZCwgdGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3Iu
VGV4dFJlc291cmNlQ29udGVudFZpZXcuU3R5bGVDbGFzc05hbWUgPSAidGV4dCI7Ci0KLVdlYklu
c3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5UZXh0UmVzb3VyY2VDb250ZW50VmlldywKKyAgICBjb25zdHJ1
Y3RvcihyZXNvdXJjZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlc291cmNlLCAidGV4dCIpOwor
CisgICAgICAgIHJlc291cmNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNv
ZGUuRXZlbnQuQ29udGVudERpZENoYW5nZSwgdGhpcy5fc291cmNlQ29kZUNvbnRlbnREaWRDaGFu
Z2UsIHRoaXMpOworCisgICAgICAgIHRoaXMuX3RleHRFZGl0b3IgPSBuZXcgV2ViSW5zcGVjdG9y
LlNvdXJjZUNvZGVUZXh0RWRpdG9yKHJlc291cmNlKTsKKyAgICAgICAgdGhpcy5fdGV4dEVkaXRv
ci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UZXh0RWRpdG9yLkV2ZW50LkV4ZWN1dGlv
bkxpbmVOdW1iZXJEaWRDaGFuZ2UsIHRoaXMuX2V4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2Us
IHRoaXMpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5z
cGVjdG9yLlRleHRFZGl0b3IuRXZlbnQuTnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlLCB0
aGlzLl9udW1iZXJPZlNlYXJjaFJlc3VsdHNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlz
Ll90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IuRXZl
bnQuQ29udGVudERpZENoYW5nZSwgdGhpcy5fdGV4dEVkaXRvckNvbnRlbnREaWRDaGFuZ2UsIHRo
aXMpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVj
dG9yLlRleHRFZGl0b3IuRXZlbnQuRm9ybWF0dGluZ0RpZENoYW5nZSwgdGhpcy5fdGV4dEVkaXRv
ckZvcm1hdHRpbmdEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUNvZGVUZXh0RWRpdG9yLkV2ZW50LkNv
bnRlbnRXaWxsUG9wdWxhdGUsIHRoaXMuX2NvbnRlbnRXaWxsUG9wdWxhdGUsIHRoaXMpOworICAg
ICAgICB0aGlzLl90ZXh0RWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJj
ZUNvZGVUZXh0RWRpdG9yLkV2ZW50LkNvbnRlbnREaWRQb3B1bGF0ZSwgdGhpcy5fY29udGVudERp
ZFBvcHVsYXRlLCB0aGlzKTsKKworICAgICAgICBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlByb2JlTWFuYWdlci5FdmVudC5Qcm9iZVNldEFk
ZGVkLCB0aGlzLl9wcm9iZVNldHNDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LnByb2JlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Qcm9iZU1hbmFnZXIu
RXZlbnQuUHJvYmVTZXRSZW1vdmVkLCB0aGlzLl9wcm9iZVNldHNDaGFuZ2VkLCB0aGlzKTsKKwor
ICAgICAgICB2YXIgY3VybGV5QnJhY2VzSW1hZ2U7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iu
UGxhdGZvcm0uaXNMZWdhY3lNYWNPUykKKyAgICAgICAgICAgIGN1cmxleUJyYWNlc0ltYWdlID0g
e3NyYzogIkltYWdlcy9MZWdhY3kvTmF2aWdhdGlvbkl0ZW1DdXJsZXlCcmFjZXMuc3ZnIiwgd2lk
dGg6IDE2LCBoZWlnaHQ6IDE2fTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY3VybGV5QnJh
Y2VzSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL05hdmlnYXRpb25JdGVtQ3VybGV5QnJhY2VzLnN2ZyIs
IHdpZHRoOiAxMywgaGVpZ2h0OiAxM307CisKKyAgICAgICAgdmFyIHRvb2xUaXAgPSBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIlByZXR0eSBwcmludCIpOworICAgICAgICB2YXIgYWN0aXZhdGVkVG9v
bFRpcCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiT3JpZ2luYWwgZm9ybWF0dGluZyIpOworICAg
ICAgICB0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdlYkluc3Bl
Y3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJwcmV0dHktcHJpbnQiLCB0b29sVGlw
LCBhY3RpdmF0ZWRUb29sVGlwLCBjdXJsZXlCcmFjZXNJbWFnZS5zcmMsIGN1cmxleUJyYWNlc0lt
YWdlLndpZHRoLCBjdXJsZXlCcmFjZXNJbWFnZS5oZWlnaHQpOworICAgICAgICB0aGlzLl9wcmV0
dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNrZWQsIHRoaXMuX3RvZ2dsZVByZXR0eVBy
aW50LCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcHJldHR5UHJpbnRCdXR0b25OYXZpZ2F0aW9uSXRl
bS5lbmFibGVkID0gZmFsc2U7IC8vIEVuYWJsZWQgd2hlbiB0aGUgdGV4dCBlZGl0b3IgaXMgcG9w
dWxhdGVkIHdpdGggY29udGVudC4KKworICAgICAgICB2YXIgdG9vbFRpcFR5cGVzID0gV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJTaG93IHR5cGUgaW5mb3JtYXRpb24iKTsKKyAgICAgICAgdmFyIGFj
dGl2YXRlZFRvb2xUaXBUeXBlcyA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiSGlkZSB0eXBlIGlu
Zm9ybWF0aW9uIik7CisgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVt
ID0gbmV3IFdlYkluc3BlY3Rvci5BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtKCJzaG93LXR5
cGVzIiwgdG9vbFRpcFR5cGVzLCBhY3RpdmF0ZWRUb29sVGlwVHlwZXMsICJJbWFnZXMvTmF2aWdh
dGlvbkl0ZW1UeXBlcy5zdmciLCAxMywgMTQpOworICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0
b25OYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5CdXR0b25OYXZp
Z2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl90b2dnbGVUeXBlQW5ub3RhdGlvbnMsIHRo
aXMpOworICAgICAgICB0aGlzLl9zaG93VHlwZXNCdXR0b25OYXZpZ2F0aW9uSXRlbS5lbmFibGVk
ID0gZmFsc2U7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9y
bWF0aW9uU2V0dGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TZXR0aW5nLkV2ZW50
LkNoYW5nZWQsIHRoaXMuX3Nob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZ0NoYW5n
ZWQsIHRoaXMpOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25J
dGVtcygpCiAgICAgewogICAgICAgICByZXR1cm4gW3RoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2
aWdhdGlvbkl0ZW0sIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtXTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCBtYW5hZ2VzT3duSXNzdWVzKCkKICAgICB7CiAgICAgICAgIC8v
IFNvdXJjZUNvZGVUZXh0RWRpdG9yIG1hbmFnZXMgdGhlIGlzc3Vlcywgd2UgZG9uJ3QgbmVlZCBS
ZXNvdXJjZUNvbnRlbnRWaWV3IGRvaW5nIGl0LgogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCB0ZXh0RWRpdG9yKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl90ZXh0RWRpdG9yOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN1cHBsZW1lbnRhbFJl
cHJlc2VudGVkT2JqZWN0cygpCiAgICAgewpAQCAtOTYsOTkgKzkzLDk5IEBAIFdlYkluc3BlY3Rv
ci5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBvYmpl
Y3RzLnB1c2goV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5hY3RpdmVDYWxsRnJhbWUpOwog
CiAgICAgICAgIHJldHVybiBvYmplY3RzOwotICAgIH0sCisgICAgfQogCi0gICAgcmV2ZWFsUG9z
aXRpb246IGZ1bmN0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1h
dHRlZCkKKyAgICByZXZlYWxQb3NpdGlvbihwb3NpdGlvbiwgdGV4dFJhbmdlVG9TZWxlY3QsIGZv
cmNlVW5mb3JtYXR0ZWQpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnJldmVhbFBv
c2l0aW9uKHBvc2l0aW9uLCB0ZXh0UmFuZ2VUb1NlbGVjdCwgZm9yY2VVbmZvcm1hdHRlZCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzaG93bjogZnVuY3Rpb24oKQorICAgIHNob3duKCkKICAgICB7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5zaG93
bi5jYWxsKHRoaXMpOwogCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2hvd24oKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuaGlkZGVu
LmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5oaWRkZW4oKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGNsb3NlZDogZnVuY3Rpb24oKQorICAgIGNsb3NlZCgpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3IuUmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuY2xvc2Vk
LmNhbGwodGhpcyk7CiAKICAgICAgICAgdGhpcy5yZXNvdXJjZS5yZW1vdmVFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5Tb3VyY2VDb2RlLkV2ZW50LkNvbnRlbnREaWRDaGFuZ2UsIHRoaXMuX3Nv
dXJjZUNvZGVDb250ZW50RGlkQ2hhbmdlLCB0aGlzKTsKIAogICAgICAgICB0aGlzLl90ZXh0RWRp
dG9yLmNsb3NlKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNTYXZlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNhdmVE
YXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiB7dXJsOiB0aGlzLnJlc291cmNlLnVybCwgY29u
dGVudDogdGhpcy5fdGV4dEVkaXRvci5zdHJpbmd9OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHN1cHBvcnRzU2VhcmNoKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IG51bWJlck9mU2VhcmNoUmVzdWx0cygpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fdGV4dEVkaXRvci5udW1iZXJPZlNlYXJjaFJlc3VsdHM7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgaGFzUGVyZm9ybWVkU2VhcmNoKCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl90ZXh0RWRpdG9yLmN1cnJlbnRTZWFyY2hRdWVyeSAhPT0gbnVsbDsKLSAgICB9LAor
ICAgIH0KIAogICAgIHNldCBhdXRvbWF0aWNhbGx5UmV2ZWFsRmlyc3RTZWFyY2hSZXN1bHQocmV2
ZWFsKQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5hdXRvbWF0aWNhbGx5UmV2ZWFs
Rmlyc3RTZWFyY2hSZXN1bHQgPSByZXZlYWw7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwZXJmb3Jt
U2VhcmNoOiBmdW5jdGlvbihxdWVyeSkKKyAgICBwZXJmb3JtU2VhcmNoKHF1ZXJ5KQogICAgIHsK
ICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5wZXJmb3JtU2VhcmNoKHF1ZXJ5KTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHNlYXJjaENsZWFyZWQ6IGZ1bmN0aW9uKCkKKyAgICBzZWFyY2hDbGVhcmVk
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc2VhcmNoQ2xlYXJlZCgpOwotICAg
IH0sCisgICAgfQogCi0gICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uOiBmdW5jdGlvbigpCisg
ICAgc2VhcmNoUXVlcnlXaXRoU2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll90ZXh0RWRpdG9yLnNlYXJjaFF1ZXJ5V2l0aFNlbGVjdGlvbigpOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmV2ZWFsUHJldmlvdXNTZWFyY2hSZXN1bHQ6IGZ1bmN0aW9uKGNoYW5nZUZvY3VzKQor
ICAgIHJldmVhbFByZXZpb3VzU2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQogICAgIHsKICAgICAg
ICAgdGhpcy5fdGV4dEVkaXRvci5yZXZlYWxQcmV2aW91c1NlYXJjaFJlc3VsdChjaGFuZ2VGb2N1
cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0OiBmdW5jdGlv
bihjaGFuZ2VGb2N1cykKKyAgICByZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNoYW5nZUZvY3VzKQog
ICAgIHsKICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5yZXZlYWxOZXh0U2VhcmNoUmVzdWx0KGNo
YW5nZUZvY3VzKTsKLSAgICB9LAorICAgIH0KIAotICAgIHVwZGF0ZUxheW91dDogZnVuY3Rpb24o
KQorICAgIHVwZGF0ZUxheW91dCgpCiAgICAgewogICAgICAgICB0aGlzLl90ZXh0RWRpdG9yLnVw
ZGF0ZUxheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2Nv
bnRlbnRXaWxsUG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jb250ZW50V2lsbFBvcHVs
YXRlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3RleHRFZGl0b3IuZWxlbWVudC5w
YXJlbnROb2RlID09PSB0aGlzLmVsZW1lbnQpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDMs
NjcgKzIwMCw2NSBAQCBXZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90
eXBlID0gewogCiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAg
ICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGV4dEVkaXRvci5lbGVtZW50KTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9jb250ZW50RGlkUG9wdWxhdGU6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9jb250ZW50RGlkUG9wdWxhdGUoZXZlbnQpCiAgICAgewogICAgICAgICB0aGlzLl9wcmV0
dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNh
bkJlRm9ybWF0dGVkKCk7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25J
dGVtLmVuYWJsZWQgPSB0aGlzLl90ZXh0RWRpdG9yLmNhblNob3dUeXBlQW5ub3RhdGlvbnMoKTsK
ICAgICAgICAgdGhpcy5fc2hvd1R5cGVzQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWN0aXZhdGVkID0g
V2ViSW5zcGVjdG9yLnNob3dKYXZhU2NyaXB0VHlwZUluZm9ybWF0aW9uU2V0dGluZy52YWx1ZTsK
LSAgICB9LAorICAgIH0KIAotICAgIF90b2dnbGVQcmV0dHlQcmludDogZnVuY3Rpb24oZXZlbnQp
CisgICAgX3RvZ2dsZVByZXR0eVByaW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGFjdGl2
YXRlZCA9ICF0aGlzLl9wcmV0dHlQcmludEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFjdGl2YXRlZDsK
ICAgICAgICAgdGhpcy5fdGV4dEVkaXRvci5mb3JtYXR0ZWQgPSBhY3RpdmF0ZWQ7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBfdG9nZ2xlVHlwZUFubm90YXRpb25zOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfdG9nZ2xlVHlwZUFubm90YXRpb25zKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdGV4
dEVkaXRvci50b2dnbGVUeXBlQW5ub3RhdGlvbnMoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9z
aG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRpbmdDaGFuZ2VkOiBmdW5jdGlvbihldmVu
dCkKKyAgICBfc2hvd0phdmFTY3JpcHRUeXBlSW5mb3JtYXRpb25TZXR0aW5nQ2hhbmdlZChldmVu
dCkKICAgICB7CiAgICAgICAgIHRoaXMuX3Nob3dUeXBlc0J1dHRvbk5hdmlnYXRpb25JdGVtLmFj
dGl2YXRlZCA9IFdlYkluc3BlY3Rvci5zaG93SmF2YVNjcmlwdFR5cGVJbmZvcm1hdGlvblNldHRp
bmcudmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGV4dEVkaXRvckZvcm1hdHRpbmdEaWRD
aGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90ZXh0RWRpdG9yRm9ybWF0dGluZ0RpZENoYW5n
ZShldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3ByZXR0eVByaW50QnV0dG9uTmF2aWdhdGlv
bkl0ZW0uYWN0aXZhdGVkID0gdGhpcy5fdGV4dEVkaXRvci5mb3JtYXR0ZWQ7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfc291cmNlQ29kZUNvbnRlbnREaWRDaGFuZ2U6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9zb3VyY2VDb2RlQ29udGVudERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLl9pZ25vcmVTb3VyY2VDb2RlQ29udGVudERpZENoYW5nZUV2ZW50KQogICAgICAgICAg
ICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuX3RleHRFZGl0b3Iuc3RyaW5nID0gdGhpcy5yZXNv
dXJjZS5jdXJyZW50UmV2aXNpb24uY29udGVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF90ZXh0
RWRpdG9yQ29udGVudERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3RleHRFZGl0b3JD
b250ZW50RGlkQ2hhbmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5faWdub3JlU291cmNl
Q29kZUNvbnRlbnREaWRDaGFuZ2VFdmVudCA9IHRydWU7CiAgICAgICAgIFdlYkluc3BlY3Rvci5i
cmFuY2hNYW5hZ2VyLmN1cnJlbnRCcmFuY2gucmV2aXNpb25Gb3JSZXByZXNlbnRlZE9iamVjdCh0
aGlzLnJlc291cmNlKS5jb250ZW50ID0gdGhpcy5fdGV4dEVkaXRvci5zdHJpbmc7CiAgICAgICAg
IGRlbGV0ZSB0aGlzLl9pZ25vcmVTb3VyY2VDb2RlQ29udGVudERpZENoYW5nZUV2ZW50OwotICAg
IH0sCisgICAgfQogCi0gICAgX2V4ZWN1dGlvbkxpbmVOdW1iZXJEaWRDaGFuZ2U6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIF9leGVjdXRpb25MaW5lTnVtYmVyRGlkQ2hhbmdlKGV2ZW50KQogICAgIHsK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRl
bnRWaWV3LkV2ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfbnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlOiBmdW5j
dGlvbihldmVudCkKKyAgICBfbnVtYmVyT2ZTZWFyY2hSZXN1bHRzRGlkQ2hhbmdlKGV2ZW50KQog
ICAgIHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9y
LkNvbnRlbnRWaWV3LkV2ZW50Lk51bWJlck9mU2VhcmNoUmVzdWx0c0RpZENoYW5nZSk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcHJvYmVTZXRzQ2hhbmdlZDogZnVuY3Rpb24oZXZlbnQpCisgICAg
X3Byb2JlU2V0c0NoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IGV2ZW50LmRhdGEucHJvYmVTZXQuYnJlYWtwb2ludDsKICAgICAgICAgaWYgKGJyZWFrcG9pbnQu
c291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPT09IHRoaXMucmVzb3VyY2UpCiAgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKICAgICB9
CiB9OwotCi1XZWJJbnNwZWN0b3IuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVs
aW5lRGF0YUdyaWQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZURhdGFHcmlkLmpzCmluZGV4IGI1NTliOGYuLmQ0YjM2MzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lRGF0YUdy
aWQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVEYXRhR3JpZC5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMTI1ICsyMywxMTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZCA9IGZ1
bmN0aW9uKHRyZWVPdXRsaW5lLCBjb2x1bW5zLCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxl
dGVDYWxsYmFjaykKK1dlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkID0gY2xhc3MgVGltZWxp
bmVEYXRhR3JpZCBleHRlbmRzIFdlYkluc3BlY3Rvci5EYXRhR3JpZAogewotICAgIFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZC5jYWxsKHRoaXMsIGNvbHVtbnMsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2Fs
bGJhY2spOwotCi0gICAgdGhpcy5fdHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplciA9IG5l
dyBXZWJJbnNwZWN0b3IuVHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplcih0cmVlT3V0bGlu
ZSwgdGhpcywgZGVsZWdhdGUpOworICAgIGNvbnN0cnVjdG9yKHRyZWVPdXRsaW5lLCBjb2x1bW5z
LCBkZWxlZ2F0ZSwgZWRpdENhbGxiYWNrLCBkZWxldGVDYWxsYmFjaykKKyAgICB7CisgICAgICAg
IHN1cGVyKGNvbHVtbnMsIGVkaXRDYWxsYmFjaywgZGVsZXRlQ2FsbGJhY2spOwogCi0gICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuU3R5
bGVDbGFzc05hbWUpOworICAgICAgICB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25p
emVyID0gbmV3IFdlYkluc3BlY3Rvci5UcmVlT3V0bGluZURhdGFHcmlkU3luY2hyb25pemVyKHRy
ZWVPdXRsaW5lLCB0aGlzLCBkZWxlZ2F0ZSk7CiAKLSAgICB0aGlzLl9maWx0ZXJhYmxlQ29sdW1u
cyA9IFtdOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUiKTsK
IAotICAgIC8vIENoZWNrIGlmIGFueSBvZiB0aGUgY2VsbHMgY2FuIGJlIGZpbHRlcmVkLgotICAg
IGZvciAodmFyIFtpZGVudGlmaWVyLCBjb2x1bW5dIG9mIHRoaXMuY29sdW1ucykgewotICAgICAg
ICB2YXIgc2NvcGVCYXIgPSBjb2x1bW4uc2NvcGVCYXI7Ci0gICAgICAgIGlmICghc2NvcGVCYXIp
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgdGhpcy5fZmlsdGVyYWJsZUNvbHVtbnMu
cHVzaChpZGVudGlmaWVyKTsKLSAgICAgICAgc2NvcGVCYXIuY29sdW1uSWRlbnRpZmllciA9IGlk
ZW50aWZpZXI7Ci0gICAgICAgIHNjb3BlQmFyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlNjb3BlQmFyLkV2ZW50LlNlbGVjdGlvbkNoYW5nZWQsIHRoaXMuX3Njb3BlQmFyU2VsZWN0ZWRJ
dGVtc0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgfQorICAgICAgICB0aGlzLl9maWx0ZXJhYmxlQ29s
dW1ucyA9IFtdOwogCi0gICAgaWYgKHRoaXMuX2ZpbHRlcmFibGVDb2x1bW5zLmxlbmd0aCA+IDEp
IHsKLSAgICAgICAgY29uc29sZS5lcnJvcigiQ3JlYXRpbmcgYSBUaW1lbGluZURhdGFHcmlkIHdp
dGggbW9yZSB0aGFuIG9uZSBmaWx0ZXJhYmxlIGNvbHVtbiBpcyBub3QgeWV0IHN1cHBvcnRlZC4i
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmICh0aGlzLl9maWx0ZXJhYmxlQ29s
dW1ucy5sZW5ndGgpIHsKLSAgICAgICAgdmFyIGl0ZW1zID0gW25ldyBXZWJJbnNwZWN0b3IuRmxl
eGlibGVTcGFjZU5hdmlnYXRpb25JdGVtLCB0aGlzLmNvbHVtbnMuZ2V0KHRoaXMuX2ZpbHRlcmFi
bGVDb2x1bW5zWzBdKS5zY29wZUJhciwgbmV3IFdlYkluc3BlY3Rvci5GbGV4aWJsZVNwYWNlTmF2
aWdhdGlvbkl0ZW1dOwotICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyID0gbmV3IFdlYkluc3Bl
Y3Rvci5OYXZpZ2F0aW9uQmFyKG51bGwsIGl0ZW1zKTsKLSAgICAgICAgdmFyIGNvbnRhaW5lciA9
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7
Ci0gICAgICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSAibmF2aWdhdGlvbi1iYXItY29udGFpbmVy
IjsKLSAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRpb25CYXIuZWxl
bWVudCk7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU2NvcGVCYXJGb3JjZWRWaXNpYmlsaXR5KCk7
Ci0gICAgfQorICAgICAgICAvLyBDaGVjayBpZiBhbnkgb2YgdGhlIGNlbGxzIGNhbiBiZSBmaWx0
ZXJlZC4KKyAgICAgICAgZm9yICh2YXIgW2lkZW50aWZpZXIsIGNvbHVtbl0gb2YgdGhpcy5jb2x1
bW5zKSB7CisgICAgICAgICAgICB2YXIgc2NvcGVCYXIgPSBjb2x1bW4uc2NvcGVCYXI7CisgICAg
ICAgICAgICBpZiAoIXNjb3BlQmFyKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgdGhpcy5fZmlsdGVyYWJsZUNvbHVtbnMucHVzaChpZGVudGlmaWVyKTsKKyAgICAgICAg
ICAgIHNjb3BlQmFyLmNvbHVtbklkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgICAgICAgICAg
c2NvcGVCYXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NvcGVCYXIuRXZlbnQuU2Vs
ZWN0aW9uQ2hhbmdlZCwgdGhpcy5fc2NvcGVCYXJTZWxlY3RlZEl0ZW1zRGlkQ2hhbmdlLCB0aGlz
KTsKKyAgICAgICAgfQogCi0gICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5E
YXRhR3JpZC5FdmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB0aGlzLl9kYXRhR3JpZFNlbGVjdGVk
Tm9kZUNoYW5nZWQsIHRoaXMpOwotICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQsIHRoaXMuX3NvcnQsIHRoaXMpOworICAgICAg
ICBpZiAodGhpcy5fZmlsdGVyYWJsZUNvbHVtbnMubGVuZ3RoID4gMSkgeworICAgICAgICAgICAg
Y29uc29sZS5lcnJvcigiQ3JlYXRpbmcgYSBUaW1lbGluZURhdGFHcmlkIHdpdGggbW9yZSB0aGFu
IG9uZSBmaWx0ZXJhYmxlIGNvbHVtbiBpcyBub3QgeWV0IHN1cHBvcnRlZC4iKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJl
c2l6ZSIsIHRoaXMuX3dpbmRvd1Jlc2l6ZWQuYmluZCh0aGlzKSk7Ci19CisgICAgICAgIGlmICh0
aGlzLl9maWx0ZXJhYmxlQ29sdW1ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBpdGVtcyA9
IFtuZXcgV2ViSW5zcGVjdG9yLkZsZXhpYmxlU3BhY2VOYXZpZ2F0aW9uSXRlbSwgdGhpcy5jb2x1
bW5zLmdldCh0aGlzLl9maWx0ZXJhYmxlQ29sdW1uc1swXSkuc2NvcGVCYXIsIG5ldyBXZWJJbnNw
ZWN0b3IuRmxleGlibGVTcGFjZU5hdmlnYXRpb25JdGVtXTsKKyAgICAgICAgICAgIHRoaXMuX25h
dmlnYXRpb25CYXIgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIobnVsbCwgaXRlbXMp
OworICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7CisgICAgICAgICAgICBjb250YWluZXIuY2xh
c3NOYW1lID0gIm5hdmlnYXRpb24tYmFyLWNvbnRhaW5lciI7CisgICAgICAgICAgICBjb250YWlu
ZXIuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdGlvbkJhci5lbGVtZW50KTsKIAotV2ViSW5zcGVj
dG9yLlRpbWVsaW5lRGF0YUdyaWQuU3R5bGVDbGFzc05hbWUgPSAidGltZWxpbmUiOwotV2ViSW5z
cGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuSGFzTm9uRGVmYXVsdEZpbHRlclN0eWxlQ2xhc3NOYW1l
ID0gImhhcy1ub24tZGVmYXVsdC1maWx0ZXIiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdy
aWQuRGVsYXllZFBvcG92ZXJTaG93VGltZW91dCA9IDI1MDsKLVdlYkluc3BlY3Rvci5UaW1lbGlu
ZURhdGFHcmlkLkRlbGF5ZWRQb3BvdmVySGlkZUNvbnRlbnRDbGVhclRpbWVvdXQgPSA1MDA7Cisg
ICAgICAgICAgICB0aGlzLl91cGRhdGVTY29wZUJhckZvcmNlZFZpc2liaWxpdHkoKTsKKyAgICAg
ICAgfQogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5FdmVudCA9IHsKLSAgICBGaWx0
ZXJzRGlkQ2hhbmdlOiAidGltZWxpbmVkYXRhZ3JpZC1maWx0ZXJzLWRpZC1jaGFuZ2UiCi19Owor
ICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRhdGFHcmlkLkV2ZW50
LlNlbGVjdGVkTm9kZUNoYW5nZWQsIHRoaXMuX2RhdGFHcmlkU2VsZWN0ZWROb2RlQ2hhbmdlZCwg
dGhpcyk7CisgICAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGF0YUdy
aWQuRXZlbnQuU29ydENoYW5nZWQsIHRoaXMuX3NvcnQsIHRoaXMpOwogCi1XZWJJbnNwZWN0b3Iu
VGltZWxpbmVEYXRhR3JpZC5jcmVhdGVDb2x1bW5TY29wZUJhciA9IGZ1bmN0aW9uKHByZWZpeCwg
bWFwKQotewotICAgIHByZWZpeCA9IHByZWZpeCArICItdGltZWxpbmUtZGF0YS1ncmlkLSI7Ci0K
LSAgICB2YXIgc2NvcGVCYXJJdGVtcyA9IFtdOwotICAgIGZvciAodmFyIFtrZXksIHZhbHVlXSBv
ZiBtYXApIHsKLSAgICAgICAgdmFyIGlkID0gcHJlZml4ICsga2V5OwotICAgICAgICB2YXIgaXRl
bSA9IG5ldyBXZWJJbnNwZWN0b3IuU2NvcGVCYXJJdGVtKGlkLCB2YWx1ZSk7Ci0gICAgICAgIGl0
ZW0udmFsdWUgPSBrZXk7Ci0gICAgICAgIHNjb3BlQmFySXRlbXMucHVzaChpdGVtKTsKKyAgICAg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsIHRoaXMuX3dpbmRvd1Jlc2l6ZWQu
YmluZCh0aGlzKSk7CiAgICAgfQogCi0gICAgc2NvcGVCYXJJdGVtcy51bnNoaWZ0KG5ldyBXZWJJ
bnNwZWN0b3IuU2NvcGVCYXJJdGVtKHByZWZpeCArICJ0eXBlLWFsbCIsIFdlYkluc3BlY3Rvci5V
SVN0cmluZygiQWxsIiksIHRydWUpKTsKKyAgICAvLyBTdGF0aWMKIAotICAgIHJldHVybiBuZXcg
V2ViSW5zcGVjdG9yLlNjb3BlQmFyKHByZWZpeCArICJzY29wZS1iYXIiLCBzY29wZUJhckl0ZW1z
LCBzY29wZUJhckl0ZW1zWzBdKTsKLX07CisgICAgc3RhdGljIGNyZWF0ZUNvbHVtblNjb3BlQmFy
KHByZWZpeCwgbWFwKQorICAgIHsKKyAgICAgICAgcHJlZml4ID0gcHJlZml4ICsgIi10aW1lbGlu
ZS1kYXRhLWdyaWQtIjsKKworICAgICAgICB2YXIgc2NvcGVCYXJJdGVtcyA9IFtdOworICAgICAg
ICBmb3IgKHZhciBba2V5LCB2YWx1ZV0gb2YgbWFwKSB7CisgICAgICAgICAgICB2YXIgaWQgPSBw
cmVmaXggKyBrZXk7CisgICAgICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuU2Nv
cGVCYXJJdGVtKGlkLCB2YWx1ZSk7CisgICAgICAgICAgICBpdGVtLnZhbHVlID0ga2V5OworICAg
ICAgICAgICAgc2NvcGVCYXJJdGVtcy5wdXNoKGl0ZW0pOworICAgICAgICB9CiAKLVdlYkluc3Bl
Y3Rvci5UaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQucHJvdG90eXBlLAorICAgICAgICBzY29wZUJhckl0ZW1zLnVuc2hpZnQobmV3IFdl
Ykluc3BlY3Rvci5TY29wZUJhckl0ZW0ocHJlZml4ICsgInR5cGUtYWxsIiwgV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJBbGwiKSwgdHJ1ZSkpOworCisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLlNjb3BlQmFyKHByZWZpeCArICJzY29wZS1iYXIiLCBzY29wZUJhckl0ZW1zLCBzY29wZUJh
ckl0ZW1zWzBdKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHJlc2V0OiBmdW5jdGlv
bigpCisgICAgcmVzZXQoKQogICAgIHsKICAgICAgICAgLy8gTWF5IGJlIG92ZXJyaWRkZW4gYnkg
c3ViY2xhc3Nlcy4gSWYgc28sIHRoZXkgc2hvdWxkIGNhbGwgdGhlIHN1cGVyY2xhc3MuCiAKICAg
ICAgICAgdGhpcy5faGlkZVBvcG92ZXIoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBm
dW5jdGlvbigpCisgICAgc2hvd24oKQogICAgIHsKICAgICAgICAgLy8gTWF5IGJlIG92ZXJyaWRk
ZW4gYnkgc3ViY2xhc3Nlcy4gSWYgc28sIHRoZXkgc2hvdWxkIGNhbGwgdGhlIHN1cGVyY2xhc3Mu
CiAKICAgICAgICAgdGhpcy5fdHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5zeW5jaHJv
bml6ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlk
ZGVuKCkKICAgICB7CiAgICAgICAgIC8vIE1heSBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMu
IElmIHNvLCB0aGV5IHNob3VsZCBjYWxsIHRoZSBzdXBlcmNsYXNzLgogCiAgICAgICAgIHRoaXMu
X2hpZGVQb3BvdmVyKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB0cmVlRWxlbWVudEZvckRhdGFH
cmlkTm9kZTogZnVuY3Rpb24oZGF0YUdyaWROb2RlKQorICAgIHRyZWVFbGVtZW50Rm9yRGF0YUdy
aWROb2RlKGRhdGFHcmlkTm9kZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90cmVlT3V0
bGluZURhdGFHcmlkU3luY2hyb25pemVyLnRyZWVFbGVtZW50Rm9yRGF0YUdyaWROb2RlKGRhdGFH
cmlkTm9kZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVu
dDogZnVuY3Rpb24odHJlZUVsZW1lbnQpCisgICAgZGF0YUdyaWROb2RlRm9yVHJlZUVsZW1lbnQo
dHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHJlZU91dGxpbmVEYXRh
R3JpZFN5bmNocm9uaXplci5kYXRhR3JpZE5vZGVGb3JUcmVlRWxlbWVudCh0cmVlRWxlbWVudCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYWxsRnJhbWVQb3BvdmVyQW5jaG9yRWxlbWVudDogZnVu
Y3Rpb24oKQorICAgIGNhbGxGcmFtZVBvcG92ZXJBbmNob3JFbGVtZW50KCkKICAgICB7CiAgICAg
ICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCiAgICAgICAgIHJldHVybiBudWxsOwot
ICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRl
TGF5b3V0KCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUu
dXBkYXRlTGF5b3V0LmNhbGwodGhpcyk7CiAKICAgICAgICAgaWYgKHRoaXMuX25hdmlnYXRpb25C
YXIpCiAgICAgICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uQmFyLnVwZGF0ZUxheW91dCgpOwotICAg
IH0sCisgICAgfQogCi0gICAgdHJlZUVsZW1lbnRNYXRjaGVzQWN0aXZlU2NvcGVGaWx0ZXJzOiBm
dW5jdGlvbih0cmVlRWxlbWVudCkKKyAgICB0cmVlRWxlbWVudE1hdGNoZXNBY3RpdmVTY29wZUZp
bHRlcnModHJlZUVsZW1lbnQpCiAgICAgewogICAgICAgICB2YXIgZGF0YUdyaWROb2RlID0gdGhp
cy5fdHJlZU91dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5kYXRhR3JpZE5vZGVGb3JUcmVlRWxl
bWVudCh0cmVlRWxlbWVudCk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGFHcmlkTm9kZSk7
CkBAIC0xNjEsOSArMTUyLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBhZGRSb3dJblNvcnRPcmRlcjogZnVuY3Rpb24odHJlZUVsZW1lbnQsIGRhdGFHcmlk
Tm9kZSwgcGFyZW50RWxlbWVudCkKKyAgICBhZGRSb3dJblNvcnRPcmRlcih0cmVlRWxlbWVudCwg
ZGF0YUdyaWROb2RlLCBwYXJlbnRFbGVtZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fdHJlZU91
dGxpbmVEYXRhR3JpZFN5bmNocm9uaXplci5hc3NvY2lhdGUodHJlZUVsZW1lbnQsIGRhdGFHcmlk
Tm9kZSk7CiAKQEAgLTE4MSwxNiArMTcyLDE2IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFH
cmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIC8vIEFwcGVuZCB0byB0aGUgcGFyZW50LCB3
aGljaCB3aWxsIGNhdXNlIHRoZSBzeW5jaHJvbml6ZXIgdG8gYXBwZW5kIHRvIHRoZSBkYXRhIGdy
aWQuCiAgICAgICAgICAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKHRyZWVFbGVtZW50KTsK
ICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgc2hvdWxkSWdub3JlU2VsZWN0aW9uRXZl
bnQ6IGZ1bmN0aW9uKCkKKyAgICBzaG91bGRJZ25vcmVTZWxlY3Rpb25FdmVudCgpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5faWdub3JlU2VsZWN0aW9uRXZlbnQgfHwgZmFsc2U7Ci0gICAg
fSwKKyAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIGRhdGFHcmlkTm9kZU5lZWRzUmVm
cmVzaDogZnVuY3Rpb24oZGF0YUdyaWROb2RlKQorICAgIGRhdGFHcmlkTm9kZU5lZWRzUmVmcmVz
aChkYXRhR3JpZE5vZGUpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2RpcnR5RGF0YUdyaWRO
b2RlcykKICAgICAgICAgICAgIHRoaXMuX2RpcnR5RGF0YUdyaWROb2RlcyA9IG5ldyBTZXQ7CkBA
IC0yMDAsMTEgKzE5MSwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2NoZWR1bGVkRGF0
YUdyaWROb2RlUmVmcmVzaElkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5f
cmVmcmVzaERpcnR5RGF0YUdyaWROb2Rlcy5iaW5kKHRoaXMpKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFByaXZhdGUKIAotICAgIF9yZWZyZXNoRGlydHlEYXRhR3JpZE5vZGVzOiBmdW5jdGlv
bigpCisgICAgX3JlZnJlc2hEaXJ0eURhdGFHcmlkTm9kZXMoKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX3NjaGVkdWxlZERhdGFHcmlkTm9kZVJlZnJlc2hJZGVudGlmaWVyKSB7CiAgICAgICAg
ICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWREYXRhR3JpZE5vZGVSZWZy
ZXNoSWRlbnRpZmllcik7CkBAIC0yNTIsOSArMjQzLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
RGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90cmVlT3V0bGluZURhdGFHcmlk
U3luY2hyb25pemVyLmVuYWJsZWQgPSB0cnVlOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9kaXJ0
eURhdGFHcmlkTm9kZXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc29ydDogZnVuY3Rpb24oKQor
ICAgIF9zb3J0KCkKICAgICB7CiAgICAgICAgIHZhciBzb3J0Q29sdW1uSWRlbnRpZmllciA9IHRo
aXMuc29ydENvbHVtbklkZW50aWZpZXI7CiAgICAgICAgIGlmICghc29ydENvbHVtbklkZW50aWZp
ZXIpCkBAIC0zMTAsOSArMzAxLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJv
dG90eXBlID0gewogICAgICAgICAgICAgc2VsZWN0ZWROb2RlLnJldmVhbEFuZFNlbGVjdCgpOwog
CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9pZ25vcmVTZWxlY3Rpb25FdmVudDsKLSAgICB9LAorICAg
IH0KIAotICAgIF9zb3J0Q29tcGFyYXRvcjogZnVuY3Rpb24obm9kZTEsIG5vZGUyKQorICAgIF9z
b3J0Q29tcGFyYXRvcihub2RlMSwgbm9kZTIpCiAgICAgewogICAgICAgICB2YXIgc29ydENvbHVt
bklkZW50aWZpZXIgPSB0aGlzLnNvcnRDb2x1bW5JZGVudGlmaWVyOwogICAgICAgICBpZiAoIXNv
cnRDb2x1bW5JZGVudGlmaWVyKQpAQCAtMzQ5LDkgKzM0MCw5IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBGb3IgZXZlcnl0aGluZyBl
bHNlIChtb3N0bHkgYm9vbGVhbnMpLgogICAgICAgICByZXR1cm4gKHZhbHVlMSA8IHZhbHVlMiA/
IC0xIDogKHZhbHVlMSA+IHZhbHVlMiA/IDEgOiAwKSkgKiBzb3J0RGlyZWN0aW9uOwotICAgIH0s
CisgICAgfQogCi0gICAgX3VwZGF0ZVNjb3BlQmFyRm9yY2VkVmlzaWJpbGl0eTogZnVuY3Rpb24o
KQorICAgIF91cGRhdGVTY29wZUJhckZvcmNlZFZpc2liaWxpdHkoKQogICAgIHsKICAgICAgICAg
Zm9yICh2YXIgaWRlbnRpZmllciBvZiB0aGlzLl9maWx0ZXJhYmxlQ29sdW1ucykgewogICAgICAg
ICAgICAgdmFyIHNjb3BlQmFyID0gdGhpcy5jb2x1bW5zLmdldChpZGVudGlmaWVyKS5zY29wZUJh
cjsKQEAgLTM2MCwxNyArMzUxLDE3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgIH0sCisgICAgfQogCi0gICAgX3Njb3BlQmFyU2VsZWN0ZWRJdGVtc0RpZENoYW5n
ZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX3Njb3BlQmFyU2VsZWN0ZWRJdGVtc0RpZENoYW5nZShl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX3VwZGF0ZVNjb3BlQmFyRm9yY2VkVmlzaWJpbGl0
eSgpOwogCiAgICAgICAgIHZhciBjb2x1bW5JZGVudGlmaWVyID0gZXZlbnQudGFyZ2V0LmNvbHVt
bklkZW50aWZpZXI7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLkV2ZW50LkZpbHRlcnNEaWRDaGFuZ2UsIHtjb2x1bW5J
ZGVudGlmaWVyfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGF0YUdyaWRTZWxlY3RlZE5vZGVD
aGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAgICBfZGF0YUdyaWRTZWxlY3RlZE5vZGVDaGFuZ2Vk
KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkTm9kZSkgewogICAgICAg
ICAgICAgdGhpcy5faGlkZVBvcG92ZXIoKTsKQEAgLTM4NCwxNSArMzc1LDE1IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZURhdGFHcmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuX3Nob3dQb3BvdmVyRm9yU2VsZWN0ZWROb2RlU29vbigpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3dpbmRvd1Jlc2l6ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF93aW5kb3dSZXNpemVk
KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXIgJiYgdGhpcy5fcG9wb3Zl
ci52aXNpYmxlKQogICAgICAgICAgICAgdGhpcy5fdXBkYXRlUG9wb3ZlckZvclNlbGVjdGVkTm9k
ZShmYWxzZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfc2hvd1BvcG92ZXJGb3JTZWxlY3RlZE5v
ZGVTb29uOiBmdW5jdGlvbigpCisgICAgX3Nob3dQb3BvdmVyRm9yU2VsZWN0ZWROb2RlU29vbigp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5fc2hvd1BvcG92ZXJUaW1lb3V0KQogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNDA2LDkgKzM5Nyw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFH
cmlkLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVy
VGltZW91dCA9IHNldFRpbWVvdXQoZGVsYXllZFdvcmsuYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lRGF0YUdyaWQuRGVsYXllZFBvcG92ZXJTaG93VGltZW91dCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfaGlkZVBvcG92ZXI6IGZ1bmN0aW9uKCkKKyAgICBfaGlkZVBvcG92ZXIoKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3Nob3dQb3BvdmVyVGltZW91dCkgewogICAgICAgICAg
ICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Nob3dQb3BvdmVyVGltZW91dCk7CkBAIC00MjcsOSArNDE4
LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAg
ICBpZiAodGhpcy5faGlkZVBvcG92ZXJDb250ZW50Q2xlYXJUaW1lb3V0KQogICAgICAgICAgICAg
Y2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVQb3BvdmVyQ29udGVudENsZWFyVGltZW91dCk7CiAgICAg
ICAgIHRoaXMuX2hpZGVQb3BvdmVyQ29udGVudENsZWFyVGltZW91dCA9IHNldFRpbWVvdXQoZGVs
YXllZFdvcmsuYmluZCh0aGlzKSwgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQuRGVsYXll
ZFBvcG92ZXJIaWRlQ29udGVudENsZWFyVGltZW91dCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBf
dXBkYXRlUG9wb3ZlckZvclNlbGVjdGVkTm9kZTogZnVuY3Rpb24odXBkYXRlQ29udGVudCkKKyAg
ICBfdXBkYXRlUG9wb3ZlckZvclNlbGVjdGVkTm9kZSh1cGRhdGVDb250ZW50KQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9wb3BvdmVyIHx8ICF0aGlzLnNlbGVjdGVkTm9kZSkKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTQ1NCw5ICs0NDUsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRh
R3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9wb3BvdmVyLmNvbnRlbnQgPSB0
aGlzLl9jcmVhdGVQb3BvdmVyQ29udGVudCgpOwogCiAgICAgICAgIHRoaXMuX3BvcG92ZXIucHJl
c2VudCh0YXJnZXRGcmFtZS5wYWQoMiksIFtXZWJJbnNwZWN0b3IuUmVjdEVkZ2UuTUFYX1ksIFdl
Ykluc3BlY3Rvci5SZWN0RWRnZS5NSU5fWSwgV2ViSW5zcGVjdG9yLlJlY3RFZGdlLk1BWF9YXSk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfY3JlYXRlUG9wb3ZlckNvbnRlbnQ6IGZ1bmN0aW9uKCkK
KyAgICBfY3JlYXRlUG9wb3ZlckNvbnRlbnQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9w
b3BvdmVyQ2FsbFN0YWNrVHJlZU91dGxpbmUpIHsKICAgICAgICAgICAgIHZhciBjb250ZW50RWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7CkBAIC00NzYsOSArNDY3LDkgQEAg
V2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWQucHJvdG90eXBlID0gewogICAgICAgICBjb250
ZW50LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1kYXRhLWdyaWQtcG9wb3ZlciI7CiAgICAgICAgIGNv
bnRlbnQuYXBwZW5kQ2hpbGQodGhpcy5fcG9wb3ZlckNhbGxTdGFja1RyZWVPdXRsaW5lLmVsZW1l
bnQpOwogICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICB9LAorICAgIH0KIAotICAgIF9wb3Bv
dmVyQ2FsbFN0YWNrVHJlZUVsZW1lbnRTZWxlY3RlZDogZnVuY3Rpb24odHJlZUVsZW1lbnQsIHNl
bGVjdGVkQnlVc2VyKQorICAgIF9wb3BvdmVyQ2FsbFN0YWNrVHJlZUVsZW1lbnRTZWxlY3RlZCh0
cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVzZXIpCiAgICAgewogICAgICAgICB0aGlzLl9wb3BvdmVy
LmRpc21pc3MoKTsKIApAQCAtNDkwLDMgKzQ4MSwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVE
YXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVNpZGVi
YXJQYW5lbC5zaG93U291cmNlQ29kZUxvY2F0aW9uKGNhbGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRp
b24pOwogICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLkhhc05vbkRl
ZmF1bHRGaWx0ZXJTdHlsZUNsYXNzTmFtZSA9ICJoYXMtbm9uLWRlZmF1bHQtZmlsdGVyIjsKK1dl
Ykluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkLkRlbGF5ZWRQb3BvdmVyU2hvd1RpbWVvdXQgPSAy
NTA7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5EZWxheWVkUG9wb3ZlckhpZGVDb250
ZW50Q2xlYXJUaW1lb3V0ID0gNTAwOworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZC5F
dmVudCA9IHsKKyAgICBGaWx0ZXJzRGlkQ2hhbmdlOiAidGltZWxpbmVkYXRhZ3JpZC1maWx0ZXJz
LWRpZC1jaGFuZ2UiCit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGltZWxpbmVEYXRhR3JpZE5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkTm9kZS5qcwppbmRleCAy
MmUzYmIzLi40NDgxZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZURhdGFHcmlkTm9kZS5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywy
NyArMjMsMjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihncmFwaE9ubHksIGdy
YXBoRGF0YVNvdXJjZSwgaGFzQ2hpbGRyZW4pCitXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3Jp
ZE5vZGUgPSBjbGFzcyBUaW1lbGluZURhdGFHcmlkTm9kZSBleHRlbmRzIFdlYkluc3BlY3Rvci5E
YXRhR3JpZE5vZGUKIHsKLSAgICBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLmNhbGwodGhpcywg
e30sIGhhc0NoaWxkcmVuKTsKKyAgICBjb25zdHJ1Y3RvcihncmFwaE9ubHksIGdyYXBoRGF0YVNv
dXJjZSwgaGFzQ2hpbGRyZW4pCisgICAgeworICAgICAgICBzdXBlcih7fSwgaGFzQ2hpbGRyZW4p
OwogCi0gICAgdGhpcy5jb3B5YWJsZSA9IGZhbHNlOworICAgICAgICB0aGlzLmNvcHlhYmxlID0g
ZmFsc2U7CiAKLSAgICB0aGlzLl9ncmFwaE9ubHkgPSBncmFwaE9ubHkgfHwgZmFsc2U7Ci0gICAg
dGhpcy5fZ3JhcGhEYXRhU291cmNlID0gZ3JhcGhEYXRhU291cmNlIHx8IG51bGw7CisgICAgICAg
IHRoaXMuX2dyYXBoT25seSA9IGdyYXBoT25seSB8fCBmYWxzZTsKKyAgICAgICAgdGhpcy5fZ3Jh
cGhEYXRhU291cmNlID0gZ3JhcGhEYXRhU291cmNlIHx8IG51bGw7CiAKLSAgICBpZiAoZ3JhcGhE
YXRhU291cmNlKSB7Ci0gICAgICAgIHRoaXMuX2dyYXBoQ29udGFpbmVyRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJh
cnMgPSBbXTsKKyAgICAgICAgaWYgKGdyYXBoRGF0YVNvdXJjZSkgeworICAgICAgICAgICAgdGhp
cy5fZ3JhcGhDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
CisgICAgICAgICAgICB0aGlzLl90aW1lbGluZVJlY29yZEJhcnMgPSBbXTsKKyAgICAgICAgfQog
ICAgIH0KLX07Ci0KLS8vIEZJWE1FOiBNb3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJj
bGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNh
dGVkQWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWRO
b2RlKTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLAotICAg
IF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUsCiAKICAgICAv
LyBQdWJsaWMKIApAQCAtNTEsMTIgKzQ2LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFH
cmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBz
dWJjbGFzc2VzLgogICAgICAgICByZXR1cm4gW107Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQg
Z3JhcGhEYXRhU291cmNlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ncmFwaERhdGFT
b3VyY2U7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZGF0YSgpCiAgICAgewpAQCAtNjUsOSAr
NjAsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewog
CiAgICAgICAgIHZhciByZWNvcmRzID0gdGhpcy5yZWNvcmRzIHx8IFtdOwogICAgICAgICByZXR1
cm4ge2dyYXBoOiByZWNvcmRzLmxlbmd0aCA/IHJlY29yZHNbMF0uc3RhcnRUaW1lIDogMH07Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjb2xsYXBzZTogZnVuY3Rpb24oKQorICAgIGNvbGxhcHNlKCkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmNvbGxh
cHNlLmNhbGwodGhpcyk7CiAKQEAgLTc2LDkgKzcxLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5l
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAvLyBSZWZyZXNoIHRvIHNob3cg
Y2hpbGQgYmFycyBpbiBvdXIgZ3JhcGggbm93IHRoYXQgd2UgY29sbGFwc2VkLgogICAgICAgICB0
aGlzLnJlZnJlc2hHcmFwaCgpOwotICAgIH0sCisgICAgfQogCi0gICAgZXhwYW5kOiBmdW5jdGlv
bigpCisgICAgZXhwYW5kKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5v
ZGUucHJvdG90eXBlLmV4cGFuZC5jYWxsKHRoaXMpOwogCkBAIC05NSw5ICs5MCw5IEBAIFdlYklu
c3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAg
ICAgY2hpbGROb2RlLnJlZnJlc2hHcmFwaCgpOwogICAgICAgICAgICAgY2hpbGROb2RlID0gY2hp
bGROb2RlLnRyYXZlcnNlTmV4dE5vZGUodHJ1ZSwgdGhpcyk7CiAgICAgICAgIH0KLSAgICB9LAor
ICAgIH0KIAotICAgIGNyZWF0ZUNlbGxDb250ZW50OiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVy
LCBjZWxsKQorICAgIGNyZWF0ZUNlbGxDb250ZW50KGNvbHVtbklkZW50aWZpZXIsIGNlbGwpCiAg
ICAgewogICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gImdyYXBoIiAmJiB0aGlzLl9n
cmFwaERhdGFTb3VyY2UpIHsKICAgICAgICAgICAgIHRoaXMubmVlZHNHcmFwaFJlZnJlc2goKTsK
QEAgLTEzMCw3ICsxMjUsNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVEYXRhR3JpZE5vZGUucHJv
dG90eXBlID0gewogICAgICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoZ29Ub0Fycm93QnV0
dG9uTGluayk7CiAKICAgICAgICAgICAgIHZhciBpY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgICAgICAgICBpY29uLmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5TY3Jp
cHRUaW1lbGluZURhdGFHcmlkTm9kZS5JY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgICAgICBp
Y29uLmNsYXNzTmFtZSA9ICJpY29uIjsKICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxk
KGljb24pOwogCiAgICAgICAgICAgICB2YXIgdGl0bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOwpAQCAtMjA4LDEwICsyMDMsMTAgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVu
dDsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2Rl
LnByb3RvdHlwZS5jcmVhdGVDZWxsQ29udGVudC5jYWxsKHRoaXMsIGNvbHVtbklkZW50aWZpZXIs
IGNlbGwpOwotICAgIH0sCisgICAgICAgIHJldHVybiBzdXBlci5jcmVhdGVDZWxsQ29udGVudChj
b2x1bW5JZGVudGlmaWVyLCBjZWxsKTsKKyAgICB9CiAKLSAgICByZWZyZXNoOiBmdW5jdGlvbigp
CisgICAgcmVmcmVzaCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZ3JhcGhEYXRhU291cmNl
ICYmIHRoaXMuX2dyYXBoT25seSkgewogICAgICAgICAgICAgdGhpcy5uZWVkc0dyYXBoUmVmcmVz
aCgpOwpAQCAtMjE5LDkgKzIxNCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9k
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBXZWJJbnNwZWN0b3IuRGF0YUdy
aWROb2RlLnByb3RvdHlwZS5yZWZyZXNoLmNhbGwodGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICByZWZyZXNoR3JhcGg6IGZ1bmN0aW9uKCkKKyAgICByZWZyZXNoR3JhcGgoKQogICAgIHsKICAg
ICAgICAgaWYgKCF0aGlzLl9ncmFwaERhdGFTb3VyY2UpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0yNTksNiArMjU0LDE5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZURhdGFHcmlkTm9kZS5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgdmFyIGJvdW5kQ3JlYXRlQmFyID0gY3JlYXRlQmFyLmJpbmQo
dGhpcyk7CiAKKyAgICAgICAgZnVuY3Rpb24gY29sbGVjdFJlY29yZHNCeVR5cGUocmVjb3JkcykK
KyAgICAgICAgeworICAgICAgICAgICAgZm9yICh2YXIgcmVjb3JkIG9mIHJlY29yZHMpIHsKKyAg
ICAgICAgICAgICAgICB2YXIgdHlwZWRSZWNvcmRzID0gcmVjb3JkVHlwZU1hcC5nZXQocmVjb3Jk
LnR5cGUpOworICAgICAgICAgICAgICAgIGlmICghdHlwZWRSZWNvcmRzKSB7CisgICAgICAgICAg
ICAgICAgICAgIHR5cGVkUmVjb3JkcyA9IFtdOworICAgICAgICAgICAgICAgICAgICByZWNvcmRU
eXBlTWFwLnNldChyZWNvcmQudHlwZSwgdHlwZWRSZWNvcmRzKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICB0eXBlZFJlY29yZHMucHVzaChyZWNvcmQpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKICAgICAgICAgaWYgKHRoaXMuZXhwYW5kZWQpIHsKICAgICAgICAg
ICAgIC8vIFdoZW4gZXhwYW5kZWQganVzdCB1c2UgdGhlIHJlY29yZHMgZm9yIHRoaXMgbm9kZS4K
ICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5jcmVhdGVDb21iaW5l
ZEJhcnModGhpcy5yZWNvcmRzLCBzZWNvbmRzUGVyUGl4ZWwsIHRoaXMuX2dyYXBoRGF0YVNvdXJj
ZSwgYm91bmRDcmVhdGVCYXIpOwpAQCAtMjY4LDE5ICsyNzYsNiBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogCiAgICAgICAgICAgICB2YXIgcmVjb3Jk
VHlwZU1hcCA9IG5ldyBNYXA7CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGNvbGxlY3RSZWNvcmRz
QnlUeXBlKHJlY29yZHMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIg
cmVjb3JkIG9mIHJlY29yZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHR5cGVkUmVjb3Jk
cyA9IHJlY29yZFR5cGVNYXAuZ2V0KHJlY29yZC50eXBlKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCF0eXBlZFJlY29yZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVkUmVjb3Jk
cyA9IFtdOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkVHlwZU1hcC5zZXQocmVjb3Jk
LnR5cGUsIHR5cGVkUmVjb3Jkcyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICB0eXBlZFJlY29yZHMucHVzaChyZWNvcmQpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgY29sbGVjdFJlY29yZHNCeVR5cGUodGhpcy5y
ZWNvcmRzKTsKIAogICAgICAgICAgICAgdmFyIGNoaWxkTm9kZSA9IHRoaXMuY2hpbGRyZW5bMF07
CkBAIC0yOTksOSArMjk0LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lRGF0YUdyaWROb2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3RpbWVsaW5lUmVjb3JkQmFyc1tyZWNvcmRC
YXJJbmRleF0ucmVjb3JkcyA9IG51bGw7CiAgICAgICAgICAgICB0aGlzLl90aW1lbGluZVJlY29y
ZEJhcnNbcmVjb3JkQmFySW5kZXhdLmVsZW1lbnQucmVtb3ZlKCk7CiAgICAgICAgIH0KLSAgICB9
LAorICAgIH0KIAotICAgIG5lZWRzR3JhcGhSZWZyZXNoOiBmdW5jdGlvbigpCisgICAgbmVlZHNH
cmFwaFJlZnJlc2goKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnJldmVhbGVkKSB7CiAgICAg
ICAgICAgICAvLyBXZSBhcmUgbm90IHZpc2libGUsIGJ1dCBhbiBhbmNlc3RvciB3aWxsIGJlIGRy
YXdpbmcgb3VyIGdyYXBoLgpAQCAtMzIzLDExICszMTgsMTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVs
aW5lRGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICB0aGlzLl9zY2hlZHVsZWRHcmFwaFJlZnJlc2hJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1h
dGlvbkZyYW1lKHRoaXMucmVmcmVzaEdyYXBoLmJpbmQodGhpcykpOwotICAgIH0sCisgICAgfQog
CiAgICAgLy8gUHJvdGVjdGVkCiAKLSAgICBpc1JlY29yZFZpc2libGU6IGZ1bmN0aW9uKHJlY29y
ZCkKKyAgICBpc1JlY29yZFZpc2libGUocmVjb3JkKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlz
Ll9ncmFwaERhdGFTb3VyY2UpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2
aWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxp
bmVPdmVydmlldy5qcwppbmRleCA1ODJiZThmLi5kZGUwNGMwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZU92ZXJ2aWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3Zl
cnZpZXcuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDg3ICsyMyw3MyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3ID0gZnVuY3Rpb24odGlt
ZWxpbmVSZWNvcmRpbmcpCitXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldyA9IGNsYXNzIFRp
bWVsaW5lT3ZlcnZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgLy8gRklY
TUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBj
YWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotCi0g
ICAgdGhpcy5fcmVjb3JkaW5nID0gdGltZWxpbmVSZWNvcmRpbmc7Ci0gICAgdGhpcy5fcmVjb3Jk
aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50
LlRpbWVsaW5lQWRkZWQsIHRoaXMuX3RpbWVsaW5lQWRkZWQsIHRoaXMpOwotICAgIHRoaXMuX3Jl
Y29yZGluZy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5F
dmVudC5UaW1lbGluZVJlbW92ZWQsIHRoaXMuX3RpbWVsaW5lUmVtb3ZlZCwgdGhpcyk7Ci0KLSAg
ICB0aGlzLl9lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhp
cy5fZWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5TdHls
ZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIiwg
dGhpcy5faGFuZGxlV2hlZWxFdmVudC5iaW5kKHRoaXMpKTsKKyAgICBjb25zdHJ1Y3Rvcih0aW1l
bGluZVJlY29yZGluZykKKyAgICB7CisgICAgICAgIHN1cGVyKCk7CiAKLSAgICB0aGlzLl9ncmFw
aHNDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
dGhpcy5fZ3JhcGhzQ29udGFpbmVyRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlldy5HcmFwaHNDb250YWluZXJTdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9l
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dyYXBoc0NvbnRhaW5lckVsZW1lbnQpOworICAgICAg
ICB0aGlzLl9yZWNvcmRpbmcgPSB0aW1lbGluZVJlY29yZGluZzsKKyAgICAgICAgdGhpcy5fcmVj
b3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2
ZW50LlRpbWVsaW5lQWRkZWQsIHRoaXMuX3RpbWVsaW5lQWRkZWQsIHRoaXMpOworICAgICAgICB0
aGlzLl9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRpbmcuRXZlbnQuVGltZWxpbmVSZW1vdmVkLCB0aGlzLl90aW1lbGluZVJlbW92ZWQsIHRoaXMp
OwogCi0gICAgdGhpcy5fdGltZWxpbmVPdmVydmlld0dyYXBoc01hcCA9IG5ldyBNYXA7CisgICAg
ICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc05hbWUgPSAidGltZWxpbmUtb3ZlcnZpZXciOworICAgICAg
ICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIndoZWVsIiwgdGhpcy5faGFuZGxlV2hl
ZWxFdmVudC5iaW5kKHRoaXMpKTsKIAotICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXI7Ci0gICAgdGhpcy5fdGltZWxpbmVSdWxlci5hbGxvd3ND
bGlwcGVkTGFiZWxzID0gdHJ1ZTsKLSAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmFsbG93c1RpbWVS
YW5nZVNlbGVjdGlvbiA9IHRydWU7Ci0gICAgdGhpcy5fdGltZWxpbmVSdWxlci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkV2ZW50LlRpbWVSYW5nZVNlbGVjdGlv
bkNoYW5nZWQsIHRoaXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQsIHRoaXMpOwotICAgIHRo
aXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fdGltZWxpbmVSdWxlci5lbGVtZW50KTsKKyAg
ICAgICAgdGhpcy5fZ3JhcGhzQ29udGFpbmVyRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICB0aGlzLl9ncmFwaHNDb250YWluZXJFbGVtZW50LmNsYXNzTmFt
ZSA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LkdyYXBoc0NvbnRhaW5lclN0eWxlQ2xh
c3NOYW1lOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2dyYXBoc0Nv
bnRhaW5lckVsZW1lbnQpOwogCi0gICAgdGhpcy5fY3VycmVudFRpbWVNYXJrZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lTWFya2VyKDAsIFdlYkluc3BlY3Rvci5UaW1lbGluZU1hcmtlci5U
eXBlLkN1cnJlbnRUaW1lKTsKLSAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmFkZE1hcmtlcih0aGlz
Ll9jdXJyZW50VGltZU1hcmtlcik7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXdHcmFw
aHNNYXAgPSBuZXcgTWFwOwogCi0gICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVs
ZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuU2Nyb2xsQ29u
dGFpbmVyU3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fc2Nyb2xsQ29udGFpbmVyRWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLl9oYW5kbGVTY3JvbGxFdmVudC5iaW5kKHRo
aXMpKTsKLSAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3Njcm9sbENvbnRhaW5l
ckVsZW1lbnQpOworICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJ1bGVyOworICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmFsbG93c0NsaXBw
ZWRMYWJlbHMgPSB0cnVlOworICAgICAgICB0aGlzLl90aW1lbGluZVJ1bGVyLmFsbG93c1RpbWVS
YW5nZVNlbGVjdGlvbiA9IHRydWU7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5FdmVudC5UaW1lUmFuZ2VTZWxl
Y3Rpb25DaGFuZ2VkLCB0aGlzLl90aW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkLCB0aGlzKTsKKyAg
ICAgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90aW1lbGluZVJ1bGVyLmVsZW1l
bnQpOwogCi0gICAgdGhpcy5fc2Nyb2xsV2lkdGhTaXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgIHRoaXMuX3Njcm9sbFdpZHRoU2l6ZXIuY2xhc3NOYW1lID0gV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuU2Nyb2xsV2lkdGhTaXplclN0eWxlQ2xhc3NOYW1lOwot
ICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2Nyb2xs
V2lkdGhTaXplcik7CisgICAgICAgIHRoaXMuX2N1cnJlbnRUaW1lTWFya2VyID0gbmV3IFdlYklu
c3BlY3Rvci5UaW1lbGluZU1hcmtlcigwLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVNYXJrZXIuVHlw
ZS5DdXJyZW50VGltZSk7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lUnVsZXIuYWRkTWFya2VyKHRo
aXMuX2N1cnJlbnRUaW1lTWFya2VyKTsKIAotICAgIHRoaXMuX3NlY29uZHNQZXJQaXhlbFNldHRp
bmcgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmcoInRpbWVsaW5lLW92ZXJ2aWV3LXNlY29uZHMt
cGVyLXBpeGVsIiwgMC4wMSk7Ci0gICAgdGhpcy5fc2VsZWN0aW9uU3RhcnRUaW1lU2V0dGluZyA9
IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZygidGltZWxpbmUtb3ZlcnZpZXctc2VsZWN0aW9uLXN0
YXJ0LXRpbWUiLCAwKTsKLSAgICB0aGlzLl9zZWxlY3Rpb25EdXJhdGlvblNldHRpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLlNldHRpbmcoInRpbWVsaW5lLW92ZXJ2aWV3LXNlbGVjdGlvbi1kdXJhdGlv
biIsIDUpOworICAgICAgICB0aGlzLl9zY3JvbGxDb250YWluZXJFbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1l
bnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuU2Nyb2xsQ29udGFp
bmVyU3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwgdGhpcy5faGFuZGxlU2Nyb2xsRXZlbnQuYmluZCh0
aGlzKSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fc2Nyb2xsQ29u
dGFpbmVyRWxlbWVudCk7CiAKLSAgICB0aGlzLl9zdGFydFRpbWUgPSAwOwotICAgIHRoaXMuX2N1
cnJlbnRUaW1lID0gMDsKLSAgICB0aGlzLl9lbmRUaW1lID0gMDsKLSAgICB0aGlzLl9zZWNvbmRz
UGVyUGl4ZWwgPSB0aGlzLl9zZWNvbmRzUGVyUGl4ZWxTZXR0aW5nLnZhbHVlOwotICAgIHRoaXMu
X3Njcm9sbFN0YXJ0VGltZSA9IDA7Ci0gICAgdGhpcy5fY2FjaGVkU2Nyb2xsQ29udGFpbmVyV2lk
dGggPSBOYU47CisgICAgICAgIHRoaXMuX3Njcm9sbFdpZHRoU2l6ZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fc2Nyb2xsV2lkdGhTaXplci5jbGFzc05h
bWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5TY3JvbGxXaWR0aFNpemVyU3R5bGVD
bGFzc05hbWU7CisgICAgICAgIHRoaXMuX3Njcm9sbENvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hp
bGQodGhpcy5fc2Nyb2xsV2lkdGhTaXplcik7CiAKLSAgICB0aGlzLnNlbGVjdGlvblN0YXJ0VGlt
ZSA9IHRoaXMuX3NlbGVjdGlvblN0YXJ0VGltZVNldHRpbmcudmFsdWU7Ci0gICAgdGhpcy5zZWxl
Y3Rpb25EdXJhdGlvbiA9IHRoaXMuX3NlbGVjdGlvbkR1cmF0aW9uU2V0dGluZy52YWx1ZTsKKyAg
ICAgICAgdGhpcy5fc2Vjb25kc1BlclBpeGVsU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0
dGluZygidGltZWxpbmUtb3ZlcnZpZXctc2Vjb25kcy1wZXItcGl4ZWwiLCAwLjAxKTsKKyAgICAg
ICAgdGhpcy5fc2VsZWN0aW9uU3RhcnRUaW1lU2V0dGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0
dGluZygidGltZWxpbmUtb3ZlcnZpZXctc2VsZWN0aW9uLXN0YXJ0LXRpbWUiLCAwKTsKKyAgICAg
ICAgdGhpcy5fc2VsZWN0aW9uRHVyYXRpb25TZXR0aW5nID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0
aW5nKCJ0aW1lbGluZS1vdmVydmlldy1zZWxlY3Rpb24tZHVyYXRpb24iLCA1KTsKIAotICAgIGZv
ciAodmFyIHRpbWVsaW5lIG9mIHRoaXMuX3JlY29yZGluZy50aW1lbGluZXMudmFsdWVzKCkpCi0g
ICAgICAgIHRoaXMuX3RpbWVsaW5lQWRkZWQodGltZWxpbmUpOwotfTsKLQotV2ViSW5zcGVjdG9y
LlRpbWVsaW5lT3ZlcnZpZXcuU3R5bGVDbGFzc05hbWUgPSAidGltZWxpbmUtb3ZlcnZpZXciOwot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuR3JhcGhzQ29udGFpbmVyU3R5bGVDbGFzc05h
bWUgPSAiZ3JhcGhzLWNvbnRhaW5lciI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5T
Y3JvbGxDb250YWluZXJTdHlsZUNsYXNzTmFtZSA9ICJzY3JvbGwtY29udGFpbmVyIjsKLVdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LlNjcm9sbFdpZHRoU2l6ZXJTdHlsZUNsYXNzTmFtZSA9
ICJzY3JvbGwtd2lkdGgtc2l6ZXIiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcuTWlu
aW11bVNlY29uZHNQZXJQaXhlbCA9IDAuMDAxOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZp
ZXcuU2Nyb2xsRGVsdGFEZW5vbWluYXRvciA9IDUwMDsKKyAgICAgICAgdGhpcy5fc3RhcnRUaW1l
ID0gMDsKKyAgICAgICAgdGhpcy5fY3VycmVudFRpbWUgPSAwOworICAgICAgICB0aGlzLl9lbmRU
aW1lID0gMDsKKyAgICAgICAgdGhpcy5fc2Vjb25kc1BlclBpeGVsID0gdGhpcy5fc2Vjb25kc1Bl
clBpeGVsU2V0dGluZy52YWx1ZTsKKyAgICAgICAgdGhpcy5fc2Nyb2xsU3RhcnRUaW1lID0gMDsK
KyAgICAgICAgdGhpcy5fY2FjaGVkU2Nyb2xsQ29udGFpbmVyV2lkdGggPSBOYU47CiAKLVdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LkV2ZW50ID0gewotICAgIFRpbWVSYW5nZVNlbGVjdGlv
bkNoYW5nZWQ6ICJ0aW1lbGluZS1vdmVydmlldy10aW1lLXJhbmdlLXNlbGVjdGlvbi1jaGFuZ2Vk
IgotfTsKKyAgICAgICAgdGhpcy5zZWxlY3Rpb25TdGFydFRpbWUgPSB0aGlzLl9zZWxlY3Rpb25T
dGFydFRpbWVTZXR0aW5nLnZhbHVlOworICAgICAgICB0aGlzLnNlbGVjdGlvbkR1cmF0aW9uID0g
dGhpcy5fc2VsZWN0aW9uRHVyYXRpb25TZXR0aW5nLnZhbHVlOwogCi1XZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5w
cm90b3R5cGUsCisgICAgICAgIGZvciAodmFyIHRpbWVsaW5lIG9mIHRoaXMuX3JlY29yZGluZy50
aW1lbGluZXMudmFsdWVzKCkpCisgICAgICAgICAgICB0aGlzLl90aW1lbGluZUFkZGVkKHRpbWVs
aW5lKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0
IHN0YXJ0VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lOwotICAg
IH0sCisgICAgfQogCiAgICAgc2V0IHN0YXJ0VGltZSh4KQogICAgIHsKQEAgLTExMywxMiArOTks
MTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl9zdGFydFRpbWUgPSB4IHx8IDA7CiAKICAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQo
KTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBjdXJyZW50VGltZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5fY3VycmVudFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY3Vy
cmVudFRpbWUoeCkKICAgICB7CkBAIC0xMjksMTIgKzExNSwxMiBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX3JldmVhbEN1cnJlbnRU
aW1lID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl9uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHNlY29uZHNQZXJQaXhlbCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fc2Vjb25kc1BlclBpeGVsOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNlY29uZHNQZXJQ
aXhlbCh4KQogICAgIHsKQEAgLTE0NywxMiArMTMzLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2Vjb25kc1BlclBpeGVsU2V0
dGluZy52YWx1ZSA9IHg7CiAKICAgICAgICAgdGhpcy5fbmVlZHNMYXlvdXQoKTsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBlbmRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9l
bmRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVuZFRpbWUoeCkKICAgICB7CkBAIC0x
NjIsMTIgKzE0OCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHRoaXMuX2VuZFRpbWUgPSB4IHx8IDA7CiAKICAgICAgICAgdGhpcy5fbmVl
ZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzY3JvbGxTdGFydFRpbWUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Njcm9sbFN0YXJ0VGltZTsKLSAgICB9LAorICAg
IH0KIAogICAgIHNldCBzY3JvbGxTdGFydFRpbWUoeCkKICAgICB7CkBAIC0xNzcsNyArMTYzLDcg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0
aGlzLl9zY3JvbGxTdGFydFRpbWUgPSB4IHx8IDA7CiAKICAgICAgICAgdGhpcy5fbmVlZHNMYXlv
dXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB2aXNpYmxlRHVyYXRpb24oKQogICAgIHsK
QEAgLTE4NywxMiArMTczLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRTY3JvbGxD
b250YWluZXJXaWR0aCAqIHRoaXMuX3NlY29uZHNQZXJQaXhlbDsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBzZWxlY3Rpb25TdGFydFRpbWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uU3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IHNlbGVjdGlvblN0YXJ0VGltZSh4KQogICAgIHsKQEAgLTIwMSwyNSArMTg3LDI1IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNl
bGVjdGlvbkR1cmF0aW9uID0gdGhpcy5zZWxlY3Rpb25EdXJhdGlvbjsKICAgICAgICAgdGhpcy5f
dGltZWxpbmVSdWxlci5zZWxlY3Rpb25TdGFydFRpbWUgPSB4OwogICAgICAgICB0aGlzLl90aW1l
bGluZVJ1bGVyLnNlbGVjdGlvbkVuZFRpbWUgPSB4ICsgc2VsZWN0aW9uRHVyYXRpb247Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uRHVyYXRpb24oKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uRW5kVGltZSAtIHRoaXMuX3RpbWVs
aW5lUnVsZXIuc2VsZWN0aW9uU3RhcnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHNl
bGVjdGlvbkR1cmF0aW9uKHgpCiAgICAgewogICAgICAgICB4ID0gTWF0aC5tYXgoV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bVNlbGVjdGlvblRpbWVSYW5nZSwgeCk7CiAgICAgICAg
IHRoaXMuX3RpbWVsaW5lUnVsZXIuc2VsZWN0aW9uRW5kVGltZSA9IHRoaXMuX3RpbWVsaW5lUnVs
ZXIuc2VsZWN0aW9uU3RhcnRUaW1lICsgeDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB2aXNp
YmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlOwotICAgIH0sCisgICAg
fQogCi0gICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICB0
aGlzLl92aXNpYmxlID0gdHJ1ZTsKIApAQCAtMjI3LDM5ICsyMTMsMzkgQEAgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGltZWxpbmVPdmVy
dmlld0dyYXBoLnNob3duKCk7CiAKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGhpZGRlbjogZnVuY3Rpb24oKQorICAgIGhpZGRlbigpCiAgICAgewog
ICAgICAgICB0aGlzLl92aXNpYmxlID0gZmFsc2U7CiAKICAgICAgICAgZm9yICh2YXIgdGltZWxp
bmVPdmVydmlld0dyYXBoIG9mIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXdHcmFwaHNNYXAudmFsdWVz
KCkpCiAgICAgICAgICAgICB0aW1lbGluZU92ZXJ2aWV3R3JhcGguaGlkZGVuKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICByZXNldDogZnVuY3Rpb24oKQorICAgIHJlc2V0KCkKICAgICB7CiAgICAg
ICAgIGZvciAodmFyIHRpbWVsaW5lT3ZlcnZpZXdHcmFwaCBvZiB0aGlzLl90aW1lbGluZU92ZXJ2
aWV3R3JhcGhzTWFwLnZhbHVlcygpKQogICAgICAgICAgICAgdGltZWxpbmVPdmVydmlld0dyYXBo
LnJlc2V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRNYXJrZXI6IGZ1bmN0aW9uKG1hcmtl
cikKKyAgICBhZGRNYXJrZXIobWFya2VyKQogICAgIHsKICAgICAgICAgdGhpcy5fdGltZWxpbmVS
dWxlci5hZGRNYXJrZXIobWFya2VyKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJldmVhbE1hcmtl
cjogZnVuY3Rpb24obWFya2VyKQorICAgIHJldmVhbE1hcmtlcihtYXJrZXIpCiAgICAgewogICAg
ICAgICB0aGlzLnNjcm9sbFN0YXJ0VGltZSA9IG1hcmtlci50aW1lIC0gKHRoaXMudmlzaWJsZUR1
cmF0aW9uIC8gMik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRGb3JSZXNpemU6
IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXRGb3JSZXNpemUoKQogICAgIHsKICAgICAgICAg
dGhpcy5fY2FjaGVkU2Nyb2xsQ29udGFpbmVyV2lkdGggPSBOYU47CiAgICAgICAgIHRoaXMudXBk
YXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9u
KCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxl
ZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZy
YW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOwpAQCAtMjgwLDcgKzI2
Niw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIGRlbGV0ZSB0aGlzLl9yZXZlYWxDdXJyZW50VGltZTsKICAgICAgICAgfQogCi0gICAg
ICAgIGNvbnN0IHZpc2libGVEdXJhdGlvbiA9IHRoaXMudmlzaWJsZUR1cmF0aW9uOworICAgICAg
ICB2YXIgdmlzaWJsZUR1cmF0aW9uID0gdGhpcy52aXNpYmxlRHVyYXRpb247CiAKICAgICAgICAg
Ly8gQ2xhbXAgdGhlIHNjcm9sbCBzdGFydCB0aW1lIHRvIG1hdGNoIHdoYXQgdGhlIHNjcm9sbCBi
YXIgd291bGQgYWxsb3cuCiAgICAgICAgIHZhciBzY3JvbGxTdGFydFRpbWUgPSBNYXRoLm1pbih0
aGlzLl9zY3JvbGxTdGFydFRpbWUsIHRoaXMuX2VuZFRpbWUgLSB2aXNpYmxlRHVyYXRpb24pOwpA
QCAtMzA0LDkgKzI5MCw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5lbmRUaW1lID0gc2Nyb2xs
U3RhcnRUaW1lICsgdmlzaWJsZUR1cmF0aW9uOwogICAgICAgICAgICAgdGltZWxpbmVPdmVydmll
d0dyYXBoLnVwZGF0ZUxheW91dCgpOwogICAgICAgICB9Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1
cGRhdGVMYXlvdXRJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIHVwZGF0ZUxheW91dElmTmVlZGVk
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlm
aWVyKSB7CiAgICAgICAgICAgICB0aGlzLnVwZGF0ZUxheW91dCgpOwpAQCAtMzE3LDE4ICszMDMs
MTggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogCiAgICAg
ICAgIGZvciAodmFyIHRpbWVsaW5lT3ZlcnZpZXdHcmFwaCBvZiB0aGlzLl90aW1lbGluZU92ZXJ2
aWV3R3JhcGhzTWFwLnZhbHVlcygpKQogICAgICAgICAgICAgdGltZWxpbmVPdmVydmlld0dyYXBo
LnVwZGF0ZUxheW91dElmTmVlZGVkKCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRl
CiAKLSAgICBfdXBkYXRlRWxlbWVudFdpZHRoOiBmdW5jdGlvbihlbGVtZW50LCBuZXdXaWR0aCkK
KyAgICBfdXBkYXRlRWxlbWVudFdpZHRoKGVsZW1lbnQsIG5ld1dpZHRoKQogICAgIHsKICAgICAg
ICAgdmFyIGN1cnJlbnRXaWR0aCA9IHBhcnNlSW50KGVsZW1lbnQuc3R5bGUud2lkdGgpOwogICAg
ICAgICBpZiAoY3VycmVudFdpZHRoICE9PSBuZXdXaWR0aCkKICAgICAgICAgICAgIGVsZW1lbnQu
c3R5bGUud2lkdGggPSBuZXdXaWR0aCArICJweCI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfbmVl
ZHNMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICBfbmVlZHNMYXlvdXQoKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl92aXNpYmxlKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzM3LDkgKzMyMyw5
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlm
aWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHRoaXMudXBkYXRlTGF5b3V0LmJpbmQodGhpcykp
OwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZVNjcm9sbEV2ZW50OiBmdW5jdGlvbihldmVu
dCkKKyAgICBfaGFuZGxlU2Nyb2xsRXZlbnQoZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5faWdub3JlTmV4dFNjcm9sbEV2ZW50KSB7CiAgICAgICAgICAgICBkZWxldGUgdGhpcy5faWdu
b3JlTmV4dFNjcm9sbEV2ZW50OwpAQCAtMzU1LDkgKzM0MSw5IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXRJZk5l
ZWRlZCgpOwogCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9kb250VXBkYXRlU2Nyb2xsTGVmdDsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVXaGVlbEV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAg
ICBfaGFuZGxlV2hlZWxFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIC8vIElnbm9yZSBjbG9u
ZWQgZXZlbnRzIHRoYXQgY29tZSBvdXIgd2F5LCB3ZSBhbHJlYWR5IGhhbmRsZWQgdGhlIG9yaWdp
bmFsLgogICAgICAgICBpZiAoZXZlbnQuX19jbG9uZWQpCkBAIC0zODYsOSArMzcyLDkgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50
LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAg
IH0sCisgICAgfQogCi0gICAgX3RpbWVsaW5lQWRkZWQ6IGZ1bmN0aW9uKHRpbWVsaW5lT3JFdmVu
dCkKKyAgICBfdGltZWxpbmVBZGRlZCh0aW1lbGluZU9yRXZlbnQpCiAgICAgewogICAgICAgICB2
YXIgdGltZWxpbmUgPSB0aW1lbGluZU9yRXZlbnQ7CiAgICAgICAgIGlmICghKHRpbWVsaW5lIGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKSkKQEAgLTM5NywxMyArMzgzLDEzIEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUsIHRpbWVs
aW5lKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3RpbWVsaW5lT3ZlcnZpZXdHcmFw
aHNNYXAuaGFzKHRpbWVsaW5lKSwgdGltZWxpbmUpOwogCi0gICAgICAgIHZhciBvdmVydmlld0dy
YXBoID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgodGltZWxpbmUpOwor
ICAgICAgICB2YXIgb3ZlcnZpZXdHcmFwaCA9IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3
R3JhcGguY3JlYXRlKHRpbWVsaW5lKTsKICAgICAgICAgb3ZlcnZpZXdHcmFwaC50aW1lbGluZU92
ZXJ2aWV3ID0gdGhpczsKICAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlld0dyYXBoc01hcC5z
ZXQodGltZWxpbmUsIG92ZXJ2aWV3R3JhcGgpOwogICAgICAgICB0aGlzLl9ncmFwaHNDb250YWlu
ZXJFbGVtZW50LmFwcGVuZENoaWxkKG92ZXJ2aWV3R3JhcGguZWxlbWVudCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfdGltZWxpbmVSZW1vdmVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfdGltZWxp
bmVSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHRpbWVsaW5lID0gZXZlbnQuZGF0
YS50aW1lbGluZTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUgaW5zdGFuY2VvZiBX
ZWJJbnNwZWN0b3IuVGltZWxpbmUsIHRpbWVsaW5lKTsKQEAgLTQxMiw5ICszOTgsOSBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBvdmVy
dmlld0dyYXBoID0gdGhpcy5fdGltZWxpbmVPdmVydmlld0dyYXBoc01hcC50YWtlKHRpbWVsaW5l
KTsKICAgICAgICAgb3ZlcnZpZXdHcmFwaC50aW1lbGluZU92ZXJ2aWV3ID0gbnVsbDsKICAgICAg
ICAgdGhpcy5fZ3JhcGhzQ29udGFpbmVyRWxlbWVudC5yZW1vdmVDaGlsZChvdmVydmlld0dyYXBo
LmVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCi0gICAgX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5n
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF90aW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkKGV2ZW50
KQogICAgIHsKICAgICAgICAgdGhpcy5fc2VsZWN0aW9uU3RhcnRUaW1lU2V0dGluZy52YWx1ZSA9
IHRoaXMuc2VsZWN0aW9uU3RhcnRUaW1lIC0gdGhpcy5fc3RhcnRUaW1lOwogICAgICAgICB0aGlz
Ll9zZWxlY3Rpb25EdXJhdGlvblNldHRpbmcudmFsdWUgPSB0aGlzLnNlbGVjdGlvbkR1cmF0aW9u
OwpAQCAtNDIyLDMgKzQwOCwxMyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3Bl
Y3Rvci5UaW1lbGluZU92ZXJ2aWV3LkV2ZW50LlRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQpOwog
ICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LkdyYXBoc0NvbnRhaW5l
clN0eWxlQ2xhc3NOYW1lID0gImdyYXBocy1jb250YWluZXIiOworV2ViSW5zcGVjdG9yLlRpbWVs
aW5lT3ZlcnZpZXcuU2Nyb2xsQ29udGFpbmVyU3R5bGVDbGFzc05hbWUgPSAic2Nyb2xsLWNvbnRh
aW5lciI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlldy5TY3JvbGxXaWR0aFNpemVyU3R5
bGVDbGFzc05hbWUgPSAic2Nyb2xsLXdpZHRoLXNpemVyIjsKK1dlYkluc3BlY3Rvci5UaW1lbGlu
ZU92ZXJ2aWV3Lk1pbmltdW1TZWNvbmRzUGVyUGl4ZWwgPSAwLjAwMTsKK1dlYkluc3BlY3Rvci5U
aW1lbGluZU92ZXJ2aWV3LlNjcm9sbERlbHRhRGVub21pbmF0b3IgPSA1MDA7CisKK1dlYkluc3Bl
Y3Rvci5UaW1lbGluZU92ZXJ2aWV3LkV2ZW50ID0geworICAgIFRpbWVSYW5nZVNlbGVjdGlvbkNo
YW5nZWQ6ICJ0aW1lbGluZS1vdmVydmlldy10aW1lLXJhbmdlLXNlbGVjdGlvbi1jaGFuZ2VkIgor
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lT3ZlcnZpZXdHcmFwaC5qcwppbmRleCA3MTlkOWRmLi4yMjdi
NmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9UaW1lbGluZU92ZXJ2aWV3R3JhcGguanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVPdmVydmlld0dyYXBoLmpzCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDExICsyMywyNiBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBmdW5jdGlvbih0aW1lbGluZSkKK1dlYkluc3BlY3Rv
ci5UaW1lbGluZU92ZXJ2aWV3R3JhcGggPSBjbGFzcyBUaW1lbGluZU92ZXJ2aWV3R3JhcGggZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiB7Ci0gICAgaWYgKHRoaXMuY29uc3RydWN0b3IgPT09
IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgpIHsKLSAgICAgICAgLy8gV2hlbiBp
bnN0YW50aWF0ZWQgZGlyZWN0bHkgcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgdHlwZS1iYXNlZCBj
b25jcmV0ZSBzdWJjbGFzcy4KKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBzdXBl
cigpOworCisgICAgICAgIHRoaXMuZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgidGltZWxpbmUtb3ZlcnZp
ZXctZ3JhcGgiKTsKKworICAgICAgICB0aGlzLl96ZXJvVGltZSA9IDA7CisgICAgICAgIHRoaXMu
X3N0YXJ0VGltZSA9IDA7CisgICAgICAgIHRoaXMuX2VuZFRpbWUgPSA1OworICAgICAgICB0aGlz
Ll9jdXJyZW50VGltZSA9IDA7CisgICAgICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcgPSBudWxs
OworICAgIH0KIAorICAgIC8vIFN0YXRpYworCisgICAgc3RhdGljIGNyZWF0ZSh0aW1lbGluZSkK
KyAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRpbWVsaW5lICYmIHRpbWVsaW5lIGluc3Rh
bmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKTsKIAogICAgICAgICB2YXIgdGltZWxpbmVUeXBl
ID0gdGltZWxpbmUudHlwZTsKQEAgLTQ2LDM0ICs2MSwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlld0dyYXBoID0gZnVuY3Rpb24odGltZWxpbmUpCiAgICAgICAgIHRocm93IEVycm9y
KCJDYW4ndCBtYWtlIGEgZ3JhcGggZm9yIGFuIHVua25vd24gdGltZWxpbmUuIik7CiAgICAgfQog
Ci0gICAgLy8gQ29uY3JldGUgb2JqZWN0IGluc3RhbnRpYXRpb24uCi0gICAgY29uc29sZS5hc3Nl
cnQodGhpcy5jb25zdHJ1Y3RvciAhPT0gV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFw
aCAmJiB0aGlzIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaCk7
Ci0KLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBz
dWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNh
bGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxp
bmVPdmVydmlld0dyYXBoLlN0eWxlQ2xhc3NOYW1lKTsKLQotICAgIHRoaXMuX3plcm9UaW1lID0g
MDsKLSAgICB0aGlzLl9zdGFydFRpbWUgPSAwOwotICAgIHRoaXMuX2VuZFRpbWUgPSA1OwotICAg
IHRoaXMuX2N1cnJlbnRUaW1lID0gMDsKLSAgICB0aGlzLl90aW1lbGluZU92ZXJ2aWV3ID0gbnVs
bDsKLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGguU3R5bGVDbGFzc05h
bWUgPSAidGltZWxpbmUtb3ZlcnZpZXctZ3JhcGgiOwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVP
dmVydmlld0dyYXBoLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9y
LlRpbWVsaW5lT3ZlcnZpZXdHcmFwaCwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmpl
Y3QucHJvdG90eXBlLAotCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgemVyb1RpbWUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3plcm9UaW1lOwotICAgIH0sCisgICAgfQogCiAgICAg
c2V0IHplcm9UaW1lKHgpCiAgICAgewpAQCAtODMsMTIgKzc2LDEyIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl96ZXJvVGlt
ZSA9IHggfHwgMDsKIAogICAgICAgICB0aGlzLm5lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgc3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdGFy
dFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgc3RhcnRUaW1lKHgpCiAgICAgewpAQCAt
OTgsMTIgKzkxLDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSB4IHx8IDA7CiAKICAgICAgICAgdGhp
cy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGVuZFRpbWUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VuZFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgZW5kVGltZSh4KQogICAgIHsKQEAgLTExMywxMiArMTA2LDEyIEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZU92ZXJ2aWV3R3JhcGgucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9lbmRUaW1l
ID0geCB8fCAwOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0K
IAogICAgIGdldCBjdXJyZW50VGltZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fY3Vy
cmVudFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgY3VycmVudFRpbWUoeCkKICAgICB7
CkBAIC0xMzEsNDAgKzEyNCw0MCBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVPdmVydmlld0dyYXBo
LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAoKHRoaXMuX3N0YXJ0VGltZSA8PSBvbGRDdXJy
ZW50VGltZSAmJiBvbGRDdXJyZW50VGltZSA8PSB0aGlzLl9lbmRUaW1lKSB8fCAodGhpcy5fc3Rh
cnRUaW1lIDw9IHRoaXMuX2N1cnJlbnRUaW1lICYmIHRoaXMuX2N1cnJlbnRUaW1lIDw9IHRoaXMu
X2VuZFRpbWUpKQogICAgICAgICAgICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAg
fQogCiAgICAgZ2V0IHRpbWVsaW5lT3ZlcnZpZXcoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX3RpbWVsaW5lT3ZlcnZpZXc7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgdGltZWxpbmVP
dmVydmlldyh4KQogICAgIHsKICAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldyA9IHg7Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmlzaWJsZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fdmlzaWJsZTsKLSAgICB9LAorICAgIH0KIAotICAgIHNob3duOiBmdW5jdGlvbigpCisg
ICAgc2hvd24oKQogICAgIHsKICAgICAgICAgdGhpcy5fdmlzaWJsZSA9IHRydWU7CiAgICAgICAg
IHRoaXMudXBkYXRlTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBoaWRkZW46IGZ1bmN0
aW9uKCkKKyAgICBoaWRkZW4oKQogICAgIHsKICAgICAgICAgdGhpcy5fdmlzaWJsZSA9IGZhbHNl
OwotICAgIH0sCisgICAgfQogCi0gICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICByZXNldCgpCiAg
ICAgewogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWItY2xhc3NlcyBpZiBuZWVkZWQuCi0g
ICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVM
YXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlk
ZW50aWZpZXIpIHsKICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVk
dWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOwpAQCAtMTcyLDE4ICsxNjUsMTggQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lT3ZlcnZpZXdHcmFwaC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAog
ICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWItY2xhc3NlcyBpZiBuZWVkZWQuCi0gICAgfSwK
KyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZDogZnVuY3Rpb24oKQorICAgIHVwZGF0
ZUxheW91dElmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fc2NoZWR1bGVkTGF5
b3V0VXBkYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy51
cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByb3RlY3RlZAogCi0gICAg
bmVlZHNMYXlvdXQ6IGZ1bmN0aW9uKCkKKyAgICBuZWVkc0xheW91dCgpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX3Zpc2libGUpCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZEJh
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5l
UmVjb3JkQmFyLmpzCmluZGV4IDU3ZmM4NzIuLjhkOGI4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkQmFyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVj
b3JkQmFyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDE4NiArMjMsMTY4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyID0gZnVuY3Rpb24o
cmVjb3JkcywgcmVuZGVyTW9kZSkKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhciA9IGNs
YXNzIFRpbWVsaW5lUmVjb3JkQmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAg
IC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNz
LCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlz
KTsKKyAgICBjb25zdHJ1Y3RvcihyZWNvcmRzLCByZW5kZXJNb2RlKQorICAgIHsKKyAgICAgICAg
c3VwZXIoKTsKIAotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUmVjb3JkQmFyLlN0eWxlQ2xhc3NOYW1lKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5hZGQoInRpbWVsaW5lLXJlY29yZC1iYXIiKTsKIAotICAgIHRoaXMucmVuZGVyTW9kZSA9
IHJlbmRlck1vZGU7Ci0gICAgdGhpcy5yZWNvcmRzID0gcmVjb3JkczsKLX07CisgICAgICAgIHRo
aXMucmVuZGVyTW9kZSA9IHJlbmRlck1vZGU7CisgICAgICAgIHRoaXMucmVjb3JkcyA9IHJlY29y
ZHM7CisgICAgfQogCi0vLyBGSVhNRTogTW92ZSB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MgYW5kIHdlIGNhbiByZW1vdmUgdGhpcy4KLVdlYkluc3BlY3Rvci5PYmplY3QuZGVwcmVj
YXRlZEFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJh
cik7CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5TdHls
ZUNsYXNzTmFtZSA9ICJ0aW1lbGluZS1yZWNvcmQtYmFyIjsKLVdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZEJhci5CYXJTZWdtZW50U3R5bGVDbGFzc05hbWUgPSAic2VnbWVudCI7Ci1XZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuSW5hY3RpdmVTdHlsZUNsYXNzTmFtZSA9ICJpbmFjdGl2
ZSI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuVW5maW5pc2hlZFN0eWxlQ2xhc3NO
YW1lID0gInVuZmluaXNoZWQiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLkhhc0lu
YWN0aXZlU2VnbWVudFN0eWxlQ2xhc3NOYW1lID0gImhhcy1pbmFjdGl2ZS1zZWdtZW50IjsKLVdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5NaW5pbXVtV2lkdGhQaXhlbHMgPSA0OwotV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLk1pbmltdW1NYXJnaW5QaXhlbHMgPSAxOworICAg
IHN0YXRpYyBjcmVhdGVDb21iaW5lZEJhcnMocmVjb3Jkcywgc2Vjb25kc1BlclBpeGVsLCBncmFw
aERhdGFTb3VyY2UsIGNyZWF0ZUJhckNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgaWYgKCFyZWNv
cmRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkQmFyLlJlbmRlck1vZGUgPSB7Ci0gICAgTm9ybWFsOiAidGltZWxpbmUtcmVjb3JkLWJh
ci1ub3JtYWwtcmVuZGVyLW1vZGUiLAotICAgIEluYWN0aXZlT25seTogInRpbWVsaW5lLXJlY29y
ZC1iYXItaW5hY3RpdmUtb25seS1yZW5kZXItbW9kZSIsCi0gICAgQWN0aXZlT25seTogInRpbWVs
aW5lLXJlY29yZC1iYXItYWN0aXZlLW9ubHktcmVuZGVyLW1vZGUiCi19OworICAgICAgICB2YXIg
c3RhcnRUaW1lID0gZ3JhcGhEYXRhU291cmNlLnN0YXJ0VGltZTsKKyAgICAgICAgdmFyIGN1cnJl
bnRUaW1lID0gZ3JhcGhEYXRhU291cmNlLmN1cnJlbnRUaW1lOworICAgICAgICB2YXIgZW5kVGlt
ZSA9IGdyYXBoRGF0YVNvdXJjZS5lbmRUaW1lOwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRCYXIuY3JlYXRlQ29tYmluZWRCYXJzID0gZnVuY3Rpb24ocmVjb3Jkcywgc2Vjb25kc1BlclBp
eGVsLCBncmFwaERhdGFTb3VyY2UsIGNyZWF0ZUJhckNhbGxiYWNrKQotewotICAgIGlmICghcmVj
b3Jkcy5sZW5ndGgpCi0gICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIHZpc2libGVSZWNvcmRz
ID0gW107CisgICAgICAgIHZhciB1c2VzQWN0aXZlU3RhcnRUaW1lID0gZmFsc2U7CisgICAgICAg
IHZhciBsYXN0UmVjb3JkVHlwZSA9IG51bGw7CiAKLSAgICB2YXIgc3RhcnRUaW1lID0gZ3JhcGhE
YXRhU291cmNlLnN0YXJ0VGltZTsKLSAgICB2YXIgY3VycmVudFRpbWUgPSBncmFwaERhdGFTb3Vy
Y2UuY3VycmVudFRpbWU7Ci0gICAgdmFyIGVuZFRpbWUgPSBncmFwaERhdGFTb3VyY2UuZW5kVGlt
ZTsKKyAgICAgICAgLy8gRklYTUU6IERvIGEgYmluYXJ5IHNlYXJjaCBmb3IgcmVjb3JkcyB0aGF0
IGZhbGwgaW5zaWRlIHN0YXJ0IGFuZCBjdXJyZW50IHRpbWUuCiAKLSAgICB2YXIgdmlzaWJsZVJl
Y29yZHMgPSBbXTsKLSAgICB2YXIgdXNlc0FjdGl2ZVN0YXJ0VGltZSA9IGZhbHNlOwotICAgIHZh
ciBsYXN0UmVjb3JkVHlwZSA9IG51bGw7CisgICAgICAgIGZvciAodmFyIHJlY29yZCBvZiByZWNv
cmRzKSB7CisgICAgICAgICAgICBpZiAoaXNOYU4ocmVjb3JkLnN0YXJ0VGltZSkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAvLyBGSVhNRTogRG8gYSBiaW5hcnkgc2VhcmNoIGZv
ciByZWNvcmRzIHRoYXQgZmFsbCBpbnNpZGUgc3RhcnQgYW5kIGN1cnJlbnQgdGltZS4KKyAgICAg
ICAgICAgIC8vIElmIHRoaXMgYmFyIGlzIGNvbXBsZXRlbHkgYmVmb3JlIHRoZSBib3VuZHMgb2Yg
dGhlIGdyYXBoLCBza2lwIHRoaXMgcmVjb3JkLgorICAgICAgICAgICAgaWYgKHJlY29yZC5lbmRU
aW1lIDwgc3RhcnRUaW1lKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgZm9yICh2
YXIgcmVjb3JkIG9mIHJlY29yZHMpIHsKLSAgICAgICAgaWYgKGlzTmFOKHJlY29yZC5zdGFydFRp
bWUpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAvLyBJZiB0aGlzIHJlY29y
ZCBpcyBjb21wbGV0ZWx5IGFmdGVyIHRoZSBjdXJyZW50IHRpbWUgb3IgZW5kIHRpbWUsIGJyZWFr
IG91dCBub3cuCisgICAgICAgICAgICAvLyBSZWNvcmRzIGFyZSBzb3J0ZWQsIHNvIGFsbCByZWNv
cmRzIGFmdGVyIHRoaXMgd2lsbCBiZSBiZXlvbmQgdGhlIGN1cnJlbnQgb3IgZW5kIHRpbWUgdG9v
LgorICAgICAgICAgICAgaWYgKHJlY29yZC5zdGFydFRpbWUgPiBjdXJyZW50VGltZSB8fCByZWNv
cmQuc3RhcnRUaW1lID4gZW5kVGltZSkKKyAgICAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICAvLyBJZiB0aGlzIGJhciBpcyBjb21wbGV0ZWx5IGJlZm9yZSB0aGUgYm91bmRzIG9mIHRoZSBn
cmFwaCwgc2tpcCB0aGlzIHJlY29yZC4KLSAgICAgICAgaWYgKHJlY29yZC5lbmRUaW1lIDwgc3Rh
cnRUaW1lKQotICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAocmVjb3JkLnVz
ZXNBY3RpdmVTdGFydFRpbWUpCisgICAgICAgICAgICAgICAgdXNlc0FjdGl2ZVN0YXJ0VGltZSA9
IHRydWU7CiAKLSAgICAgICAgLy8gSWYgdGhpcyByZWNvcmQgaXMgY29tcGxldGVseSBhZnRlciB0
aGUgY3VycmVudCB0aW1lIG9yIGVuZCB0aW1lLCBicmVhayBvdXQgbm93LgotICAgICAgICAvLyBS
ZWNvcmRzIGFyZSBzb3J0ZWQsIHNvIGFsbCByZWNvcmRzIGFmdGVyIHRoaXMgd2lsbCBiZSBiZXlv
bmQgdGhlIGN1cnJlbnQgb3IgZW5kIHRpbWUgdG9vLgotICAgICAgICBpZiAocmVjb3JkLnN0YXJ0
VGltZSA+IGN1cnJlbnRUaW1lIHx8IHJlY29yZC5zdGFydFRpbWUgPiBlbmRUaW1lKQotICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyBJZiBvbmUgcmVjb3JkIHVzZXMgYWN0aXZlIHRp
bWUgdGhlIHJlc3QgYXJlIGFzc3VtZWQgdG8gdXNlIGl0LgorICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQocmVjb3JkLnVzZXNBY3RpdmVTdGFydFRpbWUgPT09IHVzZXNBY3RpdmVTdGFydFRpbWUp
OwogCi0gICAgICAgIGlmIChyZWNvcmQudXNlc0FjdGl2ZVN0YXJ0VGltZSkKLSAgICAgICAgICAg
IHVzZXNBY3RpdmVTdGFydFRpbWUgPSB0cnVlOworICAgICAgICAgICAgLy8gT25seSBhIHNpbmds
ZSByZWNvcmQgdHlwZSBpcyBzdXBwb3J0ZWQgcmlnaHQgbm93LgorICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQoIWxhc3RSZWNvcmRUeXBlIHx8IHJlY29yZC50eXBlID09PSBsYXN0UmVjb3JkVHlw
ZSk7CiAKLSAgICAgICAgLy8gSWYgb25lIHJlY29yZCB1c2VzIGFjdGl2ZSB0aW1lIHRoZSByZXN0
IGFyZSBhc3N1bWVkIHRvIHVzZSBpdC4KLSAgICAgICAgY29uc29sZS5hc3NlcnQocmVjb3JkLnVz
ZXNBY3RpdmVTdGFydFRpbWUgPT09IHVzZXNBY3RpdmVTdGFydFRpbWUpOworICAgICAgICAgICAg
dmlzaWJsZVJlY29yZHMucHVzaChyZWNvcmQpOwogCi0gICAgICAgIC8vIE9ubHkgYSBzaW5nbGUg
cmVjb3JkIHR5cGUgaXMgc3VwcG9ydGVkIHJpZ2h0IG5vdy4KLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoIWxhc3RSZWNvcmRUeXBlIHx8IHJlY29yZC50eXBlID09PSBsYXN0UmVjb3JkVHlwZSk7Cisg
ICAgICAgICAgICBsYXN0UmVjb3JkVHlwZSA9IHJlY29yZC50eXBlOworICAgICAgICB9CiAKLSAg
ICAgICAgdmlzaWJsZVJlY29yZHMucHVzaChyZWNvcmQpOworICAgICAgICBpZiAoIXZpc2libGVS
ZWNvcmRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBsYXN0UmVjb3Jk
VHlwZSA9IHJlY29yZC50eXBlOwotICAgIH0KKyAgICAgICAgaWYgKHZpc2libGVSZWNvcmRzLmxl
bmd0aCA9PT0gMSkgeworICAgICAgICAgICAgY3JlYXRlQmFyQ2FsbGJhY2sodmlzaWJsZVJlY29y
ZHMsIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJNb2RlLk5vcm1hbCk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgIGlmICghdmlzaWJsZVJlY29yZHMu
bGVuZ3RoKQotICAgICAgICByZXR1cm47CisgICAgICAgIGZ1bmN0aW9uIGNvbXBhcmVCeUFjdGl2
ZVN0YXJ0VGltZShhLCBiKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYS5hY3RpdmVT
dGFydFRpbWUgLSBiLmFjdGl2ZVN0YXJ0VGltZTsKKyAgICAgICAgfQogCi0gICAgaWYgKHZpc2li
bGVSZWNvcmRzLmxlbmd0aCA9PT0gMSkgewotICAgICAgICBjcmVhdGVCYXJDYWxsYmFjayh2aXNp
YmxlUmVjb3JkcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLlJlbmRlck1vZGUuTm9y
bWFsKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICAgICAgdmFyIG1pbmltdW1EdXJhdGlv
biA9IHNlY29uZHNQZXJQaXhlbCAqIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5NaW5p
bXVtV2lkdGhQaXhlbHM7CisgICAgICAgIHZhciBtaW5pbXVtTWFyZ2luID0gc2Vjb25kc1BlclBp
eGVsICogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLk1pbmltdW1NYXJnaW5QaXhlbHM7
CiAKLSAgICBmdW5jdGlvbiBjb21wYXJlQnlBY3RpdmVTdGFydFRpbWUoYSwgYikKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhLmFjdGl2ZVN0YXJ0VGltZSAtIGIuYWN0aXZlU3RhcnRUaW1lOwotICAg
IH0KKyAgICAgICAgaWYgKHVzZXNBY3RpdmVTdGFydFRpbWUpIHsKKyAgICAgICAgICAgIHZhciBp
bmFjdGl2ZVN0YXJ0VGltZSA9IE5hTjsKKyAgICAgICAgICAgIHZhciBpbmFjdGl2ZUVuZFRpbWUg
PSBOYU47CisgICAgICAgICAgICB2YXIgaW5hY3RpdmVSZWNvcmRzID0gW107CiAKLSAgICB2YXIg
bWluaW11bUR1cmF0aW9uID0gc2Vjb25kc1BlclBpeGVsICogV2ViSW5zcGVjdG9yLlRpbWVsaW5l
UmVjb3JkQmFyLk1pbmltdW1XaWR0aFBpeGVsczsKLSAgICB2YXIgbWluaW11bU1hcmdpbiA9IHNl
Y29uZHNQZXJQaXhlbCAqIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5NaW5pbXVtTWFy
Z2luUGl4ZWxzOworICAgICAgICAgICAgZm9yICh2YXIgcmVjb3JkIG9mIHZpc2libGVSZWNvcmRz
KSB7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHByZXZpb3VzIHJlY29yZCBpcyBm
YXIgZW5vdWdoIGF3YXkgdG8gY3JlYXRlIHRoZSBpbmFjdGl2ZSBiYXIuCisgICAgICAgICAgICAg
ICAgaWYgKCFpc05hTihpbmFjdGl2ZVN0YXJ0VGltZSkgJiYgaW5hY3RpdmVTdGFydFRpbWUgKyBN
YXRoLm1heChpbmFjdGl2ZUVuZFRpbWUgLSBpbmFjdGl2ZVN0YXJ0VGltZSwgbWluaW11bUR1cmF0
aW9uKSArIG1pbmltdW1NYXJnaW4gPD0gcmVjb3JkLnN0YXJ0VGltZSkgeworICAgICAgICAgICAg
ICAgICAgICBjcmVhdGVCYXJDYWxsYmFjayhpbmFjdGl2ZVJlY29yZHMsIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZEJhci5SZW5kZXJNb2RlLkluYWN0aXZlT25seSk7CisgICAgICAgICAgICAg
ICAgICAgIGluYWN0aXZlUmVjb3JkcyA9IFtdOworICAgICAgICAgICAgICAgICAgICBpbmFjdGl2
ZVN0YXJ0VGltZSA9IE5hTjsKKyAgICAgICAgICAgICAgICAgICAgaW5hY3RpdmVFbmRUaW1lID0g
TmFOOworICAgICAgICAgICAgICAgIH0KIAotICAgIGlmICh1c2VzQWN0aXZlU3RhcnRUaW1lKSB7
Ci0gICAgICAgIHZhciBpbmFjdGl2ZVN0YXJ0VGltZSA9IE5hTjsKLSAgICAgICAgdmFyIGluYWN0
aXZlRW5kVGltZSA9IE5hTjsKLSAgICAgICAgdmFyIGluYWN0aXZlUmVjb3JkcyA9IFtdOworICAg
ICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBuZXcgYmFyLCBwZWcgdGhlIHN0YXJ0IHRpbWUu
CisgICAgICAgICAgICAgICAgaWYgKGlzTmFOKGluYWN0aXZlU3RhcnRUaW1lKSkKKyAgICAgICAg
ICAgICAgICAgICAgaW5hY3RpdmVTdGFydFRpbWUgPSByZWNvcmQuc3RhcnRUaW1lOwogCi0gICAg
ICAgIGZvciAodmFyIHJlY29yZCBvZiB2aXNpYmxlUmVjb3JkcykgewotICAgICAgICAgICAgLy8g
Q2hlY2sgaWYgdGhlIHByZXZpb3VzIHJlY29yZCBpcyBmYXIgZW5vdWdoIGF3YXkgdG8gY3JlYXRl
IHRoZSBpbmFjdGl2ZSBiYXIuCi0gICAgICAgICAgICBpZiAoIWlzTmFOKGluYWN0aXZlU3RhcnRU
aW1lKSAmJiBpbmFjdGl2ZVN0YXJ0VGltZSArIE1hdGgubWF4KGluYWN0aXZlRW5kVGltZSAtIGlu
YWN0aXZlU3RhcnRUaW1lLCBtaW5pbXVtRHVyYXRpb24pICsgbWluaW11bU1hcmdpbiA8PSByZWNv
cmQuc3RhcnRUaW1lKSB7Ci0gICAgICAgICAgICAgICAgY3JlYXRlQmFyQ2FsbGJhY2soaW5hY3Rp
dmVSZWNvcmRzLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuUmVuZGVyTW9kZS5JbmFj
dGl2ZU9ubHkpOwotICAgICAgICAgICAgICAgIGluYWN0aXZlUmVjb3JkcyA9IFtdOwotICAgICAg
ICAgICAgICAgIGluYWN0aXZlU3RhcnRUaW1lID0gTmFOOwotICAgICAgICAgICAgICAgIGluYWN0
aXZlRW5kVGltZSA9IE5hTjsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBVcGRh
dGUgdGhlIGVuZCB0aW1lIHRvIGJlIHRoZSBtYXhpbXVtIHdlIGVuY291bnRlci4gaW5hY3RpdmVF
bmRUaW1lIG1pZ2h0IGJlIE5hTiwgc28gInx8IDAiIHRvIHByZXZlbnQgTWF0aC5tYXggZnJvbSBy
ZXR1cm5pbmcgTmFOLgorICAgICAgICAgICAgICAgIGluYWN0aXZlRW5kVGltZSA9IE1hdGgubWF4
KGluYWN0aXZlRW5kVGltZSB8fCAwLCByZWNvcmQuYWN0aXZlU3RhcnRUaW1lKTsKIAotICAgICAg
ICAgICAgLy8gSWYgdGhpcyBpcyBhIG5ldyBiYXIsIHBlZyB0aGUgc3RhcnQgdGltZS4KLSAgICAg
ICAgICAgIGlmIChpc05hTihpbmFjdGl2ZVN0YXJ0VGltZSkpCi0gICAgICAgICAgICAgICAgaW5h
Y3RpdmVTdGFydFRpbWUgPSByZWNvcmQuc3RhcnRUaW1lOworICAgICAgICAgICAgICAgIGluYWN0
aXZlUmVjb3Jkcy5wdXNoKHJlY29yZCk7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIC8v
IFVwZGF0ZSB0aGUgZW5kIHRpbWUgdG8gYmUgdGhlIG1heGltdW0gd2UgZW5jb3VudGVyLiBpbmFj
dGl2ZUVuZFRpbWUgbWlnaHQgYmUgTmFOLCBzbyAifHwgMCIgdG8gcHJldmVudCBNYXRoLm1heCBm
cm9tIHJldHVybmluZyBOYU4uCi0gICAgICAgICAgICBpbmFjdGl2ZUVuZFRpbWUgPSBNYXRoLm1h
eChpbmFjdGl2ZUVuZFRpbWUgfHwgMCwgcmVjb3JkLmFjdGl2ZVN0YXJ0VGltZSk7CisgICAgICAg
ICAgICAvLyBDcmVhdGUgdGhlIGluYWN0aXZlIGJhciBmb3IgdGhlIGxhc3QgcmVjb3JkIGlmIG5l
ZWRlZC4KKyAgICAgICAgICAgIGlmICghaXNOYU4oaW5hY3RpdmVTdGFydFRpbWUpKQorICAgICAg
ICAgICAgICAgIGNyZWF0ZUJhckNhbGxiYWNrKGluYWN0aXZlUmVjb3JkcywgV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUmVjb3JkQmFyLlJlbmRlck1vZGUuSW5hY3RpdmVPbmx5KTsKIAotICAgICAgICAg
ICAgaW5hY3RpdmVSZWNvcmRzLnB1c2gocmVjb3JkKTsKKyAgICAgICAgICAgIHZpc2libGVSZWNv
cmRzLnNvcnQoY29tcGFyZUJ5QWN0aXZlU3RhcnRUaW1lKTsKICAgICAgICAgfQogCi0gICAgICAg
IC8vIENyZWF0ZSB0aGUgaW5hY3RpdmUgYmFyIGZvciB0aGUgbGFzdCByZWNvcmQgaWYgbmVlZGVk
LgotICAgICAgICBpZiAoIWlzTmFOKGluYWN0aXZlU3RhcnRUaW1lKSkKLSAgICAgICAgICAgIGNy
ZWF0ZUJhckNhbGxiYWNrKGluYWN0aXZlUmVjb3JkcywgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVj
b3JkQmFyLlJlbmRlck1vZGUuSW5hY3RpdmVPbmx5KTsKLQotICAgICAgICB2aXNpYmxlUmVjb3Jk
cy5zb3J0KGNvbXBhcmVCeUFjdGl2ZVN0YXJ0VGltZSk7Ci0gICAgfQorICAgICAgICBsYXN0UmVj
b3JkVHlwZSA9IG51bGw7CiAKLSAgICBsYXN0UmVjb3JkVHlwZSA9IG51bGw7CisgICAgICAgIHZh
ciBhY3RpdmVTdGFydFRpbWUgPSBOYU47CisgICAgICAgIHZhciBhY3RpdmVFbmRUaW1lID0gTmFO
OworICAgICAgICB2YXIgYWN0aXZlUmVjb3JkcyA9IFtdOwogCi0gICAgdmFyIGFjdGl2ZVN0YXJ0
VGltZSA9IE5hTjsKLSAgICB2YXIgYWN0aXZlRW5kVGltZSA9IE5hTjsKLSAgICB2YXIgYWN0aXZl
UmVjb3JkcyA9IFtdOworICAgICAgICB2YXIgc3RhcnRUaW1lUHJvcGVydHkgPSB1c2VzQWN0aXZl
U3RhcnRUaW1lID8gImFjdGl2ZVN0YXJ0VGltZSIgOiAic3RhcnRUaW1lIjsKIAotICAgIHZhciBz
dGFydFRpbWVQcm9wZXJ0eSA9IHVzZXNBY3RpdmVTdGFydFRpbWUgPyAiYWN0aXZlU3RhcnRUaW1l
IiA6ICJzdGFydFRpbWUiOworICAgICAgICBmb3IgKHZhciByZWNvcmQgb2YgdmlzaWJsZVJlY29y
ZHMpIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBwcmV2aW91cyByZWNvcmQgaXMgZmFy
IGVub3VnaCBhd2F5IHRvIGNyZWF0ZSB0aGUgYWN0aXZlIGJhci4gV2UgYWxzbyBjcmVhdGUgaXQg
bm93IGlmIHRoZSBjdXJyZW50IHJlY29yZCBoYXMgbm8gYWN0aXZlIHN0YXRlIHRpbWUuCisgICAg
ICAgICAgICBpZiAoIWlzTmFOKGFjdGl2ZVN0YXJ0VGltZSkgJiYgKGFjdGl2ZVN0YXJ0VGltZSAr
IE1hdGgubWF4KGFjdGl2ZUVuZFRpbWUgLSBhY3RpdmVTdGFydFRpbWUsIG1pbmltdW1EdXJhdGlv
bikgKyBtaW5pbXVtTWFyZ2luIDw9IHJlY29yZFtzdGFydFRpbWVQcm9wZXJ0eV0KKyAgICAgICAg
ICAgICAgICB8fCAoaXNOYU4ocmVjb3JkW3N0YXJ0VGltZVByb3BlcnR5XSkgJiYgIWlzTmFOKGFj
dGl2ZUVuZFRpbWUpKSkpIHsKKyAgICAgICAgICAgICAgICBjcmVhdGVCYXJDYWxsYmFjayhhY3Rp
dmVSZWNvcmRzLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuUmVuZGVyTW9kZS5BY3Rp
dmVPbmx5KTsKKyAgICAgICAgICAgICAgICBhY3RpdmVSZWNvcmRzID0gW107CisgICAgICAgICAg
ICAgICAgYWN0aXZlU3RhcnRUaW1lID0gTmFOOworICAgICAgICAgICAgICAgIGFjdGl2ZUVuZFRp
bWUgPSBOYU47CisgICAgICAgICAgICB9CiAKLSAgICBmb3IgKHZhciByZWNvcmQgb2YgdmlzaWJs
ZVJlY29yZHMpIHsKLSAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHByZXZpb3VzIHJlY29yZCBpcyBm
YXIgZW5vdWdoIGF3YXkgdG8gY3JlYXRlIHRoZSBhY3RpdmUgYmFyLiBXZSBhbHNvIGNyZWF0ZSBp
dCBub3cgaWYgdGhlIGN1cnJlbnQgcmVjb3JkIGhhcyBubyBhY3RpdmUgc3RhdGUgdGltZS4KLSAg
ICAgICAgaWYgKCFpc05hTihhY3RpdmVTdGFydFRpbWUpICYmIChhY3RpdmVTdGFydFRpbWUgKyBN
YXRoLm1heChhY3RpdmVFbmRUaW1lIC0gYWN0aXZlU3RhcnRUaW1lLCBtaW5pbXVtRHVyYXRpb24p
ICsgbWluaW11bU1hcmdpbiA8PSByZWNvcmRbc3RhcnRUaW1lUHJvcGVydHldCi0gICAgICAgICAg
ICB8fCAoaXNOYU4ocmVjb3JkW3N0YXJ0VGltZVByb3BlcnR5XSkgJiYgIWlzTmFOKGFjdGl2ZUVu
ZFRpbWUpKSkpIHsKLSAgICAgICAgICAgIGNyZWF0ZUJhckNhbGxiYWNrKGFjdGl2ZVJlY29yZHMs
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJNb2RlLkFjdGl2ZU9ubHkpOwot
ICAgICAgICAgICAgYWN0aXZlUmVjb3JkcyA9IFtdOwotICAgICAgICAgICAgYWN0aXZlU3RhcnRU
aW1lID0gTmFOOwotICAgICAgICAgICAgYWN0aXZlRW5kVGltZSA9IE5hTjsKLSAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGlzTmFOKHJlY29yZFtzdGFydFRpbWVQcm9wZXJ0eV0pKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmIChpc05hTihyZWNvcmRbc3RhcnRUaW1l
UHJvcGVydHldKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgLy8gSWYgdGhp
cyBpcyBhIG5ldyBiYXIsIHBlZyB0aGUgc3RhcnQgdGltZS4KKyAgICAgICAgICAgIGlmIChpc05h
TihhY3RpdmVTdGFydFRpbWUpKQorICAgICAgICAgICAgICAgIGFjdGl2ZVN0YXJ0VGltZSA9IHJl
Y29yZFtzdGFydFRpbWVQcm9wZXJ0eV07CiAKLSAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG5ldyBi
YXIsIHBlZyB0aGUgc3RhcnQgdGltZS4KLSAgICAgICAgaWYgKGlzTmFOKGFjdGl2ZVN0YXJ0VGlt
ZSkpCi0gICAgICAgICAgICBhY3RpdmVTdGFydFRpbWUgPSByZWNvcmRbc3RhcnRUaW1lUHJvcGVy
dHldOworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBlbmQgdGltZSB0byBiZSB0aGUgbWF4aW11
bSB3ZSBlbmNvdW50ZXIuIGFjdGl2ZUVuZFRpbWUgbWlnaHQgYmUgTmFOLCBzbyAifHwgMCIgdG8g
cHJldmVudCBNYXRoLm1heCBmcm9tIHJldHVybmluZyBOYU4uCisgICAgICAgICAgICBpZiAoIWlz
TmFOKHJlY29yZC5lbmRUaW1lKSkKKyAgICAgICAgICAgICAgICBhY3RpdmVFbmRUaW1lID0gTWF0
aC5tYXgoYWN0aXZlRW5kVGltZSB8fCAwLCByZWNvcmQuZW5kVGltZSk7CiAKLSAgICAgICAgLy8g
VXBkYXRlIHRoZSBlbmQgdGltZSB0byBiZSB0aGUgbWF4aW11bSB3ZSBlbmNvdW50ZXIuIGFjdGl2
ZUVuZFRpbWUgbWlnaHQgYmUgTmFOLCBzbyAifHwgMCIgdG8gcHJldmVudCBNYXRoLm1heCBmcm9t
IHJldHVybmluZyBOYU4uCi0gICAgICAgIGlmICghaXNOYU4ocmVjb3JkLmVuZFRpbWUpKQotICAg
ICAgICAgICAgYWN0aXZlRW5kVGltZSA9IE1hdGgubWF4KGFjdGl2ZUVuZFRpbWUgfHwgMCwgcmVj
b3JkLmVuZFRpbWUpOworICAgICAgICAgICAgYWN0aXZlUmVjb3Jkcy5wdXNoKHJlY29yZCk7Cisg
ICAgICAgIH0KIAotICAgICAgICBhY3RpdmVSZWNvcmRzLnB1c2gocmVjb3JkKTsKKyAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBhY3RpdmUgYmFyIGZvciB0aGUgbGFzdCByZWNvcmQgaWYgbmVlZGVkLgor
ICAgICAgICBpZiAoIWlzTmFOKGFjdGl2ZVN0YXJ0VGltZSkpCisgICAgICAgICAgICBjcmVhdGVC
YXJDYWxsYmFjayhhY3RpdmVSZWNvcmRzLCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIu
UmVuZGVyTW9kZS5BY3RpdmVPbmx5KTsKICAgICB9CiAKLSAgICAvLyBDcmVhdGUgdGhlIGFjdGl2
ZSBiYXIgZm9yIHRoZSBsYXN0IHJlY29yZCBpZiBuZWVkZWQuCi0gICAgaWYgKCFpc05hTihhY3Rp
dmVTdGFydFRpbWUpKQotICAgICAgICBjcmVhdGVCYXJDYWxsYmFjayhhY3RpdmVSZWNvcmRzLCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuUmVuZGVyTW9kZS5BY3RpdmVPbmx5KTsKLX07
Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhciwKLSAgICBfX3Byb3RvX186
IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlLAotCiAgICAgLy8gUHVibGljCiAKICAgICBn
ZXQgZWxlbWVudCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbWVudDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCByZW5kZXJNb2RlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9yZW5kZXJNb2RlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJlbmRlck1vZGUocmVu
ZGVyTW9kZSkKICAgICB7CiAgICAgICAgIHRoaXMuX3JlbmRlck1vZGUgPSByZW5kZXJNb2RlIHx8
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5SZW5kZXJNb2RlLk5vcm1hbDsKLSAgICB9
LAorICAgIH0KIAogICAgIGdldCByZWNvcmRzKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9yZWNvcmRzOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IHJlY29yZHMocmVjb3JkcykKICAg
ICB7CkBAIC0yMTksOSArMjAxLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgLy8gQXNzdW1lIGFsbCByZWNvcmRzIGFyZSB0aGUgc2FtZSB0
eXBlLgogICAgICAgICBpZiAodGhpcy5fcmVjb3Jkcy5sZW5ndGgpCiAgICAgICAgICAgICB0aGlz
Ll9lbGVtZW50LmNsYXNzTGlzdC5hZGQodGhpcy5fcmVjb3Jkc1swXS50eXBlKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHJlZnJlc2g6IGZ1bmN0aW9uKGdyYXBoRGF0YVNvdXJjZSkKKyAgICByZWZy
ZXNoKGdyYXBoRGF0YVNvdXJjZSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fcmVjb3JkcyB8
fCAhdGhpcy5fcmVjb3Jkcy5sZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0z
MzIsMTEgKzMxNCwxMSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgdGhpcy5fYWN0aXZlQmFyRWxlbWVudC5yZW1vdmUoKTsKIAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIFByaXZhdGUKIAotICAg
IF91cGRhdGVFbGVtZW50UG9zaXRpb246IGZ1bmN0aW9uKGVsZW1lbnQsIG5ld1Bvc2l0aW9uLCBw
cm9wZXJ0eSkKKyAgICBfdXBkYXRlRWxlbWVudFBvc2l0aW9uKGVsZW1lbnQsIG5ld1Bvc2l0aW9u
LCBwcm9wZXJ0eSkKICAgICB7CiAgICAgICAgIG5ld1Bvc2l0aW9uICo9IDEwMDsKICAgICAgICAg
bmV3UG9zaXRpb24gPSBuZXdQb3NpdGlvbi50b0ZpeGVkKDIpOwpAQCAtMzQ2LDMgKzMyOCwxNiBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIucHJvdG90eXBlID0gewogICAgICAgICAg
ICAgZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBuZXdQb3NpdGlvbiArICIlIjsKICAgICB9CiB9
OworCitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuQmFyU2VnbWVudFN0eWxlQ2xhc3NO
YW1lID0gInNlZ21lbnQiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLkluYWN0aXZl
U3R5bGVDbGFzc05hbWUgPSAiaW5hY3RpdmUiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3Jk
QmFyLlVuZmluaXNoZWRTdHlsZUNsYXNzTmFtZSA9ICJ1bmZpbmlzaGVkIjsKK1dlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZEJhci5IYXNJbmFjdGl2ZVNlZ21lbnRTdHlsZUNsYXNzTmFtZSA9ICJo
YXMtaW5hY3RpdmUtc2VnbWVudCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRCYXIuTWlu
aW11bVdpZHRoUGl4ZWxzID0gNDsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEJhci5NaW5p
bXVtTWFyZ2luUGl4ZWxzID0gMTsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkQmFyLlJl
bmRlck1vZGUgPSB7CisgICAgTm9ybWFsOiBTeW1ib2woInRpbWVsaW5lLXJlY29yZC1iYXItbm9y
bWFsLXJlbmRlci1tb2RlIiksCisgICAgSW5hY3RpdmVPbmx5OiBTeW1ib2woInRpbWVsaW5lLXJl
Y29yZC1iYXItaW5hY3RpdmUtb25seS1yZW5kZXItbW9kZSIpLAorICAgIEFjdGl2ZU9ubHk6IFN5
bWJvbCgidGltZWxpbmUtcmVjb3JkLWJhci1hY3RpdmUtb25seS1yZW5kZXItbW9kZSIpCit9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGlt
ZWxpbmVSZWNvcmRGcmFtZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RpbWVsaW5lUmVjb3JkRnJhbWUuanMKaW5kZXggODAyNzkyNi4uNWZhOWFkMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxp
bmVSZWNvcmRGcmFtZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UaW1lbGluZVJlY29yZEZyYW1lLmpzCkBAIC0yMyw5OCArMjMsOTAgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRGcmFtZSA9IGZ1bmN0aW9uKGdyYXBoRGF0YVNvdXJjZSwgcmVjb3JkcykKKworV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUgPSBjbGFzcyBUaW1lbGluZVJlY29yZEZyYW1l
IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRo
aXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgot
ICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICBjb25zdHJ1Y3Rvcihn
cmFwaERhdGFTb3VyY2UsIHJlY29yZHMpCisgICAgeworICAgICAgICBzdXBlcigpOwogCi0gICAg
dGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgIHRoaXMu
X2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5T
dHlsZUNsYXNzTmFtZSk7CisgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJ0aW1l
bGluZS1yZWNvcmQtZnJhbWUiKTsKIAotICAgIHRoaXMuX2dyYXBoRGF0YVNvdXJjZSA9IGdyYXBo
RGF0YVNvdXJjZTsKLSAgICB0aGlzLnJlY29yZHMgPSByZWNvcmRzIHx8IFtdOwotfTsKKyAgICAg
ICAgdGhpcy5fZ3JhcGhEYXRhU291cmNlID0gZ3JhcGhEYXRhU291cmNlOworICAgICAgICB0aGlz
LnJlY29yZHMgPSByZWNvcmRzIHx8IFtdOworICAgIH0KIAotLy8gRklYTUU6IE1vdmUgdG8gYSBX
ZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzIGFuZCB3ZSBjYW4gcmVtb3ZlIHRoaXMuCi1XZWJJ
bnNwZWN0b3IuT2JqZWN0LmRlcHJlY2F0ZWRBZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZSk7CisgICAgLy8gU3RhdGljCiAKLVdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZEZyYW1lLlN0eWxlQ2xhc3NOYW1lID0gInRpbWVsaW5lLXJlY29yZC1m
cmFtZSI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5TaXh0eUZwc0ZyYW1lQnVk
Z2V0ID0gMC4wMTY2OwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUuTWluaW11bVdp
ZHRoUGl4ZWxzID0gNjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLk1pbmltdW1N
YXJnaW5QaXhlbHMgPSAxOworICAgIHN0YXRpYyBjcmVhdGVDb21iaW5lZEZyYW1lcyhyZWNvcmRz
LCBzZWNvbmRzUGVyUGl4ZWwsIGdyYXBoRGF0YVNvdXJjZSwgY3JlYXRlRnJhbWVDYWxsYmFjaykK
KyAgICB7CisgICAgICAgIGlmICghcmVjb3Jkcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47
CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLmNyZWF0ZUNvbWJpbmVkRnJhbWVz
ID0gZnVuY3Rpb24ocmVjb3Jkcywgc2Vjb25kc1BlclBpeGVsLCBncmFwaERhdGFTb3VyY2UsIGNy
ZWF0ZUZyYW1lQ2FsbGJhY2spCi17Ci0gICAgaWYgKCFyZWNvcmRzLmxlbmd0aCkKLSAgICAgICAg
cmV0dXJuOworICAgICAgICB2YXIgc3RhcnRUaW1lID0gZ3JhcGhEYXRhU291cmNlLnN0YXJ0VGlt
ZTsKKyAgICAgICAgdmFyIGN1cnJlbnRUaW1lID0gZ3JhcGhEYXRhU291cmNlLmN1cnJlbnRUaW1l
OworICAgICAgICB2YXIgZW5kVGltZSA9IGdyYXBoRGF0YVNvdXJjZS5lbmRUaW1lOwogCi0gICAg
dmFyIHN0YXJ0VGltZSA9IGdyYXBoRGF0YVNvdXJjZS5zdGFydFRpbWU7Ci0gICAgdmFyIGN1cnJl
bnRUaW1lID0gZ3JhcGhEYXRhU291cmNlLmN1cnJlbnRUaW1lOwotICAgIHZhciBlbmRUaW1lID0g
Z3JhcGhEYXRhU291cmNlLmVuZFRpbWU7CisgICAgICAgIHZhciB2aXNpYmxlUmVjb3JkcyA9IFtd
OwogCi0gICAgdmFyIHZpc2libGVSZWNvcmRzID0gW107CisgICAgICAgIGZvciAodmFyIHJlY29y
ZCBvZiByZWNvcmRzKSB7CisgICAgICAgICAgICBpZiAoaXNOYU4ocmVjb3JkLnN0YXJ0VGltZSkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICBmb3IgKHZhciByZWNvcmQgb2YgcmVj
b3JkcykgewotICAgICAgICBpZiAoaXNOYU4ocmVjb3JkLnN0YXJ0VGltZSkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKKyAgICAgICAgICAgIC8vIElmIHRoaXMgZnJhbWUgaXMgY29tcGxldGVseSBi
ZWZvcmUgdGhlIGJvdW5kcyBvZiB0aGUgZ3JhcGgsIHNraXAgdGhpcyByZWNvcmQuCisgICAgICAg
ICAgICBpZiAocmVjb3JkLmVuZFRpbWUgPCBzdGFydFRpbWUpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgLy8gSWYgdGhpcyBmcmFtZSBpcyBjb21wbGV0ZWx5IGJlZm9yZSB0
aGUgYm91bmRzIG9mIHRoZSBncmFwaCwgc2tpcCB0aGlzIHJlY29yZC4KLSAgICAgICAgaWYgKHJl
Y29yZC5lbmRUaW1lIDwgc3RhcnRUaW1lKQotICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAvLyBJZiB0aGlzIHJlY29yZCBpcyBjb21wbGV0ZWx5IGFmdGVyIHRoZSBjdXJyZW50IHRp
bWUgb3IgZW5kIHRpbWUsIGJyZWFrIG91dCBub3cuCisgICAgICAgICAgICAvLyBSZWNvcmRzIGFy
ZSBzb3J0ZWQsIHNvIGFsbCByZWNvcmRzIGFmdGVyIHRoaXMgd2lsbCBiZSBiZXlvbmQgdGhlIGN1
cnJlbnQgb3IgZW5kIHRpbWUgdG9vLgorICAgICAgICAgICAgaWYgKHJlY29yZC5zdGFydFRpbWUg
PiBjdXJyZW50VGltZSB8fCByZWNvcmQuc3RhcnRUaW1lID4gZW5kVGltZSkKKyAgICAgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICAvLyBJZiB0aGlzIHJlY29yZCBpcyBjb21wbGV0ZWx5IGFm
dGVyIHRoZSBjdXJyZW50IHRpbWUgb3IgZW5kIHRpbWUsIGJyZWFrIG91dCBub3cuCi0gICAgICAg
IC8vIFJlY29yZHMgYXJlIHNvcnRlZCwgc28gYWxsIHJlY29yZHMgYWZ0ZXIgdGhpcyB3aWxsIGJl
IGJleW9uZCB0aGUgY3VycmVudCBvciBlbmQgdGltZSB0b28uCi0gICAgICAgIGlmIChyZWNvcmQu
c3RhcnRUaW1lID4gY3VycmVudFRpbWUgfHwgcmVjb3JkLnN0YXJ0VGltZSA+IGVuZFRpbWUpCi0g
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHZpc2libGVSZWNvcmRzLnB1c2gocmVjb3Jk
KTsKKyAgICAgICAgfQogCi0gICAgICAgIHZpc2libGVSZWNvcmRzLnB1c2gocmVjb3JkKTsKLSAg
ICB9CisgICAgICAgIGlmICghdmlzaWJsZVJlY29yZHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKCF2aXNpYmxlUmVjb3Jkcy5sZW5ndGgpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgdmFyIG1pbmltdW1GcmFtZUR1cmF0aW9uID0gc2Vjb25kc1BlclBpeGVsICogV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUuTWluaW11bVdpZHRoUGl4ZWxzOworICAgICAg
ICB2YXIgbWluaW11bU1hcmdpbiA9IHNlY29uZHNQZXJQaXhlbCAqIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZEZyYW1lLk1pbmltdW1NYXJnaW5QaXhlbHM7CiAKLSAgICB2YXIgbWluaW11bUZy
YW1lRHVyYXRpb24gPSBzZWNvbmRzUGVyUGl4ZWwgKiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRGcmFtZS5NaW5pbXVtV2lkdGhQaXhlbHM7Ci0gICAgdmFyIG1pbmltdW1NYXJnaW4gPSBzZWNv
bmRzUGVyUGl4ZWwgKiBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5NaW5pbXVtTWFy
Z2luUGl4ZWxzOworICAgICAgICB2YXIgYWN0aXZlU3RhcnRUaW1lID0gTmFOOworICAgICAgICB2
YXIgYWN0aXZlRW5kVGltZSA9IE5hTjsKKyAgICAgICAgdmFyIGFjdGl2ZVJlY29yZHMgPSBbXTsK
IAotICAgIHZhciBhY3RpdmVTdGFydFRpbWUgPSBOYU47Ci0gICAgdmFyIGFjdGl2ZUVuZFRpbWUg
PSBOYU47Ci0gICAgdmFyIGFjdGl2ZVJlY29yZHMgPSBbXTsKKyAgICAgICAgZm9yICh2YXIgcmVj
b3JkIG9mIHZpc2libGVSZWNvcmRzKSB7CisgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgcHJl
dmlvdXMgcmVjb3JkIGlzIGZhciBlbm91Z2ggYXdheSB0byBjcmVhdGUgdGhlIGZyYW1lLgorICAg
ICAgICAgICAgaWYgKCFpc05hTihhY3RpdmVTdGFydFRpbWUpICYmIChhY3RpdmVTdGFydFRpbWUg
KyBNYXRoLm1heChhY3RpdmVFbmRUaW1lIC0gYWN0aXZlU3RhcnRUaW1lLCBtaW5pbXVtRnJhbWVE
dXJhdGlvbikgKyBtaW5pbXVtTWFyZ2luIDw9IHJlY29yZC5zdGFydFRpbWUpKSB7CisgICAgICAg
ICAgICAgICAgY3JlYXRlRnJhbWVDYWxsYmFjayhhY3RpdmVSZWNvcmRzKTsKKyAgICAgICAgICAg
ICAgICBhY3RpdmVSZWNvcmRzID0gW107CisgICAgICAgICAgICAgICAgYWN0aXZlU3RhcnRUaW1l
ID0gTmFOOworICAgICAgICAgICAgICAgIGFjdGl2ZUVuZFRpbWUgPSBOYU47CisgICAgICAgICAg
ICB9CiAKLSAgICBmb3IgKHZhciByZWNvcmQgb2YgdmlzaWJsZVJlY29yZHMpIHsKLSAgICAgICAg
Ly8gQ2hlY2sgaWYgdGhlIHByZXZpb3VzIHJlY29yZCBpcyBmYXIgZW5vdWdoIGF3YXkgdG8gY3Jl
YXRlIHRoZSBmcmFtZS4KLSAgICAgICAgaWYgKCFpc05hTihhY3RpdmVTdGFydFRpbWUpICYmIChh
Y3RpdmVTdGFydFRpbWUgKyBNYXRoLm1heChhY3RpdmVFbmRUaW1lIC0gYWN0aXZlU3RhcnRUaW1l
LCBtaW5pbXVtRnJhbWVEdXJhdGlvbikgKyBtaW5pbXVtTWFyZ2luIDw9IHJlY29yZC5zdGFydFRp
bWUpKSB7Ci0gICAgICAgICAgICBjcmVhdGVGcmFtZUNhbGxiYWNrKGFjdGl2ZVJlY29yZHMpOwot
ICAgICAgICAgICAgYWN0aXZlUmVjb3JkcyA9IFtdOwotICAgICAgICAgICAgYWN0aXZlU3RhcnRU
aW1lID0gTmFOOwotICAgICAgICAgICAgYWN0aXZlRW5kVGltZSA9IE5hTjsKLSAgICAgICAgfQor
ICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG5ldyBmcmFtZSwgcGVnIHRoZSBzdGFydCB0aW1l
LgorICAgICAgICAgICAgaWYgKGlzTmFOKGFjdGl2ZVN0YXJ0VGltZSkpCisgICAgICAgICAgICAg
ICAgYWN0aXZlU3RhcnRUaW1lID0gcmVjb3JkLnN0YXJ0VGltZTsKIAotICAgICAgICAvLyBJZiB0
aGlzIGlzIGEgbmV3IGZyYW1lLCBwZWcgdGhlIHN0YXJ0IHRpbWUuCi0gICAgICAgIGlmIChpc05h
TihhY3RpdmVTdGFydFRpbWUpKQotICAgICAgICAgICAgYWN0aXZlU3RhcnRUaW1lID0gcmVjb3Jk
LnN0YXJ0VGltZTsKKyAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZW5kIHRpbWUgdG8gYmUgdGhl
IG1heGltdW0gd2UgZW5jb3VudGVyLiBlbmRUaW1lIG1pZ2h0IGJlIE5hTiwgc28gInx8IDAiIHRv
IHByZXZlbnQgTWF0aC5tYXggZnJvbSByZXR1cm5pbmcgTmFOLgorICAgICAgICAgICAgaWYgKCFp
c05hTihyZWNvcmQuZW5kVGltZSkpCisgICAgICAgICAgICAgICAgYWN0aXZlRW5kVGltZSA9IE1h
dGgubWF4KGFjdGl2ZUVuZFRpbWUgfHwgMCwgcmVjb3JkLmVuZFRpbWUpOwogCi0gICAgICAgIC8v
IFVwZGF0ZSB0aGUgZW5kIHRpbWUgdG8gYmUgdGhlIG1heGltdW0gd2UgZW5jb3VudGVyLiBlbmRU
aW1lIG1pZ2h0IGJlIE5hTiwgc28gInx8IDAiIHRvIHByZXZlbnQgTWF0aC5tYXggZnJvbSByZXR1
cm5pbmcgTmFOLgotICAgICAgICBpZiAoIWlzTmFOKHJlY29yZC5lbmRUaW1lKSkKLSAgICAgICAg
ICAgIGFjdGl2ZUVuZFRpbWUgPSBNYXRoLm1heChhY3RpdmVFbmRUaW1lIHx8IDAsIHJlY29yZC5l
bmRUaW1lKTsKKyAgICAgICAgICAgIGFjdGl2ZVJlY29yZHMucHVzaChyZWNvcmQpOworICAgICAg
ICB9CiAKLSAgICAgICAgYWN0aXZlUmVjb3Jkcy5wdXNoKHJlY29yZCk7CisgICAgICAgIC8vIENy
ZWF0ZSB0aGUgYWN0aXZlIGZyYW1lIGZvciB0aGUgbGFzdCByZWNvcmQgaWYgbmVlZGVkLgorICAg
ICAgICBpZiAoIWlzTmFOKGFjdGl2ZVN0YXJ0VGltZSkpCisgICAgICAgICAgICBjcmVhdGVGcmFt
ZUNhbGxiYWNrKGFjdGl2ZVJlY29yZHMpOwogICAgIH0KIAotICAgIC8vIENyZWF0ZSB0aGUgYWN0
aXZlIGZyYW1lIGZvciB0aGUgbGFzdCByZWNvcmQgaWYgbmVlZGVkLgotICAgIGlmICghaXNOYU4o
YWN0aXZlU3RhcnRUaW1lKSkKLSAgICAgICAgY3JlYXRlRnJhbWVDYWxsYmFjayhhY3RpdmVSZWNv
cmRzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUsCi0g
ICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKLQogICAgIC8vIFB1
YmxpYwogCiAgICAgZ2V0IGVsZW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Vs
ZW1lbnQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZHVyYXRpb24oKQogICAgIHsKQEAgLTEy
MiwxMiArMTE0LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHJldHVybiAwOwogCiAgICAgICAgIHJldHVybiB0aGlzLnJlY29y
ZHMubGFzdFZhbHVlLmVuZFRpbWUgLSB0aGlzLnJlY29yZHNbMF0uc3RhcnRUaW1lOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHJlY29yZHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X3JlY29yZHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgcmVjb3JkcyhyZWNvcmRzKQogICAg
IHsKQEAgLTEzNyw3ICsxMjksNyBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZWNvcmRzID0gW3JlY29yZHNdOwogCiAgICAgICAg
IHRoaXMuX3JlY29yZHMgPSByZWNvcmRzOwotICAgIH0sCisgICAgfQogCiAgICAgcmVmcmVzaChn
cmFwaERhdGFTb3VyY2UpCiAgICAgewpAQCAtMTc1LDcgKzE2Nyw3IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZEZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlQ2hp
bGRFbGVtZW50cyhncmFwaERhdGFTb3VyY2UpOwogCiAgICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0sCisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCkBAIC0yMTIsNyArMjA0LDcgQEAgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuIGVsZW1lbnQ7CiAgICAgICAgIH0KIAotICAgICAgICBmb3IgKHR5cGUgaW4gV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUmVjb3JkLlR5cGUpIHsKKyAgICAgICAgZm9yICh2YXIgdHlwZSBpbiBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZSkgewogICAgICAgICAgICAgdmFyIHJlY29yZFR5
cGUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmQuVHlwZVt0eXBlXTsKICAgICAgICAgICAg
IHZhciBkdXJhdGlvbiA9IGRpc3BsYXlSZWNvcmQuZHVyYXRpb25Gb3JSZWNvcmRzKHJlY29yZFR5
cGUpOwogICAgICAgICAgICAgaWYgKGR1cmF0aW9uID09PSAwKQpAQCAtMjQ5LDcgKzI0MSw3IEBA
IFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLnByb3RvdHlwZSA9IHsKICAgICAgICAg
fQogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUVsZW1lbnRQb3NpdGlvbihmcmFtZUVsZW1lbnQsIGZy
YW1lV2lkdGgsICJ3aWR0aCIpOwotICAgIH0sCisgICAgfQogCiAgICAgX3VwZGF0ZUVsZW1lbnRQ
b3NpdGlvbihlbGVtZW50LCBuZXdQb3NpdGlvbiwgcHJvcGVydHkpCiAgICAgewpAQCAtMjYxLDMg
KzI1Myw3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGVbcHJvcGVydHldID0gbmV3UG9zaXRpb24gKyAiJSI7
CiAgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkRnJhbWUuU2l4dHlGcHNG
cmFtZUJ1ZGdldCA9IDAuMDE2NjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZEZyYW1lLk1p
bmltdW1XaWR0aFBpeGVscyA9IDY7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRGcmFtZS5N
aW5pbXVtTWFyZ2luUGl4ZWxzID0gMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJlY29yZGlu
Z0NvbnRlbnRWaWV3LmpzCmluZGV4IDE0MTk3NTUuLjUwZTY1NTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUmVjb3JkaW5nQ29u
dGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CkBAIC0yNCw3OSArMjQsNzIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmll
dyA9IGZ1bmN0aW9uKHJlY29yZGluZykKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0Nv
bnRlbnRWaWV3ID0gY2xhc3MgVGltZWxpbmVSZWNvcmRpbmdDb250ZW50VmlldyBleHRlbmRzIFdl
Ykluc3BlY3Rvci5Db250ZW50VmlldwogewotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5j
YWxsKHRoaXMsIHJlY29yZGluZyk7Ci0KLSAgICB0aGlzLl9yZWNvcmRpbmcgPSByZWNvcmRpbmc7
Ci0KLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRpbmdDb250ZW50Vmlldy5TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICB0aGlzLl90aW1lbGlu
ZU92ZXJ2aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3KHRoaXMuX3JlY29y
ZGluZyk7Ci0gICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5UaW1lbGluZU92ZXJ2aWV3LkV2ZW50LlRpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQs
IHRoaXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQsIHRoaXMpOwotICAgIHRoaXMuZWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl90aW1lbGluZU92ZXJ2aWV3LmVsZW1lbnQpOworICAgIGNvbnN0
cnVjdG9yKHJlY29yZGluZykKKyAgICB7CisgICAgICAgIHN1cGVyKHJlY29yZGluZyk7CiAKLSAg
ICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lciA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGVudFZp
ZXdDb250YWluZXIoKTsKLSAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29u
dGVudFZpZXdEaWRDaGFuZ2UsIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhp
cyk7Ci0gICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NvbnRlbnRWaWV3Q29udGFp
bmVyLmVsZW1lbnQpOworICAgICAgICB0aGlzLl9yZWNvcmRpbmcgPSByZWNvcmRpbmc7CiAKLSAg
ICB2YXIgdHJhc2hJbWFnZTsKLSAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5
TWFjT1MpCi0gICAgICAgIHRyYXNoSW1hZ2UgPSB7c3JjOiAiSW1hZ2VzL0xlZ2FjeS9OYXZpZ2F0
aW9uSXRlbVRyYXNoLnN2ZyIsIHdpZHRoOiAxNiwgaGVpZ2h0OiAxNn07Ci0gICAgZWxzZQotICAg
ICAgICB0cmFzaEltYWdlID0ge3NyYzogIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVRyYXNoLnN2ZyIs
IHdpZHRoOiAxNSwgaGVpZ2h0OiAxNX07CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3Qu
YWRkKCJ0aW1lbGluZS1yZWNvcmRpbmciKTsKIAotICAgIHRoaXMuX2NsZWFyVGltZWxpbmVOYXZp
Z2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oImNsZWFy
LXRpbWVsaW5lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDbGVhciBUaW1lbGluZSIpLCB0cmFz
aEltYWdlLnNyYywgdHJhc2hJbWFnZS53aWR0aCwgdHJhc2hJbWFnZS5oZWlnaHQpOwotICAgIHRo
aXMuX2NsZWFyVGltZWxpbmVOYXZpZ2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9jbGVhclRpbWVs
aW5lLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldyA9IG5ldyBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVPdmVydmlldyh0aGlzLl9yZWNvcmRpbmcpOworICAgICAgICB0aGlzLl90
aW1lbGluZU92ZXJ2aWV3LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lT3Zl
cnZpZXcuRXZlbnQuVGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZCwgdGhpcy5fdGltZVJhbmdlU2Vs
ZWN0aW9uQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl90aW1lbGluZU92ZXJ2aWV3LmVsZW1lbnQpOwogCi0gICAgdGhpcy5fb3ZlcnZpZXdUaW1l
bGluZVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3VGltZWxpbmVWaWV3KHJlY29yZGlu
Zyk7Ci0gICAgdGhpcy5fb3ZlcnZpZXdUaW1lbGluZVZpZXcuc2Vjb25kc1BlclBpeGVsID0gdGhp
cy5fdGltZWxpbmVPdmVydmlldy5zZWNvbmRzUGVyUGl4ZWw7CisgICAgICAgIHRoaXMuX2NvbnRl
bnRWaWV3Q29udGFpbmVyID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lcigp
OworICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5Db250ZW50Vmlld0NvbnRhaW5lci5FdmVudC5DdXJyZW50Q29udGVudFZpZXdE
aWRDaGFuZ2UsIHRoaXMuX2N1cnJlbnRDb250ZW50Vmlld0RpZENoYW5nZSwgdGhpcyk7CisgICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5l
bGVtZW50KTsKIAotICAgIHRoaXMuX3RpbWVsaW5lVmlld01hcCA9IG5ldyBNYXA7Ci0gICAgdGhp
cy5fcGF0aENvbXBvbmVudE1hcCA9IG5ldyBNYXA7CisgICAgICAgIHZhciB0cmFzaEltYWdlOwor
ICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLlBsYXRmb3JtLmlzTGVnYWN5TWFjT1MpCisgICAgICAg
ICAgICB0cmFzaEltYWdlID0ge3NyYzogIkltYWdlcy9MZWdhY3kvTmF2aWdhdGlvbkl0ZW1UcmFz
aC5zdmciLCB3aWR0aDogMTYsIGhlaWdodDogMTZ9OworICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0cmFzaEltYWdlID0ge3NyYzogIkltYWdlcy9OYXZpZ2F0aW9uSXRlbVRyYXNoLnN2ZyIsIHdp
ZHRoOiAxNSwgaGVpZ2h0OiAxNX07CiAKLSAgICB0aGlzLl91cGRhdGluZyA9IGZhbHNlOwotICAg
IHRoaXMuX2N1cnJlbnRUaW1lID0gTmFOOwotICAgIHRoaXMuX2xhc3RVcGRhdGVUaW1lc3RhbXAg
PSBOYU47Ci0gICAgdGhpcy5fc3RhcnRUaW1lTmVlZHNSZXNldCA9IHRydWU7CisgICAgICAgIHRo
aXMuX2NsZWFyVGltZWxpbmVOYXZpZ2F0aW9uSXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQnV0dG9u
TmF2aWdhdGlvbkl0ZW0oImNsZWFyLXRpbWVsaW5lIiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJD
bGVhciBUaW1lbGluZSIpLCB0cmFzaEltYWdlLnNyYywgdHJhc2hJbWFnZS53aWR0aCwgdHJhc2hJ
bWFnZS5oZWlnaHQpOworICAgICAgICB0aGlzLl9jbGVhclRpbWVsaW5lTmF2aWdhdGlvbkl0ZW0u
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uRXZlbnQu
Q2xpY2tlZCwgdGhpcy5fY2xlYXJUaW1lbGluZSwgdGhpcyk7CiAKLSAgICB0aGlzLl9yZWNvcmRp
bmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmcuRXZlbnQu
VGltZWxpbmVBZGRlZCwgdGhpcy5fdGltZWxpbmVBZGRlZCwgdGhpcyk7Ci0gICAgdGhpcy5fcmVj
b3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2
ZW50LlRpbWVsaW5lUmVtb3ZlZCwgdGhpcy5fdGltZWxpbmVSZW1vdmVkLCB0aGlzKTsKLSAgICB0
aGlzLl9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNv
cmRpbmcuRXZlbnQuUmVzZXQsIHRoaXMuX3JlY29yZGluZ1Jlc2V0LCB0aGlzKTsKLSAgICB0aGlz
Ll9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRp
bmcuRXZlbnQuVW5sb2FkZWQsIHRoaXMuX3JlY29yZGluZ1VubG9hZGVkLCB0aGlzKTsKKyAgICAg
ICAgdGhpcy5fb3ZlcnZpZXdUaW1lbGluZVZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLk92ZXJ2aWV3
VGltZWxpbmVWaWV3KHJlY29yZGluZyk7CisgICAgICAgIHRoaXMuX292ZXJ2aWV3VGltZWxpbmVW
aWV3LnNlY29uZHNQZXJQaXhlbCA9IHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcuc2Vjb25kc1BlclBp
eGVsOwogCi0gICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RhcnRlZCwgdGhp
cy5fY2FwdHVyaW5nU3RhcnRlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQu
Q2FwdHVyaW5nU3RvcHBlZCwgdGhpcy5fY2FwdHVyaW5nU3RvcHBlZCwgdGhpcyk7CisgICAgICAg
IHRoaXMuX3RpbWVsaW5lVmlld01hcCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX3BhdGhDb21w
b25lbnRNYXAgPSBuZXcgTWFwOwogCi0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2Vk
LCB0aGlzLl9kZWJ1Z2dlclBhdXNlZCwgdGhpcyk7Ci0gICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuUmVzdW1lZCwgdGhpcy5fZGVidWdnZXJSZXN1bWVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5f
dXBkYXRpbmcgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fY3VycmVudFRpbWUgPSBOYU47CisgICAg
ICAgIHRoaXMuX2xhc3RVcGRhdGVUaW1lc3RhbXAgPSBOYU47CisgICAgICAgIHRoaXMuX3N0YXJ0
VGltZU5lZWRzUmVzZXQgPSB0cnVlOwogCi0gICAgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBh
dGhDb21wb25lbnRzRGlkQ2hhbmdlLCB0aGlzLl9jb250ZW50Vmlld1NlbGVjdGlvblBhdGhDb21w
b25lbnREaWRDaGFuZ2UsIHRoaXMpOwotICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5hZGRF
dmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVtZW50YWxS
ZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFs
UmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fcmVjb3Jk
aW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nLkV2ZW50
LlRpbWVsaW5lQWRkZWQsIHRoaXMuX3RpbWVsaW5lQWRkZWQsIHRoaXMpOworICAgICAgICB0aGlz
Ll9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRp
bmcuRXZlbnQuVGltZWxpbmVSZW1vdmVkLCB0aGlzLl90aW1lbGluZVJlbW92ZWQsIHRoaXMpOwor
ICAgICAgICB0aGlzLl9yZWNvcmRpbmcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRpbmcuRXZlbnQuUmVzZXQsIHRoaXMuX3JlY29yZGluZ1Jlc2V0LCB0aGlzKTsK
KyAgICAgICAgdGhpcy5fcmVjb3JkaW5nLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUmVjb3JkaW5nLkV2ZW50LlVubG9hZGVkLCB0aGlzLl9yZWNvcmRpbmdVbmxvYWRlZCwg
dGhpcyk7CiAKLSAgICBmb3IgKHZhciB0aW1lbGluZSBvZiB0aGlzLl9yZWNvcmRpbmcudGltZWxp
bmVzLnZhbHVlcygpKQotICAgICAgICB0aGlzLl90aW1lbGluZUFkZGVkKHRpbWVsaW5lKTsKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RhcnRlZCwgdGhpcy5fY2Fw
dHVyaW5nU3RhcnRlZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNh
cHR1cmluZ1N0b3BwZWQsIHRoaXMuX2NhcHR1cmluZ1N0b3BwZWQsIHRoaXMpOwogCi0gICAgdGhp
cy5zaG93T3ZlcnZpZXdUaW1lbGluZVZpZXcoKTsKLX07CisgICAgICAgIFdlYkluc3BlY3Rvci5k
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlBhdXNlZCwgdGhpcy5fZGVidWdnZXJQYXVzZWQsIHRoaXMpOworICAgICAgICBX
ZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5SZXN1bWVkLCB0aGlzLl9kZWJ1Z2dlclJlc3VtZWQsIHRo
aXMpOwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5TdHlsZUNs
YXNzTmFtZSA9ICJ0aW1lbGluZS1yZWNvcmRpbmciOworICAgICAgICBXZWJJbnNwZWN0b3IuQ29u
dGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQu
U2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U2VsZWN0
aW9uUGF0aENvbXBvbmVudERpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVu
dC5TdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRW
aWV3U3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzKTsKIAotV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuU2VsZWN0ZWRUaW1lbGluZVR5
cGVDb29raWVLZXkgPSAidGltZWxpbmUtcmVjb3JkaW5nLWNvbnRlbnQtdmlldy1zZWxlY3RlZC10
aW1lbGluZS10eXBlIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3
Lk92ZXJ2aWV3VGltZWxpbmVWaWV3Q29va2llVmFsdWUgPSAidGltZWxpbmUtcmVjb3JkaW5nLWNv
bnRlbnQtdmlldy1vdmVydmlldy10aW1lbGluZS12aWV3IjsKKyAgICAgICAgZm9yICh2YXIgdGlt
ZWxpbmUgb2YgdGhpcy5fcmVjb3JkaW5nLnRpbWVsaW5lcy52YWx1ZXMoKSkKKyAgICAgICAgICAg
IHRoaXMuX3RpbWVsaW5lQWRkZWQodGltZWxpbmUpOwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LAotICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZSwKKyAgICAgICAgdGhpcy5zaG93T3ZlcnZp
ZXdUaW1lbGluZVZpZXcoKTsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHNob3dPdmVy
dmlld1RpbWVsaW5lVmlldzogZnVuY3Rpb24oKQorICAgIHNob3dPdmVydmlld1RpbWVsaW5lVmll
dygpCiAgICAgewogICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnRhaW5lci5zaG93Q29udGVu
dFZpZXcodGhpcy5fb3ZlcnZpZXdUaW1lbGluZVZpZXcpOwotICAgIH0sCisgICAgfQogCi0gICAg
c2hvd1RpbWVsaW5lVmlld0ZvclRpbWVsaW5lOiBmdW5jdGlvbih0aW1lbGluZSkKKyAgICBzaG93
VGltZWxpbmVWaWV3Rm9yVGltZWxpbmUodGltZWxpbmUpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCh0aW1lbGluZSBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSwgdGltZWxp
bmUpOwogICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl90aW1lbGluZVZpZXdNYXAuaGFzKHRp
bWVsaW5lKSwgdGltZWxpbmUpOwpAQCAtMTA0LDE4ICs5NywxOCBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuc2hvd0NvbnRlbnRWaWV3
KHRoaXMuX3RpbWVsaW5lVmlld01hcC5nZXQodGltZWxpbmUpKTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBhbGxvd2VkTmF2aWdhdGlvblNpZGViYXJQYW5lbHMoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIFtXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFyUGFuZWwuaWRlbnRpZmllcl07Ci0g
ICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3VwcG9ydHNTcGxpdENvbnRlbnRCcm93c2VyKCkKICAg
ICB7CiAgICAgICAgIC8vIFRoZSBsYXlvdXQgb2YgdGhlIG92ZXJ2aWV3IGFuZCBzcGxpdCBjb250
ZW50IGJyb3dzZXIgZG9uJ3Qgd29yayB3ZWxsLgogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uUGF0aENvbXBvbmVudHMoKQogICAgIHsKQEAg
LTEyNyw0NSArMTIwLDQ1IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lKQogICAgICAgICAgICAgcGF0aENvbXBvbmVudHMudW5z
aGlmdCh0aGlzLl9wYXRoQ29tcG9uZW50TWFwLmdldChyZXByZXNlbnRlZE9iamVjdCkpOwogICAg
ICAgICByZXR1cm4gcGF0aENvbXBvbmVudHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc3Vw
cGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
Y29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0
dXJuIFtdOwogICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVu
dENvbnRlbnRWaWV3LnN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0czsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBuYXZpZ2F0aW9uSXRlbXMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFt0
aGlzLl9jbGVhclRpbWVsaW5lTmF2aWdhdGlvbkl0ZW1dOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGhhbmRsZUNvcHlFdmVudCgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVudENvbnRlbnRW
aWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3OwogICAg
ICAgICByZXR1cm4gY3VycmVudENvbnRlbnRWaWV3ICYmIHR5cGVvZiBjdXJyZW50Q29udGVudFZp
ZXcuaGFuZGxlQ29weUV2ZW50ID09PSAiZnVuY3Rpb24iID8gY3VycmVudENvbnRlbnRWaWV3Lmhh
bmRsZUNvcHlFdmVudC5iaW5kKGN1cnJlbnRDb250ZW50VmlldykgOiBudWxsOwotICAgIH0sCisg
ICAgfQogCiAgICAgZ2V0IHN1cHBvcnRzU2F2ZSgpCiAgICAgewogICAgICAgICB2YXIgY3VycmVu
dENvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRW
aWV3OwogICAgICAgICByZXR1cm4gY3VycmVudENvbnRlbnRWaWV3ICYmIGN1cnJlbnRDb250ZW50
Vmlldy5zdXBwb3J0c1NhdmU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2F2ZURhdGEoKQog
ICAgIHsKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3
Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgcmV0dXJuIGN1cnJlbnRDb250
ZW50VmlldyAmJiBjdXJyZW50Q29udGVudFZpZXcuc2F2ZURhdGEgfHwgbnVsbDsKLSAgICB9LAor
ICAgIH0KIAogICAgIGdldCBjdXJyZW50VGltZWxpbmVWaWV3KCkKICAgICB7CiAgICAgICAgIHZh
ciBjb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50
VmlldzsKICAgICAgICAgcmV0dXJuIChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVZpZXcpID8gY29udGVudFZpZXcgOiBudWxsOwotICAgIH0sCisgICAgfQogCi0g
ICAgc2hvd246IGZ1bmN0aW9uKCkKKyAgICBzaG93bigpCiAgICAgewogICAgICAgICB0aGlzLl90
aW1lbGluZU92ZXJ2aWV3LnNob3duKCk7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFp
bmVyLnNob3duKCk7CkBAIC0xNzMsNTUgKzE2Niw1NSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVS
ZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKCF0aGlzLl91
cGRhdGluZyAmJiBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmFjdGl2ZVJlY29yZGluZyA9
PT0gdGhpcy5fcmVjb3JkaW5nICYmIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuaXNDYXB0
dXJpbmcoKSkKICAgICAgICAgICAgIHRoaXMuX3N0YXJ0VXBkYXRpbmdDdXJyZW50VGltZSgpOwot
ICAgIH0sCisgICAgfQogCi0gICAgaGlkZGVuOiBmdW5jdGlvbigpCisgICAgaGlkZGVuKCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcuaGlkZGVuKCk7CiAgICAgICAgIHRo
aXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmhpZGRlbigpOwogCiAgICAgICAgIGlmICh0aGlzLl91
cGRhdGluZykKICAgICAgICAgICAgIHRoaXMuX3N0b3BVcGRhdGluZ0N1cnJlbnRUaW1lKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjbG9zZWQ6IGZ1bmN0aW9uKCkKKyAgICBjbG9zZWQoKQogICAg
IHsKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY2xvc2VBbGxDb250ZW50Vmll
d3MoKTsKIAogICAgICAgICBXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXZWJJbnNwZWN0b3IuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVu
dHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENo
YW5nZSwgdGhpcyk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5yZW1vdmVFdmVu
dExpc3RlbmVyKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5FdmVudC5TdXBwbGVtZW50YWxSZXBy
ZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UsIHRoaXMuX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVw
cmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNh
bkdvQmFjazogZnVuY3Rpb24oKQorICAgIGNhbkdvQmFjaygpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuY2FuR29CYWNrKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBjYW5Hb0ZvcndhcmQ6IGZ1bmN0aW9uKCkKKyAgICBjYW5Hb0ZvcndhcmQoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmNhbkdvRm9yd2Fy
ZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgZ29CYWNrOiBmdW5jdGlvbigpCisgICAgZ29CYWNr
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmdvQmFjaygpOwot
ICAgIH0sCisgICAgfQogCi0gICAgZ29Gb3J3YXJkOiBmdW5jdGlvbigpCisgICAgZ29Gb3J3YXJk
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmdvRm9yd2FyZCgp
OwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBk
YXRlTGF5b3V0KCkKICAgICB7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcudXBkYXRl
TGF5b3V0Rm9yUmVzaXplKCk7CiAKICAgICAgICAgdmFyIGN1cnJlbnRDb250ZW50VmlldyA9IHRo
aXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRDb250ZW50VmlldzsKICAgICAgICAgaWYg
KGN1cnJlbnRDb250ZW50VmlldykKICAgICAgICAgICAgIGN1cnJlbnRDb250ZW50Vmlldy51cGRh
dGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNhdmVUb0Nvb2tpZTogZnVuY3Rpb24o
Y29va2llKQorICAgIHNhdmVUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWUu
dHlwZSA9IFdlYkluc3BlY3Rvci5Db250ZW50Vmlld0Nvb2tpZVR5cGUuVGltZWxpbmVzOwogCkBA
IC0yMzAsOSArMjIzLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29va2llW1dlYkluc3BlY3Rvci5UaW1lbGlu
ZVJlY29yZGluZ0NvbnRlbnRWaWV3LlNlbGVjdGVkVGltZWxpbmVUeXBlQ29va2llS2V5XSA9IFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3Lk92ZXJ2aWV3VGltZWxpbmVW
aWV3Q29va2llVmFsdWU7CiAgICAgICAgIGVsc2UgaWYgKGN1cnJlbnRDb250ZW50Vmlldy5yZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZSkKICAgICAgICAg
ICAgIGNvb2tpZVtXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5TZWxl
Y3RlZFRpbWVsaW5lVHlwZUNvb2tpZUtleV0gPSB0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcucmVw
cmVzZW50ZWRPYmplY3QudHlwZTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc3RvcmVGcm9tQ29v
a2llOiBmdW5jdGlvbihjb29raWUpCisgICAgcmVzdG9yZUZyb21Db29raWUoY29va2llKQogICAg
IHsKICAgICAgICAgdmFyIHRpbWVsaW5lVHlwZSA9IGNvb2tpZVtXZWJJbnNwZWN0b3IuVGltZWxp
bmVSZWNvcmRpbmdDb250ZW50Vmlldy5TZWxlY3RlZFRpbWVsaW5lVHlwZUNvb2tpZUtleV07CiAK
QEAgLTI0MCwxNyArMjMzLDE3IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRl
bnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuc2hvd092ZXJ2aWV3VGltZWxp
bmVWaWV3KCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuc2hvd1RpbWVsaW5lVmll
d0ZvclRpbWVsaW5lKHRoaXMucmVwcmVzZW50ZWRPYmplY3QudGltZWxpbmVzLmdldCh0aW1lbGlu
ZVR5cGUpKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZpbHRlckRpZENoYW5nZTogZnVuY3Rpb24o
KQorICAgIGZpbHRlckRpZENoYW5nZSgpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuY3VycmVu
dFRpbWVsaW5lVmlldykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLmN1cnJl
bnRUaW1lbGluZVZpZXcuZmlsdGVyRGlkQ2hhbmdlKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBt
YXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKHRyZWVFbGVtZW50
KQorICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCkK
ICAgICB7CiAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcgJiYgIXRoaXMuY3Vy
cmVudFRpbWVsaW5lVmlldy5tYXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnModHJl
ZUVsZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA0LDExICsyOTcsMTEg
QEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcucHJvdG90eXBlID0g
ewogCiAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlVua25vd24gVHJlZUVsZW1lbnQsIGNhbid0IGZp
bHRlciBieSB0aW1lLiIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIC8vIFByaXZhdGUKIAotICAgIF9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2U6IGZ1bmN0
aW9uKGV2ZW50KQorICAgIF9jdXJyZW50Q29udGVudFZpZXdEaWRDaGFuZ2UoZXZlbnQpCiAgICAg
ewogICAgICAgICB2YXIgdGltZWxpbmVWaWV3ID0gdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3Owog
ICAgICAgICBpZiAodGltZWxpbmVWaWV3KSB7CkBAIC0zMjIsMjggKzMxNSwyOCBAQCBXZWJJbnNw
ZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAKICAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3
LkV2ZW50LlNlbGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50Lk5h
dmlnYXRpb25JdGVtc0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcGF0aENvbXBv
bmVudFNlbGVjdGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcGF0aENvbXBvbmVudFNlbGVjdGVk
KGV2ZW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lU2lkZWJhclBhbmVs
LnNob3dUaW1lbGluZVZpZXdGb3JUaW1lbGluZShldmVudC5kYXRhLnBhdGhDb21wb25lbnQucmVw
cmVzZW50ZWRPYmplY3QpOwotICAgIH0sCisgICAgfQogCi0gICAgX2NvbnRlbnRWaWV3U2VsZWN0
aW9uUGF0aENvbXBvbmVudERpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQpCisgICAgX2NvbnRlbnRW
aWV3U2VsZWN0aW9uUGF0aENvbXBvbmVudERpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAg
IGlmIChldmVudC50YXJnZXQgIT09IHRoaXMuX2NvbnRlbnRWaWV3Q29udGFpbmVyLmN1cnJlbnRD
b250ZW50VmlldykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGlvblBh
dGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jb250ZW50Vmll
d1N1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZTogZnVuY3Rpb24oZXZlbnQp
CisgICAgX2NvbnRlbnRWaWV3U3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdl
KGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gdGhpcy5fY29udGVu
dFZpZXdDb250YWluZXIuY3VycmVudENvbnRlbnRWaWV3KQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF91cGRhdGU6IGZ1bmN0aW9uKHRpbWVzdGFtcCkKKyAgICBfdXBk
YXRlKHRpbWVzdGFtcCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl93YWl0aW5nVG9SZXNldEN1
cnJlbnRUaW1lKSB7CiAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhpcy5fdXBk
YXRlQ2FsbGJhY2spOwpAQCAtMzY4LDkgKzM2MSw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbGFzdFVwZGF0
ZVRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKIAogICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
dGhpcy5fdXBkYXRlQ2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVRpbWVz
OiBmdW5jdGlvbihzdGFydFRpbWUsIGN1cnJlbnRUaW1lLCBlbmRUaW1lKQorICAgIF91cGRhdGVU
aW1lcyhzdGFydFRpbWUsIGN1cnJlbnRUaW1lLCBlbmRUaW1lKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX3N0YXJ0VGltZU5lZWRzUmVzZXQgJiYgIWlzTmFOKHN0YXJ0VGltZSkpIHsKICAgICAg
ICAgICAgIHZhciBzZWxlY3Rpb25PZmZzZXQgPSB0aGlzLl90aW1lbGluZU92ZXJ2aWV3LnNlbGVj
dGlvblN0YXJ0VGltZSAtIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcuc3RhcnRUaW1lOwpAQCAtMzk4
LDkgKzM5MSw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdGltZWxpbmVPdmVydmlldy51cGRhdGVMYXlvdXRJ
Zk5lZWRlZCgpOwogICAgICAgICBpZiAodGhpcy5jdXJyZW50VGltZWxpbmVWaWV3KQogICAgICAg
ICAgICAgdGhpcy5jdXJyZW50VGltZWxpbmVWaWV3LnVwZGF0ZUxheW91dElmTmVlZGVkKCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBfc3RhcnRVcGRhdGluZ0N1cnJlbnRUaW1lOiBmdW5jdGlvbigp
CisgICAgX3N0YXJ0VXBkYXRpbmdDdXJyZW50VGltZSgpCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydCghdGhpcy5fdXBkYXRpbmcpOwogICAgICAgICBpZiAodGhpcy5fdXBkYXRpbmcpCkBA
IC00MjAsOSArNDEzLDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ2FsbGJhY2sgPSB0aGlz
Ll91cGRhdGUuYmluZCh0aGlzKTsKIAogICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodGhp
cy5fdXBkYXRlQ2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0gICAgX3N0b3BVcGRhdGluZ0N1
cnJlbnRUaW1lOiBmdW5jdGlvbigpCisgICAgX3N0b3BVcGRhdGluZ0N1cnJlbnRUaW1lKCkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3VwZGF0aW5nKTsKICAgICAgICAgdGhp
cy5fdXBkYXRpbmcgPSBmYWxzZTsKQEAgLTQzMiwzNiArNDI1LDM2IEBAIFdlYkluc3BlY3Rvci5U
aW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRo
aXMuX3JlY29yZGluZy5yZW1vdmVFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJl
Y29yZGluZy5FdmVudC5UaW1lc1VwZGF0ZWQsIHRoaXMuX3JlY29yZGluZ1RpbWVzVXBkYXRlZCwg
dGhpcyk7CiAgICAgICAgICAgICB0aGlzLl93YWl0aW5nVG9SZXNldEN1cnJlbnRUaW1lID0gZmFs
c2U7CiAgICAgICAgIH0KLSAgICB9LAorICAgIH0KIAotICAgIF9jYXB0dXJpbmdTdGFydGVkOiBm
dW5jdGlvbihldmVudCkKKyAgICBfY2FwdHVyaW5nU3RhcnRlZChldmVudCkKICAgICB7CiAgICAg
ICAgIHRoaXMuX3N0YXJ0VXBkYXRpbmdDdXJyZW50VGltZSgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2NhcHR1cmluZ1N0b3BwZWQ6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9jYXB0dXJpbmdTdG9w
cGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3VwZGF0aW5nKQogICAgICAgICAg
ICAgdGhpcy5fc3RvcFVwZGF0aW5nQ3VycmVudFRpbWUoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IF9kZWJ1Z2dlclBhdXNlZDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RlYnVnZ2VyUGF1c2VkKGV2
ZW50KQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Np
b25TdGF0ZSA9PT0gV2ViSW5zcGVjdG9yLlJlcGxheU1hbmFnZXIuU2Vzc2lvblN0YXRlLlJlcGxh
eWluZykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zdG9wVXBkYXRpbmdD
dXJyZW50VGltZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgX2RlYnVnZ2VyUmVzdW1lZDogZnVu
Y3Rpb24oZXZlbnQpCisgICAgX2RlYnVnZ2VyUmVzdW1lZChldmVudCkKICAgICB7CiAgICAgICAg
IGlmIChXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uU3RhdGUgPT09IFdlYkluc3Bl
Y3Rvci5SZXBsYXlNYW5hZ2VyLlNlc3Npb25TdGF0ZS5SZXBsYXlpbmcpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgdGhpcy5fc3RhcnRVcGRhdGluZ0N1cnJlbnRUaW1lKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfcmVjb3JkaW5nVGltZXNVcGRhdGVkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfcmVjb3JkaW5nVGltZXNVcGRhdGVkKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCF0
aGlzLl93YWl0aW5nVG9SZXNldEN1cnJlbnRUaW1lKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
NDgwLDE0ICs0NzMsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX3JlY29yZGluZy5yZW1vdmVFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZy5FdmVudC5UaW1lc1VwZGF0ZWQs
IHRoaXMuX3JlY29yZGluZ1RpbWVzVXBkYXRlZCwgdGhpcyk7CiAgICAgICAgIHRoaXMuX3dhaXRp
bmdUb1Jlc2V0Q3VycmVudFRpbWUgPSBmYWxzZTsKLSAgICB9LAorICAgIH0KIAotICAgIF9jbGVh
clRpbWVsaW5lOiBmdW5jdGlvbihldmVudCkKKyAgICBfY2xlYXJUaW1lbGluZShldmVudCkKICAg
ICB7CiAgICAgICAgIHRoaXMuX3JlY29yZGluZy5yZXNldCgpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX3RpbWVsaW5lQWRkZWQ6IGZ1bmN0aW9uKHRpbWVsaW5lT3JFdmVudCkKKyAgICBfdGltZWxp
bmVBZGRlZCh0aW1lbGluZU9yRXZlbnQpCiAgICAgewogICAgICAgICB2YXIgdGltZWxpbmUgPSB0
aW1lbGluZU9yRXZlbnQ7CiAgICAgICAgIGlmICghKHRpbWVsaW5lIGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlRpbWVsaW5lKSkKQEAgLTQ5NiwxNiArNDg5LDE2IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQodGltZWxpbmUgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUsIHRpbWVsaW5l
KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3RpbWVsaW5lVmlld01hcC5oYXModGlt
ZWxpbmUpLCB0aW1lbGluZSk7CiAKLSAgICAgICAgdGhpcy5fdGltZWxpbmVWaWV3TWFwLnNldCh0
aW1lbGluZSwgbmV3IFdlYkluc3BlY3Rvci5Db250ZW50Vmlldyh0aW1lbGluZSkpOworICAgICAg
ICB0aGlzLl90aW1lbGluZVZpZXdNYXAuc2V0KHRpbWVsaW5lLCBXZWJJbnNwZWN0b3IuQ29udGVu
dFZpZXcuY3JlYXRlKHRpbWVsaW5lKSk7CiAKICAgICAgICAgdmFyIHBhdGhDb21wb25lbnQgPSBu
ZXcgV2ViSW5zcGVjdG9yLkhpZXJhcmNoaWNhbFBhdGhDb21wb25lbnQodGltZWxpbmUuZGlzcGxh
eU5hbWUsIHRpbWVsaW5lLmljb25DbGFzc05hbWUsIHRpbWVsaW5lKTsKICAgICAgICAgcGF0aENv
bXBvbmVudC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5IaWVyYXJjaGljYWxQYXRoQ29t
cG9uZW50LkV2ZW50LlNpYmxpbmdXYXNTZWxlY3RlZCwgdGhpcy5fcGF0aENvbXBvbmVudFNlbGVj
dGVkLCB0aGlzKTsKICAgICAgICAgdGhpcy5fcGF0aENvbXBvbmVudE1hcC5zZXQodGltZWxpbmUs
IHBhdGhDb21wb25lbnQpOwogCiAgICAgICAgIHRoaXMuX3RpbWVsaW5lQ291bnRDaGFuZ2VkKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfdGltZWxpbmVSZW1vdmVkOiBmdW5jdGlvbihldmVudCkK
KyAgICBfdGltZWxpbmVSZW1vdmVkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHRpbWVsaW5l
ID0gZXZlbnQuZGF0YS50aW1lbGluZTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGltZWxpbmUg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmUsIHRpbWVsaW5lKTsKQEAgLTUxOCw5ICs1
MTEsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX3BhdGhDb21wb25lbnRNYXAuZGVsZXRlKHRpbWVsaW5lKTsK
IAogICAgICAgICB0aGlzLl90aW1lbGluZUNvdW50Q2hhbmdlZCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgX3RpbWVsaW5lQ291bnRDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgX3RpbWVsaW5lQ291
bnRDaGFuZ2VkKCkKICAgICB7CiAgICAgICAgIHZhciBwcmV2aW91c1BhdGhDb21wb25lbnQgPSBu
dWxsOwogICAgICAgICBmb3IgKHZhciBwYXRoQ29tcG9uZW50IG9mIHRoaXMuX3BhdGhDb21wb25l
bnRNYXAudmFsdWVzKCkpIHsKQEAgLTUzMywxMyArNTI2LDEzIEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAg
ICAgIHZhciB0aW1lbGluZUNvdW50ID0gdGhpcy5fcmVjb3JkaW5nLnRpbWVsaW5lcy5zaXplOwot
ICAgICAgICBjb25zdCB0aW1lbGluZUhlaWdodCA9IDM2OwotICAgICAgICBjb25zdCBleHRyYU9m
ZnNldCA9IDIyOworICAgICAgICB2YXIgdGltZWxpbmVIZWlnaHQgPSAzNjsKKyAgICAgICAgdmFy
IGV4dHJhT2Zmc2V0ID0gMjI7CiAgICAgICAgIHRoaXMuX3RpbWVsaW5lT3ZlcnZpZXcuZWxlbWVu
dC5zdHlsZS5oZWlnaHQgPSAodGltZWxpbmVDb3VudCAqIHRpbWVsaW5lSGVpZ2h0ICsgZXh0cmFP
ZmZzZXQpICsgInB4IjsKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb250YWluZXIuZWxlbWVu
dC5zdHlsZS50b3AgPSAodGltZWxpbmVDb3VudCAqIHRpbWVsaW5lSGVpZ2h0ICsgZXh0cmFPZmZz
ZXQpICsgInB4IjsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZWNvcmRpbmdSZXNldDogZnVuY3Rp
b24oZXZlbnQpCisgICAgX3JlY29yZGluZ1Jlc2V0KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhp
cy5fY3VycmVudFRpbWUgPSBOYU47CiAKQEAgLTU1OSwxNyArNTUyLDE3IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJlY29yZGluZ0NvbnRlbnRWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhp
cy5fb3ZlcnZpZXdUaW1lbGluZVZpZXcucmVzZXQoKTsKICAgICAgICAgZm9yICh2YXIgdGltZWxp
bmVWaWV3IG9mIHRoaXMuX3RpbWVsaW5lVmlld01hcC52YWx1ZXMoKSkKICAgICAgICAgICAgIHRp
bWVsaW5lVmlldy5yZXNldCgpOwotICAgIH0sCisgICAgfQogCi0gICAgX3JlY29yZGluZ1VubG9h
ZGVkOiBmdW5jdGlvbihldmVudCkKKyAgICBfcmVjb3JkaW5nVW5sb2FkZWQoZXZlbnQpCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fdXBkYXRpbmcpOwogCiAgICAgICAgIFdl
Ykluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0YXJ0ZWQsIHRoaXMuX2NhcHR1cmlu
Z1N0YXJ0ZWQsIHRoaXMpOwogICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLnJl
bW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFuYWdlci5FdmVudC5DYXB0
dXJpbmdTdG9wcGVkLCB0aGlzLl9jYXB0dXJpbmdTdG9wcGVkLCB0aGlzKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF90aW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkOiBmdW5jdGlvbihldmVudCkKKyAg
ICBfdGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLmN1cnJlbnRUaW1lbGluZVZpZXcpIHsKICAgICAgICAgICAgIHRoaXMuY3VycmVudFRpbWVs
aW5lVmlldy5zdGFydFRpbWUgPSB0aGlzLl90aW1lbGluZU92ZXJ2aWV3LnNlbGVjdGlvblN0YXJ0
VGltZTsKQEAgLTU4OCwzICs1ODEsNiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSZWNvcmRpbmdD
b250ZW50Vmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAgICAgfQog
fTsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUmVjb3JkaW5nQ29udGVudFZpZXcuU2VsZWN0ZWRU
aW1lbGluZVR5cGVDb29raWVLZXkgPSAidGltZWxpbmUtcmVjb3JkaW5nLWNvbnRlbnQtdmlldy1z
ZWxlY3RlZC10aW1lbGluZS10eXBlIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJlY29yZGluZ0Nv
bnRlbnRWaWV3Lk92ZXJ2aWV3VGltZWxpbmVWaWV3Q29va2llVmFsdWUgPSAidGltZWxpbmUtcmVj
b3JkaW5nLWNvbnRlbnQtdmlldy1vdmVydmlldy10aW1lbGluZS12aWV3IjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1
bGVyLmpzCmluZGV4IGJlMTIwZjQuLmI4ZWVhNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcwpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMs
NzIgKzIzLDQ4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmpl
Y3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVj
dC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIuU3R5bGVDbGFzc05hbWU7Ci0KLSAgICB0aGlzLl9oZWFkZXJFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5faGVhZGVyRWxlbWVudC5j
bGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5IZWFkZXJFbGVtZW50U3R5bGVD
bGFzc05hbWU7Ci0gICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9oZWFkZXJFbGVt
ZW50KTsKLQotICAgIHRoaXMuX21hcmtlcnNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgdGhpcy5fbWFya2Vyc0VsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVj
dG9yLlRpbWVsaW5lUnVsZXIuTWFya2Vyc0VsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlz
Ll9lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX21hcmtlcnNFbGVtZW50KTsKLQotICAgIHRoaXMu
X3plcm9UaW1lID0gMDsKLSAgICB0aGlzLl9zdGFydFRpbWUgPSAwOwotICAgIHRoaXMuX2VuZFRp
bWUgPSAwOwotICAgIHRoaXMuX2R1cmF0aW9uID0gTmFOOwotICAgIHRoaXMuX3NlY29uZHNQZXJQ
aXhlbCA9IDA7Ci0gICAgdGhpcy5fc2VsZWN0aW9uU3RhcnRUaW1lID0gMDsKLSAgICB0aGlzLl9z
ZWxlY3Rpb25FbmRUaW1lID0gSW5maW5pdHk7Ci0gICAgdGhpcy5fZW5kVGltZVBpbm5lZCA9IGZh
bHNlOwotICAgIHRoaXMuX2FsbG93c0NsaXBwZWRMYWJlbHMgPSBmYWxzZTsKLSAgICB0aGlzLl9h
bGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb24gPSBmYWxzZTsKLQotICAgIHRoaXMuX21hcmtlckVsZW1l
bnRNYXAgPSBuZXcgTWFwOwotfTsKKyAgICBjb25zdHJ1Y3RvcigpCisgICAgeworICAgICAgICBz
dXBlcigpOwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5NaW5pbXVtTGVmdERpdmlkZXJT
cGFjaW5nID0gNDg7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5NaW5pbXVtRGl2aWRlclNw
YWNpbmcgPSA2NDsKKyAgICAgICAgdGhpcy5fZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9ICJ0aW1lbGluZS1y
dWxlciI7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLlN0eWxlQ2xhc3NOYW1lID0gInRp
bWVsaW5lLXJ1bGVyIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkFsbG93c1RpbWVSYW5n
ZVNlbGVjdGlvblN0eWxlQ2xhc3NOYW1lID0gImFsbG93cy10aW1lLXJhbmdlLXNlbGVjdGlvbiI7
Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5IZWFkZXJFbGVtZW50U3R5bGVDbGFzc05hbWUg
PSAiaGVhZGVyIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkRpdmlkZXJFbGVtZW50U3R5
bGVDbGFzc05hbWUgPSAiZGl2aWRlciI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5EaXZp
ZGVyTGFiZWxFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAibGFiZWwiOworICAgICAgICB0aGlzLl9o
ZWFkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRo
aXMuX2hlYWRlckVsZW1lbnQuY2xhc3NOYW1lID0gImhlYWRlciI7CisgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faGVhZGVyRWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyLk1hcmtlcnNFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAibWFya2VycyI7Ci1X
ZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5CYXNlTWFya2VyRWxlbWVudFN0eWxlQ2xhc3NOYW1l
ID0gIm1hcmtlciI7Ci1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5TaGFkZWRBcmVhRWxlbWVu
dFN0eWxlQ2xhc3NOYW1lID0gInNoYWRlZC1hcmVhIjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1
bGVyLlNlbGVjdGlvbkRyYWdFbGVtZW50U3R5bGVDbGFzc05hbWUgPSAic2VsZWN0aW9uLWRyYWci
OwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuU2VsZWN0aW9uSGFuZGxlRWxlbWVudFN0eWxl
Q2xhc3NOYW1lID0gInNlbGVjdGlvbi1oYW5kbGUiOwotV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVs
ZXIuTGVmdFNlbGVjdGlvbkVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJsZWZ0IjsKLVdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLlJpZ2h0U2VsZWN0aW9uRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0g
InJpZ2h0IjsKLVdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLk1pbmltdW1TZWxlY3Rpb25UaW1l
UmFuZ2UgPSAwLjAxOworICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlzLl9tYXJrZXJzRWxlbWVudC5jbGFzc05h
bWUgPSAibWFya2VycyI7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
bWFya2Vyc0VsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5FdmVudCA9IHsK
LSAgICBUaW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkOiAidGltZS1ydWxlci10aW1lLXJhbmdlLXNl
bGVjdGlvbi1jaGFuZ2VkIgotfTsKKyAgICAgICAgdGhpcy5femVyb1RpbWUgPSAwOworICAgICAg
ICB0aGlzLl9zdGFydFRpbWUgPSAwOworICAgICAgICB0aGlzLl9lbmRUaW1lID0gMDsKKyAgICAg
ICAgdGhpcy5fZHVyYXRpb24gPSBOYU47CisgICAgICAgIHRoaXMuX3NlY29uZHNQZXJQaXhlbCA9
IDA7CisgICAgICAgIHRoaXMuX3NlbGVjdGlvblN0YXJ0VGltZSA9IDA7CisgICAgICAgIHRoaXMu
X3NlbGVjdGlvbkVuZFRpbWUgPSBJbmZpbml0eTsKKyAgICAgICAgdGhpcy5fZW5kVGltZVBpbm5l
ZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9hbGxvd3NDbGlwcGVkTGFiZWxzID0gZmFsc2U7Cisg
ICAgICAgIHRoaXMuX2FsbG93c1RpbWVSYW5nZVNlbGVjdGlvbiA9IGZhbHNlOwogCi1XZWJJbnNw
ZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5UaW1lbGluZVJ1bGVyLAorICAgICAgICB0aGlzLl9tYXJrZXJFbGVtZW50TWFwID0g
bmV3IE1hcDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBlbGVtZW50KCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50OwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGFsbG93c0NsaXBwZWRMYWJlbHMoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Fs
bG93c0NsaXBwZWRMYWJlbHM7Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgYWxsb3dzQ2xpcHBl
ZExhYmVscyh4KQogICAgIHsKQEAgLTk4LDEyICs3NCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2FsbG93c0NsaXBwZWRMYWJlbHMg
PSB4IHx8IGZhbHNlOwogCiAgICAgICAgIHRoaXMuX25lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAg
ICB9CiAKICAgICBnZXQgYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9hbGxvd3NUaW1lUmFuZ2VTZWxlY3Rpb247Ci0gICAgfSwKKyAgICB9CiAK
ICAgICBzZXQgYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKHgpCiAgICAgewpAQCAtMTU0LDEyICsx
MzAsMTIgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAg
ICAgICAgZGVsZXRlIHRoaXMuX3JpZ2h0U2VsZWN0aW9uSGFuZGxlRWxlbWVudDsKICAgICAgICAg
ICAgIGRlbGV0ZSB0aGlzLl9zZWxlY3Rpb25EcmFnRWxlbWVudDsKICAgICAgICAgfQotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IHplcm9UaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll96ZXJvVGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB6ZXJvVGltZSh4KQogICAgIHsK
QEAgLTE2OSwxMiArMTQ1LDEyIEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdGhpcy5femVyb1RpbWUgPSB4IHx8IDA7CiAKICAgICAgICAgdGhpcy5f
bmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdGFydFRpbWUoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGltZTsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCBzdGFydFRpbWUoeCkKICAgICB7CkBAIC0xODcsMTQgKzE2MywxNCBAQCBXZWJJbnNwZWN0
b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9lbmRUaW1l
ID0gdGhpcy5fc3RhcnRUaW1lICsgdGhpcy5fZHVyYXRpb247CiAKICAgICAgICAgdGhpcy5fbmVl
ZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBkdXJhdGlvbigpCiAgICAgewog
ICAgICAgICBpZiAoIWlzTmFOKHRoaXMuX2R1cmF0aW9uKSkKICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9kdXJhdGlvbjsKICAgICAgICAgcmV0dXJuIHRoaXMuZW5kVGltZSAtIHRoaXMuc3RhcnRU
aW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGR1cmF0aW9uKHgpCiAgICAgewpAQCAtMjEw
LDE0ICsxODYsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgdGhpcy5fZW5kVGltZVBpbm5lZCA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMu
X25lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgZW5kVGltZSgpCiAgICAg
ewogICAgICAgICBpZiAoIXRoaXMuX2VuZFRpbWVQaW5uZWQgJiYgdGhpcy5fc2NoZWR1bGVkTGF5
b3V0VXBkYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHRoaXMuX3JlY2FsY3VsYXRlKCk7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9lbmRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVu
ZFRpbWUoeCkKICAgICB7CkBAIC0yMjgsMTQgKzIwNCwxNCBAQCBXZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2VuZFRpbWVQaW5uZWQgPSB0cnVl
OwogCiAgICAgICAgIHRoaXMuX25lZWRzTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBn
ZXQgc2Vjb25kc1BlclBpeGVsKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRM
YXlvdXRVcGRhdGVJZGVudGlmaWVyKQogICAgICAgICAgICAgdGhpcy5fcmVjYWxjdWxhdGUoKTsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX3NlY29uZHNQZXJQaXhlbDsKLSAgICB9LAorICAgIH0KIAog
ICAgIHNldCBzZWNvbmRzUGVyUGl4ZWwoeCkKICAgICB7CkBAIC0yNDcsMTIgKzIyMywxMiBAQCBX
ZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuX2N1
cnJlbnRTbGljZVRpbWUgPSAwOwogCiAgICAgICAgIHRoaXMuX25lZWRzTGF5b3V0KCk7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgc2VsZWN0aW9uU3RhcnRUaW1lKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9zZWxlY3Rpb25TdGFydFRpbWU7Ci0gICAgfSwKKyAgICB9CiAKICAgICBz
ZXQgc2VsZWN0aW9uU3RhcnRUaW1lKHgpCiAgICAgewpAQCAtMjYzLDEyICsyMzksMTIgQEAgV2Vi
SW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl90aW1l
UmFuZ2VTZWxlY3Rpb25DaGFuZ2VkID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl9uZWVkc1NlbGVj
dGlvbkxheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNlbGVjdGlvbkVuZFRpbWUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkVuZFRpbWU7Ci0gICAgfSwK
KyAgICB9CiAKICAgICBzZXQgc2VsZWN0aW9uRW5kVGltZSh4KQogICAgIHsKQEAgLTI3OSw5ICsy
NTUsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQgPSB0cnVlOwogCiAgICAgICAgIHRoaXMu
X25lZWRzU2VsZWN0aW9uTGF5b3V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRNYXJrZXI6
IGZ1bmN0aW9uKG1hcmtlcikKKyAgICBhZGRNYXJrZXIobWFya2VyKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQobWFya2VyIGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlRpbWVsaW5lTWFy
a2VyKTsKIApAQCAtMjk3LDE0ICsyNzMsMTQgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9tYXJrZXJFbGVtZW50TWFwLnNldChtYXJrZXIs
IG1hcmtlckVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuX25lZWRzTWFya2VyTGF5b3V0KCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBlbGVtZW50Rm9yTWFya2VyOiBmdW5jdGlvbihtYXJrZXIpCisg
ICAgZWxlbWVudEZvck1hcmtlcihtYXJrZXIpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
bWFya2VyRWxlbWVudE1hcC5nZXQobWFya2VyKSB8fCBudWxsOwotICAgIH0sCisgICAgfQogCi0g
ICAgdXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgdXBkYXRlTGF5b3V0KCkKICAgICB7CiAg
ICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7CiAgICAg
ICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJ
ZGVudGlmaWVyKTsKQEAgLTQxOSw5ICszOTUsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxl
ci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fdXBkYXRlTWFya2Vycyh2aXNpYmxlV2lk
dGgsIGR1cmF0aW9uKTsKICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKHZpc2libGVXaWR0
aCwgZHVyYXRpb24pOwotICAgIH0sCisgICAgfQogCi0gICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQ6
IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZCgpCiAgICAgewogICAgICAgICAv
LyBJZiB0aGVyZSBpcyBhIG1haW4gbGF5b3V0IHNjaGVkdWxlZCB3ZSBjYW4ganVzdCB1cGRhdGUg
bGF5b3V0IGFuZCByZXR1cm4sIHNpbmNlIHRoYXQKICAgICAgICAgLy8gd2lsbCB1cGRhdGUgbWFy
a2VycyBhbmQgdGhlIHNlbGVjdGlvbiBhdCB0aGUgc2FtZSB0aW1lLgpAQCAtNDM5LDExICs0MTUs
MTEgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0gewogCiAgICAgICAg
IGlmICh0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJZGVudGlmaWVyKQogICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlU2VsZWN0aW9uKHZpc2libGVXaWR0aCwgdGhpcy5kdXJhdGlv
bik7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfbmVlZHNMYXlvdXQ6
IGZ1bmN0aW9uKCkKKyAgICBfbmVlZHNMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
X3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC00NTksOSArNDM1LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRp
ZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZUxheW91dC5iaW5kKHRoaXMp
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9uZWVkc01hcmtlckxheW91dDogZnVuY3Rpb24oKQor
ICAgIF9uZWVkc01hcmtlckxheW91dCgpCiAgICAgewogICAgICAgICAvLyBJZiBsYXlvdXQgaXMg
c2NoZWR1bGVkLCBhYm9ydCBzaW5jZSBtYXJrZXJzIHdpbGwgYmUgdXBkYXRlZCB3aGVuIGxheW91
dCBoYXBwZW5zLgogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRp
ZmllcikKQEAgLTQ4Miw5ICs0NTgsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlv
dXRVcGRhdGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZS5iaW5kKHRo
aXMpKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9uZWVkc1NlbGVjdGlvbkxheW91dDogZnVuY3Rp
b24oKQorICAgIF9uZWVkc1NlbGVjdGlvbkxheW91dCgpCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuX2FsbG93c1RpbWVSYW5nZVNlbGVjdGlvbikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUw
OCw5ICs0ODQsOSBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICB0aGlzLl9zY2hlZHVsZWRTZWxlY3Rpb25MYXlvdXRVcGRhdGVJ
ZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHVwZGF0ZS5iaW5kKHRoaXMpKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIF9yZWNhbGN1bGF0ZTogZnVuY3Rpb24oKQorICAgIF9yZWNhbGN1
bGF0ZSgpCiAgICAgewogICAgICAgICB2YXIgdmlzaWJsZVdpZHRoID0gdGhpcy5fZWxlbWVudC5j
bGllbnRXaWR0aDsKICAgICAgICAgaWYgKHZpc2libGVXaWR0aCA8PSAwKQpAQCAtNTI3LDkgKzUw
Myw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX2VuZFRpbWUgPSB0aGlzLl9zdGFydFRpbWUgKyAodmlzaWJsZVdpZHRoICogdGhp
cy5fc2Vjb25kc1BlclBpeGVsKTsKIAogICAgICAgICByZXR1cm4gdmlzaWJsZVdpZHRoOwotICAg
IH0sCisgICAgfQogCi0gICAgX3VwZGF0ZVBvc2l0aW9uT2ZFbGVtZW50OiBmdW5jdGlvbihlbGVt
ZW50LCBuZXdQb3NpdGlvbiwgdmlzaWJsZVdpZHRoLCBwcm9wZXJ0eSkKKyAgICBfdXBkYXRlUG9z
aXRpb25PZkVsZW1lbnQoZWxlbWVudCwgbmV3UG9zaXRpb24sIHZpc2libGVXaWR0aCwgcHJvcGVy
dHkpCiAgICAgewogICAgICAgICBwcm9wZXJ0eSA9IHByb3BlcnR5IHx8ICJsZWZ0IjsKIApAQCAt
NTM5LDkgKzUxNSw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgdmFyIGN1cnJlbnRQb3NpdGlvbiA9IHBhcnNlRmxvYXQoZWxlbWVudC5zdHlsZVtw
cm9wZXJ0eV0pLnRvRml4ZWQoMik7CiAgICAgICAgIGlmIChjdXJyZW50UG9zaXRpb24gIT09IG5l
d1Bvc2l0aW9uKQogICAgICAgICAgICAgZWxlbWVudC5zdHlsZVtwcm9wZXJ0eV0gPSBuZXdQb3Np
dGlvbiArICh0aGlzLl9lbmRUaW1lUGlubmVkID8gIiUiIDogInB4Iik7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBfdXBkYXRlTWFya2VyczogZnVuY3Rpb24odmlzaWJsZVdpZHRoLCBkdXJhdGlvbikK
KyAgICBfdXBkYXRlTWFya2Vycyh2aXNpYmxlV2lkdGgsIGR1cmF0aW9uKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKICAg
ICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZE1hcmtlckxheW91
dFVwZGF0ZUlkZW50aWZpZXIpOwpAQCAtNTU2LDkgKzUzMiw5IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICghbWFya2VyRWxlbWVudC5w
YXJlbnROb2RlKQogICAgICAgICAgICAgICAgIHRoaXMuX21hcmtlcnNFbGVtZW50LmFwcGVuZENo
aWxkKG1hcmtlckVsZW1lbnQpOwogICAgICAgICB9LCB0aGlzKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIF91cGRhdGVTZWxlY3Rpb246IGZ1bmN0aW9uKHZpc2libGVXaWR0aCwgZHVyYXRpb24pCisg
ICAgX3VwZGF0ZVNlbGVjdGlvbih2aXNpYmxlV2lkdGgsIGR1cmF0aW9uKQogICAgIHsKICAgICAg
ICAgaWYgKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlvbkxheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsK
ICAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZFNlbGVjdGlv
bkxheW91dFVwZGF0ZUlkZW50aWZpZXIpOwpAQCAtNTkwLDkgKzU2Niw5IEBAIFdlYkluc3BlY3Rv
ci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodGhpcy5fdGltZVJh
bmdlU2VsZWN0aW9uQ2hhbmdlZCkKICAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoVGltZVJhbmdl
U2VsZWN0aW9uQ2hhbmdlZEV2ZW50KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGlzcGF0Y2hU
aW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkRXZlbnQ6IGZ1bmN0aW9uKCkKKyAgICBfZGlzcGF0Y2hU
aW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkRXZlbnQoKQogICAgIHsKICAgICAgICAgZGVsZXRlIHRo
aXMuX3RpbWVSYW5nZVNlbGVjdGlvbkNoYW5nZWQ7CiAKQEAgLTYwMCwxNCArNTc2LDE0IEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
VGltZWxpbmVSdWxlci5FdmVudC5UaW1lUmFuZ2VTZWxlY3Rpb25DaGFuZ2VkKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIF90aW1lbGluZU1hcmtlclRpbWVDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAg
X3RpbWVsaW5lTWFya2VyVGltZUNoYW5nZWQoKQogICAgIHsKICAgICAgICAgdGhpcy5fbmVlZHNN
YXJrZXJMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVNb3VzZURvd246IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVNb3VzZURvd24oZXZlbnQpCiAgICAgewogICAgICAg
ICAvLyBPbmx5IGhhbmRsZSBsZWZ0IG1vdXNlIGNsaWNrcy4KICAgICAgICAgaWYgKGV2ZW50LmJ1
dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQpAQCAtNjM0LDkgKzYxMCw5IEBAIFdlYkluc3Bl
Y3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBldmVudC5wcmV2ZW50
RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9oYW5kbGVNb3VzZU1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVN
b3VzZU1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5idXR0
b24gPT09IDApOwogCkBAIC02NjEsOSArNjM3LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVs
ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAg
ICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRs
ZU1vdXNlVXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVNb3VzZVVwKGV2ZW50KQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQuYnV0dG9uID09PSAwKTsKIApAQCAtNjk3
LDkgKzY3Myw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsKIAog
ICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVTZWxlY3Rpb25IYW5kbGVNb3Vz
ZURvd246IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVTZWxlY3Rpb25IYW5kbGVNb3VzZURv
d24oZXZlbnQpCiAgICAgewogICAgICAgICAvLyBPbmx5IGhhbmRsZSBsZWZ0IG1vdXNlIGNsaWNr
cy4KICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQpAQCAt
NzE3LDkgKzY5Myw5IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZSA9IHsK
IAogICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICBldmVudC5zdG9wUHJv
cGFnYXRpb24oKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9oYW5kbGVTZWxlY3Rpb25IYW5kbGVN
b3VzZU1vdmU6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVTZWxlY3Rpb25IYW5kbGVNb3Vz
ZU1vdmUoZXZlbnQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC5idXR0b24g
PT09IDApOwogCkBAIC03NDksOSArNzI1LDkgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIu
cHJvdG90eXBlID0gewogCiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAg
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0sCisgICAgfQogCi0gICAgX2hhbmRsZVNl
bGVjdGlvbkhhbmRsZU1vdXNlVXA6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9oYW5kbGVTZWxlY3Rp
b25IYW5kbGVNb3VzZVVwKGV2ZW50KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZl
bnQuYnV0dG9uID09PSAwKTsKIApAQCAtNzY4LDQgKzc0NCwyMSBAQCBXZWJJbnNwZWN0b3IuVGlt
ZWxpbmVSdWxlci5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90
eXBlOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bUxlZnREaXZpZGVyU3BhY2lu
ZyA9IDQ4OworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuTWluaW11bURpdmlkZXJTcGFjaW5n
ID0gNjQ7CisKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkFsbG93c1RpbWVSYW5nZVNlbGVj
dGlvblN0eWxlQ2xhc3NOYW1lID0gImFsbG93cy10aW1lLXJhbmdlLXNlbGVjdGlvbiI7CitXZWJJ
bnNwZWN0b3IuVGltZWxpbmVSdWxlci5EaXZpZGVyRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gImRp
dmlkZXIiOworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuRGl2aWRlckxhYmVsRWxlbWVudFN0
eWxlQ2xhc3NOYW1lID0gImxhYmVsIjsKKworV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIuQmFz
ZU1hcmtlckVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJtYXJrZXIiOworV2ViSW5zcGVjdG9yLlRp
bWVsaW5lUnVsZXIuU2hhZGVkQXJlYUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzaGFkZWQtYXJl
YSI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5TZWxlY3Rpb25EcmFnRWxlbWVudFN0eWxl
Q2xhc3NOYW1lID0gInNlbGVjdGlvbi1kcmFnIjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVy
LlNlbGVjdGlvbkhhbmRsZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzZWxlY3Rpb24taGFuZGxl
IjsKK1dlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLkxlZnRTZWxlY3Rpb25FbGVtZW50U3R5bGVD
bGFzc05hbWUgPSAibGVmdCI7CitXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5SaWdodFNlbGVj
dGlvbkVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJyaWdodCI7CitXZWJJbnNwZWN0b3IuVGltZWxp
bmVSdWxlci5NaW5pbXVtU2VsZWN0aW9uVGltZVJhbmdlID0gMC4wMTsKKworV2ViSW5zcGVjdG9y
LlRpbWVsaW5lUnVsZXIuRXZlbnQgPSB7CisgICAgVGltZVJhbmdlU2VsZWN0aW9uQ2hhbmdlZDog
InRpbWUtcnVsZXItdGltZS1yYW5nZS1zZWxlY3Rpb24tY2hhbmdlZCIKK307CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZpZXcu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVZp
ZXcuanMKaW5kZXggZTdkYmNhZS4uYzQ3YWNhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVWaWV3LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lVmlldy5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxNSBVbml2ZXJzaXR5IG9mIFdhc2hp
bmd0b24uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCw0MCArMjQsMzYgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3
ID0gZnVuY3Rpb24ocmVwcmVzZW50ZWRPYmplY3QpCitXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3
ID0gY2xhc3MgVGltZWxpbmVWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3CiB7
Ci0gICAgLy8gVGhpcyBjbGFzcyBzaG91bGQgbm90IGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseS4g
Q3JlYXRlIGEgY29uY3JldGUgc3ViY2xhc3MgaW5zdGVhZC4KLSAgICBjb25zb2xlLmFzc2VydCh0
aGlzLmNvbnN0cnVjdG9yICE9PSBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3ICYmIHRoaXMgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3KTsKLQotICAgIFdlYkluc3BlY3Rvci5D
b250ZW50Vmlldy5jYWxsKHRoaXMsIHJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgIHRoaXMuX2Nv
bnRlbnRUcmVlT3V0bGluZSA9IFdlYkluc3BlY3Rvci50aW1lbGluZVNpZGViYXJQYW5lbC5jcmVh
dGVDb250ZW50VHJlZU91dGxpbmUoKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZChX
ZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LlN0eWxlQ2xhc3NOYW1lKTsKKyAgICBjb25zdHJ1Y3Rv
cihyZXByZXNlbnRlZE9iamVjdCkKKyAgICB7CisgICAgICAgIHN1cGVyKHJlcHJlc2VudGVkT2Jq
ZWN0KTsKIAotICAgIHRoaXMuX3plcm9UaW1lID0gMDsKLSAgICB0aGlzLl9zdGFydFRpbWUgPSAw
OwotICAgIHRoaXMuX2VuZFRpbWUgPSA1OwotICAgIHRoaXMuX2N1cnJlbnRUaW1lID0gMDsKLX07
CisgICAgICAgIC8vIFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0
bHkuIENyZWF0ZSBhIGNvbmNyZXRlIHN1YmNsYXNzIGluc3RlYWQuCisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuY29uc3RydWN0b3IgIT09IFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcgJiYg
dGhpcyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5UaW1lbGluZVZpZXcpOwogCi1XZWJJbnNwZWN0
b3IuVGltZWxpbmVWaWV3LlN0eWxlQ2xhc3NOYW1lID0gInRpbWVsaW5lLXZpZXciOworICAgICAg
ICB0aGlzLl9jb250ZW50VHJlZU91dGxpbmUgPSBXZWJJbnNwZWN0b3IudGltZWxpbmVTaWRlYmFy
UGFuZWwuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKCk7CisgICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKCJ0aW1lbGluZS12aWV3Iik7CiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZVZp
ZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVW
aWV3LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvbnRlbnRWaWV3LnByb3RvdHlwZSwK
KyAgICAgICAgdGhpcy5femVyb1RpbWUgPSAwOworICAgICAgICB0aGlzLl9zdGFydFRpbWUgPSAw
OworICAgICAgICB0aGlzLl9lbmRUaW1lID0gNTsKKyAgICAgICAgdGhpcy5fY3VycmVudFRpbWUg
PSAwOworICAgIH0KIAogICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG5hdmlnYXRpb25TaWRlYmFy
VHJlZU91dGxpbmUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRUcmVlT3V0
bGluZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBuYXZpZ2F0aW9uU2lkZWJhclRyZWVPdXRs
aW5lTGFiZWwoKQogICAgIHsKICAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViLWNsYXNzZXMg
aWYgbmVlZGVkLgogICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAorICAgIH0KIAogICAgIGdl
dCBzZWxlY3Rpb25QYXRoQ29tcG9uZW50cygpCiAgICAgewpAQCAtNjcsMTIgKzYzLDEyIEBAIFdl
Ykluc3BlY3Rvci5UaW1lbGluZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB2YXIgcGF0aENv
bXBvbmVudCA9IG5ldyBXZWJJbnNwZWN0b3IuR2VuZXJhbFRyZWVFbGVtZW50UGF0aENvbXBvbmVu
dCh0aGlzLl9jb250ZW50VHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudCk7CiAgICAgICAg
IHBhdGhDb21wb25lbnQuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuSGllcmFyY2hpY2Fs
UGF0aENvbXBvbmVudC5FdmVudC5TaWJsaW5nV2FzU2VsZWN0ZWQsIHRoaXMudHJlZUVsZW1lbnRQ
YXRoQ29tcG9uZW50U2VsZWN0ZWQsIHRoaXMpOwogICAgICAgICByZXR1cm4gW3BhdGhDb21wb25l
bnRdOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHplcm9UaW1lKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl96ZXJvVGltZTsKLSAgICB9LAorICAgIH0KIAogICAgIHNldCB6ZXJvVGlt
ZSh4KQogICAgIHsKQEAgLTgyLDEyICs3OCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5femVyb1RpbWUgPSB4IHx8IDA7CiAKICAgICAg
ICAgdGhpcy5uZWVkc0xheW91dCgpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHN0YXJ0VGlt
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IHN0YXJ0VGltZSh4KQogICAgIHsKQEAgLTk3LDEyICs5MywxMiBAQCBXZWJJ
bnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fc3RhcnRU
aW1lID0geCB8fCAwOwogCiAgICAgICAgIHRoaXMubmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCBlbmRUaW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbmRU
aW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGVuZFRpbWUoeCkKICAgICB7CkBAIC0xMTIs
MTIgKzEwOCwxMiBAQCBXZWJJbnNwZWN0b3IuVGltZWxpbmVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fZW5kVGltZSA9IHggfHwgMDsKIAogICAgICAgICB0aGlzLm5lZWRzTGF5b3V0
KCk7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgY3VycmVudFRpbWUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaW1lOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGN1
cnJlbnRUaW1lKHgpCiAgICAgewpAQCAtMTMxLDMyICsxMjcsMzIgQEAgV2ViSW5zcGVjdG9yLlRp
bWVsaW5lVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZ1bmN0aW9uIGNoZWNrSWZMYXlvdXRJ
c05lZWRlZChjdXJyZW50VGltZSkKICAgICAgICAgewogICAgICAgICAgICAgLy8gSW5jbHVkZSBz
b21lIHdpZ2dsZSByb29tIHNpbmNlIHRoZSBjdXJyZW50IHRpbWUgbWFya2VycyBjYW4gYmUgY2xp
cHBlZCBvZmYgdGhlIGVuZHMgYSBiaXQgYW5kIHN0aWxsIHBhcnRpYWxseSB2aXNpYmxlLgotICAg
ICAgICAgICAgY29uc3Qgd2lnZ2xlVGltZSA9IDAuMDU7IC8vIDUwbXMKKyAgICAgICAgICAgIHZh
ciB3aWdnbGVUaW1lID0gMC4wNTsgLy8gNTBtcwogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3N0
YXJ0VGltZSAtIHdpZ2dsZVRpbWUgPD0gY3VycmVudFRpbWUgJiYgY3VycmVudFRpbWUgPD0gdGhp
cy5fZW5kVGltZSArIHdpZ2dsZVRpbWU7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoY2hlY2tJ
ZkxheW91dElzTmVlZGVkLmNhbGwodGhpcywgb2xkQ3VycmVudFRpbWUpIHx8IGNoZWNrSWZMYXlv
dXRJc05lZWRlZC5jYWxsKHRoaXMsIHRoaXMuX2N1cnJlbnRUaW1lKSkKICAgICAgICAgICAgIHRo
aXMubmVlZHNMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc2V0OiBmdW5jdGlvbigp
CisgICAgcmVzZXQoKQogICAgIHsKICAgICAgICAgdGhpcy5fY29udGVudFRyZWVPdXRsaW5lLnJl
bW92ZUNoaWxkcmVuKCk7Ci0gICAgfSwKKyAgICB9CiAKIAotICAgIGZpbHRlckRpZENoYW5nZTog
ZnVuY3Rpb24oKQorICAgIGZpbHRlckRpZENoYW5nZSgpCiAgICAgewogICAgICAgICAvLyBJbXBs
ZW1lbnRlZCBieSBzdWItY2xhc3NlcyBpZiBuZWVkZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBt
YXRjaFRyZWVFbGVtZW50QWdhaW5zdEN1c3RvbUZpbHRlcnM6IGZ1bmN0aW9uKHRyZWVFbGVtZW50
KQorICAgIG1hdGNoVHJlZUVsZW1lbnRBZ2FpbnN0Q3VzdG9tRmlsdGVycyh0cmVlRWxlbWVudCkK
ICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlmIG5lZWRlZC4K
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXQ6
IGZ1bmN0aW9uKCkKKyAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMu
X3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGNhbmNlbEFu
aW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOwpAQCAt
MTY0LDI4ICsxNjAsMjggQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lVmlldy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWItY2xhc3NlcyBpZiBu
ZWVkZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZDogZnVuY3Rp
b24oKQorICAgIHVwZGF0ZUxheW91dElmTmVlZGVkKCkKICAgICB7CiAgICAgICAgIGlmICghdGhp
cy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZpbHRl
clVwZGF0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBmaWx0ZXJVcGRhdGVkKCkKICAgICB7CiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Db250ZW50Vmlldy5F
dmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7Ci0gICAgfSwKKyAgICB9CiAK
ICAgICAvLyBQcm90ZWN0ZWQKIAotICAgIHRyZWVFbGVtZW50UGF0aENvbXBvbmVudFNlbGVjdGVk
OiBmdW5jdGlvbihldmVudCkKKyAgICB0cmVlRWxlbWVudFBhdGhDb21wb25lbnRTZWxlY3RlZChl
dmVudCkKICAgICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1Yi1jbGFzc2VzIGlmIG5l
ZWRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIG5lZWRzTGF5b3V0OiBmdW5jdGlvbigpCisgICAg
bmVlZHNMYXlvdXQoKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLnZpc2libGUpCiAgICAgICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Ub2dnbGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmpz
CmluZGV4IGZkNDRhNmUuLjY5OGJhZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RvZ2dsZUJ1dHRvbk5h
dmlnYXRpb25JdGVtLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMywzMiArMjMsMzAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0
ZW0gPSBmdW5jdGlvbihpZGVudGlmaWVyLCBkZWZhdWx0VG9vbFRpcCwgYWx0ZXJuYXRlVG9vbFRp
cCwgZGVmYXVsdEltYWdlLCBhbHRlcm5hdGVJbWFnZSwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQs
IHN1cHByZXNzRW1ib3NzKSB7Ci0gICAgV2ViSW5zcGVjdG9yLkJ1dHRvbk5hdmlnYXRpb25JdGVt
LmNhbGwodGhpcywgaWRlbnRpZmllciwgZGVmYXVsdFRvb2xUaXAsIGRlZmF1bHRJbWFnZSwgaW1h
Z2VXaWR0aCwgaW1hZ2VIZWlnaHQsIHN1cHByZXNzRW1ib3NzKTsKLQotICAgIHRoaXMuX3RvZ2ds
ZWQgPSBmYWxzZTsKLSAgICB0aGlzLl9kZWZhdWx0SW1hZ2UgPSBkZWZhdWx0SW1hZ2U7Ci0gICAg
dGhpcy5fYWx0ZXJuYXRlSW1hZ2UgPSBhbHRlcm5hdGVJbWFnZTsKLSAgICB0aGlzLl9kZWZhdWx0
VG9vbFRpcCA9IGRlZmF1bHRUb29sVGlwOwotICAgIHRoaXMuX2FsdGVybmF0ZVRvb2xUaXAgPSBh
bHRlcm5hdGVUb29sVGlwIHx8IGRlZmF1bHRUb29sVGlwOwotfTsKLQotV2ViSW5zcGVjdG9yLlRv
Z2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lID0gInRvZ2dsZSI7CitXZWJJ
bnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBjbGFzcyBUb2dnbGVCdXR0b25O
YXZpZ2F0aW9uSXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5CdXR0b25OYXZpZ2F0aW9uSXRlbQor
eworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhbHRlcm5hdGVU
b29sVGlwLCBkZWZhdWx0SW1hZ2UsIGFsdGVybmF0ZUltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhl
aWdodCwgc3VwcHJlc3NFbWJvc3MpCisgICAgeworICAgICAgICBzdXBlcihpZGVudGlmaWVyLCBk
ZWZhdWx0VG9vbFRpcCwgZGVmYXVsdEltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgc3Vw
cHJlc3NFbWJvc3MpOwogCi1XZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2aWdhdGlvbkl0ZW0u
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9u
TmF2aWdhdGlvbkl0ZW0sCisgICAgICAgIHRoaXMuX3RvZ2dsZWQgPSBmYWxzZTsKKyAgICAgICAg
dGhpcy5fZGVmYXVsdEltYWdlID0gZGVmYXVsdEltYWdlOworICAgICAgICB0aGlzLl9hbHRlcm5h
dGVJbWFnZSA9IGFsdGVybmF0ZUltYWdlOworICAgICAgICB0aGlzLl9kZWZhdWx0VG9vbFRpcCA9
IGRlZmF1bHRUb29sVGlwOworICAgICAgICB0aGlzLl9hbHRlcm5hdGVUb29sVGlwID0gYWx0ZXJu
YXRlVG9vbFRpcCB8fCBkZWZhdWx0VG9vbFRpcDsKKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAog
ICAgIGdldCBkZWZhdWx0VG9vbFRpcCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGVm
YXVsdFRvb2xUaXA7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgYWx0ZXJuYXRlVG9vbFRpcCgp
CiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWx0ZXJuYXRlVG9vbFRpcDsKLSAgICB9LAor
ICAgIH0KIAogICAgIHNldCBhbHRlcm5hdGVUb29sVGlwKHRvb2xUaXApCiAgICAgewpAQCAtNTYs
MTcgKzU0LDE3IEBAIFdlYkluc3BlY3Rvci5Ub2dnbGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5wcm90
b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuX3RvZ2dsZWQpCiAgICAgICAgICAgICB0aGlz
LnRvb2xUaXAgPSB0aGlzLl9hbHRlcm5hdGVUb29sVGlwOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGRlZmF1bHRJbWFnZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdElt
YWdlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFsdGVybmF0ZUltYWdlKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9hbHRlcm5hdGVJbWFnZTsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCBhbHRlcm5hdGVJbWFnZShpbWFnZSkKICAgICB7CkBAIC03NCwxMiArNzIsMTIgQEAgV2Vi
SW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBpZiAodGhpcy5fdG9nZ2xlZCkKICAgICAgICAgICAgIHRoaXMuaW1hZ2UgPSB0aGlzLl9h
bHRlcm5hdGVJbWFnZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0b2dnbGVkKCkKICAgICB7
CiAgICAgICAgIHJldHVybiB0aGlzLl90b2dnbGVkOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0
IHRvZ2dsZWQoZmxhZykKICAgICB7CkBAIC05NywxNiArOTUsMjAgQEAgV2ViSW5zcGVjdG9yLlRv
Z2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
dG9vbFRpcCA9IHRoaXMuX2RlZmF1bHRUb29sVGlwOwogICAgICAgICAgICAgdGhpcy5pbWFnZSA9
IHRoaXMuX2RlZmF1bHRJbWFnZTsKICAgICAgICAgfQotICAgIH0sCisgICAgfQogCi0gICAgLy8g
UHJpdmF0ZQorICAgIC8vIFByb3RlY3RlZAogCi0gICAgX2FkZGl0aW9uYWxDbGFzc05hbWVzOiBb
V2ViSW5zcGVjdG9yLlRvZ2dsZUJ1dHRvbk5hdmlnYXRpb25JdGVtLlN0eWxlQ2xhc3NOYW1lLCBX
ZWJJbnNwZWN0b3IuQnV0dG9uTmF2aWdhdGlvbkl0ZW0uU3R5bGVDbGFzc05hbWVdLAorICAgIGdl
dCBhZGRpdGlvbmFsQ2xhc3NOYW1lcygpCisgICAgeworICAgICAgICByZXR1cm4gc3VwZXIuYWRk
aXRpb25hbENsYXNzTmFtZXMudW5zaGlmdCgidG9nZ2xlIik7CisgICAgfQogCi0gICAgLy8gVGhl
IGltYWdlIGlzbid0IGNhY2hlYWJsZSBiZWNhdXNlIGl0IGR5bmFtaWNhbGx5IGNoYW5nZXMgYW5k
IHRoZSBzYW1lIGNhbnZhcyBpZGVudGlmaWVyIGlzIHJldXNlZC4KLSAgICAvLyBGSVhNRTogV2Ug
Y291bGQgdHJ5IG92ZXJyaWRpbmcgX2NhbnZhc0lkZW50aWZpZXIoKSB0byByZXR1cm4gZGlmZmVy
ZW50IGlkZW50aWZpZXJzLiBJZiB3ZSBkaWQgdGhhdAotICAgIC8vIHdlIHdvdWxkIGFsc28gbmVl
ZCB0byBvdmVycmlkZSBnZW5lcmF0ZVN0eWxlVGV4dCgpIHRvIHVzZSB0aGUgZGlmZmVyZW50IGlk
ZW50aWZpZXJzLgotICAgIF9pbWFnZUNhY2hlYWJsZTogZmFsc2UKKyAgICBnZXQgaW1hZ2VDYWNo
ZWFibGUoKQorICAgIHsKKyAgICAgICAgLy8gVGhlIGltYWdlIGlzbid0IGNhY2hlYWJsZSBiZWNh
dXNlIGl0IGR5bmFtaWNhbGx5IGNoYW5nZXMgYW5kIHRoZSBzYW1lIGNhbnZhcyBpZGVudGlmaWVy
IGlzIHJldXNlZC4KKyAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHRyeSBvdmVycmlkaW5nIF9j
YW52YXNJZGVudGlmaWVyKCkgdG8gcmV0dXJuIGRpZmZlcmVudCBpZGVudGlmaWVycy4gSWYgd2Ug
ZGlkIHRoYXQKKyAgICAgICAgLy8gd2Ugd291bGQgYWxzbyBuZWVkIHRvIG92ZXJyaWRlIGdlbmVy
YXRlU3R5bGVUZXh0KCkgdG8gdXNlIHRoZSBkaWZmZXJlbnQgaWRlbnRpZmllcnMuCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuVG9nZ2xlQnV0dG9uTmF2
aWdhdGlvbkl0ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5CdXR0b25OYXZp
Z2F0aW9uSXRlbS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Ub2dnbGVDb250cm9sVG9vbGJhckl0ZW0uanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub2dnbGVDb250cm9sVG9vbGJhckl0
ZW0uanMKaW5kZXggYjlhM2JkYi4uN2E2OGY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVG9nZ2xlQ29udHJvbFRvb2xiYXJJdGVtLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RvZ2dsZUNvbnRy
b2xUb29sYmFySXRlbS5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjMsMTggKzIzLDE3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlRvZ2dsZUNvbnRyb2xUb29sYmFySXRl
bSA9IGZ1bmN0aW9uKGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhbHRlcm5hdGVUb29sVGlw
LCBkZWZhdWx0SW1hZ2UsIGFsdGVybmF0ZUltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCkg
ewotICAgIFdlYkluc3BlY3Rvci5Ub2dnbGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5jYWxsKHRoaXMs
IGlkZW50aWZpZXIsIGRlZmF1bHRUb29sVGlwLCBhbHRlcm5hdGVUb29sVGlwLCBkZWZhdWx0SW1h
Z2UsIGFsdGVybmF0ZUltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgZmFsc2UpOwotfTsK
LQotV2ViSW5zcGVjdG9yLlRvZ2dsZUNvbnRyb2xUb29sYmFySXRlbS5TdHlsZUNsYXNzTmFtZSA9
ICJ0b2dnbGUiOworV2ViSW5zcGVjdG9yLlRvZ2dsZUNvbnRyb2xUb29sYmFySXRlbSA9IGNsYXNz
IFRvZ2dsZUNvbnRyb2xUb29sYmFySXRlbSBleHRlbmRzIFdlYkluc3BlY3Rvci5Ub2dnbGVCdXR0
b25OYXZpZ2F0aW9uSXRlbQoreworICAgIGNvbnN0cnVjdG9yKGlkZW50aWZpZXIsIGRlZmF1bHRU
b29sVGlwLCBhbHRlcm5hdGVUb29sVGlwLCBkZWZhdWx0SW1hZ2UsIGFsdGVybmF0ZUltYWdlLCBp
bWFnZVdpZHRoLCBpbWFnZUhlaWdodCkKKyAgICB7CisgICAgICAgIHN1cGVyKGlkZW50aWZpZXIs
IGRlZmF1bHRUb29sVGlwLCBhbHRlcm5hdGVUb29sVGlwLCBkZWZhdWx0SW1hZ2UsIGFsdGVybmF0
ZUltYWdlLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCwgZmFsc2UpOworICAgIH0KIAotV2ViSW5z
cGVjdG9yLlRvZ2dsZUNvbnRyb2xUb29sYmFySXRlbS5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5Ub2dnbGVDb250cm9sVG9vbGJhckl0ZW0sCisgICAgLy8gUHJv
dGVjdGVkCiAKLSAgICAvLyBQcml2YXRlCi0KLSAgICBfYWRkaXRpb25hbENsYXNzTmFtZXM6IFtX
ZWJJbnNwZWN0b3IuVG9nZ2xlQ29udHJvbFRvb2xiYXJJdGVtLlN0eWxlQ2xhc3NOYW1lLCBXZWJJ
bnNwZWN0b3IuQ29udHJvbFRvb2xiYXJJdGVtLlN0eWxlQ2xhc3NOYW1lXQorICAgIGdldCBhZGRp
dGlvbmFsQ2xhc3NOYW1lcygpCisgICAgeworICAgICAgICByZXR1cm4gWyJ0b2dnbGUiLCAiY29u
dHJvbCJdOworICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5Ub2dnbGVDb250cm9sVG9vbGJhckl0
ZW0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5Ub2dnbGVCdXR0b25OYXZpZ2F0
aW9uSXRlbS5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVG9vbGJhci5qcwppbmRleCBlNmZlNzBhLi42NDcxNGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Ub29sYmFyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Rvb2xiYXIu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDc3ICsyMyw0MiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Ub29sYmFyID0gZnVuY3Rpb24oZWxlbWVudCwgbmF2aWdhdGlv
bkl0ZW1zKSB7Ci0gICAgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIuY2FsbCh0aGlzLCBlbGVt
ZW50LCBuYXZpZ2F0aW9uSXRlbXMsICJ0b29sYmFyIik7Ci0KLSAgICB0aGlzLmRpc3BsYXlNb2Rl
ID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsVmVydGljYWw7
Ci0gICAgdGhpcy5zaXplTW9kZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLlNpemVNb2RlLk5vcm1h
bDsKLQotICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgIHRoaXMuX2NvbnRyb2xTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUg
PSBXZWJJbnNwZWN0b3IuVG9vbGJhci5Db250cm9sU2VjdGlvblN0eWxlQ2xhc3NOYW1lOwotICAg
IHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fY29udHJvbFNlY3Rpb25FbGVtZW50KTsK
LQotICAgIHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwotICAgIHRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNw
ZWN0b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5zcGVj
dG9yLlRvb2xiYXIuTGVmdEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fbGVm
dFNlY3Rpb25FbGVtZW50LnNldEF0dHJpYnV0ZSgicm9sZSIsICJ0YWJsaXN0Iik7Ci0gICAgdGhp
cy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQpOwotCi0gICAg
dGhpcy5fY2VudGVyU2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0
b3IuVG9vbGJhci5JdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5zcGVjdG9y
LlRvb2xiYXIuQ2VudGVySXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKLSAgICB0aGlzLl9lbGVt
ZW50LmFwcGVuZENoaWxkKHRoaXMuX2NlbnRlclNlY3Rpb25FbGVtZW50KTsKLQotICAgIHRoaXMu
X3JpZ2h0U2VjdGlvbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICB0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29s
YmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgKyAiICIgKyBXZWJJbnNwZWN0b3IuVG9vbGJh
ci5SaWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWU7Ci0gICAgdGhpcy5fcmlnaHRTZWN0aW9u
RWxlbWVudC5zZXRBdHRyaWJ1dGUoInJvbGUiLCAidGFibGlzdCIpOwotICAgIHRoaXMuX2VsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudCk7Ci0KLSAgICB0aGlzLl9l
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFuZGxlQ29udGV4
dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci19OworV2ViSW5zcGVjdG9yLlRvb2xiYXIg
PSBjbGFzcyBUb29sYmFyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLk5hdmlnYXRpb25CYXIKK3sKKyAg
ICBjb25zdHJ1Y3RvcihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMpCisgICAgeworICAgICAgICBz
dXBlcihlbGVtZW50LCBuYXZpZ2F0aW9uSXRlbXMsICJ0b29sYmFyIik7CiAKLS8vIEZJWE1FOiBN
b3ZlIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcyBhbmQgd2UgY2FuIHJlbW92ZSB0
aGlzLgotV2ViSW5zcGVjdG9yLk9iamVjdC5kZXByZWNhdGVkQWRkQ29uc3RydWN0b3JGdW5jdGlv
bnMoV2ViSW5zcGVjdG9yLlRvb2xiYXIpOworICAgICAgICB0aGlzLmRpc3BsYXlNb2RlID0gV2Vi
SW5zcGVjdG9yLlRvb2xiYXIuRGlzcGxheU1vZGUuSWNvbkFuZExhYmVsVmVydGljYWw7CisgICAg
ICAgIHRoaXMuc2l6ZU1vZGUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5TaXplTW9kZS5Ob3JtYWw7
CiAKLVdlYkluc3BlY3Rvci5Ub29sYmFyLlN0eWxlQ2xhc3NOYW1lID0gInRvb2xiYXIiOwotV2Vi
SW5zcGVjdG9yLlRvb2xiYXIuQ29udHJvbFNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJjb250cm9s
LXNlY3Rpb24iOwotV2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFt
ZSA9ICJpdGVtLXNlY3Rpb24iOwotV2ViSW5zcGVjdG9yLlRvb2xiYXIuTGVmdEl0ZW1TZWN0aW9u
U3R5bGVDbGFzc05hbWUgPSAibGVmdCI7Ci1XZWJJbnNwZWN0b3IuVG9vbGJhci5DZW50ZXJJdGVt
U2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gImNlbnRlciI7Ci1XZWJJbnNwZWN0b3IuVG9vbGJhci5S
aWdodEl0ZW1TZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAicmlnaHQiOwotV2ViSW5zcGVjdG9yLlRv
b2xiYXIuVG90YWxTZWN0aW9uTWFyZ2lucyA9IDEyICogMzsKLQotV2ViSW5zcGVjdG9yLlRvb2xi
YXIuRXZlbnQgPSB7Ci0gICAgRGlzcGxheU1vZGVEaWRDaGFuZ2U6ICJ0b29sYmFyLWRpc3BsYXkt
bW9kZS1kaWQtY2hhbmdlIiwKLSAgICBTaXplTW9kZURpZENoYW5nZTogInRvb2xiYXItc2l6ZS1t
b2RlLWRpZC1jaGFuZ2UiCi19OworICAgICAgICB0aGlzLl9jb250cm9sU2VjdGlvbkVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKKyAgICAgICAgdGhpcy5fY29udHJvbFNl
Y3Rpb25FbGVtZW50LmNsYXNzTmFtZSA9IFdlYkluc3BlY3Rvci5Ub29sYmFyLkNvbnRyb2xTZWN0
aW9uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhp
cy5fY29udHJvbFNlY3Rpb25FbGVtZW50KTsKIAotV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlv
biA9IHsKLSAgICBDb250cm9sOiAiY29udHJvbCIsCi0gICAgTGVmdDogImxlZnQiLAotICAgIENl
bnRlcjogImNlbnRlciIsCi0gICAgUmlnaHQ6ICJyaWdodCIKLX07CisgICAgICAgIHRoaXMuX2xl
ZnRTZWN0aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAg
ICB0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xi
YXIuSXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFy
LkxlZnRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICB0aGlzLl9sZWZ0U2VjdGlv
bkVsZW1lbnQuc2V0QXR0cmlidXRlKCJyb2xlIiwgInRhYmxpc3QiKTsKKyAgICAgICAgdGhpcy5f
ZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9sZWZ0U2VjdGlvbkVsZW1lbnQpOwogCi1XZWJJbnNw
ZWN0b3IuVG9vbGJhci5EaXNwbGF5TW9kZSA9IHsKLSAgICBJY29uQW5kTGFiZWxWZXJ0aWNhbDog
Imljb24tYW5kLWxhYmVsLXZlcnRpY2FsIiwKLSAgICBJY29uQW5kTGFiZWxIb3Jpem9udGFsOiAi
aWNvbi1hbmQtbGFiZWwtaG9yaXpvbnRhbCIsCi0gICAgSWNvbk9ubHk6ICJpY29uLW9ubHkiLAot
ICAgIExhYmVsT25seTogImxhYmVsLW9ubHkiCi19OworICAgICAgICB0aGlzLl9jZW50ZXJTZWN0
aW9uRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOworICAgICAgICB0aGlz
Ll9jZW50ZXJTZWN0aW9uRWxlbWVudC5jbGFzc05hbWUgPSBXZWJJbnNwZWN0b3IuVG9vbGJhci5J
dGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lICsgIiAiICsgV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2Vu
dGVySXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9jZW50ZXJTZWN0aW9uRWxlbWVudCk7CiAKLVdlYkluc3BlY3Rvci5Ub29s
YmFyLlNpemVNb2RlID0gewotICAgIE5vcm1hbDogIm5vcm1hbC1zaXplIiwKLSAgICBTbWFsbDog
InNtYWxsLXNpemUiCi19OworICAgICAgICB0aGlzLl9yaWdodFNlY3Rpb25FbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIHRoaXMuX3JpZ2h0U2VjdGlvbkVs
ZW1lbnQuY2xhc3NOYW1lID0gV2ViSW5zcGVjdG9yLlRvb2xiYXIuSXRlbVNlY3Rpb25TdHlsZUNs
YXNzTmFtZSArICIgIiArIFdlYkluc3BlY3Rvci5Ub29sYmFyLlJpZ2h0SXRlbVNlY3Rpb25TdHls
ZUNsYXNzTmFtZTsKKyAgICAgICAgdGhpcy5fcmlnaHRTZWN0aW9uRWxlbWVudC5zZXRBdHRyaWJ1
dGUoInJvbGUiLCAidGFibGlzdCIpOworICAgICAgICB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxk
KHRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQpOwogCi1XZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Ub29sYmFyLAorICAgICAg
ICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgdGhpcy5faGFu
ZGxlQ29udGV4dE1lbnVFdmVudC5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgfQogCiAgICAgLy8g
UHVibGljCiAKICAgICBnZXQgZGlzcGxheU1vZGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRo
aXMuX2Rpc3BsYXlNb2RlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRpc3BsYXlNb2RlKG1v
ZGUpCiAgICAgewpAQCAtMTE0LDEyICs3OSwxMiBAQCBXZWJJbnNwZWN0b3IuVG9vbGJhci5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRvb2xiYXIuRXZlbnQuRGlzcGxh
eU1vZGVEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNpemVNb2RlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zaXplTW9kZTsKLSAgICB9LAorICAgIH0KIAogICAg
IHNldCBzaXplTW9kZShtb2RlKQogICAgIHsKQEAgLTEzNiw5ICsxMDEsOSBAQCBXZWJJbnNwZWN0
b3IuVG9vbGJhci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudXBkYXRlTGF5b3V0KCk7CiAK
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlRvb2xi
YXIuRXZlbnQuU2l6ZU1vZGVEaWRDaGFuZ2UpOwotICAgIH0sCisgICAgfQogCi0gICAgY3VzdG9t
VXBkYXRlTGF5b3V0OiBmdW5jdGlvbigpCisgICAgY3VzdG9tVXBkYXRlTGF5b3V0KCkKICAgICB7
CiAgICAgICAgIC8vIEJhaWwgZWFybHkgaWYgb3VyIHNlY3Rpb25zIGFyZSBub3QgY3JlYXRlZCB5
ZXQuIFRoaXMgbWVhbnMgd2UgYXJlIGJlaW5nIGNhbGxlZCBkdXJpbmcgY29uc3RydWN0aW9uLgog
ICAgICAgICBpZiAoIXRoaXMuX2xlZnRTZWN0aW9uRWxlbWVudCB8fCAhdGhpcy5fY2VudGVyU2Vj
dGlvbkVsZW1lbnQgfHwgIXRoaXMuX3JpZ2h0U2VjdGlvbkVsZW1lbnQpCkBAIC0xODQsOSArMTQ5
LDkgQEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChXZWJJbnNwZWN0b3Iu
TmF2aWdhdGlvbkJhci5Db2xsYXBzZWRTdHlsZUNsYXNzTmFtZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBhZGRUb29sYmFySXRlbTogZnVuY3Rpb24odG9vbGJhckl0ZW0sIHNlY3Rpb25JZGVudGlm
aWVyKQorICAgIGFkZFRvb2xiYXJJdGVtKHRvb2xiYXJJdGVtLCBzZWN0aW9uSWRlbnRpZmllcikK
ICAgICB7CiAgICAgICAgIHZhciBzZWN0aW9uRWxlbWVudDsKIApAQCAtMjEyLDExICsxNzcsMTEg
QEAgV2ViSW5zcGVjdG9yLlRvb2xiYXIucHJvdG90eXBlID0gewogICAgICAgICBjb25zb2xlLmFz
c2VydChzZWN0aW9uRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5hZGROYXZpZ2F0aW9uSXRlbSh0
b29sYmFySXRlbSwgc2VjdGlvbkVsZW1lbnQpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQogCi0gICAgX2hhbmRsZUNvbnRleHRNZW51RXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQorICAg
IF9oYW5kbGVDb250ZXh0TWVudUV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGNvbnRl
eHRNZW51ID0gbmV3IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudShldmVudCk7CiAKQEAgLTIzMSwx
NyArMTk2LDQ3IEBAIFdlYkluc3BlY3Rvci5Ub29sYmFyLnByb3RvdHlwZSA9IHsKICAgICAgICAg
fQogCiAgICAgICAgIGNvbnRleHRNZW51LnNob3coKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9j
aGFuZ2VEaXNwbGF5TW9kZTogZnVuY3Rpb24oZGlzcGxheU1vZGUpCisgICAgX2NoYW5nZURpc3Bs
YXlNb2RlKGRpc3BsYXlNb2RlKQogICAgIHsKICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZSA9IGRp
c3BsYXlNb2RlOwotICAgIH0sCisgICAgfQogCi0gICAgX3RvZ2dsZVNtYWxsSWNvbnM6IGZ1bmN0
aW9uKCkKKyAgICBfdG9nZ2xlU21hbGxJY29ucygpCiAgICAgewogICAgICAgICB0aGlzLnNpemVN
b2RlID0gdGhpcy5fc2l6ZU1vZGUgPT09IFdlYkluc3BlY3Rvci5Ub29sYmFyLlNpemVNb2RlLk5v
cm1hbCA/IFdlYkluc3BlY3Rvci5Ub29sYmFyLlNpemVNb2RlLlNtYWxsIDogV2ViSW5zcGVjdG9y
LlRvb2xiYXIuU2l6ZU1vZGUuTm9ybWFsOwogICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5Ub29s
YmFyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuTmF2aWdhdGlvbkJhci5wcm90
b3R5cGU7CitXZWJJbnNwZWN0b3IuVG9vbGJhci5TdHlsZUNsYXNzTmFtZSA9ICJ0b29sYmFyIjsK
K1dlYkluc3BlY3Rvci5Ub29sYmFyLkNvbnRyb2xTZWN0aW9uU3R5bGVDbGFzc05hbWUgPSAiY29u
dHJvbC1zZWN0aW9uIjsKK1dlYkluc3BlY3Rvci5Ub29sYmFyLkl0ZW1TZWN0aW9uU3R5bGVDbGFz
c05hbWUgPSAiaXRlbS1zZWN0aW9uIjsKK1dlYkluc3BlY3Rvci5Ub29sYmFyLkxlZnRJdGVtU2Vj
dGlvblN0eWxlQ2xhc3NOYW1lID0gImxlZnQiOworV2ViSW5zcGVjdG9yLlRvb2xiYXIuQ2VudGVy
SXRlbVNlY3Rpb25TdHlsZUNsYXNzTmFtZSA9ICJjZW50ZXIiOworV2ViSW5zcGVjdG9yLlRvb2xi
YXIuUmlnaHRJdGVtU2VjdGlvblN0eWxlQ2xhc3NOYW1lID0gInJpZ2h0IjsKK1dlYkluc3BlY3Rv
ci5Ub29sYmFyLlRvdGFsU2VjdGlvbk1hcmdpbnMgPSAxMiAqIDM7CisKK1dlYkluc3BlY3Rvci5U
b29sYmFyLkV2ZW50ID0geworICAgIERpc3BsYXlNb2RlRGlkQ2hhbmdlOiAidG9vbGJhci1kaXNw
bGF5LW1vZGUtZGlkLWNoYW5nZSIsCisgICAgU2l6ZU1vZGVEaWRDaGFuZ2U6ICJ0b29sYmFyLXNp
emUtbW9kZS1kaWQtY2hhbmdlIgorfTsKKworV2ViSW5zcGVjdG9yLlRvb2xiYXIuU2VjdGlvbiA9
IHsKKyAgICBDb250cm9sOiAiY29udHJvbCIsCisgICAgTGVmdDogImxlZnQiLAorICAgIENlbnRl
cjogImNlbnRlciIsCisgICAgUmlnaHQ6ICJyaWdodCIKK307CisKK1dlYkluc3BlY3Rvci5Ub29s
YmFyLkRpc3BsYXlNb2RlID0geworICAgIEljb25BbmRMYWJlbFZlcnRpY2FsOiAiaWNvbi1hbmQt
bGFiZWwtdmVydGljYWwiLAorICAgIEljb25BbmRMYWJlbEhvcml6b250YWw6ICJpY29uLWFuZC1s
YWJlbC1ob3Jpem9udGFsIiwKKyAgICBJY29uT25seTogImljb24tb25seSIsCisgICAgTGFiZWxP
bmx5OiAibGFiZWwtb25seSIKK307CisKK1dlYkluc3BlY3Rvci5Ub29sYmFyLlNpemVNb2RlID0g
eworICAgIE5vcm1hbDogIm5vcm1hbC1zaXplIiwKKyAgICBTbWFsbDogInNtYWxsLXNpemUiCit9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VHlwZVByb3BlcnRpZXNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVHlwZVByb3BlcnRpZXNTZWN0aW9uLmpzCmluZGV4IDkyOWFkNDIuLjNjNzkx
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1R5cGVQcm9wZXJ0aWVzU2VjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9UeXBlUHJvcGVydGllc1NlY3Rpb24uanMKQEAgLTIzLDIwICsyMyw2
OSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3Bl
Y3Rvci5UeXBlUHJvcGVydGllc1NlY3Rpb24gPSBmdW5jdGlvbih0eXBlcywgdGl0bGUsIHN1YnRp
dGxlKQorV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlvbiA9IGNsYXNzIFR5cGVQcm9w
ZXJ0aWVzU2VjdGlvbiBleHRlbmRzIFdlYkluc3BlY3Rvci5Qcm9wZXJ0aWVzU2VjdGlvbgogewot
ICAgIHRoaXMuZW1wdHlQbGFjZWhvbGRlciA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTm8gUHJv
cGVydGllcyIpOwotICAgIHRoaXMudHlwZXMgPSB0eXBlczsKLSAgICB0aGlzLl90eXBlU2V0ID0g
V2ViSW5zcGVjdG9yLlR5cGVTZXQuZnJvbVBheWxvYWQodGhpcy50eXBlcyk7CisgICAgY29uc3Ry
dWN0b3IodHlwZXMsIHRpdGxlLCBzdWJ0aXRsZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHRpdGxl
LCBzdWJ0aXRsZSk7CiAKLSAgICBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24uY2FsbCh0
aGlzLCB0aXRsZSwgc3VidGl0bGUpOwotfTsKKyAgICAgICAgdGhpcy5lbXB0eVBsYWNlaG9sZGVy
ID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJObyBQcm9wZXJ0aWVzIik7CisgICAgICAgIHRoaXMu
dHlwZXMgPSB0eXBlczsKKyAgICAgICAgdGhpcy5fdHlwZVNldCA9IFdlYkluc3BlY3Rvci5UeXBl
U2V0LmZyb21QYXlsb2FkKHRoaXMudHlwZXMpOworICAgIH0KKworICAgIC8vIFN0YXRpYworCisg
ICAgc3RhdGljIHByb3BlcnR5Q29tcGFyYXRvcihwcm9wZXJ0eUEsIHByb3BlcnR5QikKKyAgICB7
CisgICAgICAgIC8vIFRoaXMgaXMgbW9zdGx5IGlkZW50aWNhbCB0byBPYmplY3RUcmVlVmlldy5j
b21wYXJlUHJvcGVydGllcy4KKyAgICAgICAgLy8gQnV0IHRoaXMgY2hlY2tzIGZvciBlcXVhbGl0
eSBiZWNhdXNlIHdlIGNhbiBoYXZlIHR3byBvYmplY3RzIG5hbWVkIHRoZSBzYW1lIHRoaW5nLgor
CisgICAgICAgIHZhciBhID0gcHJvcGVydHlBLm5hbWU7CisgICAgICAgIHZhciBiID0gcHJvcGVy
dHlCLm5hbWU7CisgICAgICAgIGlmIChhLmluZGV4T2YoIl9fcHJvdG9fXyIpICE9PSAtMSkKKyAg
ICAgICAgICAgIHJldHVybiAxOworICAgICAgICBpZiAoYi5pbmRleE9mKCJfX3Byb3RvX18iKSAh
PT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChhID09PSBiKQorICAg
ICAgICAgICAgcmV0dXJuIDE7CisKKyAgICAgICAgdmFyIGRpZmYgPSAwOworICAgICAgICB2YXIg
Y2h1bmsgPSAvXlxkK3xeXEQrLzsKKyAgICAgICAgdmFyIGNodW5rYSwgY2h1bmtiLCBhbnVtLCBi
bnVtOworICAgICAgICB3aGlsZSAoZGlmZiA9PT0gMCkgeworICAgICAgICAgICAgaWYgKCFhICYm
IGIpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKCFiICYmIGEp
CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICBjaHVua2EgPSBhLm1hdGNo
KGNodW5rKVswXTsKKyAgICAgICAgICAgIGNodW5rYiA9IGIubWF0Y2goY2h1bmspWzBdOworICAg
ICAgICAgICAgYW51bSA9ICFpc05hTihjaHVua2EpOworICAgICAgICAgICAgYm51bSA9ICFpc05h
TihjaHVua2IpOworICAgICAgICAgICAgaWYgKGFudW0gJiYgIWJudW0pCisgICAgICAgICAgICAg
ICAgcmV0dXJuIC0xOworICAgICAgICAgICAgaWYgKGJudW0gJiYgIWFudW0pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICBpZiAoYW51bSAmJiBibnVtKSB7CisgICAgICAg
ICAgICAgICAgZGlmZiA9IGNodW5rYSAtIGNodW5rYjsKKyAgICAgICAgICAgICAgICBpZiAoZGlm
ZiA9PT0gMCAmJiBjaHVua2EubGVuZ3RoICE9PSBjaHVua2IubGVuZ3RoKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmICghK2NodW5rYSAmJiAhK2NodW5rYikgLy8gY2h1bmtzIGFyZSBzdHJpbmdz
IG9mIGFsbCAwcyAoc3BlY2lhbCBjYXNlKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGNodW5rYS5sZW5ndGggLSBjaHVua2IubGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2h1bmtiLmxlbmd0aCAtIGNodW5rYS5s
ZW5ndGg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChjaHVua2Eg
IT09IGNodW5rYikKKyAgICAgICAgICAgICAgICByZXR1cm4gKGNodW5rYSA8IGNodW5rYikgPyAt
MSA6IDE7CisgICAgICAgICAgICBhID0gYS5zdWJzdHJpbmcoY2h1bmthLmxlbmd0aCk7CisgICAg
ICAgICAgICBiID0gYi5zdWJzdHJpbmcoY2h1bmtiLmxlbmd0aCk7CisgICAgICAgIH0KIAotV2Vi
SW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydGllc1NlY3Rpb24sCi0gICAgX19wcm90b19f
OiBXZWJJbnNwZWN0b3IuUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLAorICAgICAgICByZXR1
cm4gZGlmZjsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKIAotICAgIG9ucG9wdWxhdGU6IGZ1bmN0
aW9uKCkKKyAgICBvbnBvcHVsYXRlKCkKICAgICB7CiAgICAgICAgIHRoaXMucHJvcGVydGllc1Ry
ZWVPdXRsaW5lLnJlbW92ZUNoaWxkcmVuKCk7CiAKQEAgLTU2LDcgKzEwNSw3IEBAIFdlYkluc3Bl
Y3Rvci5UeXBlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KIAotICAgICAgICBwcm9wZXJ0aWVzLnNvcnQoV2ViSW5zcGVjdG9yLlR5cGVQ
cm9wZXJ0aWVzU2VjdGlvbi5Qcm9wZXJ0eUNvbXBhcmF0b3IpOworICAgICAgICBwcm9wZXJ0aWVz
LnNvcnQoV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm9wZXJ0eUNvbXBhcmF0
b3IpOwogCiAgICAgICAgIGlmICh0aGlzLnR5cGVzLmlzVHJ1bmNhdGVkKQogICAgICAgICAgICAg
cHJvcGVydGllcy5wdXNoKHtuYW1lOiAiXHUyMDI2Iiwgc3RydWN0dXJlOiBudWxsfSk7CkBAIC03
OSw1MiArMTI4LDYgQEAgV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5
cGUgPSB7CiAgICAgfQogfTsKIAotLy8gVGhpcyBpcyBtb3N0bHkgaWRlbnRpY2FsIHRvIE9iamVj
dFRyZWVWaWV3LmNvbXBhcmVQcm9wZXJ0aWVzLgotLy8gQnV0IHRoaXMgY2hlY2tzIGZvciBlcXVh
bGl0eSBiZWNhdXNlIHdlIGNhbiBoYXZlIHR3byBvYmplY3RzIG5hbWVkIHRoZSBzYW1lIHRoaW5n
LgotV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0aWVzU2VjdGlvbi5Qcm9wZXJ0eUNvbXBhcmF0b3Ig
PSBmdW5jdGlvbihwcm9wZXJ0eUEsIHByb3BlcnR5QikKLXsKLSAgICB2YXIgYSA9IHByb3BlcnR5
QS5uYW1lOwotICAgIHZhciBiID0gcHJvcGVydHlCLm5hbWU7Ci0gICAgaWYgKGEuaW5kZXhPZigi
X19wcm90b19fIikgIT09IC0xKQotICAgICAgICByZXR1cm4gMTsKLSAgICBpZiAoYi5pbmRleE9m
KCJfX3Byb3RvX18iKSAhPT0gLTEpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoYSA9PT0g
YikKLSAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICB2YXIgZGlmZiA9IDA7Ci0gICAgdmFyIGNodW5r
ID0gL15cZCt8XlxEKy87Ci0gICAgdmFyIGNodW5rYSwgY2h1bmtiLCBhbnVtLCBibnVtOwotICAg
IHdoaWxlIChkaWZmID09PSAwKSB7Ci0gICAgICAgIGlmICghYSAmJiBiKQotICAgICAgICAgICAg
cmV0dXJuIC0xOwotICAgICAgICBpZiAoIWIgJiYgYSkKLSAgICAgICAgICAgIHJldHVybiAxOwot
ICAgICAgICBjaHVua2EgPSBhLm1hdGNoKGNodW5rKVswXTsKLSAgICAgICAgY2h1bmtiID0gYi5t
YXRjaChjaHVuaylbMF07Ci0gICAgICAgIGFudW0gPSAhaXNOYU4oY2h1bmthKTsKLSAgICAgICAg
Ym51bSA9ICFpc05hTihjaHVua2IpOwotICAgICAgICBpZiAoYW51bSAmJiAhYm51bSkKLSAgICAg
ICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgaWYgKGJudW0gJiYgIWFudW0pCi0gICAgICAgICAg
ICByZXR1cm4gMTsKLSAgICAgICAgaWYgKGFudW0gJiYgYm51bSkgewotICAgICAgICAgICAgZGlm
ZiA9IGNodW5rYSAtIGNodW5rYjsKLSAgICAgICAgICAgIGlmIChkaWZmID09PSAwICYmIGNodW5r
YS5sZW5ndGggIT09IGNodW5rYi5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBpZiAoIStjaHVu
a2EgJiYgIStjaHVua2IpIC8vIGNodW5rcyBhcmUgc3RyaW5ncyBvZiBhbGwgMHMgKHNwZWNpYWwg
Y2FzZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNodW5rYS5sZW5ndGggLSBjaHVua2Iu
bGVuZ3RoOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGNodW5rYi5sZW5ndGggLSBjaHVua2EubGVuZ3RoOwotICAgICAgICAgICAgfQotICAgICAgICB9
IGVsc2UgaWYgKGNodW5rYSAhPT0gY2h1bmtiKQotICAgICAgICAgICAgcmV0dXJuIChjaHVua2Eg
PCBjaHVua2IpID8gLTEgOiAxOwotICAgICAgICBhID0gYS5zdWJzdHJpbmcoY2h1bmthLmxlbmd0
aCk7Ci0gICAgICAgIGIgPSBiLnN1YnN0cmluZyhjaHVua2IubGVuZ3RoKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gZGlmZjsKLX07Ci0KIFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydHlUcmVlRWxlbWVu
dCA9IGNsYXNzIFR5cGVQcm9wZXJ0eVRyZWVFbGVtZW50IGV4dGVuZHMgV2ViSW5zcGVjdG9yLlRy
ZWVFbGVtZW50CiB7CiAgICAgY29uc3RydWN0b3IocHJvcGVydHkpCkBAIC0xNTMsNyArMTU2LDcg
QEAgV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0eVRyZWVFbGVtZW50ID0gY2xhc3MgVHlwZVByb3Bl
cnR5VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWIKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAK
LSAgICAgICAgcHJvcGVydGllcy5zb3J0KFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydGllc1NlY3Rp
b24uUHJvcGVydHlDb21wYXJhdG9yKTsKKyAgICAgICAgcHJvcGVydGllcy5zb3J0KFdlYkluc3Bl
Y3Rvci5UeXBlUHJvcGVydGllc1NlY3Rpb24ucHJvcGVydHlDb21wYXJhdG9yKTsKIAogICAgICAg
ICBmb3IgKHZhciBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKQogICAgICAgICAgICAgdGhpcy5hcHBl
bmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0eVRyZWVFbGVtZW50KHByb3BlcnR5
KSk7CkBAIC0xNjYsNyArMTY5LDcgQEAgV2ViSW5zcGVjdG9yLlR5cGVQcm9wZXJ0eVRyZWVFbGVt
ZW50ID0gY2xhc3MgVHlwZVByb3BlcnR5VHJlZUVsZW1lbnQgZXh0ZW5kcyBXZWIKICAgICAgICAg
ICAgIH0pOwogICAgICAgICB9CiAKLSAgICAgICAgcHJvcGVydGllcy5zb3J0KFdlYkluc3BlY3Rv
ci5UeXBlUHJvcGVydGllc1NlY3Rpb24uUHJvcGVydHlDb21wYXJhdG9yKTsKKyAgICAgICAgcHJv
cGVydGllcy5zb3J0KFdlYkluc3BlY3Rvci5UeXBlUHJvcGVydGllc1NlY3Rpb24ucHJvcGVydHlD
b21wYXJhdG9yKTsKIAogICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eS5zdHJ1Y3R1cmUuaXNJbXBy
ZWNpc2UpCiAgICAgICAgICAgICBwcm9wZXJ0aWVzLnB1c2goe25hbWU6ICJcdTIwMjYiLCBzdHJ1
Y3R1cmU6IG51bGx9KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>