<?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>132984</bug_id>
          
          <creation_ts>2014-05-15 18:17:12 -0700</creation_ts>
          <short_desc>Web Inspector: Should remove JSDoc comment blocks.</short_desc>
          <delta_ts>2014-05-15 20:32:51 -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>P5</priority>
          <bug_severity>Trivial</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Wells">jonowells</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1009684</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-05-15 18:17:12 -0700</bug_when>
    <thetext>The inspector is no longer using the JSDoc comment blocks. These can be removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009686</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-05-15 18:19:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/16936139&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009688</commentid>
    <comment_count>2</comment_count>
      <attachid>231547</attachid>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-05-15 18:37:01 -0700</bug_when>
    <thetext>Created attachment 231547
[PATCH] Proposed Fix: Removal of all JSDoc style comment blocks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009692</commentid>
    <comment_count>3</comment_count>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-05-15 19:06:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/16936133&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009698</commentid>
    <comment_count>4</comment_count>
      <attachid>231547</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-05-15 20:02:20 -0700</bug_when>
    <thetext>Comment on attachment 231547
[PATCH] Proposed Fix: Removal of all JSDoc style comment blocks

I can see clearly now, the cruft is gone. It&apos;s going to be a bright, bright, sunshiny day!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009703</commentid>
    <comment_count>5</comment_count>
      <attachid>231547</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-15 20:32:48 -0700</bug_when>
    <thetext>Comment on attachment 231547
[PATCH] Proposed Fix: Removal of all JSDoc style comment blocks

Clearing flags on attachment: 231547

Committed r168919: &lt;http://trac.webkit.org/changeset/168919&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1009704</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-15 20:32:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231547</attachid>
            <date>2014-05-15 18:37:01 -0700</date>
            <delta_ts>2014-05-15 20:32:48 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix: Removal of all JSDoc style comment blocks</desc>
            <filename>comments.diff</filename>
            <type>text/plain</type>
            <size>65115</size>
            <attacher name="Jonathan Wells">jonowells</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGZmMGVkZTguLjYxZTYxZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE0LTA1LTE1ICBKb25vIFdlbGxzICA8
am9ub3dlbGxzQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBTaG91bGQgcmVt
b3ZlIEpTRG9jIGNvbW1lbnQgYmxvY2tzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTMyOTg0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEpTRG9jIGNvbW1lbnQgYmxvY2tzLiBUaGVzZSBhcmUg
bm8gbG9uZ2VyIG5lY2Vzc2FyeS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWlu
LmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9PYmplY3QuanM6CisgICAgICAgICog
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qczoKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01vZGVscy9ET01Ob2RlLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxz
L1NvdXJjZU1hcC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3Rv
ckJhY2tlbmQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmpl
Y3QuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9BcHBsaWNhdGlvbkNhY2hlRnJh
bWVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVN
ZXNzYWdlLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2VJ
bXBsLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnUuanM6Cisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qczoKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5lLmpzOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanM6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9EYXRhR3JpZC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFi
YXNlQ29udGVudFZpZXcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FZGl0aW5n
U3VwcG9ydC5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFByb3BlcnRp
ZXNTZWN0aW9uLmpzOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUG9wb3Zlci5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzOgorICAgICAgICBK
U0RvYyBzdHlsZSBjb21tZW50IGJsb2NrcyByZW1vdmVkLgorCiAyMDE0LTA1LTEzICBSYWR1IFN0
YXZpbGEgIDxzdGF2aWxhQGFkb2JlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXN0
b3JlIHJlZ2lvbkxheW91dFVwZGF0ZWQgZXZlbnQgaW4gaU9TNyBpbnNwZWN0b3IgYW5kIHJlbW92
ZSByZWdpb25PdmVyc2V0Q2hhbmdlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9NYWluLmpzCmluZGV4IDIzMWExMTguLmE0YTZjY2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKQEAgLTE2OTYs
MTIgKzE2OTYsNiBAQCBXZWJJbnNwZWN0b3IucmVkbyA9IGZ1bmN0aW9uKCkKICAgICBET01BZ2Vu
dC5yZWRvKCk7CiB9CiAKLS8qKgotICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50Ci0gKiBAcGFy
YW0ge0FycmF5LjxPYmplY3Q+fSByZXN1bHRSYW5nZXMKLSAqIEBwYXJhbSB7c3RyaW5nfSBzdHls
ZUNsYXNzCi0gKiBAcGFyYW0ge0FycmF5LjxPYmplY3Q+PX0gY2hhbmdlcwotICovCiBXZWJJbnNw
ZWN0b3IuaGlnaGxpZ2h0UmFuZ2VzV2l0aFN0eWxlQ2xhc3MgPSBmdW5jdGlvbihlbGVtZW50LCBy
ZXN1bHRSYW5nZXMsIHN0eWxlQ2xhc3MsIGNoYW5nZXMpCiB7CiAgICAgY2hhbmdlcyA9IGNoYW5n
ZXMgfHwgW107CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL09iamVjdC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvT2JqZWN0LmpzCmluZGV4IDAzMjE4NzUuLmU1ODJmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT2JqZWN0LmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvT2JqZWN0LmpzCkBAIC0yMywxNiArMjMs
MTAgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqLwog
V2ViSW5zcGVjdG9yLk9iamVjdCA9IGZ1bmN0aW9uKCkKIHsKIH0KIAotLyoqCi0gKiBAcGFyYW0g
e2Z1bmN0aW9ufSBjb25zdHJ1Y3RvcgotICovCiBXZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0
cnVjdG9yRnVuY3Rpb25zID0gZnVuY3Rpb24oc3ViY2xhc3NDb25zdHJ1Y3RvcikKIHsKICAgICAv
LyBDb3BpZXMgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0aGUgc3ViY2xhc3MgY29uc3RydWN0b3Iu
CkBAIC00NiwxMSArNDAsNiBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVu
Y3Rpb25zID0gZnVuY3Rpb24oc3ViY2xhc3NDb25zdHJ1Y3RvcikKICAgICB9CiB9CiAKLS8qKgot
ICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VHlwZQotICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNw
ZWN0b3IuRXZlbnQpfSBsaXN0ZW5lcgotICogQHBhcmFtIHtPYmplY3Q9fSB0aGlzT2JqZWN0Ci0g
Ki8KIFdlYkluc3BlY3Rvci5PYmplY3QuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50
VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCiB7CiAgICAgdGhpc09iamVjdCA9IHRoaXNPYmpl
Y3QgfHwgbnVsbDsKQEAgLTc5LDExICs2OCw2IEBAIFdlYkluc3BlY3Rvci5PYmplY3QuYWRkRXZl
bnRMaXN0ZW5lciA9IGZ1bmN0aW9uKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHRoaXNPYmplY3QpCiAg
ICAgbGlzdGVuZXJzLnB1c2goe3RoaXNPYmplY3Q6IHRoaXNPYmplY3QsIGxpc3RlbmVyOiBsaXN0
ZW5lcn0pOwogfTsKIAotLyoqCi0gKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlCi0gKiBAcGFy
YW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5FdmVudCl9IGxpc3RlbmVyCi0gKiBAcGFyYW0ge09i
amVjdD19IHRoaXNPYmplY3QKLSAqLwogV2ViSW5zcGVjdG9yLk9iamVjdC5yZW1vdmVFdmVudExp
c3RlbmVyID0gZnVuY3Rpb24oZXZlbnRUeXBlLCBsaXN0ZW5lciwgdGhpc09iamVjdCkKIHsKICAg
ICBldmVudFR5cGUgPSBldmVudFR5cGUgfHwgbnVsbDsKQEAgLTEyMiwxMCArMTA2LDYgQEAgV2Vi
SW5zcGVjdG9yLk9iamVjdC5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBmdW5jdGlvbigpCiAgICAgZGVs
ZXRlIHRoaXMuX2xpc3RlbmVyczsKIH07CiAKLS8qKgotICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50
VHlwZQotICogQHJldHVybiB7Ym9vbGVhbn0KLSAqLwogV2ViSW5zcGVjdG9yLk9iamVjdC5oYXNF
dmVudExpc3RlbmVycyA9IGZ1bmN0aW9uKGV2ZW50VHlwZSkKIHsKICAgICBpZiAoIXRoaXMuX2xp
c3RlbmVycyB8fCAhdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0pCkBAIC0xMzYsMzMgKzExNiwx
NCBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0Lmhhc0V2ZW50TGlzdGVuZXJzID0gZnVuY3Rpb24oZXZl
bnRUeXBlKQogV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgY29uc3RydWN0
b3I6IFdlYkluc3BlY3Rvci5PYmplY3QsCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gZXZlbnRUeXBlCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbihXZWJJbnNwZWN0b3IuRXZlbnQp
fSBsaXN0ZW5lcgotICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gdGhpc09iamVjdAotICAgICAqLwog
ICAgIGFkZEV2ZW50TGlzdGVuZXI6IFdlYkluc3BlY3Rvci5PYmplY3QuYWRkRXZlbnRMaXN0ZW5l
ciwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUKLSAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKFdlYkluc3BlY3Rvci5FdmVudCl9IGxpc3RlbmVyCi0gICAgICogQHBh
cmFtIHtPYmplY3Q9fSB0aGlzT2JqZWN0Ci0gICAgICovCiAgICAgcmVtb3ZlRXZlbnRMaXN0ZW5l
cjogV2ViSW5zcGVjdG9yLk9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyLAogCiAgICAgcmVtb3Zl
QWxsTGlzdGVuZXJzOiBXZWJJbnNwZWN0b3IuT2JqZWN0LnJlbW92ZUFsbExpc3RlbmVycywKIAot
ICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUKLSAgICAgKiBAcmV0dXJu
IHtib29sZWFufQotICAgICAqLwogICAgIGhhc0V2ZW50TGlzdGVuZXJzOiBXZWJJbnNwZWN0b3Iu
T2JqZWN0Lmhhc0V2ZW50TGlzdGVuZXJzLAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJp
bmd9IGV2ZW50VHlwZQotICAgICAqIEBwYXJhbSB7Kj19IGV2ZW50RGF0YQotICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59Ci0gICAgICovCiAgICAgZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzOiBmdW5j
dGlvbihldmVudFR5cGUsIGV2ZW50RGF0YSkKICAgICB7CiAgICAgICAgIHZhciBldmVudCA9IG5l
dyBXZWJJbnNwZWN0b3IuRXZlbnQodGhpcywgZXZlbnRUeXBlLCBldmVudERhdGEpOwpAQCAtMjA0
LDEyICsxNjUsNiBAQCBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICB9CiB9
CiAKLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5PYmplY3R9
IHRhcmdldAotICogQHBhcmFtIHtzdHJpbmd9IHR5cGUKLSAqIEBwYXJhbSB7Kj19IGRhdGEKLSAq
LwogV2ViSW5zcGVjdG9yLkV2ZW50ID0gZnVuY3Rpb24odGFyZ2V0LCB0eXBlLCBkYXRhKQogewog
ICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NVHJlZU1hbmFnZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5q
cwppbmRleCBmNGI4NDI1Li41ZDk3NTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdlci5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01UcmVlTWFuYWdl
ci5qcwpAQCAtMzAsMTggKzMwLDEzIEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8qKgotICog
QGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9Ci0gKiBAY29uc3RydWN0b3IKLSAqLwogV2Vi
SW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyID0gZnVuY3Rpb24oKSB7Ci0gICAgLyoqIEB0eXBlIHtP
YmplY3R8dW5kZWZpbmVkfSAqLwogICAgIHRoaXMuX2lkVG9ET01Ob2RlID0ge307CiAgICAgdGhp
cy5fZG9jdW1lbnQgPSBudWxsOwogICAgIHRoaXMuX2F0dHJpYnV0ZUxvYWROb2RlSWRzID0ge307
CiAgICAgdGhpcy5fZmxvd3MgPSBuZXcgTWFwOwogICAgIHRoaXMuX2NvbnRlbnROb2Rlc1RvRmxv
d3NNYXAgPSBuZXcgTWFwOwotfQorfTsKIAogV2ViSW5zcGVjdG9yLk9iamVjdC5hZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIpOwogCkBAIC02OCw5ICs2
Myw2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5fZmxvd1BheWxvYWRIYXNoS2V5ID0g
ZnVuY3Rpb24oZmxvd1BheWxvYWQpCiB9OwogCiBXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIu
cHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oV2ViSW5zcGVj
dG9yLkRPTURvY3VtZW50KT19IGNhbGxiYWNrCi0gICAgICovCiAgICAgcmVxdWVzdERvY3VtZW50
OiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9kb2N1bWVudCkg
ewpAQCAtODYsMTEgKzc4LDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlw
ZSA9IHsKIAogICAgICAgICB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzID0g
W2NhbGxiYWNrXTsKIAotICAgICAgICAvKioKLSAgICAgICAgICogQHRoaXMge1dlYkluc3BlY3Rv
ci5ET01UcmVlTWFuYWdlcn0KLSAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVy
cm9yCi0gICAgICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZX0gcm9vdAotICAgICAgICAgKi8K
ICAgICAgICAgZnVuY3Rpb24gb25Eb2N1bWVudEF2YWlsYWJsZShlcnJvciwgcm9vdCkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFlcnJvcikKQEAgLTEwNywyOSArOTQsMTcgQEAgV2ViSW5z
cGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgRE9NQWdlbnQuZ2V0
RG9jdW1lbnQob25Eb2N1bWVudEF2YWlsYWJsZS5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0SWR9IG9iamVjdElk
Ci0gICAgICogQHBhcmFtIHtmdW5jdGlvbigpPX0gY2FsbGJhY2sKLSAgICAgKi8KICAgICBwdXNo
Tm9kZVRvRnJvbnRlbmQ6IGZ1bmN0aW9uKG9iamVjdElkLCBjYWxsYmFjaykKICAgICB7CiAgICAg
ICAgIHRoaXMuX2Rpc3BhdGNoV2hlbkRvY3VtZW50QXZhaWxhYmxlKERPTUFnZW50LnJlcXVlc3RO
b2RlLmJpbmQoRE9NQWdlbnQsIG9iamVjdElkKSwgY2FsbGJhY2spOwogICAgIH0sCiAKLSAgICAv
KioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aAotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24o
P1dlYkluc3BlY3Rvci5ET01Ob2RlKT19IGNhbGxiYWNrCi0gICAgICovCiAgICAgcHVzaE5vZGVC
eVBhdGhUb0Zyb250ZW5kOiBmdW5jdGlvbihwYXRoLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAg
IHZhciBjYWxsYmFja0Nhc3QgPSAvKiogQHR5cGUge2Z1bmN0aW9uKCopfSAqLyBjYWxsYmFjazsK
KyAgICAgICAgdmFyIGNhbGxiYWNrQ2FzdCA9IGNhbGxiYWNrOwogICAgICAgICB0aGlzLl9kaXNw
YXRjaFdoZW5Eb2N1bWVudEF2YWlsYWJsZShET01BZ2VudC5wdXNoTm9kZUJ5UGF0aFRvRnJvbnRl
bmQuYmluZChET01BZ2VudCwgcGF0aCksIGNhbGxiYWNrQ2FzdCk7CiAgICAgfSwKIAotICAgIC8q
KgotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oKik9fSBjYWxsYmFjawotICAgICAqIEByZXR1cm4g
e2Z1bmN0aW9uKD9Qcm90b2NvbC5FcnJvciwqPSl8dW5kZWZpbmVkfQotICAgICAqLwogICAgIF93
cmFwQ2xpZW50Q2FsbGJhY2s6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYg
KCFjYWxsYmFjaykKQEAgLTE0MSwxMyArMTE2LDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5h
Z2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICog
QHBhcmFtIHtmdW5jdGlvbihmdW5jdGlvbigpPSl9IGZ1bmMKLSAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKCopPX0gY2FsbGJhY2sKLSAgICAgKi8KICAgICBfZGlzcGF0Y2hXaGVuRG9jdW1lbnRBdmFp
bGFibGU6IGZ1bmN0aW9uKGZ1bmMsIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgdmFyIGNhbGxi
YWNrV3JhcHBlciA9IC8qKiBAdHlwZSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yLCAqPSl9ICov
IHRoaXMuX3dyYXBDbGllbnRDYWxsYmFjayhjYWxsYmFjayk7CisgICAgICAgIHZhciBjYWxsYmFj
a1dyYXBwZXIgPSB0aGlzLl93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2spOwogCiAgICAgICAg
IGZ1bmN0aW9uIG9uRG9jdW1lbnRBdmFpbGFibGUoKQogICAgICAgICB7CkBAIC0xNjEsMTEgKzEz
Miw2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHRoaXMucmVxdWVzdERvY3VtZW50KG9uRG9jdW1lbnRBdmFpbGFibGUuYmluZCh0aGlzKSk7CiAg
ICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQK
LSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1
ZQotICAgICAqLwogICAgIF9hdHRyaWJ1dGVNb2RpZmllZDogZnVuY3Rpb24obm9kZUlkLCBuYW1l
LCB2YWx1ZSkKICAgICB7CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVbbm9k
ZUlkXTsKQEAgLTE3NiwxMCArMTQyLDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgbm9kZS5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLkRPTU5vZGUuRXZlbnQuQXR0cmlidXRlTW9kaWZpZWQsIHtuYW1lOiBuYW1lfSk7CiAg
ICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBub2RlSWQK
LSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQotICAgICAqLwogICAgIF9hdHRyaWJ1dGVSZW1v
dmVkOiBmdW5jdGlvbihub2RlSWQsIG5hbWUpCiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IHRo
aXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CkBAIC0xOTAsOSArMTUyLDYgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgbm9kZS5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRPTU5vZGUuRXZlbnQuQXR0cmlidXRlUmVtb3ZlZCwg
e25hbWU6IG5hbWV9KTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtBcnJheS48
RE9NQWdlbnQuTm9kZUlkPn0gbm9kZUlkcwotICAgICAqLwogICAgIF9pbmxpbmVTdHlsZUludmFs
aWRhdGVkOiBmdW5jdGlvbihub2RlSWRzKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBub2RlSWRzLmxlbmd0aDsgKytpKQpAQCAtMjA0LDEyICsxNjMsNiBAQCBXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlID0gewogCiAgICAgX2xvYWROb2RlQXR0cmlidXRl
czogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgLyoqCi0gICAgICAgICAqIEB0aGlzIHtXZWJJ
bnNwZWN0b3IuRE9NVHJlZU1hbmFnZXJ9Ci0gICAgICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9k
ZUlkfSBub2RlSWQKLSAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCi0g
ICAgICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGF0dHJpYnV0ZXMKLSAgICAgICAgICov
CiAgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKG5vZGVJZCwgZXJyb3IsIGF0dHJpYnV0ZXMpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmIChlcnJvcikgewpAQCAtMjMzLDEwICsxODYsNiBAQCBX
ZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9h
dHRyaWJ1dGVMb2FkTm9kZUlkcyA9IHt9OwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5ld1Zh
bHVlCi0gICAgICovCiAgICAgX2NoYXJhY3RlckRhdGFNb2RpZmllZDogZnVuY3Rpb24obm9kZUlk
LCBuZXdWYWx1ZSkKICAgICB7CiAgICAgICAgIHZhciBub2RlID0gdGhpcy5faWRUb0RPTU5vZGVb
bm9kZUlkXTsKQEAgLTI0NCwxMCArMTkzLDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2Vy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50LkNoYXJhY3RlckRhdGFNb2RpZmllZCwge25v
ZGU6IG5vZGV9KTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtET01BZ2VudC5O
b2RlSWR9IG5vZGVJZAotICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5ET01Ob2RlfHVuZGVm
aW5lZH0KLSAgICAgKi8KICAgICBub2RlRm9ySWQ6IGZ1bmN0aW9uKG5vZGVJZCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwpAQCAtMjU4LDkgKzIwMyw2
IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRo
aXMuX3NldERvY3VtZW50KG51bGwpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0g
e0RPTUFnZW50Lk5vZGV9IHBheWxvYWQKLSAgICAgKi8KICAgICBfc2V0RG9jdW1lbnQ6IGZ1bmN0
aW9uKHBheWxvYWQpCiAgICAgewogICAgICAgICB0aGlzLl9pZFRvRE9NTm9kZSA9IHt9OwpAQCAt
MjcxLDE4ICsyMTMsMTEgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLkRP
TVRyZWVNYW5hZ2VyLkV2ZW50LkRvY3VtZW50VXBkYXRlZCwgdGhpcy5fZG9jdW1lbnQpOwogICAg
IH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGV9IHBheWxvYWQKLSAg
ICAgKi8KICAgICBfc2V0RGV0YWNoZWRSb290OiBmdW5jdGlvbihwYXlsb2FkKQogICAgIHsKICAg
ICAgICAgbmV3IFdlYkluc3BlY3Rvci5ET01Ob2RlKHRoaXMsIG51bGwsIGZhbHNlLCBwYXlsb2Fk
KTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IHBh
cmVudElkCi0gICAgICogQHBhcmFtIHtBcnJheS48RE9NQWdlbnQuTm9kZT59IHBheWxvYWRzCi0g
ICAgICovCiAgICAgX3NldENoaWxkTm9kZXM6IGZ1bmN0aW9uKHBhcmVudElkLCBwYXlsb2FkcykK
ICAgICB7CiAgICAgICAgIGlmICghcGFyZW50SWQgJiYgcGF5bG9hZHMubGVuZ3RoKSB7CkBAIC0y
OTQsMTAgKzIyOSw2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHBhcmVudC5fc2V0Q2hpbGRyZW5QYXlsb2FkKHBheWxvYWRzKTsKICAgICB9LAog
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlSWR9IG5vZGVJZAotICAgICAq
IEBwYXJhbSB7bnVtYmVyfSBuZXdWYWx1ZQotICAgICAqLwogICAgIF9jaGlsZE5vZGVDb3VudFVw
ZGF0ZWQ6IGZ1bmN0aW9uKG5vZGVJZCwgbmV3VmFsdWUpCiAgICAgewogICAgICAgICB2YXIgbm9k
ZSA9IHRoaXMuX2lkVG9ET01Ob2RlW25vZGVJZF07CkBAIC0zMDUsMTEgKzIzNiw2IEBAIFdlYklu
c3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5FdmVudC5DaGls
ZE5vZGVDb3VudFVwZGF0ZWQsIG5vZGUpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge0RPTUFnZW50Lk5vZGVJZH0gcGFyZW50SWQKLSAgICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5v
ZGVJZH0gcHJldklkCi0gICAgICogQHBhcmFtIHtET01BZ2VudC5Ob2RlfSBwYXlsb2FkCi0gICAg
ICovCiAgICAgX2NoaWxkTm9kZUluc2VydGVkOiBmdW5jdGlvbihwYXJlbnRJZCwgcHJldklkLCBw
YXlsb2FkKQogICAgIHsKICAgICAgICAgdmFyIHBhcmVudCA9IHRoaXMuX2lkVG9ET01Ob2RlW3Bh
cmVudElkXTsKQEAgLTMxOSwxMCArMjQ1LDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2Vy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwge25vZGU6IG5vZGUs
IHBhcmVudDogcGFyZW50fSk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9N
QWdlbnQuTm9kZUlkfSBwYXJlbnRJZAotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBu
b2RlSWQKLSAgICAgKi8KICAgICBfY2hpbGROb2RlUmVtb3ZlZDogZnVuY3Rpb24ocGFyZW50SWQs
IG5vZGVJZCkKICAgICB7CiAgICAgICAgIHZhciBwYXJlbnQgPSB0aGlzLl9pZFRvRE9NTm9kZVtw
YXJlbnRJZF07CkBAIC0zMzIsOSArMjU0LDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2Vy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2Vi
SW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLkV2ZW50Lk5vZGVSZW1vdmVkLCB7bm9kZTpub2RlLCBw
YXJlbnQ6IHBhcmVudH0pOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0RPTUFn
ZW50Lk5vZGV9IG5vZGUKLSAgICAgKi8KICAgICBfdW5iaW5kOiBmdW5jdGlvbihub2RlKQogICAg
IHsKICAgICAgICAgdGhpcy5fcmVtb3ZlQ29udGVudE5vZGVGcm9tRmxvd0lmTmVlZGVkKG5vZGUp
OwpAQCAtMzQ0LDkgKzI2Myw2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICB0aGlzLl91bmJpbmQobm9kZS5jaGlsZHJlbltpXSk7CiAgICAg
fSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBub2RlSWQKLSAgICAgKi8KICAg
ICBpbnNwZWN0RWxlbWVudDogZnVuY3Rpb24obm9kZUlkKQogICAgIHsKICAgICAgICAgdmFyIG5v
ZGUgPSB0aGlzLl9pZFRvRE9NTm9kZVtub2RlSWRdOwpAQCAtMzczLDE5ICsyODksMTAgQEAgV2Vi
SW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmVtb3RlT2Jq
ZWN0LnB1c2hOb2RlVG9Gcm9udGVuZChub2RlQXZhaWxhYmxlLmJpbmQodGhpcykpOwogICAgIH0s
CiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gcXVlcnkKLSAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKG51bWJlcil9IHNlYXJjaENhbGxiYWNrCi0gICAgICovCiAgICAgcGVyZm9ybVNl
YXJjaDogZnVuY3Rpb24ocXVlcnksIHNlYXJjaENhbGxiYWNrKQogICAgIHsKICAgICAgICAgdGhp
cy5jYW5jZWxTZWFyY2goKTsKIAotICAgICAgICAvKioKLSAgICAgICAgICogQHBhcmFtIHs/UHJv
dG9jb2wuRXJyb3J9IGVycm9yCi0gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hJZAot
ICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gcmVzdWx0c0NvdW50Ci0gICAgICAgICAqLwogICAg
ICAgICBmdW5jdGlvbiBjYWxsYmFjayhlcnJvciwgc2VhcmNoSWQsIHJlc3VsdHNDb3VudCkKICAg
ICAgICAgewogICAgICAgICAgICAgdGhpcy5fc2VhcmNoSWQgPSBzZWFyY2hJZDsKQEAgLTM5NCwx
NyArMzAxLDkgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgRE9NQWdlbnQucGVyZm9ybVNlYXJjaChxdWVyeSwgY2FsbGJhY2suYmluZCh0aGlzKSk7
CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleAotICAgICAq
IEBwYXJhbSB7P2Z1bmN0aW9uKERPTUFnZW50Lk5vZGUpfSBjYWxsYmFjawotICAgICAqLwogICAg
IHNlYXJjaFJlc3VsdDogZnVuY3Rpb24oaW5kZXgsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAg
aWYgKHRoaXMuX3NlYXJjaElkKSB7Ci0gICAgICAgICAgICAvKioKLSAgICAgICAgICAgICAqIEBw
YXJhbSB7P1Byb3RvY29sLkVycm9yfSBlcnJvcgotICAgICAgICAgICAgICogQHBhcmFtIHtBcnJh
eS48bnVtYmVyPn0gbm9kZUlkcwotICAgICAgICAgICAgICovCiAgICAgICAgICAgICBmdW5jdGlv
biBteWNhbGxiYWNrKGVycm9yLCBub2RlSWRzKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIGlmIChlcnJvcikgewpAQCAtNDMwLDMyICszMjksMTggQEAgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVNYW5hZ2VyLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCi0gICAgICogQHBhcmFtIHtzdHJp
bmd9IHNlbGVjdG9ycwotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0RPTUFnZW50Lk5vZGVJZCk9
fSBjYWxsYmFjawotICAgICAqLwogICAgIHF1ZXJ5U2VsZWN0b3I6IGZ1bmN0aW9uKG5vZGVJZCwg
c2VsZWN0b3JzLCBjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIHZhciBjYWxsYmFja0Nhc3QgPSAv
KiogQHR5cGUge2Z1bmN0aW9uKCopfHVuZGVmaW5lZH0gKi9jYWxsYmFjazsKKyAgICAgICAgdmFy
IGNhbGxiYWNrQ2FzdCA9IGNhbGxiYWNrOwogICAgICAgICBET01BZ2VudC5xdWVyeVNlbGVjdG9y
KG5vZGVJZCwgc2VsZWN0b3JzLCB0aGlzLl93cmFwQ2xpZW50Q2FsbGJhY2soY2FsbGJhY2tDYXN0
KSk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7RE9NQWdlbnQuTm9kZUlkfSBu
b2RlSWQKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gc2VsZWN0b3JzCi0gICAgICogQHBhcmFtIHtm
dW5jdGlvbig/QXJyYXkuPERPTUFnZW50Lk5vZGVJZD4pPX0gY2FsbGJhY2sKLSAgICAgKi8KICAg
ICBxdWVyeVNlbGVjdG9yQWxsOiBmdW5jdGlvbihub2RlSWQsIHNlbGVjdG9ycywgY2FsbGJhY2sp
CiAgICAgewotICAgICAgICB2YXIgY2FsbGJhY2tDYXN0ID0gLyoqIEB0eXBlIHtmdW5jdGlvbigq
KXx1bmRlZmluZWR9ICovY2FsbGJhY2s7CisgICAgICAgIHZhciBjYWxsYmFja0Nhc3QgPSBjYWxs
YmFjazsKICAgICAgICAgRE9NQWdlbnQucXVlcnlTZWxlY3RvckFsbChub2RlSWQsIHNlbGVjdG9y
cywgdGhpcy5fd3JhcENsaWVudENhbGxiYWNrKGNhbGxiYWNrQ2FzdCkpOwogICAgIH0sCiAKLSAg
ICAvKioKLSAgICAgKiBAcGFyYW0gez9udW1iZXJ9IG5vZGVJZAotICAgICAqIEBwYXJhbSB7c3Ry
aW5nPX0gbW9kZQotICAgICAqLwogICAgIGhpZ2hsaWdodERPTU5vZGU6IGZ1bmN0aW9uKG5vZGVJ
ZCwgbW9kZSkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9oaWRlRE9NTm9kZUhpZ2hsaWdodFRp
bWVvdXQpIHsKQEAgLTQ4OCw5ICszNzMsNiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLmhpZ2hsaWdodERPTU5vZGUoMCk7CiAgICAgfSwK
IAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7P0RPTUFnZW50Lk5vZGVJZH0gbm9kZUlkCi0gICAg
ICovCiAgICAgaGlnaGxpZ2h0RE9NTm9kZUZvclR3b1NlY29uZHM6IGZ1bmN0aW9uKG5vZGVJZCkK
ICAgICB7CiAgICAgICAgIHRoaXMuaGlnaGxpZ2h0RE9NTm9kZShub2RlSWQpOwpAQCAtNTEzLDkg
KzM5NSw2IEBAIFdlYkluc3BlY3Rvci5ET01UcmVlTWFuYWdlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIERPTUFnZW50LnNldEluc3BlY3RNb2RlRW5hYmxlZChlbmFibGVkLCB0aGlzLl9idWlsZEhp
Z2hsaWdodENvbmZpZygpLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtzdHJpbmc9fSBtb2RlCi0gICAgICovCiAgICAgX2J1aWxkSGlnaGxp
Z2h0Q29uZmlnOiBmdW5jdGlvbihtb2RlKQogICAgIHsKICAgICAgICAgbW9kZSA9IG1vZGUgfHwg
ImFsbCI7CkBAIC04MjMsNiArNzAyLDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVNYW5hZ2VyLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9
Ci19Cit9OwogCiBXZWJJbnNwZWN0b3IuRE9NVHJlZU1hbmFnZXIucHJvdG90eXBlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU0NvbXBsZXRpb25zLmpz
CmluZGV4IGFlZjVlNTAuLjU5NjUwYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NDb21wbGV0aW9ucy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTQ29tcGxldGlvbnMuanMKQEAgLTMx
LDkgKzMxLDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLyoqCi0gKiBAY29uc3RydWN0b3IK
LSAqLwogV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zID0gZnVuY3Rpb24ocHJvcGVydGllcywg
YWNjZXB0RW1wdHlQcmVmaXgpCiB7CiAgICAgdGhpcy5fdmFsdWVzID0gW107CkBAIC03NSwxMCAr
NzIsNiBAQCBXZWJJbnNwZWN0b3IuQ1NTQ29tcGxldGlvbnMgPSBmdW5jdGlvbihwcm9wZXJ0aWVz
LCBhY2NlcHRFbXB0eVByZWZpeCkKICAgICB0aGlzLl9hY2NlcHRFbXB0eVByZWZpeCA9IGFjY2Vw
dEVtcHR5UHJlZml4OwogfQogCi0KLS8qKgotICogQHR5cGUge1dlYkluc3BlY3Rvci5DU1NDb21w
bGV0aW9uc30KLSAqLwogV2ViSW5zcGVjdG9yLkNTU0NvbXBsZXRpb25zLmNzc05hbWVDb21wbGV0
aW9ucyA9IG51bGw7CiAKIFdlYkluc3BlY3Rvci5DU1NDb21wbGV0aW9ucy5yZXF1ZXN0Q1NTTmFt
ZUNvbXBsZXRpb25zID0gZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZS5qcwppbmRleCA4MDNmZTg2Li42NDRjMjEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
RE9NTm9kZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvRE9NTm9kZS5qcwpAQCAtMzAsMTMgKzMwLDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
LyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTUFnZW50fSBk
b21BZ2VudAotICogQHBhcmFtIHs/V2ViSW5zcGVjdG9yLkRPTU5vZGV9IGRvYwotICogQHBhcmFt
IHtib29sZWFufSBpc0luU2hhZG93VHJlZQotICogQHBhcmFtIHtET01BZ2VudC5Ob2RlfSBwYXls
b2FkCi0gKi8KIFdlYkluc3BlY3Rvci5ET01Ob2RlID0gZnVuY3Rpb24oZG9tQWdlbnQsIGRvYywg
aXNJblNoYWRvd1RyZWUsIHBheWxvYWQpIHsKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwo
dGhpcyk7CiAKQEAgLTIwNSwxNDcgKzE5OCw4OCBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90
b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLl9jaGlsZE5vZGVDb3VudCA9IGNvdW50Owog
ICAgIH0sCi0gICAgCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7c3RyaW5nfQotICAgICAqLwor
CiAgICAgY29tcHV0ZWRSb2xlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fY29tcHV0ZWRSb2xlOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtib29s
ZWFufQotICAgICAqLwogICAgIGhhc0F0dHJpYnV0ZXM6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzLmxlbmd0aCA+IDA7CiAgICAgfSwKIAotICAgIC8q
KgotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCiAgICAgaGFzQ2hpbGROb2Rlczog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2RlQ291bnQgPiAw
OwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwog
ICAgIGhhc1NoYWRvd1Jvb3RzOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gISF0
aGlzLl9zaGFkb3dSb290cy5sZW5ndGg7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEByZXR1
cm4ge2Jvb2xlYW59Ci0gICAgICovCiAgICAgaXNJblNoYWRvd1RyZWU6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9pc0luU2hhZG93VHJlZTsKICAgICB9LAogCi0gICAg
LyoqCi0gICAgICogQHJldHVybiB7bnVtYmVyfQotICAgICAqLwogICAgIG5vZGVUeXBlOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fbm9kZVR5cGU7CiAgICAgfSwKIAot
ICAgIC8qKgotICAgICAqIEByZXR1cm4ge3N0cmluZ30KLSAgICAgKi8KICAgICBub2RlTmFtZTog
ZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX25vZGVOYW1lOwogICAgIH0s
CiAKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtzdHJpbmd9Ci0gICAgICovCiAgICAgbm9kZU5h
bWVJbkNvcnJlY3RDYXNlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5p
c1hNTE5vZGUoKSA/IHRoaXMubm9kZU5hbWUoKSA6IHRoaXMubm9kZU5hbWUoKS50b0xvd2VyQ2Fz
ZSgpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQotICAg
ICAqIEBwYXJhbSB7ZnVuY3Rpb24oKT19IGNhbGxiYWNrCi0gICAgICovCiAgICAgc2V0Tm9kZU5h
bWU6IGZ1bmN0aW9uKG5hbWUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgRE9NQWdlbnQuc2V0
Tm9kZU5hbWUodGhpcy5pZCwgbmFtZSwgdGhpcy5fbWFrZVVuZG9hYmxlQ2FsbGJhY2soY2FsbGJh
Y2spKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7c3RyaW5nfQotICAgICAq
LwogICAgIGxvY2FsTmFtZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMu
X2xvY2FsTmFtZTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7c3RyaW5nfQot
ICAgICAqLwogICAgIG5vZGVWYWx1ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX25vZGVWYWx1ZTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJp
bmd9IHZhbHVlCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3IpPX0gY2Fs
bGJhY2sKLSAgICAgKi8KICAgICBzZXROb2RlVmFsdWU6IGZ1bmN0aW9uKHZhbHVlLCBjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIERPTUFnZW50LnNldE5vZGVWYWx1ZSh0aGlzLmlkLCB2YWx1ZSwg
dGhpcy5fbWFrZVVuZG9hYmxlQ2FsbGJhY2soY2FsbGJhY2spKTsKICAgICB9LAogCi0gICAgLyoq
Ci0gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKLSAgICAgKiBAcmV0dXJuIHtzdHJpbmd9Ci0g
ICAgICovCiAgICAgZ2V0QXR0cmlidXRlOiBmdW5jdGlvbihuYW1lKQogICAgIHsKICAgICAgICAg
dmFyIGF0dHIgPSB0aGlzLl9hdHRyaWJ1dGVzTWFwW25hbWVdOwogICAgICAgICByZXR1cm4gYXR0
ciA/IGF0dHIudmFsdWUgOiB1bmRlZmluZWQ7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBw
YXJhbSB7c3RyaW5nfSBuYW1lCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQKLSAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKCk9fSBjYWxsYmFjawotICAgICAqLwogICAgIHNldEF0dHJpYnV0ZTog
ZnVuY3Rpb24obmFtZSwgdGV4dCwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBET01BZ2VudC5z
ZXRBdHRyaWJ1dGVzQXNUZXh0KHRoaXMuaWQsIHRleHQsIG5hbWUsIHRoaXMuX21ha2VVbmRvYWJs
ZUNhbGxiYWNrKGNhbGxiYWNrKSk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7
c3RyaW5nfSBuYW1lCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlCi0gICAgICogQHBhcmFt
IHtmdW5jdGlvbigpPX0gY2FsbGJhY2sKLSAgICAgKi8KICAgICBzZXRBdHRyaWJ1dGVWYWx1ZTog
ZnVuY3Rpb24obmFtZSwgdmFsdWUsIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgRE9NQWdlbnQu
c2V0QXR0cmlidXRlVmFsdWUodGhpcy5pZCwgbmFtZSwgdmFsdWUsIHRoaXMuX21ha2VVbmRvYWJs
ZUNhbGxiYWNrKGNhbGxiYWNrKSk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEByZXR1cm4g
e09iamVjdH0KLSAgICAgKi8KICAgICBhdHRyaWJ1dGVzOiBmdW5jdGlvbigpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRlczsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9fSBjYWxsYmFj
awotICAgICAqLwogICAgIHJlbW92ZUF0dHJpYnV0ZTogZnVuY3Rpb24obmFtZSwgY2FsbGJhY2sp
CiAgICAgewogICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGVycm9yLCBzdWNjZXNzKQpAQCAt
MzY1LDkgKzI5OSw2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgRE9NQWdlbnQucmVtb3ZlQXR0cmlidXRlKHRoaXMuaWQsIG5hbWUsIG15Y2FsbGJhY2suYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oQXJy
YXkuPFdlYkluc3BlY3Rvci5ET01Ob2RlPik9fSBjYWxsYmFjawotICAgICAqLwogICAgIGdldENo
aWxkTm9kZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuY2hp
bGRyZW4pIHsKQEAgLTM3NiwxMCArMzA3LDYgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgLyoqCi0g
ICAgICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0KLSAgICAgICAgICogQHBhcmFt
IHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCi0gICAgICAgICAqLwogICAgICAgICBmdW5jdGlvbiBt
eWNhbGxiYWNrKGVycm9yKSB7CiAgICAgICAgICAgICBpZiAoIWVycm9yICYmIGNhbGxiYWNrKQog
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMuY2hpbGRyZW4pOwpAQCAtMzg4LDQ1ICszMTUs
MjcgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICBET01BZ2Vu
dC5yZXF1ZXN0Q2hpbGROb2Rlcyh0aGlzLmlkLCBteWNhbGxiYWNrLmJpbmQodGhpcykpOwogICAg
IH0sCiAKLSAgICAgLyoqCi0gICAgICAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aAotICAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJbnNwZWN0b3IuRE9NTm9kZT4pPX0gY2FsbGJhY2sK
LSAgICAgICovCiAgICAgZ2V0U3VidHJlZTogZnVuY3Rpb24oZGVwdGgsIGNhbGxiYWNrKQogICAg
IHsKLSAgICAgICAgLyoqCi0gICAgICAgICAqIEB0aGlzIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0K
LSAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCi0gICAgICAgICAqLwog
ICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGVycm9yKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoY2FsbGJhY2spCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IgPyBudWxsIDog
dGhpcy5jaGlsZHJlbik7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhbGxiYWNr
KGVycm9yID8gbnVsbCA6IHRoaXMuY2hpbGRyZW4pOwogICAgICAgICB9CiAKICAgICAgICAgRE9N
QWdlbnQucmVxdWVzdENoaWxkTm9kZXModGhpcy5pZCwgZGVwdGgsIG15Y2FsbGJhY2suYmluZCh0
aGlzKSk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3Rv
Y29sLkVycm9yKT19IGNhbGxiYWNrCi0gICAgICovCiAgICAgZ2V0T3V0ZXJIVE1MOiBmdW5jdGlv
bihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIERPTUFnZW50LmdldE91dGVySFRNTCh0aGlzLmlk
LCBjYWxsYmFjayk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBo
dG1sCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbig/UHJvdG9jb2wuRXJyb3IpPX0gY2FsbGJhY2sK
LSAgICAgKi8KICAgICBzZXRPdXRlckhUTUw6IGZ1bmN0aW9uKGh0bWwsIGNhbGxiYWNrKQogICAg
IHsKICAgICAgICAgRE9NQWdlbnQuc2V0T3V0ZXJIVE1MKHRoaXMuaWQsIGh0bWwsIHRoaXMuX21h
a2VVbmRvYWJsZUNhbGxiYWNrKGNhbGxiYWNrKSk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAq
IEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKT19IGNhbGxiYWNrCi0gICAgICovCiAg
ICAgcmVtb3ZlTm9kZTogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBET01BZ2Vu
dC5yZW1vdmVOb2RlKHRoaXMuaWQsIHRoaXMuX21ha2VVbmRvYWJsZUNhbGxiYWNrKGNhbGxiYWNr
KSk7CkBAIC00NDIsOSArMzUxLDYgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0g
ewogICAgICAgICBET01BZ2VudC5nZXRPdXRlckhUTUwodGhpcy5pZCwgY29weSk7CiAgICAgfSwK
IAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP1Byb3RvY29sLkVycm9yKT19IGNh
bGxiYWNrCi0gICAgICovCiAgICAgZXZlbnRMaXN0ZW5lcnM6IGZ1bmN0aW9uKGNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgRE9NQWdlbnQuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKHRoaXMuaWQs
IGNhbGxiYWNrKTsKQEAgLTQ4OSw5ICszOTUsNiBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIERPTUFnZW50LmdldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9y
Tm9kZSh0aGlzLmlkLCBhY2Nlc3NpYmlsaXR5UHJvcGVydGllc0NhbGxiYWNrLmJpbmQodGhpcykp
OwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtzdHJpbmd9Ci0gICAgICovCiAg
ICAgcGF0aDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIHBhdGggPSBbXTsKQEAgLTUw
NCwxMCArNDA3LDYgQEAgV2ViSW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gcGF0aC5qb2luKCIsIik7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJh
bSB7Ym9vbGVhbn0ganVzdFNlbGVjdG9yCi0gICAgICogQHJldHVybiB7c3RyaW5nfQotICAgICAq
LwogICAgIGFwcHJvcHJpYXRlU2VsZWN0b3JGb3I6IGZ1bmN0aW9uKGp1c3RTZWxlY3RvcikKICAg
ICB7CiAgICAgICAgIHZhciBsb3dlckNhc2VOYW1lID0gdGhpcy5sb2NhbE5hbWUoKSB8fCB0aGlz
Lm5vZGVOYW1lKCkudG9Mb3dlckNhc2UoKTsKQEAgLTUzNCwxMCArNDMzLDYgQEAgV2ViSW5zcGVj
dG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gbG93ZXJDYXNlTmFtZTsK
ICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuRE9NTm9kZX0g
bm9kZQotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCiAgICAgaXNBbmNlc3Rvcjog
ZnVuY3Rpb24obm9kZSkKICAgICB7CiAgICAgICAgIGlmICghbm9kZSkKQEAgLTU1MiwxOCArNDQ3
LDExIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5E
T01Ob2RlfSBkZXNjZW5kYW50Ci0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAgKi8KICAg
ICBpc0Rlc2NlbmRhbnQ6IGZ1bmN0aW9uKGRlc2NlbmRhbnQpCiAgICAgewogICAgICAgICByZXR1
cm4gZGVzY2VuZGFudCAhPT0gbnVsbCAmJiBkZXNjZW5kYW50LmlzQW5jZXN0b3IodGhpcyk7CiAg
ICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGF0dHJzCi0g
ICAgICovCiAgICAgX3NldEF0dHJpYnV0ZXNQYXlsb2FkOiBmdW5jdGlvbihhdHRycykKICAgICB7
CiAgICAgICAgIHRoaXMuX2F0dHJpYnV0ZXMgPSBbXTsKQEAgLTU3MiwxMSArNDYwLDYgQEAgV2Vi
SW5zcGVjdG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhpcy5fYWRkQXR0
cmlidXRlKGF0dHJzW2ldLCBhdHRyc1tpICsgMV0pOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5ET01Ob2RlfSBwcmV2Ci0gICAgICogQHBhcmFtIHtET01B
Z2VudC5Ob2RlfSBwYXlsb2FkCi0gICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkRPTU5vZGV9
Ci0gICAgICovCiAgICAgX2luc2VydENoaWxkOiBmdW5jdGlvbihwcmV2LCBwYXlsb2FkKQogICAg
IHsKICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTU5vZGUodGhpcy5fZG9t
QWdlbnQsIHRoaXMub3duZXJEb2N1bWVudCwgdGhpcy5faXNJblNoYWRvd1RyZWUsIHBheWxvYWQp
OwpAQCAtNTkyLDkgKzQ3NSw2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLkRPTU5vZGV9IG5vZGUKLSAgICAgKi8KICAgICBfcmVtb3ZlQ2hpbGQ6IGZ1
bmN0aW9uKG5vZGUpCiAgICAgewogICAgICAgICB0aGlzLl9jaGlsZHJlbi5zcGxpY2UodGhpcy5f
Y2hpbGRyZW4uaW5kZXhPZihub2RlKSwgMSk7CkBAIC02MDIsOSArNDgyLDYgQEAgV2ViSW5zcGVj
dG9yLkRPTU5vZGUucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZW51bWJlcigpOwogICAg
IH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxET01BZ2VudC5Ob2RlPn0gcGF5
bG9hZHMKLSAgICAgKi8KICAgICBfc2V0Q2hpbGRyZW5QYXlsb2FkOiBmdW5jdGlvbihwYXlsb2Fk
cykKICAgICB7CiAgICAgICAgIC8vIFdlIHNldCBjaGlsZHJlbiBpbiB0aGUgY29uc3RydWN0b3Iu
CkBAIC02MzcsMTAgKzUxNCw2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgfQogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFt
ZQotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZQotICAgICAqLwogICAgIF9hZGRBdHRyaWJ1
dGU6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKQogICAgIHsKICAgICAgICAgdmFyIGF0dHIgPSB7CkBA
IC02NTIsMTAgKzUyNSw2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5fYXR0cmlidXRlcy5wdXNoKGF0dHIpOwogICAgIH0sCiAKLSAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZQotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZQot
ICAgICAqLwogICAgIF9zZXRBdHRyaWJ1dGU6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKQogICAgIHsK
ICAgICAgICAgdmFyIGF0dHIgPSB0aGlzLl9hdHRyaWJ1dGVzTWFwW25hbWVdOwpAQCAtNjY1LDkg
KzUzNCw2IEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHRoaXMuX2FkZEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7CiAgICAgfSwKIAotICAgIC8qKgotICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lCi0gICAgICovCiAgICAgX3JlbW92ZUF0dHJpYnV0ZTog
ZnVuY3Rpb24obmFtZSkKICAgICB7CiAgICAgICAgIHZhciBhdHRyID0gdGhpcy5fYXR0cmlidXRl
c01hcFtuYW1lXTsKQEAgLTY3NywxOSArNTQzLDExIEBAIFdlYkluc3BlY3Rvci5ET01Ob2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5ET01Ob2RlfSB0YXJnZXROb2RlCi0gICAgICogQHBhcmFtIHs/V2ViSW5z
cGVjdG9yLkRPTU5vZGV9IGFuY2hvck5vZGUKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9Qcm90
b2NvbC5FcnJvcik9fSBjYWxsYmFjawotICAgICAqLwogICAgIG1vdmVUbzogZnVuY3Rpb24odGFy
Z2V0Tm9kZSwgYW5jaG9yTm9kZSwgY2FsbGJhY2spCiAgICAgewogICAgICAgICBET01BZ2VudC5t
b3ZlVG8odGhpcy5pZCwgdGFyZ2V0Tm9kZS5pZCwgYW5jaG9yTm9kZSA/IGFuY2hvck5vZGUuaWQg
OiB1bmRlZmluZWQsIHRoaXMuX21ha2VVbmRvYWJsZUNhbGxiYWNrKGNhbGxiYWNrKSk7CiAgICAg
fSwKIAotICAgIC8qKgotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCiAgICAgaXNY
TUxOb2RlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gISF0aGlzLm93bmVyRG9j
dW1lbnQgJiYgISF0aGlzLm93bmVyRG9jdW1lbnQueG1sVmVyc2lvbjsKQEAgLTY5OSw3ICs1NTcs
NyBAQCBXZWJJbnNwZWN0b3IuRE9NTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZW5hYmxlZFBzZXVkb0NsYXNzZXM7CiAgICAgfSwKLSAgICAKKwogICAgIHNl
dFBzZXVkb0NsYXNzRW5hYmxlZDogZnVuY3Rpb24ocHNldWRvQ2xhc3MsIGVuYWJsZWQpCiAgICAg
ewogICAgICAgICB2YXIgcHNldWRvQ2xhc3NlcyA9IHRoaXMuX2VuYWJsZWRQc2V1ZG9DbGFzc2Vz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L1NvdXJjZU1hcC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9Tb3VyY2VNYXAuanMKaW5kZXggYjkxMGJhYS4uMjkzYTA0MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1NvdXJjZU1hcC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU291cmNlTWFwLmpzCkBA
IC0yMywxNCArMjMsNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICov
CiAKLS8qKgotICogSW1wbGVtZW50cyBTb3VyY2UgTWFwIFYzIG1vZGVsLiBTZWUgaHR0cDovL2Nv
ZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1cmUtY29tcGlsZXIvd2lraS9Tb3VyY2VNYXBzCi0gKiBmb3Ig
Zm9ybWF0IGRlc2NyaXB0aW9uLgotICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge3N0cmluZ30g
c291cmNlTWFwcGluZ1VSTAotICogQHBhcmFtIHtTb3VyY2VNYXBWM30gcGF5bG9hZAotICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2V8V2ViSW5zcGVjdG9yLlNjcmlwdH0gb3JpZ2luYWxT
b3VyY2VDb2RlCi0gKi8KIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXAgPSBmdW5jdGlvbihzb3VyY2VN
YXBwaW5nVVJMLCBwYXlsb2FkLCBvcmlnaW5hbFNvdXJjZUNvZGUpCiB7CiAgICAgaWYgKCFXZWJJ
bnNwZWN0b3IuU291cmNlTWFwLnByb3RvdHlwZS5fYmFzZTY0TWFwKSB7CkBAIC0xMDEsMjYgKzkz
LDE2IEBAIFdlYkluc3BlY3Rvci5Tb3VyY2VNYXAucHJvdG90eXBlID0gewogICAgICAgICByZXR1
cm4gdGhpcy5fc291cmNlTWFwUmVzb3VyY2VzW3VybF07CiAgICAgfSwKIAotICAgIC8qKgotICAg
ICAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fQotICAgICAqLwogICAgIHNvdXJjZXM6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9zb3VyY2VzKTsK
ICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVSTAotICAg
ICAqIEByZXR1cm4ge3N0cmluZ3x1bmRlZmluZWR9Ci0gICAgICovCiAgICAgc291cmNlQ29udGVu
dDogZnVuY3Rpb24oc291cmNlVVJMKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJj
ZUNvbnRlbnRCeVVSTFtzb3VyY2VVUkxdOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge1NvdXJjZU1hcFYzfSBtYXBwaW5nUGF5bG9hZAotICAgICAqLwogICAgIF9wYXJzZU1hcHBp
bmdQYXlsb2FkOiBmdW5jdGlvbihtYXBwaW5nUGF5bG9hZCkKICAgICB7CiAgICAgICAgIGlmICht
YXBwaW5nUGF5bG9hZC5zZWN0aW9ucykKQEAgLTEyOSw5ICsxMTEsNiBAQCBXZWJJbnNwZWN0b3Iu
U291cmNlTWFwLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMuX3BhcnNlTWFwKG1hcHBp
bmdQYXlsb2FkLCAwLCAwKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtBcnJh
eS48U291cmNlTWFwVjMuU2VjdGlvbj59IHNlY3Rpb25zCi0gICAgICovCiAgICAgX3BhcnNlU2Vj
dGlvbnM6IGZ1bmN0aW9uKHNlY3Rpb25zKQogICAgIHsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzZWN0aW9ucy5sZW5ndGg7ICsraSkgewpAQCAtMTQwLDExICsxMTksNiBAQCBXZWJJbnNw
ZWN0b3IuU291cmNlTWFwLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICAv
KioKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51bWJlciBpbiBjb21waWxlZCByZXNvdXJj
ZQotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIgaW4gY29tcGlsZWQgcmVzb3Vy
Y2UKLSAgICAgKiBAcmV0dXJuIHs/QXJyYXl9Ci0gICAgICovCiAgICAgZmluZEVudHJ5OiBmdW5j
dGlvbihsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpCiAgICAgewogICAgICAgICB2YXIgZmlyc3Qg
PSAwOwpAQCAtMTY2LDExICsxNDAsNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlTWFwLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgcmV0dXJuIGVudHJ5OwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBA
cGFyYW0ge3N0cmluZ30gc291cmNlVVJMIG9mIHRoZSBvcmlnaW5hdGluZyByZXNvdXJjZQotICAg
ICAqIEBwYXJhbSB7bnVtYmVyfSBsaW5lTnVtYmVyIGluIHRoZSBvcmlnaW5hdGluZyByZXNvdXJj
ZQotICAgICAqIEByZXR1cm4ge0FycmF5fQotICAgICAqLwogICAgIGZpbmRFbnRyeVJldmVyc2Vk
OiBmdW5jdGlvbihzb3VyY2VVUkwsIGxpbmVOdW1iZXIpCiAgICAgewogICAgICAgICB2YXIgbWFw
cGluZ3MgPSB0aGlzLl9yZXZlcnNlTWFwcGluZ3NCeVNvdXJjZVVSTFtzb3VyY2VVUkxdOwpAQCAt
MTgyLDExICsxNTEsNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlTWFwLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX21hcHBpbmdzWzBdOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAg
KiBAcGFyYW0ge1NvdXJjZU1hcFYzfSBtYXAKLSAgICAgKiBAcGFyYW0ge251bWJlcn0gbGluZU51
bWJlcgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjb2x1bW5OdW1iZXIKLSAgICAgKi8KICAgICBf
cGFyc2VNYXA6IGZ1bmN0aW9uKG1hcCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKQogICAgIHsK
ICAgICAgICAgdmFyIHNvdXJjZUluZGV4ID0gMDsKQEAgLTI2MSwxOSArMjI1LDExIEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VNYXAucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAg
IC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFyCi0gICAgICogQHJldHVybiB7Ym9vbGVh
bn0KLSAgICAgKi8KICAgICBfaXNTZXBhcmF0b3I6IGZ1bmN0aW9uKGNoYXIpCiAgICAgewogICAg
ICAgICByZXR1cm4gY2hhciA9PT0gIiwiIHx8IGNoYXIgPT09ICI7IjsKICAgICB9LAogCi0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU291cmNlTWFwLlN0cmluZ0NoYXJJdGVy
YXRvcn0gc3RyaW5nQ2hhckl0ZXJhdG9yCi0gICAgICogQHJldHVybiB7bnVtYmVyfQotICAgICAq
LwogICAgIF9kZWNvZGVWTFE6IGZ1bmN0aW9uKHN0cmluZ0NoYXJJdGVyYXRvcikKICAgICB7CiAg
ICAgICAgIC8vIFJlYWQgdW5zaWduZWQgdmFsdWUuCkBAIC0yOTYsMTAgKzI1Miw2IEBAIFdlYklu
c3BlY3Rvci5Tb3VyY2VNYXAucHJvdG90eXBlID0gewogICAgIF9WTFFfQ09OVElOVUFUSU9OX01B
U0s6IDEgPDwgNQogfQogCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtzdHJpbmd9
IHN0cmluZwotICovCiBXZWJJbnNwZWN0b3IuU291cmNlTWFwLlN0cmluZ0NoYXJJdGVyYXRvciA9
IGZ1bmN0aW9uKHN0cmluZykKIHsKICAgICB0aGlzLl9zdHJpbmcgPSBzdHJpbmc7CkBAIC0zMDcs
MjUgKzI1OSwxNiBAQCBXZWJJbnNwZWN0b3IuU291cmNlTWFwLlN0cmluZ0NoYXJJdGVyYXRvciA9
IGZ1bmN0aW9uKHN0cmluZykKIH0KIAogV2ViSW5zcGVjdG9yLlNvdXJjZU1hcC5TdHJpbmdDaGFy
SXRlcmF0b3IucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEByZXR1cm4ge3N0cmluZ30K
LSAgICAgKi8KICAgICBuZXh0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhp
cy5fc3RyaW5nLmNoYXJBdCh0aGlzLl9wb3NpdGlvbisrKTsKICAgICB9LAogCi0gICAgLyoqCi0g
ICAgICogQHJldHVybiB7c3RyaW5nfQotICAgICAqLwogICAgIHBlZWs6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdHJpbmcuY2hhckF0KHRoaXMuX3Bvc2l0aW9uKTsK
ICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAgKi8KICAg
ICBoYXNOZXh0OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRp
b24gPCB0aGlzLl9zdHJpbmcubGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Byb3RvY29sL0luc3BlY3RvckJhY2tlbmQuanMK
aW5kZXggOGYxOTJlMy4uNjQzNzNhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvSW5zcGVjdG9yQmFja2VuZC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Qcm90b2NvbC9JbnNwZWN0b3JCYWNrZW5kLmpz
CkBAIC0zMCw5ICszMCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8qKgotICogQGNvbnN0
cnVjdG9yCi0gKi8KIGZ1bmN0aW9uIEluc3BlY3RvckJhY2tlbmRDbGFzcygpCiB7CiAgICAgdGhp
cy5fbGFzdFNlcXVlbmNlSWQgPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvUHJvdG9jb2wvUmVtb3RlT2JqZWN0LmpzCmluZGV4IDlhOWEx
ZDMuLjAyMjliMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1Byb3RvY29sL1JlbW90ZU9iamVjdC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Qcm90b2NvbC9SZW1vdGVPYmplY3QuanMKQEAgLTI4LDE0ICsyOCw2IEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0g
e3N0cmluZ3x1bmRlZmluZWR9IG9iamVjdElkCi0gKiBAcGFyYW0ge3N0cmluZ30gdHlwZQotICog
QHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSBzdWJ0eXBlCi0gKiBAcGFyYW0geyp9IHZhbHVlCi0g
KiBAcGFyYW0ge3N0cmluZz19IGRlc2NyaXB0aW9uCi0gKi8KIFdlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3QgPSBmdW5jdGlvbihvYmplY3RJZCwgdHlwZSwgc3VidHlwZSwgdmFsdWUsIGRlc2NyaXB0
aW9uKQogewogICAgIHRoaXMuX3R5cGUgPSB0eXBlOwpAQCAtNTQsMzUgKzQ2LDE4IEBAIFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QgPSBmdW5jdGlvbihvYmplY3RJZCwgdHlwZSwgc3VidHlwZSwg
dmFsdWUsIGRlc2NyaXB0aW9uCiAgICAgfQogfQogCi0vKioKLSAqIEBwYXJhbSB7bnVtYmVyfHN0
cmluZ3xib29sZWFufSB2YWx1ZQotICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVj
dH0KLSAqLwogV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUHJpbWl0aXZlVmFsdWUgPSBm
dW5jdGlvbih2YWx1ZSkKIHsKICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5SZW1vdGVPYmpl
Y3QodW5kZWZpbmVkLCB0eXBlb2YgdmFsdWUsIHVuZGVmaW5lZCwgdmFsdWUpOwogfQogCi0vKioK
LSAqIEBwYXJhbSB7T2JqZWN0fSB2YWx1ZQotICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlJlbW90
ZU9iamVjdH0KLSAqLwogV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tTG9jYWxPYmplY3Qg
PSBmdW5jdGlvbih2YWx1ZSkKIHsKICAgICByZXR1cm4gbmV3IFdlYkluc3BlY3Rvci5Mb2NhbEpT
T05PYmplY3QodmFsdWUpOwogfQogCi0vKioKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkRPTU5v
ZGV9IG5vZGUKLSAqIEBwYXJhbSB7c3RyaW5nfSBvYmplY3RHcm91cAotICogQHBhcmFtIHtmdW5j
dGlvbig/V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCl9IGNhbGxiYWNrCi0gKi8KIFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUgPSBmdW5jdGlvbihub2RlLCBvYmplY3RHcm91
cCwgY2FsbGJhY2spCiB7Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9
IGVycm9yCi0gICAgICogQHBhcmFtIHtSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0fSBvYmplY3QK
LSAgICAgKi8KICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKGVycm9yLCBvYmplY3QpCiAgICAgewog
ICAgICAgICBpZiAoIWNhbGxiYWNrKQpAQCAtOTYsMTAgKzcxLDYgQEAgV2ViSW5zcGVjdG9yLlJl
bW90ZU9iamVjdC5yZXNvbHZlTm9kZSA9IGZ1bmN0aW9uKG5vZGUsIG9iamVjdEdyb3VwLCBjYWxs
YmFjaykKICAgICBET01BZ2VudC5yZXNvbHZlTm9kZShub2RlLmlkLCBvYmplY3RHcm91cCwgbXlj
YWxsYmFjayk7CiB9CiAKLS8qKgotICogQHBhcmFtIHtSdW50aW1lQWdlbnQuUmVtb3RlT2JqZWN0
fSBwYXlsb2FkCi0gKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0fQotICovCiBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LmZyb21QYXlsb2FkID0gZnVuY3Rpb24ocGF5bG9hZCkK
IHsKICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgcGF5bG9hZCA9PT0gIm9iamVjdCIsICJSZW1v
dGUgb2JqZWN0IHBheWxvYWQgc2hvdWxkIG9ubHkgYmUgYW4gb2JqZWN0Iik7CkBAIC0xMDcsMTAg
Kzc4LDYgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZCA9IGZ1bmN0aW9u
KHBheWxvYWQpCiAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0KHBheWxv
YWQub2JqZWN0SWQsIHBheWxvYWQudHlwZSwgcGF5bG9hZC5zdWJ0eXBlLCBwYXlsb2FkLnZhbHVl
LCBwYXlsb2FkLmRlc2NyaXB0aW9uKTsKIH0KIAotLyoqCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5SZW1vdGVPYmplY3R9IHJlbW90ZU9iamVjdAotICogQHJldHVybiB7c3RyaW5nfQotICovCiBX
ZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnR5cGUgPSBmdW5jdGlvbihyZW1vdGVPYmplY3QpCiB7
CiAgICAgaWYgKHJlbW90ZU9iamVjdCA9PT0gbnVsbCkKQEAgLTEyNCw1NiArOTEsNDEgQEAgV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdC50eXBlID0gZnVuY3Rpb24ocmVtb3RlT2JqZWN0KQogfQog
CiBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnByb3RvdHlwZSA9IHsKLSAgICAvKiogQHJldHVy
biB7UnVudGltZUFnZW50LlJlbW90ZU9iamVjdElkfSAqLwogICAgIGdldCBvYmplY3RJZCgpCiAg
ICAgewogICAgICAgICByZXR1cm4gdGhpcy5fb2JqZWN0SWQ7CiAgICAgfSwKIAotICAgIC8qKiBA
cmV0dXJuIHtzdHJpbmd9ICovCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX3R5cGU7CiAgICAgfSwKIAotICAgIC8qKiBAcmV0dXJuIHtzdHJpbmd8dW5kZWZpbmVk
fSAqLwogICAgIGdldCBzdWJ0eXBlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9zdWJ0
eXBlOwogICAgIH0sCiAKLSAgICAvKiogQHJldHVybiB7c3RyaW5nfHVuZGVmaW5lZH0gKi8KICAg
ICBnZXQgZGVzY3JpcHRpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2Rlc2NyaXB0
aW9uOwogICAgIH0sCiAKLSAgICAvKiogQHJldHVybiB7Ym9vbGVhbn0gKi8KICAgICBnZXQgaGFz
Q2hpbGRyZW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0NoaWxkcmVuOwogICAg
IH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJbnNwZWN0
b3IuUmVtb3RlT2JqZWN0UHJvcGVydHk+KX0gY2FsbGJhY2sKLSAgICAgKi8KICAgICBnZXRPd25Q
cm9wZXJ0aWVzOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIHRoaXMuX2dldFBy
b3BlcnRpZXModHJ1ZSwgY2FsbGJhY2spOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJvcGVydHk+KX0g
Y2FsbGJhY2sKLSAgICAgKi8KICAgICBnZXRBbGxQcm9wZXJ0aWVzOiBmdW5jdGlvbihjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIHRoaXMuX2dldFByb3BlcnRpZXMoZmFsc2UsIGNhbGxiYWNrKTsK
ICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtib29sZWFufSBvd25Qcm9wZXJ0aWVz
Ci0gICAgICogQHBhcmFtIHtmdW5jdGlvbihBcnJheS48UnVudGltZUFnZW50LlJlbW90ZU9iamVj
dD4pfSBjYWxsYmFjawotICAgICAqLwogICAgIF9nZXRQcm9wZXJ0aWVzOiBmdW5jdGlvbihvd25Q
cm9wZXJ0aWVzLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fb2JqZWN0SWQp
IHsKQEAgLTE4MSwxMCArMTMzLDYgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICAvKioKLSAg
ICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCi0gICAgICAgICAqIEBwYXJh
bSB7QXJyYXkuPFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eT59IHByb3BlcnRpZXMK
LSAgICAgICAgICovCiAgICAgICAgIGZ1bmN0aW9uIHJlbW90ZU9iamVjdEJpbmRlcihlcnJvciwg
cHJvcGVydGllcykKICAgICAgICAgewogICAgICAgICAgICAgaWYgKGVycm9yKSB7CkBAIC0yMDcs
MTEgKzE1NSw2IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAg
ICAgICBSdW50aW1lQWdlbnQuZ2V0UHJvcGVydGllcyh0aGlzLl9vYmplY3RJZCwgb3duUHJvcGVy
dGllcywgcmVtb3RlT2JqZWN0QmluZGVyKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBh
cmFtIHtzdHJpbmd9IG5hbWUKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUKLSAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKHN0cmluZz0pfSBjYWxsYmFjawotICAgICAqLwogICAgIHNldFByb3Bl
cnR5VmFsdWU6IGZ1bmN0aW9uKG5hbWUsIHZhbHVlLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5fb2JqZWN0SWQpIHsKQEAgLTIyMSwxMSArMTY0LDYgQEAgV2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgUnVudGltZUFnZW50LmV2YWx1
YXRlLmludm9rZSh7ZXhwcmVzc2lvbjp2YWx1ZSwgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlOnRydWV9LCBldmFsdWF0ZWRDYWxsYmFjay5iaW5kKHRoaXMpKTsKIAotICAgICAg
ICAvKioKLSAgICAgICAgICogQHBhcmFtIHs/UHJvdG9jb2wuRXJyb3J9IGVycm9yCi0gICAgICAg
ICAqIEBwYXJhbSB7UnVudGltZUFnZW50LlJlbW90ZU9iamVjdH0gcmVzdWx0Ci0gICAgICAgICAq
IEBwYXJhbSB7Ym9vbGVhbj19IHdhc1Rocm93bgotICAgICAgICAgKi8KICAgICAgICAgZnVuY3Rp
b24gZXZhbHVhdGVkQ2FsbGJhY2soZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoZXJyb3IgfHwgd2FzVGhyb3duKSB7CkBAIC0yNDQsMTEgKzE4Miw2
IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgIFJ1bnRpbWVBZ2VudC5yZWxlYXNlT2JqZWN0KHJlc3VsdC5fb2JqZWN0SWQpOwogICAgICAg
ICB9CiAKLSAgICAgICAgLyoqCi0gICAgICAgICAqIEBwYXJhbSB7P1Byb3RvY29sLkVycm9yfSBl
cnJvcgotICAgICAgICAgKiBAcGFyYW0ge1J1bnRpbWVBZ2VudC5SZW1vdGVPYmplY3R9IHJlc3Vs
dAotICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSB3YXNUaHJvd24KLSAgICAgICAgICovCiAg
ICAgICAgIGZ1bmN0aW9uIHByb3BlcnR5U2V0Q2FsbGJhY2soZXJyb3IsIHJlc3VsdCwgd2FzVGhy
b3duKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoZXJyb3IgfHwgd2FzVGhyb3duKSB7CkBA
IC0yNTksOSArMTkyLDYgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbihE
T01BZ2VudC5Ob2RlSWQpfSBjYWxsYmFjawotICAgICAqLwogICAgIHB1c2hOb2RlVG9Gcm9udGVu
ZDogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewogICAgICAgICBpZiAodGhpcy5fb2JqZWN0SWQp
CkBAIC0yNzAsMTAgKzIwMCw2IEBAIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgY2FsbGJhY2soMCk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAq
IEBwYXJhbSB7c3RyaW5nfSBmdW5jdGlvbkRlY2xhcmF0aW9uCi0gICAgICogQHBhcmFtIHtmdW5j
dGlvbig/V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdCl9IGNhbGxiYWNrCi0gICAgICovCiAgICAg
Y2FsbEZ1bmN0aW9uOiBmdW5jdGlvbihmdW5jdGlvbkRlY2xhcmF0aW9uLCBhcmdzLCBjYWxsYmFj
aykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIG15Y2FsbGJhY2soZXJyb3IsIHJlc3VsdCwgd2Fz
VGhyb3duKQpAQCAtMjg0LDEwICsyMTAsNiBAQCBXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgUnVudGltZUFnZW50LmNhbGxGdW5jdGlvbk9uKHRoaXMuX29i
amVjdElkLCBmdW5jdGlvbkRlY2xhcmF0aW9uLnRvU3RyaW5nKCksIGFyZ3MsIHRydWUsIHVuZGVm
aW5lZCwgbXljYWxsYmFjayk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3Ry
aW5nfSBmdW5jdGlvbkRlY2xhcmF0aW9uCi0gICAgICogQHBhcmFtIHtmdW5jdGlvbigqKX0gY2Fs
bGJhY2sKLSAgICAgKi8KICAgICBjYWxsRnVuY3Rpb25KU09OOiBmdW5jdGlvbihmdW5jdGlvbkRl
Y2xhcmF0aW9uLCBhcmdzLCBjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGZ1bmN0aW9uIG15Y2Fs
bGJhY2soZXJyb3IsIHJlc3VsdCwgd2FzVGhyb3duKQpAQCAtMzAzLDkgKzIyNSw2IEBAIFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3QucHJvdG90eXBlID0gewogICAgICAgICBSdW50aW1lQWdlbnQu
cmVsZWFzZU9iamVjdCh0aGlzLl9vYmplY3RJZCk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAq
IEByZXR1cm4ge251bWJlcn0KLSAgICAgKi8KICAgICBhcnJheUxlbmd0aDogZnVuY3Rpb24oKQog
ICAgIHsKICAgICAgICAgaWYgKHRoaXMuc3VidHlwZSAhPT0gImFycmF5IikKQEAgLTMxOCwxMiAr
MjM3LDYgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdC5wcm90b3R5cGUgPSB7CiAgICAgfQog
fQogCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKLSAqIEBw
YXJhbSB7V2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdH0gdmFsdWUgCi0gKiBAcGFyYW0ge09iamVj
dD19IGRlc2NyaXB0b3IKLSAqLwogV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5ID0g
ZnVuY3Rpb24obmFtZSwgdmFsdWUsIGRlc2NyaXB0b3IpCiB7CiAgICAgdGhpcy5uYW1lID0gbmFt
ZTsKQEAgLTMzNCwxMSArMjQ3LDYgQEAgV2ViSW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5
ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUsIGRlc2NyaXB0b3IpCiAgICAgICAgIHRoaXMud2FzVGhy
b3duID0gdHJ1ZTsKIH0KIAotLyoqCi0gKiBAcGFyYW0ge3N0cmluZ30gbmFtZQotICogQHBhcmFt
IHtzdHJpbmd9IHZhbHVlCi0gKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJv
cGVydHl9Ci0gKi8KIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eS5mcm9tUHJpbWl0
aXZlVmFsdWUgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkKIHsKICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5SZW1vdGVPYmplY3RQcm9wZXJ0eShuYW1lLCBXZWJJbnNwZWN0b3IuUmVtb3RlT2Jq
ZWN0LmZyb21QcmltaXRpdmVWYWx1ZSh2YWx1ZSkpOwpAQCAtMzUwLDIwICsyNTgsMTIgQEAgV2Vi
SW5zcGVjdG9yLlJlbW90ZU9iamVjdFByb3BlcnR5LmZyb21QcmltaXRpdmVWYWx1ZSA9IGZ1bmN0
aW9uKG5hbWUsIHZhbHVlKQogLy8gZm9yIHRyYXZlcnNpbmcgcHJvdG90eXBlcywgZXh0cmFjdGlu
ZyBjbGFzcyBuYW1lcyB2aWEgY29uc3R1Y3RvciwgaGFuZGxpbmcgcHJvcGVydGllcwogLy8gb3Ig
ZnVuY3Rpb25zLgogCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3R9Ci0gKiBAcGFyYW0ge09iamVjdH0gdmFsdWUKLSAqLwogV2ViSW5z
cGVjdG9yLkxvY2FsSlNPTk9iamVjdCA9IGZ1bmN0aW9uKHZhbHVlKQogewogICAgIHRoaXMuX3Zh
bHVlID0gdmFsdWU7CiB9CiAKIFdlYkluc3BlY3Rvci5Mb2NhbEpTT05PYmplY3QucHJvdG90eXBl
ID0gewotICAgIC8qKgotICAgICAqIEByZXR1cm4ge3N0cmluZ30KLSAgICAgKi8KICAgICBnZXQg
ZGVzY3JpcHRpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2NhY2hlZERlc2NyaXB0aW9u
KQpAQCAtMzk0LDExICsyOTQsNiBAQCBXZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2NhY2hlZERlc2NyaXB0aW9uOwogICAgIH0s
CiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4Ci0gICAgICogQHBhcmFt
IHtzdHJpbmd9IHN1ZmZpeAotICAgICAqIEByZXR1cm4ge3N0cmluZ30KLSAgICAgKi8KICAgICBf
Y29uY2F0ZW5hdGU6IGZ1bmN0aW9uKHByZWZpeCwgc3VmZml4LCBmb3JtYXRQcm9wZXJ0eSkKICAg
ICB7CiAgICAgICAgIGNvbnN0IHByZXZpZXdDaGFycyA9IDEwMDsKQEAgLTQxOSwxNyArMzE0LDEx
IEBAIFdlYkluc3BlY3Rvci5Mb2NhbEpTT05PYmplY3QucHJvdG90eXBlID0gewogICAgICAgICBy
ZXR1cm4gYnVmZmVyOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtzdHJpbmd9
Ci0gICAgICovCiAgICAgZ2V0IHR5cGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHR5cGVvZiB0
aGlzLl92YWx1ZTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7c3RyaW5nfHVu
ZGVmaW5lZH0KLSAgICAgKi8KICAgICBnZXQgc3VidHlwZSgpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fdmFsdWUgPT09IG51bGwpCkBAIC00NDEsMzMgKzMzMCwyMSBAQCBXZWJJbnNwZWN0b3Iu
TG9jYWxKU09OT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsK
ICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAgKi8KICAg
ICBnZXQgaGFzQ2hpbGRyZW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLl92
YWx1ZSA9PT0gIm9iamVjdCIgJiYgdGhpcy5fdmFsdWUgIT09IG51bGwgJiYgIWlzRW1wdHlPYmpl
Y3QodGhpcy5fdmFsdWUpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKEFycmF5LjxXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0UHJvcGVydHk+KX0gY2FsbGJhY2sK
LSAgICAgKi8KICAgICBnZXRPd25Qcm9wZXJ0aWVzOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7
CiAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2NoaWxkcmVuKCkpOwogICAgIH0sCiAKLSAgICAvKioK
LSAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEFycmF5LjxXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0
UHJvcGVydHk+KX0gY2FsbGJhY2sKLSAgICAgKi8KICAgICBnZXRBbGxQcm9wZXJ0aWVzOiBmdW5j
dGlvbihjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGNhbGxiYWNrKHRoaXMuX2NoaWxkcmVuKCkp
OwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9y
LlJlbW90ZU9iamVjdFByb3BlcnR5Pn0KLSAgICAgKi8KICAgICBfY2hpbGRyZW46IGZ1bmN0aW9u
KCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5oYXNDaGlsZHJlbikKQEAgLTQ4Miw5ICszNTks
NiBAQCBXZWJJbnNwZWN0b3IuTG9jYWxKU09OT2JqZWN0LnByb3RvdHlwZSA9IHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2NhY2hlZENoaWxkcmVuOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBA
cmV0dXJuIHtib29sZWFufQotICAgICAqLwogICAgIGlzRXJyb3I6IGZ1bmN0aW9uKCkKICAgICB7
CiAgICAgICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25D
YWNoZUZyYW1lQ29udGVudFZpZXcuanMKaW5kZXggNmZmNDkwZC4uOGUxNzIwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25D
YWNoZUZyYW1lQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZpZXcuanMKQEAgLTEw
OCw5ICsxMDgsNiBAQCBXZWJJbnNwZWN0b3IuQXBwbGljYXRpb25DYWNoZUZyYW1lQ29udGVudFZp
ZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cyhmcmFtZU1hbmlmZXN0
LnN0YXR1cyk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzdGF0
dXMKLSAgICAgKi8KICAgICB1cGRhdGVTdGF0dXM6IGZ1bmN0aW9uKHN0YXR1cykKICAgICB7CiAg
ICAgICAgIHZhciBvbGRTdGF0dXMgPSB0aGlzLl9zdGF0dXM7CkBAIC0xMjcsOSArMTI0LDYgQEAg
V2ViSW5zcGVjdG9yLkFwcGxpY2F0aW9uQ2FjaGVGcmFtZUNvbnRlbnRWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyLnJlcXVlc3RB
cHBsaWNhdGlvbkNhY2hlKHRoaXMuX2ZyYW1lLCB0aGlzLl91cGRhdGVDYWxsYmFjay5iaW5kKHRo
aXMpKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtPYmplY3R9IGFwcGxpY2F0
aW9uQ2FjaGUKLSAgICAgKi8KICAgICBfdXBkYXRlQ2FsbGJhY2s6IGZ1bmN0aW9uKGFwcGxpY2F0
aW9uQ2FjaGUpCiAgICAgewogICAgICAgICBpZiAoIWFwcGxpY2F0aW9uQ2FjaGUgfHwgIWFwcGxp
Y2F0aW9uQ2FjaGUubWFuaWZlc3RVUkwpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNzYWdlLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2UuanMKaW5kZXggNmM2
ZDI2OC4uNjY0NjE4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2UuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2UuanMKQEAgLTQzLDkgKzQzLDYgQEAg
V2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlID0gZnVuY3Rpb24oc291cmNlLCBsZXZlbCwgdXJs
LCBsaW5lLCBjb2x1bW4sIHJlcGVhdEMKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdl
LnByb3RvdHlwZSA9IHsKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAq
LwogICAgIGlzRXJyb3JPcldhcm5pbmc6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVy
biAodGhpcy5sZXZlbCA9PT0gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZl
bC5XYXJuaW5nIHx8IHRoaXMubGV2ZWwgPT09IFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZS5N
ZXNzYWdlTGV2ZWwuRXJyb3IpOwpAQCAtNTYsMjkgKzUzLDEyIEBAIFdlYkluc3BlY3Rvci5Db25z
b2xlTWVzc2FnZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IGNvbmNy
ZXRlIGluc3RhbmNlcwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNw
ZWN0b3IuQ29uc29sZU1lc3NhZ2V9Ci0gICAgICovCiAgICAgY2xvbmU6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IGNvbmNyZXRlIGluc3RhbmNlcwogICAgIH0K
IH0KIAotLyoqCi0gKiBAcGFyYW0ge3N0cmluZ30gc291cmNlCi0gKiBAcGFyYW0ge3N0cmluZ30g
bGV2ZWwKLSAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlCi0gKiBAcGFyYW0ge3N0cmluZz19IHR5
cGUKLSAqIEBwYXJhbSB7c3RyaW5nPX0gdXJsCi0gKiBAcGFyYW0ge251bWJlcj19IGxpbmUKLSAq
IEBwYXJhbSB7bnVtYmVyPX0gcmVwZWF0Q291bnQKLSAqIEBwYXJhbSB7QXJyYXkuPFJ1bnRpbWVB
Z2VudC5SZW1vdGVPYmplY3Q+PX0gcGFyYW1ldGVycwotICogQHBhcmFtIHtDb25zb2xlQWdlbnQu
U3RhY2tUcmFjZT19IHN0YWNrVHJhY2UKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlJlc291cmNl
PX0gcmVxdWVzdAotICoKLSAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZX0K
LSAqLwogV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZSA9IGZ1bmN0aW9uKHNvdXJj
ZSwgbGV2ZWwsIG1lc3NhZ2UsIHR5cGUsIHVybCwgbGluZSwgY29sdW1uLCByZXBlYXRDb3VudCwg
cGFyYW1ldGVycywgc3RhY2tUcmFjZSwgcmVxdWVzdCkKIHsKICAgICByZXR1cm4gbmV3IFdlYklu
c3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwoc291cmNlLCBsZXZlbCwgbWVzc2FnZSwgbnVsbCwg
dHlwZSwgdXJsLCBsaW5lLCBjb2x1bW4sIHJlcGVhdENvdW50LCBwYXJhbWV0ZXJzLCBzdGFja1Ry
YWNlLCByZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNzYWdlSW1wbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnNvbGVNZXNzYWdlSW1wbC5qcwppbmRleCBhZDljNTE5
Li40MTMyMmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db25zb2xlTWVzc2FnZUltcGwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29uc29sZU1lc3NhZ2VJbXBsLmpzCkBAIC0yNDMsOSArMjQz
LDYgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlSW1wbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiBmb3JtYXR0ZWRSZXN1bHQ7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBw
YXJhbSB7Ym9vbGVhbj19IGZvcmNlT2JqZWN0Rm9ybWF0Ci0gICAgICovCiAgICAgX2Zvcm1hdFBh
cmFtZXRlcjogZnVuY3Rpb24ob3V0cHV0LCBmb3JjZU9iamVjdEZvcm1hdCkKICAgICB7CiAgICAg
ICAgIHZhciB0eXBlOwpAQCAtNjYxLDkgKzY1OCw2IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVz
c2FnZUltcGwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fc3RhY2tUcmFjZTsK
ICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLkNvbnNvbGVN
ZXNzYWdlfQotICAgICAqLwogICAgIGNsb25lOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gV2ViSW5zcGVjdG9yLkNvbnNvbGVNZXNzYWdlLmNyZWF0ZSh0aGlzLnNvdXJjZSwgdGhp
cy5sZXZlbCwgdGhpcy5fbWVzc2FnZVRleHQsIHRoaXMudHlwZSwgdGhpcy51cmwsIHRoaXMubGlu
ZSwgdGhpcy5jb2x1bW4sIHRoaXMucmVwZWF0Q291bnQsIHRoaXMuX3BhcmFtZXRlcnMsIHRoaXMu
X3N0YWNrVHJhY2UsIHRoaXMuX3JlcXVlc3QpOwpAQCAtNjkzLDcgKzY4Nyw3IEBAIFdlYkluc3Bl
Y3Rvci5Db25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0gewogICAgIHRvQ2xpcGJvYXJkU3Ry
aW5nOiBmdW5jdGlvbihpc1ByZWZpeE9wdGlvbmFsKQogICAgIHsKICAgICAgICAgdmFyIGlzVHJh
Y2UgPSB0aGlzLl9zaG91bGREdW1wU3RhY2tUcmFjZSgpOwotICAgICAgICAKKwogICAgICAgICB2
YXIgY2xpcGJvYXJkU3RyaW5nID0gIiI7CiAgICAgICAgIGlmICh0aGlzLl9mb3JtYXR0ZWRNZXNz
YWdlICYmICFpc1RyYWNlKQogICAgICAgICAgICAgY2xpcGJvYXJkU3RyaW5nID0gdGhpcy5fZm9y
bWF0dGVkTWVzc2FnZS5xdWVyeVNlbGVjdG9yKCJzcGFuIikuaW5uZXJUZXh0OwpAQCAtNzIwLDcg
KzcxNCw3IEBAIFdlYkluc3BlY3Rvci5Db25zb2xlTWVzc2FnZUltcGwucHJvdG90eXBlID0gewog
ICAgICAgICAgICAgICAgIHVybExpbmUgPSAiICgiICsgY29tcG9uZW50cy5qb2luKCIsICIpICsg
IikiOwogICAgICAgICAgICAgfSBlbHNlIGlmIChyZXBlYXRTdHJpbmcpCiAgICAgICAgICAgICAg
ICAgdXJsTGluZSA9ICIgKCIgKyByZXBlYXRTdHJpbmcgKyAiKSI7Ci0gICAgICAgIAorCiAgICAg
ICAgICAgICBpZiAodXJsTGluZSkgewogICAgICAgICAgICAgICAgIHZhciBsaW5lcyA9IGNsaXBi
b2FyZFN0cmluZy5zcGxpdCgiXG4iKTsKICAgICAgICAgICAgICAgICBsaW5lc1swXSArPSB1cmxM
aW5lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29udGV4dE1lbnUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZXh0TWVudS5qcwppbmRleCAxNmM4NjJjLi45MzE5YzFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudS5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVu
dS5qcwpAQCAtMjksMTQgKzI5LDYgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLyoqCi0gKiBA
Y29uc3RydWN0b3IKLSAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbX0g
dG9wTGV2ZWxNZW51Ci0gKiBAcGFyYW0ge3N0cmluZ30gdHlwZQotICogQHBhcmFtIHtzdHJpbmc9
fSBsYWJlbAotICogQHBhcmFtIHtib29sZWFuPX0gZGlzYWJsZWQKLSAqIEBwYXJhbSB7Ym9vbGVh
bj19IGNoZWNrZWQKLSAqLwogV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbSA9IGZ1bmN0aW9u
KHRvcExldmVsTWVudSwgdHlwZSwgbGFiZWwsIGRpc2FibGVkLCBjaGVja2VkKQogewogICAgIHRo
aXMuX3R5cGUgPSB0eXBlOwpAQCAtNTksMTcgKzUxLDExIEBAIFdlYkluc3BlY3Rvci5Db250ZXh0
TWVudUl0ZW0ucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTsKICAgICB9
LAogCi0gICAgLyoqCi0gICAgICogQHJldHVybiB7Ym9vbGVhbn0KLSAgICAgKi8KICAgICBpc0Vu
YWJsZWQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiAhdGhpcy5fZGlzYWJsZWQ7
CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZAotICAg
ICAqLwogICAgIHNldEVuYWJsZWQ6IGZ1bmN0aW9uKGVuYWJsZWQpCiAgICAgewogICAgICAgICB0
aGlzLl9kaXNhYmxlZCA9ICFlbmFibGVkOwpAQCAtODgsMTMgKzc0LDYgQEAgV2ViSW5zcGVjdG9y
LkNvbnRleHRNZW51SXRlbS5wcm90b3R5cGUgPSB7CiAgICAgfQogfQogCi0vKioKLSAqIEBjb25z
dHJ1Y3RvcgotICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW19Ci0gKiBA
cGFyYW0gdG9wTGV2ZWxNZW51Ci0gKiBAcGFyYW0ge3N0cmluZz19IGxhYmVsCi0gKiBAcGFyYW0g
e2Jvb2xlYW49fSBkaXNhYmxlZAotICovCiBXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVt
ID0gZnVuY3Rpb24odG9wTGV2ZWxNZW51LCBsYWJlbCwgZGlzYWJsZWQpCiB7CiAgICAgV2ViSW5z
cGVjdG9yLkNvbnRleHRNZW51SXRlbS5jYWxsKHRoaXMsIHRvcExldmVsTWVudSwgInN1Yk1lbnUi
LCBsYWJlbCwgZGlzYWJsZWQpOwpAQCAtMTAyLDEyICs4MSw2IEBAIFdlYkluc3BlY3Rvci5Db250
ZXh0U3ViTWVudUl0ZW0gPSBmdW5jdGlvbih0b3BMZXZlbE1lbnUsIGxhYmVsLCBkaXNhYmxlZCkK
IH0KIAogV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUgPSB7Ci0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IGxhYmVsCi0gICAgICogQHBhcmFtIHtmdW5jdGlv
bn0gaGFuZGxlcgotICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGRpc2FibGVkCi0gICAgICogQHJl
dHVybiB7V2ViSW5zcGVjdG9yLkNvbnRleHRNZW51SXRlbX0KLSAgICAgKi8KICAgICBhcHBlbmRJ
dGVtOiBmdW5jdGlvbihsYWJlbCwgaGFuZGxlciwgZGlzYWJsZWQpCiAgICAgewogICAgICAgICB2
YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJdGVtKHRoaXMuX2NvbnRleHRN
ZW51LCAiaXRlbSIsIGxhYmVsLCBkaXNhYmxlZCk7CkBAIC0xMTYsMTEgKzg5LDYgQEAgV2ViSW5z
cGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBp
dGVtOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGFiZWwKLSAg
ICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBkaXNhYmxlZAotICAgICAqIEByZXR1cm4ge1dlYkluc3Bl
Y3Rvci5Db250ZXh0TWVudUl0ZW19Ci0gICAgICovCiAgICAgYXBwZW5kU3ViTWVudUl0ZW06IGZ1
bmN0aW9uKGxhYmVsLCBkaXNhYmxlZCkKICAgICB7CiAgICAgICAgIHZhciBpdGVtID0gbmV3IFdl
Ykluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0odGhpcy5fY29udGV4dE1lbnUsIGxhYmVsLCBk
aXNhYmxlZCk7CkBAIC0xMjgsOSArOTYsNiBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJ
dGVtLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGl0ZW07CiAgICAgfSwKIAotICAgIC8q
KgotICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGRpc2FibGVkCi0gICAgICovCiAgICAgYXBwZW5k
Q2hlY2tib3hJdGVtOiBmdW5jdGlvbihsYWJlbCwgaGFuZGxlciwgY2hlY2tlZCwgZGlzYWJsZWQp
CiAgICAgewogICAgICAgICB2YXIgaXRlbSA9IG5ldyBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnVJ
dGVtKHRoaXMuX2NvbnRleHRNZW51LCAiY2hlY2tib3giLCBsYWJlbCwgZGlzYWJsZWQsIGNoZWNr
ZWQpOwpAQCAtMTU0LDkgKzExOSw2IEBAIFdlYkluc3BlY3Rvci5Db250ZXh0U3ViTWVudUl0ZW0u
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9pdGVtcy5wdXNoKGl0ZW0pOwogICAgIH0sCiAK
LSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwogICAgIGlzRW1wdHk6
IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHJldHVybiAhdGhpcy5faXRlbXMubGVuZ3RoOwpA
QCAtMTczLDEwICsxMzUsNiBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtLnByb3Rv
dHlwZSA9IHsKICAgICBfX3Byb3RvX186IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudUl0ZW0ucHJv
dG90eXBlCiB9CiAKLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLkNvbnRleHRTdWJNZW51SXRlbX0KLSAqLwogV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51ID0g
ZnVuY3Rpb24oZXZlbnQpIHsKICAgICBXZWJJbnNwZWN0b3IuQ29udGV4dFN1Yk1lbnVJdGVtLmNh
bGwodGhpcywgdGhpcywgIiIpOwogICAgIHRoaXMuX2V2ZW50ID0gZXZlbnQ7CkBAIC0yNDUsOSAr
MjAzLDYgQEAgV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMuX2hhbmRsZXJzW2lkXS5jYWxsKHRoaXMpOwogICAgIH0sCiAKLSAgICAvKioKLSAg
ICAgKiBAcGFyYW0ge09iamVjdH0gdGFyZ2V0Ci0gICAgICovCiAgICAgYXBwZW5kQXBwbGljYWJs
ZUl0ZW1zOiBmdW5jdGlvbih0YXJnZXQpCiAgICAgewogICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IFdlYkluc3BlY3Rvci5Db250ZXh0TWVudS5fcHJvdmlkZXJzLmxlbmd0aDsgKytpKSB7CkBA
IC0yNjEsMjQgKzIxNiwxNCBAQCBXZWJJbnNwZWN0b3IuQ29udGV4dE1lbnUucHJvdG90eXBlID0g
ewogICAgIF9fcHJvdG9fXzogV2ViSW5zcGVjdG9yLkNvbnRleHRTdWJNZW51SXRlbS5wcm90b3R5
cGUKIH0KIAotLyoqCi0gKiBAaW50ZXJmYWNlCi0gKi8KIFdlYkluc3BlY3Rvci5Db250ZXh0TWVu
dS5Qcm92aWRlciA9IGZ1bmN0aW9uKCkKIHsKIH0KIAogV2ViSW5zcGVjdG9yLkNvbnRleHRNZW51
LlByb3ZpZGVyLnByb3RvdHlwZSA9IHsKLSAgICAvKiogCi0gICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuQ29udGV4dE1lbnV9IGNvbnRleHRNZW51Ci0gICAgICogQHBhcmFtIHtPYmplY3R9IHRh
cmdldAotICAgICAqLwogICAgIGFwcGVuZEFwcGxpY2FibGVJdGVtczogZnVuY3Rpb24oZXZlbnQs
IGNvbnRleHRNZW51LCB0YXJnZXQpIHsgfQogfQogCi0vKioKLSAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkNvbnRleHRNZW51LlByb3ZpZGVyfSBwcm92aWRlcgotICovCiBXZWJJbnNwZWN0b3IuQ29u
dGV4dE1lbnUucmVnaXN0ZXJQcm92aWRlciA9IGZ1bmN0aW9uKHByb3ZpZGVyKQogewogICAgIFdl
Ykluc3BlY3Rvci5Db250ZXh0TWVudS5fcHJvdmlkZXJzLnB1c2gocHJvdmlkZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUVs
ZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01U
cmVlRWxlbWVudC5qcwppbmRleCAyNzRmOTBhLi4zYzQ3MTZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVudC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlRWxlbWVu
dC5qcwpAQCAtMjgsMTEgKzI4LDYgQEAKICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLyoqCi0gKiBAY29u
c3RydWN0b3IKLSAqIEBleHRlbmRzIHtUcmVlRWxlbWVudH0KLSAqIEBwYXJhbSB7Ym9vbGVhbj19
IGVsZW1lbnRDbG9zZVRhZwotICovCiBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQgPSBmdW5j
dGlvbihub2RlLCBlbGVtZW50Q2xvc2VUYWcpCiB7CiAgICAgdGhpcy5fZWxlbWVudENsb3NlVGFn
ID0gZWxlbWVudENsb3NlVGFnOwpAQCAtMTg2LDcgKzE4MSw3IEBAIFdlYkluc3BlY3Rvci5ET01U
cmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBfY3JlYXRlVG9vbHRpcEZvck5vZGU6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBub2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0
b3IuRE9NTm9kZX0gKi8gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgdmFyIG5vZGUg
PSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICBpZiAoIW5vZGUubm9kZU5hbWUoKSB8
fCBub2RlLm5vZGVOYW1lKCkudG9Mb3dlckNhc2UoKSAhPT0gImltZyIpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTI3Nyw5ICsyNzIsNiBAQCBXZWJJbnNwZWN0b3IuRE9NVHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmdldFN1YnRyZWUo
LTEsIGNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge2Jvb2xlYW49fSBmdWxsUmVmcmVzaAotICAgICAqLwogICAgIHVwZGF0ZUNoaWxkcmVuOiBm
dW5jdGlvbihmdWxsUmVmcmVzaCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50Q2xv
c2VUYWcpCkBAIC0yODcsOSArMjc5LDYgQEAgV2ViSW5zcGVjdG9yLkRPTVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5nZXRDaGlsZE5vZGVz
KHRoaXMuX3VwZGF0ZUNoaWxkcmVuLmJpbmQodGhpcywgZnVsbFJlZnJlc2gpKTsKICAgICB9LAog
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtib29sZWFuPX0gY2xvc2luZ1RhZwotICAgICAqLwog
ICAgIGluc2VydENoaWxkRWxlbWVudDogZnVuY3Rpb24oY2hpbGQsIGluZGV4LCBjbG9zaW5nVGFn
KQogICAgIHsKICAgICAgICAgdmFyIG5ld0VsZW1lbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVRy
ZWVFbGVtZW50KGNoaWxkLCBjbG9zaW5nVGFnKTsKQEAgLTMwNyw5ICsyOTYsNiBAQCBXZWJJbnNw
ZWN0b3IuRE9NVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgY2hpbGQuc2Vs
ZWN0KCk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGZ1bGxS
ZWZyZXNoCi0gICAgICovCiAgICAgX3VwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbihmdWxsUmVmcmVz
aCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl91cGRhdGVDaGlsZHJlbkluUHJvZ3Jlc3MgfHwg
IXRoaXMudHJlZU91dGxpbmUuX3Zpc2libGUpCkBAIC05ODIsOSArOTY4LDYgQEAgV2ViSW5zcGVj
dG9yLkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICh0YWdzLmxl
bmd0aCA9PT0gMSA/IG51bGwgOiB0YWdzW3RhZ3MubGVuZ3RoLTFdKTsKICAgICB9LAogCi0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtib29sZWFuPX0gb25seVNlYXJjaFF1ZXJ5Q2hhbmdlZAotICAg
ICAqLwogICAgIHVwZGF0ZVRpdGxlOiBmdW5jdGlvbihvbmx5U2VhcmNoUXVlcnlDaGFuZ2VkKQog
ICAgIHsKICAgICAgICAgLy8gSWYgd2UgYXJlIGVkaXRpbmcsIHJldHVybiBlYXJseSB0byBwcmV2
ZW50IGNhbmNlbGluZyB0aGUgZWRpdC4KQEAgLTEwMDgsOSArOTkxLDYgQEAgV2ViSW5zcGVjdG9y
LkRPTVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5faGlnaGxpZ2h0U2Vh
cmNoUmVzdWx0cygpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3Bl
Y3Rvci5ET01Ob2RlPX0gbm9kZQotICAgICAqLwogICAgIF9idWlsZEF0dHJpYnV0ZURPTTogZnVu
Y3Rpb24ocGFyZW50RWxlbWVudCwgbmFtZSwgdmFsdWUsIG5vZGUpCiAgICAgewogICAgICAgICB2
YXIgaGFzVGV4dCA9ICh2YWx1ZS5sZW5ndGggPiAwKTsKQEAgLTEwNTIsNyArMTAzMiw3IEBAIFdl
Ykluc3BlY3Rvci5ET01UcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAKICAgICBfYnVpbGRUYWdE
T006IGZ1bmN0aW9uKHBhcmVudEVsZW1lbnQsIHRhZ05hbWUsIGlzQ2xvc2luZ1RhZywgaXNEaXN0
aW5jdFRyZWVFbGVtZW50KQogICAgIHsKLSAgICAgICAgdmFyIG5vZGUgPSAvKiogQHR5cGUgV2Vi
SW5zcGVjdG9yLkRPTU5vZGUgKi8gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgdmFy
IG5vZGUgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwogICAgICAgICB2YXIgY2xhc3NlcyA9IFsg
Imh0bWwtdGFnIiBdOwogICAgICAgICBpZiAoaXNDbG9zaW5nVGFnICYmIGlzRGlzdGluY3RUcmVl
RWxlbWVudCkKICAgICAgICAgICAgIGNsYXNzZXMucHVzaCgiY2xvc2UiKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVPdXRsaW5l
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91
dGxpbmUuanMKaW5kZXggMDZiODgwNC4uZTJlOWFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZU91dGxpbmUuanMK
QEAgLTI4LDEyICsyOCw2IEBACiAgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS8qKgotICogQGNvbnN0cnVj
dG9yCi0gKiBAZXh0ZW5kcyB7VHJlZU91dGxpbmV9Ci0gKiBAcGFyYW0ge2Jvb2xlYW49fSBvbWl0
Um9vdERPTU5vZGUKLSAqIEBwYXJhbSB7Ym9vbGVhbj19IHNlbGVjdEVuYWJsZWQKLSAqLwogV2Vi
SW5zcGVjdG9yLkRPTVRyZWVPdXRsaW5lID0gZnVuY3Rpb24ob21pdFJvb3RET01Ob2RlLCBzZWxl
Y3RFbmFibGVkLCBzaG93SW5FbGVtZW50c1BhbmVsRW5hYmxlZCkKIHsKICAgICB0aGlzLmVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZVVwZGF0ZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcwpp
bmRleCA5OGY5YjYzLi40NDdlNGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlVXBkYXRlci5qcwpAQCAtMjgsOSAr
MjgsNiBAQAogICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICovCiBX
ZWJJbnNwZWN0b3IuRE9NVHJlZVVwZGF0ZXIgPSBmdW5jdGlvbih0cmVlT3V0bGluZSkKIHsKICAg
ICBXZWJJbnNwZWN0b3IuZG9tVHJlZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0
b3IuRE9NVHJlZU1hbmFnZXIuRXZlbnQuTm9kZUluc2VydGVkLCB0aGlzLl9ub2RlSW5zZXJ0ZWQs
IHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRGF0YUdyaWQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9EYXRhR3JpZC5qcwppbmRleCA0ODQ1YjRmLi5lNjMzZDFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZC5qcwpAQCAt
MTMwOCwxMSArMTMwOCw2IEBAIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5SZXNpemVNZXRob2QgPSB7
CiAKIFdlYkluc3BlY3Rvci5EYXRhR3JpZC5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVj
dG9yLk9iamVjdC5wcm90b3R5cGU7CiAKLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAZXh0ZW5k
cyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KLSAqIEBwYXJhbSB7Ym9vbGVhbj19IGhhc0NoaWxkcmVu
Ci0gKi8KIFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUgPSBmdW5jdGlvbihkYXRhLCBoYXNDaGls
ZHJlbikKIHsKICAgICB0aGlzLl9leHBhbmRlZCA9IGZhbHNlOwpAQCAtMTQ4MCw3ICsxNDc1LDcg
QEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAg
ICBpZiAodHlwZW9mKHRoaXMuX2xlZnRQYWRkaW5nKSA9PT0gIm51bWJlciIpCiAgICAgICAgICAg
ICByZXR1cm4gdGhpcy5fbGVmdFBhZGRpbmc7Ci0gICAgICAgIAorCiAgICAgICAgIHRoaXMuX2xl
ZnRQYWRkaW5nID0gdGhpcy5kZXB0aCAqIHRoaXMuZGF0YUdyaWQuaW5kZW50V2lkdGg7CiAgICAg
ICAgIHJldHVybiB0aGlzLl9sZWZ0UGFkZGluZzsKICAgICB9LApAQCAtMTcwMSw5ICsxNjk2LDYg
QEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJyZXZlYWxlZCIpOwogICAgIH0sCiAKLSAgICAvKioK
LSAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBzdXByZXNzU2VsZWN0ZWRFdmVudAotICAgICAqLwog
ICAgIHNlbGVjdDogZnVuY3Rpb24oc3VwcmVzc1NlbGVjdGVkRXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuZGF0YUdyaWQgfHwgIXRoaXMuc2VsZWN0YWJsZSB8fCB0aGlzLnNlbGVjdGVk
KQpAQCAtMTcyOCw5ICsxNzIwLDYgQEAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuc2VsZWN0KCk7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAq
IEBwYXJhbSB7Ym9vbGVhbj19IHN1cHJlc3NEZXNlbGVjdGVkRXZlbnQKLSAgICAgKi8KICAgICBk
ZXNlbGVjdDogZnVuY3Rpb24oc3VwcmVzc0Rlc2VsZWN0ZWRFdmVudCkKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5kYXRhR3JpZCB8fCB0aGlzLmRhdGFHcmlkLnNlbGVjdGVkTm9kZSAhPT0gdGhp
cyB8fCAhdGhpcy5zZWxlY3RlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhYmFzZUNvbnRlbnRWaWV3LmpzCmluZGV4
IDU5N2Q2MTQuLjA3ZGJkYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0RhdGFiYXNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YWJhc2VDb250ZW50Vmlldy5qcwpAQCAt
MTQxLDEwICsxNDEsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VDb250ZW50Vmlldy5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHRoaXMuX2FwcGVuZEVycm9yUXVlcnlSZXN1bHQocXVlcnksIG1lc3Nh
Z2UpOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge3N0cmluZ30gcXVlcnkKLSAg
ICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5WaWV3fSB2aWV3Ci0gICAgICovCiAgICAgX2FwcGVu
ZFZpZXdRdWVyeVJlc3VsdDogZnVuY3Rpb24ocXVlcnksIHZpZXcpCiAgICAgewogICAgICAgICB2
YXIgcmVzdWx0RWxlbWVudCA9IHRoaXMuX2FwcGVuZFF1ZXJ5UmVzdWx0KHF1ZXJ5KTsKQEAgLTE1
NiwxMCArMTUyLDYgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlQ29udGVudFZpZXcucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9wcm9tcHRFbGVtZW50LnNjcm9sbEludG9WaWV3KGZhbHNlKTsK
ICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5Ci0gICAgICog
QHBhcmFtIHtzdHJpbmd9IGVycm9yVGV4dAotICAgICAqLwogICAgIF9hcHBlbmRFcnJvclF1ZXJ5
UmVzdWx0OiBmdW5jdGlvbihxdWVyeSwgZXJyb3JUZXh0KQogICAgIHsKICAgICAgICAgdmFyIHJl
c3VsdEVsZW1lbnQgPSB0aGlzLl9hcHBlbmRRdWVyeVJlc3VsdChxdWVyeSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FZGl0aW5nU3VwcG9y
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VkaXRpbmdT
dXBwb3J0LmpzCmluZGV4IDExOTI5OTkuLjhlNmUwMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VkaXRpbmdTdXBwb3J0LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0VkaXRpbmdTdXBwb3J0Lmpz
CkBAIC03NCw0MCArNzQsMTQgQEAgV2ViSW5zcGVjdG9yLmlzRXZlbnRUYXJnZXRBbkVkaXRhYmxl
RmllbGQgPSBmdW5jdGlvbihldmVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLS8qKgotICog
QGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge2Z1bmN0aW9uKEVsZW1lbnQsc3RyaW5nLHN0cmluZywq
LHN0cmluZyl9IGNvbW1pdEhhbmRsZXIKLSAqIEBwYXJhbSB7ZnVuY3Rpb24oRWxlbWVudCwqKX0g
Y2FuY2VsSGFuZGxlcgotICogQHBhcmFtIHsqPX0gY29udGV4dAotICovCiBXZWJJbnNwZWN0b3Iu
RWRpdGluZ0NvbmZpZyA9IGZ1bmN0aW9uKGNvbW1pdEhhbmRsZXIsIGNhbmNlbEhhbmRsZXIsIGNv
bnRleHQpCiB7CiAgICAgdGhpcy5jb21taXRIYW5kbGVyID0gY29tbWl0SGFuZGxlcjsKICAgICB0
aGlzLmNhbmNlbEhhbmRsZXIgPSBjYW5jZWxIYW5kbGVyOwogICAgIHRoaXMuY29udGV4dCA9IGNv
bnRleHQ7Ci0KLSAgICAvKioKLSAgICAgKiBIYW5kbGVzIHRoZSAicGFzdGUiIGV2ZW50LCByZXR1
cm4gdmFsdWVzIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBmb3IgY3VzdG9tRmluaXNoSGFuZGxlcgot
ICAgICAqIEB0eXBlIHtmdW5jdGlvbihFbGVtZW50KXx1bmRlZmluZWR9Ci0gICAgICovCiAgICAg
dGhpcy5wYXN0ZUhhbmRsZXI7Ci0KLSAgICAvKiogCi0gICAgICogV2hldGhlciB0aGUgZWRpdGVk
IGVsZW1lbnQgaXMgbXVsdGlsaW5lCi0gICAgICogQHR5cGUge2Jvb2xlYW58dW5kZWZpbmVkfQot
ICAgICAqLwogICAgIHRoaXMubXVsdGlsaW5lOwotCi0gICAgLyoqCi0gICAgICogQ3VzdG9tIGZp
bmlzaCBoYW5kbGVyIGZvciB0aGUgZWRpdGluZyBzZXNzaW9uIChpbnZva2VkIG9uIGtleWRvd24p
Ci0gICAgICogQHR5cGUge2Z1bmN0aW9uKEVsZW1lbnQsKil8dW5kZWZpbmVkfQotICAgICAqLwog
ICAgIHRoaXMuY3VzdG9tRmluaXNoSGFuZGxlcjsKLQotICAgIC8qKgotICAgICAqIFdoZXRoZXIg
b3Igbm90IHNwZWxsY2hlY2sgaXMgZW5hYmxlZC4KLSAgICAgKiBAdHlwZSB7Ym9vbGVhbn0KLSAg
ICAgKi8KICAgICB0aGlzLnNwZWxsY2hlY2sgPSBmYWxzZTsKIH0KIApAQCAtMTI4LDEwICsxMDIs
NiBAQCBXZWJJbnNwZWN0b3IuRWRpdGluZ0NvbmZpZy5wcm90b3R5cGUgPSB7CiAgICAgfQogfQog
Ci0vKiogCi0gKiBAcGFyYW0ge0VsZW1lbnR9IGVsZW1lbnQKLSAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLkVkaXRpbmdDb25maWc9fSBjb25maWcKLSAqLwogV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGlu
ZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbmZpZykKIHsKICAgICBpZiAoIVdlYkluc3BlY3Rvci5t
YXJrQmVpbmdFZGl0ZWQoZWxlbWVudCwgdHJ1ZSkpCkBAIC0xNjgsNyArMTM4LDYgQEAgV2ViSW5z
cGVjdG9yLnN0YXJ0RWRpdGluZyA9IGZ1bmN0aW9uKGVsZW1lbnQsIGNvbmZpZykKICAgICAgICAg
ICAgIHJldHVybiBlbGVtZW50LnRleHRDb250ZW50OwogICAgIH0KIAotICAgIC8qKiBAdGhpcyB7
RWxlbWVudH0gKi8KICAgICBmdW5jdGlvbiBjbGVhblVwQWZ0ZXJFZGl0aW5nKCkKICAgICB7CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5tYXJrQmVpbmdFZGl0ZWQoZWxlbWVudCwgZmFsc2UpOwpAQCAt
MTk1LDcgKzE2NCw2IEBAIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcgPSBmdW5jdGlvbihlbGVt
ZW50LCBjb25maWcpCiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXN0b3JlRm9jdXNGcm9tRWxlbWVu
dChlbGVtZW50KTsKICAgICB9CiAKLSAgICAvKiogQHRoaXMge0VsZW1lbnR9ICovCiAgICAgZnVu
Y3Rpb24gZWRpdGluZ0NhbmNlbGxlZCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy50YWdOYW1l
ID09PSAiSU5QVVQiICYmIHRoaXMudHlwZSA9PT0gInRleHQiKQpAQCAtMjA4LDcgKzE3Niw2IEBA
IFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcgPSBmdW5jdGlvbihlbGVtZW50LCBjb25maWcpCiAg
ICAgICAgIGNhbmNlbGxlZENhbGxiYWNrKHRoaXMsIGNvbnRleHQpOwogICAgIH0KIAotICAgIC8q
KiBAdGhpcyB7RWxlbWVudH0gKi8KICAgICBmdW5jdGlvbiBlZGl0aW5nQ29tbWl0dGVkKCkKICAg
ICB7CiAgICAgICAgIGNsZWFuVXBBZnRlckVkaXRpbmcuY2FsbCh0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL09iamVjdFByb3BlcnRp
ZXNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
T2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanMKaW5kZXggMzIzMzgwMS4uMjhmZjNlZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvT2JqZWN0UHJv
cGVydGllc1NlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uanMKQEAgLTg1LDcgKzg1LDcgQEAgV2Vi
SW5zcGVjdG9yLk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHRoaXMucHJvcGVydGllc1RyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGluZm9FbGVtZW50KTsK
ICAgICAgICAgfQogICAgICAgICB0aGlzLnByb3BlcnRpZXNGb3JUZXN0ID0gcHJvcGVydGllczsK
LSAgICAgICAgCisKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLlNlY3Rpb24uRXZlbnQuVmlzaWJsZUNvbnRlbnREaWRDaGFuZ2UpOwogICAgIH0KIH0K
QEAgLTEzNywxMCArMTM3LDYgQEAgV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnRpZXNTZWN0aW9u
LkNvbXBhcmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24ocHJvcGVydHlBLCBwcm8KICAgICByZXR1cm4g
ZGlmZjsKIH0KIAotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtUcmVlRWxlbWVu
dH0KLSAqLwogV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnR5VHJlZUVsZW1lbnQgPSBmdW5jdGlv
bihwcm9wZXJ0eSkKIHsKICAgICB0aGlzLnByb3BlcnR5ID0gcHJvcGVydHk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qb3BvdmVyLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUG9wb3Zlci5qcwppbmRl
eCA0NGUzOGVkLi5iNTFlZjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Qb3BvdmVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1BvcG92ZXIuanMKQEAgLTQxLDcgKzQxLDcgQEAgV2ViSW5zcGVj
dG9yLlBvcG92ZXIgPSBmdW5jdGlvbihkZWxlZ2F0ZSkgewogICAgIHRoaXMuX2NhbnZhc0lkID0g
InBvcG92ZXItIiArIChXZWJJbnNwZWN0b3IuUG9wb3Zlci5jYW52YXNJZCsrKTsKICAgICB0aGlz
Ll9lbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICItd2Via2l0LWNhbnZhcygiICsgdGhp
cy5fY2FudmFzSWQgKyAiKSI7CiAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0
cmFuc2l0aW9uZW5kIiwgdGhpcywgdHJ1ZSk7Ci0gICAgCisKICAgICB0aGlzLl9jb250YWluZXIg
PSB0aGlzLl9lbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
KTsKICAgICB0aGlzLl9jb250YWluZXIuY2xhc3NOYW1lID0gImNvbnRhaW5lciI7CiB9OwpAQCAt
MTE0LDEwICsxMTQsNiBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQuZm9jdXMoKTsKICAgICB9LAogCi0gICAg
LyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVjdH0gdGFyZ2V0RnJhbWUKLSAgICAg
KiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZWN0RWRnZX1bXSBwcmVmZXJyZWRFZGdlcwotICAgICAq
LwogICAgIHByZXNlbnQ6IGZ1bmN0aW9uKHRhcmdldEZyYW1lLCBwcmVmZXJyZWRFZGdlcykKICAg
ICB7CiAgICAgICAgIHRoaXMuX3RhcmdldEZyYW1lID0gdGFyZ2V0RnJhbWU7CkBAIC0xMzEsNyAr
MTI3LDcgQEAgV2ViSW5zcGVjdG9yLlBvcG92ZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIHRo
aXMuX3VwZGF0ZSgpOwogICAgIH0sCi0gICAgCisKICAgICBkaXNtaXNzOiBmdW5jdGlvbigpCiAg
ICAgewogICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlICE9PSBkb2N1bWVudC5i
b2R5KQpAQCAtNDIxLDcgKzQxNyw3IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVyLnByb3RvdHlwZSA9
IHsKIAogICAgICAgICBmaW5hbENvbnRleHQuZHJhd0ltYWdlKHNjcmF0Y2hDYW52YXMsIDAsIDAs
IHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOwogICAgIH0sCi0gICAgCisKICAgICBfYmVzdE1l
dHJpY3NGb3JFZGdlOiBmdW5jdGlvbihwcmVmZXJyZWRTaXplLCB0YXJnZXRGcmFtZSwgY29udGFp
bmVyRnJhbWUsIGVkZ2UpCiAgICAgewogICAgICAgICB2YXIgeCwgeTsKQEAgLTQ1OSw3ICs0NTUs
NyBAQCBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAg
eSA9IGNvbnRhaW5lckZyYW1lLm1heFkoKSAtIGhlaWdodDsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIGlmICh4IDwgY29udGFpbmVyRnJhbWUubWluWCgpKQotICAgICAgICAgICAgICAg
IHggPSBjb250YWluZXJGcmFtZS5taW5YKCk7IAorICAgICAgICAgICAgICAgIHggPSBjb250YWlu
ZXJGcmFtZS5taW5YKCk7CiAgICAgICAgICAgICBpZiAoeCArIHdpZHRoID4gY29udGFpbmVyRnJh
bWUubWF4WCgpKQogICAgICAgICAgICAgICAgIHggPSBjb250YWluZXJGcmFtZS5tYXhYKCkgLSB3
aWR0aDsKICAgICAgICAgfQpAQCAtNTM4LDcgKzUzNCw3IEBAIFdlYkluc3BlY3Rvci5Qb3BvdmVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAg
fQotICAgIAorCiB9OwogCiBXZWJJbnNwZWN0b3IuUG9wb3Zlci5wcm90b3R5cGUuX19wcm90b19f
ID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UcmVlT3V0bGluZS5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCmluZGV4IGNi
YTc4ZWUuLmZmZjFkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1RyZWVPdXRsaW5lLmpzCkBAIC0yNiwxOCArMjYsMTIgQEAKICAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotLyoqCi0gKiBAY29uc3RydWN0b3IKLSAqLwogZnVuY3Rpb24gVHJl
ZU91dGxpbmUobGlzdE5vZGUpCiB7CiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdC5jYWxsKHRoaXMp
OwogCiAgICAgdGhpcy5lbGVtZW50ID0gbGlzdE5vZGU7CiAKLSAgICAvKioKLSAgICAgKiBAdHlw
ZSB7QXJyYXkuPFRyZWVFbGVtZW50Pn0KLSAgICAgKi8KICAgICB0aGlzLmNoaWxkcmVuID0gW107
CiAgICAgdGhpcy5zZWxlY3RlZFRyZWVFbGVtZW50ID0gbnVsbDsKICAgICB0aGlzLl9jaGlsZHJl
bkxpc3ROb2RlID0gbGlzdE5vZGU7CkBAIC00ODksOSArNDgzLDYgQEAgVHJlZU91dGxpbmUucHJv
dG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9uKCkKICAgICAvLyB0aGlzIGlzIHRoZSByb290LCBkbyBu
b3RoaW5nCiB9CiAKLS8qKgotICogQHBhcmFtIHtib29sZWFuPX0gb21pdEZvY3VzCi0gKi8KIFRy
ZWVPdXRsaW5lLnByb3RvdHlwZS5yZXZlYWxBbmRTZWxlY3QgPSBmdW5jdGlvbihvbWl0Rm9jdXMp
CiB7CiAgICAgLy8gdGhpcyBpcyB0aGUgcm9vdCwgZG8gbm90aGluZwpAQCAtNDk5LDExICs0OTAs
NiBAQCBUcmVlT3V0bGluZS5wcm90b3R5cGUucmV2ZWFsQW5kU2VsZWN0ID0gZnVuY3Rpb24ob21p
dEZvY3VzKQogCiBUcmVlT3V0bGluZS5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
Lk9iamVjdC5wcm90b3R5cGU7CiAKLS8qKgotICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0ge09i
amVjdD19IHJlcHJlc2VudGVkT2JqZWN0Ci0gKiBAcGFyYW0ge2Jvb2xlYW49fSBoYXNDaGlsZHJl
bgotICovCiBmdW5jdGlvbiBUcmVlRWxlbWVudCh0aXRsZSwgcmVwcmVzZW50ZWRPYmplY3QsIGhh
c0NoaWxkcmVuKQogewogICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKQEAgLTkz
NywxMCArOTIzLDYgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdE9uTW91c2VEb3duID0g
ZnVuY3Rpb24oZXZlbnQpCiAgICAgdGhpcy5zZWxlY3QoZmFsc2UsIHRydWUpOwogfQogCi0vKioK
LSAqIEBwYXJhbSB7Ym9vbGVhbj19IG9taXRGb2N1cwotICogQHBhcmFtIHtib29sZWFuPX0gc2Vs
ZWN0ZWRCeVVzZXIKLSAqLwogVHJlZUVsZW1lbnQucHJvdG90eXBlLnNlbGVjdCA9IGZ1bmN0aW9u
KG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIsIHN1cHByZXNzT25TZWxlY3QsIHN1cHByZXNzT25E
ZXNlbGVjdCkKIHsKICAgICBpZiAoIXRoaXMudHJlZU91dGxpbmUgfHwgIXRoaXMuc2VsZWN0YWJs
ZSkKQEAgLTk3OCwxOCArOTYwLDEyIEBAIFRyZWVFbGVtZW50LnByb3RvdHlwZS5zZWxlY3QgPSBm
dW5jdGlvbihvbWl0Rm9jdXMsIHNlbGVjdGVkQnlVc2VyLCBzdXBwcmVzc09uU2VsCiAgICAgZGVs
ZXRlIHRoaXMudHJlZU91dGxpbmUucHJvY2Vzc2luZ1NlbGVjdGlvbkNoYW5nZTsKIH0KIAotLyoq
Ci0gKiBAcGFyYW0ge2Jvb2xlYW49fSBvbWl0Rm9jdXMKLSAqLwogVHJlZUVsZW1lbnQucHJvdG90
eXBlLnJldmVhbEFuZFNlbGVjdCA9IGZ1bmN0aW9uKG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIs
IHN1cHByZXNzT25TZWxlY3QsIHN1cHByZXNzT25EZXNlbGVjdCkKIHsKICAgICB0aGlzLnJldmVh
bCgpOwogICAgIHRoaXMuc2VsZWN0KG9taXRGb2N1cywgc2VsZWN0ZWRCeVVzZXIsIHN1cHByZXNz
T25TZWxlY3QsIHN1cHByZXNzT25EZXNlbGVjdCk7CiB9CiAKLS8qKgotICogQHBhcmFtIHtib29s
ZWFuPX0gc3VwcHJlc3NPbkRlc2VsZWN0Ci0gKi8KIFRyZWVFbGVtZW50LnByb3RvdHlwZS5kZXNl
bGVjdCA9IGZ1bmN0aW9uKHN1cHByZXNzT25EZXNlbGVjdCkKIHsKICAgICBpZiAoIXRoaXMudHJl
ZU91dGxpbmUgfHwgdGhpcy50cmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50ICE9PSB0aGlz
IHx8ICF0aGlzLnNlbGVjdGVkKQpAQCAtMTAxNSwxMyArOTkxLDYgQEAgVHJlZUVsZW1lbnQucHJv
dG90eXBlLm9ucG9wdWxhdGUgPSBmdW5jdGlvbigpCiAgICAgLy8gT3ZlcnJpZGVuIGJ5IHN1YmNs
YXNzZXMuCiB9CiAKLS8qKgotICogQHBhcmFtIHtib29sZWFufSBza2lwVW5yZXZlYWxlZAotICog
QHBhcmFtIHsoVHJlZU91dGxpbmV8VHJlZUVsZW1lbnQpPX0gc3RheVdpdGhpbgotICogQHBhcmFt
IHtib29sZWFuPX0gZG9udFBvcHVsYXRlCi0gKiBAcGFyYW0ge09iamVjdD19IGluZm8KLSAqIEBy
ZXR1cm4ge1RyZWVFbGVtZW50fQotICovCiBUcmVlRWxlbWVudC5wcm90b3R5cGUudHJhdmVyc2VO
ZXh0VHJlZUVsZW1lbnQgPSBmdW5jdGlvbihza2lwVW5yZXZlYWxlZCwgc3RheVdpdGhpbiwgZG9u
dFBvcHVsYXRlLCBpbmZvKQogewogICAgIGlmICghZG9udFBvcHVsYXRlICYmIHRoaXMuaGFzQ2hp
bGRyZW4pCkBAIC0xMDU3LDExICsxMDI2LDYgQEAgVHJlZUVsZW1lbnQucHJvdG90eXBlLnRyYXZl
cnNlTmV4dFRyZWVFbGVtZW50ID0gZnVuY3Rpb24oc2tpcFVucmV2ZWFsZWQsIHN0YXlXaXQKICAg
ICByZXR1cm4gKHNraXBVbnJldmVhbGVkID8gKGVsZW1lbnQucmV2ZWFsZWQoKSA/IGVsZW1lbnQu
bmV4dFNpYmxpbmcgOiBudWxsKSA6IGVsZW1lbnQubmV4dFNpYmxpbmcpOwogfQogCi0vKioKLSAq
IEBwYXJhbSB7Ym9vbGVhbn0gc2tpcFVucmV2ZWFsZWQKLSAqIEBwYXJhbSB7Ym9vbGVhbj19IGRv
bnRQb3B1bGF0ZQotICogQHJldHVybiB7VHJlZUVsZW1lbnR9Ci0gKi8KIFRyZWVFbGVtZW50LnBy
b3RvdHlwZS50cmF2ZXJzZVByZXZpb3VzVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihza2lwVW5yZXZl
YWxlZCwgZG9udFBvcHVsYXRlKQogewogICAgIHZhciBlbGVtZW50ID0gc2tpcFVucmV2ZWFsZWQg
PyAodGhpcy5yZXZlYWxlZCgpID8gdGhpcy5wcmV2aW91c1NpYmxpbmcgOiBudWxsKSA6IHRoaXMu
cHJldmlvdXNTaWJsaW5nOwpAQCAtMTA4NSw3ICsxMDQ5LDcgQEAgVHJlZUVsZW1lbnQucHJvdG90
eXBlLnRyYXZlcnNlUHJldmlvdXNUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKHNraXBVbnJldmVhbGVk
LCBkb24KIAogVHJlZUVsZW1lbnQucHJvdG90eXBlLmlzRXZlbnRXaXRoaW5EaXNjbG9zdXJlVHJp
YW5nbGUgPSBmdW5jdGlvbihldmVudCkKIHsKLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCB1
c2UgZ2V0Q29tcHV0ZWRTdHlsZSgpLiBGb3IgdGhhdCB3ZSBuZWVkIHRvIGdldCByaWQgb2YgdXNp
bmcgOjpiZWZvcmUgZm9yIGRpc2Nsb3N1cmUgdHJpYW5nbGUuIChodHRwOi8vd2Viay5pdC83NDQ0
NikgCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgdXNlIGdldENvbXB1dGVkU3R5bGUoKS4g
Rm9yIHRoYXQgd2UgbmVlZCB0byBnZXQgcmlkIG9mIHVzaW5nIDo6YmVmb3JlIGZvciBkaXNjbG9z
dXJlIHRyaWFuZ2xlLiAoaHR0cDovL3dlYmsuaXQvNzQ0NDYpCiAgICAgdmFyIGNvbXB1dGVkTGVm
dFBhZGRpbmcgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLl9saXN0SXRlbU5vZGUpLmdl
dFByb3BlcnR5Q1NTVmFsdWUoInBhZGRpbmctbGVmdCIpLmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0
aXZlVmFsdWUuQ1NTX1BYKTsKICAgICB2YXIgbGVmdCA9IHRoaXMuX2xpc3RJdGVtTm9kZS50b3Rh
bE9mZnNldExlZnQgKyBjb21wdXRlZExlZnRQYWRkaW5nOwogICAgIHJldHVybiBldmVudC5wYWdl
WCA+PSBsZWZ0ICYmIGV2ZW50LnBhZ2VYIDw9IGxlZnQgKyB0aGlzLmFycm93VG9nZ2xlV2lkdGgg
JiYgdGhpcy5oYXNDaGlsZHJlbjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>