<?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>143106</bug_id>
          
          <creation_ts>2015-03-26 10:53:10 -0700</creation_ts>
          <short_desc>Web Inspector: Convert Base and Protocol files to ES6 classes</short_desc>
          <delta_ts>2015-04-21 20:31:19 -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>
          
          <blocked>142891</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Timothy Hatcher">timothy</reporter>
          <assigned_to name="Timothy Hatcher">timothy</assigned_to>
          <cc>commit-queue</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>1080330</commentid>
    <comment_count>0</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 10:53:10 -0700</bug_when>
    <thetext>Do it! It is much simpler than Views.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080331</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-26 10:53:38 -0700</bug_when>
    <thetext>&lt;rdar://problem/20311614&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080333</commentid>
    <comment_count>2</comment_count>
      <attachid>249496</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 10:56:17 -0700</bug_when>
    <thetext>Created attachment 249496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080345</commentid>
    <comment_count>3</comment_count>
      <attachid>249499</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 11:14:40 -0700</bug_when>
    <thetext>Created attachment 249499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080349</commentid>
    <comment_count>4</comment_count>
      <attachid>249500</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 11:17:47 -0700</bug_when>
    <thetext>Created attachment 249500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080351</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-26 11:20:42 -0700</bug_when>
    <thetext>Attachment 249500 did not pass style-queue:


ERROR: Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:362:  Line contains single-quote character.  [js/syntax] [5]
ERROR: Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:376:  Line contains single-quote character.  [js/syntax] [5]
ERROR: Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:422:  Line contains single-quote character.  [js/syntax] [5]
ERROR: Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:430:  Line contains single-quote character.  [js/syntax] [5]
ERROR: Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:450:  Line contains single-quote character.  [js/syntax] [5]
ERROR: Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:462:  Line contains single-quote character.  [js/syntax] [5]
Total errors found: 6 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080352</commentid>
    <comment_count>6</comment_count>
      <attachid>249499</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-26 11:25:42 -0700</bug_when>
    <thetext>Comment on attachment 249499
Patch

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

r=me

&gt; Source/WebInspectorUI/UserInterface/Base/EventListenerSet.js:36
&gt; +        this.name = name;

Should we fix this to be &quot;_name&quot;?

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:362
&gt; +    &apos;use strict&apos;;

Style: Double quotes.

&gt; Source/WebInspectorUI/UserInterface/Protocol/InspectorBackend.js:508
&gt; +        this.eventName = eventName;
&gt; +        this.parameterNames = parameterNames;

Nit: _foo?

&gt; Source/WebInspectorUI/UserInterface/Protocol/MessageDispatcher.js:27
&gt; -WebInspector.messagesToDispatch = [];
&gt; +WebInspector._messagesToDispatch = [];

Doh, I rather liked this one without the underscore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080353</commentid>
    <comment_count>7</comment_count>
      <attachid>249500</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-26 11:26:17 -0700</bug_when>
    <thetext>Comment on attachment 249500
Patch

Same comments probably apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080488</commentid>
    <comment_count>8</comment_count>
      <attachid>249500</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-03-26 16:39:09 -0700</bug_when>
    <thetext>Comment on attachment 249500
Patch

https://trac.webkit.org/r182039</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249496</attachid>
            <date>2015-03-26 10:56:17 -0700</date>
            <delta_ts>2015-03-26 11:14:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143106-20150326105539.patch</filename>
            <type>text/plain</type>
            <size>79903</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxOTE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1
NjM2YTc5YzQzMGFjYzg2YmFiM2Q4ODA1MDcwYTRhNmNjMWE4MzBjLi4xYzc5ZDA3MzkxMmJlODFl
MzM3NjU0YWYyMWMwZGQ2MzA0YzAwMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNS0wMy0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBCYXNlIGFuZCBQcm90b2NvbCBm
aWxlcyB0byBFUzYgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQzMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNl
cnZlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpzOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanM6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanM6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanM6CisgICAgICAgIChJbnNw
ZWN0b3JCYWNrZW5kQ2xhc3MuY2xhc3MuSW5zcGVjdG9yQmFja2VuZENsYXNzLnNldCByZXR1cm4p
OgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5BZ2VudC5jbGFzcy5JbnNwZWN0b3JCYWNrZW5k
QWdlbnQuZ2V0IGRvbWFpbk5hbWUpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5BZ2VudC5j
bGFzcy5JbnNwZWN0b3JCYWNrZW5kQWdlbnQuZ2V0IGFjdGl2ZSk6CisgICAgICAgIChJbnNwZWN0
b3JCYWNrZW5kLkFnZW50LmNsYXNzLkluc3BlY3RvckJhY2tlbmRBZ2VudC5zZXQgZGlzcGF0Y2hl
cik6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQpOgorICAgICAgICAoSW5zcGVj
dG9yQmFja2VuZC5Db21tYW5kLmNyZWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNv
bW1hbmQucHJvdG90eXBlLmludm9rZSk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNvbW1h
bmQucHJvdG90eXBlLnByb21pc2UpOgorICAgICAgICAoSW5zcGVjdG9yQmFja2VuZC5Db21tYW5k
LnByb3RvdHlwZS5zdXBwb3J0cyk6CisgICAgICAgIChJbnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQu
cHJvdG90eXBlLl9pbnZva2VXaXRoQXJndW1lbnRzKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1Byb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLklu
c3BlY3Rvck9ic2VydmVyLmNsYXNzLkluc3BlY3Rvck9ic2VydmVyLmluc3BlY3QpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGF5ZXJUcmVlT2JzZXJ2ZXIuanM6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9NZXNzYWdlRGlzcGF0Y2hlci5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5kaXNwYXRjaE5leHRRdWV1ZWRNZXNzYWdlRnJvbUJhY2tlbmQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLmRpc3BhdGNoTWVzc2FnZUZyb21CYWNrZW5kKToKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QuY2xhc3MuUmVtb3RlT2JqZWN0LnN0YXRpYyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0LmNsYXNzLlJlbW90ZU9iamVjdC5nZXQgb2JqZWN0SWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5jbGFzcy5SZW1vdGVPYmplY3QuZ2V0IHR5
cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5jbGFzcy5SZW1vdGVPYmpl
Y3QuZ2V0IHN1YnR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5jbGFz
cy5SZW1vdGVPYmplY3QuZ2V0IGRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QuY2xhc3MuUmVtb3RlT2JqZWN0LmdldCBoYXNDaGlsZHJlbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmNsYXNzLlJlbW90ZU9iamVjdC5nZXQgdmFsdWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5jbGFzcy5SZW1vdGVPYmplY3Qu
Z2V0IHNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5jbGFzcy5SZW1v
dGVPYmplY3QuZ2V0IHByZXZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5jbGFzcy5SZW1vdGVPYmplY3QuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QuY2xhc3MuUmVtb3RlT2JqZWN0LnByb3BlcnR5U2V0Q2FsbGJhY2spOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdC5jbGFzcy5SZW1vdGVPYmplY3QuYmFja2VuZEdldE93blBy
b3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmNs
YXNzLlJlbW90ZU9iamVjdC53cmFwcGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdC5jbGFzcy5SZW1vdGVPYmplY3QuaWYpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlJlbW90ZU9iamVjdC5jbGFzcy5SZW1vdGVPYmplY3QuY2FsbGJhY2spOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5jbGFzcy5SZW1vdGVPYmplY3QuZGVwcmVjYXRlZEdl
dERpc3BsYXlhYmxlUHJvcGVydGllcyk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9SZXBsYXlPYnNlcnZlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1
bnRpbWVPYnNlcnZlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1RpbWVs
aW5lT2JzZXJ2ZXIuanM6CisKIDIwMTUtMDMtMjQgIFRvYmlhcyBSZWlzcyAgPHRvYmkrd2Via2l0
QGJhc2Vjb2RlLmRlPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04gKHIxNzky
ODYpOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogc2VsZWN0b3IKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0FwcGxp
Y2F0aW9uQ2FjaGVPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5qcwppbmRleCBlZGUwYjcwZjY2
ZmEzYzE3NGNhMDFjYTdhOTRkNjIyMTg3YWZhYjE2Li5kODAzODUzYzM0MjZjYmJiNTY2YzljZjAz
NTUyMmI2MGFlOWJhNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZU9i
c2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC0yMywyNiArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyID0gZnVu
Y3Rpb24oKQorV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlciA9IGNsYXNzIEFw
cGxpY2F0aW9uQ2FjaGVPYnNlcnZlcgogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8v
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5BcHBs
aWNhdGlvbkNhY2hlT2JzZXJ2ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJ
bnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLAotCiAgICAgLy8gRXZlbnRzIGRlZmlu
ZWQgYnkgdGhlICJBcHBsaWNhdGlvbkNhY2hlIiBkb21haW4uCiAKLSAgICBhcHBsaWNhdGlvbkNh
Y2hlU3RhdHVzVXBkYXRlZDogZnVuY3Rpb24oZnJhbWVJZCwgbWFuaWZlc3RVUkwsIHN0YXR1cykK
KyAgICBhcHBsaWNhdGlvbkNhY2hlU3RhdHVzVXBkYXRlZChmcmFtZUlkLCBtYW5pZmVzdFVSTCwg
c3RhdHVzKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5h
Z2VyLmFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNVcGRhdGVkKGZyYW1lSWQsIG1hbmlmZXN0VVJMLCBz
dGF0dXMpOwotICAgIH0sCisgICAgfQogCi0gICAgbmV0d29ya1N0YXRlVXBkYXRlZDogZnVuY3Rp
b24oaXNOb3dPbmxpbmUpCisgICAgbmV0d29ya1N0YXRlVXBkYXRlZChpc05vd09ubGluZSkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvbkNhY2hlTWFuYWdlci5uZXR3b3Jr
U3RhdGVVcGRhdGVkKGlzTm93T25saW5lKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuQXBw
bGljYXRpb25DYWNoZU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
T2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMKaW5kZXggYzA5NGUyNGQ1MGZm
Y2ZmOWM4YWQ1YWUxNjdjYzRkMjIxNTI3YWY0Mi4uMDlhYzhjYzMwOGRlMWM2MGUzMTBjNThjZDg4
MDgyY2EzMWVmMmI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDY3ICsyMyw1OCBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5D
U1NPYnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5DU1NPYnNlcnZlciA9IGNsYXNz
IENTU09ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3Bl
Y3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVj
dG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNTU09ic2VydmVyLAot
CiAgICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJDU1MiIGRvbWFpbi4KIAotICAgIG1lZGlh
UXVlcnlSZXN1bHRDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAgbWVkaWFRdWVyeVJlc3VsdENoYW5n
ZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc1N0eWxlTWFuYWdlci5tZWRpYVF1
ZXJ5UmVzdWx0Q2hhbmdlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgc3R5bGVTaGVldENoYW5n
ZWQ6IGZ1bmN0aW9uKHN0eWxlU2hlZXRJZCkKKyAgICBzdHlsZVNoZWV0Q2hhbmdlZChzdHlsZVNo
ZWV0SWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5hZ2VyLnN0eWxl
U2hlZXRDaGFuZ2VkKHN0eWxlU2hlZXRJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzdHlsZVNo
ZWV0QWRkZWQ6IGZ1bmN0aW9uKGhlYWRlcikKKyAgICBzdHlsZVNoZWV0QWRkZWQoaGVhZGVyKQog
ICAgIHsKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4gPHJkYXI6Ly9wcm9ibGVt
LzEzMjEzNjgwPgotICAgIH0sCisgICAgfQogCi0gICAgc3R5bGVTaGVldFJlbW92ZWQ6IGZ1bmN0
aW9uKGhlYWRlcikKKyAgICBzdHlsZVNoZWV0UmVtb3ZlZChoZWFkZXIpCiAgICAgewogICAgICAg
ICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLiA8cmRhcjovL3Byb2JsZW0vMTMyMTM2ODA+Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBuYW1lZEZsb3dDcmVhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3cp
CisgICAgbmFtZWRGbG93Q3JlYXRlZChuYW1lZEZsb3cpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3IuZG9tVHJlZU1hbmFnZXIubmFtZWRGbG93Q3JlYXRlZChuYW1lZEZsb3cpOwotICAgIH0s
CisgICAgfQogCi0gICAgbmFtZWRGbG93UmVtb3ZlZDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQs
IGZsb3dOYW1lKQorICAgIG5hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1l
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLm5hbWVkRmxvd1Jl
bW92ZWQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8v
IENPTVBBVElCSUxJVFkgKGlPUyA3KTogcmVnaW9uTGF5b3V0VXBkYXRlZCB3YXMgcmVtb3ZlZCBh
bmQgcmVwbGFjZWQgYnkgcmVnaW9uT3ZlcnNldENoYW5nZWQuCi0gICAgcmVnaW9uTGF5b3V0VXBk
YXRlZDogZnVuY3Rpb24obmFtZWRGbG93KQorICAgIHJlZ2lvbkxheW91dFVwZGF0ZWQobmFtZWRG
bG93KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnJlZ2lvbkxh
eW91dFVwZGF0ZWQobmFtZWRGbG93KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZ2lvbk92ZXJz
ZXRDaGFuZ2VkOiBmdW5jdGlvbihuYW1lZEZsb3cpCisgICAgcmVnaW9uT3ZlcnNldENoYW5nZWQo
bmFtZWRGbG93KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnJl
Z2lvbk92ZXJzZXRDaGFuZ2VkKG5hbWVkRmxvdyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWdp
c3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBm
bG93TmFtZSwgY29udGVudE5vZGVJZCwgbmV4dENvbnRlbnRFbGVtZW50Tm9kZUlkKQorICAgIHJl
Z2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUs
IGNvbnRlbnROb2RlSWQsIG5leHRDb250ZW50RWxlbWVudE5vZGVJZCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVs
ZW1lbnQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCBjb250ZW50Tm9kZUlkLCBuZXh0Q29udGVu
dEVsZW1lbnROb2RlSWQpOwotICAgIH0sCisgICAgfQogCi0gICAgdW5yZWdpc3RlcmVkTmFtZWRG
bG93Q29udGVudEVsZW1lbnQ6IGZ1bmN0aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSwgY29u
dGVudE5vZGVJZCkKKyAgICB1bnJlZ2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1
bWVudE5vZGVJZCwgZmxvd05hbWUsIGNvbnRlbnROb2RlSWQpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIudW5yZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1l
bnQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCBjb250ZW50Tm9kZUlkKTsKICAgICB9CiB9Owot
Ci1XZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpzCmluZGV4
IDk3NTk1M2UxNjc4ZGRhOTkzYTk3OGZjZmI4OTI4NThkM2E2MWY3MTguLmNmYzJmYzA1NDVhNGE1
MWI1M2MxOTdhYTI2YTljYTBmNTU4MDE3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NvbnNvbGVPYnNlcnZlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25zb2xlT2JzZXJ2ZXIu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDE4ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5Db25zb2xlT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNw
ZWN0b3IuQ29uc29sZU9ic2VydmVyID0gY2xhc3MgQ29uc29sZU9ic2VydmVyCiB7Ci0gICAgLy8g
RklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFu
ZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwot
fTsKLQotV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db25zb2xlT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMg
ZGVmaW5lZCBieSB0aGUgIkNvbnNvbGUiIGRvbWFpbi4KIAotICAgIG1lc3NhZ2VBZGRlZDogZnVu
Y3Rpb24obWVzc2FnZSkKKyAgICBtZXNzYWdlQWRkZWQobWVzc2FnZSkKICAgICB7CiAgICAgICAg
IGlmIChtZXNzYWdlLnR5cGUgPT09ICJhc3NlcnQiICYmICFtZXNzYWdlLnRleHQpCiAgICAgICAg
ICAgICBtZXNzYWdlLnRleHQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkFzc2VydGlvbiIpOwpA
QCAtNDgsMTcgKzQxLDE1IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlT2JzZXJ2ZXIucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFdlYkluc3BlY3Rvci5sb2dNYW5h
Z2VyLm1lc3NhZ2VXYXNBZGRlZChtZXNzYWdlLnNvdXJjZSwgbWVzc2FnZS5sZXZlbCwgbWVzc2Fn
ZS50ZXh0LCBtZXNzYWdlLnR5cGUsIG1lc3NhZ2UudXJsLCBtZXNzYWdlLmxpbmUsIG1lc3NhZ2Uu
Y29sdW1uIHx8IDAsIG1lc3NhZ2UucmVwZWF0Q291bnQsIG1lc3NhZ2UucGFyYW1ldGVycywgbWVz
c2FnZS5zdGFja1RyYWNlLCBtZXNzYWdlLm5ldHdvcmtSZXF1ZXN0SWQpOwotICAgIH0sCisgICAg
fQogCi0gICAgbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZDogZnVuY3Rpb24oY291bnQpCisgICAg
bWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZChjb3VudCkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5sb2dNYW5hZ2VyLm1lc3NhZ2VSZXBlYXRDb3VudFVwZGF0ZWQoY291bnQpOwotICAgIH0s
CisgICAgfQogCi0gICAgbWVzc2FnZXNDbGVhcmVkOiBmdW5jdGlvbigpCisgICAgbWVzc2FnZXND
bGVhcmVkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5sb2dNYW5hZ2VyLm1lc3NhZ2Vz
Q2xlYXJlZCgpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5Db25zb2xlT2JzZXJ2ZXIucHJv
dG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NT2Jz
ZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9E
T01PYnNlcnZlci5qcwppbmRleCA3NzAwMzFmMzQzYTBiMzJiYTU5MmIwODc1ZWZjZDU0Y2FjN2Ew
OTMwLi5hMDIyOGM5MDRjNzk3N2EwYWQyNDQ0YTMyZDdhMTA4N2M0Mzg0MzdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9E
T01PYnNlcnZlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAy
MDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjMsNzEgKzIzLDYyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTU9ic2VydmVyID0gZnVuY3Rpb24oKQor
V2ViSW5zcGVjdG9yLkRPTU9ic2VydmVyID0gY2xhc3MgRE9NT2JzZXJ2ZXIKIHsKLSAgICAvLyBG
SVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5k
IGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19
OwotCi1XZWJJbnNwZWN0b3IuRE9NT2JzZXJ2ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuRE9NT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBi
eSB0aGUgIkRPTSIgZG9tYWluLgogCi0gICAgZG9jdW1lbnRVcGRhdGVkOiBmdW5jdGlvbigpCisg
ICAgZG9jdW1lbnRVcGRhdGVkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVl
TWFuYWdlci5fZG9jdW1lbnRVcGRhdGVkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXRDaGls
ZE5vZGVzOiBmdW5jdGlvbihwYXJlbnRJZCwgcGF5bG9hZHMpCisgICAgc2V0Q2hpbGROb2Rlcyhw
YXJlbnRJZCwgcGF5bG9hZHMpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1h
bmFnZXIuX3NldENoaWxkTm9kZXMocGFyZW50SWQsIHBheWxvYWRzKTsKLSAgICB9LAorICAgIH0K
IAotICAgIGF0dHJpYnV0ZU1vZGlmaWVkOiBmdW5jdGlvbihub2RlSWQsIG5hbWUsIHZhbHVlKQor
ICAgIGF0dHJpYnV0ZU1vZGlmaWVkKG5vZGVJZCwgbmFtZSwgdmFsdWUpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuX2F0dHJpYnV0ZU1vZGlmaWVkKG5vZGVJZCwg
bmFtZSwgdmFsdWUpOwotICAgIH0sCisgICAgfQogCi0gICAgYXR0cmlidXRlUmVtb3ZlZDogZnVu
Y3Rpb24obm9kZUlkLCBuYW1lKQorICAgIGF0dHJpYnV0ZVJlbW92ZWQobm9kZUlkLCBuYW1lKQog
ICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLl9hdHRyaWJ1dGVSZW1v
dmVkKG5vZGVJZCwgbmFtZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpbmxpbmVTdHlsZUludmFs
aWRhdGVkOiBmdW5jdGlvbihub2RlSWRzKQorICAgIGlubGluZVN0eWxlSW52YWxpZGF0ZWQobm9k
ZUlkcykKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5faW5saW5l
U3R5bGVJbnZhbGlkYXRlZChub2RlSWRzKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNoYXJhY3Rl
ckRhdGFNb2RpZmllZDogZnVuY3Rpb24obm9kZUlkLCBjaGFyYWN0ZXJEYXRhKQorICAgIGNoYXJh
Y3RlckRhdGFNb2RpZmllZChub2RlSWQsIGNoYXJhY3RlckRhdGEpCiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuX2NoYXJhY3RlckRhdGFNb2RpZmllZChub2RlSWQs
IGNoYXJhY3RlckRhdGEpOwotICAgIH0sCisgICAgfQogCi0gICAgY2hpbGROb2RlQ291bnRVcGRh
dGVkOiBmdW5jdGlvbihub2RlSWQsIGNoaWxkTm9kZUNvdW50KQorICAgIGNoaWxkTm9kZUNvdW50
VXBkYXRlZChub2RlSWQsIGNoaWxkTm9kZUNvdW50KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLmRvbVRyZWVNYW5hZ2VyLl9jaGlsZE5vZGVDb3VudFVwZGF0ZWQobm9kZUlkLCBjaGlsZE5v
ZGVDb3VudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjaGlsZE5vZGVJbnNlcnRlZDogZnVuY3Rp
b24ocGFyZW50Tm9kZUlkLCBwcmV2aW91c05vZGVJZCwgcGF5bG9hZCkKKyAgICBjaGlsZE5vZGVJ
bnNlcnRlZChwYXJlbnROb2RlSWQsIHByZXZpb3VzTm9kZUlkLCBwYXlsb2FkKQogICAgIHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLl9jaGlsZE5vZGVJbnNlcnRlZChwYXJl
bnROb2RlSWQsIHByZXZpb3VzTm9kZUlkLCBwYXlsb2FkKTsKLSAgICB9LAorICAgIH0KIAotICAg
IGNoaWxkTm9kZVJlbW92ZWQ6IGZ1bmN0aW9uKHBhcmVudE5vZGVJZCwgbm9kZUlkKQorICAgIGNo
aWxkTm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuX2NoaWxkTm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBu
b2RlSWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hhZG93Um9vdFB1c2hlZDogZnVuY3Rpb24o
cGFyZW50Tm9kZUlkLCBub2RlSWQpCisgICAgc2hhZG93Um9vdFB1c2hlZChwYXJlbnROb2RlSWQs
IG5vZGVJZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5fY2hp
bGROb2RlSW5zZXJ0ZWQocGFyZW50Tm9kZUlkLCAwLCBub2RlSWQpOwotICAgIH0sCisgICAgfQog
Ci0gICAgc2hhZG93Um9vdFBvcHBlZDogZnVuY3Rpb24ocGFyZW50Tm9kZUlkLCBub2RlSWQpCisg
ICAgc2hhZG93Um9vdFBvcHBlZChwYXJlbnROb2RlSWQsIG5vZGVJZCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5fY2hpbGROb2RlUmVtb3ZlZChwYXJlbnROb2Rl
SWQsIG5vZGVJZCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRPTU9ic2VydmVyLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTVN0b3Jh
Z2VPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0RPTVN0b3JhZ2VPYnNlcnZlci5qcwppbmRleCBkZmU0NWQ1YjNlZjI5Mzk3YjZmYTdhMjQ3
ODg4NjQ1MjY5Y2NkY2YzLi5lNmRmZGQyMzNjNzlhODUwNDY4NmMwNTYwMDhlZGRlYjU4M2RlNTFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9ET01TdG9yYWdlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRE9NU3RvcmFnZU9ic2VydmVyLmpzCkBAIC0yNCw0NiArMjQsMzgg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZU9ic2VydmVyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2VPYnNlcnZlciA9IGNsYXNzIERPTVN0b3JhZ2VPYnNlcnZlcgogewotICAgIC8vIEZJWE1FOiBD
b252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBz
dXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlT2JzZXJ2ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9ic2VydmVyLAotICAgIF9fcHJvdG9fXzogV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0
aGUgIkRPTVN0b3JhZ2UiIGRvbWFpbi4KIAogICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTog
VGhpcyBldmVudCBubyBsb25nZXIgZXhpc3RzLiBJdCBpcyBzdGlsbCBuZWVkZWQgYW5kIGNhbGxl
ZCBvbiBpT1MgNi4KLSAgICBhZGRET01TdG9yYWdlOiBmdW5jdGlvbihzdG9yYWdlKQorICAgIGFk
ZERPTVN0b3JhZ2Uoc3RvcmFnZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdl
TWFuYWdlci5kb21TdG9yYWdlV2FzQWRkZWQoc3RvcmFnZS5pZCwgc3RvcmFnZS5ob3N0LCBzdG9y
YWdlLmlzTG9jYWxTdG9yYWdlKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIENPTVBBVElCSUxJ
VFkgKGlPUyA2KTogVGhpcyBldmVudCB3YXMgc3BsaXQgaW50byB0aGUgZ3JhbnVsYXIgZXZlbnRz
IGJlbG93LgotICAgIHVwZGF0ZURPTVN0b3JhZ2U6IGZ1bmN0aW9uKHN0b3JhZ2VJZCkKKyAgICB1
cGRhdGVET01TdG9yYWdlKHN0b3JhZ2VJZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5z
dG9yYWdlTWFuYWdlci5kb21TdG9yYWdlV2FzVXBkYXRlZChzdG9yYWdlSWQpOwotICAgIH0sCisg
ICAgfQogCi0gICAgZG9tU3RvcmFnZUl0ZW1zQ2xlYXJlZDogZnVuY3Rpb24oc3RvcmFnZUlkKQor
ICAgIGRvbVN0b3JhZ2VJdGVtc0NsZWFyZWQoc3RvcmFnZUlkKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLml0ZW1zQ2xlYXJlZChzdG9yYWdlSWQpOwotICAgIH0s
CisgICAgfQogCi0gICAgZG9tU3RvcmFnZUl0ZW1SZW1vdmVkOiBmdW5jdGlvbihzdG9yYWdlSWQs
IGtleSkKKyAgICBkb21TdG9yYWdlSXRlbVJlbW92ZWQoc3RvcmFnZUlkLCBrZXkpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuaXRlbVJlbW92ZWQoc3RvcmFnZUlk
LCBrZXkpOwotICAgIH0sCisgICAgfQogCi0gICAgZG9tU3RvcmFnZUl0ZW1BZGRlZDogZnVuY3Rp
b24oc3RvcmFnZUlkLCBrZXksIHZhbHVlKQorICAgIGRvbVN0b3JhZ2VJdGVtQWRkZWQoc3RvcmFn
ZUlkLCBrZXksIHZhbHVlKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5h
Z2VyLml0ZW1BZGRlZChzdG9yYWdlSWQsIGtleSwgdmFsdWUpOwotICAgIH0sCisgICAgfQogCi0g
ICAgZG9tU3RvcmFnZUl0ZW1VcGRhdGVkOiBmdW5jdGlvbihzdG9yYWdlSWQsIGtleSwgb2xkVmFs
dWUsIHZhbHVlKQorICAgIGRvbVN0b3JhZ2VJdGVtVXBkYXRlZChzdG9yYWdlSWQsIGtleSwgb2xk
VmFsdWUsIHZhbHVlKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2Vy
Lml0ZW1VcGRhdGVkKHN0b3JhZ2VJZCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Rh
dGFiYXNlT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzCmluZGV4IDYzZGJkNmY2YTRjMzg5MDczYzdmMGRh
YWNjMWJiZDU2YTc5NDdlNTQuLjdiOTczZWE2ZTc3NWQ1MmJmZmVlOTliZDBlYjIxMjVkZTc2MzQ1
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0RhdGFiYXNlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjYgKzIzLDE3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRh
dGFiYXNlT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYnNlcnZl
ciA9IGNsYXNzIERhdGFiYXNlT2JzZXJ2ZXIKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlz
IHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAg
ICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3Iu
RGF0YWJhc2VPYnNlcnZlci5fY2FsbGJhY2tzID0ge307Ci0KLVdlYkluc3BlY3Rvci5EYXRhYmFz
ZU9ic2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRh
dGFiYXNlT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIkRhdGFiYXNl
IiBkb21haW4uCiAKLSAgICBhZGREYXRhYmFzZTogZnVuY3Rpb24oZGF0YWJhc2UpCisgICAgYWRk
RGF0YWJhc2UoZGF0YWJhc2UpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1h
bmFnZXIuZGF0YWJhc2VXYXNBZGRlZChkYXRhYmFzZS5pZCwgZGF0YWJhc2UuZG9tYWluLCBkYXRh
YmFzZS5uYW1lLCBkYXRhYmFzZS52ZXJzaW9uKTsKLSAgICB9LAorICAgIH0KIAogICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyA2KTogVGhpcyBldmVudCB3YXMgcmVtb3ZlZCBpbiBmYXZvciBvZiBh
IG1vcmUgYXN5bmMgRGF0YWJhc2VBZ2VudC5leGVjdXRlU1FMLgotICAgIHNxbFRyYW5zYWN0aW9u
U3VjY2VlZGVkOiBmdW5jdGlvbih0cmFuc2FjdGlvbklkLCBjb2x1bW5OYW1lcywgdmFsdWVzKQor
ICAgIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKHRyYW5zYWN0aW9uSWQsIGNvbHVtbk5hbWVzLCB2
YWx1ZXMpCiAgICAgewogICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5EYXRhYmFzZU9ic2VydmVy
Ll9jYWxsYmFja3NbdHJhbnNhY3Rpb25JZF0pCiAgICAgICAgICAgICByZXR1cm47CkBAIC01Miwx
MCArNDMsMTAgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIucHJvdG90eXBlID0gewog
CiAgICAgICAgIGlmIChjYWxsYmFjaykKICAgICAgICAgICAgIGNhbGxiYWNrKGNvbHVtbk5hbWVz
LCB2YWx1ZXMsIG51bGwpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gQ09NUEFUSUJJTElUWSAo
aU9TIDYpOiBUaGlzIGV2ZW50IHdhcyByZW1vdmVkIGluIGZhdm9yIG9mIGEgbW9yZSBhc3luYyBE
YXRhYmFzZUFnZW50LmV4ZWN1dGVTUUwuCi0gICAgc3FsVHJhbnNhY3Rpb25GYWlsZWQ6IGZ1bmN0
aW9uKHRyYW5zYWN0aW9uSWQsIHNxbEVycm9yKQorICAgIHNxbFRyYW5zYWN0aW9uRmFpbGVkKHRy
YW5zYWN0aW9uSWQsIHNxbEVycm9yKQogICAgIHsKICAgICAgICAgaWYgKCFXZWJJbnNwZWN0b3Iu
RGF0YWJhc2VPYnNlcnZlci5fY2FsbGJhY2tzW3RyYW5zYWN0aW9uSWRdKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNjgsNCArNTksNCBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYnNlcnZlci5w
cm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOworV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIuX2NhbGxiYWNrcyA9IHt9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNl
cnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0Rl
YnVnZ2VyT2JzZXJ2ZXIuanMKaW5kZXggMDY5ZTkwZTkzMjc1MTMyOTAzOGEwNmRhODBhZmNkNWZh
ZmE3YzA0My4uYTA1YzRhMGQ5ZTA2ZjY4ZTY4MDVlMzI4NzEwZjA4YjEwNmY4ZWJhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGVidWdn
ZXJPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw1NiArMjMsNDcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGVidWdnZXJPYnNl
cnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5EZWJ1Z2dlck9ic2VydmVyID0gY2xhc3Mg
RGVidWdnZXJPYnNlcnZlcgogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJ
bnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYklu
c3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5EZWJ1Z2dlck9i
c2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIkRlYnVnZ2VyIiBk
b21haW4uCiAKLSAgICBnbG9iYWxPYmplY3RDbGVhcmVkOiBmdW5jdGlvbigpCisgICAgZ2xvYmFs
T2JqZWN0Q2xlYXJlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5h
Z2VyLnJlc2V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzY3JpcHRQYXJzZWQ6IGZ1bmN0aW9u
KHNjcmlwdElkLCB1cmwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVt
biwgaXNDb250ZW50U2NyaXB0LCBzb3VyY2VNYXBVUkwsIGhhc1NvdXJjZVVSTCkKKyAgICBzY3Jp
cHRQYXJzZWQoc2NyaXB0SWQsIHVybCwgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwg
ZW5kQ29sdW1uLCBpc0NvbnRlbnRTY3JpcHQsIHNvdXJjZU1hcFVSTCwgaGFzU291cmNlVVJMKQog
ICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5zY3JpcHREaWRQYXJz
ZShzY3JpcHRJZCwgdXJsLCBpc0NvbnRlbnRTY3JpcHQsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4s
IGVuZExpbmUsIGVuZENvbHVtbiwgc291cmNlTWFwVVJMKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHNjcmlwdEZhaWxlZFRvUGFyc2U6IGZ1bmN0aW9uKHVybCwgc2NyaXB0U291cmNlLCBzdGFydExp
bmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKQorICAgIHNjcmlwdEZhaWxlZFRvUGFyc2UodXJs
LCBzY3JpcHRTb3VyY2UsIHN0YXJ0TGluZSwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpCiAgICAg
ewogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgotICAgIH0sCisgICAgfQogCi0g
ICAgYnJlYWtwb2ludFJlc29sdmVkOiBmdW5jdGlvbihicmVha3BvaW50SWQsIGxvY2F0aW9uKQor
ICAgIGJyZWFrcG9pbnRSZXNvbHZlZChicmVha3BvaW50SWQsIGxvY2F0aW9uKQogICAgIHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50UmVzb2x2ZWQoYnJl
YWtwb2ludElkLCBsb2NhdGlvbik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwYXVzZWQ6IGZ1bmN0
aW9uKGNhbGxGcmFtZXMsIHJlYXNvbiwgZGF0YSkKKyAgICBwYXVzZWQoY2FsbEZyYW1lcywgcmVh
c29uLCBkYXRhKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5k
ZWJ1Z2dlckRpZFBhdXNlKGNhbGxGcmFtZXMsIHJlYXNvbiwgZGF0YSk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICByZXN1bWVkOiBmdW5jdGlvbigpCisgICAgcmVzdW1lZCgpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2VyRGlkUmVzdW1lKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBwbGF5QnJlYWtwb2ludEFjdGlvblNvdW5kOiBmdW5jdGlvbihicmVh
a3BvaW50QWN0aW9uSWRlbnRpZmllcikKKyAgICBwbGF5QnJlYWtwb2ludEFjdGlvblNvdW5kKGJy
ZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRl
YnVnZ2VyTWFuYWdlci5wbGF5QnJlYWtwb2ludEFjdGlvblNvdW5kKGJyZWFrcG9pbnRBY3Rpb25J
ZGVudGlmaWVyKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRpZFNhbXBsZVByb2JlOiBmdW5jdGlv
bihzYW1wbGUpCisgICAgZGlkU2FtcGxlUHJvYmUoc2FtcGxlKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnByb2JlTWFuYWdlci5kaWRTYW1wbGVQcm9iZShzYW1wbGUpOwogICAgIH0KIH07
Ci0KLVdlYkluc3BlY3Rvci5EZWJ1Z2dlck9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBX
ZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5k
LmpzCmluZGV4IDY1ODJmOTY0YTJmOTczN2Y1YTkyYTk0YTY4MWUyNmY1OGIxN2Q4ZWEuLmU3Yjgw
N2IzNzQ1MjYzOTE1NjkyYjczNTliNDk5MjUzNTNmNjU5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yQmFja2VuZC5qcwpAQCAtMzAsNTIgKzMwLDUyIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LWZ1bmN0aW9uIEluc3BlY3RvckJhY2tlbmRDbGFzcygpCitJbnNwZWN0b3JCYWNrZW5kQ2xhc3Mg
PSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MKIHsKLSAgICB0aGlzLl9sYXN0U2VxdWVuY2VJ
ZCA9IDE7Ci0gICAgdGhpcy5fcGVuZGluZ1Jlc3BvbnNlc0NvdW50ID0gMDsKLSAgICB0aGlzLl9j
YWxsYmFja0RhdGEgPSBuZXcgTWFwOwotICAgIHRoaXMuX2FnZW50cyA9IHt9OwotICAgIHRoaXMu
X2RlZmVycmVkU2NyaXB0cyA9IFtdOwotCi0gICAgdGhpcy5kdW1wSW5zcGVjdG9yVGltZVN0YXRz
ID0gZmFsc2U7Ci0gICAgdGhpcy5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9IGZhbHNl
OwotICAgIHRoaXMud2FybkZvckxvbmdNZXNzYWdlSGFuZGxpbmcgPSBmYWxzZTsKLSAgICB0aGlz
LmxvbmdNZXNzYWdlSGFuZGxpbmdUaHJlc2hvbGQgPSAxMDsgLy8gbWlsbGlzZWNvbmRzLgotfQor
ICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xhc3RTZXF1ZW5jZUlkID0g
MTsKKyAgICAgICAgdGhpcy5fcGVuZGluZ1Jlc3BvbnNlc0NvdW50ID0gMDsKKyAgICAgICAgdGhp
cy5fY2FsbGJhY2tEYXRhID0gbmV3IE1hcDsKKyAgICAgICAgdGhpcy5fYWdlbnRzID0ge307Cisg
ICAgICAgIHRoaXMuX2RlZmVycmVkU2NyaXB0cyA9IFtdOwogCi1JbnNwZWN0b3JCYWNrZW5kQ2xh
c3MucHJvdG90eXBlID0geworICAgICAgICB0aGlzLmR1bXBJbnNwZWN0b3JUaW1lU3RhdHMgPSBm
YWxzZTsKKyAgICAgICAgdGhpcy5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcyA9IGZhbHNl
OworICAgICAgICB0aGlzLndhcm5Gb3JMb25nTWVzc2FnZUhhbmRsaW5nID0gZmFsc2U7CisgICAg
ICAgIHRoaXMubG9uZ01lc3NhZ2VIYW5kbGluZ1RocmVzaG9sZCA9IDEwOyAvLyBtaWxsaXNlY29u
ZHMuCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICByZWdpc3RlckNvbW1hbmQ6IGZ1bmN0
aW9uKHF1YWxpZmllZE5hbWUsIGNhbGxTaWduYXR1cmUsIHJlcGx5U2lnbmF0dXJlKQorICAgIHJl
Z2lzdGVyQ29tbWFuZChxdWFsaWZpZWROYW1lLCBjYWxsU2lnbmF0dXJlLCByZXBseVNpZ25hdHVy
ZSkKICAgICB7CiAgICAgICAgIHZhciBbZG9tYWluTmFtZSwgY29tbWFuZE5hbWVdID0gcXVhbGlm
aWVkTmFtZS5zcGxpdCgiLiIpOwogICAgICAgICB2YXIgYWdlbnQgPSB0aGlzLl9hZ2VudEZvckRv
bWFpbihkb21haW5OYW1lKTsKICAgICAgICAgYWdlbnQuYWRkQ29tbWFuZChJbnNwZWN0b3JCYWNr
ZW5kLkNvbW1hbmQuY3JlYXRlKHRoaXMsIHF1YWxpZmllZE5hbWUsIGNhbGxTaWduYXR1cmUsIHJl
cGx5U2lnbmF0dXJlKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWdpc3RlckVudW06IGZ1bmN0
aW9uKHF1YWxpZmllZE5hbWUsIGVudW1WYWx1ZXMpCisgICAgcmVnaXN0ZXJFbnVtKHF1YWxpZmll
ZE5hbWUsIGVudW1WYWx1ZXMpCiAgICAgewogICAgICAgICB2YXIgW2RvbWFpbk5hbWUsIGVudW1O
YW1lXSA9IHF1YWxpZmllZE5hbWUuc3BsaXQoIi4iKTsKICAgICAgICAgdmFyIGFnZW50ID0gdGhp
cy5fYWdlbnRGb3JEb21haW4oZG9tYWluTmFtZSk7CiAgICAgICAgIGFnZW50LmFkZEVudW0oZW51
bU5hbWUsIGVudW1WYWx1ZXMpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVnaXN0ZXJFdmVudDog
ZnVuY3Rpb24ocXVhbGlmaWVkTmFtZSwgc2lnbmF0dXJlKQorICAgIHJlZ2lzdGVyRXZlbnQocXVh
bGlmaWVkTmFtZSwgc2lnbmF0dXJlKQogICAgIHsKICAgICAgICAgdmFyIFtkb21haW5OYW1lLCBl
dmVudE5hbWVdID0gcXVhbGlmaWVkTmFtZS5zcGxpdCgiLiIpOwogICAgICAgICB2YXIgYWdlbnQg
PSB0aGlzLl9hZ2VudEZvckRvbWFpbihkb21haW5OYW1lKTsKICAgICAgICAgYWdlbnQuYWRkRXZl
bnQobmV3IEluc3BlY3RvckJhY2tlbmQuRXZlbnQoZXZlbnROYW1lLCBzaWduYXR1cmUpKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHJlZ2lzdGVyRG9tYWluRGlzcGF0Y2hlcjogZnVuY3Rpb24oZG9t
YWluTmFtZSwgZGlzcGF0Y2hlcikKKyAgICByZWdpc3RlckRvbWFpbkRpc3BhdGNoZXIoZG9tYWlu
TmFtZSwgZGlzcGF0Y2hlcikKICAgICB7CiAgICAgICAgIHZhciBhZ2VudCA9IHRoaXMuX2FnZW50
Rm9yRG9tYWluKGRvbWFpbk5hbWUpOwogICAgICAgICBhZ2VudC5kaXNwYXRjaGVyID0gZGlzcGF0
Y2hlcjsKLSAgICB9LAorICAgIH0KIAotICAgIGRpc3BhdGNoOiBmdW5jdGlvbihtZXNzYWdlKQor
ICAgIGRpc3BhdGNoKG1lc3NhZ2UpCiAgICAgewogICAgICAgICBpZiAodGhpcy5kdW1wSW5zcGVj
dG9yUHJvdG9jb2xNZXNzYWdlcykKICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJiYWNrZW5kOiAi
ICsgKCh0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIpID8gbWVzc2FnZSA6IEpTT04uc3RyaW5n
aWZ5KG1lc3NhZ2UpKSk7CkBAIC04Niw5ICs4Niw5IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcy5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaENhbGxiYWNrKG1lc3NhZ2VP
YmplY3QpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0aGlzLl9kaXNwYXRjaEV2ZW50KG1l
c3NhZ2VPYmplY3QpOwotICAgIH0sCisgICAgfQogCi0gICAgcnVuQWZ0ZXJQZW5kaW5nRGlzcGF0
Y2hlczogZnVuY3Rpb24oc2NyaXB0KQorICAgIHJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoc2Ny
aXB0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoc2NyaXB0KTsKICAgICAgICAgY29u
c29sZS5hc3NlcnQodHlwZW9mIHNjcmlwdCA9PT0gImZ1bmN0aW9uIik7CkBAIC05Nyw5ICs5Nyw5
IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBzY3Jp
cHQuY2FsbCh0aGlzKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5fZGVmZXJyZWRT
Y3JpcHRzLnB1c2goc2NyaXB0KTsKLSAgICB9LAorICAgIH0KIAotICAgIGFjdGl2YXRlRG9tYWlu
OiBmdW5jdGlvbihkb21haW5OYW1lLCBhY3RpdmF0aW9uRGVidWdnYWJsZVR5cGUpCisgICAgYWN0
aXZhdGVEb21haW4oZG9tYWluTmFtZSwgYWN0aXZhdGlvbkRlYnVnZ2FibGVUeXBlKQogICAgIHsK
ICAgICAgICAgaWYgKCFhY3RpdmF0aW9uRGVidWdnYWJsZVR5cGUgfHwgSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmRlYnVnZ2FibGVUeXBlKCkgPT09IGFjdGl2YXRpb25EZWJ1Z2dhYmxlVHlwZSkgewog
ICAgICAgICAgICAgdmFyIGFnZW50ID0gdGhpcy5fYWdlbnRzW2RvbWFpbk5hbWVdOwpAQCAtMTA4
LDExICsxMDgsMTEgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgfQogCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gUHJp
dmF0ZQogCi0gICAgX2FnZW50Rm9yRG9tYWluOiBmdW5jdGlvbihkb21haW5OYW1lKQorICAgIF9h
Z2VudEZvckRvbWFpbihkb21haW5OYW1lKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2FnZW50
c1tkb21haW5OYW1lXSkKICAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZ2VudHNbZG9tYWluTmFt
ZV07CkBAIC0xMjAsOSArMTIwLDkgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdmFyIGFnZW50ID0gbmV3IEluc3BlY3RvckJhY2tlbmQuQWdlbnQoZG9tYWlu
TmFtZSk7CiAgICAgICAgIHRoaXMuX2FnZW50c1tkb21haW5OYW1lXSA9IGFnZW50OwogICAgICAg
ICByZXR1cm4gYWdlbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfd2lsbFNlbmRNZXNzYWdlVG9C
YWNrZW5kOiBmdW5jdGlvbihjb21tYW5kLCBjYWxsYmFjaykKKyAgICBfd2lsbFNlbmRNZXNzYWdl
VG9CYWNrZW5kKGNvbW1hbmQsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgKyt0aGlzLl9wZW5k
aW5nUmVzcG9uc2VzQ291bnQ7CiAgICAgICAgIHZhciBzZXF1ZW5jZUlkID0gdGhpcy5fbGFzdFNl
cXVlbmNlSWQrKzsKQEAgLTE0MCw5ICsxNDAsOSBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJv
dG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHNlcXVlbmNlSWQ7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBfZGlzcGF0Y2hDYWxsYmFjazogZnVuY3Rpb24obWVzc2FnZU9iamVj
dCkKKyAgICBfZGlzcGF0Y2hDYWxsYmFjayhtZXNzYWdlT2JqZWN0KQogICAgIHsKICAgICAgICAg
LS10aGlzLl9wZW5kaW5nUmVzcG9uc2VzQ291bnQ7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRo
aXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudCA+PSAwKTsKQEAgLTE5NSw5ICsxOTUsOSBAQCBJbnNw
ZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmICh0aGlzLl9kZWZl
cnJlZFNjcmlwdHMubGVuZ3RoICYmICF0aGlzLl9wZW5kaW5nUmVzcG9uc2VzQ291bnQpCiAgICAg
ICAgICAgICB0aGlzLl9mbHVzaFBlbmRpbmdTY3JpcHRzKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfZGlzcGF0Y2hFdmVudDogZnVuY3Rpb24obWVzc2FnZU9iamVjdCkKKyAgICBfZGlzcGF0Y2hF
dmVudChtZXNzYWdlT2JqZWN0KQogICAgIHsKICAgICAgICAgdmFyIHF1YWxpZmllZE5hbWUgPSBt
ZXNzYWdlT2JqZWN0WyJtZXRob2QiXTsKICAgICAgICAgdmFyIFtkb21haW5OYW1lLCBldmVudE5h
bWVdID0gcXVhbGlmaWVkTmFtZS5zcGxpdCgiLiIpOwpAQCAtMjQxLDkgKzI0MSw5IEBAIEluc3Bl
Y3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKHRoaXMuZHVtcElu
c3BlY3RvclRpbWVTdGF0cykKICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJ0aW1lLXN0YXRzOiBI
YW5kbGluZzogIiArIHByb2Nlc3NpbmdEdXJhdGlvbiArICJtcyAoZXZlbnQgIiArIG1lc3NhZ2VP
YmplY3RbIm1ldGhvZCJdICsgIikiKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9pbnZva2VDb21t
YW5kOiBmdW5jdGlvbihjb21tYW5kLCBwYXJhbWV0ZXJzLCBjYWxsYmFjaykKKyAgICBfaW52b2tl
Q29tbWFuZChjb21tYW5kLCBwYXJhbWV0ZXJzLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZh
ciBtZXNzYWdlT2JqZWN0ID0ge307CiAgICAgICAgIG1lc3NhZ2VPYmplY3RbIm1ldGhvZCJdID0g
Y29tbWFuZC5xdWFsaWZpZWROYW1lOwpAQCAtMjYwLDE0ICsyNjAsMTQgQEAgSW5zcGVjdG9yQmFj
a2VuZENsYXNzLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGNvbnNvbGUubG9nKCJmcm9udGVu
ZDogIiArIHN0cmluZ2lmaWVkTWVzc2FnZSk7CiAKICAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmRI
b3N0LnNlbmRNZXNzYWdlVG9CYWNrZW5kKHN0cmluZ2lmaWVkTWVzc2FnZSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBfcmVwb3J0UHJvdG9jb2xFcnJvcjogZnVuY3Rpb24obWVzc2FnZU9iamVjdCkK
KyAgICBfcmVwb3J0UHJvdG9jb2xFcnJvcihtZXNzYWdlT2JqZWN0KQogICAgIHsKICAgICAgICAg
Y29uc29sZS5lcnJvcigiUmVxdWVzdCB3aXRoIGlkID0gIiArIG1lc3NhZ2VPYmplY3RbImlkIl0g
KyAiIGZhaWxlZC4gIiArIEpTT04uc3RyaW5naWZ5KG1lc3NhZ2VPYmplY3RbImVycm9yIl0pKTsK
LSAgICB9LAorICAgIH0KIAotICAgIF9mbHVzaFBlbmRpbmdTY3JpcHRzOiBmdW5jdGlvbigpCisg
ICAgX2ZsdXNoUGVuZGluZ1NjcmlwdHMoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
IXRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudCk7CiAKQEAgLTI3Niw3MSArMjc2LDc0IEBAIElu
c3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZvciAodmFyIHNjcmlw
dCBvZiBzY3JpcHRzVG9SdW4pCiAgICAgICAgICAgICBzY3JpcHQuY2FsbCh0aGlzKTsKICAgICB9
Ci19Cit9OwogCi1JbnNwZWN0b3JCYWNrZW5kID0gbmV3IEluc3BlY3RvckJhY2tlbmRDbGFzcygp
OworSW5zcGVjdG9yQmFja2VuZCA9IG5ldyBJbnNwZWN0b3JCYWNrZW5kQ2xhc3M7CiAKLUluc3Bl
Y3RvckJhY2tlbmQuQWdlbnQgPSBmdW5jdGlvbihkb21haW5OYW1lKQorSW5zcGVjdG9yQmFja2Vu
ZC5BZ2VudCA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRBZ2VudAogewotICAgIHRoaXMuX2RvbWFp
bk5hbWUgPSBkb21haW5OYW1lOworICAgIGNvbnN0cnVjdG9yKGRvbWFpbk5hbWUpCisgICAgewor
ICAgICAgICB0aGlzLl9kb21haW5OYW1lID0gZG9tYWluTmFtZTsKIAotICAgIC8vIEFnZW50cyBh
cmUgYWx3YXlzIGNyZWF0ZWQsIGJ1dCBhcmUgb25seSB1c2VhYmxlIGFmdGVyIHRoZXkgYXJlIGFj
dGl2YXRlZC4KLSAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgLy8gQWdlbnRzIGFy
ZSBhbHdheXMgY3JlYXRlZCwgYnV0IGFyZSBvbmx5IHVzZWFibGUgYWZ0ZXIgdGhleSBhcmUgYWN0
aXZhdGVkLgorICAgICAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTsKKworICAgICAgICAvLyBDb21t
YW5kcyBhcmUgc3RvcmVkIGRpcmVjdGx5IG9uIHRoZSBBZ2VudCBpbnN0YW5jZSB1c2luZyB0aGVp
ciB1bnF1YWxpZmllZAorICAgICAgICAvLyBtZXRob2QgbmFtZSBhcyB0aGUgcHJvcGVydHkuIFRo
dXMsIGNhbGxlcnMgY2FuIHdyaXRlOiBGb29BZ2VudC5tZXRob2ROYW1lKCkuCisgICAgICAgIC8v
IEVudW1zIGFyZSBzdG9yZWQgc2ltaWxhcmx5IGJhc2VkIG9uIHRoZSB1bnF1YWxpZmllZCB0eXBl
IG5hbWUuCisgICAgICAgIHRoaXMuX2V2ZW50cyA9IHt9OworICAgIH0KIAotICAgIC8vIENvbW1h
bmRzIGFyZSBzdG9yZWQgZGlyZWN0bHkgb24gdGhlIEFnZW50IGluc3RhbmNlIHVzaW5nIHRoZWly
IHVucXVhbGlmaWVkCi0gICAgLy8gbWV0aG9kIG5hbWUgYXMgdGhlIHByb3BlcnR5LiBUaHVzLCBj
YWxsZXJzIGNhbiB3cml0ZTogRm9vQWdlbnQubWV0aG9kTmFtZSgpLgotICAgIC8vIEVudW1zIGFy
ZSBzdG9yZWQgc2ltaWxhcmx5IGJhc2VkIG9uIHRoZSB1bnF1YWxpZmllZCB0eXBlIG5hbWUuCi0g
ICAgdGhpcy5fZXZlbnRzID0ge307Ci19CisgICAgLy8gUHVibGljCiAKLUluc3BlY3RvckJhY2tl
bmQuQWdlbnQucHJvdG90eXBlID0gewogICAgIGdldCBkb21haW5OYW1lKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9kb21haW5OYW1lOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGFj
dGl2ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlOwotICAgIH0sCisgICAg
fQogCiAgICAgc2V0IGRpc3BhdGNoZXIodmFsdWUpCiAgICAgewogICAgICAgICB0aGlzLl9kaXNw
YXRjaGVyID0gdmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRFbnVtOiBmdW5jdGlvbihl
bnVtTmFtZSwgZW51bVZhbHVlcykKKyAgICBhZGRFbnVtKGVudW1OYW1lLCBlbnVtVmFsdWVzKQog
ICAgIHsKICAgICAgICAgdGhpc1tlbnVtTmFtZV0gPSBlbnVtVmFsdWVzOwotICAgIH0sCisgICAg
fQogCi0gICAgYWRkQ29tbWFuZDogZnVuY3Rpb24oY29tbWFuZCkKKyAgICBhZGRDb21tYW5kKGNv
bW1hbmQpCiAgICAgewogICAgICAgICB0aGlzW2NvbW1hbmQuY29tbWFuZE5hbWVdID0gY29tbWFu
ZDsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZEV2ZW50OiBmdW5jdGlvbihldmVudCkKKyAgICBh
ZGRFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMuX2V2ZW50c1tldmVudC5ldmVudE5h
bWVdID0gZXZlbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXRFdmVudDogZnVuY3Rpb24oZXZl
bnROYW1lKQorICAgIGdldEV2ZW50KGV2ZW50TmFtZSkKICAgICB7CiAgICAgICAgIHJldHVybiB0
aGlzLl9ldmVudHNbZXZlbnROYW1lXTsKLSAgICB9LAorICAgIH0KIAotICAgIGhhc0V2ZW50OiBm
dW5jdGlvbihldmVudE5hbWUpCisgICAgaGFzRXZlbnQoZXZlbnROYW1lKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGV2ZW50TmFtZSBpbiB0aGlzLl9ldmVudHM7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBhY3RpdmF0ZTogZnVuY3Rpb24oKQorICAgIGFjdGl2YXRlKCkKICAgICB7CiAgICAgICAgIHRo
aXMuX2FjdGl2ZSA9IHRydWU7CiAgICAgICAgIHdpbmRvd1t0aGlzLl9kb21haW5OYW1lICsgIkFn
ZW50Il0gPSB0aGlzOwotICAgIH0sCisgICAgfQogCi0gICAgZGlzcGF0Y2hFdmVudDogZnVuY3Rp
b24oZXZlbnROYW1lLCBldmVudEFyZ3VtZW50cykKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50TmFt
ZSwgZXZlbnRBcmd1bWVudHMpCiAgICAgewogICAgICAgICBpZiAoIShldmVudE5hbWUgaW4gdGhp
cy5fZGlzcGF0Y2hlcikpIHsKICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIlByb3RvY29sIEVy
cm9yOiBBdHRlbXB0ZWQgdG8gZGlzcGF0Y2ggYW4gdW5pbXBsZW1lbnRlZCBtZXRob2QgJyIgKyB0
aGlzLl9kb21haW5OYW1lICsgIi4iICsgZXZlbnROYW1lICsgIiciKTsKQEAgLTM1MCwxMCArMzUz
LDE0IEBAIEluc3BlY3RvckJhY2tlbmQuQWdlbnQucHJvdG90eXBlID0gewogICAgICAgICB0aGlz
Ll9kaXNwYXRjaGVyW2V2ZW50TmFtZV0uYXBwbHkodGhpcy5fZGlzcGF0Y2hlciwgZXZlbnRBcmd1
bWVudHMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci19Cit9OwogCisvLyBJbnNwZWN0
b3JCYWNrZW5kLkNvbW1hbmQgY2FuJ3QgdXNlIEVTNiBjbGFzc2VzIGJlY2F1c2Ugb2YgaXRzIHRy
YW1wb2xpbmUgbmF0dXJlLgorLy8gQnV0IHdlIGNhbiB1c2Ugc3RyaWN0IG1vZGUgdG8gZ2V0IHN0
cmljdGVyIGhhbmRsaW5nIG9mIHRoZSBjb2RlIGluc2lkZSBpdHMgZnVuY3Rpb25zLgogSW5zcGVj
dG9yQmFja2VuZC5Db21tYW5kID0gZnVuY3Rpb24oYmFja2VuZCwgcXVhbGlmaWVkTmFtZSwgY2Fs
bFNpZ25hdHVyZSwgcmVwbHlTaWduYXR1cmUpCiB7CisgICAgJ3VzZSBzdHJpY3QnOworCiAgICAg
dGhpcy5fYmFja2VuZCA9IGJhY2tlbmQ7CiAgICAgdGhpcy5faW5zdGFuY2UgPSB0aGlzOwogCkBA
IC0zNjIsMjMgKzM2OSwyNiBAQCBJbnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQgPSBmdW5jdGlvbihi
YWNrZW5kLCBxdWFsaWZpZWROYW1lLCBjYWxsU2lnbmF0dXJlLCByZXBseQogICAgIHRoaXMuX2Nv
bW1hbmROYW1lID0gY29tbWFuZE5hbWU7CiAgICAgdGhpcy5fY2FsbFNpZ25hdHVyZSA9IGNhbGxT
aWduYXR1cmUgfHwgW107CiAgICAgdGhpcy5fcmVwbHlTaWduYXR1cmUgPSByZXBseVNpZ25hdHVy
ZSB8fCBbXTsKLX0KK307CiAKIEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZC5jcmVhdGUgPSBmdW5j
dGlvbihiYWNrZW5kLCBjb21tYW5kTmFtZSwgY2FsbFNpZ25hdHVyZSwgcmVwbHlTaWduYXR1cmUp
CiB7CisgICAgJ3VzZSBzdHJpY3QnOworCiAgICAgdmFyIGluc3RhbmNlID0gbmV3IEluc3BlY3Rv
ckJhY2tlbmQuQ29tbWFuZChiYWNrZW5kLCBjb21tYW5kTmFtZSwgY2FsbFNpZ25hdHVyZSwgcmVw
bHlTaWduYXR1cmUpOwogCiAgICAgZnVuY3Rpb24gY2FsbGFibGUoKSB7CiAgICAgICAgIC8vIElm
IHRoZSBsYXN0IGFyZ3VtZW50IHRvIHRoZSBjb21tYW5kIGlzIG5vdCBhIGZ1bmN0aW9uLCByZXR1
cm4gYSByZXN1bHQgcHJvbWlzZS4KICAgICAgICAgaWYgKCFhcmd1bWVudHMubGVuZ3RoIHx8IHR5
cGVvZiBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdICE9PSAiZnVuY3Rpb24iKQogICAg
ICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnByb21pc2UuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50
cyk7Ci0KICAgICAgICAgcmV0dXJuIGluc3RhbmNlLl9pbnZva2VXaXRoQXJndW1lbnRzLmFwcGx5
KGluc3RhbmNlLCBhcmd1bWVudHMpOwogICAgIH0KKwogICAgIGNhbGxhYmxlLl9pbnN0YW5jZSA9
IGluc3RhbmNlOwogICAgIGNhbGxhYmxlLl9fcHJvdG9fXyA9IEluc3BlY3RvckJhY2tlbmQuQ29t
bWFuZC5wcm90b3R5cGU7CisKICAgICByZXR1cm4gY2FsbGFibGU7Ci19Cit9OwogCiAvLyBBcyBw
YXJ0IG9mIHRoZSB3b3JrYXJvdW5kIHRvIG1ha2UgY29tbWFuZHMgY2FsbGFibGUsIHRoZXNlIGZ1
bmN0aW9ucyB1c2UgfHRoaXMuX2luc3RhbmNlfC4KIC8vIHx0aGlzfCBjb3VsZCByZWZlciB0byB0
aGUgY2FsbGFibGUgdHJhbXBvbGluZSwgb3IgdGhlIEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZCBp
bnN0YW5jZS4KQEAgLTQwOSwxOCArNDE5LDIzIEBAIEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZC5w
cm90b3R5cGUgPSB7CiAKICAgICBpbnZva2U6IGZ1bmN0aW9uKGNvbW1hbmRBcmd1bWVudHMsIGNh
bGxiYWNrKQogICAgIHsKKyAgICAgICAgJ3VzZSBzdHJpY3QnOworCiAgICAgICAgIHZhciBpbnN0
YW5jZSA9IHRoaXMuX2luc3RhbmNlOwogICAgICAgICBpbnN0YW5jZS5fYmFja2VuZC5faW52b2tl
Q29tbWFuZChpbnN0YW5jZSwgY29tbWFuZEFyZ3VtZW50cywgY2FsbGJhY2spOwogICAgIH0sCiAK
ICAgICBwcm9taXNlOiBmdW5jdGlvbigpCiAgICAgeworICAgICAgICAndXNlIHN0cmljdCc7CisK
ICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcy5faW5zdGFuY2U7CiAgICAgICAgIHZhciBwcm9t
aXNlQXJndW1lbnRzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpOwogICAgICAgICByZXR1cm4gbmV3
IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBmdW5jdGlv
biBjb252ZXJ0VG9Qcm9taXNlQ2FsbGJhY2soZXJyb3IsIHBheWxvYWQpIHsKICAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3IgPyByZWplY3QoZXJyb3IpIDogcmVzb2x2ZShwYXlsb2FkKTsKICAg
ICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIGluZGlj
YXRlZCBieSBpbnZva2luZyB0aGUgY29tbWFuZCBkaWZmZXJlbnRseSwgcmF0aGVyCiAgICAgICAg
ICAgICAvLyB0aGFuIGJ5IHNldHRpbmcgYSBtYWdpY2FsIHByb3BlcnR5IG9uIHRoZSBjYWxsYmFj
ay4gPHdlYmtpdC5vcmcvYi8xMzIzODY+CiAgICAgICAgICAgICBjb252ZXJ0VG9Qcm9taXNlQ2Fs
bGJhY2suZXhwZWN0c1Jlc3VsdE9iamVjdCA9IHRydWU7CkBAIC00MzIsNiArNDQ3LDggQEAgSW5z
cGVjdG9yQmFja2VuZC5Db21tYW5kLnByb3RvdHlwZSA9IHsKIAogICAgIHN1cHBvcnRzOiBmdW5j
dGlvbihwYXJhbWV0ZXJOYW1lKQogICAgIHsKKyAgICAgICAgJ3VzZSBzdHJpY3QnOworCiAgICAg
ICAgIHZhciBpbnN0YW5jZSA9IHRoaXMuX2luc3RhbmNlOwogICAgICAgICByZXR1cm4gaW5zdGFu
Y2UuY2FsbFNpZ25hdHVyZS5zb21lKGZ1bmN0aW9uKHBhcmFtZXRlcikgewogICAgICAgICAgICAg
cmV0dXJuIHBhcmFtZXRlclsibmFtZSJdID09PSBwYXJhbWV0ZXJOYW1lOwpAQCAtNDQyLDYgKzQ1
OSw4IEBAIEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZC5wcm90b3R5cGUgPSB7CiAKICAgICBfaW52
b2tlV2l0aEFyZ3VtZW50czogZnVuY3Rpb24oKQogICAgIHsKKyAgICAgICAgJ3VzZSBzdHJpY3Qn
OworCiAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXMuX2luc3RhbmNlOwogICAgICAgICB2YXIg
Y29tbWFuZEFyZ3VtZW50cyA9IEFycmF5LmZyb20oYXJndW1lbnRzKTsKICAgICAgICAgdmFyIGNh
bGxiYWNrID0gdHlwZW9mIGNvbW1hbmRBcmd1bWVudHMubGFzdFZhbHVlID09PSAiZnVuY3Rpb24i
ID8gY29tbWFuZEFyZ3VtZW50cy5wb3AoKSA6IG51bGw7CkBAIC00NzgsMTEgKzQ5NywxNCBAQCBJ
bnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAg
ICAgaW5zdGFuY2UuX2JhY2tlbmQuX2ludm9rZUNvbW1hbmQoaW5zdGFuY2UsIE9iamVjdC5rZXlz
KHBhcmFtZXRlcnMpLmxlbmd0aCA/IHBhcmFtZXRlcnMgOiBudWxsLCBjYWxsYmFjayk7Ci0gICAg
fSwKLX0KKyAgICB9Cit9OwogCi1JbnNwZWN0b3JCYWNrZW5kLkV2ZW50ID0gZnVuY3Rpb24oZXZl
bnROYW1lLCBwYXJhbWV0ZXJOYW1lcykKK0luc3BlY3RvckJhY2tlbmQuRXZlbnQgPSBjbGFzcyBF
dmVudAogewotICAgIHRoaXMuZXZlbnROYW1lID0gZXZlbnROYW1lOwotICAgIHRoaXMucGFyYW1l
dGVyTmFtZXMgPSBwYXJhbWV0ZXJOYW1lczsKLX0KKyAgICBjb25zdHJ1Y3RvcihldmVudE5hbWUs
IHBhcmFtZXRlck5hbWVzKQorICAgIHsKKyAgICAgICAgdGhpcy5ldmVudE5hbWUgPSBldmVudE5h
bWU7CisgICAgICAgIHRoaXMucGFyYW1ldGVyTmFtZXMgPSBwYXJhbWV0ZXJOYW1lczsKKyAgICB9
Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcwppbmRleCA4NDkxNzU3NWU1MDIy
ZjY5M2IyZDQ2NTU1NzdiNDhkMmI1ODk3YjRjLi44YmRhZGI3ZWRlOWE4ZTZiZDRlYjM4YmJiZDQ4
YzIxMTA5ZjA0ODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0y
MywxOCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0
b3IuSW5zcGVjdG9yT2JzZXJ2ZXIgPSBjbGFzcyBJbnNwZWN0b3JPYnNlcnZlcgogewotICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
LX07Ci0KLVdlYkluc3BlY3Rvci5JbnNwZWN0b3JPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5JbnNwZWN0b3JPYnNlcnZlciwKLQogICAgIC8vIEV2
ZW50cyBkZWZpbmVkIGJ5IHRoZSAiSW5zcGVjdG9yIiBkb21haW4uCiAKLSAgICBldmFsdWF0ZUZv
clRlc3RJbkZyb250ZW5kOiBmdW5jdGlvbihzY3JpcHQpCisgICAgZXZhbHVhdGVGb3JUZXN0SW5G
cm9udGVuZChzY3JpcHQpCiAgICAgewogICAgICAgICBpZiAoIUluc3BlY3RvckZyb250ZW5kSG9z
dC5pc1VuZGVyVGVzdCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDIsOSArMzUsOSBAQCBX
ZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICBJbnNw
ZWN0b3JCYWNrZW5kLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNoZXMoZnVuY3Rpb24oKSB7CiAgICAg
ICAgICAgICB3aW5kb3cuZXZhbChzY3JpcHQpOwogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0K
IAotICAgIGluc3BlY3Q6IGZ1bmN0aW9uKHBheWxvYWQsIGhpbnRzKQorICAgIGluc3BlY3QocGF5
bG9hZCwgaGludHMpCiAgICAgewogICAgICAgICB2YXIgcmVtb3RlT2JqZWN0ID0gV2ViSW5zcGVj
dG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwYXlsb2FkKTsKICAgICAgICAgaWYgKHJlbW90
ZU9iamVjdC5zdWJ0eXBlID09PSAibm9kZSIpIHsKQEAgLTYxLDE3ICs1NCwxNSBAQCBXZWJJbnNw
ZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICBXZWJJbnNwZWN0
b3IubmF2aWdhdGlvblNpZGViYXIuc2VsZWN0ZWRTaWRlYmFyUGFuZWwgPSBXZWJJbnNwZWN0b3Iu
cmVzb3VyY2VTaWRlYmFyUGFuZWw7CiAKICAgICAgICAgcmVtb3RlT2JqZWN0LnJlbGVhc2UoKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGRldGFjaGVkOiBmdW5jdGlvbihyZWFzb24pCisgICAgZGV0
YWNoZWQocmVhc29uKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4K
LSAgICB9LAorICAgIH0KIAotICAgIGFjdGl2YXRlRXh0cmFEb21haW5zOiBmdW5jdGlvbihkb21h
aW5zKQorICAgIGFjdGl2YXRlRXh0cmFEb21haW5zKGRvbWFpbnMpCiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3IuYWN0aXZhdGVFeHRyYURvbWFpbnMoZG9tYWlucyk7CiAgICAgfQogfTsKLQot
V2ViSW5zcGVjdG9yLkluc3BlY3Rvck9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xheWVyVHJlZU9ic2VydmVyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGF5ZXJUcmVlT2JzZXJ2ZXIu
anMKaW5kZXggNTVjYjkwZTAxZmY5ZTMwMjQxM2NjYmY3OWNhYTgwYjRkZjIxMTUxZS4uMGFjNjcx
YmRkMjZkYWNhOGRiNDQ5MDkzYzUzZDdlOTFiOTY5NDIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGF5ZXJUcmVlT2JzZXJ2ZXIuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGF5ZXJU
cmVlT2JzZXJ2ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE3LDI4ICsxNywxOSBAQAogICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgogICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKICAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT2RGIExJQUJJTElUWSwg
V0hFVEhFUiBJTgogICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKICAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuTGF5ZXJUcmVl
T2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuTGF5ZXJUcmVlT2JzZXJ2ZXIgPSBj
bGFzcyBMYXllclRyZWVPYnNlcnZlcgogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8g
YSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8v
IFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5MYXll
clRyZWVPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5MYXllclRyZWVPYnNlcnZlciwKLQogICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiTGF5
ZXJUcmVlIiBkb21haW4uCiAKLSAgICBsYXllclRyZWVEaWRDaGFuZ2U6IGZ1bmN0aW9uKCkKKyAg
ICBsYXllclRyZWVEaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5s
YXllclRyZWVNYW5hZ2VyLnN1cHBvcnRlZCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5sYXll
clRyZWVNYW5hZ2VyLmxheWVyVHJlZURpZENoYW5nZSgpOwogICAgIH0KIH07Ci0KLVdlYkluc3Bl
Y3Rvci5MYXllclRyZWVPYnNlcnZlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
Lk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9NZXNzYWdlRGlzcGF0Y2hlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01lc3NhZ2VEaXNwYXRjaGVyLmpzCmluZGV4
IDExYzhmNjcwNmM2NTI4YTVlMGEzNDVlYjQ2ODBjNjM0OTQ3YWFjZmMuLjQ5YWNmMDA1MjIzZTQ0
MWU1YmU5OGQ2MDRmOGJhZTlmZDA0N2I4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01lc3NhZ2VEaXNwYXRjaGVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01lc3NhZ2VEaXNwYXRj
aGVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDE0IFVuaXZl
cnNpdHkgb2YgV2FzaGluZ3RvbgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjQsMzQgKzI0LDM0IEBA
CiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9y
Lm1lc3NhZ2VzVG9EaXNwYXRjaCA9IFtdOworV2ViSW5zcGVjdG9yLl9tZXNzYWdlc1RvRGlzcGF0
Y2ggPSBbXTsKIAogV2ViSW5zcGVjdG9yLmRpc3BhdGNoTmV4dFF1ZXVlZE1lc3NhZ2VGcm9tQmFj
a2VuZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB2YXIgc3RhcnRDb3VudCA9IFdlYkluc3BlY3Rvci5t
ZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoOworICAgIHZhciBzdGFydENvdW50ID0gV2ViSW5zcGVj
dG9yLl9tZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoOwogICAgIHZhciBzdGFydFRpbWUgPSBEYXRl
Lm5vdygpOwogICAgIHZhciB0aW1lTGltaXRQZXJSdW5Mb29wID0gMTA7IC8vIG1pbGxpc2Vjb25k
cwogCiAgICAgdmFyIGkgPSAwOwotICAgIGZvciAoOyBpIDwgV2ViSW5zcGVjdG9yLm1lc3NhZ2Vz
VG9EaXNwYXRjaC5sZW5ndGg7ICsraSkgeworICAgIGZvciAoOyBpIDwgV2ViSW5zcGVjdG9yLl9t
ZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoOyArK2kpIHsKICAgICAgICAgLy8gRGVmZXIgcmVtYWlu
aW5nIG1lc3NhZ2VzIGlmIHdlIGhhdmUgdGFrZW4gdG9vIGxvbmcuIEluIHByYWN0aWNlLCBzaW5n
bGUKICAgICAgICAgLy8gbWVzc2FnZXMgbGlrZSBQYWdlLmdldFJlc291cmNlQ29udGVudCBibG93
IHRocm91Z2ggdGhlIHRpbWUgYnVkZ2V0LgogICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0
VGltZSA+IHRpbWVMaW1pdFBlclJ1bkxvb3ApCiAgICAgICAgICAgICBicmVhazsKIAotICAgICAg
ICBJbnNwZWN0b3JCYWNrZW5kLmRpc3BhdGNoKFdlYkluc3BlY3Rvci5tZXNzYWdlc1RvRGlzcGF0
Y2hbaV0pOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmRpc3BhdGNoKFdlYkluc3BlY3Rvci5f
bWVzc2FnZXNUb0Rpc3BhdGNoW2ldKTsKICAgICB9CiAKLSAgICBpZiAoaSA9PT0gV2ViSW5zcGVj
dG9yLm1lc3NhZ2VzVG9EaXNwYXRjaC5sZW5ndGgpIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLm1l
c3NhZ2VzVG9EaXNwYXRjaCA9IFtdOworICAgIGlmIChpID09PSBXZWJJbnNwZWN0b3IuX21lc3Nh
Z2VzVG9EaXNwYXRjaC5sZW5ndGgpIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLl9tZXNzYWdlc1Rv
RGlzcGF0Y2ggPSBbXTsKICAgICAgICAgV2ViSW5zcGVjdG9yLl9kaXNwYXRjaFRpbWVvdXQgPSBu
dWxsOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFdlYkluc3BlY3Rvci5tZXNzYWdlc1RvRGlzcGF0
Y2ggPSBXZWJJbnNwZWN0b3IubWVzc2FnZXNUb0Rpc3BhdGNoLnNsaWNlKGkpOworICAgICAgICBX
ZWJJbnNwZWN0b3IuX21lc3NhZ2VzVG9EaXNwYXRjaCA9IFdlYkluc3BlY3Rvci5fbWVzc2FnZXNU
b0Rpc3BhdGNoLnNsaWNlKGkpOwogICAgICAgICBXZWJJbnNwZWN0b3IuX2Rpc3BhdGNoVGltZW91
dCA9IHNldFRpbWVvdXQoV2ViSW5zcGVjdG9yLmRpc3BhdGNoTmV4dFF1ZXVlZE1lc3NhZ2VGcm9t
QmFja2VuZCwgMCk7CiAgICAgfQogCiAgICAgaWYgKEluc3BlY3RvckJhY2tlbmQuZHVtcEluc3Bl
Y3RvclRpbWVTdGF0cykKLSAgICAgICAgY29uc29sZS5sb2coInRpbWUtc3RhdHM6IC0tLSBSdW5M
b29wIGR1cmF0aW9uOiAiICsgKERhdGUubm93KCkgLSBzdGFydFRpbWUpICsgIm1zOyBkaXNwYXRj
aGVkOiAiICsgKHN0YXJ0Q291bnQgLSBXZWJJbnNwZWN0b3IubWVzc2FnZXNUb0Rpc3BhdGNoLmxl
bmd0aCkgKyAiOyByZW1haW5pbmc6ICIgKyBXZWJJbnNwZWN0b3IubWVzc2FnZXNUb0Rpc3BhdGNo
Lmxlbmd0aCk7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0aW1lLXN0YXRzOiAtLS0gUnVuTG9vcCBk
dXJhdGlvbjogIiArIChEYXRlLm5vdygpIC0gc3RhcnRUaW1lKSArICJtczsgZGlzcGF0Y2hlZDog
IiArIChzdGFydENvdW50IC0gV2ViSW5zcGVjdG9yLl9tZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3Ro
KSArICI7IHJlbWFpbmluZzogIiArIFdlYkluc3BlY3Rvci5fbWVzc2FnZXNUb0Rpc3BhdGNoLmxl
bmd0aCk7CiB9OwogCiBXZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNzYWdlRnJvbUJhY2tlbmQgPSBm
dW5jdGlvbihtZXNzYWdlKQpAQCAtNTksNyArNTksNyBAQCBXZWJJbnNwZWN0b3IuZGlzcGF0Y2hN
ZXNzYWdlRnJvbUJhY2tlbmQgPSBmdW5jdGlvbihtZXNzYWdlKQogICAgIC8vIEVuZm9yY2UgYXN5
bmNocm9ub3VzIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGJhY2tlbmQgYW5kIHRoZSBmcm9udGVu
ZCBieSBxdWV1ZWluZyBtZXNzYWdlcy4KICAgICAvLyBUaGUgbWVzc2FnZXMgYXJlIGRlcXVldWVk
IG9uIGEgemVybyBkZWxheSB0aW1lb3V0LgogCi0gICAgdGhpcy5tZXNzYWdlc1RvRGlzcGF0Y2gu
cHVzaChtZXNzYWdlKTsKKyAgICBXZWJJbnNwZWN0b3IuX21lc3NhZ2VzVG9EaXNwYXRjaC5wdXNo
KG1lc3NhZ2UpOwogCiAgICAgaWYgKHRoaXMuX2Rpc3BhdGNoVGltZW91dCkKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJv
dG9jb2wvTmV0d29ya09ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCmluZGV4IDhkYjkwZWI1NzgxZWI3Mzcz
M2YwNTJiNTkwYjQyZjVlZGJiYmNhYjUuLjhhZGNiNmVkNWY2YzFiM2IxZmFmNzYzOTQxNTJlYzBh
NTJmMzQ2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2ZXIuanMKQEAgLTEsNSArMSw1IEBA
CiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDg2ICsyMyw3NyBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5OZXR3b3JrT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuTmV0d29ya09ic2Vy
dmVyID0gY2xhc3MgTmV0d29ya09ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhp
cyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0g
ICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9y
Lk5ldHdvcmtPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3Bl
Y3Rvci5OZXR3b3JrT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIk5l
dHdvcmsiIGRvbWFpbi4KIAotICAgIHJlcXVlc3RXaWxsQmVTZW50OiBmdW5jdGlvbihyZXF1ZXN0
SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBkb2N1bWVudFVSTCwgcmVxdWVzdCwgdGltZXN0YW1wLCBp
bml0aWF0b3IsIHJlZGlyZWN0UmVzcG9uc2UsIHR5cGUpCisgICAgcmVxdWVzdFdpbGxCZVNlbnQo
cmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgZG9jdW1lbnRVUkwsIHJlcXVlc3QsIHRpbWVz
dGFtcCwgaW5pdGlhdG9yLCByZWRpcmVjdFJlc3BvbnNlLCB0eXBlKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVxdWVzdFdpbGxCZVNl
bnQocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgcmVxdWVzdCwgdHlwZSwgcmVkaXJlY3RS
ZXNwb25zZSwgdGltZXN0YW1wLCBpbml0aWF0b3IpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVx
dWVzdFNlcnZlZEZyb21DYWNoZTogZnVuY3Rpb24ocmVxdWVzdElkKQorICAgIHJlcXVlc3RTZXJ2
ZWRGcm9tQ2FjaGUocmVxdWVzdElkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLm1hcmtSZXNvdXJjZVJlcXVlc3RBc1NlcnZlZEZyb21NZW1vcnlDYWNo
ZShyZXF1ZXN0SWQpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVzcG9uc2VSZWNlaXZlZDogZnVu
Y3Rpb24ocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgdGltZXN0YW1wLCB0eXBlLCByZXNw
b25zZSkKKyAgICByZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQs
IHRpbWVzdGFtcCwgdHlwZSwgcmVzcG9uc2UpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iu
ZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VSZXF1ZXN0RGlkUmVjZWl2ZVJlc3BvbnNlKHJl
cXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIHR5cGUsIHJlc3BvbnNlLCB0aW1lc3RhbXApOwot
ICAgIH0sCisgICAgfQogCi0gICAgZGF0YVJlY2VpdmVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIHRp
bWVzdGFtcCwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgpCisgICAgZGF0YVJlY2VpdmVk
KHJlcXVlc3RJZCwgdGltZXN0YW1wLCBkYXRhTGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZVJl
cXVlc3REaWRSZWNlaXZlRGF0YShyZXF1ZXN0SWQsIGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVu
Z3RoLCB0aW1lc3RhbXApOwotICAgIH0sCisgICAgfQogCi0gICAgbG9hZGluZ0ZpbmlzaGVkOiBm
dW5jdGlvbihyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgc291cmNlTWFwVVJMKQorICAgIGxvYWRpbmdG
aW5pc2hlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgc291cmNlTWFwVVJMKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVxdWVzdERpZEZp
bmlzaExvYWRpbmcocmVxdWVzdElkLCB0aW1lc3RhbXAsIHNvdXJjZU1hcFVSTCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBsb2FkaW5nRmFpbGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIHRpbWVzdGFt
cCwgZXJyb3JUZXh0LCBjYW5jZWxlZCkKKyAgICBsb2FkaW5nRmFpbGVkKHJlcXVlc3RJZCwgdGlt
ZXN0YW1wLCBlcnJvclRleHQsIGNhbmNlbGVkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9y
LmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVxdWVzdERpZEZhaWxMb2FkaW5nKHJlcXVl
c3RJZCwgY2FuY2VsZWQsIHRpbWVzdGFtcCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0
U2VydmVkRnJvbU1lbW9yeUNhY2hlOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRl
cklkLCBkb2N1bWVudFVSTCwgdGltZXN0YW1wLCBpbml0aWF0b3IsIHJlc291cmNlKQorICAgIHJl
cXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwg
ZG9jdW1lbnRVUkwsIHRpbWVzdGFtcCwgaW5pdGlhdG9yLCByZXNvdXJjZSkKICAgICB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5yZXNvdXJjZVJlcXVlc3RXYXNT
ZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgcmVzb3Vy
Y2UsIHRpbWVzdGFtcCwgaW5pdGlhdG9yKTsKLSAgICB9LAorICAgIH0KIAotICAgIHdlYlNvY2tl
dFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdDogZnVuY3Rpb24ocmVxdWVzdElkLCB0aW1lc3RhbXAs
IHJlcXVlc3QpCisgICAgd2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1ZXN0KHJlcXVlc3RJ
ZCwgdGltZXN0YW1wLCByZXF1ZXN0KQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBs
ZW1lbnRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIHdlYlNvY2tldEhhbmRzaGFrZVJlc3BvbnNl
UmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSkKKyAgICB3
ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wLCBy
ZXNwb25zZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCi0gICAg
fSwKKyAgICB9CiAKLSAgICB3ZWJTb2NrZXRDcmVhdGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIHVy
bCkKKyAgICB3ZWJTb2NrZXRDcmVhdGVkKHJlcXVlc3RJZCwgdXJsKQogICAgIHsKICAgICAgICAg
Ly8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIHdlYlNvY2tl
dENsb3NlZDogZnVuY3Rpb24ocmVxdWVzdElkLCB0aW1lc3RhbXApCisgICAgd2ViU29ja2V0Q2xv
c2VkKHJlcXVlc3RJZCwgdGltZXN0YW1wKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IE5vdCBp
bXBsZW1lbnRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIHdlYlNvY2tldEZyYW1lUmVjZWl2ZWQ6
IGZ1bmN0aW9uKHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSkKKyAgICB3ZWJTb2NrZXRG
cmFtZVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSkKICAgICB7CiAgICAg
ICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICB3ZWJT
b2NrZXRGcmFtZUVycm9yOiBmdW5jdGlvbihyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgZXJyb3JNZXNz
YWdlKQorICAgIHdlYlNvY2tldEZyYW1lRXJyb3IocmVxdWVzdElkLCB0aW1lc3RhbXAsIGVycm9y
TWVzc2FnZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCi0gICAg
fSwKKyAgICB9CiAKLSAgICB3ZWJTb2NrZXRGcmFtZVNlbnQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwg
dGltZXN0YW1wLCByZXNwb25zZSkKKyAgICB3ZWJTb2NrZXRGcmFtZVNlbnQocmVxdWVzdElkLCB0
aW1lc3RhbXAsIHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1l
bnRlZC4KICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuTmV0d29ya09ic2VydmVyLnByb3RvdHlw
ZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VP
YnNlcnZlci5qcwppbmRleCA3YmM1ZDFmM2U3MWUyZTNhOWI3ZDUwODlhMzcyMzFiYmM0NzQwNjZh
Li4xMWZhZWVkMDc2YzBmZDY3YmMwZjIzODBlNzJiNDc0NTJkMWU0YjMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFn
ZU9ic2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMyw3MSArMjMsNjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUGFnZU9ic2VydmVyID0gZnVuY3Rpb24oKQor
V2ViSW5zcGVjdG9yLlBhZ2VPYnNlcnZlciA9IGNsYXNzIFBhZ2VPYnNlcnZlcgogewotICAgIC8v
IEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBh
bmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsK
LX07Ci0KLVdlYkluc3BlY3Rvci5QYWdlT2JzZXJ2ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBXZWJJbnNwZWN0b3IuUGFnZU9ic2VydmVyLAotCiAgICAgLy8gRXZlbnRzIGRlZmlu
ZWQgYnkgdGhlICJQYWdlIiBkb21haW4uCiAKLSAgICBkb21Db250ZW50RXZlbnRGaXJlZDogZnVu
Y3Rpb24odGltZXN0YW1wKQorICAgIGRvbUNvbnRlbnRFdmVudEZpcmVkKHRpbWVzdGFtcCkKICAg
ICB7CiAgICAgICAgIC8vIENvdmVyZWQgYnkgVGltZWxpbmUgIk1hcmtET01Db250ZW50IiByZWNv
cmQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBsb2FkRXZlbnRGaXJlZDogZnVuY3Rpb24odGltZXN0
YW1wKQorICAgIGxvYWRFdmVudEZpcmVkKHRpbWVzdGFtcCkKICAgICB7CiAgICAgICAgIFdlYklu
c3BlY3Rvci50aW1lbGluZU1hbmFnZXIucGFnZURpZExvYWQodGltZXN0YW1wKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGZyYW1lTmF2aWdhdGVkOiBmdW5jdGlvbihmcmFtZSwgbG9hZGVySWQpCisg
ICAgZnJhbWVOYXZpZ2F0ZWQoZnJhbWUsIGxvYWRlcklkKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmZyYW1lRGlkTmF2aWdhdGUoZnJhbWUsIGxvYWRl
cklkKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZyYW1lRGV0YWNoZWQ6IGZ1bmN0aW9uKGZyYW1l
SWQpCisgICAgZnJhbWVEZXRhY2hlZChmcmFtZUlkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmZyYW1lRGlkRGV0YWNoKGZyYW1lSWQpOwotICAgIH0s
CisgICAgfQogCi0gICAgZnJhbWVTdGFydGVkTG9hZGluZzogZnVuY3Rpb24oZnJhbWVJZCkKKyAg
ICBmcmFtZVN0YXJ0ZWRMb2FkaW5nKGZyYW1lSWQpCiAgICAgewogICAgICAgICAvLyBOb3QgaGFu
ZGxlZCB5ZXQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBmcmFtZVN0b3BwZWRMb2FkaW5nOiBmdW5j
dGlvbihmcmFtZUlkKQorICAgIGZyYW1lU3RvcHBlZExvYWRpbmcoZnJhbWVJZCkKICAgICB7CiAg
ICAgICAgIC8vIE5vdCBoYW5kbGVkIHlldC4KLSAgICB9LAorICAgIH0KIAotICAgIGZyYW1lU2No
ZWR1bGVkTmF2aWdhdGlvbjogZnVuY3Rpb24oZnJhbWVJZCwgZGVsYXkpCisgICAgZnJhbWVTY2hl
ZHVsZWROYXZpZ2F0aW9uKGZyYW1lSWQsIGRlbGF5KQogICAgIHsKICAgICAgICAgLy8gTm90IGhh
bmRsZWQgeWV0LgotICAgIH0sCisgICAgfQogCi0gICAgZnJhbWVDbGVhcmVkU2NoZWR1bGVkTmF2
aWdhdGlvbjogZnVuY3Rpb24oZnJhbWVJZCkKKyAgICBmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZp
Z2F0aW9uKGZyYW1lSWQpCiAgICAgewogICAgICAgICAvLyBOb3QgaGFuZGxlZCB5ZXQuCi0gICAg
fSwKKyAgICB9CiAKLSAgICBqYXZhc2NyaXB0RGlhbG9nT3BlbmluZzogZnVuY3Rpb24obWVzc2Fn
ZSkKKyAgICBqYXZhc2NyaXB0RGlhbG9nT3BlbmluZyhtZXNzYWdlKQogICAgIHsKICAgICAgICAg
Ly8gTm90IGhhbmRsZWQgeWV0LgotICAgIH0sCisgICAgfQogCi0gICAgamF2YXNjcmlwdERpYWxv
Z0Nsb3NlZDogZnVuY3Rpb24oKQorICAgIGphdmFzY3JpcHREaWFsb2dDbG9zZWQoKQogICAgIHsK
ICAgICAgICAgLy8gTm90IGhhbmRsZWQgeWV0LgotICAgIH0sCisgICAgfQogCi0gICAgc2NyaXB0
c0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCisgICAgc2NyaXB0c0VuYWJsZWQoZW5hYmxlZCkK
ICAgICB7CiAgICAgICAgIC8vIE5vdCBoYW5kbGVkIHlldC4KICAgICB9CiB9OwotCi1XZWJJbnNw
ZWN0b3IuUGFnZU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcwppbmRleCBiOTBhNGIyYzBmNDkz
ZjJmMzM3MGFhYjkxM2QxMGNkMzlmNjhhZDhiLi42YThjZWMyYTMyZjQ0N2FhMzM5Njk5NzBiNTQz
ZWFkOWRhOGRkZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmplY3QuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI4LDE3MiArMjksMTc0IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QgPSBmdW5j
dGlvbihvYmplY3RJZCwgdHlwZSwgc3VidHlwZSwgdmFsdWUsIGRlc2NyaXB0aW9uLCBzaXplLCBw
cmV2aWV3KQorV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCA9IGNsYXNzIFJlbW90ZU9iamVjdAog
ewotICAgIC8vIE5vIHN1cGVyY2xhc3MuCi0KLSAgICBjb25zb2xlLmFzc2VydCh0eXBlKTsKLSAg
ICBjb25zb2xlLmFzc2VydCghcHJldmlldyB8fCBwcmV2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVj
dG9yLk9iamVjdFByZXZpZXcpOwotCi0gICAgdGhpcy5fdHlwZSA9IHR5cGU7Ci0gICAgdGhpcy5f
c3VidHlwZSA9IHN1YnR5cGU7Ci0KLSAgICBpZiAob2JqZWN0SWQpIHsKLSAgICAgICAgLy8gT2Jq
ZWN0IG9yIFN5bWJvbC4KLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXN1YnR5cGUgfHwgdHlwZW9m
IHN1YnR5cGUgPT09ICJzdHJpbmciKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWRlc2NyaXB0
aW9uIHx8IHR5cGVvZiBkZXNjcmlwdGlvbiA9PT0gInN0cmluZyIpOwotICAgICAgICBjb25zb2xl
LmFzc2VydCghdmFsdWUpOwotCi0gICAgICAgIHRoaXMuX29iamVjdElkID0gb2JqZWN0SWQ7Ci0g
ICAgICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247Ci0gICAgICAgIHRoaXMuX2hh
c0NoaWxkcmVuID0gdHlwZSAhPT0gInN5bWJvbCI7Ci0gICAgICAgIHRoaXMuX3NpemUgPSBzaXpl
OwotICAgICAgICB0aGlzLl9wcmV2aWV3ID0gcHJldmlldzsKLSAgICB9IGVsc2UgewotICAgICAg
ICAvLyBQcmltaXRpdmUgb3IgbnVsbC4KLSAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZSAhPT0g
Im9iamVjdCIgfHwgdmFsdWUgPT09IG51bGwpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghcHJl
dmlldyk7Ci0KLSAgICAgICAgdGhpcy5fZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiB8fCAodmFs
dWUgKyAiIik7Ci0gICAgICAgIHRoaXMuX2hhc0NoaWxkcmVuID0gZmFsc2U7Ci0gICAgICAgIHRo
aXMuX3ZhbHVlID0gdmFsdWU7CisgICAgY29uc3RydWN0b3Iob2JqZWN0SWQsIHR5cGUsIHN1YnR5
cGUsIHZhbHVlLCBkZXNjcmlwdGlvbiwgc2l6ZSwgcHJldmlldykKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHR5cGUpOworICAgICAgICBjb25zb2xlLmFzc2VydCghcHJldmlldyB8fCBw
cmV2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcpOworCisgICAgICAg
IHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAgICB0aGlzLl9zdWJ0eXBlID0gc3VidHlwZTsKKwor
ICAgICAgICBpZiAob2JqZWN0SWQpIHsKKyAgICAgICAgICAgIC8vIE9iamVjdCBvciBTeW1ib2wu
CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghc3VidHlwZSB8fCB0eXBlb2Ygc3VidHlwZSA9
PT0gInN0cmluZyIpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIWRlc2NyaXB0aW9uIHx8
IHR5cGVvZiBkZXNjcmlwdGlvbiA9PT0gInN0cmluZyIpOworICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQoIXZhbHVlKTsKKworICAgICAgICAgICAgdGhpcy5fb2JqZWN0SWQgPSBvYmplY3RJZDsK
KyAgICAgICAgICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisgICAgICAgICAg
ICB0aGlzLl9oYXNDaGlsZHJlbiA9IHR5cGUgIT09ICJzeW1ib2wiOworICAgICAgICAgICAgdGhp
cy5fc2l6ZSA9IHNpemU7CisgICAgICAgICAgICB0aGlzLl9wcmV2aWV3ID0gcHJldmlldzsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFByaW1pdGl2ZSBvciBudWxsLgorICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQodHlwZSAhPT0gIm9iamVjdCIgfHwgdmFsdWUgPT09IG51bGwp
OworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXByZXZpZXcpOworCisgICAgICAgICAgICB0
aGlzLl9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uIHx8ICh2YWx1ZSArICIiKTsKKyAgICAgICAg
ICAgIHRoaXMuX2hhc0NoaWxkcmVuID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLl92YWx1ZSA9
IHZhbHVlOworICAgICAgICB9CiAgICAgfQotfTsKIAotV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5mcm9tUHJpbWl0aXZlVmFsdWUgPSBmdW5jdGlvbih2YWx1ZSkKLXsKLSAgICByZXR1cm4gbmV3
IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QodW5kZWZpbmVkLCB0eXBlb2YgdmFsdWUsIHVuZGVm
aW5lZCwgdW5kZWZpbmVkLCB2YWx1ZSk7Ci19OworICAgIC8vIFN0YXRpYwogCi1XZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkKLXsKLSAgICBj
b25zb2xlLmFzc2VydCh0eXBlb2YgcGF5bG9hZCA9PT0gIm9iamVjdCIsICJSZW1vdGUgb2JqZWN0
IHBheWxvYWQgc2hvdWxkIG9ubHkgYmUgYW4gb2JqZWN0Iik7Ci0KLSAgICBpZiAocGF5bG9hZC5z
dWJ0eXBlID09PSAiYXJyYXkiKSB7Ci0gICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTog
UnVudGltZS5SZW1vdGVPYmplY3QgZGlkIG5vdCBoYXZlIHNpemUgcHJvcGVydHksCi0gICAgICAg
IC8vIGluc3RlYWQgaXQgd2FzIHRhY2tlZCBvbnRvIHRoZSBlbmQgb2YgdGhlIGRlc2NyaXB0aW9u
LCBsaWtlICJBcnJheVsjXSIuCi0gICAgICAgIHZhciBtYXRjaCA9IHBheWxvYWQuZGVzY3JpcHRp
b24ubWF0Y2goL1xbKFxkKylcXSQvKTsKLSAgICAgICAgaWYgKG1hdGNoKSB7Ci0gICAgICAgICAg
ICBwYXlsb2FkLnNpemUgPSBwYXJzZUludChtYXRjaFsxXSk7Ci0gICAgICAgICAgICBwYXlsb2Fk
LmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbi5yZXBsYWNlKC9cW1xkK1xdJC8sICIi
KTsKLSAgICAgICAgfQorICAgIHN0YXRpYyBmcm9tUHJpbWl0aXZlVmFsdWUodmFsdWUpCisgICAg
eworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QodW5kZWZpbmVk
LCB0eXBlb2YgdmFsdWUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB2YWx1ZSk7CiAgICAgfQogCi0g
ICAgaWYgKHBheWxvYWQucHJldmlldykgewotICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1Mg
OCk6IGlPUyA3IGFuZCA4IGRpZCBub3QgaGF2ZSB0eXBlL3N1YnR5cGUvZGVzY3JpcHRpb24gb24K
LSAgICAgICAgLy8gUnVudGltZS5PYmplY3RQcmV2aWV3LiBDb3B5IHRoZW0gb3ZlciBmcm9tIHRo
ZSBSZW1vdGVPYmplY3QuCi0gICAgICAgIGlmICghcGF5bG9hZC5wcmV2aWV3LnR5cGUpIHsKLSAg
ICAgICAgICAgIHBheWxvYWQucHJldmlldy50eXBlID0gcGF5bG9hZC50eXBlOwotICAgICAgICAg
ICAgcGF5bG9hZC5wcmV2aWV3LnN1YnR5cGUgPSBwYXlsb2FkLnN1YnR5cGU7Ci0gICAgICAgICAg
ICBwYXlsb2FkLnByZXZpZXcuZGVzY3JpcHRpb24gPSBwYXlsb2FkLmRlc2NyaXB0aW9uOwotICAg
ICAgICAgICAgcGF5bG9hZC5wcmV2aWV3LnNpemUgPSBwYXlsb2FkLnNpemU7CisgICAgc3RhdGlj
IGZyb21QYXlsb2FkKHBheWxvYWQpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBl
b2YgcGF5bG9hZCA9PT0gIm9iamVjdCIsICJSZW1vdGUgb2JqZWN0IHBheWxvYWQgc2hvdWxkIG9u
bHkgYmUgYW4gb2JqZWN0Iik7CisKKyAgICAgICAgaWYgKHBheWxvYWQuc3VidHlwZSA9PT0gImFy
cmF5IikgeworICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDgpOiBSdW50aW1lLlJl
bW90ZU9iamVjdCBkaWQgbm90IGhhdmUgc2l6ZSBwcm9wZXJ0eSwKKyAgICAgICAgICAgIC8vIGlu
c3RlYWQgaXQgd2FzIHRhY2tlZCBvbnRvIHRoZSBlbmQgb2YgdGhlIGRlc2NyaXB0aW9uLCBsaWtl
ICJBcnJheVsjXSIuCisgICAgICAgICAgICB2YXIgbWF0Y2ggPSBwYXlsb2FkLmRlc2NyaXB0aW9u
Lm1hdGNoKC9cWyhcZCspXF0kLyk7CisgICAgICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAg
ICAgICAgICBwYXlsb2FkLnNpemUgPSBwYXJzZUludChtYXRjaFsxXSk7CisgICAgICAgICAgICAg
ICAgcGF5bG9hZC5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVzY3JpcHRpb24ucmVwbGFjZSgvXFtc
ZCtcXSQvLCAiIik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgcGF5bG9hZC5w
cmV2aWV3ID0gV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcuZnJvbVBheWxvYWQocGF5bG9hZC5w
cmV2aWV3KTsKLSAgICB9CiAKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QocGF5bG9hZC5vYmplY3RJZCwgcGF5bG9hZC50eXBlLCBwYXlsb2FkLnN1YnR5cGUsIHBheWxv
YWQudmFsdWUsIHBheWxvYWQuZGVzY3JpcHRpb24sIHBheWxvYWQuc2l6ZSwgcGF5bG9hZC5wcmV2
aWV3KTsKLX07CisgICAgICAgIGlmIChwYXlsb2FkLnByZXZpZXcpIHsKKyAgICAgICAgICAgIC8v
IENPTVBBVElCSUxJVFkgKGlPUyA4KTogaU9TIDcgYW5kIDggZGlkIG5vdCBoYXZlIHR5cGUvc3Vi
dHlwZS9kZXNjcmlwdGlvbiBvbgorICAgICAgICAgICAgLy8gUnVudGltZS5PYmplY3RQcmV2aWV3
LiBDb3B5IHRoZW0gb3ZlciBmcm9tIHRoZSBSZW1vdGVPYmplY3QuCisgICAgICAgICAgICBpZiAo
IXBheWxvYWQucHJldmlldy50eXBlKSB7CisgICAgICAgICAgICAgICAgcGF5bG9hZC5wcmV2aWV3
LnR5cGUgPSBwYXlsb2FkLnR5cGU7CisgICAgICAgICAgICAgICAgcGF5bG9hZC5wcmV2aWV3LnN1
YnR5cGUgPSBwYXlsb2FkLnN1YnR5cGU7CisgICAgICAgICAgICAgICAgcGF5bG9hZC5wcmV2aWV3
LmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbjsKKyAgICAgICAgICAgICAgICBwYXls
b2FkLnByZXZpZXcuc2l6ZSA9IHBheWxvYWQuc2l6ZTsKKyAgICAgICAgICAgIH0KIAotV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5jcmVhdGVDYWxsQXJndW1lbnQgPSBmdW5jdGlvbih2YWx1ZU9y
T2JqZWN0KQotewotICAgIGlmICh2YWx1ZU9yT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdCkgewotICAgICAgICBpZiAodmFsdWVPck9iamVjdC5vYmplY3RJZCkKLSAg
ICAgICAgICAgIHJldHVybiB7b2JqZWN0SWQ6IHZhbHVlT3JPYmplY3Qub2JqZWN0SWR9OwotICAg
ICAgICByZXR1cm4ge3ZhbHVlOiB2YWx1ZU9yT2JqZWN0LnZhbHVlfTsKKyAgICAgICAgICAgIHBh
eWxvYWQucHJldmlldyA9IFdlYkluc3BlY3Rvci5PYmplY3RQcmV2aWV3LmZyb21QYXlsb2FkKHBh
eWxvYWQucHJldmlldyk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QocGF5bG9hZC5vYmplY3RJZCwgcGF5bG9hZC50eXBlLCBwYXlsb2Fk
LnN1YnR5cGUsIHBheWxvYWQudmFsdWUsIHBheWxvYWQuZGVzY3JpcHRpb24sIHBheWxvYWQuc2l6
ZSwgcGF5bG9hZC5wcmV2aWV3KTsKICAgICB9CiAKLSAgICByZXR1cm4ge3ZhbHVlOiB2YWx1ZU9y
T2JqZWN0fTsKLX07CisgICAgc3RhdGljIGNyZWF0ZUNhbGxBcmd1bWVudCh2YWx1ZU9yT2JqZWN0
KQorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlT3JPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0KSB7CisgICAgICAgICAgICBpZiAodmFsdWVPck9iamVjdC5vYmplY3RJ
ZCkKKyAgICAgICAgICAgICAgICByZXR1cm4ge29iamVjdElkOiB2YWx1ZU9yT2JqZWN0Lm9iamVj
dElkfTsKKyAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IHZhbHVlT3JPYmplY3QudmFsdWV9Owor
ICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUgPSBmdW5j
dGlvbihub2RlLCBvYmplY3RHcm91cCwgY2FsbGJhY2spCi17Ci0gICAgRE9NQWdlbnQucmVzb2x2
ZU5vZGUobm9kZS5pZCwgb2JqZWN0R3JvdXAsIGZ1bmN0aW9uKGVycm9yLCBvYmplY3QpIHsKLSAg
ICAgICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJu
IHt2YWx1ZTogdmFsdWVPck9iamVjdH07CisgICAgfQogCi0gICAgICAgIGlmIChlcnJvciB8fCAh
b2JqZWN0KQotICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7Ci0gICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQob2Jq
ZWN0KSk7Ci0gICAgfSk7Ci19OworICAgIHN0YXRpYyByZXNvbHZlTm9kZShub2RlLCBvYmplY3RH
cm91cCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBET01BZ2VudC5yZXNvbHZlTm9kZShub2Rl
LmlkLCBvYmplY3RHcm91cCwgZnVuY3Rpb24oZXJyb3IsIG9iamVjdCkgeworICAgICAgICAgICAg
aWYgKCFjYWxsYmFjaykKKyAgICAgICAgICAgICAgICByZXR1cm47CiAKLVdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QudHlwZSA9IGZ1bmN0aW9uKHJlbW90ZU9iamVjdCkKLXsKLSAgICBpZiAocmVt
b3RlT2JqZWN0ID09PSBudWxsKQotICAgICAgICByZXR1cm4gIm51bGwiOworICAgICAgICAgICAg
aWYgKGVycm9yIHx8ICFvYmplY3QpCisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2FsbGJhY2soV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5mcm9tUGF5bG9hZChvYmplY3QpKTsKKyAgICAgICAgfSk7CisgICAgfQogCi0g
ICAgdmFyIHR5cGUgPSB0eXBlb2YgcmVtb3RlT2JqZWN0OwotICAgIGlmICh0eXBlICE9PSAib2Jq
ZWN0IiAmJiB0eXBlICE9PSAiZnVuY3Rpb24iKQotICAgICAgICByZXR1cm4gdHlwZTsKKyAgICBz
dGF0aWMgdHlwZShyZW1vdGVPYmplY3QpCisgICAgeworICAgICAgICBpZiAocmVtb3RlT2JqZWN0
ID09PSBudWxsKQorICAgICAgICAgICAgcmV0dXJuICJudWxsIjsKIAotICAgIHJldHVybiByZW1v
dGVPYmplY3QudHlwZTsKLX07CisgICAgICAgIHZhciB0eXBlID0gdHlwZW9mIHJlbW90ZU9iamVj
dDsKKyAgICAgICAgaWYgKHR5cGUgIT09ICJvYmplY3QiICYmIHR5cGUgIT09ICJmdW5jdGlvbiIp
CisgICAgICAgICAgICByZXR1cm4gdHlwZTsKIAotV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qs
CisgICAgICAgIHJldHVybiByZW1vdGVPYmplY3QudHlwZTsKKyAgICB9CisKKyAgICAvLyBQdWJs
aWMKIAogICAgIGdldCBvYmplY3RJZCgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb2Jq
ZWN0SWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdHlwZSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBzdWJ0eXBlKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdWJ0eXBlOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IGRlc2NyaXB0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kZXNjcmlwdGlv
bjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoYXNDaGlsZHJlbigpCiAgICAgewogICAgICAg
ICByZXR1cm4gdGhpcy5faGFzQ2hpbGRyZW47Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdmFs
dWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlOwotICAgIH0sCisgICAgfQog
CiAgICAgZ2V0IHNpemUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NpemUgfHwgMDsK
LSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcmV2aWV3KCkKICAgICB7CiAgICAgICAgIHJldHVy
biB0aGlzLl9wcmV2aWV3OwotICAgIH0sCisgICAgfQogCi0gICAgaGFzU2l6ZTogZnVuY3Rpb24o
KQorICAgIGhhc1NpemUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuaXNBcnJheSgpIHx8
IHRoaXMuaXNDb2xsZWN0aW9uVHlwZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgaGFzVmFsdWU6
IGZ1bmN0aW9uKCkKKyAgICBoYXNWYWx1ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gIl92YWx1
ZSIgaW4gdGhpczsKLSAgICB9LAorICAgIH0KIAotICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRv
cnM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcnMoY2Fs
bGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKHRydWUs
IGNhbGxiYWNrKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdldEFsbFByb3BlcnR5RGVzY3JpcHRv
cnM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldEFsbFByb3BlcnR5RGVzY3JpcHRvcnMoY2Fs
bGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKGZhbHNl
LCBjYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBnZXREaXNwbGF5YWJsZVByb3BlcnR5
RGVzY3JpcHRvcnM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldERpc3BsYXlhYmxlUHJvcGVy
dHlEZXNjcmlwdG9ycyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fb2JqZWN0
SWQgfHwgdGhpcy5faXNTeW1ib2woKSkgewogICAgICAgICAgICAgY2FsbGJhY2soW10pOwpAQCAt
MjIwLDY4ICsyMjMsMjcgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICB0aGlzLl9nZXRQcm9wZXJ0eURlc2NyaXB0
b3JzUmVzb2x2ZXIoY2FsbGJhY2ssIGVycm9yLCBvd25PckdldHRlclByb3BlcnRpZXNMaXN0KTsK
ICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIAogICAgICAgICBSdW50aW1lQWdlbnQuZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKHRoaXMu
X29iamVjdElkLCB0cnVlLCB0aGlzLl9nZXRQcm9wZXJ0eURlc2NyaXB0b3JzUmVzb2x2ZXIuYmlu
ZCh0aGlzLCBjYWxsYmFjaykpOwotICAgIH0sCi0KLSAgICBfZ2V0UHJvcGVydHlEZXNjcmlwdG9y
czogZnVuY3Rpb24ob3duUHJvcGVydGllcywgY2FsbGJhY2spCi0gICAgewotICAgICAgICBpZiAo
IXRoaXMuX29iamVjdElkIHx8IHRoaXMuX2lzU3ltYm9sKCkpIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKFtdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0KLSAgICAgICAgUnVu
dGltZUFnZW50LmdldFByb3BlcnRpZXModGhpcy5fb2JqZWN0SWQsIG93blByb3BlcnRpZXMsIHRy
dWUsIHRoaXMuX2dldFByb3BlcnR5RGVzY3JpcHRvcnNSZXNvbHZlci5iaW5kKHRoaXMsIGNhbGxi
YWNrKSk7Ci0gICAgfSwKLQotICAgIF9nZXRQcm9wZXJ0eURlc2NyaXB0b3JzUmVzb2x2ZXI6IGZ1
bmN0aW9uKGNhbGxiYWNrLCBlcnJvciwgcHJvcGVydGllcywgaW50ZXJuYWxQcm9wZXJ0aWVzKQot
ICAgIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayhudWxsKTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBkZXNjcmlwdG9y
cyA9IHByb3BlcnRpZXMubWFwKGZ1bmN0aW9uKHBheWxvYWQpIHsKLSAgICAgICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yLmZyb21QYXlsb2FkKHBheWxvYWQpOwot
ICAgICAgICB9KTsKLQotICAgICAgICBpZiAoaW50ZXJuYWxQcm9wZXJ0aWVzKSB7Ci0gICAgICAg
ICAgICBkZXNjcmlwdG9ycyA9IGRlc2NyaXB0b3JzLmNvbmNhdChpbnRlcm5hbFByb3BlcnRpZXMu
bWFwKGZ1bmN0aW9uKHBheWxvYWQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVj
dG9yLlByb3BlcnR5RGVzY3JpcHRvci5mcm9tUGF5bG9hZChwYXlsb2FkLCB0cnVlKTsKLSAgICAg
ICAgICAgIH0pKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhbGxiYWNrKGRlc2NyaXB0b3JzKTsK
LSAgICB9LAotCi0gICAgLy8gRklYTUU6IFBoYXNlIG91dCB0aGVzZSBmdW5jdGlvbnMuIFRoZXkg
cmV0dXJuIFJlbW90ZU9iamVjdFByb3BlcnR5IGluc3RlYWQgb2YgUHJvcGVydHlEZXNjcmlwdG9y
cy4KKyAgICB9CiAKLSAgICBkZXByZWNhdGVkR2V0T3duUHJvcGVydGllczogZnVuY3Rpb24oY2Fs
bGJhY2spCisgICAgLy8gRklYTUU6IFBoYXNlIG91dCB0aGVzZSBkZXByZWNhdGVkIGZ1bmN0aW9u
cy4gVGhleSByZXR1cm4gRGVwcmVjYXRlZFJlbW90ZU9iamVjdFByb3BlcnR5IGluc3RlYWQgb2Yg
UHJvcGVydHlEZXNjcmlwdG9ycy4KKyAgICBkZXByZWNhdGVkR2V0T3duUHJvcGVydGllcyhjYWxs
YmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX2RlcHJlY2F0ZWRHZXRQcm9wZXJ0aWVzKHRydWUs
IGNhbGxiYWNrKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRlcHJlY2F0ZWRHZXRBbGxQcm9wZXJ0
aWVzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBkZXByZWNhdGVkR2V0QWxsUHJvcGVydGllcyhj
YWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX2RlcHJlY2F0ZWRHZXRQcm9wZXJ0aWVzKGZh
bHNlLCBjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIF9kZXByZWNhdGVkR2V0UHJvcGVydGllczog
ZnVuY3Rpb24ob3duUHJvcGVydGllcywgY2FsbGJhY2spCi0gICAgewotICAgICAgICBpZiAoIXRo
aXMuX29iamVjdElkIHx8IHRoaXMuX2lzU3ltYm9sKCkpIHsKLSAgICAgICAgICAgIGNhbGxiYWNr
KFtdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIFJ1bnRpbWVB
Z2VudC5nZXRQcm9wZXJ0aWVzKHRoaXMuX29iamVjdElkLCBvd25Qcm9wZXJ0aWVzLCB0aGlzLl9k
ZXByZWNhdGVkR2V0UHJvcGVydGllc1Jlc29sdmVyLmJpbmQodGhpcywgY2FsbGJhY2spKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGRlcHJlY2F0ZWRHZXREaXNwbGF5YWJsZVByb3BlcnRpZXM6IGZ1
bmN0aW9uKGNhbGxiYWNrKQorICAgIGRlcHJlY2F0ZWRHZXREaXNwbGF5YWJsZVByb3BlcnRpZXMo
Y2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX29iamVjdElkIHx8IHRoaXMuX2lz
U3ltYm9sKCkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKFtdKTsKQEAgLTMwNyw0NiArMjY5LDE2
IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICAgICAgdGhpcy5fZGVwcmVjYXRlZEdldFByb3BlcnRpZXNSZXNvbHZlcihj
YWxsYmFjaywgZXJyb3IsIG93bk9yR2V0dGVyUHJvcGVydGllc0xpc3QpOwogICAgICAgICAgICAg
fS5iaW5kKHRoaXMpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IFJ1bnRpbWVBZ2VudC5nZXREaXNwbGF5YWJsZVByb3BlcnRpZXModGhpcy5fb2JqZWN0SWQsIHRo
aXMuX2RlcHJlY2F0ZWRHZXRQcm9wZXJ0aWVzUmVzb2x2ZXIuYmluZCh0aGlzLCBjYWxsYmFjaykp
OwotICAgIH0sCi0KLSAgICBfZGVwcmVjYXRlZEdldFByb3BlcnRpZXNSZXNvbHZlcjogZnVuY3Rp
b24oY2FsbGJhY2ssIGVycm9yLCBwcm9wZXJ0aWVzLCBpbnRlcm5hbFByb3BlcnRpZXMpCi0gICAg
ewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOwotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGludGVybmFsUHJvcGVy
dGllcykgewotICAgICAgICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMuY29uY2F0KGludGVy
bmFsUHJvcGVydGllcy5tYXAoZnVuY3Rpb24oZGVzY3JpcHRvcikgewotICAgICAgICAgICAgICAg
IGRlc2NyaXB0b3Iud3JpdGFibGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBkZXNjcmlwdG9y
LmNvbmZpZ3VyYWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuZW51bWVy
YWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOwot
ICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yOwotICAgICAgICAgICAgfSkpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgcHJvcGVydGllcyAmJiBpIDwgcHJvcGVydGllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgdmFyIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0
eS5nZXQgfHwgcHJvcGVydHkuc2V0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5Lmdl
dCkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IFdlYkluc3BlY3Rvci5SZW1v
dGVPYmplY3RQcm9wZXJ0eSgiZ2V0ICIgKyBwcm9wZXJ0eS5uYW1lLCBXZWJJbnNwZWN0b3IuUmVt
b3RlT2JqZWN0LmZyb21QYXlsb2FkKHByb3BlcnR5LmdldCksIHByb3BlcnR5KSk7Ci0gICAgICAg
ICAgICAgICAgaWYgKHByb3BlcnR5LnNldCkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1
c2gobmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eSgic2V0ICIgKyBwcm9wZXJ0
eS5uYW1lLCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHByb3BlcnR5LnNl
dCksIHByb3BlcnR5KSk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXN1
bHQucHVzaChuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5KHByb3BlcnR5Lm5h
bWUsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocHJvcGVydHkudmFsdWUp
LCBwcm9wZXJ0eSkpOwotICAgICAgICB9Ci0gICAgICAgIGNhbGxiYWNrKHJlc3VsdCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBzZXRQcm9wZXJ0eVZhbHVlOiBmdW5jdGlvbihuYW1lLCB2YWx1ZSwg
Y2FsbGJhY2spCisgICAgc2V0UHJvcGVydHlWYWx1ZShuYW1lLCB2YWx1ZSwgY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX29iamVjdElkIHx8IHRoaXMuX2lzU3ltYm9sKCkpIHsK
ICAgICAgICAgICAgIGNhbGxiYWNrKCJDYW4ndCBzZXQgYSBwcm9wZXJ0eSBvZiBub24tb2JqZWN0
LiIpOwpAQCAtMzY4LDcgKzMwMCw5IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90
eXBlID0gewogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBkZWxldGUgcmVzdWx0LmRlc2Ny
aXB0aW9uOyAvLyBPcHRpbWl6ZSBvbiB0cmFmZmljLgotICAgICAgICAgICAgUnVudGltZUFnZW50
LmNhbGxGdW5jdGlvbk9uKHRoaXMuX29iamVjdElkLCBzZXRQcm9wZXJ0eVZhbHVlLnRvU3RyaW5n
KCksIFt7IHZhbHVlOm5hbWUgfSwgcmVzdWx0XSwgdHJ1ZSwgdW5kZWZpbmVkLCBwcm9wZXJ0eVNl
dENhbGxiYWNrLmJpbmQodGhpcykpOworCisgICAgICAgICAgICBSdW50aW1lQWdlbnQuY2FsbEZ1
bmN0aW9uT24odGhpcy5fb2JqZWN0SWQsIHNldFByb3BlcnR5VmFsdWUudG9TdHJpbmcoKSwgW3t2
YWx1ZTpuYW1lfSwgcmVzdWx0XSwgdHJ1ZSwgdW5kZWZpbmVkLCBwcm9wZXJ0eVNldENhbGxiYWNr
LmJpbmQodGhpcykpOworCiAgICAgICAgICAgICBpZiAocmVzdWx0Ll9vYmplY3RJZCkKICAgICAg
ICAgICAgICAgICBSdW50aW1lQWdlbnQucmVsZWFzZU9iamVjdChyZXN1bHQuX29iamVjdElkKTsK
ICAgICAgICAgfQpAQCAtMzc5LDMxICszMTMsMjcgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IgfHwgcmVzdWx0
LmRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIH0KLSAgICB9LAotCi0gICAgX2lzU3lt
Ym9sOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSA9PT0gInN5
bWJvbCI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc0FycmF5OiBmdW5jdGlvbigpCisgICAgaXNB
cnJheSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fc3VidHlwZSA9PT0gImFycmF5IjsK
LSAgICB9LAorICAgIH0KIAotICAgIGlzQ29sbGVjdGlvblR5cGU6IGZ1bmN0aW9uKCkKKyAgICBp
c0NvbGxlY3Rpb25UeXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdWJ0eXBlID09
PSAibWFwIiB8fCB0aGlzLl9zdWJ0eXBlID09PSAic2V0IiB8fCB0aGlzLl9zdWJ0eXBlID09PSAi
d2Vha21hcCI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc1dlYWtDb2xsZWN0aW9uOiBmdW5jdGlv
bigpCisgICAgaXNXZWFrQ29sbGVjdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
c3VidHlwZSA9PT0gIndlYWttYXAiOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0Q29sbGVjdGlv
bkVudHJpZXM6IGZ1bmN0aW9uKHN0YXJ0LCBudW1iZXJUb0ZldGNoLCBjYWxsYmFjaykKKyAgICBn
ZXRDb2xsZWN0aW9uRW50cmllcyhzdGFydCwgbnVtYmVyVG9GZXRjaCwgY2FsbGJhY2spCiAgICAg
ewogICAgICAgICBzdGFydCA9IHR5cGVvZiBzdGFydCA9PT0gIm51bWJlciIgPyBzdGFydCA6IDA7
CiAgICAgICAgIG51bWJlclRvRmV0Y2ggPSB0eXBlb2YgbnVtYmVyVG9GZXRjaCA9PT0gIm51bWJl
ciIgPyBudW1iZXJUb0ZldGNoIDogMTAwOwpAQCAtNDIxLDI0ICszNTEsMjQgQEAgV2ViSW5zcGVj
dG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlbnRyaWVzID0gZW50
cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsgcmV0dXJuIFdlYkluc3BlY3Rvci5Db2xsZWN0aW9u
RW50cnkuZnJvbVBheWxvYWQoZW50cnkpOyB9KTsKICAgICAgICAgICAgIGNhbGxiYWNrKGVudHJp
ZXMpOwogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlbGVhc2VXZWFrQ29sbGVj
dGlvbkVudHJpZXM6IGZ1bmN0aW9uKCkKKyAgICByZWxlYXNlV2Vha0NvbGxlY3Rpb25FbnRyaWVz
KCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuaXNXZWFrQ29sbGVjdGlvbigp
KTsKIAogICAgICAgICBSdW50aW1lQWdlbnQucmVsZWFzZU9iamVjdEdyb3VwKHRoaXMuX3dlYWtD
b2xsZWN0aW9uT2JqZWN0R3JvdXAoKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwdXNoTm9kZVRv
RnJvbnRlbmQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHB1c2hOb2RlVG9Gcm9udGVuZChjYWxs
YmFjaykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9vYmplY3RJZCkKICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5wdXNoTm9kZVRvRnJvbnRlbmQodGhpcy5fb2JqZWN0
SWQsIGNhbGxiYWNrKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2FsbGJhY2soMCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBjYWxsRnVuY3Rpb246IGZ1bmN0aW9uKGZ1bmN0aW9uRGVjbGFy
YXRpb24sIGFyZ3MsIGdlbmVyYXRlUHJldmlldywgY2FsbGJhY2spCisgICAgY2FsbEZ1bmN0aW9u
KGZ1bmN0aW9uRGVjbGFyYXRpb24sIGFyZ3MsIGdlbmVyYXRlUHJldmlldywgY2FsbGJhY2spCiAg
ICAgewogICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGVycm9yLCByZXN1bHQsIHdhc1Rocm93
bikKICAgICAgICAgewpAQCAtNDUwLDkgKzM4MCw5IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgYXJncyA9IGFyZ3MubWFwKFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QuY3JlYXRlQ2FsbEFyZ3VtZW50KTsKIAogICAgICAgICBSdW50aW1lQWdl
bnQuY2FsbEZ1bmN0aW9uT24odGhpcy5fb2JqZWN0SWQsIGZ1bmN0aW9uRGVjbGFyYXRpb24udG9T
dHJpbmcoKSwgYXJncywgdHJ1ZSwgdW5kZWZpbmVkLCBnZW5lcmF0ZVByZXZpZXcsIG15Y2FsbGJh
Y2spOwotICAgIH0sCisgICAgfQogCi0gICAgY2FsbEZ1bmN0aW9uSlNPTjogZnVuY3Rpb24oZnVu
Y3Rpb25EZWNsYXJhdGlvbiwgYXJncywgY2FsbGJhY2spCisgICAgY2FsbEZ1bmN0aW9uSlNPTihm
dW5jdGlvbkRlY2xhcmF0aW9uLCBhcmdzLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGZ1bmN0
aW9uIG15Y2FsbGJhY2soZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKQogICAgICAgICB7CkBAIC00
NjAsOSArMzkwLDkgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIH0KIAogICAgICAgICBSdW50aW1lQWdlbnQuY2FsbEZ1bmN0aW9uT24odGhpcy5fb2Jq
ZWN0SWQsIGZ1bmN0aW9uRGVjbGFyYXRpb24udG9TdHJpbmcoKSwgYXJncywgdHJ1ZSwgdHJ1ZSwg
bXljYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAgICAgCi0gICAgaW52b2tlR2V0dGVyOiBmdW5j
dGlvbihnZXR0ZXJSZW1vdGVPYmplY3QsIGNhbGxiYWNrKQorICAgIGludm9rZUdldHRlcihnZXR0
ZXJSZW1vdGVPYmplY3QsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
Z2V0dGVyUmVtb3RlT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCk7
CiAKQEAgLTQ3Miw0MCArNDAyLDM3IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5jYWxsRnVuY3Rpb24oYmFja2VuZElu
dm9rZUdldHRlciwgW2dldHRlclJlbW90ZU9iamVjdF0sIHRydWUsIGNhbGxiYWNrKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24ocHJvcGVy
dHlOYW1lLCBjYWxsYmFjaykKKyAgICBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvcGVydHlO
YW1lLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICghUnVudGltZUFnZW50LmdldE93blBy
b3BlcnR5RGVzY3JpcHRvcikgewotICAgICAgICAgICAgZnVuY3Rpb24gYmFja2VuZEdldE93blBy
b3BlcnR5RGVzY3JpcHRvcihwcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRoaXNbcHJvcGVydHlOYW1lXTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgZnVuY3Rpb24gd3JhcHBlZENhbGxiYWNrKGVycm9yLCByZXN1bHQsIHdhc1Rocm93bikK
LSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoZXJyb3IgfHwgd2FzVGhyb3duIHx8
ICEocmVzdWx0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uIGJhY2tlbmRHZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IocHJvcGVydHlOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gdGhpc1twcm9wZXJ0eU5hbWVdOworICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICB2YXIg
ZmFrZURlc2NyaXB0b3IgPSB7bmFtZTogcHJvcGVydHlOYW1lLCB2YWx1ZTogcmVzdWx0LCB3cml0
YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZX07Ci0gICAg
ICAgICAgICAgICAgdmFyIGZha2VQcm9wZXJ0eURlc2NyaXB0b3IgPSBuZXcgV2ViSW5zcGVjdG9y
LlByb3BlcnR5RGVzY3JpcHRvcihmYWtlRGVzY3JpcHRvciwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soZmFrZVByb3BlcnR5RGVzY3JpcHRvcik7
CisgICAgICAgIGZ1bmN0aW9uIHdyYXBwZWRDYWxsYmFjayhlcnJvciwgcmVzdWx0LCB3YXNUaHJv
d24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJvciB8fCB3YXNUaHJvd24gfHwgIShy
ZXN1bHQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KSkgeworICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIH0KIAotICAgICAgICAgICAgdGhpcy5jYWxsRnVuY3Rpb24oYmFja2VuZEdldE93blByb3Bl
cnR5RGVzY3JpcHRvciwgW3Byb3BlcnR5TmFtZV0sIGZhbHNlLCB3cmFwcGVkQ2FsbGJhY2spOwor
ICAgICAgICAgICAgdmFyIGZha2VEZXNjcmlwdG9yID0ge25hbWU6IHByb3BlcnR5TmFtZSwgdmFs
dWU6IHJlc3VsdCwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgZW51bWVyYWJs
ZTogZmFsc2V9OworICAgICAgICAgICAgdmFyIGZha2VQcm9wZXJ0eURlc2NyaXB0b3IgPSBuZXcg
V2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvcihmYWtlRGVzY3JpcHRvciwgdHJ1ZSwgZmFs
c2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBjYWxsYmFjayhmYWtlUHJvcGVydHlEZXNj
cmlwdG9yKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYSByZWFs
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcj8KLSAgICB9LAorICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IGEgcmVhbCBSdW50aW1lQWdlbnQuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPworICAg
ICAgICB0aGlzLmNhbGxGdW5jdGlvbihiYWNrZW5kR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBb
cHJvcGVydHlOYW1lXSwgZmFsc2UsIHdyYXBwZWRDYWxsYmFjayk7CisgICAgfQogCi0gICAgcmVs
ZWFzZTogZnVuY3Rpb24oKQorICAgIHJlbGVhc2UoKQogICAgIHsKICAgICAgICAgUnVudGltZUFn
ZW50LnJlbGVhc2VPYmplY3QodGhpcy5fb2JqZWN0SWQpOwotICAgIH0sCisgICAgfQogCi0gICAg
YXJyYXlMZW5ndGg6IGZ1bmN0aW9uKCkKKyAgICBhcnJheUxlbmd0aCgpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fc3VidHlwZSAhPT0gImFycmF5IikKICAgICAgICAgICAgIHJldHVybiAwOwpA
QCAtNTE1LDMyICs0NDIsMTE2IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgcmV0dXJuIHBhcnNlSW50KG1h
dGNoZXNbMV0sIDEwKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFzQ2FsbEFyZ3VtZW50OiBmdW5j
dGlvbigpCisgICAgYXNDYWxsQXJndW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QuY3JlYXRlQ2FsbEFyZ3VtZW50KHRoaXMpOwotICAgIH0sCisg
ICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3dlYWtDb2xsZWN0aW9uT2JqZWN0R3JvdXA6
IGZ1bmN0aW9uKCkKKyAgICBfaXNTeW1ib2woKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3R5cGUgPT09ICJzeW1ib2wiOworICAgIH0KKworICAgIF93ZWFrQ29sbGVjdGlvbk9iamVjdEdy
b3VwKCkKICAgICB7CiAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLl9vYmplY3RJ
ZCkgKyAiLVdlYWtNYXAiOwogICAgIH0KLX07CiAKLVdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQ
cm9wZXJ0eSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBkZXNjcmlwdG9yKQotewotICAgIHRoaXMu
bmFtZSA9IG5hbWU7Ci0gICAgdGhpcy52YWx1ZSA9IHZhbHVlOwotICAgIHRoaXMuZW51bWVyYWJs
ZSA9IGRlc2NyaXB0b3IgPyAhIWRlc2NyaXB0b3IuZW51bWVyYWJsZSA6IHRydWU7Ci0gICAgdGhp
cy53cml0YWJsZSA9IGRlc2NyaXB0b3IgPyAhIWRlc2NyaXB0b3Iud3JpdGFibGUgOiB0cnVlOwot
ICAgIGlmIChkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3Iud2FzVGhyb3duKQotICAgICAgICB0aGlz
Lndhc1Rocm93biA9IHRydWU7CisgICAgX2dldFByb3BlcnR5RGVzY3JpcHRvcnMob3duUHJvcGVy
dGllcywgY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX29iamVjdElkIHx8IHRo
aXMuX2lzU3ltYm9sKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFtdKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRQcm9wZXJ0aWVz
KHRoaXMuX29iamVjdElkLCBvd25Qcm9wZXJ0aWVzLCB0cnVlLCB0aGlzLl9nZXRQcm9wZXJ0eURl
c2NyaXB0b3JzUmVzb2x2ZXIuYmluZCh0aGlzLCBjYWxsYmFjaykpOworICAgIH0KKworICAgIF9n
ZXRQcm9wZXJ0eURlc2NyaXB0b3JzUmVzb2x2ZXIoY2FsbGJhY2ssIGVycm9yLCBwcm9wZXJ0aWVz
LCBpbnRlcm5hbFByb3BlcnRpZXMpCisgICAgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIGRlc2NyaXB0b3JzID0gcHJvcGVydGllcy5tYXAoZnVuY3Rpb24ocGF5bG9h
ZCkgeworICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3Iu
ZnJvbVBheWxvYWQocGF5bG9hZCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlmIChpbnRlcm5h
bFByb3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0b3JzID0gZGVzY3JpcHRvcnMuY29u
Y2F0KGludGVybmFsUHJvcGVydGllcy5tYXAoZnVuY3Rpb24ocGF5bG9hZCkgeworICAgICAgICAg
ICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yLmZyb21QYXlsb2Fk
KHBheWxvYWQsIHRydWUpOworICAgICAgICAgICAgfSkpOworICAgICAgICB9CisKKyAgICAgICAg
Y2FsbGJhY2soZGVzY3JpcHRvcnMpOworICAgIH0KKworICAgIC8vIEZJWE1FOiBQaGFzZSBvdXQg
dGhlc2UgZGVwcmVjYXRlZCBmdW5jdGlvbnMuIFRoZXkgcmV0dXJuIERlcHJlY2F0ZWRSZW1vdGVP
YmplY3RQcm9wZXJ0eSBpbnN0ZWFkIG9mIFByb3BlcnR5RGVzY3JpcHRvcnMuCisgICAgX2RlcHJl
Y2F0ZWRHZXRQcm9wZXJ0aWVzKG93blByb3BlcnRpZXMsIGNhbGxiYWNrKQorICAgIHsKKyAgICAg
ICAgaWYgKCF0aGlzLl9vYmplY3RJZCB8fCB0aGlzLl9pc1N5bWJvbCgpKSB7CisgICAgICAgICAg
ICBjYWxsYmFjayhbXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBSdW50aW1lQWdlbnQuZ2V0UHJvcGVydGllcyh0aGlzLl9vYmplY3RJZCwgb3duUHJvcGVydGll
cywgdGhpcy5fZGVwcmVjYXRlZEdldFByb3BlcnRpZXNSZXNvbHZlci5iaW5kKHRoaXMsIGNhbGxi
YWNrKSk7CisgICAgfQorCisgICAgX2RlcHJlY2F0ZWRHZXRQcm9wZXJ0aWVzUmVzb2x2ZXIoY2Fs
bGJhY2ssIGVycm9yLCBwcm9wZXJ0aWVzLCBpbnRlcm5hbFByb3BlcnRpZXMpCisgICAgeworICAg
ICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGludGVybmFsUHJvcGVydGllcykg
eworICAgICAgICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMuY29uY2F0KGludGVybmFsUHJv
cGVydGllcy5tYXAoZnVuY3Rpb24oZGVzY3JpcHRvcikgeworICAgICAgICAgICAgICAgIGRlc2Ny
aXB0b3Iud3JpdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOworICAgICAg
ICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yOworICAgICAgICAgICAgfSkpOworICAgICAgICB9
CisKKyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgcHJv
cGVydGllcyAmJiBpIDwgcHJvcGVydGllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFy
IHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5nZXQg
fHwgcHJvcGVydHkuc2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LmdldCkKKyAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IFdlYkluc3BlY3Rvci5EZXByZWNhdGVk
UmVtb3RlT2JqZWN0UHJvcGVydHkoImdldCAiICsgcHJvcGVydHkubmFtZSwgV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwcm9wZXJ0eS5nZXQpLCBwcm9wZXJ0eSkpOworICAg
ICAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5zZXQpCisgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dC5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuRGVwcmVjYXRlZFJlbW90ZU9iamVjdFByb3BlcnR5KCJz
ZXQgIiArIHByb3BlcnR5Lm5hbWUsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxv
YWQocHJvcGVydHkuc2V0KSwgcHJvcGVydHkpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuRGVwcmVjYXRlZFJlbW90ZU9i
amVjdFByb3BlcnR5KHByb3BlcnR5Lm5hbWUsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJv
bVBheWxvYWQocHJvcGVydHkudmFsdWUpLCBwcm9wZXJ0eSkpOworICAgICAgICB9CisKKyAgICAg
ICAgY2FsbGJhY2socmVzdWx0KTsKKyAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0UHJvcGVydHkuZnJvbVByaW1pdGl2ZVZhbHVlID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpCisv
LyBGSVhNRTogUGhhc2Ugb3V0IHRoaXMgZGVwcmVjYXRlZCBjbGFzcy4KK1dlYkluc3BlY3Rvci5E
ZXByZWNhdGVkUmVtb3RlT2JqZWN0UHJvcGVydHkgPSBjbGFzcyBEZXByZWNhdGVkUmVtb3RlT2Jq
ZWN0UHJvcGVydHkKIHsKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQ
cm9wZXJ0eShuYW1lLCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QcmltaXRpdmVWYWx1
ZSh2YWx1ZSkpOworICAgIGNvbnN0cnVjdG9yKG5hbWUsIHZhbHVlLCBkZXNjcmlwdG9yKQorICAg
IHsKKyAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVl
OworICAgICAgICB0aGlzLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yID8gISFkZXNjcmlwdG9yLmVu
dW1lcmFibGUgOiB0cnVlOworICAgICAgICB0aGlzLndyaXRhYmxlID0gZGVzY3JpcHRvciA/ICEh
ZGVzY3JpcHRvci53cml0YWJsZSA6IHRydWU7CisgICAgICAgIGlmIChkZXNjcmlwdG9yICYmIGRl
c2NyaXB0b3Iud2FzVGhyb3duKQorICAgICAgICAgICAgdGhpcy53YXNUaHJvd24gPSB0cnVlOwor
ICAgIH0KKworICAgIC8vIFN0YXRpYworCisgICAgZnJvbVByaW1pdGl2ZVZhbHVlKG5hbWUsIHZh
bHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVwcmVjYXRlZFJl
bW90ZU9iamVjdFByb3BlcnR5KG5hbWUsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBy
aW1pdGl2ZVZhbHVlKHZhbHVlKSk7CisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlcGxheU9ic2VydmVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVwbGF5T2JzZXJ2ZXIu
anMKaW5kZXggMmNhZGM2NjFjMzE2NGIwYjhiOTljMjlhM2E5NWUxYjEyZTUwNzZhZi4uZTBhODY3
MTlhOTQ5N2M3ZmYyMDcxNjBkMzRlY2UzNjEyZDJjNjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVwbGF5T2JzZXJ2ZXIuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVwbGF5T2Jz
ZXJ2ZXIuanMKQEAgLTI0LDEwMyArMjQsOTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24gPSBmdW5jdGlvbihz
ZWdtZW50T2Zmc2V0LCBpbnB1dE9mZnNldCkKKy8vIEZJWE1FOiBUaGlzIFJlcGxheVBvc2l0aW9u
IGNsYXNzIHNob3VsZG4ndCBiZSBoZXJlLCBubyBtYXR0ZXIgaG93IHNpbXBsZSBpdCBpcy4KK1dl
Ykluc3BlY3Rvci5SZXBsYXlQb3NpdGlvbiA9IGNsYXNzIFJlcGxheVBvc2l0aW9uCiB7Ci0gICAg
dGhpcy5zZWdtZW50T2Zmc2V0ID0gc2VnbWVudE9mZnNldDsKLSAgICB0aGlzLmlucHV0T2Zmc2V0
ID0gaW5wdXRPZmZzZXQ7Ci19OwotCi1XZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24uZnJvbVBy
b3RvY29sID0gZnVuY3Rpb24ocGF5bG9hZCkKLXsKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rv
ci5SZXBsYXlQb3NpdGlvbihwYXlsb2FkLnNlZ21lbnRPZmZzZXQsIHBheWxvYWQuaW5wdXRPZmZz
ZXQpOworICAgIGNvbnN0cnVjdG9yKHNlZ21lbnRPZmZzZXQsIGlucHV0T2Zmc2V0KQorICAgIHsK
KyAgICAgICAgdGhpcy5zZWdtZW50T2Zmc2V0ID0gc2VnbWVudE9mZnNldDsKKyAgICAgICAgdGhp
cy5pbnB1dE9mZnNldCA9IGlucHV0T2Zmc2V0OworICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5S
ZXBsYXlPYnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5SZXBsYXlPYnNlcnZlciA9
IGNsYXNzIFJlcGxheU9ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBh
IFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8g
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKKyAgICAvLyBFdmVudHMgZGVmaW5l
ZCBieSB0aGUgIlJlcGxheSIgZG9tYWluLgogCi1XZWJJbnNwZWN0b3IuUmVwbGF5T2JzZXJ2ZXIu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVwbGF5T2JzZXJ2
ZXIsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKLQotICAg
IGNhcHR1cmVTdGFydGVkOiBmdW5jdGlvbigpCisgICAgY2FwdHVyZVN0YXJ0ZWQoKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuY2FwdHVyZVN0YXJ0ZWQoKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIGNhcHR1cmVTdG9wcGVkOiBmdW5jdGlvbigpCisgICAgY2FwdHVy
ZVN0b3BwZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuY2Fw
dHVyZVN0b3BwZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHBsYXliYWNrU3RhcnRlZDogZnVu
Y3Rpb24oKQorICAgIHBsYXliYWNrU3RhcnRlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IucmVwbGF5TWFuYWdlci5wbGF5YmFja1N0YXJ0ZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHBsYXliYWNrSGl0UG9zaXRpb246IGZ1bmN0aW9uKHJlcGxheVBvc2l0aW9uLCB0aW1lc3RhbXAp
CisgICAgcGxheWJhY2tIaXRQb3NpdGlvbihyZXBsYXlQb3NpdGlvbiwgdGltZXN0YW1wKQogICAg
IHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucGxheWJhY2tIaXRQb3NpdGlv
bihXZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24uZnJvbVByb3RvY29sKHJlcGxheVBvc2l0aW9u
KSwgdGltZXN0YW1wKTsKLSAgICB9LAorICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdl
ci5wbGF5YmFja0hpdFBvc2l0aW9uKG5ldyBXZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24ocmVw
bGF5UG9zaXRpb24uc2VnbWVudE9mZnNldCwgcmVwbGF5UG9zaXRpb24uaW5wdXRPZmZzZXQpLCB0
aW1lc3RhbXApOworICAgIH0KIAotICAgIHBsYXliYWNrUGF1c2VkOiBmdW5jdGlvbihyZXBsYXlQ
b3NpdGlvbikKKyAgICBwbGF5YmFja1BhdXNlZChyZXBsYXlQb3NpdGlvbikKICAgICB7Ci0gICAg
ICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnBsYXliYWNrUGF1c2VkKFdlYkluc3BlY3Rv
ci5SZXBsYXlQb3NpdGlvbi5mcm9tUHJvdG9jb2wocmVwbGF5UG9zaXRpb24pKTsKLSAgICB9LAor
ICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5wbGF5YmFja1BhdXNlZChuZXcgV2Vi
SW5zcGVjdG9yLlJlcGxheVBvc2l0aW9uKHJlcGxheVBvc2l0aW9uLnNlZ21lbnRPZmZzZXQsIHJl
cGxheVBvc2l0aW9uLmlucHV0T2Zmc2V0KSk7CisgICAgfQogCi0gICAgcGxheWJhY2tGaW5pc2hl
ZDogZnVuY3Rpb24oKQorICAgIHBsYXliYWNrRmluaXNoZWQoKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucGxheWJhY2tGaW5pc2hlZCgpOwotICAgIH0sCisgICAg
fQogCi0gICAgaW5wdXRTdXBwcmVzc2lvbkNoYW5nZWQ6IGZ1bmN0aW9uKHdpbGxTdXBwcmVzcykK
KyAgICBpbnB1dFN1cHByZXNzaW9uQ2hhbmdlZCh3aWxsU3VwcHJlc3MpCiAgICAgewogICAgICAg
ICAvLyBOb3QgaGFuZGxlZCB5ZXQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBzZXNzaW9uQ3JlYXRl
ZDogZnVuY3Rpb24oc2Vzc2lvbklkKQorICAgIHNlc3Npb25DcmVhdGVkKHNlc3Npb25JZCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25DcmVhdGVkKHNl
c3Npb25JZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXNzaW9uTW9kaWZpZWQ6IGZ1bmN0aW9u
KHNlc3Npb25JZCkKKyAgICBzZXNzaW9uTW9kaWZpZWQoc2Vzc2lvbklkKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvbk1vZGlmaWVkKHNlc3Npb25JZCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXNzaW9uUmVtb3ZlZDogZnVuY3Rpb24oc2Vzc2lvbklk
KQorICAgIHNlc3Npb25SZW1vdmVkKHNlc3Npb25JZCkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25SZW1vdmVkKHNlc3Npb25JZCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBzZXNzaW9uTG9hZGVkOiBmdW5jdGlvbihzZXNzaW9uSWQpCisgICAgc2Vzc2lv
bkxvYWRlZChzZXNzaW9uSWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFu
YWdlci5zZXNzaW9uTG9hZGVkKHNlc3Npb25JZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWdt
ZW50Q3JlYXRlZDogZnVuY3Rpb24oc2VnbWVudElkKQorICAgIHNlZ21lbnRDcmVhdGVkKHNlZ21l
bnRJZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlZ21lbnRD
cmVhdGVkKHNlZ21lbnRJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWdtZW50UmVtb3ZlZDog
ZnVuY3Rpb24oc2VnbWVudElkKQorICAgIHNlZ21lbnRSZW1vdmVkKHNlZ21lbnRJZCkKICAgICB7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlZ21lbnRSZW1vdmVkKHNlZ21l
bnRJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWdtZW50Q29tcGxldGVkOiBmdW5jdGlvbihz
ZWdtZW50SWQpCisgICAgc2VnbWVudENvbXBsZXRlZChzZWdtZW50SWQpCiAgICAgewogICAgICAg
ICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZWdtZW50Q29tcGxldGVkKHNlZ21lbnRJZCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWdtZW50TG9hZGVkOiBmdW5jdGlvbihzZWdtZW50SWQp
CisgICAgc2VnbWVudExvYWRlZChzZWdtZW50SWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0
b3IucmVwbGF5TWFuYWdlci5zZWdtZW50TG9hZGVkKHNlZ21lbnRJZCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzZWdtZW50VW5sb2FkZWQ6IGZ1bmN0aW9uKCkKKyAgICBzZWdtZW50VW5sb2FkZWQo
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2VnbWVudFVubG9h
ZGVkKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpzCmluZGV4IDk2OWVkMjRh
YjM5ODM4NmI1NTM2ZDUwNTgxNDViN2Q4ZDBhOTlkYzEuLmUwOWJhYTQ4MGFhZTg3NTliOTNmYWI3
MDNkNjE4MjdjYjhmNjA3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIx
ICsyMywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5SdW50aW1lT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuUnVu
dGltZU9ic2VydmVyID0gY2xhc3MgUnVudGltZU9ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENv
bnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1
cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2Vi
SW5zcGVjdG9yLlJ1bnRpbWVPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFdlYkluc3BlY3Rvci5SdW50aW1lT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBi
eSB0aGUgIlJ1bnRpbWUiIGRvbWFpbi4KIAotICAgIGV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkOiBm
dW5jdGlvbihjb250ZXh0UGF5bG9hZCkKKyAgICBleGVjdXRpb25Db250ZXh0Q3JlYXRlZChjb250
ZXh0UGF5bG9hZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFu
YWdlci5leGVjdXRpb25Db250ZXh0Q3JlYXRlZChjb250ZXh0UGF5bG9hZCk7CiAgICAgfQogfTsK
LQotV2ViSW5zcGVjdG9yLlJ1bnRpbWVPYnNlcnZlci5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGltZWxpbmVPYnNlcnZlci5q
cwppbmRleCA5NTE0YmRlNDQwNjllZTg2ZmU2MTlkOGU0NmFmYWJiYjU2MDYxNmZiLi5hNmVjNGI1
ZmExYTJhMDYxMDczNTNjMzA1YmY0ZGI5Y2Q0ZjE0NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RpbWVsaW5l
T2JzZXJ2ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTIzLDMxICsyMywyMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZU9ic2VydmVyID0gZnVuY3Rpb24o
KQorV2ViSW5zcGVjdG9yLlRpbWVsaW5lT2JzZXJ2ZXIgPSBjbGFzcyBUaW1lbGluZU9ic2VydmVy
CiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qg
c3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5j
YWxsKHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lT2JzZXJ2ZXIucHJvdG90eXBl
ID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPYnNlcnZlciwKLQog
ICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiVGltZWxpbmUiIGRvbWFpbi4KIAotICAgIGV2
ZW50UmVjb3JkZWQ6IGZ1bmN0aW9uKHJlY29yZCkKKyAgICBldmVudFJlY29yZGVkKHJlY29yZCkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuZXZlbnRSZWNvcmRl
ZChyZWNvcmQpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVjb3JkaW5nU3RhcnRlZDogZnVuY3Rp
b24oKQorICAgIHJlY29yZGluZ1N0YXJ0ZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9y
LnRpbWVsaW5lTWFuYWdlci5jYXB0dXJpbmdTdGFydGVkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICByZWNvcmRpbmdTdG9wcGVkOiBmdW5jdGlvbigpCisgICAgcmVjb3JkaW5nU3RvcHBlZCgpCiAg
ICAgewogICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmNhcHR1cmluZ1N0b3Bw
ZWQoKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVPYnNlcnZlci5wcm90b3R5
cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249499</attachid>
            <date>2015-03-26 11:14:40 -0700</date>
            <delta_ts>2015-03-26 11:25:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Web-Inspector-Convert-Base-and-Protocol-files-to-ES6.patch</filename>
            <type>text/plain</type>
            <size>84310</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">RnJvbSAwNTE3ODAzNDJjNjNjNTU3Y2FlZmJmMjk4YjlhZTJjMWVhNTdhYmE1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBUaW1vdGh5IEhhdGNoZXIgPHRpbW90aHlAYXBwbGUuY29tPgpE
YXRlOiBUaHUsIDI2IE1hciAyMDE1IDExOjEwOjE1IC0wNzAwClN1YmplY3Q6IFtQQVRDSF0gV2Vi
IEluc3BlY3RvcjogQ29udmVydCBCYXNlIGFuZCBQcm90b2NvbCBmaWxlcyB0byBFUzYgY2xhc3Nl
cwogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzEwNgoKUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCgoqIFVzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVy
LmpzOgoqIFVzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyU2V0LmpzOgoqIFVzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLmpzOgoqIFVzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanM6CiogVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25z
b2xlT2JzZXJ2ZXIuanM6CiogVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qczoK
KiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTVN0b3JhZ2VPYnNlcnZlci5qczoKKiBVc2VySW50
ZXJmYWNlL1Byb3RvY29sL0RhdGFiYXNlT2JzZXJ2ZXIuanM6CiogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzOgoqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yQmFja2VuZC5qczoKKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rvck9ic2VydmVy
LmpzOgoqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGF5ZXJUcmVlT2JzZXJ2ZXIuanM6CiogVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9NZXNzYWdlRGlzcGF0Y2hlci5qczoKKiBVc2VySW50ZXJmYWNl
L1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qczoKKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1Bh
Z2VPYnNlcnZlci5qczoKKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qczoK
KiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlcGxheU9ic2VydmVyLmpzOgoqIFVzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpzOgoqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
VGltZWxpbmVPYnNlcnZlci5qczoKQ29udmVydGVkIHRvIEVTNiBjbGFzc2VzIHdoZXJlIHBvc3Np
YmxlLgotLS0KIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgIHwgIDI4ICsrCiAuLi4vVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXIuanMgICAg
ICAgICAgICB8ICAyNSArLQogLi4uL1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyU2V0
LmpzICAgICAgICAgfCAgMzggKy0KIC4uLi9Qcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2
ZXIuanMgICAgICAgICAgIHwgIDE5ICstCiAuLi4vVXNlckludGVyZmFjZS9Qcm90b2NvbC9DU1NP
YnNlcnZlci5qcyAgICAgICAgICB8ICA1MSArLS0KIC4uLi9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0NvbnNvbGVPYnNlcnZlci5qcyAgICAgIHwgIDIzICstCiAuLi4vVXNlckludGVyZmFjZS9Qcm90
b2NvbC9ET01PYnNlcnZlci5qcyAgICAgICAgICB8ICA1NSArLS0KIC4uLi9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL0RPTVN0b3JhZ2VPYnNlcnZlci5qcyAgIHwgIDMyICstCiAuLi4vVXNlckludGVy
ZmFjZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzICAgICB8ICAyNSArLQogLi4uL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcyAgICAgfCAgNDMgKy0KIC4uLi9V
c2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMgICAgIHwgMTc4ICsrKyst
LS0tCiAuLi4vVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcyAgICB8
ICAyNyArLQogLi4uL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGF5ZXJUcmVlT2JzZXJ2ZXIuanMg
ICAgfCAgMTcgKy0KIC4uLi9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01lc3NhZ2VEaXNwYXRjaGVy
LmpzICAgIHwgIDIwICstCiAuLi4vVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2
ZXIuanMgICAgICB8ICA2NyArKy0KIC4uLi9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNl
cnZlci5qcyAgICAgICAgIHwgIDU1ICstLQogLi4uL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVt
b3RlT2JqZWN0LmpzICAgICAgICAgfCA1MDcgKysrKysrKysrKystLS0tLS0tLS0tCiAuLi4vVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9SZXBsYXlPYnNlcnZlci5qcyAgICAgICB8ICA5MSArKy0tCiAu
Li4vVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIuanMgICAgICB8ICAxNSAr
LQogLi4uL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGltZWxpbmVPYnNlcnZlci5qcyAgICAgfCAg
MjMgKy0KIDIwIGZpbGVzIGNoYW5nZWQsIDY0MiBpbnNlcnRpb25zKCspLCA2OTcgZGVsZXRpb25z
KC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggNTYzNmE3OS4uMzIyM2EzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTUtMDMtMjYgIFRpbW90aHkg
SGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IENv
bnZlcnQgQmFzZSBhbmQgUHJvdG9jb2wgZmlsZXMgdG8gRVM2IGNsYXNzZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzEwNgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNl
L0V2ZW50TGlzdGVuZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlz
dGVuZXJTZXQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9BcHBsaWNhdGlv
bkNhY2hlT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9DU1NP
YnNlcnZlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0NvbnNvbGVPYnNl
cnZlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NU3RvcmFnZU9ic2VydmVyLmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanM6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9MYXllclRyZWVPYnNlcnZlci5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL01lc3NhZ2VEaXNwYXRjaGVyLmpzOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvUmVwbGF5T2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Q
cm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzOgorICAgICAgICBDb252ZXJ0ZWQgdG8gRVM2IGNsYXNz
ZXMgd2hlcmUgcG9zc2libGUuCisKIDIwMTUtMDMtMjQgIFRvYmlhcyBSZWlzcyAgPHRvYmkrd2Vi
a2l0QGJhc2Vjb2RlLmRlPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJFR1JFU1NJT04gKHIx
NzkyODYpOiBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogc2VsZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRM
aXN0ZW5lci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZl
bnRMaXN0ZW5lci5qcwppbmRleCAxMGYxNzU0Li4wYmNiMDk5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyLmpz
CkBAIC0xLDYgKzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgVW5p
dmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjQsMTYgKzI0LDE5IEBACiAgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyID0gZnVuY3Rpb24odGhpc09iamVjdCwgZmly
ZU9uY2UpCitXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lciA9IGNsYXNzIEV2ZW50TGlzdGVuZXIK
IHsKLSAgICB0aGlzLl90aGlzT2JqZWN0ID0gdGhpc09iamVjdDsKLSAgICB0aGlzLl9lbWl0dGVy
ID0gbnVsbDsKLSAgICB0aGlzLl9jYWxsYmFjayA9IG51bGw7Ci0gICAgdGhpcy5fZmlyZU9uY2Ug
PSBmaXJlT25jZTsKLX07CisgICAgY29uc3RydWN0b3IodGhpc09iamVjdCwgZmlyZU9uY2UpCisg
ICAgeworICAgICAgICB0aGlzLl90aGlzT2JqZWN0ID0gdGhpc09iamVjdDsKKyAgICAgICAgdGhp
cy5fZW1pdHRlciA9IG51bGw7CisgICAgICAgIHRoaXMuX2NhbGxiYWNrID0gbnVsbDsKKyAgICAg
ICAgdGhpcy5fZmlyZU9uY2UgPSBmaXJlT25jZTsKKyAgICB9CiAKLVdlYkluc3BlY3Rvci5FdmVu
dExpc3RlbmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25uZWN0OiBmdW5jdGlvbihlbWl0dGVyLCB0
eXBlLCBjYWxsYmFjaywgdXNlc0NhcHR1cmUpCisgICAgLy8gUHVibGljCisKKyAgICBjb25uZWN0
KGVtaXR0ZXIsIHR5cGUsIGNhbGxiYWNrLCB1c2VzQ2FwdHVyZSkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCF0aGlzLl9lbWl0dGVyICYmICF0aGlzLl9jYWxsYmFjaywgIkV2ZW50TGlz
dGVuZXIgYWxyZWFkeSBib3VuZCB0byBhIGNhbGxiYWNrLiIsIHRoaXMpOwogICAgICAgICBjb25z
b2xlLmFzc2VydChjYWxsYmFjaywgIk1pc3NpbmcgY2FsbGJhY2sgZm9yIGV2ZW50OiAiICsgdHlw
ZSk7CkBAIC02NCw5ICs2Nyw5IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2VtaXR0ZXIuYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl90
eXBlLCB0aGlzLl9jYWxsYmFjaywgdGhpcy5fdXNlc0NhcHR1cmUpOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB0aGlzLl9lbWl0dGVyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fdHlwZSwgdGhp
cy5fY2FsbGJhY2ssIHRoaXMuX3RoaXNPYmplY3QpOwotICAgIH0sCisgICAgfQogCi0gICAgZGlz
Y29ubmVjdDogZnVuY3Rpb24oKQorICAgIGRpc2Nvbm5lY3QoKQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fZW1pdHRlciAmJiB0aGlzLl9jYWxsYmFjaywgIkV2ZW50TGlzdGVu
ZXIgaXMgbm90IGJvdW5kIHRvIGEgY2FsbGJhY2suIiwgdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lclNldC5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5l
clNldC5qcwppbmRleCA0MGQyY2RkLi5hYTRmNTBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXJTZXQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyU2V0Lmpz
CkBAIC0xLDYgKzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgVW5p
dmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTcgKzI4LDIxIEBACiAvLyBBZGQgRE9NIG9yIEluc3Bl
Y3RvciBldmVudCBsaXN0ZW5lcnMgdG8gdGhlIHNldCB1c2luZyBgcmVnaXN0ZXIoKWAuCiAvLyBV
c2UgYGluc3RhbGwoKWAgYW5kIGB1bmluc3RhbGwoKWAgdG8gZW5hYmxlIG9yIGRpc2FibGUgYWxs
IGxpc3RlbmVycwogLy8gaW4gdGhlIHNldCBhdCBvbmNlLgotV2ViSW5zcGVjdG9yLkV2ZW50TGlz
dGVuZXJTZXQgPSBmdW5jdGlvbihkZWZhdWx0VGhpc09iamVjdCwgbmFtZSkKKworV2ViSW5zcGVj
dG9yLkV2ZW50TGlzdGVuZXJTZXQgPSBjbGFzcyBFdmVudExpc3RlbmVyU2V0CiB7Ci0gICAgdGhp
cy5uYW1lID0gbmFtZTsKLSAgICB0aGlzLl9kZWZhdWx0VGhpc09iamVjdCA9IGRlZmF1bHRUaGlz
T2JqZWN0OworICAgIGNvbnN0cnVjdG9yKGRlZmF1bHRUaGlzT2JqZWN0LCBuYW1lKQorICAgIHsK
KyAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy5fZGVmYXVsdFRoaXNPYmpl
Y3QgPSBkZWZhdWx0VGhpc09iamVjdDsKKworICAgICAgICB0aGlzLl9saXN0ZW5lcnMgPSBbXTsK
KyAgICAgICAgdGhpcy5faW5zdGFsbGVkID0gZmFsc2U7CisgICAgfQogCi0gICAgdGhpcy5fbGlz
dGVuZXJzID0gW107Ci0gICAgdGhpcy5faW5zdGFsbGVkID0gZmFsc2U7Ci19CisgICAgLy8gUHVi
bGljCiAKLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2V0LnByb3RvdHlwZSA9IHsKLSAgICBy
ZWdpc3RlcjogZnVuY3Rpb24oZW1pdHRlciwgdHlwZSwgY2FsbGJhY2ssIHRoaXNPYmplY3QsIHVz
ZXNDYXB0dXJlKQorICAgIHJlZ2lzdGVyKGVtaXR0ZXIsIHR5cGUsIGNhbGxiYWNrLCB0aGlzT2Jq
ZWN0LCB1c2VzQ2FwdHVyZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNhbGxiYWNr
LCAiTWlzc2luZyBjYWxsYmFjayBmb3IgZXZlbnQ6ICIgKyB0eXBlKTsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQodHlwZSwgIlRyaWVkIHRvIHJlZ2lzdGVyIGxpc3RlbmVyIGZvciB1bmtub3duIGV2
ZW50OiAiICsgdHlwZSk7CkBAIC00OSwxNiArNTMsMTYgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlz
dGVuZXJTZXQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRo
aXMuX2xpc3RlbmVycy5wdXNoKHtsaXN0ZW5lcjogbmV3IFdlYkluc3BlY3Rvci5FdmVudExpc3Rl
bmVyKHRoaXNPYmplY3QgfHwgdGhpcy5fZGVmYXVsdFRoaXNPYmplY3QpLCBlbWl0dGVyLCB0eXBl
LCBjYWxsYmFjaywgdXNlc0NhcHR1cmV9KTsKLSAgICB9LAorICAgIH0KIAotICAgIHVucmVnaXN0
ZXI6IGZ1bmN0aW9uKCkKKyAgICB1bnJlZ2lzdGVyKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlz
Ll9pbnN0YWxsZWQpCiAgICAgICAgICAgICB0aGlzLnVuaW5zdGFsbCgpOwogICAgICAgICB0aGlz
Ll9saXN0ZW5lcnMgPSBbXTsKLSAgICB9LAorICAgIH0KIAotICAgIGluc3RhbGw6IGZ1bmN0aW9u
KCkKKyAgICBpbnN0YWxsKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9p
bnN0YWxsZWQsICJBbHJlYWR5IGluc3RhbGxlZCBsaXN0ZW5lciBncm91cDogIiArIHRoaXMubmFt
ZSk7CiAgICAgICAgIGlmICh0aGlzLl9pbnN0YWxsZWQpCkBAIC02OCw5ICs3Miw5IEBAIFdlYklu
c3BlY3Rvci5FdmVudExpc3RlbmVyU2V0LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmb3IgKHZh
ciBkYXRhIG9mIHRoaXMuX2xpc3RlbmVycykKICAgICAgICAgICAgIGRhdGEubGlzdGVuZXIuY29u
bmVjdChkYXRhLmVtaXR0ZXIsIGRhdGEudHlwZSwgZGF0YS5jYWxsYmFjaywgZGF0YS51c2VzQ2Fw
dHVyZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1bmluc3RhbGw6IGZ1bmN0aW9uKHVucmVnaXN0
ZXJMaXN0ZW5lcnMpCisgICAgdW5pbnN0YWxsKHVucmVnaXN0ZXJMaXN0ZW5lcnMpCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9pbnN0YWxsZWQsICJUcnlpbmcgdG8gdW5pbnN0
YWxsIGxpc3RlbmVyIGdyb3VwICIgKyB0aGlzLm5hbWUgKyAiLCBidXQgaXQgaXNuJ3QgaW5zdGFs
bGVkLiIpOwogICAgICAgICBpZiAoIXRoaXMuX2luc3RhbGxlZCkKQEAgLTgzLDUgKzg3LDUgQEAg
V2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJTZXQucHJvdG90eXBlID0gewogCiAgICAgICAgIGlm
ICh1bnJlZ2lzdGVyTGlzdGVuZXJzKQogICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJzID0gW107
Ci0gICAgfSwKLX0KKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQXBwbGljYXRpb25DYWNo
ZU9ic2VydmVyLmpzCmluZGV4IGVkZTBiNzAuLmQ4MDM4NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNl
cnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDI2ICsyMywxNyBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlv
bkNhY2hlT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNo
ZU9ic2VydmVyID0gY2xhc3MgQXBwbGljYXRpb25DYWNoZU9ic2VydmVyCiB7Ci0gICAgLy8gRklY
TUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBj
YWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsK
LQotV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIsCi0K
ICAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIkFwcGxpY2F0aW9uQ2FjaGUiIGRvbWFpbi4K
IAotICAgIGFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNVcGRhdGVkOiBmdW5jdGlvbihmcmFtZUlkLCBt
YW5pZmVzdFVSTCwgc3RhdHVzKQorICAgIGFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNVcGRhdGVkKGZy
YW1lSWQsIG1hbmlmZXN0VVJMLCBzdGF0dXMpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iu
YXBwbGljYXRpb25DYWNoZU1hbmFnZXIuYXBwbGljYXRpb25DYWNoZVN0YXR1c1VwZGF0ZWQoZnJh
bWVJZCwgbWFuaWZlc3RVUkwsIHN0YXR1cyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBuZXR3b3Jr
U3RhdGVVcGRhdGVkOiBmdW5jdGlvbihpc05vd09ubGluZSkKKyAgICBuZXR3b3JrU3RhdGVVcGRh
dGVkKGlzTm93T25saW5lKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyLm5ldHdvcmtTdGF0ZVVwZGF0ZWQoaXNOb3dPbmxpbmUpOwogICAgIH0KIH07
Ci0KLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DU1NPYnNlcnZlci5q
cwppbmRleCBjMDk0ZTI0Li4wOWFjOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DU1NPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9DU1NPYnNlcnZlci5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNjcg
KzIzLDU4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLkNTU09ic2VydmVyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkNTU09ic2Vy
dmVyID0gY2xhc3MgQ1NTT2JzZXJ2ZXIKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRv
IGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAv
LyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuQ1NT
T2JzZXJ2ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQ1NT
T2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIkNTUyIgZG9tYWluLgog
Ci0gICAgbWVkaWFRdWVyeVJlc3VsdENoYW5nZWQ6IGZ1bmN0aW9uKCkKKyAgICBtZWRpYVF1ZXJ5
UmVzdWx0Q2hhbmdlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuY3NzU3R5bGVNYW5h
Z2VyLm1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzdHls
ZVNoZWV0Q2hhbmdlZDogZnVuY3Rpb24oc3R5bGVTaGVldElkKQorICAgIHN0eWxlU2hlZXRDaGFu
Z2VkKHN0eWxlU2hlZXRJZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NTdHlsZU1h
bmFnZXIuc3R5bGVTaGVldENoYW5nZWQoc3R5bGVTaGVldElkKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHN0eWxlU2hlZXRBZGRlZDogZnVuY3Rpb24oaGVhZGVyKQorICAgIHN0eWxlU2hlZXRBZGRl
ZChoZWFkZXIpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLiA8cmRh
cjovL3Byb2JsZW0vMTMyMTM2ODA+Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzdHlsZVNoZWV0UmVt
b3ZlZDogZnVuY3Rpb24oaGVhZGVyKQorICAgIHN0eWxlU2hlZXRSZW1vdmVkKGhlYWRlcikKICAg
ICB7CiAgICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuIDxyZGFyOi8vcHJvYmxlbS8x
MzIxMzY4MD4KLSAgICB9LAorICAgIH0KIAotICAgIG5hbWVkRmxvd0NyZWF0ZWQ6IGZ1bmN0aW9u
KG5hbWVkRmxvdykKKyAgICBuYW1lZEZsb3dDcmVhdGVkKG5hbWVkRmxvdykKICAgICB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5uYW1lZEZsb3dDcmVhdGVkKG5hbWVkRmxv
dyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBuYW1lZEZsb3dSZW1vdmVkOiBmdW5jdGlvbihkb2N1
bWVudE5vZGVJZCwgZmxvd05hbWUpCisgICAgbmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJ
ZCwgZmxvd05hbWUpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIu
bmFtZWRGbG93UmVtb3ZlZChkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUpOwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDcpOiByZWdpb25MYXlvdXRVcGRhdGVkIHdh
cyByZW1vdmVkIGFuZCByZXBsYWNlZCBieSByZWdpb25PdmVyc2V0Q2hhbmdlZC4KLSAgICByZWdp
b25MYXlvdXRVcGRhdGVkOiBmdW5jdGlvbihuYW1lZEZsb3cpCisgICAgcmVnaW9uTGF5b3V0VXBk
YXRlZChuYW1lZEZsb3cpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFn
ZXIucmVnaW9uTGF5b3V0VXBkYXRlZChuYW1lZEZsb3cpOwotICAgIH0sCisgICAgfQogCi0gICAg
cmVnaW9uT3ZlcnNldENoYW5nZWQ6IGZ1bmN0aW9uKG5hbWVkRmxvdykKKyAgICByZWdpb25PdmVy
c2V0Q2hhbmdlZChuYW1lZEZsb3cpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJl
ZU1hbmFnZXIucmVnaW9uT3ZlcnNldENoYW5nZWQobmFtZWRGbG93KTsKLSAgICB9LAorICAgIH0K
IAotICAgIHJlZ2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudDogZnVuY3Rpb24oZG9jdW1l
bnROb2RlSWQsIGZsb3dOYW1lLCBjb250ZW50Tm9kZUlkLCBuZXh0Q29udGVudEVsZW1lbnROb2Rl
SWQpCisgICAgcmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KGRvY3VtZW50Tm9kZUlk
LCBmbG93TmFtZSwgY29udGVudE5vZGVJZCwgbmV4dENvbnRlbnRFbGVtZW50Tm9kZUlkKQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnJlZ2lzdGVyZWROYW1lZEZs
b3dDb250ZW50RWxlbWVudChkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUsIGNvbnRlbnROb2RlSWQs
IG5leHRDb250ZW50RWxlbWVudE5vZGVJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1bnJlZ2lz
dGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudDogZnVuY3Rpb24oZG9jdW1lbnROb2RlSWQsIGZs
b3dOYW1lLCBjb250ZW50Tm9kZUlkKQorICAgIHVucmVnaXN0ZXJlZE5hbWVkRmxvd0NvbnRlbnRF
bGVtZW50KGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSwgY29udGVudE5vZGVJZCkKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci51bnJlZ2lzdGVyZWROYW1lZEZsb3dD
b250ZW50RWxlbWVudChkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUsIGNvbnRlbnROb2RlSWQpOwog
ICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5DU1NPYnNlcnZlci5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25zb2xlT2JzZXJ2ZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9Db25zb2xlT2JzZXJ2
ZXIuanMKaW5kZXggOTc1OTUzZS4uY2ZjMmZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NvbnNvbGVPYnNlcnZl
ci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsMTggKzIzLDExIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYklu
c3BlY3Rvci5Db25zb2xlT2JzZXJ2ZXIgPSBjbGFzcyBDb25zb2xlT2JzZXJ2ZXIKIHsKLSAgICAv
LyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywg
YW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
Ci19OwotCi1XZWJJbnNwZWN0b3IuQ29uc29sZU9ic2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBj
b25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZlciwKLQogICAgIC8vIEV2ZW50
cyBkZWZpbmVkIGJ5IHRoZSAiQ29uc29sZSIgZG9tYWluLgogCi0gICAgbWVzc2FnZUFkZGVkOiBm
dW5jdGlvbihtZXNzYWdlKQorICAgIG1lc3NhZ2VBZGRlZChtZXNzYWdlKQogICAgIHsKICAgICAg
ICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gImFzc2VydCIgJiYgIW1lc3NhZ2UudGV4dCkKICAgICAg
ICAgICAgIG1lc3NhZ2UudGV4dCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiQXNzZXJ0aW9uIik7
CkBAIC00OCwxNyArNDEsMTUgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgV2ViSW5zcGVjdG9yLmxvZ01h
bmFnZXIubWVzc2FnZVdhc0FkZGVkKG1lc3NhZ2Uuc291cmNlLCBtZXNzYWdlLmxldmVsLCBtZXNz
YWdlLnRleHQsIG1lc3NhZ2UudHlwZSwgbWVzc2FnZS51cmwsIG1lc3NhZ2UubGluZSwgbWVzc2Fn
ZS5jb2x1bW4gfHwgMCwgbWVzc2FnZS5yZXBlYXRDb3VudCwgbWVzc2FnZS5wYXJhbWV0ZXJzLCBt
ZXNzYWdlLnN0YWNrVHJhY2UsIG1lc3NhZ2UubmV0d29ya1JlcXVlc3RJZCk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBtZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkOiBmdW5jdGlvbihjb3VudCkKKyAg
ICBtZXNzYWdlUmVwZWF0Q291bnRVcGRhdGVkKGNvdW50KQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLmxvZ01hbmFnZXIubWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZChjb3VudCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBtZXNzYWdlc0NsZWFyZWQ6IGZ1bmN0aW9uKCkKKyAgICBtZXNzYWdl
c0NsZWFyZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmxvZ01hbmFnZXIubWVzc2Fn
ZXNDbGVhcmVkKCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZlci5w
cm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01P
YnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0RPTU9ic2VydmVyLmpzCmluZGV4IDc3MDAzMWYuLmEwMjI4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2VydmVyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTU9ic2Vy
dmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yMyw3MSArMjMsNjIgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNw
ZWN0b3IuRE9NT2JzZXJ2ZXIgPSBjbGFzcyBET01PYnNlcnZlcgogewotICAgIC8vIEZJWE1FOiBD
b252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBz
dXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5ET01PYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5ET01PYnNlcnZlciwKLQogICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAi
RE9NIiBkb21haW4uCiAKLSAgICBkb2N1bWVudFVwZGF0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBkb2N1
bWVudFVwZGF0ZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2Vy
Ll9kb2N1bWVudFVwZGF0ZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNldENoaWxkTm9kZXM6
IGZ1bmN0aW9uKHBhcmVudElkLCBwYXlsb2FkcykKKyAgICBzZXRDaGlsZE5vZGVzKHBhcmVudElk
LCBwYXlsb2FkcykKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5f
c2V0Q2hpbGROb2RlcyhwYXJlbnRJZCwgcGF5bG9hZHMpOwotICAgIH0sCisgICAgfQogCi0gICAg
YXR0cmlidXRlTW9kaWZpZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgbmFtZSwgdmFsdWUpCisgICAgYXR0
cmlidXRlTW9kaWZpZWQobm9kZUlkLCBuYW1lLCB2YWx1ZSkKICAgICB7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5kb21UcmVlTWFuYWdlci5fYXR0cmlidXRlTW9kaWZpZWQobm9kZUlkLCBuYW1lLCB2
YWx1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhdHRyaWJ1dGVSZW1vdmVkOiBmdW5jdGlvbihu
b2RlSWQsIG5hbWUpCisgICAgYXR0cmlidXRlUmVtb3ZlZChub2RlSWQsIG5hbWUpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuX2F0dHJpYnV0ZVJlbW92ZWQobm9k
ZUlkLCBuYW1lKTsKLSAgICB9LAorICAgIH0KIAotICAgIGlubGluZVN0eWxlSW52YWxpZGF0ZWQ6
IGZ1bmN0aW9uKG5vZGVJZHMpCisgICAgaW5saW5lU3R5bGVJbnZhbGlkYXRlZChub2RlSWRzKQog
ICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLl9pbmxpbmVTdHlsZUlu
dmFsaWRhdGVkKG5vZGVJZHMpOwotICAgIH0sCisgICAgfQogCi0gICAgY2hhcmFjdGVyRGF0YU1v
ZGlmaWVkOiBmdW5jdGlvbihub2RlSWQsIGNoYXJhY3RlckRhdGEpCisgICAgY2hhcmFjdGVyRGF0
YU1vZGlmaWVkKG5vZGVJZCwgY2hhcmFjdGVyRGF0YSkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5kb21UcmVlTWFuYWdlci5fY2hhcmFjdGVyRGF0YU1vZGlmaWVkKG5vZGVJZCwgY2hhcmFj
dGVyRGF0YSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjaGlsZE5vZGVDb3VudFVwZGF0ZWQ6IGZ1
bmN0aW9uKG5vZGVJZCwgY2hpbGROb2RlQ291bnQpCisgICAgY2hpbGROb2RlQ291bnRVcGRhdGVk
KG5vZGVJZCwgY2hpbGROb2RlQ291bnQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9t
VHJlZU1hbmFnZXIuX2NoaWxkTm9kZUNvdW50VXBkYXRlZChub2RlSWQsIGNoaWxkTm9kZUNvdW50
KTsKLSAgICB9LAorICAgIH0KIAotICAgIGNoaWxkTm9kZUluc2VydGVkOiBmdW5jdGlvbihwYXJl
bnROb2RlSWQsIHByZXZpb3VzTm9kZUlkLCBwYXlsb2FkKQorICAgIGNoaWxkTm9kZUluc2VydGVk
KHBhcmVudE5vZGVJZCwgcHJldmlvdXNOb2RlSWQsIHBheWxvYWQpCiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuX2NoaWxkTm9kZUluc2VydGVkKHBhcmVudE5vZGVJ
ZCwgcHJldmlvdXNOb2RlSWQsIHBheWxvYWQpOwotICAgIH0sCisgICAgfQogCi0gICAgY2hpbGRO
b2RlUmVtb3ZlZDogZnVuY3Rpb24ocGFyZW50Tm9kZUlkLCBub2RlSWQpCisgICAgY2hpbGROb2Rl
UmVtb3ZlZChwYXJlbnROb2RlSWQsIG5vZGVJZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5kb21UcmVlTWFuYWdlci5fY2hpbGROb2RlUmVtb3ZlZChwYXJlbnROb2RlSWQsIG5vZGVJZCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzaGFkb3dSb290UHVzaGVkOiBmdW5jdGlvbihwYXJlbnRO
b2RlSWQsIG5vZGVJZCkKKyAgICBzaGFkb3dSb290UHVzaGVkKHBhcmVudE5vZGVJZCwgbm9kZUlk
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLl9jaGlsZE5vZGVJ
bnNlcnRlZChwYXJlbnROb2RlSWQsIDAsIG5vZGVJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBz
aGFkb3dSb290UG9wcGVkOiBmdW5jdGlvbihwYXJlbnROb2RlSWQsIG5vZGVJZCkKKyAgICBzaGFk
b3dSb290UG9wcGVkKHBhcmVudE5vZGVJZCwgbm9kZUlkKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLmRvbVRyZWVNYW5hZ2VyLl9jaGlsZE5vZGVSZW1vdmVkKHBhcmVudE5vZGVJZCwgbm9k
ZUlkKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuRE9NT2JzZXJ2ZXIucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NU3RvcmFnZU9ic2Vy
dmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9N
U3RvcmFnZU9ic2VydmVyLmpzCmluZGV4IGRmZTQ1ZDUuLmU2ZGZkZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTVN0b3JhZ2VPYnNl
cnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9ET01TdG9yYWdlT2JzZXJ2ZXIuanMKQEAgLTI0LDQ2ICsyNCwzOCBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2Jz
ZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9ic2VydmVyID0gY2xh
c3MgRE9NU3RvcmFnZU9ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBh
IFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8g
V2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLkRPTVN0
b3JhZ2VPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rv
ci5ET01TdG9yYWdlT2JzZXJ2ZXIsCi0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZSwKLQogICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiRE9NU3RvcmFnZSIg
ZG9tYWluLgogCiAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDYpOiBUaGlzIGV2ZW50IG5vIGxv
bmdlciBleGlzdHMuIEl0IGlzIHN0aWxsIG5lZWRlZCBhbmQgY2FsbGVkIG9uIGlPUyA2LgotICAg
IGFkZERPTVN0b3JhZ2U6IGZ1bmN0aW9uKHN0b3JhZ2UpCisgICAgYWRkRE9NU3RvcmFnZShzdG9y
YWdlKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmRvbVN0b3Jh
Z2VXYXNBZGRlZChzdG9yYWdlLmlkLCBzdG9yYWdlLmhvc3QsIHN0b3JhZ2UuaXNMb2NhbFN0b3Jh
Z2UpOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDYpOiBUaGlz
IGV2ZW50IHdhcyBzcGxpdCBpbnRvIHRoZSBncmFudWxhciBldmVudHMgYmVsb3cuCi0gICAgdXBk
YXRlRE9NU3RvcmFnZTogZnVuY3Rpb24oc3RvcmFnZUlkKQorICAgIHVwZGF0ZURPTVN0b3JhZ2Uo
c3RvcmFnZUlkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLmRv
bVN0b3JhZ2VXYXNVcGRhdGVkKHN0b3JhZ2VJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkb21T
dG9yYWdlSXRlbXNDbGVhcmVkOiBmdW5jdGlvbihzdG9yYWdlSWQpCisgICAgZG9tU3RvcmFnZUl0
ZW1zQ2xlYXJlZChzdG9yYWdlSWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFn
ZU1hbmFnZXIuaXRlbXNDbGVhcmVkKHN0b3JhZ2VJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBk
b21TdG9yYWdlSXRlbVJlbW92ZWQ6IGZ1bmN0aW9uKHN0b3JhZ2VJZCwga2V5KQorICAgIGRvbVN0
b3JhZ2VJdGVtUmVtb3ZlZChzdG9yYWdlSWQsIGtleSkKICAgICB7CiAgICAgICAgIFdlYkluc3Bl
Y3Rvci5zdG9yYWdlTWFuYWdlci5pdGVtUmVtb3ZlZChzdG9yYWdlSWQsIGtleSk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBkb21TdG9yYWdlSXRlbUFkZGVkOiBmdW5jdGlvbihzdG9yYWdlSWQsIGtl
eSwgdmFsdWUpCisgICAgZG9tU3RvcmFnZUl0ZW1BZGRlZChzdG9yYWdlSWQsIGtleSwgdmFsdWUp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuaXRlbUFkZGVkKHN0
b3JhZ2VJZCwga2V5LCB2YWx1ZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkb21TdG9yYWdlSXRl
bVVwZGF0ZWQ6IGZ1bmN0aW9uKHN0b3JhZ2VJZCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUpCisgICAg
ZG9tU3RvcmFnZUl0ZW1VcGRhdGVkKHN0b3JhZ2VJZCwga2V5LCBvbGRWYWx1ZSwgdmFsdWUpCiAg
ICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuaXRlbVVwZGF0ZWQoc3Rv
cmFnZUlkLCBrZXksIG9sZFZhbHVlLCB2YWx1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RhdGFiYXNl
T2JzZXJ2ZXIuanMKaW5kZXggNjNkYmQ2Zi4uN2I5NzNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EYXRhYmFz
ZU9ic2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yMywyNiArMjMsMTcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VPYnNlcnZlciA9IGZ1bmN0aW9u
KCkKK1dlYkluc3BlY3Rvci5EYXRhYmFzZU9ic2VydmVyID0gY2xhc3MgRGF0YWJhc2VPYnNlcnZl
cgogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5EYXRhYmFzZU9ic2VydmVyLl9jYWxsYmFj
a3MgPSB7fTsKLQotV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYnNlcnZlciwKLQogICAgIC8v
IEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiRGF0YWJhc2UiIGRvbWFpbi4KIAotICAgIGFkZERhdGFi
YXNlOiBmdW5jdGlvbihkYXRhYmFzZSkKKyAgICBhZGREYXRhYmFzZShkYXRhYmFzZSkKICAgICB7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5kYXRhYmFzZVdhc0FkZGVkKGRh
dGFiYXNlLmlkLCBkYXRhYmFzZS5kb21haW4sIGRhdGFiYXNlLm5hbWUsIGRhdGFiYXNlLnZlcnNp
b24pOwotICAgIH0sCisgICAgfQogCiAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDYpOiBUaGlz
IGV2ZW50IHdhcyByZW1vdmVkIGluIGZhdm9yIG9mIGEgbW9yZSBhc3luYyBEYXRhYmFzZUFnZW50
LmV4ZWN1dGVTUUwuCi0gICAgc3FsVHJhbnNhY3Rpb25TdWNjZWVkZWQ6IGZ1bmN0aW9uKHRyYW5z
YWN0aW9uSWQsIGNvbHVtbk5hbWVzLCB2YWx1ZXMpCisgICAgc3FsVHJhbnNhY3Rpb25TdWNjZWVk
ZWQodHJhbnNhY3Rpb25JZCwgY29sdW1uTmFtZXMsIHZhbHVlcykKICAgICB7CiAgICAgICAgIGlm
ICghV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIuX2NhbGxiYWNrc1t0cmFuc2FjdGlvbklk
XSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTUyLDEwICs0MywxMCBAQCBXZWJJbnNwZWN0b3Iu
RGF0YWJhc2VPYnNlcnZlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgaWYgKGNhbGxiYWNrKQog
ICAgICAgICAgICAgY2FsbGJhY2soY29sdW1uTmFtZXMsIHZhbHVlcywgbnVsbCk7Ci0gICAgfSwK
KyAgICB9CiAKICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgNik6IFRoaXMgZXZlbnQgd2FzIHJl
bW92ZWQgaW4gZmF2b3Igb2YgYSBtb3JlIGFzeW5jIERhdGFiYXNlQWdlbnQuZXhlY3V0ZVNRTC4K
LSAgICBzcWxUcmFuc2FjdGlvbkZhaWxlZDogZnVuY3Rpb24odHJhbnNhY3Rpb25JZCwgc3FsRXJy
b3IpCisgICAgc3FsVHJhbnNhY3Rpb25GYWlsZWQodHJhbnNhY3Rpb25JZCwgc3FsRXJyb3IpCiAg
ICAgewogICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5EYXRhYmFzZU9ic2VydmVyLl9jYWxsYmFj
a3NbdHJhbnNhY3Rpb25JZF0pCiAgICAgICAgICAgICByZXR1cm47CkBAIC02OCw0ICs1OSw0IEBA
IFdlYkluc3BlY3Rvci5EYXRhYmFzZU9ic2VydmVyLnByb3RvdHlwZSA9IHsKICAgICB9CiB9Owog
Ci1XZWJJbnNwZWN0b3IuRGF0YWJhc2VPYnNlcnZlci5wcm90b3R5cGUuX19wcm90b19fID0gV2Vi
SW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CitXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYnNlcnZl
ci5fY2FsbGJhY2tzID0ge307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcwppbmRleCAw
NjllOTBlLi5hMDVjNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Qcm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDU2
ICsyMyw0NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck9ic2VydmVyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyT2JzZXJ2ZXIgPSBjbGFzcyBEZWJ1Z2dlck9ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6
IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxs
IHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQot
V2ViSW5zcGVjdG9yLkRlYnVnZ2VyT2JzZXJ2ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBXZWJJbnNwZWN0b3IuRGVidWdnZXJPYnNlcnZlciwKLQogICAgIC8vIEV2ZW50cyBkZWZp
bmVkIGJ5IHRoZSAiRGVidWdnZXIiIGRvbWFpbi4KIAotICAgIGdsb2JhbE9iamVjdENsZWFyZWQ6
IGZ1bmN0aW9uKCkKKyAgICBnbG9iYWxPYmplY3RDbGVhcmVkKCkKICAgICB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIucmVzZXQoKTsKLSAgICB9LAorICAgIH0KIAotICAg
IHNjcmlwdFBhcnNlZDogZnVuY3Rpb24oc2NyaXB0SWQsIHVybCwgc3RhcnRMaW5lLCBzdGFydENv
bHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBpc0NvbnRlbnRTY3JpcHQsIHNvdXJjZU1hcFVSTCwg
aGFzU291cmNlVVJMKQorICAgIHNjcmlwdFBhcnNlZChzY3JpcHRJZCwgdXJsLCBzdGFydExpbmUs
IHN0YXJ0Q29sdW1uLCBlbmRMaW5lLCBlbmRDb2x1bW4sIGlzQ29udGVudFNjcmlwdCwgc291cmNl
TWFwVVJMLCBoYXNTb3VyY2VVUkwpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNYW5hZ2VyLnNjcmlwdERpZFBhcnNlKHNjcmlwdElkLCB1cmwsIGlzQ29udGVudFNjcmlwdCwg
c3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBzb3VyY2VNYXBVUkwp
OwotICAgIH0sCisgICAgfQogCi0gICAgc2NyaXB0RmFpbGVkVG9QYXJzZTogZnVuY3Rpb24odXJs
LCBzY3JpcHRTb3VyY2UsIHN0YXJ0TGluZSwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpCisgICAg
c2NyaXB0RmFpbGVkVG9QYXJzZSh1cmwsIHNjcmlwdFNvdXJjZSwgc3RhcnRMaW5lLCBlcnJvckxp
bmUsIGVycm9yTWVzc2FnZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50
ZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBicmVha3BvaW50UmVzb2x2ZWQ6IGZ1bmN0aW9uKGJy
ZWFrcG9pbnRJZCwgbG9jYXRpb24pCisgICAgYnJlYWtwb2ludFJlc29sdmVkKGJyZWFrcG9pbnRJ
ZCwgbG9jYXRpb24pCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2Vy
LmJyZWFrcG9pbnRSZXNvbHZlZChicmVha3BvaW50SWQsIGxvY2F0aW9uKTsKLSAgICB9LAorICAg
IH0KIAotICAgIHBhdXNlZDogZnVuY3Rpb24oY2FsbEZyYW1lcywgcmVhc29uLCBkYXRhKQorICAg
IHBhdXNlZChjYWxsRnJhbWVzLCByZWFzb24sIGRhdGEpCiAgICAgewogICAgICAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2VyRGlkUGF1c2UoY2FsbEZyYW1lcywgcmVhc29u
LCBkYXRhKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlc3VtZWQ6IGZ1bmN0aW9uKCkKKyAgICBy
ZXN1bWVkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1hbmFnZXIuZGVi
dWdnZXJEaWRSZXN1bWUoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHBsYXlCcmVha3BvaW50QWN0
aW9uU291bmQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKQorICAgIHBsYXlC
cmVha3BvaW50QWN0aW9uU291bmQoYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnBsYXlCcmVha3BvaW50QWN0aW9u
U291bmQoYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIpOwotICAgIH0sCisgICAgfQogCi0gICAg
ZGlkU2FtcGxlUHJvYmU6IGZ1bmN0aW9uKHNhbXBsZSkKKyAgICBkaWRTYW1wbGVQcm9iZShzYW1w
bGUpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucHJvYmVNYW5hZ2VyLmRpZFNhbXBsZVBy
b2JlKHNhbXBsZSk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkRlYnVnZ2VyT2JzZXJ2ZXIu
cHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5z
cGVjdG9yQmFja2VuZC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMKaW5kZXggNjU4MmY5Ni4uZTdiODA3YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVj
dG9yQmFja2VuZC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzCkBAIC0zMCw1MiArMzAsNTIgQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotZnVuY3Rpb24gSW5zcGVjdG9yQmFja2VuZENsYXNzKCkKK0luc3BlY3Rv
ckJhY2tlbmRDbGFzcyA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRDbGFzcwogewotICAgIHRoaXMu
X2xhc3RTZXF1ZW5jZUlkID0gMTsKLSAgICB0aGlzLl9wZW5kaW5nUmVzcG9uc2VzQ291bnQgPSAw
OwotICAgIHRoaXMuX2NhbGxiYWNrRGF0YSA9IG5ldyBNYXA7Ci0gICAgdGhpcy5fYWdlbnRzID0g
e307Ci0gICAgdGhpcy5fZGVmZXJyZWRTY3JpcHRzID0gW107Ci0KLSAgICB0aGlzLmR1bXBJbnNw
ZWN0b3JUaW1lU3RhdHMgPSBmYWxzZTsKLSAgICB0aGlzLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1l
c3NhZ2VzID0gZmFsc2U7Ci0gICAgdGhpcy53YXJuRm9yTG9uZ01lc3NhZ2VIYW5kbGluZyA9IGZh
bHNlOwotICAgIHRoaXMubG9uZ01lc3NhZ2VIYW5kbGluZ1RocmVzaG9sZCA9IDEwOyAvLyBtaWxs
aXNlY29uZHMuCi19CisgICAgY29uc3RydWN0b3IoKQorICAgIHsKKyAgICAgICAgdGhpcy5fbGFz
dFNlcXVlbmNlSWQgPSAxOworICAgICAgICB0aGlzLl9wZW5kaW5nUmVzcG9uc2VzQ291bnQgPSAw
OworICAgICAgICB0aGlzLl9jYWxsYmFja0RhdGEgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9h
Z2VudHMgPSB7fTsKKyAgICAgICAgdGhpcy5fZGVmZXJyZWRTY3JpcHRzID0gW107CiAKLUluc3Bl
Y3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CisgICAgICAgIHRoaXMuZHVtcEluc3BlY3Rv
clRpbWVTdGF0cyA9IGZhbHNlOworICAgICAgICB0aGlzLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1l
c3NhZ2VzID0gZmFsc2U7CisgICAgICAgIHRoaXMud2FybkZvckxvbmdNZXNzYWdlSGFuZGxpbmcg
PSBmYWxzZTsKKyAgICAgICAgdGhpcy5sb25nTWVzc2FnZUhhbmRsaW5nVGhyZXNob2xkID0gMTA7
IC8vIG1pbGxpc2Vjb25kcy4KKyAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIHJlZ2lzdGVy
Q29tbWFuZDogZnVuY3Rpb24ocXVhbGlmaWVkTmFtZSwgY2FsbFNpZ25hdHVyZSwgcmVwbHlTaWdu
YXR1cmUpCisgICAgcmVnaXN0ZXJDb21tYW5kKHF1YWxpZmllZE5hbWUsIGNhbGxTaWduYXR1cmUs
IHJlcGx5U2lnbmF0dXJlKQogICAgIHsKICAgICAgICAgdmFyIFtkb21haW5OYW1lLCBjb21tYW5k
TmFtZV0gPSBxdWFsaWZpZWROYW1lLnNwbGl0KCIuIik7CiAgICAgICAgIHZhciBhZ2VudCA9IHRo
aXMuX2FnZW50Rm9yRG9tYWluKGRvbWFpbk5hbWUpOwogICAgICAgICBhZ2VudC5hZGRDb21tYW5k
KEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZC5jcmVhdGUodGhpcywgcXVhbGlmaWVkTmFtZSwgY2Fs
bFNpZ25hdHVyZSwgcmVwbHlTaWduYXR1cmUpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZ2lz
dGVyRW51bTogZnVuY3Rpb24ocXVhbGlmaWVkTmFtZSwgZW51bVZhbHVlcykKKyAgICByZWdpc3Rl
ckVudW0ocXVhbGlmaWVkTmFtZSwgZW51bVZhbHVlcykKICAgICB7CiAgICAgICAgIHZhciBbZG9t
YWluTmFtZSwgZW51bU5hbWVdID0gcXVhbGlmaWVkTmFtZS5zcGxpdCgiLiIpOwogICAgICAgICB2
YXIgYWdlbnQgPSB0aGlzLl9hZ2VudEZvckRvbWFpbihkb21haW5OYW1lKTsKICAgICAgICAgYWdl
bnQuYWRkRW51bShlbnVtTmFtZSwgZW51bVZhbHVlcyk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBy
ZWdpc3RlckV2ZW50OiBmdW5jdGlvbihxdWFsaWZpZWROYW1lLCBzaWduYXR1cmUpCisgICAgcmVn
aXN0ZXJFdmVudChxdWFsaWZpZWROYW1lLCBzaWduYXR1cmUpCiAgICAgewogICAgICAgICB2YXIg
W2RvbWFpbk5hbWUsIGV2ZW50TmFtZV0gPSBxdWFsaWZpZWROYW1lLnNwbGl0KCIuIik7CiAgICAg
ICAgIHZhciBhZ2VudCA9IHRoaXMuX2FnZW50Rm9yRG9tYWluKGRvbWFpbk5hbWUpOwogICAgICAg
ICBhZ2VudC5hZGRFdmVudChuZXcgSW5zcGVjdG9yQmFja2VuZC5FdmVudChldmVudE5hbWUsIHNp
Z25hdHVyZSkpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVnaXN0ZXJEb21haW5EaXNwYXRjaGVy
OiBmdW5jdGlvbihkb21haW5OYW1lLCBkaXNwYXRjaGVyKQorICAgIHJlZ2lzdGVyRG9tYWluRGlz
cGF0Y2hlcihkb21haW5OYW1lLCBkaXNwYXRjaGVyKQogICAgIHsKICAgICAgICAgdmFyIGFnZW50
ID0gdGhpcy5fYWdlbnRGb3JEb21haW4oZG9tYWluTmFtZSk7CiAgICAgICAgIGFnZW50LmRpc3Bh
dGNoZXIgPSBkaXNwYXRjaGVyOwotICAgIH0sCisgICAgfQogCi0gICAgZGlzcGF0Y2g6IGZ1bmN0
aW9uKG1lc3NhZ2UpCisgICAgZGlzcGF0Y2gobWVzc2FnZSkKICAgICB7CiAgICAgICAgIGlmICh0
aGlzLmR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3NhZ2VzKQogICAgICAgICAgICAgY29uc29sZS5s
b2coImJhY2tlbmQ6ICIgKyAoKHR5cGVvZiBtZXNzYWdlID09PSAic3RyaW5nIikgPyBtZXNzYWdl
IDogSlNPTi5zdHJpbmdpZnkobWVzc2FnZSkpKTsKQEAgLTg2LDkgKzg2LDkgQEAgSW5zcGVjdG9y
QmFja2VuZENsYXNzLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX2Rpc3BhdGNoQ2Fs
bGJhY2sobWVzc2FnZU9iamVjdCk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX2Rp
c3BhdGNoRXZlbnQobWVzc2FnZU9iamVjdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBydW5BZnRl
clBlbmRpbmdEaXNwYXRjaGVzOiBmdW5jdGlvbihzY3JpcHQpCisgICAgcnVuQWZ0ZXJQZW5kaW5n
RGlzcGF0Y2hlcyhzY3JpcHQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChzY3JpcHQp
OwogICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2Ygc2NyaXB0ID09PSAiZnVuY3Rpb24iKTsK
QEAgLTk3LDkgKzk3LDkgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHNjcmlwdC5jYWxsKHRoaXMpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0
aGlzLl9kZWZlcnJlZFNjcmlwdHMucHVzaChzY3JpcHQpOwotICAgIH0sCisgICAgfQogCi0gICAg
YWN0aXZhdGVEb21haW46IGZ1bmN0aW9uKGRvbWFpbk5hbWUsIGFjdGl2YXRpb25EZWJ1Z2dhYmxl
VHlwZSkKKyAgICBhY3RpdmF0ZURvbWFpbihkb21haW5OYW1lLCBhY3RpdmF0aW9uRGVidWdnYWJs
ZVR5cGUpCiAgICAgewogICAgICAgICBpZiAoIWFjdGl2YXRpb25EZWJ1Z2dhYmxlVHlwZSB8fCBJ
bnNwZWN0b3JGcm9udGVuZEhvc3QuZGVidWdnYWJsZVR5cGUoKSA9PT0gYWN0aXZhdGlvbkRlYnVn
Z2FibGVUeXBlKSB7CiAgICAgICAgICAgICB2YXIgYWdlbnQgPSB0aGlzLl9hZ2VudHNbZG9tYWlu
TmFtZV07CkBAIC0xMDgsMTEgKzEwOCwxMSBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKKyAgICB9
CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfYWdlbnRGb3JEb21haW46IGZ1bmN0aW9uKGRvbWFp
bk5hbWUpCisgICAgX2FnZW50Rm9yRG9tYWluKGRvbWFpbk5hbWUpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fYWdlbnRzW2RvbWFpbk5hbWVdKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Fn
ZW50c1tkb21haW5OYW1lXTsKQEAgLTEyMCw5ICsxMjAsOSBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xh
c3MucHJvdG90eXBlID0gewogICAgICAgICB2YXIgYWdlbnQgPSBuZXcgSW5zcGVjdG9yQmFja2Vu
ZC5BZ2VudChkb21haW5OYW1lKTsKICAgICAgICAgdGhpcy5fYWdlbnRzW2RvbWFpbk5hbWVdID0g
YWdlbnQ7CiAgICAgICAgIHJldHVybiBhZ2VudDsKLSAgICB9LAorICAgIH0KIAotICAgIF93aWxs
U2VuZE1lc3NhZ2VUb0JhY2tlbmQ6IGZ1bmN0aW9uKGNvbW1hbmQsIGNhbGxiYWNrKQorICAgIF93
aWxsU2VuZE1lc3NhZ2VUb0JhY2tlbmQoY29tbWFuZCwgY2FsbGJhY2spCiAgICAgewogICAgICAg
ICArK3RoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudDsKICAgICAgICAgdmFyIHNlcXVlbmNlSWQg
PSB0aGlzLl9sYXN0U2VxdWVuY2VJZCsrOwpAQCAtMTQwLDkgKzE0MCw5IEBAIEluc3BlY3RvckJh
Y2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc2Vx
dWVuY2VJZDsKLSAgICB9LAorICAgIH0KIAotICAgIF9kaXNwYXRjaENhbGxiYWNrOiBmdW5jdGlv
bihtZXNzYWdlT2JqZWN0KQorICAgIF9kaXNwYXRjaENhbGxiYWNrKG1lc3NhZ2VPYmplY3QpCiAg
ICAgewogICAgICAgICAtLXRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudDsKICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fcGVuZGluZ1Jlc3BvbnNlc0NvdW50ID49IDApOwpAQCAtMTk1LDkg
KzE5NSw5IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
aWYgKHRoaXMuX2RlZmVycmVkU2NyaXB0cy5sZW5ndGggJiYgIXRoaXMuX3BlbmRpbmdSZXNwb25z
ZXNDb3VudCkKICAgICAgICAgICAgIHRoaXMuX2ZsdXNoUGVuZGluZ1NjcmlwdHMoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIF9kaXNwYXRjaEV2ZW50OiBmdW5jdGlvbihtZXNzYWdlT2JqZWN0KQor
ICAgIF9kaXNwYXRjaEV2ZW50KG1lc3NhZ2VPYmplY3QpCiAgICAgewogICAgICAgICB2YXIgcXVh
bGlmaWVkTmFtZSA9IG1lc3NhZ2VPYmplY3RbIm1ldGhvZCJdOwogICAgICAgICB2YXIgW2RvbWFp
bk5hbWUsIGV2ZW50TmFtZV0gPSBxdWFsaWZpZWROYW1lLnNwbGl0KCIuIik7CkBAIC0yNDEsOSAr
MjQxLDkgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBp
ZiAodGhpcy5kdW1wSW5zcGVjdG9yVGltZVN0YXRzKQogICAgICAgICAgICAgY29uc29sZS5sb2co
InRpbWUtc3RhdHM6IEhhbmRsaW5nOiAiICsgcHJvY2Vzc2luZ0R1cmF0aW9uICsgIm1zIChldmVu
dCAiICsgbWVzc2FnZU9iamVjdFsibWV0aG9kIl0gKyAiKSIpOwotICAgIH0sCisgICAgfQogCi0g
ICAgX2ludm9rZUNvbW1hbmQ6IGZ1bmN0aW9uKGNvbW1hbmQsIHBhcmFtZXRlcnMsIGNhbGxiYWNr
KQorICAgIF9pbnZva2VDb21tYW5kKGNvbW1hbmQsIHBhcmFtZXRlcnMsIGNhbGxiYWNrKQogICAg
IHsKICAgICAgICAgdmFyIG1lc3NhZ2VPYmplY3QgPSB7fTsKICAgICAgICAgbWVzc2FnZU9iamVj
dFsibWV0aG9kIl0gPSBjb21tYW5kLnF1YWxpZmllZE5hbWU7CkBAIC0yNjAsMTQgKzI2MCwxNCBA
QCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlID0gewogICAgICAgICAgICAgY29uc29s
ZS5sb2coImZyb250ZW5kOiAiICsgc3RyaW5naWZpZWRNZXNzYWdlKTsKIAogICAgICAgICBJbnNw
ZWN0b3JGcm9udGVuZEhvc3Quc2VuZE1lc3NhZ2VUb0JhY2tlbmQoc3RyaW5naWZpZWRNZXNzYWdl
KTsKLSAgICB9LAorICAgIH0KIAotICAgIF9yZXBvcnRQcm90b2NvbEVycm9yOiBmdW5jdGlvbiht
ZXNzYWdlT2JqZWN0KQorICAgIF9yZXBvcnRQcm90b2NvbEVycm9yKG1lc3NhZ2VPYmplY3QpCiAg
ICAgewogICAgICAgICBjb25zb2xlLmVycm9yKCJSZXF1ZXN0IHdpdGggaWQgPSAiICsgbWVzc2Fn
ZU9iamVjdFsiaWQiXSArICIgZmFpbGVkLiAiICsgSlNPTi5zdHJpbmdpZnkobWVzc2FnZU9iamVj
dFsiZXJyb3IiXSkpOwotICAgIH0sCisgICAgfQogCi0gICAgX2ZsdXNoUGVuZGluZ1NjcmlwdHM6
IGZ1bmN0aW9uKCkKKyAgICBfZmx1c2hQZW5kaW5nU2NyaXB0cygpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydCghdGhpcy5fcGVuZGluZ1Jlc3BvbnNlc0NvdW50KTsKIApAQCAtMjc2LDcx
ICsyNzYsNzQgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZSA9IHsKICAgICAgICAg
Zm9yICh2YXIgc2NyaXB0IG9mIHNjcmlwdHNUb1J1bikKICAgICAgICAgICAgIHNjcmlwdC5jYWxs
KHRoaXMpOwogICAgIH0KLX0KK307CiAKLUluc3BlY3RvckJhY2tlbmQgPSBuZXcgSW5zcGVjdG9y
QmFja2VuZENsYXNzKCk7CitJbnNwZWN0b3JCYWNrZW5kID0gbmV3IEluc3BlY3RvckJhY2tlbmRD
bGFzczsKIAotSW5zcGVjdG9yQmFja2VuZC5BZ2VudCA9IGZ1bmN0aW9uKGRvbWFpbk5hbWUpCitJ
bnNwZWN0b3JCYWNrZW5kLkFnZW50ID0gY2xhc3MgSW5zcGVjdG9yQmFja2VuZEFnZW50CiB7Ci0g
ICAgdGhpcy5fZG9tYWluTmFtZSA9IGRvbWFpbk5hbWU7CisgICAgY29uc3RydWN0b3IoZG9tYWlu
TmFtZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2RvbWFpbk5hbWUgPSBkb21haW5OYW1lOwogCi0g
ICAgLy8gQWdlbnRzIGFyZSBhbHdheXMgY3JlYXRlZCwgYnV0IGFyZSBvbmx5IHVzZWFibGUgYWZ0
ZXIgdGhleSBhcmUgYWN0aXZhdGVkLgotICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlOworICAgICAg
ICAvLyBBZ2VudHMgYXJlIGFsd2F5cyBjcmVhdGVkLCBidXQgYXJlIG9ubHkgdXNlYWJsZSBhZnRl
ciB0aGV5IGFyZSBhY3RpdmF0ZWQuCisgICAgICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlOworCisg
ICAgICAgIC8vIENvbW1hbmRzIGFyZSBzdG9yZWQgZGlyZWN0bHkgb24gdGhlIEFnZW50IGluc3Rh
bmNlIHVzaW5nIHRoZWlyIHVucXVhbGlmaWVkCisgICAgICAgIC8vIG1ldGhvZCBuYW1lIGFzIHRo
ZSBwcm9wZXJ0eS4gVGh1cywgY2FsbGVycyBjYW4gd3JpdGU6IEZvb0FnZW50Lm1ldGhvZE5hbWUo
KS4KKyAgICAgICAgLy8gRW51bXMgYXJlIHN0b3JlZCBzaW1pbGFybHkgYmFzZWQgb24gdGhlIHVu
cXVhbGlmaWVkIHR5cGUgbmFtZS4KKyAgICAgICAgdGhpcy5fZXZlbnRzID0ge307CisgICAgfQog
Ci0gICAgLy8gQ29tbWFuZHMgYXJlIHN0b3JlZCBkaXJlY3RseSBvbiB0aGUgQWdlbnQgaW5zdGFu
Y2UgdXNpbmcgdGhlaXIgdW5xdWFsaWZpZWQKLSAgICAvLyBtZXRob2QgbmFtZSBhcyB0aGUgcHJv
cGVydHkuIFRodXMsIGNhbGxlcnMgY2FuIHdyaXRlOiBGb29BZ2VudC5tZXRob2ROYW1lKCkuCi0g
ICAgLy8gRW51bXMgYXJlIHN0b3JlZCBzaW1pbGFybHkgYmFzZWQgb24gdGhlIHVucXVhbGlmaWVk
IHR5cGUgbmFtZS4KLSAgICB0aGlzLl9ldmVudHMgPSB7fTsKLX0KKyAgICAvLyBQdWJsaWMKIAot
SW5zcGVjdG9yQmFja2VuZC5BZ2VudC5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IGRvbWFpbk5hbWUo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbWFpbk5hbWU7Ci0gICAgfSwKKyAgICB9
CiAKICAgICBnZXQgYWN0aXZlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBzZXQgZGlzcGF0Y2hlcih2YWx1ZSkKICAgICB7CiAgICAg
ICAgIHRoaXMuX2Rpc3BhdGNoZXIgPSB2YWx1ZTsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZEVu
dW06IGZ1bmN0aW9uKGVudW1OYW1lLCBlbnVtVmFsdWVzKQorICAgIGFkZEVudW0oZW51bU5hbWUs
IGVudW1WYWx1ZXMpCiAgICAgewogICAgICAgICB0aGlzW2VudW1OYW1lXSA9IGVudW1WYWx1ZXM7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhZGRDb21tYW5kOiBmdW5jdGlvbihjb21tYW5kKQorICAg
IGFkZENvbW1hbmQoY29tbWFuZCkKICAgICB7CiAgICAgICAgIHRoaXNbY29tbWFuZC5jb21tYW5k
TmFtZV0gPSBjb21tYW5kOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkRXZlbnQ6IGZ1bmN0aW9u
KGV2ZW50KQorICAgIGFkZEV2ZW50KGV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5fZXZlbnRz
W2V2ZW50LmV2ZW50TmFtZV0gPSBldmVudDsKLSAgICB9LAorICAgIH0KIAotICAgIGdldEV2ZW50
OiBmdW5jdGlvbihldmVudE5hbWUpCisgICAgZ2V0RXZlbnQoZXZlbnROYW1lKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50c1tldmVudE5hbWVdOwotICAgIH0sCisgICAgfQogCi0g
ICAgaGFzRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50TmFtZSkKKyAgICBoYXNFdmVudChldmVudE5hbWUp
CiAgICAgewogICAgICAgICByZXR1cm4gZXZlbnROYW1lIGluIHRoaXMuX2V2ZW50czsKLSAgICB9
LAorICAgIH0KIAotICAgIGFjdGl2YXRlOiBmdW5jdGlvbigpCisgICAgYWN0aXZhdGUoKQogICAg
IHsKICAgICAgICAgdGhpcy5fYWN0aXZlID0gdHJ1ZTsKICAgICAgICAgd2luZG93W3RoaXMuX2Rv
bWFpbk5hbWUgKyAiQWdlbnQiXSA9IHRoaXM7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBkaXNwYXRj
aEV2ZW50OiBmdW5jdGlvbihldmVudE5hbWUsIGV2ZW50QXJndW1lbnRzKQorICAgIGRpc3BhdGNo
RXZlbnQoZXZlbnROYW1lLCBldmVudEFyZ3VtZW50cykKICAgICB7CiAgICAgICAgIGlmICghKGV2
ZW50TmFtZSBpbiB0aGlzLl9kaXNwYXRjaGVyKSkgewogICAgICAgICAgICAgY29uc29sZS5lcnJv
cigiUHJvdG9jb2wgRXJyb3I6IEF0dGVtcHRlZCB0byBkaXNwYXRjaCBhbiB1bmltcGxlbWVudGVk
IG1ldGhvZCAnIiArIHRoaXMuX2RvbWFpbk5hbWUgKyAiLiIgKyBldmVudE5hbWUgKyAiJyIpOwpA
QCAtMzUwLDEwICszNTMsMTQgQEAgSW5zcGVjdG9yQmFja2VuZC5BZ2VudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX2Rpc3BhdGNoZXJbZXZlbnROYW1lXS5hcHBseSh0aGlzLl9kaXNwYXRj
aGVyLCBldmVudEFyZ3VtZW50cyk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLX0KK307
CiAKKy8vIEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZCBjYW4ndCB1c2UgRVM2IGNsYXNzZXMgYmVj
YXVzZSBvZiBpdHMgdHJhbXBvbGluZSBuYXR1cmUuCisvLyBCdXQgd2UgY2FuIHVzZSBzdHJpY3Qg
bW9kZSB0byBnZXQgc3RyaWN0ZXIgaGFuZGxpbmcgb2YgdGhlIGNvZGUgaW5zaWRlIGl0cyBmdW5j
dGlvbnMuCiBJbnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQgPSBmdW5jdGlvbihiYWNrZW5kLCBxdWFs
aWZpZWROYW1lLCBjYWxsU2lnbmF0dXJlLCByZXBseVNpZ25hdHVyZSkKIHsKKyAgICAndXNlIHN0
cmljdCc7CisKICAgICB0aGlzLl9iYWNrZW5kID0gYmFja2VuZDsKICAgICB0aGlzLl9pbnN0YW5j
ZSA9IHRoaXM7CiAKQEAgLTM2MiwyMyArMzY5LDI2IEBAIEluc3BlY3RvckJhY2tlbmQuQ29tbWFu
ZCA9IGZ1bmN0aW9uKGJhY2tlbmQsIHF1YWxpZmllZE5hbWUsIGNhbGxTaWduYXR1cmUsIHJlcGx5
CiAgICAgdGhpcy5fY29tbWFuZE5hbWUgPSBjb21tYW5kTmFtZTsKICAgICB0aGlzLl9jYWxsU2ln
bmF0dXJlID0gY2FsbFNpZ25hdHVyZSB8fCBbXTsKICAgICB0aGlzLl9yZXBseVNpZ25hdHVyZSA9
IHJlcGx5U2lnbmF0dXJlIHx8IFtdOwotfQorfTsKIAogSW5zcGVjdG9yQmFja2VuZC5Db21tYW5k
LmNyZWF0ZSA9IGZ1bmN0aW9uKGJhY2tlbmQsIGNvbW1hbmROYW1lLCBjYWxsU2lnbmF0dXJlLCBy
ZXBseVNpZ25hdHVyZSkKIHsKKyAgICAndXNlIHN0cmljdCc7CisKICAgICB2YXIgaW5zdGFuY2Ug
PSBuZXcgSW5zcGVjdG9yQmFja2VuZC5Db21tYW5kKGJhY2tlbmQsIGNvbW1hbmROYW1lLCBjYWxs
U2lnbmF0dXJlLCByZXBseVNpZ25hdHVyZSk7CiAKICAgICBmdW5jdGlvbiBjYWxsYWJsZSgpIHsK
ICAgICAgICAgLy8gSWYgdGhlIGxhc3QgYXJndW1lbnQgdG8gdGhlIGNvbW1hbmQgaXMgbm90IGEg
ZnVuY3Rpb24sIHJldHVybiBhIHJlc3VsdCBwcm9taXNlLgogICAgICAgICBpZiAoIWFyZ3VtZW50
cy5sZW5ndGggfHwgdHlwZW9mIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0gIT09ICJm
dW5jdGlvbiIpCiAgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2UucHJvbWlzZS5hcHBseShpbnN0
YW5jZSwgYXJndW1lbnRzKTsKLQogICAgICAgICByZXR1cm4gaW5zdGFuY2UuX2ludm9rZVdpdGhB
cmd1bWVudHMuYXBwbHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7CiAgICAgfQorCiAgICAgY2FsbGFi
bGUuX2luc3RhbmNlID0gaW5zdGFuY2U7CiAgICAgY2FsbGFibGUuX19wcm90b19fID0gSW5zcGVj
dG9yQmFja2VuZC5Db21tYW5kLnByb3RvdHlwZTsKKwogICAgIHJldHVybiBjYWxsYWJsZTsKLX0K
K307CiAKIC8vIEFzIHBhcnQgb2YgdGhlIHdvcmthcm91bmQgdG8gbWFrZSBjb21tYW5kcyBjYWxs
YWJsZSwgdGhlc2UgZnVuY3Rpb25zIHVzZSB8dGhpcy5faW5zdGFuY2V8LgogLy8gfHRoaXN8IGNv
dWxkIHJlZmVyIHRvIHRoZSBjYWxsYWJsZSB0cmFtcG9saW5lLCBvciB0aGUgSW5zcGVjdG9yQmFj
a2VuZC5Db21tYW5kIGluc3RhbmNlLgpAQCAtNDA5LDE4ICs0MTksMjMgQEAgSW5zcGVjdG9yQmFj
a2VuZC5Db21tYW5kLnByb3RvdHlwZSA9IHsKIAogICAgIGludm9rZTogZnVuY3Rpb24oY29tbWFu
ZEFyZ3VtZW50cywgY2FsbGJhY2spCiAgICAgeworICAgICAgICAndXNlIHN0cmljdCc7CisKICAg
ICAgICAgdmFyIGluc3RhbmNlID0gdGhpcy5faW5zdGFuY2U7CiAgICAgICAgIGluc3RhbmNlLl9i
YWNrZW5kLl9pbnZva2VDb21tYW5kKGluc3RhbmNlLCBjb21tYW5kQXJndW1lbnRzLCBjYWxsYmFj
ayk7CiAgICAgfSwKIAogICAgIHByb21pc2U6IGZ1bmN0aW9uKCkKICAgICB7CisgICAgICAgICd1
c2Ugc3RyaWN0JzsKKwogICAgICAgICB2YXIgaW5zdGFuY2UgPSB0aGlzLl9pbnN0YW5jZTsKICAg
ICAgICAgdmFyIHByb21pc2VBcmd1bWVudHMgPSBBcnJheS5mcm9tKGFyZ3VtZW50cyk7CiAgICAg
ICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKICAgICAg
ICAgICAgIGZ1bmN0aW9uIGNvbnZlcnRUb1Byb21pc2VDYWxsYmFjayhlcnJvciwgcGF5bG9hZCkg
ewogICAgICAgICAgICAgICAgIHJldHVybiBlcnJvciA/IHJlamVjdChlcnJvcikgOiByZXNvbHZl
KHBheWxvYWQpOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAvLyBGSVhNRTogdGhpcyBz
aG91bGQgYmUgaW5kaWNhdGVkIGJ5IGludm9raW5nIHRoZSBjb21tYW5kIGRpZmZlcmVudGx5LCBy
YXRoZXIKICAgICAgICAgICAgIC8vIHRoYW4gYnkgc2V0dGluZyBhIG1hZ2ljYWwgcHJvcGVydHkg
b24gdGhlIGNhbGxiYWNrLiA8d2Via2l0Lm9yZy9iLzEzMjM4Nj4KICAgICAgICAgICAgIGNvbnZl
cnRUb1Byb21pc2VDYWxsYmFjay5leHBlY3RzUmVzdWx0T2JqZWN0ID0gdHJ1ZTsKQEAgLTQzMiw2
ICs0NDcsOCBAQCBJbnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQucHJvdG90eXBlID0gewogCiAgICAg
c3VwcG9ydHM6IGZ1bmN0aW9uKHBhcmFtZXRlck5hbWUpCiAgICAgeworICAgICAgICAndXNlIHN0
cmljdCc7CisKICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcy5faW5zdGFuY2U7CiAgICAgICAg
IHJldHVybiBpbnN0YW5jZS5jYWxsU2lnbmF0dXJlLnNvbWUoZnVuY3Rpb24ocGFyYW1ldGVyKSB7
CiAgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyWyJuYW1lIl0gPT09IHBhcmFtZXRlck5hbWU7
CkBAIC00NDIsNiArNDU5LDggQEAgSW5zcGVjdG9yQmFja2VuZC5Db21tYW5kLnByb3RvdHlwZSA9
IHsKIAogICAgIF9pbnZva2VXaXRoQXJndW1lbnRzOiBmdW5jdGlvbigpCiAgICAgeworICAgICAg
ICAndXNlIHN0cmljdCc7CisKICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcy5faW5zdGFuY2U7
CiAgICAgICAgIHZhciBjb21tYW5kQXJndW1lbnRzID0gQXJyYXkuZnJvbShhcmd1bWVudHMpOwog
ICAgICAgICB2YXIgY2FsbGJhY2sgPSB0eXBlb2YgY29tbWFuZEFyZ3VtZW50cy5sYXN0VmFsdWUg
PT09ICJmdW5jdGlvbiIgPyBjb21tYW5kQXJndW1lbnRzLnBvcCgpIDogbnVsbDsKQEAgLTQ3OCwx
MSArNDk3LDE0IEBAIEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIH0KIAogICAgICAgICBpbnN0YW5jZS5fYmFja2VuZC5faW52b2tlQ29tbWFuZChpbnN0YW5j
ZSwgT2JqZWN0LmtleXMocGFyYW1ldGVycykubGVuZ3RoID8gcGFyYW1ldGVycyA6IG51bGwsIGNh
bGxiYWNrKTsKLSAgICB9LAotfQorICAgIH0KK307CiAKLUluc3BlY3RvckJhY2tlbmQuRXZlbnQg
PSBmdW5jdGlvbihldmVudE5hbWUsIHBhcmFtZXRlck5hbWVzKQorSW5zcGVjdG9yQmFja2VuZC5F
dmVudCA9IGNsYXNzIEV2ZW50CiB7Ci0gICAgdGhpcy5ldmVudE5hbWUgPSBldmVudE5hbWU7Ci0g
ICAgdGhpcy5wYXJhbWV0ZXJOYW1lcyA9IHBhcmFtZXRlck5hbWVzOwotfQorICAgIGNvbnN0cnVj
dG9yKGV2ZW50TmFtZSwgcGFyYW1ldGVyTmFtZXMpCisgICAgeworICAgICAgICB0aGlzLmV2ZW50
TmFtZSA9IGV2ZW50TmFtZTsKKyAgICAgICAgdGhpcy5wYXJhbWV0ZXJOYW1lcyA9IHBhcmFtZXRl
ck5hbWVzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpzCmluZGV4
IDg0OTE3NTcuLjhiZGFkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rvck9ic2VydmVyLmpzCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDE4ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5JbnNwZWN0b3JPYnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYklu
c3BlY3Rvci5JbnNwZWN0b3JPYnNlcnZlciA9IGNsYXNzIEluc3BlY3Rvck9ic2VydmVyCiB7Ci0g
ICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xh
c3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRo
aXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLkluc3BlY3Rvck9ic2VydmVyLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkluc3BlY3Rvck9ic2VydmVyLAotCiAgICAg
Ly8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJJbnNwZWN0b3IiIGRvbWFpbi4KIAotICAgIGV2YWx1
YXRlRm9yVGVzdEluRnJvbnRlbmQ6IGZ1bmN0aW9uKHNjcmlwdCkKKyAgICBldmFsdWF0ZUZvclRl
c3RJbkZyb250ZW5kKHNjcmlwdCkKICAgICB7CiAgICAgICAgIGlmICghSW5zcGVjdG9yRnJvbnRl
bmRIb3N0LmlzVW5kZXJUZXN0KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00Miw5ICszNSw5
IEBAIFdlYkluc3BlY3Rvci5JbnNwZWN0b3JPYnNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IEluc3BlY3RvckJhY2tlbmQucnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlcyhmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgIHdpbmRvdy5ldmFsKHNjcmlwdCk7CiAgICAgICAgIH0pOwotICAgIH0sCisg
ICAgfQogCi0gICAgaW5zcGVjdDogZnVuY3Rpb24ocGF5bG9hZCwgaGludHMpCisgICAgaW5zcGVj
dChwYXlsb2FkLCBoaW50cykKICAgICB7CiAgICAgICAgIHZhciByZW1vdGVPYmplY3QgPSBXZWJJ
bnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHBheWxvYWQpOwogICAgICAgICBpZiAo
cmVtb3RlT2JqZWN0LnN1YnR5cGUgPT09ICJub2RlIikgewpAQCAtNjEsMTcgKzU0LDE1IEBAIFdl
Ykluc3BlY3Rvci5JbnNwZWN0b3JPYnNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIFdlYklu
c3BlY3Rvci5uYXZpZ2F0aW9uU2lkZWJhci5zZWxlY3RlZFNpZGViYXJQYW5lbCA9IFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVNpZGViYXJQYW5lbDsKIAogICAgICAgICByZW1vdGVPYmplY3QucmVsZWFz
ZSgpOwotICAgIH0sCisgICAgfQogCi0gICAgZGV0YWNoZWQ6IGZ1bmN0aW9uKHJlYXNvbikKKyAg
ICBkZXRhY2hlZChyZWFzb24pCiAgICAgewogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVu
dGVkLgotICAgIH0sCisgICAgfQogCi0gICAgYWN0aXZhdGVFeHRyYURvbWFpbnM6IGZ1bmN0aW9u
KGRvbWFpbnMpCisgICAgYWN0aXZhdGVFeHRyYURvbWFpbnMoZG9tYWlucykKICAgICB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci5hY3RpdmF0ZUV4dHJhRG9tYWlucyhkb21haW5zKTsKICAgICB9CiB9
OwotCi1XZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9
IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTGF5ZXJUcmVlT2JzZXJ2ZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MYXllclRyZWVPYnNl
cnZlci5qcwppbmRleCA1NWNiOTBlLi4wYWM2NzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MYXllclRyZWVPYnNlcnZlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9MYXllclRyZWVP
YnNlcnZlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTcsMjggKzE3LDE5IEBACiAgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCiAgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgogICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPZEYgTElBQklMSVRZLCBXSEVU
SEVSIElOCiAgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQogICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5MYXllclRyZWVPYnNl
cnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5MYXllclRyZWVPYnNlcnZlciA9IGNsYXNz
IExheWVyVHJlZU9ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdl
Ykluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLkxheWVyVHJl
ZU9ic2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLkxh
eWVyVHJlZU9ic2VydmVyLAotCiAgICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJMYXllclRy
ZWUiIGRvbWFpbi4KIAotICAgIGxheWVyVHJlZURpZENoYW5nZTogZnVuY3Rpb24oKQorICAgIGxh
eWVyVHJlZURpZENoYW5nZSgpCiAgICAgewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmxheWVy
VHJlZU1hbmFnZXIuc3VwcG9ydGVkKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmxheWVyVHJl
ZU1hbmFnZXIubGF5ZXJUcmVlRGlkQ2hhbmdlKCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9y
LkxheWVyVHJlZU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL01lc3NhZ2VEaXNwYXRjaGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTWVzc2FnZURpc3BhdGNoZXIuanMKaW5kZXggMTFj
OGY2Ny4uNDlhY2YwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTWVzc2FnZURpc3BhdGNoZXIuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTWVzc2FnZURpc3BhdGNoZXIuanMKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgVW5pdmVyc2l0eSBvZiBXYXNo
aW5ndG9uCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNCwzNCArMjQsMzQgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IubWVzc2FnZXNUb0Rp
c3BhdGNoID0gW107CitXZWJJbnNwZWN0b3IuX21lc3NhZ2VzVG9EaXNwYXRjaCA9IFtdOwogCiBX
ZWJJbnNwZWN0b3IuZGlzcGF0Y2hOZXh0UXVldWVkTWVzc2FnZUZyb21CYWNrZW5kID0gZnVuY3Rp
b24oKQogewotICAgIHZhciBzdGFydENvdW50ID0gV2ViSW5zcGVjdG9yLm1lc3NhZ2VzVG9EaXNw
YXRjaC5sZW5ndGg7CisgICAgdmFyIHN0YXJ0Q291bnQgPSBXZWJJbnNwZWN0b3IuX21lc3NhZ2Vz
VG9EaXNwYXRjaC5sZW5ndGg7CiAgICAgdmFyIHN0YXJ0VGltZSA9IERhdGUubm93KCk7CiAgICAg
dmFyIHRpbWVMaW1pdFBlclJ1bkxvb3AgPSAxMDsgLy8gbWlsbGlzZWNvbmRzCiAKICAgICB2YXIg
aSA9IDA7Ci0gICAgZm9yICg7IGkgPCBXZWJJbnNwZWN0b3IubWVzc2FnZXNUb0Rpc3BhdGNoLmxl
bmd0aDsgKytpKSB7CisgICAgZm9yICg7IGkgPCBXZWJJbnNwZWN0b3IuX21lc3NhZ2VzVG9EaXNw
YXRjaC5sZW5ndGg7ICsraSkgewogICAgICAgICAvLyBEZWZlciByZW1haW5pbmcgbWVzc2FnZXMg
aWYgd2UgaGF2ZSB0YWtlbiB0b28gbG9uZy4gSW4gcHJhY3RpY2UsIHNpbmdsZQogICAgICAgICAv
LyBtZXNzYWdlcyBsaWtlIFBhZ2UuZ2V0UmVzb3VyY2VDb250ZW50IGJsb3cgdGhyb3VnaCB0aGUg
dGltZSBidWRnZXQuCiAgICAgICAgIGlmIChEYXRlLm5vdygpIC0gc3RhcnRUaW1lID4gdGltZUxp
bWl0UGVyUnVuTG9vcCkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIEluc3BlY3RvckJh
Y2tlbmQuZGlzcGF0Y2goV2ViSW5zcGVjdG9yLm1lc3NhZ2VzVG9EaXNwYXRjaFtpXSk7CisgICAg
ICAgIEluc3BlY3RvckJhY2tlbmQuZGlzcGF0Y2goV2ViSW5zcGVjdG9yLl9tZXNzYWdlc1RvRGlz
cGF0Y2hbaV0pOwogICAgIH0KIAotICAgIGlmIChpID09PSBXZWJJbnNwZWN0b3IubWVzc2FnZXNU
b0Rpc3BhdGNoLmxlbmd0aCkgewotICAgICAgICBXZWJJbnNwZWN0b3IubWVzc2FnZXNUb0Rpc3Bh
dGNoID0gW107CisgICAgaWYgKGkgPT09IFdlYkluc3BlY3Rvci5fbWVzc2FnZXNUb0Rpc3BhdGNo
Lmxlbmd0aCkgeworICAgICAgICBXZWJJbnNwZWN0b3IuX21lc3NhZ2VzVG9EaXNwYXRjaCA9IFtd
OwogICAgICAgICBXZWJJbnNwZWN0b3IuX2Rpc3BhdGNoVGltZW91dCA9IG51bGw7CiAgICAgfSBl
bHNlIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLm1lc3NhZ2VzVG9EaXNwYXRjaCA9IFdlYkluc3Bl
Y3Rvci5tZXNzYWdlc1RvRGlzcGF0Y2guc2xpY2UoaSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5f
bWVzc2FnZXNUb0Rpc3BhdGNoID0gV2ViSW5zcGVjdG9yLl9tZXNzYWdlc1RvRGlzcGF0Y2guc2xp
Y2UoaSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5fZGlzcGF0Y2hUaW1lb3V0ID0gc2V0VGltZW91
dChXZWJJbnNwZWN0b3IuZGlzcGF0Y2hOZXh0UXVldWVkTWVzc2FnZUZyb21CYWNrZW5kLCAwKTsK
ICAgICB9CiAKICAgICBpZiAoSW5zcGVjdG9yQmFja2VuZC5kdW1wSW5zcGVjdG9yVGltZVN0YXRz
KQotICAgICAgICBjb25zb2xlLmxvZygidGltZS1zdGF0czogLS0tIFJ1bkxvb3AgZHVyYXRpb246
ICIgKyAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSkgKyAibXM7IGRpc3BhdGNoZWQ6ICIgKyAoc3Rh
cnRDb3VudCAtIFdlYkluc3BlY3Rvci5tZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoKSArICI7IHJl
bWFpbmluZzogIiArIFdlYkluc3BlY3Rvci5tZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoKTsKKyAg
ICAgICAgY29uc29sZS5sb2coInRpbWUtc3RhdHM6IC0tLSBSdW5Mb29wIGR1cmF0aW9uOiAiICsg
KERhdGUubm93KCkgLSBzdGFydFRpbWUpICsgIm1zOyBkaXNwYXRjaGVkOiAiICsgKHN0YXJ0Q291
bnQgLSBXZWJJbnNwZWN0b3IuX21lc3NhZ2VzVG9EaXNwYXRjaC5sZW5ndGgpICsgIjsgcmVtYWlu
aW5nOiAiICsgV2ViSW5zcGVjdG9yLl9tZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoKTsKIH07CiAK
IFdlYkluc3BlY3Rvci5kaXNwYXRjaE1lc3NhZ2VGcm9tQmFja2VuZCA9IGZ1bmN0aW9uKG1lc3Nh
Z2UpCkBAIC01OSw3ICs1OSw3IEBAIFdlYkluc3BlY3Rvci5kaXNwYXRjaE1lc3NhZ2VGcm9tQmFj
a2VuZCA9IGZ1bmN0aW9uKG1lc3NhZ2UpCiAgICAgLy8gRW5mb3JjZSBhc3luY2hyb25vdXMgaW50
ZXJhY3Rpb24gYmV0d2VlbiB0aGUgYmFja2VuZCBhbmQgdGhlIGZyb250ZW5kIGJ5IHF1ZXVlaW5n
IG1lc3NhZ2VzLgogICAgIC8vIFRoZSBtZXNzYWdlcyBhcmUgZGVxdWV1ZWQgb24gYSB6ZXJvIGRl
bGF5IHRpbWVvdXQuCiAKLSAgICB0aGlzLm1lc3NhZ2VzVG9EaXNwYXRjaC5wdXNoKG1lc3NhZ2Up
OworICAgIFdlYkluc3BlY3Rvci5fbWVzc2FnZXNUb0Rpc3BhdGNoLnB1c2gobWVzc2FnZSk7CiAK
ICAgICBpZiAodGhpcy5fZGlzcGF0Y2hUaW1lb3V0KQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3Jr
T2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9OZXR3b3JrT2JzZXJ2ZXIuanMKaW5kZXggOGRiOTBlYi4uOGFkY2I2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2Vy
dmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L05ldHdvcmtPYnNlcnZlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsODYgKzIzLDc3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLk5ldHdvcmtPYnNlcnZlciA9IGZ1
bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5OZXR3b3JrT2JzZXJ2ZXIgPSBjbGFzcyBOZXR3b3JrT2Jz
ZXJ2ZXIKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9i
amVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2Jq
ZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuTmV0d29ya09ic2VydmVyLnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVjdG9yLk5ldHdvcmtPYnNlcnZlciwK
LQogICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiTmV0d29yayIgZG9tYWluLgogCi0gICAg
cmVxdWVzdFdpbGxCZVNlbnQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQs
IGRvY3VtZW50VVJMLCByZXF1ZXN0LCB0aW1lc3RhbXAsIGluaXRpYXRvciwgcmVkaXJlY3RSZXNw
b25zZSwgdHlwZSkKKyAgICByZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIGZyYW1lSWQsIGxv
YWRlcklkLCBkb2N1bWVudFVSTCwgcmVxdWVzdCwgdGltZXN0YW1wLCBpbml0aWF0b3IsIHJlZGly
ZWN0UmVzcG9uc2UsIHR5cGUpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNv
dXJjZU1hbmFnZXIucmVzb3VyY2VSZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0SWQsIGZyYW1lSWQs
IGxvYWRlcklkLCByZXF1ZXN0LCB0eXBlLCByZWRpcmVjdFJlc3BvbnNlLCB0aW1lc3RhbXAsIGlu
aXRpYXRvcik7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXF1ZXN0U2VydmVkRnJvbUNhY2hlOiBm
dW5jdGlvbihyZXF1ZXN0SWQpCisgICAgcmVxdWVzdFNlcnZlZEZyb21DYWNoZShyZXF1ZXN0SWQp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIubWFya1Jl
c291cmNlUmVxdWVzdEFzU2VydmVkRnJvbU1lbW9yeUNhY2hlKHJlcXVlc3RJZCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICByZXNwb25zZVJlY2VpdmVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGZyYW1l
SWQsIGxvYWRlcklkLCB0aW1lc3RhbXAsIHR5cGUsIHJlc3BvbnNlKQorICAgIHJlc3BvbnNlUmVj
ZWl2ZWQocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgdGltZXN0YW1wLCB0eXBlLCByZXNw
b25zZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdlci5y
ZXNvdXJjZVJlcXVlc3REaWRSZWNlaXZlUmVzcG9uc2UocmVxdWVzdElkLCBmcmFtZUlkLCBsb2Fk
ZXJJZCwgdHlwZSwgcmVzcG9uc2UsIHRpbWVzdGFtcCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBk
YXRhUmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgdGltZXN0YW1wLCBkYXRhTGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCkKKyAgICBkYXRhUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAs
IGRhdGFMZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVxdWVzdERpZFJlY2VpdmVEYXRhKHJl
cXVlc3RJZCwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5ndGgsIHRpbWVzdGFtcCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBsb2FkaW5nRmluaXNoZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgdGlt
ZXN0YW1wLCBzb3VyY2VNYXBVUkwpCisgICAgbG9hZGluZ0ZpbmlzaGVkKHJlcXVlc3RJZCwgdGlt
ZXN0YW1wLCBzb3VyY2VNYXBVUkwpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVS
ZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VSZXF1ZXN0RGlkRmluaXNoTG9hZGluZyhyZXF1ZXN0SWQs
IHRpbWVzdGFtcCwgc291cmNlTWFwVVJMKTsKLSAgICB9LAorICAgIH0KIAotICAgIGxvYWRpbmdG
YWlsZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgdGltZXN0YW1wLCBlcnJvclRleHQsIGNhbmNlbGVk
KQorICAgIGxvYWRpbmdGYWlsZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIGVycm9yVGV4dCwgY2Fu
Y2VsZWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIu
cmVzb3VyY2VSZXF1ZXN0RGlkRmFpbExvYWRpbmcocmVxdWVzdElkLCBjYW5jZWxlZCwgdGltZXN0
YW1wKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGU6
IGZ1bmN0aW9uKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGRvY3VtZW50VVJMLCB0aW1l
c3RhbXAsIGluaXRpYXRvciwgcmVzb3VyY2UpCisgICAgcmVxdWVzdFNlcnZlZEZyb21NZW1vcnlD
YWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBkb2N1bWVudFVSTCwgdGltZXN0YW1w
LCBpbml0aWF0b3IsIHJlc291cmNlKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1l
UmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVxdWVzdFdhc1NlcnZlZEZyb21NZW1vcnlDYWNoZShy
ZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCByZXNvdXJjZSwgdGltZXN0YW1wLCBpbml0aWF0
b3IpOwotICAgIH0sCisgICAgfQogCi0gICAgd2ViU29ja2V0V2lsbFNlbmRIYW5kc2hha2VSZXF1
ZXN0OiBmdW5jdGlvbihyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVxdWVzdCkKKyAgICB3ZWJTb2Nr
ZXRXaWxsU2VuZEhhbmRzaGFrZVJlcXVlc3QocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlcXVlc3Qp
CiAgICAgewogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgotICAgIH0sCisgICAg
fQogCi0gICAgd2ViU29ja2V0SGFuZHNoYWtlUmVzcG9uc2VSZWNlaXZlZDogZnVuY3Rpb24ocmVx
dWVzdElkLCB0aW1lc3RhbXAsIHJlc3BvbnNlKQorICAgIHdlYlNvY2tldEhhbmRzaGFrZVJlc3Bv
bnNlUmVjZWl2ZWQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3BvbnNlKQogICAgIHsKICAgICAg
ICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIHdlYlNv
Y2tldENyZWF0ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgdXJsKQorICAgIHdlYlNvY2tldENyZWF0
ZWQocmVxdWVzdElkLCB1cmwpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVu
dGVkLgotICAgIH0sCisgICAgfQogCi0gICAgd2ViU29ja2V0Q2xvc2VkOiBmdW5jdGlvbihyZXF1
ZXN0SWQsIHRpbWVzdGFtcCkKKyAgICB3ZWJTb2NrZXRDbG9zZWQocmVxdWVzdElkLCB0aW1lc3Rh
bXApCiAgICAgewogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgotICAgIH0sCisg
ICAgfQogCi0gICAgd2ViU29ja2V0RnJhbWVSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCB0
aW1lc3RhbXAsIHJlc3BvbnNlKQorICAgIHdlYlNvY2tldEZyYW1lUmVjZWl2ZWQocmVxdWVzdElk
LCB0aW1lc3RhbXAsIHJlc3BvbnNlKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBs
ZW1lbnRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIHdlYlNvY2tldEZyYW1lRXJyb3I6IGZ1bmN0
aW9uKHJlcXVlc3RJZCwgdGltZXN0YW1wLCBlcnJvck1lc3NhZ2UpCisgICAgd2ViU29ja2V0RnJh
bWVFcnJvcihyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgZXJyb3JNZXNzYWdlKQogICAgIHsKICAgICAg
ICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIHdlYlNv
Y2tldEZyYW1lU2VudDogZnVuY3Rpb24ocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3BvbnNlKQor
ICAgIHdlYlNvY2tldEZyYW1lU2VudChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgcmVzcG9uc2UpCiAg
ICAgewogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLgogICAgIH0KIH07Ci0KLVdl
Ykluc3BlY3Rvci5OZXR3b3JrT2JzZXJ2ZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3Bl
Y3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzCmluZGV4IDdiYzVk
MWYuLjExZmFlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9QYWdlT2JzZXJ2ZXIuanMKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDcxICsyMyw2MiBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Q
YWdlT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuUGFnZU9ic2VydmVyID0gY2xh
c3MgUGFnZU9ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYklu
c3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5z
cGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLlBhZ2VPYnNlcnZl
ci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5QYWdlT2JzZXJ2
ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIlBhZ2UiIGRvbWFpbi4KIAotICAg
IGRvbUNvbnRlbnRFdmVudEZpcmVkOiBmdW5jdGlvbih0aW1lc3RhbXApCisgICAgZG9tQ29udGVu
dEV2ZW50RmlyZWQodGltZXN0YW1wKQogICAgIHsKICAgICAgICAgLy8gQ292ZXJlZCBieSBUaW1l
bGluZSAiTWFya0RPTUNvbnRlbnQiIHJlY29yZC4KLSAgICB9LAorICAgIH0KIAotICAgIGxvYWRF
dmVudEZpcmVkOiBmdW5jdGlvbih0aW1lc3RhbXApCisgICAgbG9hZEV2ZW50RmlyZWQodGltZXN0
YW1wKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5wYWdlRGlk
TG9hZCh0aW1lc3RhbXApOwotICAgIH0sCisgICAgfQogCi0gICAgZnJhbWVOYXZpZ2F0ZWQ6IGZ1
bmN0aW9uKGZyYW1lLCBsb2FkZXJJZCkKKyAgICBmcmFtZU5hdmlnYXRlZChmcmFtZSwgbG9hZGVy
SWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuZnJh
bWVEaWROYXZpZ2F0ZShmcmFtZSwgbG9hZGVySWQpOwotICAgIH0sCisgICAgfQogCi0gICAgZnJh
bWVEZXRhY2hlZDogZnVuY3Rpb24oZnJhbWVJZCkKKyAgICBmcmFtZURldGFjaGVkKGZyYW1lSWQp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIuZnJhbWVE
aWREZXRhY2goZnJhbWVJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBmcmFtZVN0YXJ0ZWRMb2Fk
aW5nOiBmdW5jdGlvbihmcmFtZUlkKQorICAgIGZyYW1lU3RhcnRlZExvYWRpbmcoZnJhbWVJZCkK
ICAgICB7CiAgICAgICAgIC8vIE5vdCBoYW5kbGVkIHlldC4KLSAgICB9LAorICAgIH0KIAotICAg
IGZyYW1lU3RvcHBlZExvYWRpbmc6IGZ1bmN0aW9uKGZyYW1lSWQpCisgICAgZnJhbWVTdG9wcGVk
TG9hZGluZyhmcmFtZUlkKQogICAgIHsKICAgICAgICAgLy8gTm90IGhhbmRsZWQgeWV0LgotICAg
IH0sCisgICAgfQogCi0gICAgZnJhbWVTY2hlZHVsZWROYXZpZ2F0aW9uOiBmdW5jdGlvbihmcmFt
ZUlkLCBkZWxheSkKKyAgICBmcmFtZVNjaGVkdWxlZE5hdmlnYXRpb24oZnJhbWVJZCwgZGVsYXkp
CiAgICAgewogICAgICAgICAvLyBOb3QgaGFuZGxlZCB5ZXQuCi0gICAgfSwKKyAgICB9CiAKLSAg
ICBmcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uOiBmdW5jdGlvbihmcmFtZUlkKQorICAg
IGZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24oZnJhbWVJZCkKICAgICB7CiAgICAgICAg
IC8vIE5vdCBoYW5kbGVkIHlldC4KLSAgICB9LAorICAgIH0KIAotICAgIGphdmFzY3JpcHREaWFs
b2dPcGVuaW5nOiBmdW5jdGlvbihtZXNzYWdlKQorICAgIGphdmFzY3JpcHREaWFsb2dPcGVuaW5n
KG1lc3NhZ2UpCiAgICAgewogICAgICAgICAvLyBOb3QgaGFuZGxlZCB5ZXQuCi0gICAgfSwKKyAg
ICB9CiAKLSAgICBqYXZhc2NyaXB0RGlhbG9nQ2xvc2VkOiBmdW5jdGlvbigpCisgICAgamF2YXNj
cmlwdERpYWxvZ0Nsb3NlZCgpCiAgICAgewogICAgICAgICAvLyBOb3QgaGFuZGxlZCB5ZXQuCi0g
ICAgfSwKKyAgICB9CiAKLSAgICBzY3JpcHRzRW5hYmxlZDogZnVuY3Rpb24oZW5hYmxlZCkKKyAg
ICBzY3JpcHRzRW5hYmxlZChlbmFibGVkKQogICAgIHsKICAgICAgICAgLy8gTm90IGhhbmRsZWQg
eWV0LgogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5QYWdlT2JzZXJ2ZXIucHJvdG90eXBlLl9f
cHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2Jq
ZWN0LmpzCmluZGV4IGI5MGE0YjIuLjZhOGNlYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmplY3QuanMK
QEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
MjgsMTcyICsyOSwxNzQgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdCA9IGZ1bmN0aW9uKG9iamVjdElkLCB0eXBlLCBzdWJ0eXBlLCB2YWx1ZSwgZGVz
Y3JpcHRpb24sIHNpemUsIHByZXZpZXcpCitXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0ID0gY2xh
c3MgUmVtb3RlT2JqZWN0CiB7Ci0gICAgLy8gTm8gc3VwZXJjbGFzcy4KLQotICAgIGNvbnNvbGUu
YXNzZXJ0KHR5cGUpOwotICAgIGNvbnNvbGUuYXNzZXJ0KCFwcmV2aWV3IHx8IHByZXZpZXcgaW5z
dGFuY2VvZiBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldyk7Ci0KLSAgICB0aGlzLl90eXBlID0g
dHlwZTsKLSAgICB0aGlzLl9zdWJ0eXBlID0gc3VidHlwZTsKLQotICAgIGlmIChvYmplY3RJZCkg
ewotICAgICAgICAvLyBPYmplY3Qgb3IgU3ltYm9sLgotICAgICAgICBjb25zb2xlLmFzc2VydCgh
c3VidHlwZSB8fCB0eXBlb2Ygc3VidHlwZSA9PT0gInN0cmluZyIpOwotICAgICAgICBjb25zb2xl
LmFzc2VydCghZGVzY3JpcHRpb24gfHwgdHlwZW9mIGRlc2NyaXB0aW9uID09PSAic3RyaW5nIik7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF2YWx1ZSk7Ci0KLSAgICAgICAgdGhpcy5fb2JqZWN0
SWQgPSBvYmplY3RJZDsKLSAgICAgICAgdGhpcy5fZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsK
LSAgICAgICAgdGhpcy5faGFzQ2hpbGRyZW4gPSB0eXBlICE9PSAic3ltYm9sIjsKLSAgICAgICAg
dGhpcy5fc2l6ZSA9IHNpemU7Ci0gICAgICAgIHRoaXMuX3ByZXZpZXcgPSBwcmV2aWV3OwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIFByaW1pdGl2ZSBvciBudWxsLgotICAgICAgICBjb25zb2xl
LmFzc2VydCh0eXBlICE9PSAib2JqZWN0IiB8fCB2YWx1ZSA9PT0gbnVsbCk7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCFwcmV2aWV3KTsKLQotICAgICAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IGRl
c2NyaXB0aW9uIHx8ICh2YWx1ZSArICIiKTsKLSAgICAgICAgdGhpcy5faGFzQ2hpbGRyZW4gPSBm
YWxzZTsKLSAgICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTsKKyAgICBjb25zdHJ1Y3RvcihvYmpl
Y3RJZCwgdHlwZSwgc3VidHlwZSwgdmFsdWUsIGRlc2NyaXB0aW9uLCBzaXplLCBwcmV2aWV3KQor
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZSk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFwcmV2aWV3IHx8IHByZXZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuT2JqZWN0UHJl
dmlldyk7CisKKyAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CisgICAgICAgIHRoaXMuX3N1YnR5
cGUgPSBzdWJ0eXBlOworCisgICAgICAgIGlmIChvYmplY3RJZCkgeworICAgICAgICAgICAgLy8g
T2JqZWN0IG9yIFN5bWJvbC4KKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFzdWJ0eXBlIHx8
IHR5cGVvZiBzdWJ0eXBlID09PSAic3RyaW5nIik7CisgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dCghZGVzY3JpcHRpb24gfHwgdHlwZW9mIGRlc2NyaXB0aW9uID09PSAic3RyaW5nIik7CisgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydCghdmFsdWUpOworCisgICAgICAgICAgICB0aGlzLl9vYmpl
Y3RJZCA9IG9iamVjdElkOworICAgICAgICAgICAgdGhpcy5fZGVzY3JpcHRpb24gPSBkZXNjcmlw
dGlvbjsKKyAgICAgICAgICAgIHRoaXMuX2hhc0NoaWxkcmVuID0gdHlwZSAhPT0gInN5bWJvbCI7
CisgICAgICAgICAgICB0aGlzLl9zaXplID0gc2l6ZTsKKyAgICAgICAgICAgIHRoaXMuX3ByZXZp
ZXcgPSBwcmV2aWV3OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gUHJpbWl0aXZl
IG9yIG51bGwuCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlICE9PSAib2JqZWN0IiB8
fCB2YWx1ZSA9PT0gbnVsbCk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghcHJldmlldyk7
CisKKyAgICAgICAgICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gfHwgKHZhbHVl
ICsgIiIpOworICAgICAgICAgICAgdGhpcy5faGFzQ2hpbGRyZW4gPSBmYWxzZTsKKyAgICAgICAg
ICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIH0KICAgICB9Ci19OwogCi1XZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QcmltaXRpdmVWYWx1ZSA9IGZ1bmN0aW9uKHZhbHVlKQot
ewotICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCh1bmRlZmluZWQsIHR5
cGVvZiB2YWx1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHZhbHVlKTsKLX07CisgICAgLy8gU3Rh
dGljCiAKLVdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQgPSBmdW5jdGlvbihw
YXlsb2FkKQotewotICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBwYXlsb2FkID09PSAib2JqZWN0
IiwgIlJlbW90ZSBvYmplY3QgcGF5bG9hZCBzaG91bGQgb25seSBiZSBhbiBvYmplY3QiKTsKLQot
ICAgIGlmIChwYXlsb2FkLnN1YnR5cGUgPT09ICJhcnJheSIpIHsKLSAgICAgICAgLy8gQ09NUEFU
SUJJTElUWSAoaU9TIDgpOiBSdW50aW1lLlJlbW90ZU9iamVjdCBkaWQgbm90IGhhdmUgc2l6ZSBw
cm9wZXJ0eSwKLSAgICAgICAgLy8gaW5zdGVhZCBpdCB3YXMgdGFja2VkIG9udG8gdGhlIGVuZCBv
ZiB0aGUgZGVzY3JpcHRpb24sIGxpa2UgIkFycmF5WyNdIi4KLSAgICAgICAgdmFyIG1hdGNoID0g
cGF5bG9hZC5kZXNjcmlwdGlvbi5tYXRjaCgvXFsoXGQrKVxdJC8pOwotICAgICAgICBpZiAobWF0
Y2gpIHsKLSAgICAgICAgICAgIHBheWxvYWQuc2l6ZSA9IHBhcnNlSW50KG1hdGNoWzFdKTsKLSAg
ICAgICAgICAgIHBheWxvYWQuZGVzY3JpcHRpb24gPSBwYXlsb2FkLmRlc2NyaXB0aW9uLnJlcGxh
Y2UoL1xbXGQrXF0kLywgIiIpOwotICAgICAgICB9CisgICAgc3RhdGljIGZyb21QcmltaXRpdmVW
YWx1ZSh2YWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdCh1bmRlZmluZWQsIHR5cGVvZiB2YWx1ZSwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHZh
bHVlKTsKICAgICB9CiAKLSAgICBpZiAocGF5bG9hZC5wcmV2aWV3KSB7Ci0gICAgICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyA4KTogaU9TIDcgYW5kIDggZGlkIG5vdCBoYXZlIHR5cGUvc3VidHlw
ZS9kZXNjcmlwdGlvbiBvbgotICAgICAgICAvLyBSdW50aW1lLk9iamVjdFByZXZpZXcuIENvcHkg
dGhlbSBvdmVyIGZyb20gdGhlIFJlbW90ZU9iamVjdC4KLSAgICAgICAgaWYgKCFwYXlsb2FkLnBy
ZXZpZXcudHlwZSkgewotICAgICAgICAgICAgcGF5bG9hZC5wcmV2aWV3LnR5cGUgPSBwYXlsb2Fk
LnR5cGU7Ci0gICAgICAgICAgICBwYXlsb2FkLnByZXZpZXcuc3VidHlwZSA9IHBheWxvYWQuc3Vi
dHlwZTsKLSAgICAgICAgICAgIHBheWxvYWQucHJldmlldy5kZXNjcmlwdGlvbiA9IHBheWxvYWQu
ZGVzY3JpcHRpb247Ci0gICAgICAgICAgICBwYXlsb2FkLnByZXZpZXcuc2l6ZSA9IHBheWxvYWQu
c2l6ZTsKKyAgICBzdGF0aWMgZnJvbVBheWxvYWQocGF5bG9hZCkKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHR5cGVvZiBwYXlsb2FkID09PSAib2JqZWN0IiwgIlJlbW90ZSBvYmplY3Qg
cGF5bG9hZCBzaG91bGQgb25seSBiZSBhbiBvYmplY3QiKTsKKworICAgICAgICBpZiAocGF5bG9h
ZC5zdWJ0eXBlID09PSAiYXJyYXkiKSB7CisgICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChp
T1MgOCk6IFJ1bnRpbWUuUmVtb3RlT2JqZWN0IGRpZCBub3QgaGF2ZSBzaXplIHByb3BlcnR5LAor
ICAgICAgICAgICAgLy8gaW5zdGVhZCBpdCB3YXMgdGFja2VkIG9udG8gdGhlIGVuZCBvZiB0aGUg
ZGVzY3JpcHRpb24sIGxpa2UgIkFycmF5WyNdIi4KKyAgICAgICAgICAgIHZhciBtYXRjaCA9IHBh
eWxvYWQuZGVzY3JpcHRpb24ubWF0Y2goL1xbKFxkKylcXSQvKTsKKyAgICAgICAgICAgIGlmICht
YXRjaCkgeworICAgICAgICAgICAgICAgIHBheWxvYWQuc2l6ZSA9IHBhcnNlSW50KG1hdGNoWzFd
KTsKKyAgICAgICAgICAgICAgICBwYXlsb2FkLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlw
dGlvbi5yZXBsYWNlKC9cW1xkK1xdJC8sICIiKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQot
ICAgICAgICBwYXlsb2FkLnByZXZpZXcgPSBXZWJJbnNwZWN0b3IuT2JqZWN0UHJldmlldy5mcm9t
UGF5bG9hZChwYXlsb2FkLnByZXZpZXcpOwotICAgIH0KIAotICAgIHJldHVybiBuZXcgV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdChwYXlsb2FkLm9iamVjdElkLCBwYXlsb2FkLnR5cGUsIHBheWxv
YWQuc3VidHlwZSwgcGF5bG9hZC52YWx1ZSwgcGF5bG9hZC5kZXNjcmlwdGlvbiwgcGF5bG9hZC5z
aXplLCBwYXlsb2FkLnByZXZpZXcpOwotfTsKKyAgICAgICAgaWYgKHBheWxvYWQucHJldmlldykg
eworICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDgpOiBpT1MgNyBhbmQgOCBkaWQg
bm90IGhhdmUgdHlwZS9zdWJ0eXBlL2Rlc2NyaXB0aW9uIG9uCisgICAgICAgICAgICAvLyBSdW50
aW1lLk9iamVjdFByZXZpZXcuIENvcHkgdGhlbSBvdmVyIGZyb20gdGhlIFJlbW90ZU9iamVjdC4K
KyAgICAgICAgICAgIGlmICghcGF5bG9hZC5wcmV2aWV3LnR5cGUpIHsKKyAgICAgICAgICAgICAg
ICBwYXlsb2FkLnByZXZpZXcudHlwZSA9IHBheWxvYWQudHlwZTsKKyAgICAgICAgICAgICAgICBw
YXlsb2FkLnByZXZpZXcuc3VidHlwZSA9IHBheWxvYWQuc3VidHlwZTsKKyAgICAgICAgICAgICAg
ICBwYXlsb2FkLnByZXZpZXcuZGVzY3JpcHRpb24gPSBwYXlsb2FkLmRlc2NyaXB0aW9uOworICAg
ICAgICAgICAgICAgIHBheWxvYWQucHJldmlldy5zaXplID0gcGF5bG9hZC5zaXplOworICAgICAg
ICAgICAgfQogCi1XZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmNyZWF0ZUNhbGxBcmd1bWVudCA9
IGZ1bmN0aW9uKHZhbHVlT3JPYmplY3QpCi17Ci0gICAgaWYgKHZhbHVlT3JPYmplY3QgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KSB7Ci0gICAgICAgIGlmICh2YWx1ZU9yT2Jq
ZWN0Lm9iamVjdElkKQotICAgICAgICAgICAgcmV0dXJuIHtvYmplY3RJZDogdmFsdWVPck9iamVj
dC5vYmplY3RJZH07Ci0gICAgICAgIHJldHVybiB7dmFsdWU6IHZhbHVlT3JPYmplY3QudmFsdWV9
OworICAgICAgICAgICAgcGF5bG9hZC5wcmV2aWV3ID0gV2ViSW5zcGVjdG9yLk9iamVjdFByZXZp
ZXcuZnJvbVBheWxvYWQocGF5bG9hZC5wcmV2aWV3KTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdChwYXlsb2FkLm9iamVjdElkLCBwYXls
b2FkLnR5cGUsIHBheWxvYWQuc3VidHlwZSwgcGF5bG9hZC52YWx1ZSwgcGF5bG9hZC5kZXNjcmlw
dGlvbiwgcGF5bG9hZC5zaXplLCBwYXlsb2FkLnByZXZpZXcpOwogICAgIH0KIAotICAgIHJldHVy
biB7dmFsdWU6IHZhbHVlT3JPYmplY3R9OwotfTsKKyAgICBzdGF0aWMgY3JlYXRlQ2FsbEFyZ3Vt
ZW50KHZhbHVlT3JPYmplY3QpCisgICAgeworICAgICAgICBpZiAodmFsdWVPck9iamVjdCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QpIHsKKyAgICAgICAgICAgIGlmICh2YWx1
ZU9yT2JqZWN0Lm9iamVjdElkKQorICAgICAgICAgICAgICAgIHJldHVybiB7b2JqZWN0SWQ6IHZh
bHVlT3JPYmplY3Qub2JqZWN0SWR9OworICAgICAgICAgICAgcmV0dXJuIHt2YWx1ZTogdmFsdWVP
ck9iamVjdC52YWx1ZX07CisgICAgICAgIH0KIAotV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5y
ZXNvbHZlTm9kZSA9IGZ1bmN0aW9uKG5vZGUsIG9iamVjdEdyb3VwLCBjYWxsYmFjaykKLXsKLSAg
ICBET01BZ2VudC5yZXNvbHZlTm9kZShub2RlLmlkLCBvYmplY3RHcm91cCwgZnVuY3Rpb24oZXJy
b3IsIG9iamVjdCkgewotICAgICAgICBpZiAoIWNhbGxiYWNrKQotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4ge3ZhbHVlOiB2YWx1ZU9yT2JqZWN0fTsKKyAgICB9CiAKLSAgICAg
ICAgaWYgKGVycm9yIHx8ICFvYmplY3QpCi0gICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dC5mcm9tUGF5bG9hZChvYmplY3QpKTsKLSAgICB9KTsKLX07CisgICAgc3RhdGljIHJlc29sdmVO
b2RlKG5vZGUsIG9iamVjdEdyb3VwLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIERPTUFnZW50
LnJlc29sdmVOb2RlKG5vZGUuaWQsIG9iamVjdEdyb3VwLCBmdW5jdGlvbihlcnJvciwgb2JqZWN0
KSB7CisgICAgICAgICAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICAgICAgICAgIHJldHVybjsK
IAotV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC50eXBlID0gZnVuY3Rpb24ocmVtb3RlT2JqZWN0
KQotewotICAgIGlmIChyZW1vdGVPYmplY3QgPT09IG51bGwpCi0gICAgICAgIHJldHVybiAibnVs
bCI7CisgICAgICAgICAgICBpZiAoZXJyb3IgfHwgIW9iamVjdCkKKyAgICAgICAgICAgICAgICBj
YWxsYmFjayhudWxsKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsYmFj
ayhXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKG9iamVjdCkpOworICAgICAg
ICB9KTsKKyAgICB9CiAKLSAgICB2YXIgdHlwZSA9IHR5cGVvZiByZW1vdGVPYmplY3Q7Ci0gICAg
aWYgKHR5cGUgIT09ICJvYmplY3QiICYmIHR5cGUgIT09ICJmdW5jdGlvbiIpCi0gICAgICAgIHJl
dHVybiB0eXBlOworICAgIHN0YXRpYyB0eXBlKHJlbW90ZU9iamVjdCkKKyAgICB7CisgICAgICAg
IGlmIChyZW1vdGVPYmplY3QgPT09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gIm51bGwiOwog
Ci0gICAgcmV0dXJuIHJlbW90ZU9iamVjdC50eXBlOwotfTsKKyAgICAgICAgdmFyIHR5cGUgPSB0
eXBlb2YgcmVtb3RlT2JqZWN0OworICAgICAgICBpZiAodHlwZSAhPT0gIm9iamVjdCIgJiYgdHlw
ZSAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgICAgIHJldHVybiB0eXBlOwogCi1XZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5zcGVj
dG9yLlJlbW90ZU9iamVjdCwKKyAgICAgICAgcmV0dXJuIHJlbW90ZU9iamVjdC50eXBlOworICAg
IH0KKworICAgIC8vIFB1YmxpYwogCiAgICAgZ2V0IG9iamVjdElkKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9vYmplY3RJZDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCB0eXBlKCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl90eXBlOwotICAgIH0sCisgICAgfQogCiAgICAg
Z2V0IHN1YnR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnR5cGU7Ci0gICAg
fSwKKyAgICB9CiAKICAgICBnZXQgZGVzY3JpcHRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2Rlc2NyaXB0aW9uOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGhhc0NoaWxkcmVu
KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9oYXNDaGlsZHJlbjsKLSAgICB9LAorICAg
IH0KIAogICAgIGdldCB2YWx1ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7
Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgc2l6ZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5fc2l6ZSB8fCAwOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHByZXZpZXcoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3ByZXZpZXc7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBo
YXNTaXplOiBmdW5jdGlvbigpCisgICAgaGFzU2l6ZSgpCiAgICAgewogICAgICAgICByZXR1cm4g
dGhpcy5pc0FycmF5KCkgfHwgdGhpcy5pc0NvbGxlY3Rpb25UeXBlKCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBoYXNWYWx1ZTogZnVuY3Rpb24oKQorICAgIGhhc1ZhbHVlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiAiX3ZhbHVlIiBpbiB0aGlzOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9ycyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX2dldFByb3BlcnR5
RGVzY3JpcHRvcnModHJ1ZSwgY2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0QWxs
UHJvcGVydHlEZXNjcmlwdG9yczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgZ2V0QWxsUHJvcGVy
dHlEZXNjcmlwdG9ycyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX2dldFByb3BlcnR5
RGVzY3JpcHRvcnMoZmFsc2UsIGNhbGxiYWNrKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdldERp
c3BsYXlhYmxlUHJvcGVydHlEZXNjcmlwdG9yczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgZ2V0
RGlzcGxheWFibGVQcm9wZXJ0eURlc2NyaXB0b3JzKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAg
aWYgKCF0aGlzLl9vYmplY3RJZCB8fCB0aGlzLl9pc1N5bWJvbCgpKSB7CiAgICAgICAgICAgICBj
YWxsYmFjayhbXSk7CkBAIC0yMjAsNjggKzIyMywyNyBAQCBXZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHRoaXMuX2dl
dFByb3BlcnR5RGVzY3JpcHRvcnNSZXNvbHZlcihjYWxsYmFjaywgZXJyb3IsIG93bk9yR2V0dGVy
UHJvcGVydGllc0xpc3QpOwogICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXREaXNwbGF5YWJs
ZVByb3BlcnRpZXModGhpcy5fb2JqZWN0SWQsIHRydWUsIHRoaXMuX2dldFByb3BlcnR5RGVzY3Jp
cHRvcnNSZXNvbHZlci5iaW5kKHRoaXMsIGNhbGxiYWNrKSk7Ci0gICAgfSwKLQotICAgIF9nZXRQ
cm9wZXJ0eURlc2NyaXB0b3JzOiBmdW5jdGlvbihvd25Qcm9wZXJ0aWVzLCBjYWxsYmFjaykKLSAg
ICB7Ci0gICAgICAgIGlmICghdGhpcy5fb2JqZWN0SWQgfHwgdGhpcy5faXNTeW1ib2woKSkgewot
ICAgICAgICAgICAgY2FsbGJhY2soW10pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLQotICAgICAgICBSdW50aW1lQWdlbnQuZ2V0UHJvcGVydGllcyh0aGlzLl9vYmplY3RJZCwg
b3duUHJvcGVydGllcywgdHJ1ZSwgdGhpcy5fZ2V0UHJvcGVydHlEZXNjcmlwdG9yc1Jlc29sdmVy
LmJpbmQodGhpcywgY2FsbGJhY2spKTsKLSAgICB9LAotCi0gICAgX2dldFByb3BlcnR5RGVzY3Jp
cHRvcnNSZXNvbHZlcjogZnVuY3Rpb24oY2FsbGJhY2ssIGVycm9yLCBwcm9wZXJ0aWVzLCBpbnRl
cm5hbFByb3BlcnRpZXMpCi0gICAgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFyIGRlc2NyaXB0b3JzID0gcHJvcGVydGllcy5tYXAoZnVuY3Rpb24ocGF5bG9hZCkgewot
ICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3IuZnJvbVBh
eWxvYWQocGF5bG9hZCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGlmIChpbnRlcm5hbFByb3Bl
cnRpZXMpIHsKLSAgICAgICAgICAgIGRlc2NyaXB0b3JzID0gZGVzY3JpcHRvcnMuY29uY2F0KGlu
dGVybmFsUHJvcGVydGllcy5tYXAoZnVuY3Rpb24ocGF5bG9hZCkgewotICAgICAgICAgICAgICAg
IHJldHVybiBXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yLmZyb21QYXlsb2FkKHBheWxv
YWQsIHRydWUpOwotICAgICAgICAgICAgfSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgY2FsbGJh
Y2soZGVzY3JpcHRvcnMpOwotICAgIH0sCi0KLSAgICAvLyBGSVhNRTogUGhhc2Ugb3V0IHRoZXNl
IGZ1bmN0aW9ucy4gVGhleSByZXR1cm4gUmVtb3RlT2JqZWN0UHJvcGVydHkgaW5zdGVhZCBvZiBQ
cm9wZXJ0eURlc2NyaXB0b3JzLgorICAgIH0KIAotICAgIGRlcHJlY2F0ZWRHZXRPd25Qcm9wZXJ0
aWVzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICAvLyBGSVhNRTogUGhhc2Ugb3V0IHRoZXNlIGRl
cHJlY2F0ZWQgZnVuY3Rpb25zLiBUaGV5IHJldHVybiBEZXByZWNhdGVkUmVtb3RlT2JqZWN0UHJv
cGVydHkgaW5zdGVhZCBvZiBQcm9wZXJ0eURlc2NyaXB0b3JzLgorICAgIGRlcHJlY2F0ZWRHZXRP
d25Qcm9wZXJ0aWVzKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdGhpcy5fZGVwcmVjYXRlZEdl
dFByb3BlcnRpZXModHJ1ZSwgY2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0gICAgZGVwcmVj
YXRlZEdldEFsbFByb3BlcnRpZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGRlcHJlY2F0ZWRH
ZXRBbGxQcm9wZXJ0aWVzKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdGhpcy5fZGVwcmVjYXRl
ZEdldFByb3BlcnRpZXMoZmFsc2UsIGNhbGxiYWNrKTsKLSAgICB9LAotCi0gICAgX2RlcHJlY2F0
ZWRHZXRQcm9wZXJ0aWVzOiBmdW5jdGlvbihvd25Qcm9wZXJ0aWVzLCBjYWxsYmFjaykKLSAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5fb2JqZWN0SWQgfHwgdGhpcy5faXNTeW1ib2woKSkgewotICAg
ICAgICAgICAgY2FsbGJhY2soW10pOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgUnVudGltZUFnZW50LmdldFByb3BlcnRpZXModGhpcy5fb2JqZWN0SWQsIG93blBy
b3BlcnRpZXMsIHRoaXMuX2RlcHJlY2F0ZWRHZXRQcm9wZXJ0aWVzUmVzb2x2ZXIuYmluZCh0aGlz
LCBjYWxsYmFjaykpOwotICAgIH0sCisgICAgfQogCi0gICAgZGVwcmVjYXRlZEdldERpc3BsYXlh
YmxlUHJvcGVydGllczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgZGVwcmVjYXRlZEdldERpc3Bs
YXlhYmxlUHJvcGVydGllcyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fb2Jq
ZWN0SWQgfHwgdGhpcy5faXNTeW1ib2woKSkgewogICAgICAgICAgICAgY2FsbGJhY2soW10pOwpA
QCAtMzA3LDQ2ICsyNjksMTYgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICB0aGlzLl9kZXByZWNhdGVkR2V0UHJv
cGVydGllc1Jlc29sdmVyKGNhbGxiYWNrLCBlcnJvciwgb3duT3JHZXR0ZXJQcm9wZXJ0aWVzTGlz
dCk7CiAgICAgICAgICAgICB9LmJpbmQodGhpcykpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAKICAgICAgICAgUnVudGltZUFnZW50LmdldERpc3BsYXlhYmxlUHJvcGVydGllcyh0
aGlzLl9vYmplY3RJZCwgdGhpcy5fZGVwcmVjYXRlZEdldFByb3BlcnRpZXNSZXNvbHZlci5iaW5k
KHRoaXMsIGNhbGxiYWNrKSk7Ci0gICAgfSwKLQotICAgIF9kZXByZWNhdGVkR2V0UHJvcGVydGll
c1Jlc29sdmVyOiBmdW5jdGlvbihjYWxsYmFjaywgZXJyb3IsIHByb3BlcnRpZXMsIGludGVybmFs
UHJvcGVydGllcykKLSAgICB7Ci0gICAgICAgIGlmIChlcnJvcikgewotICAgICAgICAgICAgY2Fs
bGJhY2sobnVsbCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBp
ZiAoaW50ZXJuYWxQcm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVy
dGllcy5jb25jYXQoaW50ZXJuYWxQcm9wZXJ0aWVzLm1hcChmdW5jdGlvbihkZXNjcmlwdG9yKSB7
Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRvci53cml0YWJsZSA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAg
ZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRv
ci5pc093biA9IHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7Ci0gICAg
ICAgICAgICB9KSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBwcm9wZXJ0aWVzICYmIGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsg
KytpKSB7Ci0gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOwotICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmdldCB8fCBwcm9wZXJ0eS5zZXQpIHsKLSAgICAgICAgICAgICAg
ICBpZiAocHJvcGVydHkuZ2V0KQotICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcg
V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5KCJnZXQgIiArIHByb3BlcnR5Lm5hbWUs
IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQocHJvcGVydHkuZ2V0KSwgcHJv
cGVydHkpKTsKLSAgICAgICAgICAgICAgICBpZiAocHJvcGVydHkuc2V0KQotICAgICAgICAgICAg
ICAgICAgICByZXN1bHQucHVzaChuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5
KCJzZXQgIiArIHByb3BlcnR5Lm5hbWUsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBh
eWxvYWQocHJvcGVydHkuc2V0KSwgcHJvcGVydHkpKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJv
cGVydHkocHJvcGVydHkubmFtZSwgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9h
ZChwcm9wZXJ0eS52YWx1ZSksIHByb3BlcnR5KSk7Ci0gICAgICAgIH0KLSAgICAgICAgY2FsbGJh
Y2socmVzdWx0KTsKLSAgICB9LAorICAgIH0KIAotICAgIHNldFByb3BlcnR5VmFsdWU6IGZ1bmN0
aW9uKG5hbWUsIHZhbHVlLCBjYWxsYmFjaykKKyAgICBzZXRQcm9wZXJ0eVZhbHVlKG5hbWUsIHZh
bHVlLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fb2JqZWN0SWQgfHwgdGhp
cy5faXNTeW1ib2woKSkgewogICAgICAgICAgICAgY2FsbGJhY2soIkNhbid0IHNldCBhIHByb3Bl
cnR5IG9mIG5vbi1vYmplY3QuIik7CkBAIC0zNjgsNyArMzAwLDkgQEAgV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGRl
bGV0ZSByZXN1bHQuZGVzY3JpcHRpb247IC8vIE9wdGltaXplIG9uIHRyYWZmaWMuCi0gICAgICAg
ICAgICBSdW50aW1lQWdlbnQuY2FsbEZ1bmN0aW9uT24odGhpcy5fb2JqZWN0SWQsIHNldFByb3Bl
cnR5VmFsdWUudG9TdHJpbmcoKSwgW3sgdmFsdWU6bmFtZSB9LCByZXN1bHRdLCB0cnVlLCB1bmRl
ZmluZWQsIHByb3BlcnR5U2V0Q2FsbGJhY2suYmluZCh0aGlzKSk7CisKKyAgICAgICAgICAgIFJ1
bnRpbWVBZ2VudC5jYWxsRnVuY3Rpb25Pbih0aGlzLl9vYmplY3RJZCwgc2V0UHJvcGVydHlWYWx1
ZS50b1N0cmluZygpLCBbe3ZhbHVlOm5hbWV9LCByZXN1bHRdLCB0cnVlLCB1bmRlZmluZWQsIHBy
b3BlcnR5U2V0Q2FsbGJhY2suYmluZCh0aGlzKSk7CisKICAgICAgICAgICAgIGlmIChyZXN1bHQu
X29iamVjdElkKQogICAgICAgICAgICAgICAgIFJ1bnRpbWVBZ2VudC5yZWxlYXNlT2JqZWN0KHJl
c3VsdC5fb2JqZWN0SWQpOwogICAgICAgICB9CkBAIC0zNzksMzEgKzMxMywyNyBAQCBXZWJJbnNw
ZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICBjYWxsYmFj
ayhlcnJvciB8fCByZXN1bHQuZGVzY3JpcHRpb24pOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgfQotICAg
IH0sCi0KLSAgICBfaXNTeW1ib2w6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl90eXBlID09PSAic3ltYm9sIjsKLSAgICB9LAorICAgIH0KIAotICAgIGlzQXJyYXk6IGZ1
bmN0aW9uKCkKKyAgICBpc0FycmF5KCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdWJ0
eXBlID09PSAiYXJyYXkiOwotICAgIH0sCisgICAgfQogCi0gICAgaXNDb2xsZWN0aW9uVHlwZTog
ZnVuY3Rpb24oKQorICAgIGlzQ29sbGVjdGlvblR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3N1YnR5cGUgPT09ICJtYXAiIHx8IHRoaXMuX3N1YnR5cGUgPT09ICJzZXQiIHx8IHRo
aXMuX3N1YnR5cGUgPT09ICJ3ZWFrbWFwIjsKLSAgICB9LAorICAgIH0KIAotICAgIGlzV2Vha0Nv
bGxlY3Rpb246IGZ1bmN0aW9uKCkKKyAgICBpc1dlYWtDb2xsZWN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9zdWJ0eXBlID09PSAid2Vha21hcCI7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBnZXRDb2xsZWN0aW9uRW50cmllczogZnVuY3Rpb24oc3RhcnQsIG51bWJlclRvRmV0Y2gs
IGNhbGxiYWNrKQorICAgIGdldENvbGxlY3Rpb25FbnRyaWVzKHN0YXJ0LCBudW1iZXJUb0ZldGNo
LCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHN0YXJ0ID0gdHlwZW9mIHN0YXJ0ID09PSAibnVt
YmVyIiA/IHN0YXJ0IDogMDsKICAgICAgICAgbnVtYmVyVG9GZXRjaCA9IHR5cGVvZiBudW1iZXJU
b0ZldGNoID09PSAibnVtYmVyIiA/IG51bWJlclRvRmV0Y2ggOiAxMDA7CkBAIC00MjEsMjQgKzM1
MSwyNCBAQCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIGVudHJpZXMgPSBlbnRyaWVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gV2ViSW5z
cGVjdG9yLkNvbGxlY3Rpb25FbnRyeS5mcm9tUGF5bG9hZChlbnRyeSk7IH0pOwogICAgICAgICAg
ICAgY2FsbGJhY2soZW50cmllcyk7CiAgICAgICAgIH0pOwotICAgIH0sCisgICAgfQogCi0gICAg
cmVsZWFzZVdlYWtDb2xsZWN0aW9uRW50cmllczogZnVuY3Rpb24oKQorICAgIHJlbGVhc2VXZWFr
Q29sbGVjdGlvbkVudHJpZXMoKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5p
c1dlYWtDb2xsZWN0aW9uKCkpOwogCiAgICAgICAgIFJ1bnRpbWVBZ2VudC5yZWxlYXNlT2JqZWN0
R3JvdXAodGhpcy5fd2Vha0NvbGxlY3Rpb25PYmplY3RHcm91cCgpKTsKLSAgICB9LAorICAgIH0K
IAotICAgIHB1c2hOb2RlVG9Gcm9udGVuZDogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgcHVzaE5v
ZGVUb0Zyb250ZW5kKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX29iamVjdElk
KQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLnB1c2hOb2RlVG9Gcm9u
dGVuZCh0aGlzLl9vYmplY3RJZCwgY2FsbGJhY2spOwogICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBjYWxsYmFjaygwKTsKLSAgICB9LAorICAgIH0KIAotICAgIGNhbGxGdW5jdGlvbjogZnVuY3Rp
b24oZnVuY3Rpb25EZWNsYXJhdGlvbiwgYXJncywgZ2VuZXJhdGVQcmV2aWV3LCBjYWxsYmFjaykK
KyAgICBjYWxsRnVuY3Rpb24oZnVuY3Rpb25EZWNsYXJhdGlvbiwgYXJncywgZ2VuZXJhdGVQcmV2
aWV3LCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2soZXJyb3Is
IHJlc3VsdCwgd2FzVGhyb3duKQogICAgICAgICB7CkBAIC00NTAsOSArMzgwLDkgQEAgV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBhcmdzID0gYXJn
cy5tYXAoV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5jcmVhdGVDYWxsQXJndW1lbnQpOwogCiAg
ICAgICAgIFJ1bnRpbWVBZ2VudC5jYWxsRnVuY3Rpb25Pbih0aGlzLl9vYmplY3RJZCwgZnVuY3Rp
b25EZWNsYXJhdGlvbi50b1N0cmluZygpLCBhcmdzLCB0cnVlLCB1bmRlZmluZWQsIGdlbmVyYXRl
UHJldmlldywgbXljYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYWxsRnVuY3Rpb25K
U09OOiBmdW5jdGlvbihmdW5jdGlvbkRlY2xhcmF0aW9uLCBhcmdzLCBjYWxsYmFjaykKKyAgICBj
YWxsRnVuY3Rpb25KU09OKGZ1bmN0aW9uRGVjbGFyYXRpb24sIGFyZ3MsIGNhbGxiYWNrKQogICAg
IHsKICAgICAgICAgZnVuY3Rpb24gbXljYWxsYmFjayhlcnJvciwgcmVzdWx0LCB3YXNUaHJvd24p
CiAgICAgICAgIHsKQEAgLTQ2MCw5ICszOTAsOSBAQCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIFJ1bnRpbWVBZ2VudC5jYWxsRnVu
Y3Rpb25Pbih0aGlzLl9vYmplY3RJZCwgZnVuY3Rpb25EZWNsYXJhdGlvbi50b1N0cmluZygpLCBh
cmdzLCB0cnVlLCB0cnVlLCBteWNhbGxiYWNrKTsKLSAgICB9LAorICAgIH0KICAgICAKLSAgICBp
bnZva2VHZXR0ZXI6IGZ1bmN0aW9uKGdldHRlclJlbW90ZU9iamVjdCwgY2FsbGJhY2spCisgICAg
aW52b2tlR2V0dGVyKGdldHRlclJlbW90ZU9iamVjdCwgY2FsbGJhY2spCiAgICAgewogICAgICAg
ICBjb25zb2xlLmFzc2VydChnZXR0ZXJSZW1vdGVPYmplY3QgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0KTsKIApAQCAtNDcyLDQwICs0MDIsMzcgQEAgV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmNhbGxG
dW5jdGlvbihiYWNrZW5kSW52b2tlR2V0dGVyLCBbZ2V0dGVyUmVtb3RlT2JqZWN0XSwgdHJ1ZSwg
Y2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0gICAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
OiBmdW5jdGlvbihwcm9wZXJ0eU5hbWUsIGNhbGxiYWNrKQorICAgIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihwcm9wZXJ0eU5hbWUsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYgKCFSdW50
aW1lQWdlbnQuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKSB7Ci0gICAgICAgICAgICBmdW5jdGlv
biBiYWNrZW5kR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHByb3BlcnR5TmFtZSkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1twcm9wZXJ0eU5hbWVdOwotICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICBmdW5jdGlvbiB3cmFwcGVkQ2FsbGJhY2soZXJyb3IsIHJl
c3VsdCwgd2FzVGhyb3duKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChlcnJv
ciB8fCB3YXNUaHJvd24gfHwgIShyZXN1bHQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3Rl
T2JqZWN0KSkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24g
YmFja2VuZEdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm9wZXJ0eU5hbWUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzW3Byb3BlcnR5TmFtZV07CisgICAgICAgIH0KIAotICAg
ICAgICAgICAgICAgIHZhciBmYWtlRGVzY3JpcHRvciA9IHtuYW1lOiBwcm9wZXJ0eU5hbWUsIHZh
bHVlOiByZXN1bHQsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIGVudW1lcmFi
bGU6IGZhbHNlfTsKLSAgICAgICAgICAgICAgICB2YXIgZmFrZVByb3BlcnR5RGVzY3JpcHRvciA9
IG5ldyBXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yKGZha2VEZXNjcmlwdG9yLCB0cnVl
LCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWtlUHJv
cGVydHlEZXNjcmlwdG9yKTsKKyAgICAgICAgZnVuY3Rpb24gd3JhcHBlZENhbGxiYWNrKGVycm9y
LCByZXN1bHQsIHdhc1Rocm93bikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGVycm9yIHx8
IHdhc1Rocm93biB8fCAhKHJlc3VsdCBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QpKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB0aGlzLmNhbGxGdW5jdGlvbihi
YWNrZW5kR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLCBbcHJvcGVydHlOYW1lXSwgZmFsc2UsIHdy
YXBwZWRDYWxsYmFjayk7CisgICAgICAgICAgICB2YXIgZmFrZURlc2NyaXB0b3IgPSB7bmFtZTog
cHJvcGVydHlOYW1lLCB2YWx1ZTogcmVzdWx0LCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxl
OiB0cnVlLCBlbnVtZXJhYmxlOiBmYWxzZX07CisgICAgICAgICAgICB2YXIgZmFrZVByb3BlcnR5
RGVzY3JpcHRvciA9IG5ldyBXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yKGZha2VEZXNj
cmlwdG9yLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgIGNhbGxiYWNr
KGZha2VQcm9wZXJ0eURlc2NyaXB0b3IpOwogICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBhIHJlYWwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yPwotICAgIH0sCisgICAg
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgYSByZWFsIFJ1bnRpbWVBZ2VudC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3I/CisgICAgICAgIHRoaXMuY2FsbEZ1bmN0aW9uKGJhY2tlbmRHZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IsIFtwcm9wZXJ0eU5hbWVdLCBmYWxzZSwgd3JhcHBlZENhbGxiYWNrKTsK
KyAgICB9CiAKLSAgICByZWxlYXNlOiBmdW5jdGlvbigpCisgICAgcmVsZWFzZSgpCiAgICAgewog
ICAgICAgICBSdW50aW1lQWdlbnQucmVsZWFzZU9iamVjdCh0aGlzLl9vYmplY3RJZCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBhcnJheUxlbmd0aDogZnVuY3Rpb24oKQorICAgIGFycmF5TGVuZ3Ro
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zdWJ0eXBlICE9PSAiYXJyYXkiKQogICAgICAg
ICAgICAgcmV0dXJuIDA7CkBAIC01MTUsMzIgKzQ0MiwxMTYgQEAgV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICBy
ZXR1cm4gcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApOwotICAgIH0sCisgICAgfQogCi0gICAgYXND
YWxsQXJndW1lbnQ6IGZ1bmN0aW9uKCkKKyAgICBhc0NhbGxBcmd1bWVudCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5jcmVhdGVDYWxsQXJndW1lbnQo
dGhpcyk7Ci0gICAgfSwKKyAgICB9CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfd2Vha0NvbGxl
Y3Rpb25PYmplY3RHcm91cDogZnVuY3Rpb24oKQorICAgIF9pc1N5bWJvbCgpCisgICAgeworICAg
ICAgICByZXR1cm4gdGhpcy5fdHlwZSA9PT0gInN5bWJvbCI7CisgICAgfQorCisgICAgX3dlYWtD
b2xsZWN0aW9uT2JqZWN0R3JvdXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5n
aWZ5KHRoaXMuX29iamVjdElkKSArICItV2Vha01hcCI7CiAgICAgfQotfTsKIAotV2ViSW5zcGVj
dG9yLlJlbW90ZU9iamVjdFByb3BlcnR5ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUsIGRlc2NyaXB0
b3IpCi17Ci0gICAgdGhpcy5uYW1lID0gbmFtZTsKLSAgICB0aGlzLnZhbHVlID0gdmFsdWU7Ci0g
ICAgdGhpcy5lbnVtZXJhYmxlID0gZGVzY3JpcHRvciA/ICEhZGVzY3JpcHRvci5lbnVtZXJhYmxl
IDogdHJ1ZTsKLSAgICB0aGlzLndyaXRhYmxlID0gZGVzY3JpcHRvciA/ICEhZGVzY3JpcHRvci53
cml0YWJsZSA6IHRydWU7Ci0gICAgaWYgKGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci53YXNUaHJv
d24pCi0gICAgICAgIHRoaXMud2FzVGhyb3duID0gdHJ1ZTsKKyAgICBfZ2V0UHJvcGVydHlEZXNj
cmlwdG9ycyhvd25Qcm9wZXJ0aWVzLCBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmICghdGhp
cy5fb2JqZWN0SWQgfHwgdGhpcy5faXNTeW1ib2woKSkgeworICAgICAgICAgICAgY2FsbGJhY2so
W10pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgUnVudGltZUFn
ZW50LmdldFByb3BlcnRpZXModGhpcy5fb2JqZWN0SWQsIG93blByb3BlcnRpZXMsIHRydWUsIHRo
aXMuX2dldFByb3BlcnR5RGVzY3JpcHRvcnNSZXNvbHZlci5iaW5kKHRoaXMsIGNhbGxiYWNrKSk7
CisgICAgfQorCisgICAgX2dldFByb3BlcnR5RGVzY3JpcHRvcnNSZXNvbHZlcihjYWxsYmFjaywg
ZXJyb3IsIHByb3BlcnRpZXMsIGludGVybmFsUHJvcGVydGllcykKKyAgICB7CisgICAgICAgIGlm
IChlcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICB2YXIgZGVzY3JpcHRvcnMgPSBwcm9wZXJ0aWVzLm1h
cChmdW5jdGlvbihwYXlsb2FkKSB7CisgICAgICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlBy
b3BlcnR5RGVzY3JpcHRvci5mcm9tUGF5bG9hZChwYXlsb2FkKTsKKyAgICAgICAgfSk7CisKKyAg
ICAgICAgaWYgKGludGVybmFsUHJvcGVydGllcykgeworICAgICAgICAgICAgZGVzY3JpcHRvcnMg
PSBkZXNjcmlwdG9ycy5jb25jYXQoaW50ZXJuYWxQcm9wZXJ0aWVzLm1hcChmdW5jdGlvbihwYXls
b2FkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2Ny
aXB0b3IuZnJvbVBheWxvYWQocGF5bG9hZCwgdHJ1ZSk7CisgICAgICAgICAgICB9KSk7CisgICAg
ICAgIH0KKworICAgICAgICBjYWxsYmFjayhkZXNjcmlwdG9ycyk7CisgICAgfQorCisgICAgLy8g
RklYTUU6IFBoYXNlIG91dCB0aGVzZSBkZXByZWNhdGVkIGZ1bmN0aW9ucy4gVGhleSByZXR1cm4g
RGVwcmVjYXRlZFJlbW90ZU9iamVjdFByb3BlcnR5IGluc3RlYWQgb2YgUHJvcGVydHlEZXNjcmlw
dG9ycy4KKyAgICBfZGVwcmVjYXRlZEdldFByb3BlcnRpZXMob3duUHJvcGVydGllcywgY2FsbGJh
Y2spCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX29iamVjdElkIHx8IHRoaXMuX2lzU3ltYm9s
KCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFtdKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRQcm9wZXJ0aWVzKHRoaXMuX29iamVj
dElkLCBvd25Qcm9wZXJ0aWVzLCB0aGlzLl9kZXByZWNhdGVkR2V0UHJvcGVydGllc1Jlc29sdmVy
LmJpbmQodGhpcywgY2FsbGJhY2spKTsKKyAgICB9CisKKyAgICBfZGVwcmVjYXRlZEdldFByb3Bl
cnRpZXNSZXNvbHZlcihjYWxsYmFjaywgZXJyb3IsIHByb3BlcnRpZXMsIGludGVybmFsUHJvcGVy
dGllcykKKyAgICB7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgY2FsbGJhY2so
bnVsbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW50
ZXJuYWxQcm9wZXJ0aWVzKSB7CisgICAgICAgICAgICBwcm9wZXJ0aWVzID0gcHJvcGVydGllcy5j
b25jYXQoaW50ZXJuYWxQcm9wZXJ0aWVzLm1hcChmdW5jdGlvbihkZXNjcmlwdG9yKSB7CisgICAg
ICAgICAgICAgICAgZGVzY3JpcHRvci53cml0YWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAg
IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZGVzY3Jp
cHRvci5lbnVtZXJhYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRvci5pc093
biA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3I7CisgICAgICAgICAg
ICB9KSk7CisgICAgICAgIH0KKworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBwcm9wZXJ0aWVzICYmIGkgPCBwcm9wZXJ0aWVzLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBwcm9wZXJ0aWVzW2ldOworICAgICAgICAgICAg
aWYgKHByb3BlcnR5LmdldCB8fCBwcm9wZXJ0eS5zZXQpIHsKKyAgICAgICAgICAgICAgICBpZiAo
cHJvcGVydHkuZ2V0KQorICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgV2ViSW5z
cGVjdG9yLkRlcHJlY2F0ZWRSZW1vdGVPYmplY3RQcm9wZXJ0eSgiZ2V0ICIgKyBwcm9wZXJ0eS5u
YW1lLCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHByb3BlcnR5LmdldCks
IHByb3BlcnR5KSk7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LnNldCkKKyAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IFdlYkluc3BlY3Rvci5EZXByZWNhdGVkUmVtb3Rl
T2JqZWN0UHJvcGVydHkoInNldCAiICsgcHJvcGVydHkubmFtZSwgV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdC5mcm9tUGF5bG9hZChwcm9wZXJ0eS5zZXQpLCBwcm9wZXJ0eSkpOworICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IFdlYkluc3BlY3Rvci5E
ZXByZWNhdGVkUmVtb3RlT2JqZWN0UHJvcGVydHkocHJvcGVydHkubmFtZSwgV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwcm9wZXJ0eS52YWx1ZSksIHByb3BlcnR5KSk7Cisg
ICAgICAgIH0KKworICAgICAgICBjYWxsYmFjayhyZXN1bHQpOworICAgIH0KIH07CiAKLVdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eS5mcm9tUHJpbWl0aXZlVmFsdWUgPSBmdW5jdGlv
bihuYW1lLCB2YWx1ZSkKKy8vIEZJWE1FOiBQaGFzZSBvdXQgdGhpcyBkZXByZWNhdGVkIGNsYXNz
LgorV2ViSW5zcGVjdG9yLkRlcHJlY2F0ZWRSZW1vdGVPYmplY3RQcm9wZXJ0eSA9IGNsYXNzIERl
cHJlY2F0ZWRSZW1vdGVPYmplY3RQcm9wZXJ0eQogewotICAgIHJldHVybiBuZXcgV2ViSW5zcGVj
dG9yLlJlbW90ZU9iamVjdFByb3BlcnR5KG5hbWUsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qu
ZnJvbVByaW1pdGl2ZVZhbHVlKHZhbHVlKSk7CisgICAgY29uc3RydWN0b3IobmFtZSwgdmFsdWUs
IGRlc2NyaXB0b3IpCisgICAgeworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICB0
aGlzLnZhbHVlID0gdmFsdWU7CisgICAgICAgIHRoaXMuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3Ig
PyAhIWRlc2NyaXB0b3IuZW51bWVyYWJsZSA6IHRydWU7CisgICAgICAgIHRoaXMud3JpdGFibGUg
PSBkZXNjcmlwdG9yID8gISFkZXNjcmlwdG9yLndyaXRhYmxlIDogdHJ1ZTsKKyAgICAgICAgaWYg
KGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci53YXNUaHJvd24pCisgICAgICAgICAgICB0aGlzLndh
c1Rocm93biA9IHRydWU7CisgICAgfQorCisgICAgLy8gU3RhdGljCisKKyAgICBmcm9tUHJpbWl0
aXZlVmFsdWUobmFtZSwgdmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3Bl
Y3Rvci5EZXByZWNhdGVkUmVtb3RlT2JqZWN0UHJvcGVydHkobmFtZSwgV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUodmFsdWUpKTsKKyAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVwbGF5
T2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9SZXBsYXlPYnNlcnZlci5qcwppbmRleCAyY2FkYzY2Li5lMGE4NjcxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZXBsYXlPYnNlcnZl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9S
ZXBsYXlPYnNlcnZlci5qcwpAQCAtMjQsMTAzICsyNCw5NiBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5SZXBsYXlQb3NpdGlvbiA9IGZ1
bmN0aW9uKHNlZ21lbnRPZmZzZXQsIGlucHV0T2Zmc2V0KQorLy8gRklYTUU6IFRoaXMgUmVwbGF5
UG9zaXRpb24gY2xhc3Mgc2hvdWxkbid0IGJlIGhlcmUsIG5vIG1hdHRlciBob3cgc2ltcGxlIGl0
IGlzLgorV2ViSW5zcGVjdG9yLlJlcGxheVBvc2l0aW9uID0gY2xhc3MgUmVwbGF5UG9zaXRpb24K
IHsKLSAgICB0aGlzLnNlZ21lbnRPZmZzZXQgPSBzZWdtZW50T2Zmc2V0OwotICAgIHRoaXMuaW5w
dXRPZmZzZXQgPSBpbnB1dE9mZnNldDsKLX07Ci0KLVdlYkluc3BlY3Rvci5SZXBsYXlQb3NpdGlv
bi5mcm9tUHJvdG9jb2wgPSBmdW5jdGlvbihwYXlsb2FkKQotewotICAgIHJldHVybiBuZXcgV2Vi
SW5zcGVjdG9yLlJlcGxheVBvc2l0aW9uKHBheWxvYWQuc2VnbWVudE9mZnNldCwgcGF5bG9hZC5p
bnB1dE9mZnNldCk7CisgICAgY29uc3RydWN0b3Ioc2VnbWVudE9mZnNldCwgaW5wdXRPZmZzZXQp
CisgICAgeworICAgICAgICB0aGlzLnNlZ21lbnRPZmZzZXQgPSBzZWdtZW50T2Zmc2V0OworICAg
ICAgICB0aGlzLmlucHV0T2Zmc2V0ID0gaW5wdXRPZmZzZXQ7CisgICAgfQogfTsKIAotV2ViSW5z
cGVjdG9yLlJlcGxheU9ic2VydmVyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlJlcGxheU9i
c2VydmVyID0gY2xhc3MgUmVwbGF5T2JzZXJ2ZXIKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0
aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4K
LSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19OworICAgIC8vIEV2ZW50
cyBkZWZpbmVkIGJ5IHRoZSAiUmVwbGF5IiBkb21haW4uCiAKLVdlYkluc3BlY3Rvci5SZXBsYXlP
YnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5SZXBs
YXlPYnNlcnZlciwKLSAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBl
LAotCi0gICAgY2FwdHVyZVN0YXJ0ZWQ6IGZ1bmN0aW9uKCkKKyAgICBjYXB0dXJlU3RhcnRlZCgp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5jYXB0dXJlU3RhcnRl
ZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgY2FwdHVyZVN0b3BwZWQ6IGZ1bmN0aW9uKCkKKyAg
ICBjYXB0dXJlU3RvcHBlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFu
YWdlci5jYXB0dXJlU3RvcHBlZCgpOwotICAgIH0sCisgICAgfQogCi0gICAgcGxheWJhY2tTdGFy
dGVkOiBmdW5jdGlvbigpCisgICAgcGxheWJhY2tTdGFydGVkKCkKICAgICB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnBsYXliYWNrU3RhcnRlZCgpOwotICAgIH0sCisgICAg
fQogCi0gICAgcGxheWJhY2tIaXRQb3NpdGlvbjogZnVuY3Rpb24ocmVwbGF5UG9zaXRpb24sIHRp
bWVzdGFtcCkKKyAgICBwbGF5YmFja0hpdFBvc2l0aW9uKHJlcGxheVBvc2l0aW9uLCB0aW1lc3Rh
bXApCiAgICAgewotICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5wbGF5YmFja0hp
dFBvc2l0aW9uKFdlYkluc3BlY3Rvci5SZXBsYXlQb3NpdGlvbi5mcm9tUHJvdG9jb2wocmVwbGF5
UG9zaXRpb24pLCB0aW1lc3RhbXApOwotICAgIH0sCisgICAgICAgIFdlYkluc3BlY3Rvci5yZXBs
YXlNYW5hZ2VyLnBsYXliYWNrSGl0UG9zaXRpb24obmV3IFdlYkluc3BlY3Rvci5SZXBsYXlQb3Np
dGlvbihyZXBsYXlQb3NpdGlvbi5zZWdtZW50T2Zmc2V0LCByZXBsYXlQb3NpdGlvbi5pbnB1dE9m
ZnNldCksIHRpbWVzdGFtcCk7CisgICAgfQogCi0gICAgcGxheWJhY2tQYXVzZWQ6IGZ1bmN0aW9u
KHJlcGxheVBvc2l0aW9uKQorICAgIHBsYXliYWNrUGF1c2VkKHJlcGxheVBvc2l0aW9uKQogICAg
IHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucGxheWJhY2tQYXVzZWQoV2Vi
SW5zcGVjdG9yLlJlcGxheVBvc2l0aW9uLmZyb21Qcm90b2NvbChyZXBsYXlQb3NpdGlvbikpOwot
ICAgIH0sCisgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnBsYXliYWNrUGF1c2Vk
KG5ldyBXZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24ocmVwbGF5UG9zaXRpb24uc2VnbWVudE9m
ZnNldCwgcmVwbGF5UG9zaXRpb24uaW5wdXRPZmZzZXQpKTsKKyAgICB9CiAKLSAgICBwbGF5YmFj
a0ZpbmlzaGVkOiBmdW5jdGlvbigpCisgICAgcGxheWJhY2tGaW5pc2hlZCgpCiAgICAgewogICAg
ICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5wbGF5YmFja0ZpbmlzaGVkKCk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICBpbnB1dFN1cHByZXNzaW9uQ2hhbmdlZDogZnVuY3Rpb24od2lsbFN1
cHByZXNzKQorICAgIGlucHV0U3VwcHJlc3Npb25DaGFuZ2VkKHdpbGxTdXBwcmVzcykKICAgICB7
CiAgICAgICAgIC8vIE5vdCBoYW5kbGVkIHlldC4KLSAgICB9LAorICAgIH0KIAotICAgIHNlc3Np
b25DcmVhdGVkOiBmdW5jdGlvbihzZXNzaW9uSWQpCisgICAgc2Vzc2lvbkNyZWF0ZWQoc2Vzc2lv
bklkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvbkNy
ZWF0ZWQoc2Vzc2lvbklkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlc3Npb25Nb2RpZmllZDog
ZnVuY3Rpb24oc2Vzc2lvbklkKQorICAgIHNlc3Npb25Nb2RpZmllZChzZXNzaW9uSWQpCiAgICAg
ewogICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZXNzaW9uTW9kaWZpZWQoc2Vz
c2lvbklkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlc3Npb25SZW1vdmVkOiBmdW5jdGlvbihz
ZXNzaW9uSWQpCisgICAgc2Vzc2lvblJlbW92ZWQoc2Vzc2lvbklkKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvblJlbW92ZWQoc2Vzc2lvbklkKTsKLSAg
ICB9LAorICAgIH0KIAotICAgIHNlc3Npb25Mb2FkZWQ6IGZ1bmN0aW9uKHNlc3Npb25JZCkKKyAg
ICBzZXNzaW9uTG9hZGVkKHNlc3Npb25JZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5y
ZXBsYXlNYW5hZ2VyLnNlc3Npb25Mb2FkZWQoc2Vzc2lvbklkKTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHNlZ21lbnRDcmVhdGVkOiBmdW5jdGlvbihzZWdtZW50SWQpCisgICAgc2VnbWVudENyZWF0
ZWQoc2VnbWVudElkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIu
c2VnbWVudENyZWF0ZWQoc2VnbWVudElkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlZ21lbnRS
ZW1vdmVkOiBmdW5jdGlvbihzZWdtZW50SWQpCisgICAgc2VnbWVudFJlbW92ZWQoc2VnbWVudElk
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2VnbWVudFJlbW92
ZWQoc2VnbWVudElkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlZ21lbnRDb21wbGV0ZWQ6IGZ1
bmN0aW9uKHNlZ21lbnRJZCkKKyAgICBzZWdtZW50Q29tcGxldGVkKHNlZ21lbnRJZCkKICAgICB7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlZ21lbnRDb21wbGV0ZWQoc2Vn
bWVudElkKTsKLSAgICB9LAorICAgIH0KIAotICAgIHNlZ21lbnRMb2FkZWQ6IGZ1bmN0aW9uKHNl
Z21lbnRJZCkKKyAgICBzZWdtZW50TG9hZGVkKHNlZ21lbnRJZCkKICAgICB7CiAgICAgICAgIFdl
Ykluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlZ21lbnRMb2FkZWQoc2VnbWVudElkKTsKLSAgICB9
LAorICAgIH0KIAotICAgIHNlZ21lbnRVbmxvYWRlZDogZnVuY3Rpb24oKQorICAgIHNlZ21lbnRV
bmxvYWRlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZWdt
ZW50VW5sb2FkZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIuanMKaW5kZXgg
OTY5ZWQyNC4uZTA5YmFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcwpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsMjEg
KzIzLDEyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2Vi
SW5zcGVjdG9yLlJ1bnRpbWVPYnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5SdW50
aW1lT2JzZXJ2ZXIgPSBjbGFzcyBSdW50aW1lT2JzZXJ2ZXIKIHsKLSAgICAvLyBGSVhNRTogQ29u
dmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3Vw
ZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJ
bnNwZWN0b3IuUnVudGltZU9ic2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rvcjog
V2ViSW5zcGVjdG9yLlJ1bnRpbWVPYnNlcnZlciwKLQogICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5
IHRoZSAiUnVudGltZSIgZG9tYWluLgogCi0gICAgZXhlY3V0aW9uQ29udGV4dENyZWF0ZWQ6IGZ1
bmN0aW9uKGNvbnRleHRQYXlsb2FkKQorICAgIGV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkKGNvbnRl
eHRQYXlsb2FkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5h
Z2VyLmV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkKGNvbnRleHRQYXlsb2FkKTsKICAgICB9CiB9Owot
Ci1XZWJJbnNwZWN0b3IuUnVudGltZU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpz
CmluZGV4IDk1MTRiZGUuLmE2ZWM0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGltZWxpbmVPYnNlcnZlci5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsMzEgKzIzLDIyIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLlRpbWVsaW5lT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNw
ZWN0b3IuVGltZWxpbmVPYnNlcnZlciA9IGNsYXNzIFRpbWVsaW5lT2JzZXJ2ZXIKIHsKLSAgICAv
LyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywg
YW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
Ci19OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5UaW1lbGluZU9ic2VydmVyLAotCiAgICAgLy8gRXZl
bnRzIGRlZmluZWQgYnkgdGhlICJUaW1lbGluZSIgZG9tYWluLgogCi0gICAgZXZlbnRSZWNvcmRl
ZDogZnVuY3Rpb24ocmVjb3JkKQorICAgIGV2ZW50UmVjb3JkZWQocmVjb3JkKQogICAgIHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLnRpbWVsaW5lTWFuYWdlci5ldmVudFJlY29yZGVkKHJlY29yZCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZWNvcmRpbmdTdGFydGVkOiBmdW5jdGlvbigpCisgICAg
cmVjb3JkaW5nU3RhcnRlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVN
YW5hZ2VyLmNhcHR1cmluZ1N0YXJ0ZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlY29yZGlu
Z1N0b3BwZWQ6IGZ1bmN0aW9uKCkKKyAgICByZWNvcmRpbmdTdG9wcGVkKCkKICAgICB7CiAgICAg
ICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuY2FwdHVyaW5nU3RvcHBlZCgpOwogICAg
IH0KIH07Ci0KLVdlYkluc3BlY3Rvci5UaW1lbGluZU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKLS0gCjEuOS41IChBcHBsZSBHaXQt
NTAuMykKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249500</attachid>
            <date>2015-03-26 11:17:47 -0700</date>
            <delta_ts>2015-03-26 16:39:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143106-20150326111709.patch</filename>
            <type>text/plain</type>
            <size>83149</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAz
OTNlNzI1OTExYWQ2Y2VjNTZmZGEwN2EzMmNjNmQ3ODI4ZmMyYTY0Li4wMjFiNWY5YTczMzJmYjhh
ZTkxNWM5YzlhMmI2MmVhNjZiNmExMDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxNS0wMy0yNiAgVGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ29udmVydCBCYXNlIGFuZCBQcm90b2NvbCBm
aWxlcyB0byBFUzYgY2xhc3NlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQzMTA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lci5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lclNldC5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5qczoKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpzOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2VydmVyLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1By
b3RvY29sL0luc3BlY3RvckJhY2tlbmQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90
b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3Rv
Y29sL0xheWVyVHJlZU9ic2VydmVyLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvTWVzc2FnZURpc3BhdGNoZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2Nv
bC9OZXR3b3JrT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9Q
YWdlT2JzZXJ2ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVP
YmplY3QuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZXBsYXlPYnNlcnZl
ci5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanM6
CisgICAgICAgIENvbnZlcnRlZCB0byBFUzYgY2xhc3NlcyB3aGVyZSBwb3NzaWJsZS4KKwogMjAx
NS0wMy0yNSAgVG9iaWFzIFJlaXNzICA8dG9iaSt3ZWJraXRAYmFzZWNvZGUuZGU+CiAKICAgICAg
ICAgV2ViIEluc3BlY3RvcjogQWRkIEVTTGludCAiRGlzYWxsb3cgVW5kZWNsYXJlZCBWYXJpYWJs
ZXMiIHJ1bGUgYW5kIGVuYWJsZSBFUzYgZW52CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXIuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXIuanMKaW5kZXggMTBmMTc1
NGY5Yjk3ZDBmZWFmNTllZTg0ZjgxYmE1OGUxNThjZmEzMS4uMGJjYjA5OWQzOTBmY2ZkNWU0ZTZj
OTc2YjYxNjNlNWUyYjA3ODY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lci5qcwpAQCAtMSw2ICsxLDYgQEAK
IC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGlu
Z3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI0LDE2ICsyNCwxOSBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3Iu
RXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKHRoaXNPYmplY3QsIGZpcmVPbmNlKQorV2ViSW5zcGVj
dG9yLkV2ZW50TGlzdGVuZXIgPSBjbGFzcyBFdmVudExpc3RlbmVyCiB7Ci0gICAgdGhpcy5fdGhp
c09iamVjdCA9IHRoaXNPYmplY3Q7Ci0gICAgdGhpcy5fZW1pdHRlciA9IG51bGw7Ci0gICAgdGhp
cy5fY2FsbGJhY2sgPSBudWxsOwotICAgIHRoaXMuX2ZpcmVPbmNlID0gZmlyZU9uY2U7Ci19Owor
ICAgIGNvbnN0cnVjdG9yKHRoaXNPYmplY3QsIGZpcmVPbmNlKQorICAgIHsKKyAgICAgICAgdGhp
cy5fdGhpc09iamVjdCA9IHRoaXNPYmplY3Q7CisgICAgICAgIHRoaXMuX2VtaXR0ZXIgPSBudWxs
OworICAgICAgICB0aGlzLl9jYWxsYmFjayA9IG51bGw7CisgICAgICAgIHRoaXMuX2ZpcmVPbmNl
ID0gZmlyZU9uY2U7CisgICAgfQogCi1XZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lci5wcm90b3R5
cGUgPSB7Ci0gICAgY29ubmVjdDogZnVuY3Rpb24oZW1pdHRlciwgdHlwZSwgY2FsbGJhY2ssIHVz
ZXNDYXB0dXJlKQorICAgIC8vIFB1YmxpYworCisgICAgY29ubmVjdChlbWl0dGVyLCB0eXBlLCBj
YWxsYmFjaywgdXNlc0NhcHR1cmUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhp
cy5fZW1pdHRlciAmJiAhdGhpcy5fY2FsbGJhY2ssICJFdmVudExpc3RlbmVyIGFscmVhZHkgYm91
bmQgdG8gYSBjYWxsYmFjay4iLCB0aGlzKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY2FsbGJh
Y2ssICJNaXNzaW5nIGNhbGxiYWNrIGZvciBldmVudDogIiArIHR5cGUpOwpAQCAtNjQsOSArNjcs
OSBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICB0aGlzLl9lbWl0dGVyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fdHlwZSwgdGhpcy5fY2FsbGJh
Y2ssIHRoaXMuX3VzZXNDYXB0dXJlKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5f
ZW1pdHRlci5hZGRFdmVudExpc3RlbmVyKHRoaXMuX3R5cGUsIHRoaXMuX2NhbGxiYWNrLCB0aGlz
Ll90aGlzT2JqZWN0KTsKLSAgICB9LAorICAgIH0KIAotICAgIGRpc2Nvbm5lY3Q6IGZ1bmN0aW9u
KCkKKyAgICBkaXNjb25uZWN0KCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X2VtaXR0ZXIgJiYgdGhpcy5fY2FsbGJhY2ssICJFdmVudExpc3RlbmVyIGlzIG5vdCBib3VuZCB0
byBhIGNhbGxiYWNrLiIsIHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXJTZXQuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL0V2ZW50TGlzdGVuZXJTZXQuanMKaW5kZXggNDBk
MmNkZGU1MWNiNzNjZGI2MTgwMTI5NzRlYjdjYjNiMjE5ZmEzOS4uYWE0ZjUwYjUyMjJkOTAxMjY0
ZWJiNmEwZDJiNDQ4YThhYWRhZDdlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9FdmVudExpc3RlbmVyU2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvRXZlbnRMaXN0ZW5lclNldC5qcwpAQCAtMSw2
ICsxLDYgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IFVuaXZlcnNpdHkg
b2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI4LDE3ICsyOCwyMSBAQAogLy8gQWRkIERPTSBvciBJbnNwZWN0b3IgZXZl
bnQgbGlzdGVuZXJzIHRvIHRoZSBzZXQgdXNpbmcgYHJlZ2lzdGVyKClgLgogLy8gVXNlIGBpbnN0
YWxsKClgIGFuZCBgdW5pbnN0YWxsKClgIHRvIGVuYWJsZSBvciBkaXNhYmxlIGFsbCBsaXN0ZW5l
cnMKIC8vIGluIHRoZSBzZXQgYXQgb25jZS4KLVdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2V0
ID0gZnVuY3Rpb24oZGVmYXVsdFRoaXNPYmplY3QsIG5hbWUpCisKK1dlYkluc3BlY3Rvci5FdmVu
dExpc3RlbmVyU2V0ID0gY2xhc3MgRXZlbnRMaXN0ZW5lclNldAogewotICAgIHRoaXMubmFtZSA9
IG5hbWU7Ci0gICAgdGhpcy5fZGVmYXVsdFRoaXNPYmplY3QgPSBkZWZhdWx0VGhpc09iamVjdDsK
KyAgICBjb25zdHJ1Y3RvcihkZWZhdWx0VGhpc09iamVjdCwgbmFtZSkKKyAgICB7CisgICAgICAg
IHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgIHRoaXMuX2RlZmF1bHRUaGlzT2JqZWN0ID0gZGVm
YXVsdFRoaXNPYmplY3Q7CisKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJzID0gW107CisgICAgICAg
IHRoaXMuX2luc3RhbGxlZCA9IGZhbHNlOworICAgIH0KIAotICAgIHRoaXMuX2xpc3RlbmVycyA9
IFtdOwotICAgIHRoaXMuX2luc3RhbGxlZCA9IGZhbHNlOwotfQorICAgIC8vIFB1YmxpYwogCi1X
ZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lclNldC5wcm90b3R5cGUgPSB7Ci0gICAgcmVnaXN0ZXI6
IGZ1bmN0aW9uKGVtaXR0ZXIsIHR5cGUsIGNhbGxiYWNrLCB0aGlzT2JqZWN0LCB1c2VzQ2FwdHVy
ZSkKKyAgICByZWdpc3RlcihlbWl0dGVyLCB0eXBlLCBjYWxsYmFjaywgdGhpc09iamVjdCwgdXNl
c0NhcHR1cmUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjYWxsYmFjaywgIk1pc3Np
bmcgY2FsbGJhY2sgZm9yIGV2ZW50OiAiICsgdHlwZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHR5cGUsICJUcmllZCB0byByZWdpc3RlciBsaXN0ZW5lciBmb3IgdW5rbm93biBldmVudDogIiAr
IHR5cGUpOwpAQCAtNDksMTYgKzUzLDE2IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyU2V0
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9saXN0
ZW5lcnMucHVzaCh7bGlzdGVuZXI6IG5ldyBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcih0aGlz
T2JqZWN0IHx8IHRoaXMuX2RlZmF1bHRUaGlzT2JqZWN0KSwgZW1pdHRlciwgdHlwZSwgY2FsbGJh
Y2ssIHVzZXNDYXB0dXJlfSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICB1bnJlZ2lzdGVyOiBmdW5j
dGlvbigpCisgICAgdW5yZWdpc3RlcigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faW5zdGFs
bGVkKQogICAgICAgICAgICAgdGhpcy51bmluc3RhbGwoKTsKICAgICAgICAgdGhpcy5fbGlzdGVu
ZXJzID0gW107Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpbnN0YWxsOiBmdW5jdGlvbigpCisgICAg
aW5zdGFsbCgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5faW5zdGFsbGVk
LCAiQWxyZWFkeSBpbnN0YWxsZWQgbGlzdGVuZXIgZ3JvdXA6ICIgKyB0aGlzLm5hbWUpOwogICAg
ICAgICBpZiAodGhpcy5faW5zdGFsbGVkKQpAQCAtNjgsOSArNzIsOSBAQCBXZWJJbnNwZWN0b3Iu
RXZlbnRMaXN0ZW5lclNldC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgZm9yICh2YXIgZGF0YSBv
ZiB0aGlzLl9saXN0ZW5lcnMpCiAgICAgICAgICAgICBkYXRhLmxpc3RlbmVyLmNvbm5lY3QoZGF0
YS5lbWl0dGVyLCBkYXRhLnR5cGUsIGRhdGEuY2FsbGJhY2ssIGRhdGEudXNlc0NhcHR1cmUpOwot
ICAgIH0sCisgICAgfQogCi0gICAgdW5pbnN0YWxsOiBmdW5jdGlvbih1bnJlZ2lzdGVyTGlzdGVu
ZXJzKQorICAgIHVuaW5zdGFsbCh1bnJlZ2lzdGVyTGlzdGVuZXJzKQogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQodGhpcy5faW5zdGFsbGVkLCAiVHJ5aW5nIHRvIHVuaW5zdGFsbCBsaXN0
ZW5lciBncm91cCAiICsgdGhpcy5uYW1lICsgIiwgYnV0IGl0IGlzbid0IGluc3RhbGxlZC4iKTsK
ICAgICAgICAgaWYgKCF0aGlzLl9pbnN0YWxsZWQpCkBAIC04Myw1ICs4Nyw1IEBAIFdlYkluc3Bl
Y3Rvci5FdmVudExpc3RlbmVyU2V0LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBpZiAodW5yZWdp
c3Rlckxpc3RlbmVycykKICAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IFtdOwotICAgIH0s
Ci19CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0FwcGxpY2F0aW9uQ2FjaGVPYnNlcnZl
ci5qcwppbmRleCBlZGUwYjcwZjY2ZmEzYzE3NGNhMDFjYTdhOTRkNjIyMTg3YWZhYjE2Li5kODAz
ODUzYzM0MjZjYmJiNTY2YzljZjAzNTUyMmI2MGFlOWJhNTA3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2Jz
ZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMywyNiArMjMsMTcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRp
b25DYWNoZU9ic2VydmVyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2Fj
aGVPYnNlcnZlciA9IGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVPYnNlcnZlcgogewotICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07
Ci0KLVdlYkluc3BlY3Rvci5BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIucHJvdG90eXBlID0gewot
ICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLAot
CiAgICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJBcHBsaWNhdGlvbkNhY2hlIiBkb21haW4u
CiAKLSAgICBhcHBsaWNhdGlvbkNhY2hlU3RhdHVzVXBkYXRlZDogZnVuY3Rpb24oZnJhbWVJZCwg
bWFuaWZlc3RVUkwsIHN0YXR1cykKKyAgICBhcHBsaWNhdGlvbkNhY2hlU3RhdHVzVXBkYXRlZChm
cmFtZUlkLCBtYW5pZmVzdFVSTCwgc3RhdHVzKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9y
LmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLmFwcGxpY2F0aW9uQ2FjaGVTdGF0dXNVcGRhdGVkKGZy
YW1lSWQsIG1hbmlmZXN0VVJMLCBzdGF0dXMpOwotICAgIH0sCisgICAgfQogCi0gICAgbmV0d29y
a1N0YXRlVXBkYXRlZDogZnVuY3Rpb24oaXNOb3dPbmxpbmUpCisgICAgbmV0d29ya1N0YXRlVXBk
YXRlZChpc05vd09ubGluZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlv
bkNhY2hlTWFuYWdlci5uZXR3b3JrU3RhdGVVcGRhdGVkKGlzTm93T25saW5lKTsKICAgICB9CiB9
OwotCi1XZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NTU09ic2VydmVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIu
anMKaW5kZXggYzA5NGUyNGQ1MGZmY2ZmOWM4YWQ1YWUxNjdjYzRkMjIxNTI3YWY0Mi4uMDlhYzhj
YzMwOGRlMWM2MGUzMTBjNThjZDg4MDgyY2EzMWVmMmI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIu
anMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTIzLDY3ICsyMyw1OCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5DU1NPYnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rv
ci5DU1NPYnNlcnZlciA9IGNsYXNzIENTU09ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENvbnZl
cnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVy
KCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2ViSW5z
cGVjdG9yLkNTU09ic2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogV2ViSW5z
cGVjdG9yLkNTU09ic2VydmVyLAotCiAgICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJDU1Mi
IGRvbWFpbi4KIAotICAgIG1lZGlhUXVlcnlSZXN1bHRDaGFuZ2VkOiBmdW5jdGlvbigpCisgICAg
bWVkaWFRdWVyeVJlc3VsdENoYW5nZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmNz
c1N0eWxlTWFuYWdlci5tZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgc3R5bGVTaGVldENoYW5nZWQ6IGZ1bmN0aW9uKHN0eWxlU2hlZXRJZCkKKyAgICBzdHls
ZVNoZWV0Q2hhbmdlZChzdHlsZVNoZWV0SWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iu
Y3NzU3R5bGVNYW5hZ2VyLnN0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlU2hlZXRJZCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBzdHlsZVNoZWV0QWRkZWQ6IGZ1bmN0aW9uKGhlYWRlcikKKyAgICBzdHls
ZVNoZWV0QWRkZWQoaGVhZGVyKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1l
bnRlZC4gPHJkYXI6Ly9wcm9ibGVtLzEzMjEzNjgwPgotICAgIH0sCisgICAgfQogCi0gICAgc3R5
bGVTaGVldFJlbW92ZWQ6IGZ1bmN0aW9uKGhlYWRlcikKKyAgICBzdHlsZVNoZWV0UmVtb3ZlZCho
ZWFkZXIpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVkLiA8cmRhcjov
L3Byb2JsZW0vMTMyMTM2ODA+Ci0gICAgfSwKKyAgICB9CiAKLSAgICBuYW1lZEZsb3dDcmVhdGVk
OiBmdW5jdGlvbihuYW1lZEZsb3cpCisgICAgbmFtZWRGbG93Q3JlYXRlZChuYW1lZEZsb3cpCiAg
ICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIubmFtZWRGbG93Q3JlYXRl
ZChuYW1lZEZsb3cpOwotICAgIH0sCisgICAgfQogCi0gICAgbmFtZWRGbG93UmVtb3ZlZDogZnVu
Y3Rpb24oZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKQorICAgIG5hbWVkRmxvd1JlbW92ZWQoZG9j
dW1lbnROb2RlSWQsIGZsb3dOYW1lKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRy
ZWVNYW5hZ2VyLm5hbWVkRmxvd1JlbW92ZWQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lKTsKLSAg
ICB9LAorICAgIH0KIAogICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA3KTogcmVnaW9uTGF5b3V0
VXBkYXRlZCB3YXMgcmVtb3ZlZCBhbmQgcmVwbGFjZWQgYnkgcmVnaW9uT3ZlcnNldENoYW5nZWQu
Ci0gICAgcmVnaW9uTGF5b3V0VXBkYXRlZDogZnVuY3Rpb24obmFtZWRGbG93KQorICAgIHJlZ2lv
bkxheW91dFVwZGF0ZWQobmFtZWRGbG93KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRv
bVRyZWVNYW5hZ2VyLnJlZ2lvbkxheW91dFVwZGF0ZWQobmFtZWRGbG93KTsKLSAgICB9LAorICAg
IH0KIAotICAgIHJlZ2lvbk92ZXJzZXRDaGFuZ2VkOiBmdW5jdGlvbihuYW1lZEZsb3cpCisgICAg
cmVnaW9uT3ZlcnNldENoYW5nZWQobmFtZWRGbG93KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLmRvbVRyZWVNYW5hZ2VyLnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKG5hbWVkRmxvdyk7Ci0gICAg
fSwKKyAgICB9CiAKLSAgICByZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQ6IGZ1bmN0
aW9uKGRvY3VtZW50Tm9kZUlkLCBmbG93TmFtZSwgY29udGVudE5vZGVJZCwgbmV4dENvbnRlbnRF
bGVtZW50Tm9kZUlkKQorICAgIHJlZ2lzdGVyZWROYW1lZEZsb3dDb250ZW50RWxlbWVudChkb2N1
bWVudE5vZGVJZCwgZmxvd05hbWUsIGNvbnRlbnROb2RlSWQsIG5leHRDb250ZW50RWxlbWVudE5v
ZGVJZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5yZWdpc3Rl
cmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCBjb250
ZW50Tm9kZUlkLCBuZXh0Q29udGVudEVsZW1lbnROb2RlSWQpOwotICAgIH0sCisgICAgfQogCi0g
ICAgdW5yZWdpc3RlcmVkTmFtZWRGbG93Q29udGVudEVsZW1lbnQ6IGZ1bmN0aW9uKGRvY3VtZW50
Tm9kZUlkLCBmbG93TmFtZSwgY29udGVudE5vZGVJZCkKKyAgICB1bnJlZ2lzdGVyZWROYW1lZEZs
b3dDb250ZW50RWxlbWVudChkb2N1bWVudE5vZGVJZCwgZmxvd05hbWUsIGNvbnRlbnROb2RlSWQp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIudW5yZWdpc3RlcmVk
TmFtZWRGbG93Q29udGVudEVsZW1lbnQoZG9jdW1lbnROb2RlSWQsIGZsb3dOYW1lLCBjb250ZW50
Tm9kZUlkKTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuQ1NTT2JzZXJ2ZXIucHJvdG90eXBl
Ll9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29uc29sZU9ic2Vy
dmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvQ29u
c29sZU9ic2VydmVyLmpzCmluZGV4IDk3NTk1M2UxNjc4ZGRhOTkzYTk3OGZjZmI4OTI4NThkM2E2
MWY3MTguLmNmYzJmYzA1NDVhNGE1MWI1M2MxOTdhYTI2YTljYTBmNTU4MDE3ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0NvbnNvbGVP
YnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9Db25zb2xlT2JzZXJ2ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDE4ICsyMywxMSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5Db25zb2xlT2JzZXJ2ZXIg
PSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuQ29uc29sZU9ic2VydmVyID0gY2xhc3MgQ29uc29s
ZU9ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rv
ci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9y
Lk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLkNvbnNvbGVPYnNlcnZlci5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5Db25zb2xlT2JzZXJ2
ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIkNvbnNvbGUiIGRvbWFpbi4KIAot
ICAgIG1lc3NhZ2VBZGRlZDogZnVuY3Rpb24obWVzc2FnZSkKKyAgICBtZXNzYWdlQWRkZWQobWVz
c2FnZSkKICAgICB7CiAgICAgICAgIGlmIChtZXNzYWdlLnR5cGUgPT09ICJhc3NlcnQiICYmICFt
ZXNzYWdlLnRleHQpCiAgICAgICAgICAgICBtZXNzYWdlLnRleHQgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIkFzc2VydGlvbiIpOwpAQCAtNDgsMTcgKzQxLDE1IEBAIFdlYkluc3BlY3Rvci5Db25z
b2xlT2JzZXJ2ZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
IFdlYkluc3BlY3Rvci5sb2dNYW5hZ2VyLm1lc3NhZ2VXYXNBZGRlZChtZXNzYWdlLnNvdXJjZSwg
bWVzc2FnZS5sZXZlbCwgbWVzc2FnZS50ZXh0LCBtZXNzYWdlLnR5cGUsIG1lc3NhZ2UudXJsLCBt
ZXNzYWdlLmxpbmUsIG1lc3NhZ2UuY29sdW1uIHx8IDAsIG1lc3NhZ2UucmVwZWF0Q291bnQsIG1l
c3NhZ2UucGFyYW1ldGVycywgbWVzc2FnZS5zdGFja1RyYWNlLCBtZXNzYWdlLm5ldHdvcmtSZXF1
ZXN0SWQpOwotICAgIH0sCisgICAgfQogCi0gICAgbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZDog
ZnVuY3Rpb24oY291bnQpCisgICAgbWVzc2FnZVJlcGVhdENvdW50VXBkYXRlZChjb3VudCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5sb2dNYW5hZ2VyLm1lc3NhZ2VSZXBlYXRDb3VudFVw
ZGF0ZWQoY291bnQpOwotICAgIH0sCisgICAgfQogCi0gICAgbWVzc2FnZXNDbGVhcmVkOiBmdW5j
dGlvbigpCisgICAgbWVzc2FnZXNDbGVhcmVkKCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5sb2dNYW5hZ2VyLm1lc3NhZ2VzQ2xlYXJlZCgpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rv
ci5Db25zb2xlT2JzZXJ2ZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5PYmpl
Y3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvRE9NT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qcwppbmRleCA3NzAwMzFmMzQzYTBiMzJi
YTU5MmIwODc1ZWZjZDU0Y2FjN2EwOTMwLi5hMDIyOGM5MDRjNzk3N2EwYWQyNDQ0YTMyZDdhMTA4
N2M0Mzg0MzdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Qcm90b2NvbC9ET01PYnNlcnZlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNzEgKzIzLDYyIEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTU9i
c2VydmVyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLkRPTU9ic2VydmVyID0gY2xhc3MgRE9N
T2JzZXJ2ZXIKIHsKLSAgICAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9y
Lk9iamVjdCBzdWJjbGFzcywgYW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3Iu
T2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1XZWJJbnNwZWN0b3IuRE9NT2JzZXJ2ZXIucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NT2JzZXJ2ZXIsCi0KICAg
ICAvLyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIkRPTSIgZG9tYWluLgogCi0gICAgZG9jdW1lbnRV
cGRhdGVkOiBmdW5jdGlvbigpCisgICAgZG9jdW1lbnRVcGRhdGVkKCkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5fZG9jdW1lbnRVcGRhdGVkKCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICBzZXRDaGlsZE5vZGVzOiBmdW5jdGlvbihwYXJlbnRJZCwgcGF5bG9hZHMp
CisgICAgc2V0Q2hpbGROb2RlcyhwYXJlbnRJZCwgcGF5bG9hZHMpCiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuX3NldENoaWxkTm9kZXMocGFyZW50SWQsIHBheWxv
YWRzKTsKLSAgICB9LAorICAgIH0KIAotICAgIGF0dHJpYnV0ZU1vZGlmaWVkOiBmdW5jdGlvbihu
b2RlSWQsIG5hbWUsIHZhbHVlKQorICAgIGF0dHJpYnV0ZU1vZGlmaWVkKG5vZGVJZCwgbmFtZSwg
dmFsdWUpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuX2F0dHJp
YnV0ZU1vZGlmaWVkKG5vZGVJZCwgbmFtZSwgdmFsdWUpOwotICAgIH0sCisgICAgfQogCi0gICAg
YXR0cmlidXRlUmVtb3ZlZDogZnVuY3Rpb24obm9kZUlkLCBuYW1lKQorICAgIGF0dHJpYnV0ZVJl
bW92ZWQobm9kZUlkLCBuYW1lKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVN
YW5hZ2VyLl9hdHRyaWJ1dGVSZW1vdmVkKG5vZGVJZCwgbmFtZSk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBpbmxpbmVTdHlsZUludmFsaWRhdGVkOiBmdW5jdGlvbihub2RlSWRzKQorICAgIGlubGlu
ZVN0eWxlSW52YWxpZGF0ZWQobm9kZUlkcykKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5k
b21UcmVlTWFuYWdlci5faW5saW5lU3R5bGVJbnZhbGlkYXRlZChub2RlSWRzKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIGNoYXJhY3RlckRhdGFNb2RpZmllZDogZnVuY3Rpb24obm9kZUlkLCBjaGFy
YWN0ZXJEYXRhKQorICAgIGNoYXJhY3RlckRhdGFNb2RpZmllZChub2RlSWQsIGNoYXJhY3RlckRh
dGEpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuX2NoYXJhY3Rl
ckRhdGFNb2RpZmllZChub2RlSWQsIGNoYXJhY3RlckRhdGEpOwotICAgIH0sCisgICAgfQogCi0g
ICAgY2hpbGROb2RlQ291bnRVcGRhdGVkOiBmdW5jdGlvbihub2RlSWQsIGNoaWxkTm9kZUNvdW50
KQorICAgIGNoaWxkTm9kZUNvdW50VXBkYXRlZChub2RlSWQsIGNoaWxkTm9kZUNvdW50KQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLl9jaGlsZE5vZGVDb3VudFVw
ZGF0ZWQobm9kZUlkLCBjaGlsZE5vZGVDb3VudCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjaGls
ZE5vZGVJbnNlcnRlZDogZnVuY3Rpb24ocGFyZW50Tm9kZUlkLCBwcmV2aW91c05vZGVJZCwgcGF5
bG9hZCkKKyAgICBjaGlsZE5vZGVJbnNlcnRlZChwYXJlbnROb2RlSWQsIHByZXZpb3VzTm9kZUlk
LCBwYXlsb2FkKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRvbVRyZWVNYW5hZ2VyLl9j
aGlsZE5vZGVJbnNlcnRlZChwYXJlbnROb2RlSWQsIHByZXZpb3VzTm9kZUlkLCBwYXlsb2FkKTsK
LSAgICB9LAorICAgIH0KIAotICAgIGNoaWxkTm9kZVJlbW92ZWQ6IGZ1bmN0aW9uKHBhcmVudE5v
ZGVJZCwgbm9kZUlkKQorICAgIGNoaWxkTm9kZVJlbW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQp
CiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuX2NoaWxkTm9kZVJl
bW92ZWQocGFyZW50Tm9kZUlkLCBub2RlSWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hhZG93
Um9vdFB1c2hlZDogZnVuY3Rpb24ocGFyZW50Tm9kZUlkLCBub2RlSWQpCisgICAgc2hhZG93Um9v
dFB1c2hlZChwYXJlbnROb2RlSWQsIG5vZGVJZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5kb21UcmVlTWFuYWdlci5fY2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50Tm9kZUlkLCAwLCBub2Rl
SWQpOwotICAgIH0sCisgICAgfQogCi0gICAgc2hhZG93Um9vdFBvcHBlZDogZnVuY3Rpb24ocGFy
ZW50Tm9kZUlkLCBub2RlSWQpCisgICAgc2hhZG93Um9vdFBvcHBlZChwYXJlbnROb2RlSWQsIG5v
ZGVJZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5fY2hpbGRO
b2RlUmVtb3ZlZChwYXJlbnROb2RlSWQsIG5vZGVJZCk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVj
dG9yLkRPTU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL0RPTVN0b3JhZ2VPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RPTVN0b3JhZ2VPYnNlcnZlci5qcwppbmRleCBkZmU0
NWQ1YjNlZjI5Mzk3YjZmYTdhMjQ3ODg4NjQ1MjY5Y2NkY2YzLi5lNmRmZGQyMzNjNzlhODUwNDY4
NmMwNTYwMDhlZGRlYjU4M2RlNTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9ET01TdG9yYWdlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRE9NU3RvcmFnZU9ic2VydmVy
LmpzCkBAIC0yNCw0NiArMjQsMzggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9ic2VydmVyID0gZnVuY3Rpb24oKQor
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VPYnNlcnZlciA9IGNsYXNzIERPTVN0b3JhZ2VPYnNlcnZl
cgogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0
IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3Qu
Y2FsbCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlT2JzZXJ2ZXIucHJvdG90
eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZU9ic2VydmVy
LAotICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUsCi0KICAgICAv
LyBFdmVudHMgZGVmaW5lZCBieSB0aGUgIkRPTVN0b3JhZ2UiIGRvbWFpbi4KIAogICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyA2KTogVGhpcyBldmVudCBubyBsb25nZXIgZXhpc3RzLiBJdCBpcyBz
dGlsbCBuZWVkZWQgYW5kIGNhbGxlZCBvbiBpT1MgNi4KLSAgICBhZGRET01TdG9yYWdlOiBmdW5j
dGlvbihzdG9yYWdlKQorICAgIGFkZERPTVN0b3JhZ2Uoc3RvcmFnZSkKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5kb21TdG9yYWdlV2FzQWRkZWQoc3RvcmFnZS5p
ZCwgc3RvcmFnZS5ob3N0LCBzdG9yYWdlLmlzTG9jYWxTdG9yYWdlKTsKLSAgICB9LAorICAgIH0K
IAogICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTogVGhpcyBldmVudCB3YXMgc3BsaXQgaW50
byB0aGUgZ3JhbnVsYXIgZXZlbnRzIGJlbG93LgotICAgIHVwZGF0ZURPTVN0b3JhZ2U6IGZ1bmN0
aW9uKHN0b3JhZ2VJZCkKKyAgICB1cGRhdGVET01TdG9yYWdlKHN0b3JhZ2VJZCkKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5zdG9yYWdlTWFuYWdlci5kb21TdG9yYWdlV2FzVXBkYXRlZChz
dG9yYWdlSWQpOwotICAgIH0sCisgICAgfQogCi0gICAgZG9tU3RvcmFnZUl0ZW1zQ2xlYXJlZDog
ZnVuY3Rpb24oc3RvcmFnZUlkKQorICAgIGRvbVN0b3JhZ2VJdGVtc0NsZWFyZWQoc3RvcmFnZUlk
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLml0ZW1zQ2xlYXJl
ZChzdG9yYWdlSWQpOwotICAgIH0sCisgICAgfQogCi0gICAgZG9tU3RvcmFnZUl0ZW1SZW1vdmVk
OiBmdW5jdGlvbihzdG9yYWdlSWQsIGtleSkKKyAgICBkb21TdG9yYWdlSXRlbVJlbW92ZWQoc3Rv
cmFnZUlkLCBrZXkpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIu
aXRlbVJlbW92ZWQoc3RvcmFnZUlkLCBrZXkpOwotICAgIH0sCisgICAgfQogCi0gICAgZG9tU3Rv
cmFnZUl0ZW1BZGRlZDogZnVuY3Rpb24oc3RvcmFnZUlkLCBrZXksIHZhbHVlKQorICAgIGRvbVN0
b3JhZ2VJdGVtQWRkZWQoc3RvcmFnZUlkLCBrZXksIHZhbHVlKQogICAgIHsKICAgICAgICAgV2Vi
SW5zcGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLml0ZW1BZGRlZChzdG9yYWdlSWQsIGtleSwgdmFsdWUp
OwotICAgIH0sCisgICAgfQogCi0gICAgZG9tU3RvcmFnZUl0ZW1VcGRhdGVkOiBmdW5jdGlvbihz
dG9yYWdlSWQsIGtleSwgb2xkVmFsdWUsIHZhbHVlKQorICAgIGRvbVN0b3JhZ2VJdGVtVXBkYXRl
ZChzdG9yYWdlSWQsIGtleSwgb2xkVmFsdWUsIHZhbHVlKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLnN0b3JhZ2VNYW5hZ2VyLml0ZW1VcGRhdGVkKHN0b3JhZ2VJZCwga2V5LCBvbGRWYWx1
ZSwgdmFsdWUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0RhdGFiYXNlT2JzZXJ2ZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EYXRhYmFzZU9ic2VydmVyLmpzCmluZGV4IDYz
ZGJkNmY2YTRjMzg5MDczYzdmMGRhYWNjMWJiZDU2YTc5NDdlNTQuLjdiOTczZWE2ZTc3NWQ1MmJm
ZmVlOTliZDBlYjIxMjVkZTc2MzQ1ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0RhdGFiYXNlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvRGF0YWJhc2VPYnNlcnZlci5q
cwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjMsMjYgKzIzLDE3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNw
ZWN0b3IuRGF0YWJhc2VPYnNlcnZlciA9IGNsYXNzIERhdGFiYXNlT2JzZXJ2ZXIKIHsKLSAgICAv
LyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGEgV2ViSW5zcGVjdG9yLk9iamVjdCBzdWJjbGFzcywg
YW5kIGNhbGwgc3VwZXIoKS4KLSAgICAvLyBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7
Ci19OwotCi1XZWJJbnNwZWN0b3IuRGF0YWJhc2VPYnNlcnZlci5fY2FsbGJhY2tzID0ge307Ci0K
LVdlYkluc3BlY3Rvci5EYXRhYmFzZU9ic2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMgZGVm
aW5lZCBieSB0aGUgIkRhdGFiYXNlIiBkb21haW4uCiAKLSAgICBhZGREYXRhYmFzZTogZnVuY3Rp
b24oZGF0YWJhc2UpCisgICAgYWRkRGF0YWJhc2UoZGF0YWJhc2UpCiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3Iuc3RvcmFnZU1hbmFnZXIuZGF0YWJhc2VXYXNBZGRlZChkYXRhYmFzZS5pZCwg
ZGF0YWJhc2UuZG9tYWluLCBkYXRhYmFzZS5uYW1lLCBkYXRhYmFzZS52ZXJzaW9uKTsKLSAgICB9
LAorICAgIH0KIAogICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA2KTogVGhpcyBldmVudCB3YXMg
cmVtb3ZlZCBpbiBmYXZvciBvZiBhIG1vcmUgYXN5bmMgRGF0YWJhc2VBZ2VudC5leGVjdXRlU1FM
LgotICAgIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkOiBmdW5jdGlvbih0cmFuc2FjdGlvbklkLCBj
b2x1bW5OYW1lcywgdmFsdWVzKQorICAgIHNxbFRyYW5zYWN0aW9uU3VjY2VlZGVkKHRyYW5zYWN0
aW9uSWQsIGNvbHVtbk5hbWVzLCB2YWx1ZXMpCiAgICAgewogICAgICAgICBpZiAoIVdlYkluc3Bl
Y3Rvci5EYXRhYmFzZU9ic2VydmVyLl9jYWxsYmFja3NbdHJhbnNhY3Rpb25JZF0pCiAgICAgICAg
ICAgICByZXR1cm47CkBAIC01MiwxMCArNDMsMTAgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2Jz
ZXJ2ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGlmIChjYWxsYmFjaykKICAgICAgICAgICAg
IGNhbGxiYWNrKGNvbHVtbk5hbWVzLCB2YWx1ZXMsIG51bGwpOwotICAgIH0sCisgICAgfQogCiAg
ICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDYpOiBUaGlzIGV2ZW50IHdhcyByZW1vdmVkIGluIGZh
dm9yIG9mIGEgbW9yZSBhc3luYyBEYXRhYmFzZUFnZW50LmV4ZWN1dGVTUUwuCi0gICAgc3FsVHJh
bnNhY3Rpb25GYWlsZWQ6IGZ1bmN0aW9uKHRyYW5zYWN0aW9uSWQsIHNxbEVycm9yKQorICAgIHNx
bFRyYW5zYWN0aW9uRmFpbGVkKHRyYW5zYWN0aW9uSWQsIHNxbEVycm9yKQogICAgIHsKICAgICAg
ICAgaWYgKCFXZWJJbnNwZWN0b3IuRGF0YWJhc2VPYnNlcnZlci5fY2FsbGJhY2tzW3RyYW5zYWN0
aW9uSWRdKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjgsNCArNTksNCBAQCBXZWJJbnNwZWN0
b3IuRGF0YWJhc2VPYnNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgfQogfTsKIAotV2ViSW5zcGVj
dG9yLkRhdGFiYXNlT2JzZXJ2ZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFdlYkluc3BlY3Rvci5P
YmplY3QucHJvdG90eXBlOworV2ViSW5zcGVjdG9yLkRhdGFiYXNlT2JzZXJ2ZXIuX2NhbGxiYWNr
cyA9IHt9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
UHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Byb3RvY29sL0RlYnVnZ2VyT2JzZXJ2ZXIuanMKaW5kZXggMDY5ZTkwZTkzMjc1
MTMyOTAzOGEwNmRhODBhZmNkNWZhZmE3YzA0My4uYTA1YzRhMGQ5ZTA2ZjY4ZTY4MDVlMzI4NzEw
ZjA4YjEwNmY4ZWJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvRGVidWdnZXJPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9EZWJ1Z2dlck9ic2VydmVyLmpzCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw1NiAr
MjMsNDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJ
bnNwZWN0b3IuRGVidWdnZXJPYnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5EZWJ1
Z2dlck9ic2VydmVyID0gY2xhc3MgRGVidWdnZXJPYnNlcnZlcgogewotICAgIC8vIEZJWE1FOiBD
b252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBz
dXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdl
Ykluc3BlY3Rvci5EZWJ1Z2dlck9ic2VydmVyLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3Rv
cjogV2ViSW5zcGVjdG9yLkRlYnVnZ2VyT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5l
ZCBieSB0aGUgIkRlYnVnZ2VyIiBkb21haW4uCiAKLSAgICBnbG9iYWxPYmplY3RDbGVhcmVkOiBm
dW5jdGlvbigpCisgICAgZ2xvYmFsT2JqZWN0Q2xlYXJlZCgpCiAgICAgewogICAgICAgICBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLnJlc2V0KCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBz
Y3JpcHRQYXJzZWQ6IGZ1bmN0aW9uKHNjcmlwdElkLCB1cmwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1
bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250ZW50U2NyaXB0LCBzb3VyY2VNYXBVUkwsIGhh
c1NvdXJjZVVSTCkKKyAgICBzY3JpcHRQYXJzZWQoc2NyaXB0SWQsIHVybCwgc3RhcnRMaW5lLCBz
dGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1uLCBpc0NvbnRlbnRTY3JpcHQsIHNvdXJjZU1h
cFVSTCwgaGFzU291cmNlVVJMKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2Vy
TWFuYWdlci5zY3JpcHREaWRQYXJzZShzY3JpcHRJZCwgdXJsLCBpc0NvbnRlbnRTY3JpcHQsIHN0
YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgc291cmNlTWFwVVJMKTsK
LSAgICB9LAorICAgIH0KIAotICAgIHNjcmlwdEZhaWxlZFRvUGFyc2U6IGZ1bmN0aW9uKHVybCwg
c2NyaXB0U291cmNlLCBzdGFydExpbmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKQorICAgIHNj
cmlwdEZhaWxlZFRvUGFyc2UodXJsLCBzY3JpcHRTb3VyY2UsIHN0YXJ0TGluZSwgZXJyb3JMaW5l
LCBlcnJvck1lc3NhZ2UpCiAgICAgewogICAgICAgICAvLyBGSVhNRTogTm90IGltcGxlbWVudGVk
LgotICAgIH0sCisgICAgfQogCi0gICAgYnJlYWtwb2ludFJlc29sdmVkOiBmdW5jdGlvbihicmVh
a3BvaW50SWQsIGxvY2F0aW9uKQorICAgIGJyZWFrcG9pbnRSZXNvbHZlZChicmVha3BvaW50SWQs
IGxvY2F0aW9uKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5i
cmVha3BvaW50UmVzb2x2ZWQoYnJlYWtwb2ludElkLCBsb2NhdGlvbik7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBwYXVzZWQ6IGZ1bmN0aW9uKGNhbGxGcmFtZXMsIHJlYXNvbiwgZGF0YSkKKyAgICBw
YXVzZWQoY2FsbEZyYW1lcywgcmVhc29uLCBkYXRhKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTWFuYWdlci5kZWJ1Z2dlckRpZFBhdXNlKGNhbGxGcmFtZXMsIHJlYXNvbiwg
ZGF0YSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICByZXN1bWVkOiBmdW5jdGlvbigpCisgICAgcmVz
dW1lZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNYW5hZ2VyLmRlYnVn
Z2VyRGlkUmVzdW1lKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBwbGF5QnJlYWtwb2ludEFjdGlv
blNvdW5kOiBmdW5jdGlvbihicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcikKKyAgICBwbGF5QnJl
YWtwb2ludEFjdGlvblNvdW5kKGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKQogICAgIHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTWFuYWdlci5wbGF5QnJlYWtwb2ludEFjdGlvblNv
dW5kKGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRp
ZFNhbXBsZVByb2JlOiBmdW5jdGlvbihzYW1wbGUpCisgICAgZGlkU2FtcGxlUHJvYmUoc2FtcGxl
KQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnByb2JlTWFuYWdlci5kaWRTYW1wbGVQcm9i
ZShzYW1wbGUpOwogICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5EZWJ1Z2dlck9ic2VydmVyLnBy
b3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3Bl
Y3RvckJhY2tlbmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90
b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpzCmluZGV4IDY1ODJmOTY0YTJmOTczN2Y1YTkyYTk0YTY4
MWUyNmY1OGIxN2Q4ZWEuLmU3YjgwN2IzNzQ1MjYzOTE1NjkyYjczNTliNDk5MjUzNTNmNjU5ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29s
L0luc3BlY3RvckJhY2tlbmQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcwpAQCAtMzAsNTIgKzMwLDUyIEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgogICovCiAKLWZ1bmN0aW9uIEluc3BlY3RvckJhY2tlbmRDbGFzcygpCitJ
bnNwZWN0b3JCYWNrZW5kQ2xhc3MgPSBjbGFzcyBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MKIHsKLSAg
ICB0aGlzLl9sYXN0U2VxdWVuY2VJZCA9IDE7Ci0gICAgdGhpcy5fcGVuZGluZ1Jlc3BvbnNlc0Nv
dW50ID0gMDsKLSAgICB0aGlzLl9jYWxsYmFja0RhdGEgPSBuZXcgTWFwOwotICAgIHRoaXMuX2Fn
ZW50cyA9IHt9OwotICAgIHRoaXMuX2RlZmVycmVkU2NyaXB0cyA9IFtdOwotCi0gICAgdGhpcy5k
dW1wSW5zcGVjdG9yVGltZVN0YXRzID0gZmFsc2U7Ci0gICAgdGhpcy5kdW1wSW5zcGVjdG9yUHJv
dG9jb2xNZXNzYWdlcyA9IGZhbHNlOwotICAgIHRoaXMud2FybkZvckxvbmdNZXNzYWdlSGFuZGxp
bmcgPSBmYWxzZTsKLSAgICB0aGlzLmxvbmdNZXNzYWdlSGFuZGxpbmdUaHJlc2hvbGQgPSAxMDsg
Ly8gbWlsbGlzZWNvbmRzLgotfQorICAgIGNvbnN0cnVjdG9yKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX2xhc3RTZXF1ZW5jZUlkID0gMTsKKyAgICAgICAgdGhpcy5fcGVuZGluZ1Jlc3BvbnNlc0Nv
dW50ID0gMDsKKyAgICAgICAgdGhpcy5fY2FsbGJhY2tEYXRhID0gbmV3IE1hcDsKKyAgICAgICAg
dGhpcy5fYWdlbnRzID0ge307CisgICAgICAgIHRoaXMuX2RlZmVycmVkU2NyaXB0cyA9IFtdOwog
Ci1JbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlID0geworICAgICAgICB0aGlzLmR1bXBJ
bnNwZWN0b3JUaW1lU3RhdHMgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5kdW1wSW5zcGVjdG9yUHJv
dG9jb2xNZXNzYWdlcyA9IGZhbHNlOworICAgICAgICB0aGlzLndhcm5Gb3JMb25nTWVzc2FnZUhh
bmRsaW5nID0gZmFsc2U7CisgICAgICAgIHRoaXMubG9uZ01lc3NhZ2VIYW5kbGluZ1RocmVzaG9s
ZCA9IDEwOyAvLyBtaWxsaXNlY29uZHMuCisgICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBy
ZWdpc3RlckNvbW1hbmQ6IGZ1bmN0aW9uKHF1YWxpZmllZE5hbWUsIGNhbGxTaWduYXR1cmUsIHJl
cGx5U2lnbmF0dXJlKQorICAgIHJlZ2lzdGVyQ29tbWFuZChxdWFsaWZpZWROYW1lLCBjYWxsU2ln
bmF0dXJlLCByZXBseVNpZ25hdHVyZSkKICAgICB7CiAgICAgICAgIHZhciBbZG9tYWluTmFtZSwg
Y29tbWFuZE5hbWVdID0gcXVhbGlmaWVkTmFtZS5zcGxpdCgiLiIpOwogICAgICAgICB2YXIgYWdl
bnQgPSB0aGlzLl9hZ2VudEZvckRvbWFpbihkb21haW5OYW1lKTsKICAgICAgICAgYWdlbnQuYWRk
Q29tbWFuZChJbnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQuY3JlYXRlKHRoaXMsIHF1YWxpZmllZE5h
bWUsIGNhbGxTaWduYXR1cmUsIHJlcGx5U2lnbmF0dXJlKSk7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICByZWdpc3RlckVudW06IGZ1bmN0aW9uKHF1YWxpZmllZE5hbWUsIGVudW1WYWx1ZXMpCisgICAg
cmVnaXN0ZXJFbnVtKHF1YWxpZmllZE5hbWUsIGVudW1WYWx1ZXMpCiAgICAgewogICAgICAgICB2
YXIgW2RvbWFpbk5hbWUsIGVudW1OYW1lXSA9IHF1YWxpZmllZE5hbWUuc3BsaXQoIi4iKTsKICAg
ICAgICAgdmFyIGFnZW50ID0gdGhpcy5fYWdlbnRGb3JEb21haW4oZG9tYWluTmFtZSk7CiAgICAg
ICAgIGFnZW50LmFkZEVudW0oZW51bU5hbWUsIGVudW1WYWx1ZXMpOwotICAgIH0sCisgICAgfQog
Ci0gICAgcmVnaXN0ZXJFdmVudDogZnVuY3Rpb24ocXVhbGlmaWVkTmFtZSwgc2lnbmF0dXJlKQor
ICAgIHJlZ2lzdGVyRXZlbnQocXVhbGlmaWVkTmFtZSwgc2lnbmF0dXJlKQogICAgIHsKICAgICAg
ICAgdmFyIFtkb21haW5OYW1lLCBldmVudE5hbWVdID0gcXVhbGlmaWVkTmFtZS5zcGxpdCgiLiIp
OwogICAgICAgICB2YXIgYWdlbnQgPSB0aGlzLl9hZ2VudEZvckRvbWFpbihkb21haW5OYW1lKTsK
ICAgICAgICAgYWdlbnQuYWRkRXZlbnQobmV3IEluc3BlY3RvckJhY2tlbmQuRXZlbnQoZXZlbnRO
YW1lLCBzaWduYXR1cmUpKTsKLSAgICB9LAorICAgIH0KIAotICAgIHJlZ2lzdGVyRG9tYWluRGlz
cGF0Y2hlcjogZnVuY3Rpb24oZG9tYWluTmFtZSwgZGlzcGF0Y2hlcikKKyAgICByZWdpc3RlckRv
bWFpbkRpc3BhdGNoZXIoZG9tYWluTmFtZSwgZGlzcGF0Y2hlcikKICAgICB7CiAgICAgICAgIHZh
ciBhZ2VudCA9IHRoaXMuX2FnZW50Rm9yRG9tYWluKGRvbWFpbk5hbWUpOwogICAgICAgICBhZ2Vu
dC5kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcjsKLSAgICB9LAorICAgIH0KIAotICAgIGRpc3BhdGNo
OiBmdW5jdGlvbihtZXNzYWdlKQorICAgIGRpc3BhdGNoKG1lc3NhZ2UpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5kdW1wSW5zcGVjdG9yUHJvdG9jb2xNZXNzYWdlcykKICAgICAgICAgICAgIGNv
bnNvbGUubG9nKCJiYWNrZW5kOiAiICsgKCh0eXBlb2YgbWVzc2FnZSA9PT0gInN0cmluZyIpID8g
bWVzc2FnZSA6IEpTT04uc3RyaW5naWZ5KG1lc3NhZ2UpKSk7CkBAIC04Niw5ICs4Niw5IEBAIElu
c3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl9kaXNw
YXRjaENhbGxiYWNrKG1lc3NhZ2VPYmplY3QpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0
aGlzLl9kaXNwYXRjaEV2ZW50KG1lc3NhZ2VPYmplY3QpOwotICAgIH0sCisgICAgfQogCi0gICAg
cnVuQWZ0ZXJQZW5kaW5nRGlzcGF0Y2hlczogZnVuY3Rpb24oc2NyaXB0KQorICAgIHJ1bkFmdGVy
UGVuZGluZ0Rpc3BhdGNoZXMoc2NyaXB0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
c2NyaXB0KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHNjcmlwdCA9PT0gImZ1bmN0
aW9uIik7CkBAIC05Nyw5ICs5Nyw5IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUg
PSB7CiAgICAgICAgICAgICBzY3JpcHQuY2FsbCh0aGlzKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgdGhpcy5fZGVmZXJyZWRTY3JpcHRzLnB1c2goc2NyaXB0KTsKLSAgICB9LAorICAgIH0K
IAotICAgIGFjdGl2YXRlRG9tYWluOiBmdW5jdGlvbihkb21haW5OYW1lLCBhY3RpdmF0aW9uRGVi
dWdnYWJsZVR5cGUpCisgICAgYWN0aXZhdGVEb21haW4oZG9tYWluTmFtZSwgYWN0aXZhdGlvbkRl
YnVnZ2FibGVUeXBlKQogICAgIHsKICAgICAgICAgaWYgKCFhY3RpdmF0aW9uRGVidWdnYWJsZVR5
cGUgfHwgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmRlYnVnZ2FibGVUeXBlKCkgPT09IGFjdGl2YXRp
b25EZWJ1Z2dhYmxlVHlwZSkgewogICAgICAgICAgICAgdmFyIGFnZW50ID0gdGhpcy5fYWdlbnRz
W2RvbWFpbk5hbWVdOwpAQCAtMTA4LDExICsxMDgsMTEgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNz
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBudWxsOwotICAgIH0s
CisgICAgfQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX2FnZW50Rm9yRG9tYWluOiBmdW5jdGlv
bihkb21haW5OYW1lKQorICAgIF9hZ2VudEZvckRvbWFpbihkb21haW5OYW1lKQogICAgIHsKICAg
ICAgICAgaWYgKHRoaXMuX2FnZW50c1tkb21haW5OYW1lXSkKICAgICAgICAgICAgIHJldHVybiB0
aGlzLl9hZ2VudHNbZG9tYWluTmFtZV07CkBAIC0xMjAsOSArMTIwLDkgQEAgSW5zcGVjdG9yQmFj
a2VuZENsYXNzLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGFnZW50ID0gbmV3IEluc3BlY3Rv
ckJhY2tlbmQuQWdlbnQoZG9tYWluTmFtZSk7CiAgICAgICAgIHRoaXMuX2FnZW50c1tkb21haW5O
YW1lXSA9IGFnZW50OwogICAgICAgICByZXR1cm4gYWdlbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBfd2lsbFNlbmRNZXNzYWdlVG9CYWNrZW5kOiBmdW5jdGlvbihjb21tYW5kLCBjYWxsYmFjaykK
KyAgICBfd2lsbFNlbmRNZXNzYWdlVG9CYWNrZW5kKGNvbW1hbmQsIGNhbGxiYWNrKQogICAgIHsK
ICAgICAgICAgKyt0aGlzLl9wZW5kaW5nUmVzcG9uc2VzQ291bnQ7CiAgICAgICAgIHZhciBzZXF1
ZW5jZUlkID0gdGhpcy5fbGFzdFNlcXVlbmNlSWQrKzsKQEAgLTE0MCw5ICsxNDAsOSBAQCBJbnNw
ZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgcmV0
dXJuIHNlcXVlbmNlSWQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGlzcGF0Y2hDYWxsYmFjazog
ZnVuY3Rpb24obWVzc2FnZU9iamVjdCkKKyAgICBfZGlzcGF0Y2hDYWxsYmFjayhtZXNzYWdlT2Jq
ZWN0KQogICAgIHsKICAgICAgICAgLS10aGlzLl9wZW5kaW5nUmVzcG9uc2VzQ291bnQ7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudCA+PSAwKTsKQEAg
LTE5NSw5ICsxOTUsOSBAQCBJbnNwZWN0b3JCYWNrZW5kQ2xhc3MucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGlmICh0aGlzLl9kZWZlcnJlZFNjcmlwdHMubGVuZ3RoICYmICF0aGlzLl9wZW5kaW5n
UmVzcG9uc2VzQ291bnQpCiAgICAgICAgICAgICB0aGlzLl9mbHVzaFBlbmRpbmdTY3JpcHRzKCk7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfZGlzcGF0Y2hFdmVudDogZnVuY3Rpb24obWVzc2FnZU9i
amVjdCkKKyAgICBfZGlzcGF0Y2hFdmVudChtZXNzYWdlT2JqZWN0KQogICAgIHsKICAgICAgICAg
dmFyIHF1YWxpZmllZE5hbWUgPSBtZXNzYWdlT2JqZWN0WyJtZXRob2QiXTsKICAgICAgICAgdmFy
IFtkb21haW5OYW1lLCBldmVudE5hbWVdID0gcXVhbGlmaWVkTmFtZS5zcGxpdCgiLiIpOwpAQCAt
MjQxLDkgKzI0MSw5IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgaWYgKHRoaXMuZHVtcEluc3BlY3RvclRpbWVTdGF0cykKICAgICAgICAgICAgIGNvbnNv
bGUubG9nKCJ0aW1lLXN0YXRzOiBIYW5kbGluZzogIiArIHByb2Nlc3NpbmdEdXJhdGlvbiArICJt
cyAoZXZlbnQgIiArIG1lc3NhZ2VPYmplY3RbIm1ldGhvZCJdICsgIikiKTsKLSAgICB9LAorICAg
IH0KIAotICAgIF9pbnZva2VDb21tYW5kOiBmdW5jdGlvbihjb21tYW5kLCBwYXJhbWV0ZXJzLCBj
YWxsYmFjaykKKyAgICBfaW52b2tlQ29tbWFuZChjb21tYW5kLCBwYXJhbWV0ZXJzLCBjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIHZhciBtZXNzYWdlT2JqZWN0ID0ge307CiAgICAgICAgIG1lc3Nh
Z2VPYmplY3RbIm1ldGhvZCJdID0gY29tbWFuZC5xdWFsaWZpZWROYW1lOwpAQCAtMjYwLDE0ICsy
NjAsMTQgQEAgSW5zcGVjdG9yQmFja2VuZENsYXNzLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IGNvbnNvbGUubG9nKCJmcm9udGVuZDogIiArIHN0cmluZ2lmaWVkTWVzc2FnZSk7CiAKICAgICAg
ICAgSW5zcGVjdG9yRnJvbnRlbmRIb3N0LnNlbmRNZXNzYWdlVG9CYWNrZW5kKHN0cmluZ2lmaWVk
TWVzc2FnZSk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBfcmVwb3J0UHJvdG9jb2xFcnJvcjogZnVu
Y3Rpb24obWVzc2FnZU9iamVjdCkKKyAgICBfcmVwb3J0UHJvdG9jb2xFcnJvcihtZXNzYWdlT2Jq
ZWN0KQogICAgIHsKICAgICAgICAgY29uc29sZS5lcnJvcigiUmVxdWVzdCB3aXRoIGlkID0gIiAr
IG1lc3NhZ2VPYmplY3RbImlkIl0gKyAiIGZhaWxlZC4gIiArIEpTT04uc3RyaW5naWZ5KG1lc3Nh
Z2VPYmplY3RbImVycm9yIl0pKTsKLSAgICB9LAorICAgIH0KIAotICAgIF9mbHVzaFBlbmRpbmdT
Y3JpcHRzOiBmdW5jdGlvbigpCisgICAgX2ZsdXNoUGVuZGluZ1NjcmlwdHMoKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3BlbmRpbmdSZXNwb25zZXNDb3VudCk7CiAKQEAg
LTI3Niw3MSArMjc2LDc0IEBAIEluc3BlY3RvckJhY2tlbmRDbGFzcy5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGZvciAodmFyIHNjcmlwdCBvZiBzY3JpcHRzVG9SdW4pCiAgICAgICAgICAgICBzY3Jp
cHQuY2FsbCh0aGlzKTsKICAgICB9Ci19Cit9OwogCi1JbnNwZWN0b3JCYWNrZW5kID0gbmV3IElu
c3BlY3RvckJhY2tlbmRDbGFzcygpOworSW5zcGVjdG9yQmFja2VuZCA9IG5ldyBJbnNwZWN0b3JC
YWNrZW5kQ2xhc3M7CiAKLUluc3BlY3RvckJhY2tlbmQuQWdlbnQgPSBmdW5jdGlvbihkb21haW5O
YW1lKQorSW5zcGVjdG9yQmFja2VuZC5BZ2VudCA9IGNsYXNzIEluc3BlY3RvckJhY2tlbmRBZ2Vu
dAogewotICAgIHRoaXMuX2RvbWFpbk5hbWUgPSBkb21haW5OYW1lOworICAgIGNvbnN0cnVjdG9y
KGRvbWFpbk5hbWUpCisgICAgeworICAgICAgICB0aGlzLl9kb21haW5OYW1lID0gZG9tYWluTmFt
ZTsKIAotICAgIC8vIEFnZW50cyBhcmUgYWx3YXlzIGNyZWF0ZWQsIGJ1dCBhcmUgb25seSB1c2Vh
YmxlIGFmdGVyIHRoZXkgYXJlIGFjdGl2YXRlZC4KLSAgICB0aGlzLl9hY3RpdmUgPSBmYWxzZTsK
KyAgICAgICAgLy8gQWdlbnRzIGFyZSBhbHdheXMgY3JlYXRlZCwgYnV0IGFyZSBvbmx5IHVzZWFi
bGUgYWZ0ZXIgdGhleSBhcmUgYWN0aXZhdGVkLgorICAgICAgICB0aGlzLl9hY3RpdmUgPSBmYWxz
ZTsKKworICAgICAgICAvLyBDb21tYW5kcyBhcmUgc3RvcmVkIGRpcmVjdGx5IG9uIHRoZSBBZ2Vu
dCBpbnN0YW5jZSB1c2luZyB0aGVpciB1bnF1YWxpZmllZAorICAgICAgICAvLyBtZXRob2QgbmFt
ZSBhcyB0aGUgcHJvcGVydHkuIFRodXMsIGNhbGxlcnMgY2FuIHdyaXRlOiBGb29BZ2VudC5tZXRo
b2ROYW1lKCkuCisgICAgICAgIC8vIEVudW1zIGFyZSBzdG9yZWQgc2ltaWxhcmx5IGJhc2VkIG9u
IHRoZSB1bnF1YWxpZmllZCB0eXBlIG5hbWUuCisgICAgICAgIHRoaXMuX2V2ZW50cyA9IHt9Owor
ICAgIH0KIAotICAgIC8vIENvbW1hbmRzIGFyZSBzdG9yZWQgZGlyZWN0bHkgb24gdGhlIEFnZW50
IGluc3RhbmNlIHVzaW5nIHRoZWlyIHVucXVhbGlmaWVkCi0gICAgLy8gbWV0aG9kIG5hbWUgYXMg
dGhlIHByb3BlcnR5LiBUaHVzLCBjYWxsZXJzIGNhbiB3cml0ZTogRm9vQWdlbnQubWV0aG9kTmFt
ZSgpLgotICAgIC8vIEVudW1zIGFyZSBzdG9yZWQgc2ltaWxhcmx5IGJhc2VkIG9uIHRoZSB1bnF1
YWxpZmllZCB0eXBlIG5hbWUuCi0gICAgdGhpcy5fZXZlbnRzID0ge307Ci19CisgICAgLy8gUHVi
bGljCiAKLUluc3BlY3RvckJhY2tlbmQuQWdlbnQucHJvdG90eXBlID0gewogICAgIGdldCBkb21h
aW5OYW1lKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21haW5OYW1lOwotICAgIH0s
CisgICAgfQogCiAgICAgZ2V0IGFjdGl2ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
YWN0aXZlOwotICAgIH0sCisgICAgfQogCiAgICAgc2V0IGRpc3BhdGNoZXIodmFsdWUpCiAgICAg
ewogICAgICAgICB0aGlzLl9kaXNwYXRjaGVyID0gdmFsdWU7Ci0gICAgfSwKKyAgICB9CiAKLSAg
ICBhZGRFbnVtOiBmdW5jdGlvbihlbnVtTmFtZSwgZW51bVZhbHVlcykKKyAgICBhZGRFbnVtKGVu
dW1OYW1lLCBlbnVtVmFsdWVzKQogICAgIHsKICAgICAgICAgdGhpc1tlbnVtTmFtZV0gPSBlbnVt
VmFsdWVzOwotICAgIH0sCisgICAgfQogCi0gICAgYWRkQ29tbWFuZDogZnVuY3Rpb24oY29tbWFu
ZCkKKyAgICBhZGRDb21tYW5kKGNvbW1hbmQpCiAgICAgewogICAgICAgICB0aGlzW2NvbW1hbmQu
Y29tbWFuZE5hbWVdID0gY29tbWFuZDsKLSAgICB9LAorICAgIH0KIAotICAgIGFkZEV2ZW50OiBm
dW5jdGlvbihldmVudCkKKyAgICBhZGRFdmVudChldmVudCkKICAgICB7CiAgICAgICAgIHRoaXMu
X2V2ZW50c1tldmVudC5ldmVudE5hbWVdID0gZXZlbnQ7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBn
ZXRFdmVudDogZnVuY3Rpb24oZXZlbnROYW1lKQorICAgIGdldEV2ZW50KGV2ZW50TmFtZSkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9ldmVudHNbZXZlbnROYW1lXTsKLSAgICB9LAorICAg
IH0KIAotICAgIGhhc0V2ZW50OiBmdW5jdGlvbihldmVudE5hbWUpCisgICAgaGFzRXZlbnQoZXZl
bnROYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGV2ZW50TmFtZSBpbiB0aGlzLl9ldmVudHM7
Ci0gICAgfSwKKyAgICB9CiAKLSAgICBhY3RpdmF0ZTogZnVuY3Rpb24oKQorICAgIGFjdGl2YXRl
KCkKICAgICB7CiAgICAgICAgIHRoaXMuX2FjdGl2ZSA9IHRydWU7CiAgICAgICAgIHdpbmRvd1t0
aGlzLl9kb21haW5OYW1lICsgIkFnZW50Il0gPSB0aGlzOwotICAgIH0sCisgICAgfQogCi0gICAg
ZGlzcGF0Y2hFdmVudDogZnVuY3Rpb24oZXZlbnROYW1lLCBldmVudEFyZ3VtZW50cykKKyAgICBk
aXNwYXRjaEV2ZW50KGV2ZW50TmFtZSwgZXZlbnRBcmd1bWVudHMpCiAgICAgewogICAgICAgICBp
ZiAoIShldmVudE5hbWUgaW4gdGhpcy5fZGlzcGF0Y2hlcikpIHsKICAgICAgICAgICAgIGNvbnNv
bGUuZXJyb3IoIlByb3RvY29sIEVycm9yOiBBdHRlbXB0ZWQgdG8gZGlzcGF0Y2ggYW4gdW5pbXBs
ZW1lbnRlZCBtZXRob2QgJyIgKyB0aGlzLl9kb21haW5OYW1lICsgIi4iICsgZXZlbnROYW1lICsg
IiciKTsKQEAgLTM1MCwxMCArMzUzLDE0IEBAIEluc3BlY3RvckJhY2tlbmQuQWdlbnQucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9kaXNwYXRjaGVyW2V2ZW50TmFtZV0uYXBwbHkodGhpcy5f
ZGlzcGF0Y2hlciwgZXZlbnRBcmd1bWVudHMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
Ci19Cit9OwogCisvLyBJbnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQgY2FuJ3QgdXNlIEVTNiBjbGFz
c2VzIGJlY2F1c2Ugb2YgaXRzIHRyYW1wb2xpbmUgbmF0dXJlLgorLy8gQnV0IHdlIGNhbiB1c2Ug
c3RyaWN0IG1vZGUgdG8gZ2V0IHN0cmljdGVyIGhhbmRsaW5nIG9mIHRoZSBjb2RlIGluc2lkZSBp
dHMgZnVuY3Rpb25zLgogSW5zcGVjdG9yQmFja2VuZC5Db21tYW5kID0gZnVuY3Rpb24oYmFja2Vu
ZCwgcXVhbGlmaWVkTmFtZSwgY2FsbFNpZ25hdHVyZSwgcmVwbHlTaWduYXR1cmUpCiB7CisgICAg
J3VzZSBzdHJpY3QnOworCiAgICAgdGhpcy5fYmFja2VuZCA9IGJhY2tlbmQ7CiAgICAgdGhpcy5f
aW5zdGFuY2UgPSB0aGlzOwogCkBAIC0zNjIsMjMgKzM2OSwyNiBAQCBJbnNwZWN0b3JCYWNrZW5k
LkNvbW1hbmQgPSBmdW5jdGlvbihiYWNrZW5kLCBxdWFsaWZpZWROYW1lLCBjYWxsU2lnbmF0dXJl
LCByZXBseQogICAgIHRoaXMuX2NvbW1hbmROYW1lID0gY29tbWFuZE5hbWU7CiAgICAgdGhpcy5f
Y2FsbFNpZ25hdHVyZSA9IGNhbGxTaWduYXR1cmUgfHwgW107CiAgICAgdGhpcy5fcmVwbHlTaWdu
YXR1cmUgPSByZXBseVNpZ25hdHVyZSB8fCBbXTsKLX0KK307CiAKIEluc3BlY3RvckJhY2tlbmQu
Q29tbWFuZC5jcmVhdGUgPSBmdW5jdGlvbihiYWNrZW5kLCBjb21tYW5kTmFtZSwgY2FsbFNpZ25h
dHVyZSwgcmVwbHlTaWduYXR1cmUpCiB7CisgICAgJ3VzZSBzdHJpY3QnOworCiAgICAgdmFyIGlu
c3RhbmNlID0gbmV3IEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZChiYWNrZW5kLCBjb21tYW5kTmFt
ZSwgY2FsbFNpZ25hdHVyZSwgcmVwbHlTaWduYXR1cmUpOwogCiAgICAgZnVuY3Rpb24gY2FsbGFi
bGUoKSB7CiAgICAgICAgIC8vIElmIHRoZSBsYXN0IGFyZ3VtZW50IHRvIHRoZSBjb21tYW5kIGlz
IG5vdCBhIGZ1bmN0aW9uLCByZXR1cm4gYSByZXN1bHQgcHJvbWlzZS4KICAgICAgICAgaWYgKCFh
cmd1bWVudHMubGVuZ3RoIHx8IHR5cGVvZiBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFd
ICE9PSAiZnVuY3Rpb24iKQogICAgICAgICAgICAgcmV0dXJuIGluc3RhbmNlLnByb21pc2UuYXBw
bHkoaW5zdGFuY2UsIGFyZ3VtZW50cyk7Ci0KICAgICAgICAgcmV0dXJuIGluc3RhbmNlLl9pbnZv
a2VXaXRoQXJndW1lbnRzLmFwcGx5KGluc3RhbmNlLCBhcmd1bWVudHMpOwogICAgIH0KKwogICAg
IGNhbGxhYmxlLl9pbnN0YW5jZSA9IGluc3RhbmNlOwogICAgIGNhbGxhYmxlLl9fcHJvdG9fXyA9
IEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZC5wcm90b3R5cGU7CisKICAgICByZXR1cm4gY2FsbGFi
bGU7Ci19Cit9OwogCiAvLyBBcyBwYXJ0IG9mIHRoZSB3b3JrYXJvdW5kIHRvIG1ha2UgY29tbWFu
ZHMgY2FsbGFibGUsIHRoZXNlIGZ1bmN0aW9ucyB1c2UgfHRoaXMuX2luc3RhbmNlfC4KIC8vIHx0
aGlzfCBjb3VsZCByZWZlciB0byB0aGUgY2FsbGFibGUgdHJhbXBvbGluZSwgb3IgdGhlIEluc3Bl
Y3RvckJhY2tlbmQuQ29tbWFuZCBpbnN0YW5jZS4KQEAgLTQwOSwxOCArNDE5LDIzIEBAIEluc3Bl
Y3RvckJhY2tlbmQuQ29tbWFuZC5wcm90b3R5cGUgPSB7CiAKICAgICBpbnZva2U6IGZ1bmN0aW9u
KGNvbW1hbmRBcmd1bWVudHMsIGNhbGxiYWNrKQogICAgIHsKKyAgICAgICAgJ3VzZSBzdHJpY3Qn
OworCiAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXMuX2luc3RhbmNlOwogICAgICAgICBpbnN0
YW5jZS5fYmFja2VuZC5faW52b2tlQ29tbWFuZChpbnN0YW5jZSwgY29tbWFuZEFyZ3VtZW50cywg
Y2FsbGJhY2spOwogICAgIH0sCiAKICAgICBwcm9taXNlOiBmdW5jdGlvbigpCiAgICAgeworICAg
ICAgICAndXNlIHN0cmljdCc7CisKICAgICAgICAgdmFyIGluc3RhbmNlID0gdGhpcy5faW5zdGFu
Y2U7CiAgICAgICAgIHZhciBwcm9taXNlQXJndW1lbnRzID0gQXJyYXkuZnJvbShhcmd1bWVudHMp
OwogICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7
CiAgICAgICAgICAgICBmdW5jdGlvbiBjb252ZXJ0VG9Qcm9taXNlQ2FsbGJhY2soZXJyb3IsIHBh
eWxvYWQpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3IgPyByZWplY3QoZXJyb3IpIDog
cmVzb2x2ZShwYXlsb2FkKTsKICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gRklYTUU6
IHRoaXMgc2hvdWxkIGJlIGluZGljYXRlZCBieSBpbnZva2luZyB0aGUgY29tbWFuZCBkaWZmZXJl
bnRseSwgcmF0aGVyCiAgICAgICAgICAgICAvLyB0aGFuIGJ5IHNldHRpbmcgYSBtYWdpY2FsIHBy
b3BlcnR5IG9uIHRoZSBjYWxsYmFjay4gPHdlYmtpdC5vcmcvYi8xMzIzODY+CiAgICAgICAgICAg
ICBjb252ZXJ0VG9Qcm9taXNlQ2FsbGJhY2suZXhwZWN0c1Jlc3VsdE9iamVjdCA9IHRydWU7CkBA
IC00MzIsNiArNDQ3LDggQEAgSW5zcGVjdG9yQmFja2VuZC5Db21tYW5kLnByb3RvdHlwZSA9IHsK
IAogICAgIHN1cHBvcnRzOiBmdW5jdGlvbihwYXJhbWV0ZXJOYW1lKQogICAgIHsKKyAgICAgICAg
J3VzZSBzdHJpY3QnOworCiAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXMuX2luc3RhbmNlOwog
ICAgICAgICByZXR1cm4gaW5zdGFuY2UuY2FsbFNpZ25hdHVyZS5zb21lKGZ1bmN0aW9uKHBhcmFt
ZXRlcikgewogICAgICAgICAgICAgcmV0dXJuIHBhcmFtZXRlclsibmFtZSJdID09PSBwYXJhbWV0
ZXJOYW1lOwpAQCAtNDQyLDYgKzQ1OSw4IEBAIEluc3BlY3RvckJhY2tlbmQuQ29tbWFuZC5wcm90
b3R5cGUgPSB7CiAKICAgICBfaW52b2tlV2l0aEFyZ3VtZW50czogZnVuY3Rpb24oKQogICAgIHsK
KyAgICAgICAgJ3VzZSBzdHJpY3QnOworCiAgICAgICAgIHZhciBpbnN0YW5jZSA9IHRoaXMuX2lu
c3RhbmNlOwogICAgICAgICB2YXIgY29tbWFuZEFyZ3VtZW50cyA9IEFycmF5LmZyb20oYXJndW1l
bnRzKTsKICAgICAgICAgdmFyIGNhbGxiYWNrID0gdHlwZW9mIGNvbW1hbmRBcmd1bWVudHMubGFz
dFZhbHVlID09PSAiZnVuY3Rpb24iID8gY29tbWFuZEFyZ3VtZW50cy5wb3AoKSA6IG51bGw7CkBA
IC00NzgsMTEgKzQ5NywxNCBAQCBJbnNwZWN0b3JCYWNrZW5kLkNvbW1hbmQucHJvdG90eXBlID0g
ewogICAgICAgICB9CiAKICAgICAgICAgaW5zdGFuY2UuX2JhY2tlbmQuX2ludm9rZUNvbW1hbmQo
aW5zdGFuY2UsIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLmxlbmd0aCA/IHBhcmFtZXRlcnMgOiBu
dWxsLCBjYWxsYmFjayk7Ci0gICAgfSwKLX0KKyAgICB9Cit9OwogCi1JbnNwZWN0b3JCYWNrZW5k
LkV2ZW50ID0gZnVuY3Rpb24oZXZlbnROYW1lLCBwYXJhbWV0ZXJOYW1lcykKK0luc3BlY3RvckJh
Y2tlbmQuRXZlbnQgPSBjbGFzcyBFdmVudAogewotICAgIHRoaXMuZXZlbnROYW1lID0gZXZlbnRO
YW1lOwotICAgIHRoaXMucGFyYW1ldGVyTmFtZXMgPSBwYXJhbWV0ZXJOYW1lczsKLX0KKyAgICBj
b25zdHJ1Y3RvcihldmVudE5hbWUsIHBhcmFtZXRlck5hbWVzKQorICAgIHsKKyAgICAgICAgdGhp
cy5ldmVudE5hbWUgPSBldmVudE5hbWU7CisgICAgICAgIHRoaXMucGFyYW1ldGVyTmFtZXMgPSBw
YXJhbWV0ZXJOYW1lczsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yT2JzZXJ2ZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5q
cwppbmRleCA4NDkxNzU3NWU1MDIyZjY5M2IyZDQ2NTU1NzdiNDhkMmI1ODk3YjRjLi44YmRhZGI3
ZWRlOWE4ZTZiZDRlYjM4YmJiZDQ4YzIxMTA5ZjA0ODA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JPYnNlcnZlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0
b3JPYnNlcnZlci5qcwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMs
IDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yMywxOCArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIgPSBm
dW5jdGlvbigpCitXZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIgPSBjbGFzcyBJbnNwZWN0
b3JPYnNlcnZlcgogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0
b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5JbnNwZWN0b3JPYnNlcnZl
ci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5JbnNwZWN0b3JP
YnNlcnZlciwKLQogICAgIC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiSW5zcGVjdG9yIiBkb21h
aW4uCiAKLSAgICBldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kOiBmdW5jdGlvbihzY3JpcHQpCisg
ICAgZXZhbHVhdGVGb3JUZXN0SW5Gcm9udGVuZChzY3JpcHQpCiAgICAgewogICAgICAgICBpZiAo
IUluc3BlY3RvckZyb250ZW5kSG9zdC5pc1VuZGVyVGVzdCgpKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNDIsOSArMzUsOSBAQCBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIucHJvdG90
eXBlID0gewogICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnJ1bkFmdGVyUGVuZGluZ0Rpc3BhdGNo
ZXMoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICB3aW5kb3cuZXZhbChzY3JpcHQpOwogICAgICAg
ICB9KTsKLSAgICB9LAorICAgIH0KIAotICAgIGluc3BlY3Q6IGZ1bmN0aW9uKHBheWxvYWQsIGhp
bnRzKQorICAgIGluc3BlY3QocGF5bG9hZCwgaGludHMpCiAgICAgewogICAgICAgICB2YXIgcmVt
b3RlT2JqZWN0ID0gV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChwYXlsb2Fk
KTsKICAgICAgICAgaWYgKHJlbW90ZU9iamVjdC5zdWJ0eXBlID09PSAibm9kZSIpIHsKQEAgLTYx
LDE3ICs1NCwxNSBAQCBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yT2JzZXJ2ZXIucHJvdG90eXBlID0g
ewogICAgICAgICBXZWJJbnNwZWN0b3IubmF2aWdhdGlvblNpZGViYXIuc2VsZWN0ZWRTaWRlYmFy
UGFuZWwgPSBXZWJJbnNwZWN0b3IucmVzb3VyY2VTaWRlYmFyUGFuZWw7CiAKICAgICAgICAgcmVt
b3RlT2JqZWN0LnJlbGVhc2UoKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRldGFjaGVkOiBmdW5j
dGlvbihyZWFzb24pCisgICAgZGV0YWNoZWQocmVhc29uKQogICAgIHsKICAgICAgICAgLy8gRklY
TUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIGFjdGl2YXRlRXh0cmFE
b21haW5zOiBmdW5jdGlvbihkb21haW5zKQorICAgIGFjdGl2YXRlRXh0cmFEb21haW5zKGRvbWFp
bnMpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IuYWN0aXZhdGVFeHRyYURvbWFpbnMoZG9t
YWlucyk7CiAgICAgfQogfTsKLQotV2ViSW5zcGVjdG9yLkluc3BlY3Rvck9ic2VydmVyLnByb3Rv
dHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0xheWVyVHJl
ZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9j
b2wvTGF5ZXJUcmVlT2JzZXJ2ZXIuanMKaW5kZXggNTVjYjkwZTAxZmY5ZTMwMjQxM2NjYmY3OWNh
YTgwYjRkZjIxMTUxZS4uMGFjNjcxYmRkMjZkYWNhOGRiNDQ5MDkzYzUzZDdlOTFiOTY5NDIwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wv
TGF5ZXJUcmVlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvUHJvdG9jb2wvTGF5ZXJUcmVlT2JzZXJ2ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3LDI4ICsxNywxOSBAQAogICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgogICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKICAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT2RGIExJQUJJTElUWSwgV0hFVEhFUiBJTgogICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKICAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1X
ZWJJbnNwZWN0b3IuTGF5ZXJUcmVlT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3Iu
TGF5ZXJUcmVlT2JzZXJ2ZXIgPSBjbGFzcyBMYXllclRyZWVPYnNlcnZlcgogewotICAgIC8vIEZJ
WE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQg
Y2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKLX07
Ci0KLVdlYkluc3BlY3Rvci5MYXllclRyZWVPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29u
c3RydWN0b3I6IFdlYkluc3BlY3Rvci5MYXllclRyZWVPYnNlcnZlciwKLQogICAgIC8vIEV2ZW50
cyBkZWZpbmVkIGJ5IHRoZSAiTGF5ZXJUcmVlIiBkb21haW4uCiAKLSAgICBsYXllclRyZWVEaWRD
aGFuZ2U6IGZ1bmN0aW9uKCkKKyAgICBsYXllclRyZWVEaWRDaGFuZ2UoKQogICAgIHsKICAgICAg
ICAgaWYgKFdlYkluc3BlY3Rvci5sYXllclRyZWVNYW5hZ2VyLnN1cHBvcnRlZCkKICAgICAgICAg
ICAgIFdlYkluc3BlY3Rvci5sYXllclRyZWVNYW5hZ2VyLmxheWVyVHJlZURpZENoYW5nZSgpOwog
ICAgIH0KIH07Ci0KLVdlYkluc3BlY3Rvci5MYXllclRyZWVPYnNlcnZlci5wcm90b3R5cGUuX19w
cm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9NZXNzYWdlRGlzcGF0Y2hl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01lc3Nh
Z2VEaXNwYXRjaGVyLmpzCmluZGV4IDExYzhmNjcwNmM2NTI4YTVlMGEzNDVlYjQ2ODBjNjM0OTQ3
YWFjZmMuLjQ5YWNmMDA1MjIzZTQ0MWU1YmU5OGQ2MDRmOGJhZTlmZDA0N2I4YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL01lc3NhZ2VE
aXNwYXRjaGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1By
b3RvY29sL01lc3NhZ2VEaXNwYXRjaGVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDE0IFVuaXZlcnNpdHkgb2YgV2FzaGluZ3RvbgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtMjQsMzQgKzI0LDM0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLm1lc3NhZ2VzVG9EaXNwYXRjaCA9IFtdOworV2ViSW5zcGVj
dG9yLl9tZXNzYWdlc1RvRGlzcGF0Y2ggPSBbXTsKIAogV2ViSW5zcGVjdG9yLmRpc3BhdGNoTmV4
dFF1ZXVlZE1lc3NhZ2VGcm9tQmFja2VuZCA9IGZ1bmN0aW9uKCkKIHsKLSAgICB2YXIgc3RhcnRD
b3VudCA9IFdlYkluc3BlY3Rvci5tZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoOworICAgIHZhciBz
dGFydENvdW50ID0gV2ViSW5zcGVjdG9yLl9tZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoOwogICAg
IHZhciBzdGFydFRpbWUgPSBEYXRlLm5vdygpOwogICAgIHZhciB0aW1lTGltaXRQZXJSdW5Mb29w
ID0gMTA7IC8vIG1pbGxpc2Vjb25kcwogCiAgICAgdmFyIGkgPSAwOwotICAgIGZvciAoOyBpIDwg
V2ViSW5zcGVjdG9yLm1lc3NhZ2VzVG9EaXNwYXRjaC5sZW5ndGg7ICsraSkgeworICAgIGZvciAo
OyBpIDwgV2ViSW5zcGVjdG9yLl9tZXNzYWdlc1RvRGlzcGF0Y2gubGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgLy8gRGVmZXIgcmVtYWluaW5nIG1lc3NhZ2VzIGlmIHdlIGhhdmUgdGFrZW4gdG9vIGxv
bmcuIEluIHByYWN0aWNlLCBzaW5nbGUKICAgICAgICAgLy8gbWVzc2FnZXMgbGlrZSBQYWdlLmdl
dFJlc291cmNlQ29udGVudCBibG93IHRocm91Z2ggdGhlIHRpbWUgYnVkZ2V0LgogICAgICAgICBp
ZiAoRGF0ZS5ub3coKSAtIHN0YXJ0VGltZSA+IHRpbWVMaW1pdFBlclJ1bkxvb3ApCiAgICAgICAg
ICAgICBicmVhazsKIAotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmRpc3BhdGNoKFdlYkluc3Bl
Y3Rvci5tZXNzYWdlc1RvRGlzcGF0Y2hbaV0pOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmRp
c3BhdGNoKFdlYkluc3BlY3Rvci5fbWVzc2FnZXNUb0Rpc3BhdGNoW2ldKTsKICAgICB9CiAKLSAg
ICBpZiAoaSA9PT0gV2ViSW5zcGVjdG9yLm1lc3NhZ2VzVG9EaXNwYXRjaC5sZW5ndGgpIHsKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLm1lc3NhZ2VzVG9EaXNwYXRjaCA9IFtdOworICAgIGlmIChpID09
PSBXZWJJbnNwZWN0b3IuX21lc3NhZ2VzVG9EaXNwYXRjaC5sZW5ndGgpIHsKKyAgICAgICAgV2Vi
SW5zcGVjdG9yLl9tZXNzYWdlc1RvRGlzcGF0Y2ggPSBbXTsKICAgICAgICAgV2ViSW5zcGVjdG9y
Ll9kaXNwYXRjaFRpbWVvdXQgPSBudWxsOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFdlYkluc3Bl
Y3Rvci5tZXNzYWdlc1RvRGlzcGF0Y2ggPSBXZWJJbnNwZWN0b3IubWVzc2FnZXNUb0Rpc3BhdGNo
LnNsaWNlKGkpOworICAgICAgICBXZWJJbnNwZWN0b3IuX21lc3NhZ2VzVG9EaXNwYXRjaCA9IFdl
Ykluc3BlY3Rvci5fbWVzc2FnZXNUb0Rpc3BhdGNoLnNsaWNlKGkpOwogICAgICAgICBXZWJJbnNw
ZWN0b3IuX2Rpc3BhdGNoVGltZW91dCA9IHNldFRpbWVvdXQoV2ViSW5zcGVjdG9yLmRpc3BhdGNo
TmV4dFF1ZXVlZE1lc3NhZ2VGcm9tQmFja2VuZCwgMCk7CiAgICAgfQogCiAgICAgaWYgKEluc3Bl
Y3RvckJhY2tlbmQuZHVtcEluc3BlY3RvclRpbWVTdGF0cykKLSAgICAgICAgY29uc29sZS5sb2co
InRpbWUtc3RhdHM6IC0tLSBSdW5Mb29wIGR1cmF0aW9uOiAiICsgKERhdGUubm93KCkgLSBzdGFy
dFRpbWUpICsgIm1zOyBkaXNwYXRjaGVkOiAiICsgKHN0YXJ0Q291bnQgLSBXZWJJbnNwZWN0b3Iu
bWVzc2FnZXNUb0Rpc3BhdGNoLmxlbmd0aCkgKyAiOyByZW1haW5pbmc6ICIgKyBXZWJJbnNwZWN0
b3IubWVzc2FnZXNUb0Rpc3BhdGNoLmxlbmd0aCk7CisgICAgICAgIGNvbnNvbGUubG9nKCJ0aW1l
LXN0YXRzOiAtLS0gUnVuTG9vcCBkdXJhdGlvbjogIiArIChEYXRlLm5vdygpIC0gc3RhcnRUaW1l
KSArICJtczsgZGlzcGF0Y2hlZDogIiArIChzdGFydENvdW50IC0gV2ViSW5zcGVjdG9yLl9tZXNz
YWdlc1RvRGlzcGF0Y2gubGVuZ3RoKSArICI7IHJlbWFpbmluZzogIiArIFdlYkluc3BlY3Rvci5f
bWVzc2FnZXNUb0Rpc3BhdGNoLmxlbmd0aCk7CiB9OwogCiBXZWJJbnNwZWN0b3IuZGlzcGF0Y2hN
ZXNzYWdlRnJvbUJhY2tlbmQgPSBmdW5jdGlvbihtZXNzYWdlKQpAQCAtNTksNyArNTksNyBAQCBX
ZWJJbnNwZWN0b3IuZGlzcGF0Y2hNZXNzYWdlRnJvbUJhY2tlbmQgPSBmdW5jdGlvbihtZXNzYWdl
KQogICAgIC8vIEVuZm9yY2UgYXN5bmNocm9ub3VzIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGJh
Y2tlbmQgYW5kIHRoZSBmcm9udGVuZCBieSBxdWV1ZWluZyBtZXNzYWdlcy4KICAgICAvLyBUaGUg
bWVzc2FnZXMgYXJlIGRlcXVldWVkIG9uIGEgemVybyBkZWxheSB0aW1lb3V0LgogCi0gICAgdGhp
cy5tZXNzYWdlc1RvRGlzcGF0Y2gucHVzaChtZXNzYWdlKTsKKyAgICBXZWJJbnNwZWN0b3IuX21l
c3NhZ2VzVG9EaXNwYXRjaC5wdXNoKG1lc3NhZ2UpOwogCiAgICAgaWYgKHRoaXMuX2Rpc3BhdGNo
VGltZW91dCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvTmV0d29ya09ic2VydmVyLmpzCmlu
ZGV4IDhkYjkwZWI1NzgxZWI3MzczM2YwNTJiNTkwYjQyZjVlZGJiYmNhYjUuLjhhZGNiNmVkNWY2
YzFiM2IxZmFmNzYzOTQxNTJlYzBhNTJmMzQ2MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL05ldHdvcmtPYnNlcnZlci5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9OZXR3b3JrT2JzZXJ2
ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTIzLDg2ICsyMyw3NyBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdlYkluc3BlY3Rvci5OZXR3b3JrT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJ
bnNwZWN0b3IuTmV0d29ya09ic2VydmVyID0gY2xhc3MgTmV0d29ya09ic2VydmVyCiB7Ci0gICAg
Ly8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3Ms
IGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OwotfTsKLQotV2ViSW5zcGVjdG9yLk5ldHdvcmtPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IFdlYkluc3BlY3Rvci5OZXR3b3JrT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVu
dHMgZGVmaW5lZCBieSB0aGUgIk5ldHdvcmsiIGRvbWFpbi4KIAotICAgIHJlcXVlc3RXaWxsQmVT
ZW50OiBmdW5jdGlvbihyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBkb2N1bWVudFVSTCwg
cmVxdWVzdCwgdGltZXN0YW1wLCBpbml0aWF0b3IsIHJlZGlyZWN0UmVzcG9uc2UsIHR5cGUpCisg
ICAgcmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgZG9jdW1l
bnRVUkwsIHJlcXVlc3QsIHRpbWVzdGFtcCwgaW5pdGlhdG9yLCByZWRpcmVjdFJlc3BvbnNlLCB0
eXBlKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJl
c291cmNlUmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwgcmVx
dWVzdCwgdHlwZSwgcmVkaXJlY3RSZXNwb25zZSwgdGltZXN0YW1wLCBpbml0aWF0b3IpOwotICAg
IH0sCisgICAgfQogCi0gICAgcmVxdWVzdFNlcnZlZEZyb21DYWNoZTogZnVuY3Rpb24ocmVxdWVz
dElkKQorICAgIHJlcXVlc3RTZXJ2ZWRGcm9tQ2FjaGUocmVxdWVzdElkKQogICAgIHsKICAgICAg
ICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLm1hcmtSZXNvdXJjZVJlcXVlc3RB
c1NlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQpOwotICAgIH0sCisgICAgfQogCi0gICAg
cmVzcG9uc2VSZWNlaXZlZDogZnVuY3Rpb24ocmVxdWVzdElkLCBmcmFtZUlkLCBsb2FkZXJJZCwg
dGltZXN0YW1wLCB0eXBlLCByZXNwb25zZSkKKyAgICByZXNwb25zZVJlY2VpdmVkKHJlcXVlc3RJ
ZCwgZnJhbWVJZCwgbG9hZGVySWQsIHRpbWVzdGFtcCwgdHlwZSwgcmVzcG9uc2UpCiAgICAgewog
ICAgICAgICBXZWJJbnNwZWN0b3IuZnJhbWVSZXNvdXJjZU1hbmFnZXIucmVzb3VyY2VSZXF1ZXN0
RGlkUmVjZWl2ZVJlc3BvbnNlKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIHR5cGUsIHJl
c3BvbnNlLCB0aW1lc3RhbXApOwotICAgIH0sCisgICAgfQogCi0gICAgZGF0YVJlY2VpdmVkOiBm
dW5jdGlvbihyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgZGF0YUxlbmd0aCwgZW5jb2RlZERhdGFMZW5n
dGgpCisgICAgZGF0YVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wLCBkYXRhTGVuZ3RoLCBl
bmNvZGVkRGF0YUxlbmd0aCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291
cmNlTWFuYWdlci5yZXNvdXJjZVJlcXVlc3REaWRSZWNlaXZlRGF0YShyZXF1ZXN0SWQsIGRhdGFM
ZW5ndGgsIGVuY29kZWREYXRhTGVuZ3RoLCB0aW1lc3RhbXApOwotICAgIH0sCisgICAgfQogCi0g
ICAgbG9hZGluZ0ZpbmlzaGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgc291cmNl
TWFwVVJMKQorICAgIGxvYWRpbmdGaW5pc2hlZChyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgc291cmNl
TWFwVVJMKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2Vy
LnJlc291cmNlUmVxdWVzdERpZEZpbmlzaExvYWRpbmcocmVxdWVzdElkLCB0aW1lc3RhbXAsIHNv
dXJjZU1hcFVSTCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBsb2FkaW5nRmFpbGVkOiBmdW5jdGlv
bihyZXF1ZXN0SWQsIHRpbWVzdGFtcCwgZXJyb3JUZXh0LCBjYW5jZWxlZCkKKyAgICBsb2FkaW5n
RmFpbGVkKHJlcXVlc3RJZCwgdGltZXN0YW1wLCBlcnJvclRleHQsIGNhbmNlbGVkKQogICAgIHsK
ICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLnJlc291cmNlUmVxdWVz
dERpZEZhaWxMb2FkaW5nKHJlcXVlc3RJZCwgY2FuY2VsZWQsIHRpbWVzdGFtcCk7Ci0gICAgfSwK
KyAgICB9CiAKLSAgICByZXF1ZXN0U2VydmVkRnJvbU1lbW9yeUNhY2hlOiBmdW5jdGlvbihyZXF1
ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklkLCBkb2N1bWVudFVSTCwgdGltZXN0YW1wLCBpbml0aWF0
b3IsIHJlc291cmNlKQorICAgIHJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElk
LCBmcmFtZUlkLCBsb2FkZXJJZCwgZG9jdW1lbnRVUkwsIHRpbWVzdGFtcCwgaW5pdGlhdG9yLCBy
ZXNvdXJjZSkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdl
ci5yZXNvdXJjZVJlcXVlc3RXYXNTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFt
ZUlkLCBsb2FkZXJJZCwgcmVzb3VyY2UsIHRpbWVzdGFtcCwgaW5pdGlhdG9yKTsKLSAgICB9LAor
ICAgIH0KIAotICAgIHdlYlNvY2tldFdpbGxTZW5kSGFuZHNoYWtlUmVxdWVzdDogZnVuY3Rpb24o
cmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlcXVlc3QpCisgICAgd2ViU29ja2V0V2lsbFNlbmRIYW5k
c2hha2VSZXF1ZXN0KHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXF1ZXN0KQogICAgIHsKICAgICAg
ICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIHdlYlNv
Y2tldEhhbmRzaGFrZVJlc3BvbnNlUmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgdGltZXN0
YW1wLCByZXNwb25zZSkKKyAgICB3ZWJTb2NrZXRIYW5kc2hha2VSZXNwb25zZVJlY2VpdmVkKHJl
cXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBO
b3QgaW1wbGVtZW50ZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICB3ZWJTb2NrZXRDcmVhdGVkOiBm
dW5jdGlvbihyZXF1ZXN0SWQsIHVybCkKKyAgICB3ZWJTb2NrZXRDcmVhdGVkKHJlcXVlc3RJZCwg
dXJsKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAor
ICAgIH0KIAotICAgIHdlYlNvY2tldENsb3NlZDogZnVuY3Rpb24ocmVxdWVzdElkLCB0aW1lc3Rh
bXApCisgICAgd2ViU29ja2V0Q2xvc2VkKHJlcXVlc3RJZCwgdGltZXN0YW1wKQogICAgIHsKICAg
ICAgICAgLy8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KLSAgICB9LAorICAgIH0KIAotICAgIHdl
YlNvY2tldEZyYW1lUmVjZWl2ZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNw
b25zZSkKKyAgICB3ZWJTb2NrZXRGcmFtZVJlY2VpdmVkKHJlcXVlc3RJZCwgdGltZXN0YW1wLCBy
ZXNwb25zZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBOb3QgaW1wbGVtZW50ZWQuCi0gICAg
fSwKKyAgICB9CiAKLSAgICB3ZWJTb2NrZXRGcmFtZUVycm9yOiBmdW5jdGlvbihyZXF1ZXN0SWQs
IHRpbWVzdGFtcCwgZXJyb3JNZXNzYWdlKQorICAgIHdlYlNvY2tldEZyYW1lRXJyb3IocmVxdWVz
dElkLCB0aW1lc3RhbXAsIGVycm9yTWVzc2FnZSkKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBO
b3QgaW1wbGVtZW50ZWQuCi0gICAgfSwKKyAgICB9CiAKLSAgICB3ZWJTb2NrZXRGcmFtZVNlbnQ6
IGZ1bmN0aW9uKHJlcXVlc3RJZCwgdGltZXN0YW1wLCByZXNwb25zZSkKKyAgICB3ZWJTb2NrZXRG
cmFtZVNlbnQocmVxdWVzdElkLCB0aW1lc3RhbXAsIHJlc3BvbnNlKQogICAgIHsKICAgICAgICAg
Ly8gRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuTmV0
d29ya09ic2VydmVyLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnBy
b3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL1BhZ2VPYnNlcnZlci5qcwppbmRleCA3YmM1ZDFmM2U3MWUyZTNhOWI3
ZDUwODlhMzcyMzFiYmM0NzQwNjZhLi4xMWZhZWVkMDc2YzBmZDY3YmMwZjIzODBlNzJiNDc0NTJk
MWU0YjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Q
cm90b2NvbC9QYWdlT2JzZXJ2ZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvUHJvdG9jb2wvUGFnZU9ic2VydmVyLmpzCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw3MSArMjMsNjIgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUGFnZU9i
c2VydmVyID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLlBhZ2VPYnNlcnZlciA9IGNsYXNzIFBh
Z2VPYnNlcnZlcgogewotICAgIC8vIEZJWE1FOiBDb252ZXJ0IHRoaXMgdG8gYSBXZWJJbnNwZWN0
b3IuT2JqZWN0IHN1YmNsYXNzLCBhbmQgY2FsbCBzdXBlcigpLgotICAgIC8vIFdlYkluc3BlY3Rv
ci5PYmplY3QuY2FsbCh0aGlzKTsKLX07Ci0KLVdlYkluc3BlY3Rvci5QYWdlT2JzZXJ2ZXIucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUGFnZU9ic2VydmVyLAot
CiAgICAgLy8gRXZlbnRzIGRlZmluZWQgYnkgdGhlICJQYWdlIiBkb21haW4uCiAKLSAgICBkb21D
b250ZW50RXZlbnRGaXJlZDogZnVuY3Rpb24odGltZXN0YW1wKQorICAgIGRvbUNvbnRlbnRFdmVu
dEZpcmVkKHRpbWVzdGFtcCkKICAgICB7CiAgICAgICAgIC8vIENvdmVyZWQgYnkgVGltZWxpbmUg
Ik1hcmtET01Db250ZW50IiByZWNvcmQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBsb2FkRXZlbnRG
aXJlZDogZnVuY3Rpb24odGltZXN0YW1wKQorICAgIGxvYWRFdmVudEZpcmVkKHRpbWVzdGFtcCkK
ICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIucGFnZURpZExvYWQo
dGltZXN0YW1wKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZyYW1lTmF2aWdhdGVkOiBmdW5jdGlv
bihmcmFtZSwgbG9hZGVySWQpCisgICAgZnJhbWVOYXZpZ2F0ZWQoZnJhbWUsIGxvYWRlcklkKQog
ICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmZyYW1lRGlk
TmF2aWdhdGUoZnJhbWUsIGxvYWRlcklkKTsKLSAgICB9LAorICAgIH0KIAotICAgIGZyYW1lRGV0
YWNoZWQ6IGZ1bmN0aW9uKGZyYW1lSWQpCisgICAgZnJhbWVEZXRhY2hlZChmcmFtZUlkKQogICAg
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmZyYW1lUmVzb3VyY2VNYW5hZ2VyLmZyYW1lRGlkRGV0
YWNoKGZyYW1lSWQpOwotICAgIH0sCisgICAgfQogCi0gICAgZnJhbWVTdGFydGVkTG9hZGluZzog
ZnVuY3Rpb24oZnJhbWVJZCkKKyAgICBmcmFtZVN0YXJ0ZWRMb2FkaW5nKGZyYW1lSWQpCiAgICAg
ewogICAgICAgICAvLyBOb3QgaGFuZGxlZCB5ZXQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBmcmFt
ZVN0b3BwZWRMb2FkaW5nOiBmdW5jdGlvbihmcmFtZUlkKQorICAgIGZyYW1lU3RvcHBlZExvYWRp
bmcoZnJhbWVJZCkKICAgICB7CiAgICAgICAgIC8vIE5vdCBoYW5kbGVkIHlldC4KLSAgICB9LAor
ICAgIH0KIAotICAgIGZyYW1lU2NoZWR1bGVkTmF2aWdhdGlvbjogZnVuY3Rpb24oZnJhbWVJZCwg
ZGVsYXkpCisgICAgZnJhbWVTY2hlZHVsZWROYXZpZ2F0aW9uKGZyYW1lSWQsIGRlbGF5KQogICAg
IHsKICAgICAgICAgLy8gTm90IGhhbmRsZWQgeWV0LgotICAgIH0sCisgICAgfQogCi0gICAgZnJh
bWVDbGVhcmVkU2NoZWR1bGVkTmF2aWdhdGlvbjogZnVuY3Rpb24oZnJhbWVJZCkKKyAgICBmcmFt
ZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uKGZyYW1lSWQpCiAgICAgewogICAgICAgICAvLyBO
b3QgaGFuZGxlZCB5ZXQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBqYXZhc2NyaXB0RGlhbG9nT3Bl
bmluZzogZnVuY3Rpb24obWVzc2FnZSkKKyAgICBqYXZhc2NyaXB0RGlhbG9nT3BlbmluZyhtZXNz
YWdlKQogICAgIHsKICAgICAgICAgLy8gTm90IGhhbmRsZWQgeWV0LgotICAgIH0sCisgICAgfQog
Ci0gICAgamF2YXNjcmlwdERpYWxvZ0Nsb3NlZDogZnVuY3Rpb24oKQorICAgIGphdmFzY3JpcHRE
aWFsb2dDbG9zZWQoKQogICAgIHsKICAgICAgICAgLy8gTm90IGhhbmRsZWQgeWV0LgotICAgIH0s
CisgICAgfQogCi0gICAgc2NyaXB0c0VuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCisgICAgc2Ny
aXB0c0VuYWJsZWQoZW5hYmxlZCkKICAgICB7CiAgICAgICAgIC8vIE5vdCBoYW5kbGVkIHlldC4K
ICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuUGFnZU9ic2VydmVyLnByb3RvdHlwZS5fX3Byb3Rv
X18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5q
cwppbmRleCBkNzNkZTc1NGE3OTE4OTJjMDFlNGFiNmE2M2ZjYjBiMGFmMzM5OWM2Li41MTFhNDY2
YzE4OTFlMTBlODVjNGQ2ZDdhNGE3ZTczZjQwMDU4NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmplY3QuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0
LmpzCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
QEAgLTI4LDE3MiArMjksMTc0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QgPSBmdW5jdGlvbihvYmplY3RJZCwgdHlwZSwgc3VidHlwZSwgdmFsdWUs
IGRlc2NyaXB0aW9uLCBzaXplLCBwcmV2aWV3KQorV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCA9
IGNsYXNzIFJlbW90ZU9iamVjdAogewotICAgIC8vIE5vIHN1cGVyY2xhc3MuCi0KLSAgICBjb25z
b2xlLmFzc2VydCh0eXBlKTsKLSAgICBjb25zb2xlLmFzc2VydCghcHJldmlldyB8fCBwcmV2aWV3
IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcpOwotCi0gICAgdGhpcy5fdHlw
ZSA9IHR5cGU7Ci0gICAgdGhpcy5fc3VidHlwZSA9IHN1YnR5cGU7Ci0KLSAgICBpZiAob2JqZWN0
SWQpIHsKLSAgICAgICAgLy8gT2JqZWN0IG9yIFN5bWJvbC4KLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXN1YnR5cGUgfHwgdHlwZW9mIHN1YnR5cGUgPT09ICJzdHJpbmciKTsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQoIWRlc2NyaXB0aW9uIHx8IHR5cGVvZiBkZXNjcmlwdGlvbiA9PT0gInN0cmlu
ZyIpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghdmFsdWUpOwotCi0gICAgICAgIHRoaXMuX29i
amVjdElkID0gb2JqZWN0SWQ7Ci0gICAgICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gZGVzY3JpcHRp
b247Ci0gICAgICAgIHRoaXMuX2hhc0NoaWxkcmVuID0gdHlwZSAhPT0gInN5bWJvbCI7Ci0gICAg
ICAgIHRoaXMuX3NpemUgPSBzaXplOwotICAgICAgICB0aGlzLl9wcmV2aWV3ID0gcHJldmlldzsK
LSAgICB9IGVsc2UgewotICAgICAgICAvLyBQcmltaXRpdmUgb3IgbnVsbC4KLSAgICAgICAgY29u
c29sZS5hc3NlcnQodHlwZSAhPT0gIm9iamVjdCIgfHwgdmFsdWUgPT09IG51bGwpOwotICAgICAg
ICBjb25zb2xlLmFzc2VydCghcHJldmlldyk7Ci0KLSAgICAgICAgdGhpcy5fZGVzY3JpcHRpb24g
PSBkZXNjcmlwdGlvbiB8fCAodmFsdWUgKyAiIik7Ci0gICAgICAgIHRoaXMuX2hhc0NoaWxkcmVu
ID0gZmFsc2U7Ci0gICAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7CisgICAgY29uc3RydWN0b3Io
b2JqZWN0SWQsIHR5cGUsIHN1YnR5cGUsIHZhbHVlLCBkZXNjcmlwdGlvbiwgc2l6ZSwgcHJldmll
dykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGUpOworICAgICAgICBjb25zb2xl
LmFzc2VydCghcHJldmlldyB8fCBwcmV2aWV3IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLk9iamVj
dFByZXZpZXcpOworCisgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOworICAgICAgICB0aGlzLl9z
dWJ0eXBlID0gc3VidHlwZTsKKworICAgICAgICBpZiAob2JqZWN0SWQpIHsKKyAgICAgICAgICAg
IC8vIE9iamVjdCBvciBTeW1ib2wuCisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghc3VidHlw
ZSB8fCB0eXBlb2Ygc3VidHlwZSA9PT0gInN0cmluZyIpOworICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQoIWRlc2NyaXB0aW9uIHx8IHR5cGVvZiBkZXNjcmlwdGlvbiA9PT0gInN0cmluZyIpOwor
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXZhbHVlKTsKKworICAgICAgICAgICAgdGhpcy5f
b2JqZWN0SWQgPSBvYmplY3RJZDsKKyAgICAgICAgICAgIHRoaXMuX2Rlc2NyaXB0aW9uID0gZGVz
Y3JpcHRpb247CisgICAgICAgICAgICB0aGlzLl9oYXNDaGlsZHJlbiA9IHR5cGUgIT09ICJzeW1i
b2wiOworICAgICAgICAgICAgdGhpcy5fc2l6ZSA9IHNpemU7CisgICAgICAgICAgICB0aGlzLl9w
cmV2aWV3ID0gcHJldmlldzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFByaW1p
dGl2ZSBvciBudWxsLgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZSAhPT0gIm9iamVj
dCIgfHwgdmFsdWUgPT09IG51bGwpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXByZXZp
ZXcpOworCisgICAgICAgICAgICB0aGlzLl9kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uIHx8ICh2
YWx1ZSArICIiKTsKKyAgICAgICAgICAgIHRoaXMuX2hhc0NoaWxkcmVuID0gZmFsc2U7CisgICAg
ICAgICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlOworICAgICAgICB9CiAgICAgfQotfTsKIAotV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUgPSBmdW5jdGlvbih2YWx1
ZSkKLXsKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QodW5kZWZpbmVk
LCB0eXBlb2YgdmFsdWUsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB2YWx1ZSk7Ci19OworICAgIC8v
IFN0YXRpYwogCi1XZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkID0gZnVuY3Rp
b24ocGF5bG9hZCkKLXsKLSAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgcGF5bG9hZCA9PT0gIm9i
amVjdCIsICJSZW1vdGUgb2JqZWN0IHBheWxvYWQgc2hvdWxkIG9ubHkgYmUgYW4gb2JqZWN0Iik7
Ci0KLSAgICBpZiAocGF5bG9hZC5zdWJ0eXBlID09PSAiYXJyYXkiKSB7Ci0gICAgICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyA4KTogUnVudGltZS5SZW1vdGVPYmplY3QgZGlkIG5vdCBoYXZlIHNp
emUgcHJvcGVydHksCi0gICAgICAgIC8vIGluc3RlYWQgaXQgd2FzIHRhY2tlZCBvbnRvIHRoZSBl
bmQgb2YgdGhlIGRlc2NyaXB0aW9uLCBsaWtlICJBcnJheVsjXSIuCi0gICAgICAgIHZhciBtYXRj
aCA9IHBheWxvYWQuZGVzY3JpcHRpb24ubWF0Y2goL1xbKFxkKylcXSQvKTsKLSAgICAgICAgaWYg
KG1hdGNoKSB7Ci0gICAgICAgICAgICBwYXlsb2FkLnNpemUgPSBwYXJzZUludChtYXRjaFsxXSk7
Ci0gICAgICAgICAgICBwYXlsb2FkLmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbi5y
ZXBsYWNlKC9cW1xkK1xdJC8sICIiKTsKLSAgICAgICAgfQorICAgIHN0YXRpYyBmcm9tUHJpbWl0
aXZlVmFsdWUodmFsdWUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5S
ZW1vdGVPYmplY3QodW5kZWZpbmVkLCB0eXBlb2YgdmFsdWUsIHVuZGVmaW5lZCwgdW5kZWZpbmVk
LCB2YWx1ZSk7CiAgICAgfQogCi0gICAgaWYgKHBheWxvYWQucHJldmlldykgewotICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgOCk6IGlPUyA3IGFuZCA4IGRpZCBub3QgaGF2ZSB0eXBlL3N1
YnR5cGUvZGVzY3JpcHRpb24gb24KLSAgICAgICAgLy8gUnVudGltZS5PYmplY3RQcmV2aWV3LiBD
b3B5IHRoZW0gb3ZlciBmcm9tIHRoZSBSZW1vdGVPYmplY3QuCi0gICAgICAgIGlmICghcGF5bG9h
ZC5wcmV2aWV3LnR5cGUpIHsKLSAgICAgICAgICAgIHBheWxvYWQucHJldmlldy50eXBlID0gcGF5
bG9hZC50eXBlOwotICAgICAgICAgICAgcGF5bG9hZC5wcmV2aWV3LnN1YnR5cGUgPSBwYXlsb2Fk
LnN1YnR5cGU7Ci0gICAgICAgICAgICBwYXlsb2FkLnByZXZpZXcuZGVzY3JpcHRpb24gPSBwYXls
b2FkLmRlc2NyaXB0aW9uOwotICAgICAgICAgICAgcGF5bG9hZC5wcmV2aWV3LnNpemUgPSBwYXls
b2FkLnNpemU7CisgICAgc3RhdGljIGZyb21QYXlsb2FkKHBheWxvYWQpCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydCh0eXBlb2YgcGF5bG9hZCA9PT0gIm9iamVjdCIsICJSZW1vdGUgb2Jq
ZWN0IHBheWxvYWQgc2hvdWxkIG9ubHkgYmUgYW4gb2JqZWN0Iik7CisKKyAgICAgICAgaWYgKHBh
eWxvYWQuc3VidHlwZSA9PT0gImFycmF5IikgeworICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElU
WSAoaU9TIDgpOiBSdW50aW1lLlJlbW90ZU9iamVjdCBkaWQgbm90IGhhdmUgc2l6ZSBwcm9wZXJ0
eSwKKyAgICAgICAgICAgIC8vIGluc3RlYWQgaXQgd2FzIHRhY2tlZCBvbnRvIHRoZSBlbmQgb2Yg
dGhlIGRlc2NyaXB0aW9uLCBsaWtlICJBcnJheVsjXSIuCisgICAgICAgICAgICB2YXIgbWF0Y2gg
PSBwYXlsb2FkLmRlc2NyaXB0aW9uLm1hdGNoKC9cWyhcZCspXF0kLyk7CisgICAgICAgICAgICBp
ZiAobWF0Y2gpIHsKKyAgICAgICAgICAgICAgICBwYXlsb2FkLnNpemUgPSBwYXJzZUludChtYXRj
aFsxXSk7CisgICAgICAgICAgICAgICAgcGF5bG9hZC5kZXNjcmlwdGlvbiA9IHBheWxvYWQuZGVz
Y3JpcHRpb24ucmVwbGFjZSgvXFtcZCtcXSQvLCAiIik7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KLSAgICAgICAgcGF5bG9hZC5wcmV2aWV3ID0gV2ViSW5zcGVjdG9yLk9iamVjdFByZXZpZXcu
ZnJvbVBheWxvYWQocGF5bG9hZC5wcmV2aWV3KTsKLSAgICB9CiAKLSAgICByZXR1cm4gbmV3IFdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3QocGF5bG9hZC5vYmplY3RJZCwgcGF5bG9hZC50eXBlLCBw
YXlsb2FkLnN1YnR5cGUsIHBheWxvYWQudmFsdWUsIHBheWxvYWQuZGVzY3JpcHRpb24sIHBheWxv
YWQuc2l6ZSwgcGF5bG9hZC5wcmV2aWV3KTsKLX07CisgICAgICAgIGlmIChwYXlsb2FkLnByZXZp
ZXcpIHsKKyAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyA4KTogaU9TIDcgYW5kIDgg
ZGlkIG5vdCBoYXZlIHR5cGUvc3VidHlwZS9kZXNjcmlwdGlvbiBvbgorICAgICAgICAgICAgLy8g
UnVudGltZS5PYmplY3RQcmV2aWV3LiBDb3B5IHRoZW0gb3ZlciBmcm9tIHRoZSBSZW1vdGVPYmpl
Y3QuCisgICAgICAgICAgICBpZiAoIXBheWxvYWQucHJldmlldy50eXBlKSB7CisgICAgICAgICAg
ICAgICAgcGF5bG9hZC5wcmV2aWV3LnR5cGUgPSBwYXlsb2FkLnR5cGU7CisgICAgICAgICAgICAg
ICAgcGF5bG9hZC5wcmV2aWV3LnN1YnR5cGUgPSBwYXlsb2FkLnN1YnR5cGU7CisgICAgICAgICAg
ICAgICAgcGF5bG9hZC5wcmV2aWV3LmRlc2NyaXB0aW9uID0gcGF5bG9hZC5kZXNjcmlwdGlvbjsK
KyAgICAgICAgICAgICAgICBwYXlsb2FkLnByZXZpZXcuc2l6ZSA9IHBheWxvYWQuc2l6ZTsKKyAg
ICAgICAgICAgIH0KIAotV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5jcmVhdGVDYWxsQXJndW1l
bnQgPSBmdW5jdGlvbih2YWx1ZU9yT2JqZWN0KQotewotICAgIGlmICh2YWx1ZU9yT2JqZWN0IGlu
c3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCkgewotICAgICAgICBpZiAodmFsdWVP
ck9iamVjdC5vYmplY3RJZCkKLSAgICAgICAgICAgIHJldHVybiB7b2JqZWN0SWQ6IHZhbHVlT3JP
YmplY3Qub2JqZWN0SWR9OwotICAgICAgICByZXR1cm4ge3ZhbHVlOiB2YWx1ZU9yT2JqZWN0LnZh
bHVlfTsKKyAgICAgICAgICAgIHBheWxvYWQucHJldmlldyA9IFdlYkluc3BlY3Rvci5PYmplY3RQ
cmV2aWV3LmZyb21QYXlsb2FkKHBheWxvYWQucHJldmlldyk7CisgICAgICAgIH0KKworICAgICAg
ICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QocGF5bG9hZC5vYmplY3RJZCwg
cGF5bG9hZC50eXBlLCBwYXlsb2FkLnN1YnR5cGUsIHBheWxvYWQudmFsdWUsIHBheWxvYWQuZGVz
Y3JpcHRpb24sIHBheWxvYWQuc2l6ZSwgcGF5bG9hZC5wcmV2aWV3KTsKICAgICB9CiAKLSAgICBy
ZXR1cm4ge3ZhbHVlOiB2YWx1ZU9yT2JqZWN0fTsKLX07CisgICAgc3RhdGljIGNyZWF0ZUNhbGxB
cmd1bWVudCh2YWx1ZU9yT2JqZWN0KQorICAgIHsKKyAgICAgICAgaWYgKHZhbHVlT3JPYmplY3Qg
aW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KSB7CisgICAgICAgICAgICBpZiAo
dmFsdWVPck9iamVjdC5vYmplY3RJZCkKKyAgICAgICAgICAgICAgICByZXR1cm4ge29iamVjdElk
OiB2YWx1ZU9yT2JqZWN0Lm9iamVjdElkfTsKKyAgICAgICAgICAgIHJldHVybiB7dmFsdWU6IHZh
bHVlT3JPYmplY3QudmFsdWV9OworICAgICAgICB9CiAKLVdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QucmVzb2x2ZU5vZGUgPSBmdW5jdGlvbihub2RlLCBvYmplY3RHcm91cCwgY2FsbGJhY2spCi17
Ci0gICAgRE9NQWdlbnQucmVzb2x2ZU5vZGUobm9kZS5pZCwgb2JqZWN0R3JvdXAsIGZ1bmN0aW9u
KGVycm9yLCBvYmplY3QpIHsKLSAgICAgICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuIHt2YWx1ZTogdmFsdWVPck9iamVjdH07CisgICAgfQogCi0g
ICAgICAgIGlmIChlcnJvciB8fCAhb2JqZWN0KQotICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxiYWNrKFdlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3QuZnJvbVBheWxvYWQob2JqZWN0KSk7Ci0gICAgfSk7Ci19OworICAgIHN0YXRpYyByZXNv
bHZlTm9kZShub2RlLCBvYmplY3RHcm91cCwgY2FsbGJhY2spCisgICAgeworICAgICAgICBET01B
Z2VudC5yZXNvbHZlTm9kZShub2RlLmlkLCBvYmplY3RHcm91cCwgZnVuY3Rpb24oZXJyb3IsIG9i
amVjdCkgeworICAgICAgICAgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgICAgICAgICByZXR1
cm47CiAKLVdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QudHlwZSA9IGZ1bmN0aW9uKHJlbW90ZU9i
amVjdCkKLXsKLSAgICBpZiAocmVtb3RlT2JqZWN0ID09PSBudWxsKQotICAgICAgICByZXR1cm4g
Im51bGwiOworICAgICAgICAgICAgaWYgKGVycm9yIHx8ICFvYmplY3QpCisgICAgICAgICAgICAg
ICAgY2FsbGJhY2sobnVsbCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2Fs
bGJhY2soV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChvYmplY3QpKTsKKyAg
ICAgICAgfSk7CisgICAgfQogCi0gICAgdmFyIHR5cGUgPSB0eXBlb2YgcmVtb3RlT2JqZWN0Owot
ICAgIGlmICh0eXBlICE9PSAib2JqZWN0IiAmJiB0eXBlICE9PSAiZnVuY3Rpb24iKQotICAgICAg
ICByZXR1cm4gdHlwZTsKKyAgICBzdGF0aWMgdHlwZShyZW1vdGVPYmplY3QpCisgICAgeworICAg
ICAgICBpZiAocmVtb3RlT2JqZWN0ID09PSBudWxsKQorICAgICAgICAgICAgcmV0dXJuICJudWxs
IjsKIAotICAgIHJldHVybiByZW1vdGVPYmplY3QudHlwZTsKLX07CisgICAgICAgIHZhciB0eXBl
ID0gdHlwZW9mIHJlbW90ZU9iamVjdDsKKyAgICAgICAgaWYgKHR5cGUgIT09ICJvYmplY3QiICYm
IHR5cGUgIT09ICJmdW5jdGlvbiIpCisgICAgICAgICAgICByZXR1cm4gdHlwZTsKIAotV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QsCisgICAgICAgIHJldHVybiByZW1vdGVPYmplY3QudHlwZTsK
KyAgICB9CisKKyAgICAvLyBQdWJsaWMKIAogICAgIGdldCBvYmplY3RJZCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fb2JqZWN0SWQ7Ci0gICAgfSwKKyAgICB9CiAKICAgICBnZXQgdHlw
ZSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKLSAgICB9LAorICAgIH0KIAog
ICAgIGdldCBzdWJ0eXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdWJ0eXBlOwot
ICAgIH0sCisgICAgfQogCiAgICAgZ2V0IGRlc2NyaXB0aW9uKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9kZXNjcmlwdGlvbjsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBoYXNDaGls
ZHJlbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5faGFzQ2hpbGRyZW47Ci0gICAgfSwK
KyAgICB9CiAKICAgICBnZXQgdmFsdWUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Zh
bHVlOwotICAgIH0sCisgICAgfQogCiAgICAgZ2V0IHNpemUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX3NpemUgfHwgMDsKLSAgICB9LAorICAgIH0KIAogICAgIGdldCBwcmV2aWV3KCkK
ICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9wcmV2aWV3OwotICAgIH0sCisgICAgfQogCi0g
ICAgaGFzU2l6ZTogZnVuY3Rpb24oKQorICAgIGhhc1NpemUoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuaXNBcnJheSgpIHx8IHRoaXMuaXNDb2xsZWN0aW9uVHlwZSgpOwotICAgIH0sCisg
ICAgfQogCi0gICAgaGFzVmFsdWU6IGZ1bmN0aW9uKCkKKyAgICBoYXNWYWx1ZSgpCiAgICAgewog
ICAgICAgICByZXR1cm4gIl92YWx1ZSIgaW4gdGhpczsKLSAgICB9LAorICAgIH0KIAotICAgIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldE93blBy
b3BlcnR5RGVzY3JpcHRvcnMoY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9nZXRQcm9w
ZXJ0eURlc2NyaXB0b3JzKHRydWUsIGNhbGxiYWNrKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdl
dEFsbFByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGdldEFsbFBy
b3BlcnR5RGVzY3JpcHRvcnMoY2FsbGJhY2spCiAgICAgewogICAgICAgICB0aGlzLl9nZXRQcm9w
ZXJ0eURlc2NyaXB0b3JzKGZhbHNlLCBjYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBn
ZXREaXNwbGF5YWJsZVByb3BlcnR5RGVzY3JpcHRvcnM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAg
IGdldERpc3BsYXlhYmxlUHJvcGVydHlEZXNjcmlwdG9ycyhjYWxsYmFjaykKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5fb2JqZWN0SWQgfHwgdGhpcy5faXNTeW1ib2woKSkgewogICAgICAgICAg
ICAgY2FsbGJhY2soW10pOwpAQCAtMjIwLDY4ICsyMjMsMjcgQEAgV2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICB0aGlz
Ll9nZXRQcm9wZXJ0eURlc2NyaXB0b3JzUmVzb2x2ZXIoY2FsbGJhY2ssIGVycm9yLCBvd25Pckdl
dHRlclByb3BlcnRpZXNMaXN0KTsKICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBSdW50aW1lQWdlbnQuZ2V0RGlzcGxh
eWFibGVQcm9wZXJ0aWVzKHRoaXMuX29iamVjdElkLCB0cnVlLCB0aGlzLl9nZXRQcm9wZXJ0eURl
c2NyaXB0b3JzUmVzb2x2ZXIuYmluZCh0aGlzLCBjYWxsYmFjaykpOwotICAgIH0sCi0KLSAgICBf
Z2V0UHJvcGVydHlEZXNjcmlwdG9yczogZnVuY3Rpb24ob3duUHJvcGVydGllcywgY2FsbGJhY2sp
Ci0gICAgewotICAgICAgICBpZiAoIXRoaXMuX29iamVjdElkIHx8IHRoaXMuX2lzU3ltYm9sKCkp
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKFtdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0KLSAgICAgICAgUnVudGltZUFnZW50LmdldFByb3BlcnRpZXModGhpcy5fb2JqZWN0
SWQsIG93blByb3BlcnRpZXMsIHRydWUsIHRoaXMuX2dldFByb3BlcnR5RGVzY3JpcHRvcnNSZXNv
bHZlci5iaW5kKHRoaXMsIGNhbGxiYWNrKSk7Ci0gICAgfSwKLQotICAgIF9nZXRQcm9wZXJ0eURl
c2NyaXB0b3JzUmVzb2x2ZXI6IGZ1bmN0aW9uKGNhbGxiYWNrLCBlcnJvciwgcHJvcGVydGllcywg
aW50ZXJuYWxQcm9wZXJ0aWVzKQotICAgIHsKLSAgICAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhudWxsKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhciBkZXNjcmlwdG9ycyA9IHByb3BlcnRpZXMubWFwKGZ1bmN0aW9uKHBheWxvYWQp
IHsKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yLmZy
b21QYXlsb2FkKHBheWxvYWQpOwotICAgICAgICB9KTsKLQotICAgICAgICBpZiAoaW50ZXJuYWxQ
cm9wZXJ0aWVzKSB7Ci0gICAgICAgICAgICBkZXNjcmlwdG9ycyA9IGRlc2NyaXB0b3JzLmNvbmNh
dChpbnRlcm5hbFByb3BlcnRpZXMubWFwKGZ1bmN0aW9uKHBheWxvYWQpIHsKLSAgICAgICAgICAg
ICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvci5mcm9tUGF5bG9hZChw
YXlsb2FkLCB0cnVlKTsKLSAgICAgICAgICAgIH0pKTsKLSAgICAgICAgfQotCi0gICAgICAgIGNh
bGxiYWNrKGRlc2NyaXB0b3JzKTsKLSAgICB9LAotCi0gICAgLy8gRklYTUU6IFBoYXNlIG91dCB0
aGVzZSBmdW5jdGlvbnMuIFRoZXkgcmV0dXJuIFJlbW90ZU9iamVjdFByb3BlcnR5IGluc3RlYWQg
b2YgUHJvcGVydHlEZXNjcmlwdG9ycy4KKyAgICB9CiAKLSAgICBkZXByZWNhdGVkR2V0T3duUHJv
cGVydGllczogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgLy8gRklYTUU6IFBoYXNlIG91dCB0aGVz
ZSBkZXByZWNhdGVkIGZ1bmN0aW9ucy4gVGhleSByZXR1cm4gRGVwcmVjYXRlZFJlbW90ZU9iamVj
dFByb3BlcnR5IGluc3RlYWQgb2YgUHJvcGVydHlEZXNjcmlwdG9ycy4KKyAgICBkZXByZWNhdGVk
R2V0T3duUHJvcGVydGllcyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX2RlcHJlY2F0
ZWRHZXRQcm9wZXJ0aWVzKHRydWUsIGNhbGxiYWNrKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRl
cHJlY2F0ZWRHZXRBbGxQcm9wZXJ0aWVzOiBmdW5jdGlvbihjYWxsYmFjaykKKyAgICBkZXByZWNh
dGVkR2V0QWxsUHJvcGVydGllcyhjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX2RlcHJl
Y2F0ZWRHZXRQcm9wZXJ0aWVzKGZhbHNlLCBjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIF9kZXBy
ZWNhdGVkR2V0UHJvcGVydGllczogZnVuY3Rpb24ob3duUHJvcGVydGllcywgY2FsbGJhY2spCi0g
ICAgewotICAgICAgICBpZiAoIXRoaXMuX29iamVjdElkIHx8IHRoaXMuX2lzU3ltYm9sKCkpIHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKFtdKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRQcm9wZXJ0aWVzKHRoaXMuX29iamVjdElkLCBv
d25Qcm9wZXJ0aWVzLCB0aGlzLl9kZXByZWNhdGVkR2V0UHJvcGVydGllc1Jlc29sdmVyLmJpbmQo
dGhpcywgY2FsbGJhY2spKTsKLSAgICB9LAorICAgIH0KIAotICAgIGRlcHJlY2F0ZWRHZXREaXNw
bGF5YWJsZVByb3BlcnRpZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIGRlcHJlY2F0ZWRHZXRE
aXNwbGF5YWJsZVByb3BlcnRpZXMoY2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAoIXRoaXMu
X29iamVjdElkIHx8IHRoaXMuX2lzU3ltYm9sKCkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKFtd
KTsKQEAgLTMwNyw0NiArMjY5LDE2IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgdGhpcy5fZGVwcmVjYXRlZEdl
dFByb3BlcnRpZXNSZXNvbHZlcihjYWxsYmFjaywgZXJyb3IsIG93bk9yR2V0dGVyUHJvcGVydGll
c0xpc3QpOwogICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogCiAgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXREaXNwbGF5YWJsZVByb3BlcnRp
ZXModGhpcy5fb2JqZWN0SWQsIHRoaXMuX2RlcHJlY2F0ZWRHZXRQcm9wZXJ0aWVzUmVzb2x2ZXIu
YmluZCh0aGlzLCBjYWxsYmFjaykpOwotICAgIH0sCi0KLSAgICBfZGVwcmVjYXRlZEdldFByb3Bl
cnRpZXNSZXNvbHZlcjogZnVuY3Rpb24oY2FsbGJhY2ssIGVycm9yLCBwcm9wZXJ0aWVzLCBpbnRl
cm5hbFByb3BlcnRpZXMpCi0gICAgewotICAgICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgICAg
IGNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAg
ICAgaWYgKGludGVybmFsUHJvcGVydGllcykgewotICAgICAgICAgICAgcHJvcGVydGllcyA9IHBy
b3BlcnRpZXMuY29uY2F0KGludGVybmFsUHJvcGVydGllcy5tYXAoZnVuY3Rpb24oZGVzY3JpcHRv
cikgewotICAgICAgICAgICAgICAgIGRlc2NyaXB0b3Iud3JpdGFibGUgPSBmYWxzZTsKLSAgICAg
ICAgICAgICAgICBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGRlc2Ny
aXB0b3IuaXNPd24gPSB0cnVlOwotICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yOwot
ICAgICAgICAgICAgfSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgcHJvcGVydGllcyAmJiBpIDwgcHJvcGVydGllcy5sZW5n
dGg7ICsraSkgewotICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gcHJvcGVydGllc1tpXTsKLSAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eS5nZXQgfHwgcHJvcGVydHkuc2V0KSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHByb3BlcnR5LmdldCkKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2go
bmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eSgiZ2V0ICIgKyBwcm9wZXJ0eS5u
YW1lLCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkKHByb3BlcnR5LmdldCks
IHByb3BlcnR5KSk7Ci0gICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LnNldCkKLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9w
ZXJ0eSgic2V0ICIgKyBwcm9wZXJ0eS5uYW1lLCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZy
b21QYXlsb2FkKHByb3BlcnR5LnNldCksIHByb3BlcnR5KSk7Ci0gICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICByZXN1bHQucHVzaChuZXcgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dFByb3BlcnR5KHByb3BlcnR5Lm5hbWUsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBh
eWxvYWQocHJvcGVydHkudmFsdWUpLCBwcm9wZXJ0eSkpOwotICAgICAgICB9Ci0gICAgICAgIGNh
bGxiYWNrKHJlc3VsdCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXRQcm9wZXJ0eVZhbHVlOiBm
dW5jdGlvbihuYW1lLCB2YWx1ZSwgY2FsbGJhY2spCisgICAgc2V0UHJvcGVydHlWYWx1ZShuYW1l
LCB2YWx1ZSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX29iamVjdElkIHx8
IHRoaXMuX2lzU3ltYm9sKCkpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCJDYW4ndCBzZXQgYSBw
cm9wZXJ0eSBvZiBub24tb2JqZWN0LiIpOwpAQCAtMzY4LDcgKzMwMCw5IEBAIFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBkZWxldGUgcmVzdWx0LmRlc2NyaXB0aW9uOyAvLyBPcHRpbWl6ZSBvbiB0cmFmZmljLgotICAg
ICAgICAgICAgUnVudGltZUFnZW50LmNhbGxGdW5jdGlvbk9uKHRoaXMuX29iamVjdElkLCBzZXRQ
cm9wZXJ0eVZhbHVlLnRvU3RyaW5nKCksIFt7IHZhbHVlOm5hbWUgfSwgcmVzdWx0XSwgdHJ1ZSwg
dW5kZWZpbmVkLCBwcm9wZXJ0eVNldENhbGxiYWNrLmJpbmQodGhpcykpOworCisgICAgICAgICAg
ICBSdW50aW1lQWdlbnQuY2FsbEZ1bmN0aW9uT24odGhpcy5fb2JqZWN0SWQsIHNldFByb3BlcnR5
VmFsdWUudG9TdHJpbmcoKSwgW3t2YWx1ZTpuYW1lfSwgcmVzdWx0XSwgdHJ1ZSwgdW5kZWZpbmVk
LCBwcm9wZXJ0eVNldENhbGxiYWNrLmJpbmQodGhpcykpOworCiAgICAgICAgICAgICBpZiAocmVz
dWx0Ll9vYmplY3RJZCkKICAgICAgICAgICAgICAgICBSdW50aW1lQWdlbnQucmVsZWFzZU9iamVj
dChyZXN1bHQuX29iamVjdElkKTsKICAgICAgICAgfQpAQCAtMzc5LDMxICszMTMsMjcgQEAgV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgY2Fs
bGJhY2soZXJyb3IgfHwgcmVzdWx0LmRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgIH0K
LSAgICB9LAotCi0gICAgX2lzU3ltYm9sOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fdHlwZSA9PT0gInN5bWJvbCI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc0FycmF5
OiBmdW5jdGlvbigpCisgICAgaXNBcnJheSgpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5f
c3VidHlwZSA9PT0gImFycmF5IjsKLSAgICB9LAorICAgIH0KIAotICAgIGlzQ29sbGVjdGlvblR5
cGU6IGZ1bmN0aW9uKCkKKyAgICBpc0NvbGxlY3Rpb25UeXBlKCkKICAgICB7CiAgICAgICAgIHJl
dHVybiB0aGlzLl9zdWJ0eXBlID09PSAibWFwIiB8fCB0aGlzLl9zdWJ0eXBlID09PSAic2V0IiB8
fCB0aGlzLl9zdWJ0eXBlID09PSAid2Vha21hcCI7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBpc1dl
YWtDb2xsZWN0aW9uOiBmdW5jdGlvbigpCisgICAgaXNXZWFrQ29sbGVjdGlvbigpCiAgICAgewog
ICAgICAgICByZXR1cm4gdGhpcy5fc3VidHlwZSA9PT0gIndlYWttYXAiOwotICAgIH0sCisgICAg
fQogCi0gICAgZ2V0Q29sbGVjdGlvbkVudHJpZXM6IGZ1bmN0aW9uKHN0YXJ0LCBudW1iZXJUb0Zl
dGNoLCBjYWxsYmFjaykKKyAgICBnZXRDb2xsZWN0aW9uRW50cmllcyhzdGFydCwgbnVtYmVyVG9G
ZXRjaCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBzdGFydCA9IHR5cGVvZiBzdGFydCA9PT0g
Im51bWJlciIgPyBzdGFydCA6IDA7CiAgICAgICAgIG51bWJlclRvRmV0Y2ggPSB0eXBlb2YgbnVt
YmVyVG9GZXRjaCA9PT0gIm51bWJlciIgPyBudW1iZXJUb0ZldGNoIDogMTAwOwpAQCAtNDIxLDI0
ICszNTEsMjQgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBlbnRyaWVzID0gZW50cmllcy5tYXAoZnVuY3Rpb24oZW50cnkpIHsgcmV0dXJuIFdl
Ykluc3BlY3Rvci5Db2xsZWN0aW9uRW50cnkuZnJvbVBheWxvYWQoZW50cnkpOyB9KTsKICAgICAg
ICAgICAgIGNhbGxiYWNrKGVudHJpZXMpOwogICAgICAgICB9KTsKLSAgICB9LAorICAgIH0KIAot
ICAgIHJlbGVhc2VXZWFrQ29sbGVjdGlvbkVudHJpZXM6IGZ1bmN0aW9uKCkKKyAgICByZWxlYXNl
V2Vha0NvbGxlY3Rpb25FbnRyaWVzKCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRo
aXMuaXNXZWFrQ29sbGVjdGlvbigpKTsKIAogICAgICAgICBSdW50aW1lQWdlbnQucmVsZWFzZU9i
amVjdEdyb3VwKHRoaXMuX3dlYWtDb2xsZWN0aW9uT2JqZWN0R3JvdXAoKSk7Ci0gICAgfSwKKyAg
ICB9CiAKLSAgICBwdXNoTm9kZVRvRnJvbnRlbmQ6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHB1
c2hOb2RlVG9Gcm9udGVuZChjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9vYmpl
Y3RJZCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5kb21UcmVlTWFuYWdlci5wdXNoTm9kZVRv
RnJvbnRlbmQodGhpcy5fb2JqZWN0SWQsIGNhbGxiYWNrKTsKICAgICAgICAgZWxzZQogICAgICAg
ICAgICAgY2FsbGJhY2soMCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBjYWxsRnVuY3Rpb246IGZ1
bmN0aW9uKGZ1bmN0aW9uRGVjbGFyYXRpb24sIGFyZ3MsIGdlbmVyYXRlUHJldmlldywgY2FsbGJh
Y2spCisgICAgY2FsbEZ1bmN0aW9uKGZ1bmN0aW9uRGVjbGFyYXRpb24sIGFyZ3MsIGdlbmVyYXRl
UHJldmlldywgY2FsbGJhY2spCiAgICAgewogICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGVy
cm9yLCByZXN1bHQsIHdhc1Rocm93bikKICAgICAgICAgewpAQCAtNDUwLDkgKzM4MCw5IEBAIFdl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICAgICAgYXJncyA9
IGFyZ3MubWFwKFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuY3JlYXRlQ2FsbEFyZ3VtZW50KTsK
IAogICAgICAgICBSdW50aW1lQWdlbnQuY2FsbEZ1bmN0aW9uT24odGhpcy5fb2JqZWN0SWQsIGZ1
bmN0aW9uRGVjbGFyYXRpb24udG9TdHJpbmcoKSwgYXJncywgdHJ1ZSwgdW5kZWZpbmVkLCBnZW5l
cmF0ZVByZXZpZXcsIG15Y2FsbGJhY2spOwotICAgIH0sCisgICAgfQogCi0gICAgY2FsbEZ1bmN0
aW9uSlNPTjogZnVuY3Rpb24oZnVuY3Rpb25EZWNsYXJhdGlvbiwgYXJncywgY2FsbGJhY2spCisg
ICAgY2FsbEZ1bmN0aW9uSlNPTihmdW5jdGlvbkRlY2xhcmF0aW9uLCBhcmdzLCBjYWxsYmFjaykK
ICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2soZXJyb3IsIHJlc3VsdCwgd2FzVGhy
b3duKQogICAgICAgICB7CkBAIC00NjAsOSArMzkwLDkgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9i
amVjdC5wcm90b3R5cGUgPSB7CiAgICAgICAgIH0KIAogICAgICAgICBSdW50aW1lQWdlbnQuY2Fs
bEZ1bmN0aW9uT24odGhpcy5fb2JqZWN0SWQsIGZ1bmN0aW9uRGVjbGFyYXRpb24udG9TdHJpbmco
KSwgYXJncywgdHJ1ZSwgdHJ1ZSwgbXljYWxsYmFjayk7Ci0gICAgfSwKKyAgICB9CiAgICAgCi0g
ICAgaW52b2tlR2V0dGVyOiBmdW5jdGlvbihnZXR0ZXJSZW1vdGVPYmplY3QsIGNhbGxiYWNrKQor
ICAgIGludm9rZUdldHRlcihnZXR0ZXJSZW1vdGVPYmplY3QsIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoZ2V0dGVyUmVtb3RlT2JqZWN0IGluc3RhbmNlb2YgV2ViSW5z
cGVjdG9yLlJlbW90ZU9iamVjdCk7CiAKQEAgLTQ3Miw0MSArNDAyLDM4IEBAIFdlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5j
YWxsRnVuY3Rpb24oYmFja2VuZEludm9rZUdldHRlciwgW2dldHRlclJlbW90ZU9iamVjdF0sIHRy
dWUsIGNhbGxiYWNrKTsKLSAgICB9LAorICAgIH0KIAotICAgIGdldE93blByb3BlcnR5RGVzY3Jp
cHRvcjogZnVuY3Rpb24ocHJvcGVydHlOYW1lLCBjYWxsYmFjaykKKyAgICBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IocHJvcGVydHlOYW1lLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICgh
UnVudGltZUFnZW50LmdldE93blByb3BlcnR5RGVzY3JpcHRvcikgewotICAgICAgICAgICAgZnVu
Y3Rpb24gYmFja2VuZEdldE93blByb3BlcnR5RGVzY3JpcHRvcihwcm9wZXJ0eU5hbWUpCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbcHJvcGVydHlOYW1lXTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgZnVuY3Rpb24gd3JhcHBlZENhbGxiYWNrKGVycm9y
LCByZXN1bHQsIHdhc1Rocm93bikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAo
ZXJyb3IgfHwgd2FzVGhyb3duIHx8ICEocmVzdWx0IGluc3RhbmNlb2YgV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVsbCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgIGZ1bmN0
aW9uIGJhY2tlbmRHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvcGVydHlOYW1lKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gdGhpc1twcm9wZXJ0eU5hbWVdOworICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICB2YXIgZmFrZURlc2NyaXB0b3IgPSB7bmFtZTogcHJvcGVydHlOYW1l
LCB2YWx1ZTogcmVzdWx0LCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCBlbnVt
ZXJhYmxlOiBmYWxzZX07Ci0gICAgICAgICAgICAgICAgdmFyIGZha2VQcm9wZXJ0eURlc2NyaXB0
b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvcihmYWtlRGVzY3JpcHRvciwg
dHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soZmFr
ZVByb3BlcnR5RGVzY3JpcHRvcik7CisgICAgICAgIGZ1bmN0aW9uIHdyYXBwZWRDYWxsYmFjayhl
cnJvciwgcmVzdWx0LCB3YXNUaHJvd24pCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChlcnJv
ciB8fCB3YXNUaHJvd24gfHwgIShyZXN1bHQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuUmVtb3Rl
T2JqZWN0KSkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdGhpcy5jYWxsRnVuY3Rp
b24oYmFja2VuZEdldE93blByb3BlcnR5RGVzY3JpcHRvciwgW3Byb3BlcnR5TmFtZV0sIGZhbHNl
LCB3cmFwcGVkQ2FsbGJhY2spOworICAgICAgICAgICAgdmFyIGZha2VEZXNjcmlwdG9yID0ge25h
bWU6IHByb3BlcnR5TmFtZSwgdmFsdWU6IHJlc3VsdCwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3Vy
YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTogZmFsc2V9OworICAgICAgICAgICAgdmFyIGZha2VQcm9w
ZXJ0eURlc2NyaXB0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLlByb3BlcnR5RGVzY3JpcHRvcihmYWtl
RGVzY3JpcHRvciwgdHJ1ZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICBjYWxs
YmFjayhmYWtlUHJvcGVydHlEZXNjcmlwdG9yKTsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgYSByZWFsIGdldE93blByb3BlcnR5RGVzY3JpcHRvcj8KLSAgICB9LAor
ICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGEgcmVhbCBSdW50aW1lQWdlbnQuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yPworICAgICAgICB0aGlzLmNhbGxGdW5jdGlvbihiYWNrZW5kR2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yLCBbcHJvcGVydHlOYW1lXSwgZmFsc2UsIHdyYXBwZWRDYWxsYmFj
ayk7CisgICAgfQogCi0gICAgcmVsZWFzZTogZnVuY3Rpb24oKQorICAgIHJlbGVhc2UoKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX29iamVjdElkKQogICAgICAgICAgICAgUnVudGltZUFnZW50
LnJlbGVhc2VPYmplY3QodGhpcy5fb2JqZWN0SWQpOwotICAgIH0sCisgICAgfQogCi0gICAgYXJy
YXlMZW5ndGg6IGZ1bmN0aW9uKCkKKyAgICBhcnJheUxlbmd0aCgpCiAgICAgewogICAgICAgICBp
ZiAodGhpcy5fc3VidHlwZSAhPT0gImFycmF5IikKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAt
NTE2LDMyICs0NDMsMTE2IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgcmV0dXJuIHBhcnNlSW50KG1hdGNo
ZXNbMV0sIDEwKTsKLSAgICB9LAorICAgIH0KIAotICAgIGFzQ2FsbEFyZ3VtZW50OiBmdW5jdGlv
bigpCisgICAgYXNDYWxsQXJndW1lbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QuY3JlYXRlQ2FsbEFyZ3VtZW50KHRoaXMpOwotICAgIH0sCisgICAg
fQogCiAgICAgLy8gUHJpdmF0ZQogCi0gICAgX3dlYWtDb2xsZWN0aW9uT2JqZWN0R3JvdXA6IGZ1
bmN0aW9uKCkKKyAgICBfaXNTeW1ib2woKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5
cGUgPT09ICJzeW1ib2wiOworICAgIH0KKworICAgIF93ZWFrQ29sbGVjdGlvbk9iamVjdEdyb3Vw
KCkKICAgICB7CiAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLl9vYmplY3RJZCkg
KyAiLVdlYWtNYXAiOwogICAgIH0KLX07CiAKLVdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9w
ZXJ0eSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBkZXNjcmlwdG9yKQotewotICAgIHRoaXMubmFt
ZSA9IG5hbWU7Ci0gICAgdGhpcy52YWx1ZSA9IHZhbHVlOwotICAgIHRoaXMuZW51bWVyYWJsZSA9
IGRlc2NyaXB0b3IgPyAhIWRlc2NyaXB0b3IuZW51bWVyYWJsZSA6IHRydWU7Ci0gICAgdGhpcy53
cml0YWJsZSA9IGRlc2NyaXB0b3IgPyAhIWRlc2NyaXB0b3Iud3JpdGFibGUgOiB0cnVlOwotICAg
IGlmIChkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3Iud2FzVGhyb3duKQotICAgICAgICB0aGlzLndh
c1Rocm93biA9IHRydWU7CisgICAgX2dldFByb3BlcnR5RGVzY3JpcHRvcnMob3duUHJvcGVydGll
cywgY2FsbGJhY2spCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX29iamVjdElkIHx8IHRoaXMu
X2lzU3ltYm9sKCkpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKFtdKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFJ1bnRpbWVBZ2VudC5nZXRQcm9wZXJ0aWVzKHRo
aXMuX29iamVjdElkLCBvd25Qcm9wZXJ0aWVzLCB0cnVlLCB0aGlzLl9nZXRQcm9wZXJ0eURlc2Ny
aXB0b3JzUmVzb2x2ZXIuYmluZCh0aGlzLCBjYWxsYmFjaykpOworICAgIH0KKworICAgIF9nZXRQ
cm9wZXJ0eURlc2NyaXB0b3JzUmVzb2x2ZXIoY2FsbGJhY2ssIGVycm9yLCBwcm9wZXJ0aWVzLCBp
bnRlcm5hbFByb3BlcnRpZXMpCisgICAgeworICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAg
ICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgdmFyIGRlc2NyaXB0b3JzID0gcHJvcGVydGllcy5tYXAoZnVuY3Rpb24ocGF5bG9hZCkg
eworICAgICAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5Qcm9wZXJ0eURlc2NyaXB0b3IuZnJv
bVBheWxvYWQocGF5bG9hZCk7CisgICAgICAgIH0pOworCisgICAgICAgIGlmIChpbnRlcm5hbFBy
b3BlcnRpZXMpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0b3JzID0gZGVzY3JpcHRvcnMuY29uY2F0
KGludGVybmFsUHJvcGVydGllcy5tYXAoZnVuY3Rpb24ocGF5bG9hZCkgeworICAgICAgICAgICAg
ICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUHJvcGVydHlEZXNjcmlwdG9yLmZyb21QYXlsb2FkKHBh
eWxvYWQsIHRydWUpOworICAgICAgICAgICAgfSkpOworICAgICAgICB9CisKKyAgICAgICAgY2Fs
bGJhY2soZGVzY3JpcHRvcnMpOworICAgIH0KKworICAgIC8vIEZJWE1FOiBQaGFzZSBvdXQgdGhl
c2UgZGVwcmVjYXRlZCBmdW5jdGlvbnMuIFRoZXkgcmV0dXJuIERlcHJlY2F0ZWRSZW1vdGVPYmpl
Y3RQcm9wZXJ0eSBpbnN0ZWFkIG9mIFByb3BlcnR5RGVzY3JpcHRvcnMuCisgICAgX2RlcHJlY2F0
ZWRHZXRQcm9wZXJ0aWVzKG93blByb3BlcnRpZXMsIGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
aWYgKCF0aGlzLl9vYmplY3RJZCB8fCB0aGlzLl9pc1N5bWJvbCgpKSB7CisgICAgICAgICAgICBj
YWxsYmFjayhbXSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBS
dW50aW1lQWdlbnQuZ2V0UHJvcGVydGllcyh0aGlzLl9vYmplY3RJZCwgb3duUHJvcGVydGllcywg
dGhpcy5fZGVwcmVjYXRlZEdldFByb3BlcnRpZXNSZXNvbHZlci5iaW5kKHRoaXMsIGNhbGxiYWNr
KSk7CisgICAgfQorCisgICAgX2RlcHJlY2F0ZWRHZXRQcm9wZXJ0aWVzUmVzb2x2ZXIoY2FsbGJh
Y2ssIGVycm9yLCBwcm9wZXJ0aWVzLCBpbnRlcm5hbFByb3BlcnRpZXMpCisgICAgeworICAgICAg
ICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGludGVybmFsUHJvcGVydGllcykgewor
ICAgICAgICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMuY29uY2F0KGludGVybmFsUHJvcGVy
dGllcy5tYXAoZnVuY3Rpb24oZGVzY3JpcHRvcikgeworICAgICAgICAgICAgICAgIGRlc2NyaXB0
b3Iud3JpdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdG9yLmNvbmZpZ3Vy
YWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGZh
bHNlOworICAgICAgICAgICAgICAgIGRlc2NyaXB0b3IuaXNPd24gPSB0cnVlOworICAgICAgICAg
ICAgICAgIHJldHVybiBkZXNjcmlwdG9yOworICAgICAgICAgICAgfSkpOworICAgICAgICB9CisK
KyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgICBmb3IgKHZhciBpID0gMDsgcHJvcGVy
dGllcyAmJiBpIDwgcHJvcGVydGllcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHBy
b3BlcnR5ID0gcHJvcGVydGllc1tpXTsKKyAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5nZXQgfHwg
cHJvcGVydHkuc2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5LmdldCkKKyAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gobmV3IFdlYkluc3BlY3Rvci5EZXByZWNhdGVkUmVt
b3RlT2JqZWN0UHJvcGVydHkoImdldCAiICsgcHJvcGVydHkubmFtZSwgV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5mcm9tUGF5bG9hZChwcm9wZXJ0eS5nZXQpLCBwcm9wZXJ0eSkpOworICAgICAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eS5zZXQpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5w
dXNoKG5ldyBXZWJJbnNwZWN0b3IuRGVwcmVjYXRlZFJlbW90ZU9iamVjdFByb3BlcnR5KCJzZXQg
IiArIHByb3BlcnR5Lm5hbWUsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQo
cHJvcGVydHkuc2V0KSwgcHJvcGVydHkpKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgICAgIHJlc3VsdC5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuRGVwcmVjYXRlZFJlbW90ZU9iamVj
dFByb3BlcnR5KHByb3BlcnR5Lm5hbWUsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBh
eWxvYWQocHJvcGVydHkudmFsdWUpLCBwcm9wZXJ0eSkpOworICAgICAgICB9CisKKyAgICAgICAg
Y2FsbGJhY2socmVzdWx0KTsKKyAgICB9CiB9OwogCi1XZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
UHJvcGVydHkuZnJvbVByaW1pdGl2ZVZhbHVlID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpCisvLyBG
SVhNRTogUGhhc2Ugb3V0IHRoaXMgZGVwcmVjYXRlZCBjbGFzcy4KK1dlYkluc3BlY3Rvci5EZXBy
ZWNhdGVkUmVtb3RlT2JqZWN0UHJvcGVydHkgPSBjbGFzcyBEZXByZWNhdGVkUmVtb3RlT2JqZWN0
UHJvcGVydHkKIHsKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9w
ZXJ0eShuYW1lLCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QcmltaXRpdmVWYWx1ZSh2
YWx1ZSkpOworICAgIGNvbnN0cnVjdG9yKG5hbWUsIHZhbHVlLCBkZXNjcmlwdG9yKQorICAgIHsK
KyAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwor
ICAgICAgICB0aGlzLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yID8gISFkZXNjcmlwdG9yLmVudW1l
cmFibGUgOiB0cnVlOworICAgICAgICB0aGlzLndyaXRhYmxlID0gZGVzY3JpcHRvciA/ICEhZGVz
Y3JpcHRvci53cml0YWJsZSA6IHRydWU7CisgICAgICAgIGlmIChkZXNjcmlwdG9yICYmIGRlc2Ny
aXB0b3Iud2FzVGhyb3duKQorICAgICAgICAgICAgdGhpcy53YXNUaHJvd24gPSB0cnVlOworICAg
IH0KKworICAgIC8vIFN0YXRpYworCisgICAgZnJvbVByaW1pdGl2ZVZhbHVlKG5hbWUsIHZhbHVl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuRGVwcmVjYXRlZFJlbW90
ZU9iamVjdFByb3BlcnR5KG5hbWUsIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVByaW1p
dGl2ZVZhbHVlKHZhbHVlKSk7CisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1JlcGxheU9ic2VydmVyLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVwbGF5T2JzZXJ2ZXIuanMK
aW5kZXggMmNhZGM2NjFjMzE2NGIwYjhiOTljMjlhM2E5NWUxYjEyZTUwNzZhZi4uZTBhODY3MTlh
OTQ5N2M3ZmYyMDcxNjBkMzRlY2UzNjEyZDJjNjFjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVwbGF5T2JzZXJ2ZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVwbGF5T2JzZXJ2
ZXIuanMKQEAgLTI0LDEwMyArMjQsOTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi1XZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24gPSBmdW5jdGlvbihzZWdt
ZW50T2Zmc2V0LCBpbnB1dE9mZnNldCkKKy8vIEZJWE1FOiBUaGlzIFJlcGxheVBvc2l0aW9uIGNs
YXNzIHNob3VsZG4ndCBiZSBoZXJlLCBubyBtYXR0ZXIgaG93IHNpbXBsZSBpdCBpcy4KK1dlYklu
c3BlY3Rvci5SZXBsYXlQb3NpdGlvbiA9IGNsYXNzIFJlcGxheVBvc2l0aW9uCiB7Ci0gICAgdGhp
cy5zZWdtZW50T2Zmc2V0ID0gc2VnbWVudE9mZnNldDsKLSAgICB0aGlzLmlucHV0T2Zmc2V0ID0g
aW5wdXRPZmZzZXQ7Ci19OwotCi1XZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24uZnJvbVByb3Rv
Y29sID0gZnVuY3Rpb24ocGF5bG9hZCkKLXsKLSAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5S
ZXBsYXlQb3NpdGlvbihwYXlsb2FkLnNlZ21lbnRPZmZzZXQsIHBheWxvYWQuaW5wdXRPZmZzZXQp
OworICAgIGNvbnN0cnVjdG9yKHNlZ21lbnRPZmZzZXQsIGlucHV0T2Zmc2V0KQorICAgIHsKKyAg
ICAgICAgdGhpcy5zZWdtZW50T2Zmc2V0ID0gc2VnbWVudE9mZnNldDsKKyAgICAgICAgdGhpcy5p
bnB1dE9mZnNldCA9IGlucHV0T2Zmc2V0OworICAgIH0KIH07CiAKLVdlYkluc3BlY3Rvci5SZXBs
YXlPYnNlcnZlciA9IGZ1bmN0aW9uKCkKK1dlYkluc3BlY3Rvci5SZXBsYXlPYnNlcnZlciA9IGNs
YXNzIFJlcGxheU9ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdl
Ykluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2Vi
SW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKKyAgICAvLyBFdmVudHMgZGVmaW5lZCBi
eSB0aGUgIlJlcGxheSIgZG9tYWluLgogCi1XZWJJbnNwZWN0b3IuUmVwbGF5T2JzZXJ2ZXIucHJv
dG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuUmVwbGF5T2JzZXJ2ZXIs
Ci0gICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIGNh
cHR1cmVTdGFydGVkOiBmdW5jdGlvbigpCisgICAgY2FwdHVyZVN0YXJ0ZWQoKQogICAgIHsKICAg
ICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuY2FwdHVyZVN0YXJ0ZWQoKTsKLSAgICB9
LAorICAgIH0KIAotICAgIGNhcHR1cmVTdG9wcGVkOiBmdW5jdGlvbigpCisgICAgY2FwdHVyZVN0
b3BwZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuY2FwdHVy
ZVN0b3BwZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHBsYXliYWNrU3RhcnRlZDogZnVuY3Rp
b24oKQorICAgIHBsYXliYWNrU3RhcnRlZCgpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iu
cmVwbGF5TWFuYWdlci5wbGF5YmFja1N0YXJ0ZWQoKTsKLSAgICB9LAorICAgIH0KIAotICAgIHBs
YXliYWNrSGl0UG9zaXRpb246IGZ1bmN0aW9uKHJlcGxheVBvc2l0aW9uLCB0aW1lc3RhbXApCisg
ICAgcGxheWJhY2tIaXRQb3NpdGlvbihyZXBsYXlQb3NpdGlvbiwgdGltZXN0YW1wKQogICAgIHsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIucGxheWJhY2tIaXRQb3NpdGlvbihX
ZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24uZnJvbVByb3RvY29sKHJlcGxheVBvc2l0aW9uKSwg
dGltZXN0YW1wKTsKLSAgICB9LAorICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5w
bGF5YmFja0hpdFBvc2l0aW9uKG5ldyBXZWJJbnNwZWN0b3IuUmVwbGF5UG9zaXRpb24ocmVwbGF5
UG9zaXRpb24uc2VnbWVudE9mZnNldCwgcmVwbGF5UG9zaXRpb24uaW5wdXRPZmZzZXQpLCB0aW1l
c3RhbXApOworICAgIH0KIAotICAgIHBsYXliYWNrUGF1c2VkOiBmdW5jdGlvbihyZXBsYXlQb3Np
dGlvbikKKyAgICBwbGF5YmFja1BhdXNlZChyZXBsYXlQb3NpdGlvbikKICAgICB7Ci0gICAgICAg
IFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnBsYXliYWNrUGF1c2VkKFdlYkluc3BlY3Rvci5S
ZXBsYXlQb3NpdGlvbi5mcm9tUHJvdG9jb2wocmVwbGF5UG9zaXRpb24pKTsKLSAgICB9LAorICAg
ICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5wbGF5YmFja1BhdXNlZChuZXcgV2ViSW5z
cGVjdG9yLlJlcGxheVBvc2l0aW9uKHJlcGxheVBvc2l0aW9uLnNlZ21lbnRPZmZzZXQsIHJlcGxh
eVBvc2l0aW9uLmlucHV0T2Zmc2V0KSk7CisgICAgfQogCi0gICAgcGxheWJhY2tGaW5pc2hlZDog
ZnVuY3Rpb24oKQorICAgIHBsYXliYWNrRmluaXNoZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5z
cGVjdG9yLnJlcGxheU1hbmFnZXIucGxheWJhY2tGaW5pc2hlZCgpOwotICAgIH0sCisgICAgfQog
Ci0gICAgaW5wdXRTdXBwcmVzc2lvbkNoYW5nZWQ6IGZ1bmN0aW9uKHdpbGxTdXBwcmVzcykKKyAg
ICBpbnB1dFN1cHByZXNzaW9uQ2hhbmdlZCh3aWxsU3VwcHJlc3MpCiAgICAgewogICAgICAgICAv
LyBOb3QgaGFuZGxlZCB5ZXQuCi0gICAgfSwKKyAgICB9CiAKLSAgICBzZXNzaW9uQ3JlYXRlZDog
ZnVuY3Rpb24oc2Vzc2lvbklkKQorICAgIHNlc3Npb25DcmVhdGVkKHNlc3Npb25JZCkKICAgICB7
CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25DcmVhdGVkKHNlc3Np
b25JZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZXNzaW9uTW9kaWZpZWQ6IGZ1bmN0aW9uKHNl
c3Npb25JZCkKKyAgICBzZXNzaW9uTW9kaWZpZWQoc2Vzc2lvbklkKQogICAgIHsKICAgICAgICAg
V2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2Vzc2lvbk1vZGlmaWVkKHNlc3Npb25JZCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzZXNzaW9uUmVtb3ZlZDogZnVuY3Rpb24oc2Vzc2lvbklkKQor
ICAgIHNlc3Npb25SZW1vdmVkKHNlc3Npb25JZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5yZXBsYXlNYW5hZ2VyLnNlc3Npb25SZW1vdmVkKHNlc3Npb25JZCk7Ci0gICAgfSwKKyAgICB9
CiAKLSAgICBzZXNzaW9uTG9hZGVkOiBmdW5jdGlvbihzZXNzaW9uSWQpCisgICAgc2Vzc2lvbkxv
YWRlZChzZXNzaW9uSWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdl
ci5zZXNzaW9uTG9hZGVkKHNlc3Npb25JZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWdtZW50
Q3JlYXRlZDogZnVuY3Rpb24oc2VnbWVudElkKQorICAgIHNlZ21lbnRDcmVhdGVkKHNlZ21lbnRJ
ZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlZ21lbnRDcmVh
dGVkKHNlZ21lbnRJZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWdtZW50UmVtb3ZlZDogZnVu
Y3Rpb24oc2VnbWVudElkKQorICAgIHNlZ21lbnRSZW1vdmVkKHNlZ21lbnRJZCkKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5yZXBsYXlNYW5hZ2VyLnNlZ21lbnRSZW1vdmVkKHNlZ21lbnRJ
ZCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBzZWdtZW50Q29tcGxldGVkOiBmdW5jdGlvbihzZWdt
ZW50SWQpCisgICAgc2VnbWVudENvbXBsZXRlZChzZWdtZW50SWQpCiAgICAgewogICAgICAgICBX
ZWJJbnNwZWN0b3IucmVwbGF5TWFuYWdlci5zZWdtZW50Q29tcGxldGVkKHNlZ21lbnRJZCk7Ci0g
ICAgfSwKKyAgICB9CiAKLSAgICBzZWdtZW50TG9hZGVkOiBmdW5jdGlvbihzZWdtZW50SWQpCisg
ICAgc2VnbWVudExvYWRlZChzZWdtZW50SWQpCiAgICAgewogICAgICAgICBXZWJJbnNwZWN0b3Iu
cmVwbGF5TWFuYWdlci5zZWdtZW50TG9hZGVkKHNlZ21lbnRJZCk7Ci0gICAgfSwKKyAgICB9CiAK
LSAgICBzZWdtZW50VW5sb2FkZWQ6IGZ1bmN0aW9uKCkKKyAgICBzZWdtZW50VW5sb2FkZWQoKQog
ICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnJlcGxheU1hbmFnZXIuc2VnbWVudFVubG9hZGVk
KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvUHJvdG9jb2wvUnVudGltZU9ic2VydmVyLmpzCmluZGV4IDk2OWVkMjRhYjM5
ODM4NmI1NTM2ZDUwNTgxNDViN2Q4ZDBhOTlkYzEuLmUwOWJhYTQ4MGFhZTg3NTliOTNmYWI3MDNk
NjE4MjdjYjhmNjA3ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Byb3RvY29sL1J1bnRpbWVPYnNlcnZlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9SdW50aW1lT2JzZXJ2ZXIuanMKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDIxICsy
MywxMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYklu
c3BlY3Rvci5SdW50aW1lT2JzZXJ2ZXIgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IuUnVudGlt
ZU9ic2VydmVyID0gY2xhc3MgUnVudGltZU9ic2VydmVyCiB7Ci0gICAgLy8gRklYTUU6IENvbnZl
cnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3ViY2xhc3MsIGFuZCBjYWxsIHN1cGVy
KCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMpOwotfTsKLQotV2ViSW5z
cGVjdG9yLlJ1bnRpbWVPYnNlcnZlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IFdl
Ykluc3BlY3Rvci5SdW50aW1lT2JzZXJ2ZXIsCi0KICAgICAvLyBFdmVudHMgZGVmaW5lZCBieSB0
aGUgIlJ1bnRpbWUiIGRvbWFpbi4KIAotICAgIGV4ZWN1dGlvbkNvbnRleHRDcmVhdGVkOiBmdW5j
dGlvbihjb250ZXh0UGF5bG9hZCkKKyAgICBleGVjdXRpb25Db250ZXh0Q3JlYXRlZChjb250ZXh0
UGF5bG9hZCkKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5mcmFtZVJlc291cmNlTWFuYWdl
ci5leGVjdXRpb25Db250ZXh0Q3JlYXRlZChjb250ZXh0UGF5bG9hZCk7CiAgICAgfQogfTsKLQot
V2ViSW5zcGVjdG9yLlJ1bnRpbWVPYnNlcnZlci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5z
cGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvVGltZWxpbmVPYnNlcnZlci5qcwpp
bmRleCA5NTE0YmRlNDQwNjllZTg2ZmU2MTlkOGU0NmFmYWJiYjU2MDYxNmZiLi5hNmVjNGI1ZmEx
YTJhMDYxMDczNTNjMzA1YmY0ZGI5Y2Q0ZjE0NjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL1RpbWVsaW5lT2Jz
ZXJ2ZXIuanMKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTIzLDMxICsyMywyMiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5UaW1lbGluZU9ic2VydmVyID0gZnVuY3Rpb24oKQor
V2ViSW5zcGVjdG9yLlRpbWVsaW5lT2JzZXJ2ZXIgPSBjbGFzcyBUaW1lbGluZU9ic2VydmVyCiB7
Ci0gICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBhIFdlYkluc3BlY3Rvci5PYmplY3Qgc3Vi
Y2xhc3MsIGFuZCBjYWxsIHN1cGVyKCkuCi0gICAgLy8gV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxs
KHRoaXMpOwotfTsKLQotV2ViSW5zcGVjdG9yLlRpbWVsaW5lT2JzZXJ2ZXIucHJvdG90eXBlID0g
ewotICAgIGNvbnN0cnVjdG9yOiBXZWJJbnNwZWN0b3IuVGltZWxpbmVPYnNlcnZlciwKLQogICAg
IC8vIEV2ZW50cyBkZWZpbmVkIGJ5IHRoZSAiVGltZWxpbmUiIGRvbWFpbi4KIAotICAgIGV2ZW50
UmVjb3JkZWQ6IGZ1bmN0aW9uKHJlY29yZCkKKyAgICBldmVudFJlY29yZGVkKHJlY29yZCkKICAg
ICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci50aW1lbGluZU1hbmFnZXIuZXZlbnRSZWNvcmRlZChy
ZWNvcmQpOwotICAgIH0sCisgICAgfQogCi0gICAgcmVjb3JkaW5nU3RhcnRlZDogZnVuY3Rpb24o
KQorICAgIHJlY29yZGluZ1N0YXJ0ZWQoKQogICAgIHsKICAgICAgICAgV2ViSW5zcGVjdG9yLnRp
bWVsaW5lTWFuYWdlci5jYXB0dXJpbmdTdGFydGVkKCk7Ci0gICAgfSwKKyAgICB9CiAKLSAgICBy
ZWNvcmRpbmdTdG9wcGVkOiBmdW5jdGlvbigpCisgICAgcmVjb3JkaW5nU3RvcHBlZCgpCiAgICAg
ewogICAgICAgICBXZWJJbnNwZWN0b3IudGltZWxpbmVNYW5hZ2VyLmNhcHR1cmluZ1N0b3BwZWQo
KTsKICAgICB9CiB9OwotCi1XZWJJbnNwZWN0b3IuVGltZWxpbmVPYnNlcnZlci5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7Cg==
</data>
<flag name="review"
          id="274319"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>