<?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>105798</bug_id>
          
          <creation_ts>2012-12-27 05:17:21 -0800</creation_ts>
          <short_desc>Web Inspector: move js heap snapshot preprocessing to JSHeapSnapshot</short_desc>
          <delta_ts>2012-12-27 07:58:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>797521</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-27 05:17:21 -0800</bug_when>
    <thetext>Methods like HeapSnapshot._markDetachedDOMTreeNodes should be moved to JSHeapSnapshot as they only make sense for JavaScript heap snapshots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797544</commentid>
    <comment_count>1</comment_count>
      <attachid>180799</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-27 06:52:41 -0800</bug_when>
    <thetext>Created attachment 180799
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797547</commentid>
    <comment_count>2</comment_count>
      <attachid>180799</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2012-12-27 06:57:06 -0800</bug_when>
    <thetext>Comment on attachment 180799
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797563</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-12-27 07:58:31 -0800</bug_when>
    <thetext>Committed r138501: &lt;http://trac.webkit.org/changeset/138501&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180799</attachid>
            <date>2012-12-27 06:52:41 -0800</date>
            <delta_ts>2012-12-27 07:53:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-105798-20121227184952.patch</filename>
            <type>text/plain</type>
            <size>42273</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4NDkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDRmZWY0YTAzM2IxNThj
ZTYxZDhhODZjNWEwYjhhNzA5NTBiY2M4ZC4uZmUwMzUwMzU2NWZjMGM0MGI2MjVmOTU3ZGI3MmFh
MDFhYmMwZGM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTEyLTI3ICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IG1vdmUganMgaGVhcCBzbmFwc2hvdCBwcmVwcm9jZXNzaW5nIHRvIEpTSGVhcFNuYXBzaG90
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDU3OTgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIZWFwU25h
cHNob3QuanMgcmVmYWN0b3JpbmdzOgorICAgICAgICAtIG1vdmVkIF9tYXJrSW52aXNpYmxlRWRn
ZXMgaW1wbGVtZW50YXRpb24gaW50byBKU0hlYXBTbmFwc2hvdAorICAgICAgICAtIG1vdmVkIF9j
YWxjdWxhdGVGbGFncyBpbXBsZW1lbnRhdGlvbiBpbnRvIEpTSGVhcFNuYXBzaG90CisgICAgICAg
IC0gbW92ZWQgX2ZsYWdzIGFycmF5IGludG8gSlNIZWFwU25hcHNob3QKKyAgICAgICAgLSBpbnN0
ZWFkIG9mIHJldHVybmluZyBub2RlIGZsYWdzIGFzIGEgZmllbGQgb24gZWFjaCBub2RlLCByZXF1
ZXN0aW5nCisgICAgICAgICAgc25hcHNob3Qgbm9kZSBmbGFnIGNvbnN0YW50cyBmcm9tIHRoZSBo
ZWFwIHNuYXBzaG90IHdvcmtlciBhbmQgdGhlbgorICAgICAgICAgIGNoZWNraW5nIGZvciB0aGUg
ZmxhZ3MgaW4gSGVhcFNuYXBzaG90R3JpZE5vZGVzIG5vdyByZXR1cm4gdHdvIG9wdGlvbmFsCisg
ICAgICAgICAgYm9vbGVhbiBmaWVsZHMgb24gZWFjaCBub2RlOiBjYW5CZVF1ZXJpZWQgYW5kIGRl
dGFjaGVkRE9NVHJlZU5vZGUKKyAgICAgICAgLSByZW1vdmVkIHVudXNlZCBwcm9wZXJ0eUFjY2Vz
c29yIHByb3BlcnR5IGZyb20gc2VyaWFsaXplZCBoZWFwIG5vZGUKKyAgICAgICAgLSBtb3ZlZCBu
b2RlIGFuZCBlZGdlIHNlcmlhbGl6YXRpb24gZnJvbSBwcm92aWRlcnMgdG8gdGhlIG5vZGUgYW5k
IGVkZ2UKKyAgICAgICAgICBjbGFzc2VzLCBqcyBzcGVjaWZpYyBmaWVsZHMgYXJlIHNlcmlhbGl6
ZWQgb25seSBmb3IgSlNIZWFwU25hcHNob3ROb2RlCisgICAgICAgIC0gcmVuYW1lZCBmaXJzdCgp
IHRvIHJld2luZCgpIG9uIHByb3ZpZGVycyBhbmQgaXRlcmF0b3JzCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3RFZGdlLnByb3RvdHlwZS5zZXJpYWxpemUpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEVkZ2VJdGVyYXRvci5wcm90b3R5cGUucmV3aW5kKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2UucHJvdG90eXBlLnNlcmlhbGl6
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdlSXRlcmF0
b3IucHJvdG90eXBlLnJld2luZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Tm9kZS5wcm90b3R5cGUuaXNVc2VyT2JqZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3ROb2RlLnByb3RvdHlwZS5zZXJpYWxpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdE5vZGVJdGVyYXRvci5wcm90b3R5cGUucmV3aW5kKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9pbml0KToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9idWlsZEFnZ3JlZ2F0ZXMpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUuX2NhbGN1bGF0ZUNsYXNzZXNS
ZXRhaW5lZFNpemUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5
cGUuX2J1aWxkUG9zdE9yZGVySW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdC5wcm90b3R5cGUuX2J1aWxkRG9taW5hdG9yVHJlZSk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5fbWFya0ludmlzaWJsZUVkZ2VzKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLl9jYWxjdWxhdGVGbGFncyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS51c2VyT2JqZWN0c01h
cEFuZEZsYWcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5wcm90b3R5cGUu
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlLmNyZWF0ZU5v
ZGVzUHJvdmlkZXJGb3JDbGFzcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
LnByb3RvdHlwZS51cGRhdGVTdGF0aWNEYXRhKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUuX2NyZWF0ZUl0ZXJhdGlv
bk9yZGVyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVy
ZWRJdGVyYXRvci5wcm90b3R5cGUucmV3aW5kKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFw
U25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUuaXNFbXB0eSk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJv
dG90eXBlLnNlcmlhbGl6ZUl0ZW1zUmFuZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZS5zb3J0QW5kUmV3aW5kKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdEdyaWROb2Rlcy5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RHZW5lcmljT2JqZWN0Tm9kZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90T2JqZWN0Tm9kZSk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQcm94eS5qczoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL0pTSGVhcFNuYXBzaG90LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkpTSGVhcFNuYXBzaG90KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdC5w
cm90b3R5cGUuX21hcmtJbnZpc2libGVFZGdlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSlNI
ZWFwU25hcHNob3QucHJvdG90eXBlLl9jYWxjdWxhdGVGbGFncyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSlNIZWFwU25hcHNob3QucHJvdG90eXBlLnVzZXJPYmplY3RzTWFwQW5kRmxhZyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3QucHJvdG90eXBlLl9mbGFnc09mTm9k
ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3QucHJvdG90eXBlLl9tYXJr
RGV0YWNoZWRET01UcmVlTm9kZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBz
aG90LnByb3RvdHlwZS5fbWFya1F1ZXJpYWJsZUhlYXBPYmplY3RzKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5KU0hlYXBTbmFwc2hvdC5wcm90b3R5cGUuX21hcmtQYWdlT3duZWROb2Rlcyk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3ROb2RlLnByb3RvdHlwZS5pc1VzZXJP
YmplY3QpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5
cGUuc2VyaWFsaXplKToKKwogMjAxMi0xMi0yNiAgTm8nYW0gUm9zZW50aGFsICA8bm9hbUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFtUZXhtYXBdIEluc3RlYWQgb2YgaGF2aW5nIG11bHRpcGxlIHNo
YWRlcnMgc291cmNlcyB3aXRoIGxvdHMgb2YgZHVwbGljYXRpb24sIHdlIHNob3VsZCBoYXZlIG9u
ZSBzaGFkZXIgc291cmNlIHdpdGggTUFDUk8gdmFyaWFudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90LmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3QuanMKaW5kZXggYWU0MGZhZjliNWYz
YjQwZThmODc2Y2YwMjA1OTlhNzcyMzBkZmNiMC4uMjFkZWExYTM0ZWM3ZmRjMTQ2YTA0Y2Q2YTdk
MjYyOWUwNzY0N2Q2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9IZWFwU25hcHNob3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9IZWFwU25hcHNob3QuanMKQEAgLTEwNCw2ICsxMDQsMTggQEAgV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEVkZ2UucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNo
b3QuX2VkZ2VUeXBlc1t0aGlzLl90eXBlKCldOwogICAgIH0sCiAKKyAgICBzZXJpYWxpemU6IGZ1
bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBub2RlID0gdGhpcy5ub2RlKCk7CisgICAgICAg
IHJldHVybiB7CisgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUoKSwKKyAgICAgICAgICAgIG5v
ZGU6IG5vZGUuc2VyaWFsaXplKCksCisgICAgICAgICAgICBub2RlSW5kZXg6IHRoaXMubm9kZUlu
ZGV4KCksCisgICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUoKSwKKyAgICAgICAgICAgIGRpc3Rh
bmNlVG9XaW5kb3c6IG5vZGUuZGlzdGFuY2VUb1dpbmRvdygpCisgICAgICAgIH07CisgICAgfSwK
KwogICAgIF90eXBlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fZWRn
ZXMuaXRlbSh0aGlzLmVkZ2VJbmRleCArIHRoaXMuX3NuYXBzaG90Ll9lZGdlVHlwZU9mZnNldCk7
CkBAIC0xMTksNyArMTMxLDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEVkZ2VJdGVyYXRv
ciA9IGZ1bmN0aW9uKGVkZ2UpCiB9CiAKIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RFZGdlSXRl
cmF0b3IucHJvdG90eXBlID0gewotICAgIGZpcnN0OiBmdW5jdGlvbigpCisgICAgcmV3aW5kOiBm
dW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLmVkZ2UuZWRnZUluZGV4ID0gMDsKICAgICB9
LApAQCAtMjM0LDYgKzI0NiwxOCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJF
ZGdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VkZ2UoKS50b1N0cmluZygp
OwogICAgIH0sCiAKKyAgICBzZXJpYWxpemU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZh
ciBub2RlID0gdGhpcy5ub2RlKCk7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBuYW1l
OiB0aGlzLm5hbWUoKSwKKyAgICAgICAgICAgIG5vZGU6IG5vZGUuc2VyaWFsaXplKCksCisgICAg
ICAgICAgICBub2RlSW5kZXg6IHRoaXMubm9kZUluZGV4KCksCisgICAgICAgICAgICB0eXBlOiB0
aGlzLnR5cGUoKSwKKyAgICAgICAgICAgIGRpc3RhbmNlVG9XaW5kb3c6IG5vZGUuZGlzdGFuY2VU
b1dpbmRvdygpCisgICAgICAgIH07CisgICAgfSwKKwogICAgIHR5cGU6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lZGdlKCkudHlwZSgpOwpAQCAtMjQ5LDcgKzI3Myw3
IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RSZXRhaW5lckVkZ2VJdGVyYXRvciA9IGZ1bmN0
aW9uKHJldGFpbmVyKQogfQogCiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90UmV0YWluZXJFZGdl
SXRlcmF0b3IucHJvdG90eXBlID0gewotICAgIGZpcnN0OiBmdW5jdGlvbigpCisgICAgcmV3aW5k
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLnJldGFpbmVyLnNldFJldGFpbmVySW5k
ZXgoMCk7CiAgICAgfSwKQEAgLTI5Miw2ICszMTYsMTEgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE5vZGUgPSBmdW5jdGlvbihzbmFwc2hvdCwgbm9kZUluZGV4KQogfQogCiBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7CisgICAgaXNVc2VyT2JqZWN0OiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9LAorCiAgICAgZGlzdGFu
Y2VUb1dpbmRvdzogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3NuYXBz
aG90Ll9kaXN0YW5jZXNUb1dpbmRvd1t0aGlzLm5vZGVJbmRleCAvIHRoaXMuX3NuYXBzaG90Ll9u
b2RlRmllbGRDb3VudF07CkBAIC0zMjMsMTEgKzM1Miw2IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3ROb2RlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuICh0aGlzLl9lZGdlSW5kZXhl
c0VuZCgpIC0gdGhpcy5fZWRnZUluZGV4ZXNTdGFydCgpKSAvIHRoaXMuX3NuYXBzaG90Ll9lZGdl
RmllbGRzQ291bnQ7CiAgICAgfSwKIAotICAgIGZsYWdzOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fc25hcHNob3QuX2ZsYWdzT2ZOb2RlKHRoaXMpOwotICAgIH0sCi0K
ICAgICBpZDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJOb3Qg
aW1wbGVtZW50ZWQiKTsKQEAgLTM3MCw2ICszOTQsMTkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE5vZGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhpcy5fc25hcHNob3QuX25v
ZGVUeXBlc1t0aGlzLl90eXBlKCldOwogICAgIH0sCiAKKyAgICBzZXJpYWxpemU6IGZ1bmN0aW9u
KCkKKyAgICB7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBpZDogdGhpcy5pZCgpLAor
ICAgICAgICAgICAgbmFtZTogdGhpcy5uYW1lKCksCisgICAgICAgICAgICBkaXN0YW5jZVRvV2lu
ZG93OiB0aGlzLmRpc3RhbmNlVG9XaW5kb3coKSwKKyAgICAgICAgICAgIG5vZGVJbmRleDogdGhp
cy5ub2RlSW5kZXgsCisgICAgICAgICAgICByZXRhaW5lZFNpemU6IHRoaXMucmV0YWluZWRTaXpl
KCksCisgICAgICAgICAgICBzZWxmU2l6ZTogdGhpcy5zZWxmU2l6ZSgpLAorICAgICAgICAgICAg
dHlwZTogdGhpcy50eXBlKCksCisgICAgICAgIH07CisgICAgfSwKKwogICAgIF9uYW1lOiBmdW5j
dGlvbigpCiAgICAgewogICAgICAgICB2YXIgc25hcHNob3QgPSB0aGlzLl9zbmFwc2hvdDsKQEAg
LTQxMyw3ICs0NTAsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90Tm9kZUl0ZXJhdG9yID0g
ZnVuY3Rpb24obm9kZSkKIH0KIAogV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVJdGVyYXRv
ci5wcm90b3R5cGUgPSB7Ci0gICAgZmlyc3Q6IGZ1bmN0aW9uKCkKKyAgICByZXdpbmQ6IGZ1bmN0
aW9uKCkKICAgICB7CiAgICAgICAgIHRoaXMubm9kZS5ub2RlSW5kZXggPSB0aGlzLm5vZGUuX2Zp
cnN0Tm9kZUluZGV4OwogICAgIH0sCkBAIC01MjUsMTUgKzU2Miw2IEBAIFdlYkluc3BlY3Rvci5I
ZWFwU25hcHNob3QucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9lZGdlV2Vha1R5cGUgPSB0
aGlzLl9lZGdlVHlwZXMuaW5kZXhPZigid2VhayIpOwogICAgICAgICB0aGlzLl9lZGdlSW52aXNp
YmxlVHlwZSA9IHRoaXMuX2VkZ2VUeXBlcy5pbmRleE9mKCJpbnZpc2libGUiKTsKIAotICAgICAg
ICB0aGlzLl9ub2RlRmxhZ3MgPSB7IC8vIGJpdCBmbGFncwotICAgICAgICAgICAgY2FuQmVRdWVy
aWVkOiAxLAotICAgICAgICAgICAgZGV0YWNoZWRET01UcmVlTm9kZTogMiwKLSAgICAgICAgICAg
IHBhZ2VPYmplY3Q6IDQsIC8vIFRoZSBpZGVhIGlzIHRvIHRyYWNrIHNlcGFyYXRlbHkgdGhlIG9i
amVjdHMgb3duZWQgYnkgdGhlIHBhZ2UgYW5kIHRoZSBvYmplY3RzIG93bmVkIGJ5IGRlYnVnZ2Vy
LgotCi0gICAgICAgICAgICB2aXNpdGVkTWFya2VyTWFzazogMHgwZmZmZiwgLy8gYml0czogMCwx
MTExLDExMTEsMTExMSwxMTExCi0gICAgICAgICAgICB2aXNpdGVkTWFya2VyOiAgICAgMHgxMDAw
MCAgLy8gYml0czogMSwwMDAwLDAwMDAsMDAwMCwwMDAwCi0gICAgICAgIH07Ci0KICAgICAgICAg
dGhpcy5ub2RlQ291bnQgPSB0aGlzLl9ub2Rlcy5sZW5ndGggLyB0aGlzLl9ub2RlRmllbGRDb3Vu
dDsKICAgICAgICAgdGhpcy5fZWRnZUNvdW50ID0gdGhpcy5fY29udGFpbm1lbnRFZGdlcy5sZW5n
dGggLyB0aGlzLl9lZGdlRmllbGRzQ291bnQ7CiAKQEAgLTY1Niw3ICs2ODQsNiBAQCBXZWJJbnNw
ZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgICAgICBkZWxl
dGUgdGhpcy5fZG9taW5hdGVkTm9kZXM7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9maXJzdERvbWlu
YXRlZE5vZGVJbmRleDsKLSAgICAgICAgZGVsZXRlIHRoaXMuX2ZsYWdzOwogICAgICAgICBkZWxl
dGUgdGhpcy5fZGlzdGFuY2VzVG9XaW5kb3c7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9kb21pbmF0
b3JzVHJlZTsKICAgICB9LApAQCAtNjk1LDExICs3MjIsNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuSGVh
cFNuYXBzaG90QXJyYXlTbGljZSh0aGlzLl9kb21pbmF0ZWROb2RlcywgZG9taW5hdGVkSW5kZXhG
cm9tLCBkb21pbmF0ZWRJbmRleFRvKTsKICAgICB9LAogCi0gICAgX2ZsYWdzT2ZOb2RlOiBmdW5j
dGlvbihub2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZsYWdzW25vZGUubm9kZUlu
ZGV4IC8gdGhpcy5fbm9kZUZpZWxkQ291bnRdOwotICAgIH0sCi0KICAgICAvKioKICAgICAgKiBA
cGFyYW0ge2Jvb2xlYW59IHNvcnRlZEluZGV4ZXMKICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5
CkBAIC04MzYsMTkgKzg1OCwyMCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIGFnZ3JlZ2F0ZXNCeUNsYXNzTmFtZSA9IHt9OwogICAgICAgICB2
YXIgY2xhc3NJbmRleGVzID0gW107CiAgICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOwot
ICAgICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9mbGFnczsKKyAgICAgICAgdmFyIG1hcEFuZEZsYWcg
PSB0aGlzLnVzZXJPYmplY3RzTWFwQW5kRmxhZygpOworICAgICAgICB2YXIgZmxhZ3MgPSBtYXBB
bmRGbGFnID8gbWFwQW5kRmxhZy5tYXAgOiBudWxsOworICAgICAgICB2YXIgZmxhZyA9IG1hcEFu
ZEZsYWcgPyBtYXBBbmRGbGFnLmZsYWcgOiAwOwogICAgICAgICB2YXIgbm9kZXNMZW5ndGggPSBu
b2Rlcy5sZW5ndGg7CiAgICAgICAgIHZhciBub2RlTmF0aXZlVHlwZSA9IHRoaXMuX25vZGVOYXRp
dmVUeXBlOwogICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9ub2RlRmllbGRDb3Vu
dDsKICAgICAgICAgdmFyIHNlbGZTaXplT2Zmc2V0ID0gdGhpcy5fbm9kZVNlbGZTaXplT2Zmc2V0
OwogICAgICAgICB2YXIgbm9kZVR5cGVPZmZzZXQgPSB0aGlzLl9ub2RlVHlwZU9mZnNldDsKLSAg
ICAgICAgdmFyIHBhZ2VPYmplY3RGbGFnID0gdGhpcy5fbm9kZUZsYWdzLnBhZ2VPYmplY3Q7CiAg
ICAgICAgIHZhciBub2RlID0gdGhpcy5yb290Tm9kZSgpOwogICAgICAgICB2YXIgZGlzdGFuY2Vz
VG9XaW5kb3cgPSB0aGlzLl9kaXN0YW5jZXNUb1dpbmRvdzsKIAogICAgICAgICBmb3IgKHZhciBu
b2RlSW5kZXggPSAwOyBub2RlSW5kZXggPCBub2Rlc0xlbmd0aDsgbm9kZUluZGV4ICs9IG5vZGVG
aWVsZENvdW50KSB7CiAgICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBub2RlSW5kZXggLyBu
b2RlRmllbGRDb3VudDsKLSAgICAgICAgICAgIGlmICghKGZsYWdzW25vZGVPcmRpbmFsXSAmIHBh
Z2VPYmplY3RGbGFnKSkKKyAgICAgICAgICAgIGlmIChmbGFncyAmJiAhKGZsYWdzW25vZGVPcmRp
bmFsXSAmIGZsYWcpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgbm9k
ZS5ub2RlSW5kZXggPSBub2RlSW5kZXg7CiAgICAgICAgICAgICBpZiAoZmlsdGVyICYmICFmaWx0
ZXIobm9kZSkpCkBAIC05MDIsOCArOTI1LDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBub2RlTmF0aXZlVHlwZSA9IHRoaXMuX25vZGVOYXRp
dmVUeXBlOwogICAgICAgICB2YXIgZG9taW5hdGVkTm9kZXMgPSB0aGlzLl9kb21pbmF0ZWROb2Rl
czsKICAgICAgICAgdmFyIG5vZGVzID0gdGhpcy5fbm9kZXM7Ci0gICAgICAgIHZhciBmbGFncyA9
IHRoaXMuX2ZsYWdzOwotICAgICAgICB2YXIgcGFnZU9iamVjdEZsYWcgPSB0aGlzLl9ub2RlRmxh
Z3MucGFnZU9iamVjdDsKKyAgICAgICAgdmFyIG1hcEFuZEZsYWcgPSB0aGlzLnVzZXJPYmplY3Rz
TWFwQW5kRmxhZygpOworICAgICAgICB2YXIgZmxhZ3MgPSBtYXBBbmRGbGFnID8gbWFwQW5kRmxh
Zy5tYXAgOiBudWxsOworICAgICAgICB2YXIgZmxhZyA9IG1hcEFuZEZsYWcgPyBtYXBBbmRGbGFn
LmZsYWcgOiAwOwogICAgICAgICB2YXIgZmlyc3REb21pbmF0ZWROb2RlSW5kZXggPSB0aGlzLl9m
aXJzdERvbWluYXRlZE5vZGVJbmRleDsKIAogICAgICAgICB3aGlsZSAobGlzdC5sZW5ndGgpIHsK
QEAgLTkxNiw3ICs5NDAsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHZhciBkb21pbmF0ZWRJbmRleFRvID0gZmlyc3REb21pbmF0ZWROb2Rl
SW5kZXhbbm9kZU9yZGluYWwgKyAxXTsKIAogICAgICAgICAgICAgaWYgKCFzZWVuICYmCi0gICAg
ICAgICAgICAgICAgKGZsYWdzW25vZGVPcmRpbmFsXSAmIHBhZ2VPYmplY3RGbGFnKSAmJgorICAg
ICAgICAgICAgICAgICghZmxhZ3MgfHwgKGZsYWdzW25vZGVPcmRpbmFsXSAmIGZsYWcpKSAmJgog
ICAgICAgICAgICAgICAgICghZmlsdGVyIHx8IGZpbHRlcihub2RlKSkgJiYKICAgICAgICAgICAg
ICAgICAobm9kZS5zZWxmU2l6ZSgpIHx8IG5vZGVzW25vZGVJbmRleCArIG5vZGVUeXBlT2Zmc2V0
XSA9PT0gbm9kZU5hdGl2ZVR5cGUpCiAgICAgICAgICAgICAgICApIHsKQEAgLTk2Nyw4ICs5OTEs
OSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFy
IGNvbnRhaW5tZW50RWRnZXMgPSB0aGlzLl9jb250YWlubWVudEVkZ2VzOwogICAgICAgICB2YXIg
Y29udGFpbm1lbnRFZGdlc0xlbmd0aCA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXMubGVuZ3RoOwog
Ci0gICAgICAgIHZhciBmbGFncyA9IHRoaXMuX2ZsYWdzOwotICAgICAgICB2YXIgZmxhZyA9IHRo
aXMuX25vZGVGbGFncy5wYWdlT2JqZWN0OworICAgICAgICB2YXIgbWFwQW5kRmxhZyA9IHRoaXMu
dXNlck9iamVjdHNNYXBBbmRGbGFnKCk7CisgICAgICAgIHZhciBmbGFncyA9IG1hcEFuZEZsYWcg
PyBtYXBBbmRGbGFnLm1hcCA6IG51bGw7CisgICAgICAgIHZhciBmbGFnID0gbWFwQW5kRmxhZyA/
IG1hcEFuZEZsYWcuZmxhZyA6IDA7CiAKICAgICAgICAgdmFyIG5vZGVzVG9WaXNpdCA9IG5ldyBV
aW50MzJBcnJheShub2RlQ291bnQpOwogICAgICAgICB2YXIgcG9zdE9yZGVySW5kZXgyTm9kZU9y
ZGluYWwgPSBuZXcgVWludDMyQXJyYXkobm9kZUNvdW50KTsKQEAgLTk4NCw5ICsxMDA5LDEwIEBA
IFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogCiAgICAgICAgIHdoaWxl
IChub2Rlc1RvVmlzaXRMZW5ndGgpIHsKICAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IG5v
ZGVzVG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGggLSAxXTsKKwogICAgICAgICAgICAgaWYgKHBh
aW50ZWRbbm9kZU9yZGluYWxdID09PSBncmV5KSB7CiAgICAgICAgICAgICAgICAgcGFpbnRlZFtu
b2RlT3JkaW5hbF0gPSBibGFjazsKLSAgICAgICAgICAgICAgICB2YXIgbm9kZUZsYWcgPSBmbGFn
c1tub2RlT3JkaW5hbF0gJiBmbGFnOworICAgICAgICAgICAgICAgIHZhciBub2RlRmxhZyA9ICFm
bGFncyB8fCAoZmxhZ3Nbbm9kZU9yZGluYWxdICYgZmxhZyk7CiAgICAgICAgICAgICAgICAgdmFy
IGJlZ2luRWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3JkaW5hbF07CiAgICAgICAg
ICAgICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9yZGluYWwg
KyAxXTsKICAgICAgICAgICAgICAgICBmb3IgKHZhciBlZGdlSW5kZXggPSBiZWdpbkVkZ2VJbmRl
eDsgZWRnZUluZGV4IDwgZW5kRWRnZUluZGV4OyBlZGdlSW5kZXggKz0gZWRnZUZpZWxkc0NvdW50
KSB7CkBAIC05OTQsNyArMTAyMCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgICAgIHZhciBjaGlsZE5vZGVJbmRleCA9IGNvbnRhaW5tZW50RWRnZXNbZWRnZUluZGV4ICsg
ZWRnZVRvTm9kZU9mZnNldF07CiAgICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRp
bmFsID0gY2hpbGROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIGNoaWxkTm9kZUZsYWcgPSBmbGFnc1tjaGlsZE5vZGVPcmRpbmFsXSAmIGZsYWc7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVGbGFnID0gIWZsYWdzIHx8IChmbGFnc1tj
aGlsZE5vZGVPcmRpbmFsXSAmIGZsYWcpOwogICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUg
c2tpcHBpbmcgdGhlIGVkZ2VzIGZyb20gbm9uLXBhZ2Utb3duZWQgbm9kZXMgdG8gcGFnZS1vd25l
ZCBub2Rlcy4KICAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBkb21pbmF0b3Jz
IGZvciB0aGUgb2JqZWN0cyB0aGF0IGFsc28gd2VyZSByZXRhaW5lZCBieSBkZWJ1Z2dlciB3b3Vs
ZCBiZSBhZmZlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGVPcmRpbmFsICE9PSBy
b290Tm9kZU9yZGluYWwgJiYgY2hpbGROb2RlRmxhZyAmJiAhbm9kZUZsYWcpCkBAIC0xMDQwLDgg
KzEwNjYsOSBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAg
ICAgdmFyIGNvbnRhaW5tZW50RWRnZXNMZW5ndGggPSB0aGlzLl9jb250YWlubWVudEVkZ2VzLmxl
bmd0aDsKICAgICAgICAgdmFyIHJvb3ROb2RlSW5kZXggPSB0aGlzLl9yb290Tm9kZUluZGV4Owog
Ci0gICAgICAgIHZhciBmbGFncyA9IHRoaXMuX2ZsYWdzOwotICAgICAgICB2YXIgZmxhZyA9IHRo
aXMuX25vZGVGbGFncy5wYWdlT2JqZWN0OworICAgICAgICB2YXIgbWFwQW5kRmxhZyA9IHRoaXMu
dXNlck9iamVjdHNNYXBBbmRGbGFnKCk7CisgICAgICAgIHZhciBmbGFncyA9IG1hcEFuZEZsYWcg
PyBtYXBBbmRGbGFnLm1hcCA6IG51bGw7CisgICAgICAgIHZhciBmbGFnID0gbWFwQW5kRmxhZyA/
IG1hcEFuZEZsYWcuZmxhZyA6IDA7CiAKICAgICAgICAgdmFyIG5vZGVzQ291bnQgPSBwb3N0T3Jk
ZXJJbmRleDJOb2RlT3JkaW5hbC5sZW5ndGg7CiAgICAgICAgIHZhciByb290UG9zdE9yZGVyZWRJ
bmRleCA9IG5vZGVzQ291bnQgLSAxOwpAQCAtMTA4MCw3ICsxMTA3LDcgQEAgV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgaWYgKGRvbWluYXRv
cnNbcG9zdE9yZGVySW5kZXhdID09PSByb290UG9zdE9yZGVyZWRJbmRleCkKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgbm9kZU9yZGluYWwgPSBwb3N0T3Jk
ZXJJbmRleDJOb2RlT3JkaW5hbFtwb3N0T3JkZXJJbmRleF07Ci0gICAgICAgICAgICAgICAgdmFy
IG5vZGVGbGFnID0gISEoZmxhZ3Nbbm9kZU9yZGluYWxdICYgZmxhZyk7CisgICAgICAgICAgICAg
ICAgdmFyIG5vZGVGbGFnID0gIWZsYWdzIHx8IChmbGFnc1tub2RlT3JkaW5hbF0gJiBmbGFnKTsK
ICAgICAgICAgICAgICAgICB2YXIgbmV3RG9taW5hdG9ySW5kZXggPSBub0VudHJ5OwogICAgICAg
ICAgICAgICAgIHZhciBiZWdpblJldGFpbmVySW5kZXggPSBmaXJzdFJldGFpbmVySW5kZXhbbm9k
ZU9yZGluYWxdOwogICAgICAgICAgICAgICAgIHZhciBlbmRSZXRhaW5lckluZGV4ID0gZmlyc3RS
ZXRhaW5lckluZGV4W25vZGVPcmRpbmFsICsgMV07CkBAIC0xMDkxLDcgKzExMTgsNyBAQCBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKHJldGFpbmVyTm9kZUluZGV4ICE9PSByb290Tm9kZUluZGV4ICYmIHJldGFpbmVyRWRnZVR5
cGUgPT09IGVkZ2VTaG9ydGN1dFR5cGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAgICAgdmFyIHJldGFpbmVyTm9kZU9yZGluYWwgPSByZXRhaW5l
ck5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50OwotICAgICAgICAgICAgICAgICAgICB2YXIgcmV0
YWluZXJOb2RlRmxhZyA9ICEhKGZsYWdzW3JldGFpbmVyTm9kZU9yZGluYWxdICYgZmxhZyk7Cisg
ICAgICAgICAgICAgICAgICAgIHZhciByZXRhaW5lck5vZGVGbGFnID0gIWZsYWdzIHx8IChmbGFn
c1tyZXRhaW5lck5vZGVPcmRpbmFsXSAmIGZsYWcpOwogICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBhcmUgc2tpcHBpbmcgdGhlIGVkZ2VzIGZyb20gbm9uLXBhZ2Utb3duZWQgbm9kZXMgdG8gcGFn
ZS1vd25lZCBub2Rlcy4KICAgICAgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHRoZSBkb21p
bmF0b3JzIGZvciB0aGUgb2JqZWN0cyB0aGF0IGFsc28gd2VyZSByZXRhaW5lZCBieSBkZWJ1Z2dl
ciB3b3VsZCBiZSBhZmZlY3RlZC4KICAgICAgICAgICAgICAgICAgICAgaWYgKHJldGFpbmVyTm9k
ZUluZGV4ICE9PSByb290Tm9kZUluZGV4ICYmIG5vZGVGbGFnICYmICFyZXRhaW5lck5vZGVGbGFn
KQpAQCAtMTIwOSwyOSArMTIzNiw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90
eXBlID0gewogCiAgICAgX21hcmtJbnZpc2libGVFZGdlczogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgLy8gTWFyayBoaWRkZW4gZWRnZXMgb2YgZ2xvYmFsIG9iamVjdHMgYXMgaW52aXNpYmxl
LgotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSBtZWFzdXJlLiBOb3JtYWxs
eSwgd2Ugc2hvdWxkCi0gICAgICAgIC8vIHJlYWxseSBoaWRlIGFsbCBoaWRkZW4gbm9kZXMuCi0g
ICAgICAgIGZvciAodmFyIGl0ZXIgPSB0aGlzLnJvb3ROb2RlKCkuZWRnZXMoKTsgaXRlci5oYXNO
ZXh0KCk7IGl0ZXIubmV4dCgpKSB7Ci0gICAgICAgICAgICB2YXIgZWRnZSA9IGl0ZXIuZWRnZTsK
LSAgICAgICAgICAgIGlmICghZWRnZS5pc1Nob3J0Y3V0KCkpCi0gICAgICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IGVkZ2Uubm9kZSgpOwotICAgICAgICAgICAg
dmFyIHByb3BOYW1lcyA9IHt9OwotICAgICAgICAgICAgZm9yICh2YXIgaW5uZXJJdGVyID0gbm9k
ZS5lZGdlcygpOyBpbm5lckl0ZXIuaGFzTmV4dCgpOyBpbm5lckl0ZXIubmV4dCgpKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGdsb2JhbE9iakVkZ2UgPSBpbm5lckl0ZXIuZWRnZTsKLSAgICAgICAg
ICAgICAgICBpZiAoZ2xvYmFsT2JqRWRnZS5pc1Nob3J0Y3V0KCkpCi0gICAgICAgICAgICAgICAg
ICAgIHByb3BOYW1lc1tnbG9iYWxPYmpFZGdlLl9uYW1lT3JJbmRleCgpXSA9IHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKGlubmVySXRlci5maXJzdCgpOyBpbm5lckl0ZXIu
aGFzTmV4dCgpOyBpbm5lckl0ZXIubmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGdsb2Jh
bE9iakVkZ2UgPSBpbm5lckl0ZXIuZWRnZTsKLSAgICAgICAgICAgICAgICBpZiAoIWdsb2JhbE9i
akVkZ2UuaXNTaG9ydGN1dCgpCi0gICAgICAgICAgICAgICAgICAgICYmIGdsb2JhbE9iakVkZ2Uu
bm9kZSgpLmlzSGlkZGVuKCkKLSAgICAgICAgICAgICAgICAgICAgJiYgZ2xvYmFsT2JqRWRnZS5f
aGFzU3RyaW5nTmFtZSgpCi0gICAgICAgICAgICAgICAgICAgICYmIChnbG9iYWxPYmpFZGdlLl9u
YW1lT3JJbmRleCgpIGluIHByb3BOYW1lcykpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2Nv
bnRhaW5tZW50RWRnZXNbZ2xvYmFsT2JqRWRnZS5fZWRnZXMuX3N0YXJ0ICsgZ2xvYmFsT2JqRWRn
ZS5lZGdlSW5kZXggKyB0aGlzLl9lZGdlVHlwZU9mZnNldF0gPSB0aGlzLl9lZGdlSW52aXNpYmxl
VHlwZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
Ik5vdCBpbXBsZW1lbnRlZCIpOwogICAgIH0sCiAKICAgICBfbnVtYmVyc0NvbXBhcmF0b3I6IGZ1
bmN0aW9uKGEsIGIpCkBAIC0xMjM5LDEzNyArMTI0NCwxNCBAQCBXZWJJbnNwZWN0b3IuSGVhcFNu
YXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGEgPCBiID8gLTEgOiAoYSA+IGIg
PyAxIDogMCk7CiAgICAgfSwKIAotICAgIF9tYXJrRGV0YWNoZWRET01UcmVlTm9kZXM6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBmbGFnID0gdGhpcy5fbm9kZUZsYWdzLmRldGFjaGVk
RE9NVHJlZU5vZGU7Ci0gICAgICAgIHZhciBkZXRhY2hlZERPTVRyZWVzUm9vdDsKLSAgICAgICAg
Zm9yICh2YXIgaXRlciA9IHRoaXMucm9vdE5vZGUoKS5lZGdlcygpOyBpdGVyLmhhc05leHQoKTsg
aXRlci5uZXh0KCkpIHsKLSAgICAgICAgICAgIHZhciBub2RlID0gaXRlci5lZGdlLm5vZGUoKTsK
LSAgICAgICAgICAgIGlmIChub2RlLmlzRGV0YWNoZWRET01UcmVlc1Jvb3QoKSkgewotICAgICAg
ICAgICAgICAgIGRldGFjaGVkRE9NVHJlZXNSb290ID0gbm9kZTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICghZGV0YWNoZWRE
T01UcmVlc1Jvb3QpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yICh2YXIgaXRl
ciA9IGRldGFjaGVkRE9NVHJlZXNSb290LmVkZ2VzKCk7IGl0ZXIuaGFzTmV4dCgpOyBpdGVyLm5l
eHQoKSkgewotICAgICAgICAgICAgdmFyIG5vZGUgPSBpdGVyLmVkZ2Uubm9kZSgpOwotICAgICAg
ICAgICAgaWYgKG5vZGUuaXNEZXRhY2hlZERPTVRyZWUoKSkgewotICAgICAgICAgICAgICAgIGZv
ciAodmFyIGVkZ2VzSXRlciA9IG5vZGUuZWRnZXMoKTsgZWRnZXNJdGVyLmhhc05leHQoKTsgZWRn
ZXNJdGVyLm5leHQoKSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmxhZ3NbZWRnZXNJdGVy
LmVkZ2Uubm9kZSgpLm5vZGVJbmRleCAvIHRoaXMuX25vZGVGaWVsZENvdW50XSB8PSBmbGFnOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfSwKLQotICAgIF9tYXJrUGFnZU93bmVkTm9k
ZXM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBlZGdlU2hvcnRjdXRUeXBlID0gdGhp
cy5fZWRnZVNob3J0Y3V0VHlwZTsKLSAgICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlz
Ll9lZGdlVG9Ob2RlT2Zmc2V0OwotICAgICAgICB2YXIgZWRnZVR5cGVPZmZzZXQgPSB0aGlzLl9l
ZGdlVHlwZU9mZnNldDsKLSAgICAgICAgdmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMuX2VkZ2VG
aWVsZHNDb3VudDsKLSAgICAgICAgdmFyIGVkZ2VXZWFrVHlwZSA9IHRoaXMuX2VkZ2VXZWFrVHlw
ZTsKLSAgICAgICAgdmFyIGZpcnN0RWRnZUluZGV4ZXMgPSB0aGlzLl9maXJzdEVkZ2VJbmRleGVz
OwotICAgICAgICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXM7
Ci0gICAgICAgIHZhciBjb250YWlubWVudEVkZ2VzTGVuZ3RoID0gY29udGFpbm1lbnRFZGdlcy5s
ZW5ndGg7Ci0gICAgICAgIHZhciBub2RlcyA9IHRoaXMuX25vZGVzOwotICAgICAgICB2YXIgbm9k
ZUZpZWxkQ291bnQgPSB0aGlzLl9ub2RlRmllbGRDb3VudDsKLSAgICAgICAgdmFyIG5vZGVzQ291
bnQgPSB0aGlzLm5vZGVDb3VudDsKLQotICAgICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9mbGFnczsK
LSAgICAgICAgdmFyIGZsYWcgPSB0aGlzLl9ub2RlRmxhZ3MucGFnZU9iamVjdDsKLSAgICAgICAg
dmFyIHZpc2l0ZWRNYXJrZXIgPSB0aGlzLl9ub2RlRmxhZ3MudmlzaXRlZE1hcmtlcjsKLSAgICAg
ICAgdmFyIHZpc2l0ZWRNYXJrZXJNYXNrID0gdGhpcy5fbm9kZUZsYWdzLnZpc2l0ZWRNYXJrZXJN
YXNrOwotICAgICAgICB2YXIgbWFya2VyQW5kRmxhZyA9IHZpc2l0ZWRNYXJrZXIgfCBmbGFnOwot
Ci0gICAgICAgIHZhciBub2Rlc1RvVmlzaXQgPSBuZXcgVWludDMyQXJyYXkobm9kZXNDb3VudCk7
Ci0gICAgICAgIHZhciBub2Rlc1RvVmlzaXRMZW5ndGggPSAwOwotCi0gICAgICAgIHZhciByb290
Tm9kZU9yZGluYWwgPSB0aGlzLl9yb290Tm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7Ci0gICAg
ICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4ZXNbcm9vdE5vZGVPcmRpbmFs
XSwgZW5kRWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tyb290Tm9kZU9yZGluYWwgKyAxXTsK
LSAgICAgICAgICAgICBlZGdlSW5kZXggPCBlbmRFZGdlSW5kZXg7Ci0gICAgICAgICAgICAgZWRn
ZUluZGV4ICs9IGVkZ2VGaWVsZHNDb3VudCkgewotICAgICAgICAgICAgaWYgKGNvbnRhaW5tZW50
RWRnZXNbZWRnZUluZGV4ICsgZWRnZVR5cGVPZmZzZXRdID09PSBlZGdlU2hvcnRjdXRUeXBlKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIG5vZGVPcmRpbmFsID0gY29udGFpbm1lbnRFZGdlc1tlZGdl
SW5kZXggKyBlZGdlVG9Ob2RlT2Zmc2V0XSAvIG5vZGVGaWVsZENvdW50OwotICAgICAgICAgICAg
ICAgIG5vZGVzVG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGgrK10gPSBub2RlT3JkaW5hbDsKLSAg
ICAgICAgICAgICAgICBmbGFnc1tub2RlT3JkaW5hbF0gfD0gdmlzaXRlZE1hcmtlcjsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHdoaWxlIChub2Rlc1RvVmlzaXRMZW5ndGgp
IHsKLSAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IG5vZGVzVG9WaXNpdFstLW5vZGVzVG9W
aXNpdExlbmd0aF07Ci0gICAgICAgICAgICBmbGFnc1tub2RlT3JkaW5hbF0gfD0gZmxhZzsKLSAg
ICAgICAgICAgIGZsYWdzW25vZGVPcmRpbmFsXSAmPSB2aXNpdGVkTWFya2VyTWFzazsKLSAgICAg
ICAgICAgIHZhciBiZWdpbkVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9yZGluYWxd
OwotICAgICAgICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9y
ZGluYWwgKyAxXTsKLSAgICAgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9IGJlZ2luRWRnZUlu
ZGV4OyBlZGdlSW5kZXggPCBlbmRFZGdlSW5kZXg7IGVkZ2VJbmRleCArPSBlZGdlRmllbGRzQ291
bnQpIHsKLSAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlSW5kZXggPSBjb250YWlubWVudEVk
Z2VzW2VkZ2VJbmRleCArIGVkZ2VUb05vZGVPZmZzZXRdOwotICAgICAgICAgICAgICAgIHZhciBj
aGlsZE5vZGVPcmRpbmFsID0gY2hpbGROb2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKLSAgICAg
ICAgICAgICAgICBpZiAoZmxhZ3NbY2hpbGROb2RlT3JkaW5hbF0gJiBtYXJrZXJBbmRGbGFnKQot
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB2YXIgdHlwZSA9
IGNvbnRhaW5tZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVR5cGVPZmZzZXRdOwotICAgICAgICAg
ICAgICAgIGlmICh0eXBlID09PSBlZGdlV2Vha1R5cGUpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICAgICAgICAgIG5vZGVzVG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGgr
K10gPSBjaGlsZE5vZGVPcmRpbmFsOwotICAgICAgICAgICAgICAgIGZsYWdzW2NoaWxkTm9kZU9y
ZGluYWxdIHw9IHZpc2l0ZWRNYXJrZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9
LAotCi0gICAgX21hcmtRdWVyaWFibGVIZWFwT2JqZWN0czogZnVuY3Rpb24oKQorICAgIF9jYWxj
dWxhdGVGbGFnczogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgLy8gQWxsb3cgcnVudGltZSBw
cm9wZXJ0aWVzIHF1ZXJ5IGZvciBvYmplY3RzIGFjY2Vzc2libGUgZnJvbSBXaW5kb3cgb2JqZWN0
cwotICAgICAgICAvLyB2aWEgcmVndWxhciBwcm9wZXJ0aWVzLCBhbmQgZm9yIERPTSB3cmFwcGVy
cy4gVHJ5aW5nIHRvIGFjY2VzcyByYW5kb20gb2JqZWN0cwotICAgICAgICAvLyBjYW4gY2F1c2Ug
YSBjcmFzaCBkdWUgdG8gaW5zb25zaXN0ZW50IHN0YXRlIG9mIGludGVybmFsIHByb3BlcnRpZXMg
b2Ygd3JhcHBlcnMuCi0gICAgICAgIHZhciBmbGFnID0gdGhpcy5fbm9kZUZsYWdzLmNhbkJlUXVl
cmllZDsKLSAgICAgICAgdmFyIGhpZGRlbkVkZ2VUeXBlID0gdGhpcy5fZWRnZUhpZGRlblR5cGU7
Ci0gICAgICAgIHZhciBpbnRlcm5hbEVkZ2VUeXBlID0gdGhpcy5fZWRnZUludGVybmFsVHlwZTsK
LSAgICAgICAgdmFyIGludmlzaWJsZUVkZ2VUeXBlID0gdGhpcy5fZWRnZUludmlzaWJsZVR5cGU7
Ci0gICAgICAgIHZhciB3ZWFrRWRnZVR5cGUgPSB0aGlzLl9lZGdlV2Vha1R5cGU7Ci0gICAgICAg
IHZhciBlZGdlVG9Ob2RlT2Zmc2V0ID0gdGhpcy5fZWRnZVRvTm9kZU9mZnNldDsKLSAgICAgICAg
dmFyIGVkZ2VUeXBlT2Zmc2V0ID0gdGhpcy5fZWRnZVR5cGVPZmZzZXQ7Ci0gICAgICAgIHZhciBl
ZGdlRmllbGRzQ291bnQgPSB0aGlzLl9lZGdlRmllbGRzQ291bnQ7Ci0gICAgICAgIHZhciBjb250
YWlubWVudEVkZ2VzID0gdGhpcy5fY29udGFpbm1lbnRFZGdlczsKLSAgICAgICAgdmFyIG5vZGVz
ID0gdGhpcy5fbm9kZXM7Ci0gICAgICAgIHZhciBub2RlQ291bnQgPSB0aGlzLm5vZGVDb3VudDsK
LSAgICAgICAgdmFyIG5vZGVGaWVsZENvdW50ID0gdGhpcy5fbm9kZUZpZWxkQ291bnQ7Ci0gICAg
ICAgIHZhciBmaXJzdEVkZ2VJbmRleGVzID0gdGhpcy5fZmlyc3RFZGdlSW5kZXhlczsKLQotICAg
ICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9mbGFnczsKLSAgICAgICAgdmFyIGxpc3QgPSBbXTsKLQot
ICAgICAgICBmb3IgKHZhciBpdGVyID0gdGhpcy5yb290Tm9kZSgpLmVkZ2VzKCk7IGl0ZXIuaGFz
TmV4dCgpOyBpdGVyLm5leHQoKSkgewotICAgICAgICAgICAgaWYgKGl0ZXIuZWRnZS5ub2RlKCku
aXNXaW5kb3coKSkKLSAgICAgICAgICAgICAgICBsaXN0LnB1c2goaXRlci5lZGdlLm5vZGUoKS5u
b2RlSW5kZXggLyBub2RlRmllbGRDb3VudCk7Ci0gICAgICAgIH0KLQotICAgICAgICB3aGlsZSAo
bGlzdC5sZW5ndGgpIHsKLSAgICAgICAgICAgIHZhciBub2RlT3JkaW5hbCA9IGxpc3QucG9wKCk7
Ci0gICAgICAgICAgICBpZiAoZmxhZ3Nbbm9kZU9yZGluYWxdICYgZmxhZykKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGZsYWdzW25vZGVPcmRpbmFsXSB8PSBmbGFnOwot
ICAgICAgICAgICAgdmFyIGJlZ2luRWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tub2RlT3Jk
aW5hbF07Ci0gICAgICAgICAgICB2YXIgZW5kRWRnZUluZGV4ID0gZmlyc3RFZGdlSW5kZXhlc1tu
b2RlT3JkaW5hbCArIDFdOwotICAgICAgICAgICAgZm9yICh2YXIgZWRnZUluZGV4ID0gYmVnaW5F
ZGdlSW5kZXg7IGVkZ2VJbmRleCA8IGVuZEVkZ2VJbmRleDsgZWRnZUluZGV4ICs9IGVkZ2VGaWVs
ZHNDb3VudCkgewotICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVJbmRleCA9IGNvbnRhaW5t
ZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVRvTm9kZU9mZnNldF07Ci0gICAgICAgICAgICAgICAg
dmFyIGNoaWxkTm9kZU9yZGluYWwgPSBjaGlsZE5vZGVJbmRleCAvIG5vZGVGaWVsZENvdW50Owot
ICAgICAgICAgICAgICAgIGlmIChmbGFnc1tjaGlsZE5vZGVPcmRpbmFsXSAmIGZsYWcpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIHZhciB0eXBlID0gY29u
dGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVHlwZU9mZnNldF07Ci0gICAgICAgICAgICAg
ICAgaWYgKHR5cGUgPT09IGhpZGRlbkVkZ2VUeXBlIHx8IHR5cGUgPT09IGludmlzaWJsZUVkZ2VU
eXBlIHx8IHR5cGUgPT09IGludGVybmFsRWRnZVR5cGUgfHwgdHlwZSA9PT0gd2Vha0VkZ2VUeXBl
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBsaXN0LnB1
c2goY2hpbGROb2RlT3JkaW5hbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJOb3QgaW1wbGVtZW50ZWQiKTsKICAgICB9LAogCi0gICAgX2NhbGN1
bGF0ZUZsYWdzOiBmdW5jdGlvbigpCisgICAgdXNlck9iamVjdHNNYXBBbmRGbGFnOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICB0aGlzLl9mbGFncyA9IG5ldyBVaW50MzJBcnJheSh0aGlzLm5v
ZGVDb3VudCk7Ci0gICAgICAgIHRoaXMuX21hcmtEZXRhY2hlZERPTVRyZWVOb2RlcygpOwotICAg
ICAgICB0aGlzLl9tYXJrUXVlcmlhYmxlSGVhcE9iamVjdHMoKTsKLSAgICAgICAgdGhpcy5fbWFy
a1BhZ2VPd25lZE5vZGVzKCk7CisgICAgICAgIHRocm93IG5ldyBFcnJvcigiTm90IGltcGxlbWVu
dGVkIik7CiAgICAgfSwKIAogICAgIGNhbGN1bGF0ZVNuYXBzaG90RGlmZjogZnVuY3Rpb24oYmFz
ZVNuYXBzaG90SWQsIGJhc2VTbmFwc2hvdEFnZ3JlZ2F0ZXMpCkBAIC0xNTE2LDcgKzEzOTgsNyBA
QCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICBjcmVhdGVOb2Rl
c1Byb3ZpZGVyRm9yQ2xhc3M6IGZ1bmN0aW9uKGNsYXNzTmFtZSwgYWdncmVnYXRlc0tleSkKICAg
ICB7CiAgICAgICAgIGZ1bmN0aW9uIGZpbHRlcihub2RlKSB7Ci0gICAgICAgICAgICByZXR1cm4g
bm9kZS5pc1BhZ2VPYmplY3QoKTsKKyAgICAgICAgICAgIHJldHVybiBub2RlLmlzVXNlck9iamVj
dCgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFw
c2hvdE5vZGVzUHJvdmlkZXIodGhpcywgZmlsdGVyLCB0aGlzLmFnZ3JlZ2F0ZXMoZmFsc2UsIGFn
Z3JlZ2F0ZXNLZXkpW2NsYXNzTmFtZV0uaWR4cyk7CiAgICAgfSwKQEAgLTE1MjksNyArMTQxMSw3
IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3QucHJvdG90eXBlID0gewogCiAgICAgdXBkYXRl
U3RhdGljRGF0YTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHtub2RlQ291bnQ6
IHRoaXMubm9kZUNvdW50LCByb290Tm9kZUluZGV4OiB0aGlzLl9yb290Tm9kZUluZGV4LCB0b3Rh
bFNpemU6IHRoaXMudG90YWxTaXplLCB1aWQ6IHRoaXMudWlkLCBub2RlRmxhZ3M6IHRoaXMuX25v
ZGVGbGFnc307CisgICAgICAgIHJldHVybiB7bm9kZUNvdW50OiB0aGlzLm5vZGVDb3VudCwgcm9v
dE5vZGVJbmRleDogdGhpcy5fcm9vdE5vZGVJbmRleCwgdG90YWxTaXplOiB0aGlzLnRvdGFsU2l6
ZSwgdWlkOiB0aGlzLnVpZH07CiAgICAgfQogfTsKIApAQCAtMTU2MSwxMCArMTQ0MywxMCBAQCBX
ZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJvdG90eXBl
ID0gewogICAgICAgICB0aGlzLl9pdGVyYXRpb25PcmRlciA9IFtdOwogICAgICAgICB2YXIgaXRl
cmF0b3IgPSB0aGlzLl9pdGVyYXRvcjsKICAgICAgICAgaWYgKCF0aGlzLl91bmZpbHRlcmVkSXRl
cmF0aW9uT3JkZXIgJiYgIXRoaXMuX2ZpbHRlcikgewotICAgICAgICAgICAgZm9yIChpdGVyYXRv
ci5maXJzdCgpOyBpdGVyYXRvci5oYXNOZXh0KCk7IGl0ZXJhdG9yLm5leHQoKSkKKyAgICAgICAg
ICAgIGZvciAoaXRlcmF0b3IucmV3aW5kKCk7IGl0ZXJhdG9yLmhhc05leHQoKTsgaXRlcmF0b3Iu
bmV4dCgpKQogICAgICAgICAgICAgICAgIHRoaXMuX2l0ZXJhdGlvbk9yZGVyLnB1c2goaXRlcmF0
b3IuaW5kZXgoKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuX3VuZmlsdGVyZWRJdGVyYXRp
b25PcmRlcikgewotICAgICAgICAgICAgZm9yIChpdGVyYXRvci5maXJzdCgpOyBpdGVyYXRvci5o
YXNOZXh0KCk7IGl0ZXJhdG9yLm5leHQoKSkgeworICAgICAgICAgICAgZm9yIChpdGVyYXRvci5y
ZXdpbmQoKTsgaXRlcmF0b3IuaGFzTmV4dCgpOyBpdGVyYXRvci5uZXh0KCkpIHsKICAgICAgICAg
ICAgICAgICBpZiAodGhpcy5fZmlsdGVyKGl0ZXJhdG9yLml0ZW0oKSkpCiAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX2l0ZXJhdGlvbk9yZGVyLnB1c2goaXRlcmF0b3IuaW5kZXgoKSk7CiAgICAg
ICAgICAgICB9CkBAIC0xNTgwLDcgKzE0NjIsNyBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
RmlsdGVyZWRPcmRlcmVkSXRlcmF0b3IucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwK
IAotICAgIGZpcnN0OiBmdW5jdGlvbigpCisgICAgcmV3aW5kOiBmdW5jdGlvbigpCiAgICAgewog
ICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IDA7CiAgICAgfSwKQEAgLTE1OTgsMTAgKzE0ODAsMTAg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVkT3JkZXJlZEl0ZXJhdG9yLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiAhdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9y
ZGVyLmxlbmd0aDsKICAgICAgICAgdmFyIGl0ZXJhdG9yID0gdGhpcy5faXRlcmF0b3I7CiAgICAg
ICAgIGlmICghdGhpcy5fdW5maWx0ZXJlZEl0ZXJhdGlvbk9yZGVyICYmICF0aGlzLl9maWx0ZXIp
IHsKLSAgICAgICAgICAgIGl0ZXJhdG9yLmZpcnN0KCk7CisgICAgICAgICAgICBpdGVyYXRvci5y
ZXdpbmQoKTsKICAgICAgICAgICAgIHJldHVybiAhaXRlcmF0b3IuaGFzTmV4dCgpOwogICAgICAg
ICB9IGVsc2UgaWYgKCF0aGlzLl91bmZpbHRlcmVkSXRlcmF0aW9uT3JkZXIpIHsKLSAgICAgICAg
ICAgIGZvciAoaXRlcmF0b3IuZmlyc3QoKTsgaXRlcmF0b3IuaGFzTmV4dCgpOyBpdGVyYXRvci5u
ZXh0KCkpCisgICAgICAgICAgICBmb3IgKGl0ZXJhdG9yLnJld2luZCgpOyBpdGVyYXRvci5oYXNO
ZXh0KCk7IGl0ZXJhdG9yLm5leHQoKSkKICAgICAgICAgICAgICAgICBpZiAodGhpcy5fZmlsdGVy
KGl0ZXJhdG9yLml0ZW0oKSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfSBlbHNlIHsKQEAgLTE2NTQsNyArMTUzNiw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25h
cHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBj
b3VudCA9IGVuZCAtIGJlZ2luOwogICAgICAgICB2YXIgcmVzdWx0ID0gbmV3IEFycmF5KGNvdW50
KTsKICAgICAgICAgZm9yICh2YXIgaSA9IDAgOyBpIDwgY291bnQgJiYgdGhpcy5oYXNOZXh0KCk7
ICsraSwgdGhpcy5uZXh0KCkpCi0gICAgICAgICAgICByZXN1bHRbaV0gPSB0aGlzLnNlcmlhbGl6
ZUl0ZW0odGhpcy5pdGVtKCkpOworICAgICAgICAgICAgcmVzdWx0W2ldID0gdGhpcy5pdGVtKCku
c2VyaWFsaXplKCk7CiAgICAgICAgIHJlc3VsdC5sZW5ndGggPSBpOwogICAgICAgICByZXN1bHQu
dG90YWxMZW5ndGggPSB0aGlzLl9pdGVyYXRpb25PcmRlci5sZW5ndGg7CiAKQEAgLTE2NzYsNyAr
MTU1OCw3IEBAIFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRv
ci5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLl9jdXJyZW50Q29tcGFyYXRvciA9
IGNvbXBhcmF0b3I7CiAgICAgICAgIHRoaXMuX3NvcnRlZFByZWZpeExlbmd0aCA9IDA7Ci0gICAg
ICAgIHRoaXMuZmlyc3QoKTsKKyAgICAgICAgdGhpcy5yZXdpbmQoKTsKICAgICB9CiB9CiAKQEAg
LTE2OTYsMTggKzE1NzgsNiBAQCBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90RWRnZXNQcm92aWRl
ciA9IGZ1bmN0aW9uKHNuYXBzaG90LCBmaWx0ZXIsIGVkZ2VzSXRlcikKIH0KIAogV2ViSW5zcGVj
dG9yLkhlYXBTbmFwc2hvdEVkZ2VzUHJvdmlkZXIucHJvdG90eXBlID0gewotICAgIHNlcmlhbGl6
ZUl0ZW06IGZ1bmN0aW9uKGVkZ2UpCi0gICAgewotICAgICAgICByZXR1cm4gewotICAgICAgICAg
ICAgbmFtZTogZWRnZS5uYW1lKCksCi0gICAgICAgICAgICBwcm9wZXJ0eUFjY2Vzc29yOiBlZGdl
LnRvU3RyaW5nKCksCi0gICAgICAgICAgICBub2RlOiBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
Tm9kZXNQcm92aWRlci5wcm90b3R5cGUuc2VyaWFsaXplSXRlbShlZGdlLm5vZGUoKSksCi0gICAg
ICAgICAgICBub2RlSW5kZXg6IGVkZ2Uubm9kZUluZGV4KCksCi0gICAgICAgICAgICB0eXBlOiBl
ZGdlLnR5cGUoKSwKLSAgICAgICAgICAgIGRpc3RhbmNlVG9XaW5kb3c6IGVkZ2Uubm9kZSgpLmRp
c3RhbmNlVG9XaW5kb3coKQotICAgICAgICB9OwotICAgIH0sCi0KICAgICBzb3J0OiBmdW5jdGlv
bihjb21wYXJhdG9yLCBsZWZ0Qm91bmQsIHJpZ2h0Qm91bmQsIGNvdW50KQogICAgIHsKICAgICAg
ICAgdmFyIGZpZWxkTmFtZTEgPSBjb21wYXJhdG9yLmZpZWxkTmFtZTE7CkBAIC0xODA4LDIwICsx
Njc4LDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVzUHJvdmlkZXIucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfSwKIAotICAgIHNlcmlhbGl6ZUl0ZW06IGZ1
bmN0aW9uKG5vZGUpCi0gICAgewotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgaWQ6IG5v
ZGUuaWQoKSwKLSAgICAgICAgICAgIG5hbWU6IG5vZGUubmFtZSgpLAotICAgICAgICAgICAgZGlz
dGFuY2VUb1dpbmRvdzogbm9kZS5kaXN0YW5jZVRvV2luZG93KCksCi0gICAgICAgICAgICBub2Rl
SW5kZXg6IG5vZGUubm9kZUluZGV4LAotICAgICAgICAgICAgcmV0YWluZWRTaXplOiBub2RlLnJl
dGFpbmVkU2l6ZSgpLAotICAgICAgICAgICAgc2VsZlNpemU6IG5vZGUuc2VsZlNpemUoKSwKLSAg
ICAgICAgICAgIHR5cGU6IG5vZGUudHlwZSgpLAotICAgICAgICAgICAgZmxhZ3M6IG5vZGUuZmxh
Z3MoKQotICAgICAgICB9OwotICAgIH0sCi0KICAgICBzb3J0OiBmdW5jdGlvbihjb21wYXJhdG9y
LCBsZWZ0Qm91bmQsIHJpZ2h0Qm91bmQsIGNvdW50KQogICAgIHsKICAgICAgICAgdmFyIGZpZWxk
TmFtZTEgPSBjb21wYXJhdG9yLmZpZWxkTmFtZTE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdEdyaWROb2Rlcy5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzCmluZGV4
IDAyMDk1ZGE5ZmY1NzY0ZGRjNTc4YzBiZGU2MDJhYzM2MTNlODE2NzguLjFjOWU5N2E5ZjZiNzJi
NzRiZjcwZjUyMzczMjFlYWFkOWQyZDBkMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzCkBAIC0z
NjEsOSArMzYxLDkgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2Rl
ID0gZnVuY3Rpb24odHJlZSwgbm9kZSkKICAgICBlbHNlIGlmICh0aGlzLl90eXBlID09PSAib2Jq
ZWN0IiAmJiB0aGlzLmlzV2luZG93KHRoaXMuX25hbWUpKSB7CiAgICAgICAgIHRoaXMuX25hbWUg
PSB0aGlzLnNob3J0ZW5XaW5kb3dVUkwodGhpcy5fbmFtZSwgZmFsc2UpOwogICAgICAgICB0aGlz
Ll9yZWFjaGFibGVGcm9tV2luZG93ID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKG5vZGUuZmxhZ3Mg
JiB0cmVlLnNuYXBzaG90Lm5vZGVGbGFncy5jYW5CZVF1ZXJpZWQpCisgICAgfSBlbHNlIGlmIChu
b2RlLmNhbkJlUXVlcmllZCkKICAgICAgICAgdGhpcy5fcmVhY2hhYmxlRnJvbVdpbmRvdyA9IHRy
dWU7Ci0gICAgaWYgKG5vZGUuZmxhZ3MgJiB0cmVlLnNuYXBzaG90Lm5vZGVGbGFncy5kZXRhY2hl
ZERPTVRyZWVOb2RlKQorICAgIGlmIChub2RlLmRldGFjaGVkRE9NVHJlZU5vZGUpCiAgICAgICAg
IHRoaXMuZGV0YWNoZWRET01UcmVlTm9kZSA9IHRydWU7CiB9OwogCkBAIC01MjEsNyArNTIxLDYg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE9iamVjdE5vZGUgPSBmdW5jdGlvbih0cmVlLCBp
c0Zyb21CYXNlU25hcHNob3QsIGVkZ2UsIHAKICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90
R2VuZXJpY09iamVjdE5vZGUuY2FsbCh0aGlzLCB0cmVlLCBlZGdlLm5vZGUpOwogICAgIHRoaXMu
X3JlZmVyZW5jZU5hbWUgPSBlZGdlLm5hbWU7CiAgICAgdGhpcy5fcmVmZXJlbmNlVHlwZSA9IGVk
Z2UudHlwZTsKLSAgICB0aGlzLl9wcm9wZXJ0eUFjY2Vzc29yID0gZWRnZS5wcm9wZXJ0eUFjY2Vz
c29yOwogICAgIHRoaXMuX2Rpc3RhbmNlVG9XaW5kb3cgPSBlZGdlLmRpc3RhbmNlVG9XaW5kb3c7
CiAgICAgdGhpcy5zaG93UmV0YWluaW5nRWRnZXMgPSB0cmVlLnNob3dSZXRhaW5pbmdFZGdlczsK
ICAgICB0aGlzLl9pc0Zyb21CYXNlU25hcHNob3QgPSBpc0Zyb21CYXNlU25hcHNob3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFBy
b3h5LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9IZWFwU25hcHNob3RQ
cm94eS5qcwppbmRleCA0YWUyMjBhZDFiNDkyZmE4ZmU1M2M5NGEyZGMwNDYzZTJlYjcxZGMzLi5j
YzJiNzVhNmQxNjQ0NWRjYTJiMzAyODE0ZmU0MjJhYWJiNmI1ZDA1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdFByb3h5LmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90UHJveHkuanMK
QEAgLTQ4OCwxMSArNDg4LDYgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdFByb3h5LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRpY0RhdGEubm9kZUNvdW50OwogICAg
IH0sCiAKLSAgICBnZXQgbm9kZUZsYWdzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9z
dGF0aWNEYXRhLm5vZGVGbGFnczsKLSAgICB9LAotCiAgICAgZ2V0IHJvb3ROb2RlSW5kZXgoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXRpY0RhdGEucm9vdE5vZGVJbmRleDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSlNIZWFwU25hcHNo
b3QuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0pTSGVhcFNuYXBzaG90
LmpzCmluZGV4IDU3MTkwMjZhNzU3YTNhN2NhM2UyZTE1NjY2NDUxNTA2MjZlMmVmMjguLjk0MTY2
OTBmYzZjZDIzNGE5MjA3NmFlOWYzY2Y2MjRkYTJlZThmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSlNIZWFwU25hcHNob3QuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KU0hlYXBTbmFwc2hvdC5qcwpAQCAtMzQsNiAr
MzQsMTQgQEAKICAqLwogV2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90ID0gZnVuY3Rpb24ocHJv
ZmlsZSkKIHsKKyAgICB0aGlzLl9ub2RlRmxhZ3MgPSB7IC8vIGJpdCBmbGFncworICAgICAgICBj
YW5CZVF1ZXJpZWQ6IDEsCisgICAgICAgIGRldGFjaGVkRE9NVHJlZU5vZGU6IDIsCisgICAgICAg
IHBhZ2VPYmplY3Q6IDQsIC8vIFRoZSBpZGVhIGlzIHRvIHRyYWNrIHNlcGFyYXRlbHkgdGhlIG9i
amVjdHMgb3duZWQgYnkgdGhlIHBhZ2UgYW5kIHRoZSBvYmplY3RzIG93bmVkIGJ5IGRlYnVnZ2Vy
LgorCisgICAgICAgIHZpc2l0ZWRNYXJrZXJNYXNrOiAweDBmZmZmLCAvLyBiaXRzOiAwLDExMTEs
MTExMSwxMTExLDExMTEKKyAgICAgICAgdmlzaXRlZE1hcmtlcjogICAgIDB4MTAwMDAgIC8vIGJp
dHM6IDEsMDAwMCwwMDAwLDAwMDAsMDAwMAorICAgIH07CiAgICAgV2ViSW5zcGVjdG9yLkhlYXBT
bmFwc2hvdC5jYWxsKHRoaXMsIHByb2ZpbGUpOwogfQogCkBAIC01Myw2ICs2MSwxODUgQEAgV2Vi
SW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90LnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIG5l
dyBXZWJJbnNwZWN0b3IuSlNIZWFwU25hcHNob3RSZXRhaW5lckVkZ2UodGhpcywgcmV0YWluZWRO
b2RlSW5kZXgsIHJldGFpbmVySW5kZXgpOwogICAgIH0sCiAKKyAgICBkaXNwb3NlOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZS5k
aXNwb3NlLmNhbGwodGhpcyk7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9mbGFnczsKKyAgICB9LAor
CisgICAgX21hcmtJbnZpc2libGVFZGdlczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgLy8g
TWFyayBoaWRkZW4gZWRnZXMgb2YgZ2xvYmFsIG9iamVjdHMgYXMgaW52aXNpYmxlLgorICAgICAg
ICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSBtZWFzdXJlLiBOb3JtYWxseSwgd2Ugc2hv
dWxkCisgICAgICAgIC8vIHJlYWxseSBoaWRlIGFsbCBoaWRkZW4gbm9kZXMuCisgICAgICAgIGZv
ciAodmFyIGl0ZXIgPSB0aGlzLnJvb3ROb2RlKCkuZWRnZXMoKTsgaXRlci5oYXNOZXh0KCk7IGl0
ZXIubmV4dCgpKSB7CisgICAgICAgICAgICB2YXIgZWRnZSA9IGl0ZXIuZWRnZTsKKyAgICAgICAg
ICAgIGlmICghZWRnZS5pc1Nob3J0Y3V0KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB2YXIgbm9kZSA9IGVkZ2Uubm9kZSgpOworICAgICAgICAgICAgdmFyIHByb3BO
YW1lcyA9IHt9OworICAgICAgICAgICAgZm9yICh2YXIgaW5uZXJJdGVyID0gbm9kZS5lZGdlcygp
OyBpbm5lckl0ZXIuaGFzTmV4dCgpOyBpbm5lckl0ZXIubmV4dCgpKSB7CisgICAgICAgICAgICAg
ICAgdmFyIGdsb2JhbE9iakVkZ2UgPSBpbm5lckl0ZXIuZWRnZTsKKyAgICAgICAgICAgICAgICBp
ZiAoZ2xvYmFsT2JqRWRnZS5pc1Nob3J0Y3V0KCkpCisgICAgICAgICAgICAgICAgICAgIHByb3BO
YW1lc1tnbG9iYWxPYmpFZGdlLl9uYW1lT3JJbmRleCgpXSA9IHRydWU7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBmb3IgKGlubmVySXRlci5yZXdpbmQoKTsgaW5uZXJJdGVyLmhhc05leHQo
KTsgaW5uZXJJdGVyLm5leHQoKSkgeworICAgICAgICAgICAgICAgIHZhciBnbG9iYWxPYmpFZGdl
ID0gaW5uZXJJdGVyLmVkZ2U7CisgICAgICAgICAgICAgICAgaWYgKCFnbG9iYWxPYmpFZGdlLmlz
U2hvcnRjdXQoKQorICAgICAgICAgICAgICAgICAgICAmJiBnbG9iYWxPYmpFZGdlLm5vZGUoKS5p
c0hpZGRlbigpCisgICAgICAgICAgICAgICAgICAgICYmIGdsb2JhbE9iakVkZ2UuX2hhc1N0cmlu
Z05hbWUoKQorICAgICAgICAgICAgICAgICAgICAmJiAoZ2xvYmFsT2JqRWRnZS5fbmFtZU9ySW5k
ZXgoKSBpbiBwcm9wTmFtZXMpKQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9jb250YWlubWVu
dEVkZ2VzW2dsb2JhbE9iakVkZ2UuX2VkZ2VzLl9zdGFydCArIGdsb2JhbE9iakVkZ2UuZWRnZUlu
ZGV4ICsgdGhpcy5fZWRnZVR5cGVPZmZzZXRdID0gdGhpcy5fZWRnZUludmlzaWJsZVR5cGU7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCisgICAgX2NhbGN1bGF0ZUZsYWdzOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9mbGFncyA9IG5ldyBVaW50MzJBcnJheSh0
aGlzLm5vZGVDb3VudCk7CisgICAgICAgIHRoaXMuX21hcmtEZXRhY2hlZERPTVRyZWVOb2Rlcygp
OworICAgICAgICB0aGlzLl9tYXJrUXVlcmlhYmxlSGVhcE9iamVjdHMoKTsKKyAgICAgICAgdGhp
cy5fbWFya1BhZ2VPd25lZE5vZGVzKCk7CisgICAgfSwKKworICAgIHVzZXJPYmplY3RzTWFwQW5k
RmxhZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIG1h
cDogdGhpcy5fZmxhZ3MsCisgICAgICAgICAgICBmbGFnOiB0aGlzLl9ub2RlRmxhZ3MucGFnZU9i
amVjdAorICAgICAgICB9OworICAgIH0sCisKKyAgICBfZmxhZ3NPZk5vZGU6IGZ1bmN0aW9uKG5v
ZGUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZmxhZ3Nbbm9kZS5ub2RlSW5kZXggLyB0
aGlzLl9ub2RlRmllbGRDb3VudF07CisgICAgfSwKKworICAgIF9tYXJrRGV0YWNoZWRET01UcmVl
Tm9kZXM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBmbGFnID0gdGhpcy5fbm9kZUZs
YWdzLmRldGFjaGVkRE9NVHJlZU5vZGU7CisgICAgICAgIHZhciBkZXRhY2hlZERPTVRyZWVzUm9v
dDsKKyAgICAgICAgZm9yICh2YXIgaXRlciA9IHRoaXMucm9vdE5vZGUoKS5lZGdlcygpOyBpdGVy
Lmhhc05leHQoKTsgaXRlci5uZXh0KCkpIHsKKyAgICAgICAgICAgIHZhciBub2RlID0gaXRlci5l
ZGdlLm5vZGUoKTsKKyAgICAgICAgICAgIGlmIChub2RlLmlzRGV0YWNoZWRET01UcmVlc1Jvb3Qo
KSkgeworICAgICAgICAgICAgICAgIGRldGFjaGVkRE9NVHJlZXNSb290ID0gbm9kZTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlm
ICghZGV0YWNoZWRET01UcmVlc1Jvb3QpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
Zm9yICh2YXIgaXRlciA9IGRldGFjaGVkRE9NVHJlZXNSb290LmVkZ2VzKCk7IGl0ZXIuaGFzTmV4
dCgpOyBpdGVyLm5leHQoKSkgeworICAgICAgICAgICAgdmFyIG5vZGUgPSBpdGVyLmVkZ2Uubm9k
ZSgpOworICAgICAgICAgICAgaWYgKG5vZGUuaXNEZXRhY2hlZERPTVRyZWUoKSkgeworICAgICAg
ICAgICAgICAgIGZvciAodmFyIGVkZ2VzSXRlciA9IG5vZGUuZWRnZXMoKTsgZWRnZXNJdGVyLmhh
c05leHQoKTsgZWRnZXNJdGVyLm5leHQoKSkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmxh
Z3NbZWRnZXNJdGVyLmVkZ2Uubm9kZSgpLm5vZGVJbmRleCAvIHRoaXMuX25vZGVGaWVsZENvdW50
XSB8PSBmbGFnOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSwKKworICAgIF9tYXJr
UXVlcmlhYmxlSGVhcE9iamVjdHM6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIEFsbG93
IHJ1bnRpbWUgcHJvcGVydGllcyBxdWVyeSBmb3Igb2JqZWN0cyBhY2Nlc3NpYmxlIGZyb20gV2lu
ZG93IG9iamVjdHMKKyAgICAgICAgLy8gdmlhIHJlZ3VsYXIgcHJvcGVydGllcywgYW5kIGZvciBE
T00gd3JhcHBlcnMuIFRyeWluZyB0byBhY2Nlc3MgcmFuZG9tIG9iamVjdHMKKyAgICAgICAgLy8g
Y2FuIGNhdXNlIGEgY3Jhc2ggZHVlIHRvIGluc29uc2lzdGVudCBzdGF0ZSBvZiBpbnRlcm5hbCBw
cm9wZXJ0aWVzIG9mIHdyYXBwZXJzLgorICAgICAgICB2YXIgZmxhZyA9IHRoaXMuX25vZGVGbGFn
cy5jYW5CZVF1ZXJpZWQ7CisgICAgICAgIHZhciBoaWRkZW5FZGdlVHlwZSA9IHRoaXMuX2VkZ2VI
aWRkZW5UeXBlOworICAgICAgICB2YXIgaW50ZXJuYWxFZGdlVHlwZSA9IHRoaXMuX2VkZ2VJbnRl
cm5hbFR5cGU7CisgICAgICAgIHZhciBpbnZpc2libGVFZGdlVHlwZSA9IHRoaXMuX2VkZ2VJbnZp
c2libGVUeXBlOworICAgICAgICB2YXIgd2Vha0VkZ2VUeXBlID0gdGhpcy5fZWRnZVdlYWtUeXBl
OworICAgICAgICB2YXIgZWRnZVRvTm9kZU9mZnNldCA9IHRoaXMuX2VkZ2VUb05vZGVPZmZzZXQ7
CisgICAgICAgIHZhciBlZGdlVHlwZU9mZnNldCA9IHRoaXMuX2VkZ2VUeXBlT2Zmc2V0OworICAg
ICAgICB2YXIgZWRnZUZpZWxkc0NvdW50ID0gdGhpcy5fZWRnZUZpZWxkc0NvdW50OworICAgICAg
ICB2YXIgY29udGFpbm1lbnRFZGdlcyA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXM7CisgICAgICAg
IHZhciBub2RlcyA9IHRoaXMuX25vZGVzOworICAgICAgICB2YXIgbm9kZUNvdW50ID0gdGhpcy5u
b2RlQ291bnQ7CisgICAgICAgIHZhciBub2RlRmllbGRDb3VudCA9IHRoaXMuX25vZGVGaWVsZENv
dW50OworICAgICAgICB2YXIgZmlyc3RFZGdlSW5kZXhlcyA9IHRoaXMuX2ZpcnN0RWRnZUluZGV4
ZXM7CisKKyAgICAgICAgdmFyIGZsYWdzID0gdGhpcy5fZmxhZ3M7CisgICAgICAgIHZhciBsaXN0
ID0gW107CisKKyAgICAgICAgZm9yICh2YXIgaXRlciA9IHRoaXMucm9vdE5vZGUoKS5lZGdlcygp
OyBpdGVyLmhhc05leHQoKTsgaXRlci5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChpdGVyLmVk
Z2Uubm9kZSgpLmlzV2luZG93KCkpCisgICAgICAgICAgICAgICAgbGlzdC5wdXNoKGl0ZXIuZWRn
ZS5ub2RlKCkubm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQpOworICAgICAgICB9CisKKyAgICAg
ICAgd2hpbGUgKGxpc3QubGVuZ3RoKSB7CisgICAgICAgICAgICB2YXIgbm9kZU9yZGluYWwgPSBs
aXN0LnBvcCgpOworICAgICAgICAgICAgaWYgKGZsYWdzW25vZGVPcmRpbmFsXSAmIGZsYWcpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBmbGFnc1tub2RlT3JkaW5hbF0g
fD0gZmxhZzsKKyAgICAgICAgICAgIHZhciBiZWdpbkVkZ2VJbmRleCA9IGZpcnN0RWRnZUluZGV4
ZXNbbm9kZU9yZGluYWxdOworICAgICAgICAgICAgdmFyIGVuZEVkZ2VJbmRleCA9IGZpcnN0RWRn
ZUluZGV4ZXNbbm9kZU9yZGluYWwgKyAxXTsKKyAgICAgICAgICAgIGZvciAodmFyIGVkZ2VJbmRl
eCA9IGJlZ2luRWRnZUluZGV4OyBlZGdlSW5kZXggPCBlbmRFZGdlSW5kZXg7IGVkZ2VJbmRleCAr
PSBlZGdlRmllbGRzQ291bnQpIHsKKyAgICAgICAgICAgICAgICB2YXIgY2hpbGROb2RlSW5kZXgg
PSBjb250YWlubWVudEVkZ2VzW2VkZ2VJbmRleCArIGVkZ2VUb05vZGVPZmZzZXRdOworICAgICAg
ICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFsID0gY2hpbGROb2RlSW5kZXggLyBub2RlRmll
bGRDb3VudDsKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ3NbY2hpbGROb2RlT3JkaW5hbF0gJiBm
bGFnKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB2YXIg
dHlwZSA9IGNvbnRhaW5tZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVR5cGVPZmZzZXRdOworICAg
ICAgICAgICAgICAgIGlmICh0eXBlID09PSBoaWRkZW5FZGdlVHlwZSB8fCB0eXBlID09PSBpbnZp
c2libGVFZGdlVHlwZSB8fCB0eXBlID09PSBpbnRlcm5hbEVkZ2VUeXBlIHx8IHR5cGUgPT09IHdl
YWtFZGdlVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgbGlzdC5wdXNoKGNoaWxkTm9kZU9yZGluYWwpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfSwKKworICAgIF9tYXJrUGFnZU93bmVkTm9kZXM6IGZ1bmN0aW9uKCkKKyAgICB7Cisg
ICAgICAgIHZhciBlZGdlU2hvcnRjdXRUeXBlID0gdGhpcy5fZWRnZVNob3J0Y3V0VHlwZTsKKyAg
ICAgICAgdmFyIGVkZ2VUb05vZGVPZmZzZXQgPSB0aGlzLl9lZGdlVG9Ob2RlT2Zmc2V0OworICAg
ICAgICB2YXIgZWRnZVR5cGVPZmZzZXQgPSB0aGlzLl9lZGdlVHlwZU9mZnNldDsKKyAgICAgICAg
dmFyIGVkZ2VGaWVsZHNDb3VudCA9IHRoaXMuX2VkZ2VGaWVsZHNDb3VudDsKKyAgICAgICAgdmFy
IGVkZ2VXZWFrVHlwZSA9IHRoaXMuX2VkZ2VXZWFrVHlwZTsKKyAgICAgICAgdmFyIGZpcnN0RWRn
ZUluZGV4ZXMgPSB0aGlzLl9maXJzdEVkZ2VJbmRleGVzOworICAgICAgICB2YXIgY29udGFpbm1l
bnRFZGdlcyA9IHRoaXMuX2NvbnRhaW5tZW50RWRnZXM7CisgICAgICAgIHZhciBjb250YWlubWVu
dEVkZ2VzTGVuZ3RoID0gY29udGFpbm1lbnRFZGdlcy5sZW5ndGg7CisgICAgICAgIHZhciBub2Rl
cyA9IHRoaXMuX25vZGVzOworICAgICAgICB2YXIgbm9kZUZpZWxkQ291bnQgPSB0aGlzLl9ub2Rl
RmllbGRDb3VudDsKKyAgICAgICAgdmFyIG5vZGVzQ291bnQgPSB0aGlzLm5vZGVDb3VudDsKKwor
ICAgICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9mbGFnczsKKyAgICAgICAgdmFyIGZsYWcgPSB0aGlz
Ll9ub2RlRmxhZ3MucGFnZU9iamVjdDsKKyAgICAgICAgdmFyIHZpc2l0ZWRNYXJrZXIgPSB0aGlz
Ll9ub2RlRmxhZ3MudmlzaXRlZE1hcmtlcjsKKyAgICAgICAgdmFyIHZpc2l0ZWRNYXJrZXJNYXNr
ID0gdGhpcy5fbm9kZUZsYWdzLnZpc2l0ZWRNYXJrZXJNYXNrOworICAgICAgICB2YXIgbWFya2Vy
QW5kRmxhZyA9IHZpc2l0ZWRNYXJrZXIgfCBmbGFnOworCisgICAgICAgIHZhciBub2Rlc1RvVmlz
aXQgPSBuZXcgVWludDMyQXJyYXkobm9kZXNDb3VudCk7CisgICAgICAgIHZhciBub2Rlc1RvVmlz
aXRMZW5ndGggPSAwOworCisgICAgICAgIHZhciByb290Tm9kZU9yZGluYWwgPSB0aGlzLl9yb290
Tm9kZUluZGV4IC8gbm9kZUZpZWxkQ291bnQ7CisgICAgICAgIGZvciAodmFyIGVkZ2VJbmRleCA9
IGZpcnN0RWRnZUluZGV4ZXNbcm9vdE5vZGVPcmRpbmFsXSwgZW5kRWRnZUluZGV4ID0gZmlyc3RF
ZGdlSW5kZXhlc1tyb290Tm9kZU9yZGluYWwgKyAxXTsKKyAgICAgICAgICAgICBlZGdlSW5kZXgg
PCBlbmRFZGdlSW5kZXg7CisgICAgICAgICAgICAgZWRnZUluZGV4ICs9IGVkZ2VGaWVsZHNDb3Vu
dCkgeworICAgICAgICAgICAgaWYgKGNvbnRhaW5tZW50RWRnZXNbZWRnZUluZGV4ICsgZWRnZVR5
cGVPZmZzZXRdID09PSBlZGdlU2hvcnRjdXRUeXBlKSB7CisgICAgICAgICAgICAgICAgdmFyIG5v
ZGVPcmRpbmFsID0gY29udGFpbm1lbnRFZGdlc1tlZGdlSW5kZXggKyBlZGdlVG9Ob2RlT2Zmc2V0
XSAvIG5vZGVGaWVsZENvdW50OworICAgICAgICAgICAgICAgIG5vZGVzVG9WaXNpdFtub2Rlc1Rv
VmlzaXRMZW5ndGgrK10gPSBub2RlT3JkaW5hbDsKKyAgICAgICAgICAgICAgICBmbGFnc1tub2Rl
T3JkaW5hbF0gfD0gdmlzaXRlZE1hcmtlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisg
ICAgICAgIHdoaWxlIChub2Rlc1RvVmlzaXRMZW5ndGgpIHsKKyAgICAgICAgICAgIHZhciBub2Rl
T3JkaW5hbCA9IG5vZGVzVG9WaXNpdFstLW5vZGVzVG9WaXNpdExlbmd0aF07CisgICAgICAgICAg
ICBmbGFnc1tub2RlT3JkaW5hbF0gfD0gZmxhZzsKKyAgICAgICAgICAgIGZsYWdzW25vZGVPcmRp
bmFsXSAmPSB2aXNpdGVkTWFya2VyTWFzazsKKyAgICAgICAgICAgIHZhciBiZWdpbkVkZ2VJbmRl
eCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9yZGluYWxdOworICAgICAgICAgICAgdmFyIGVuZEVk
Z2VJbmRleCA9IGZpcnN0RWRnZUluZGV4ZXNbbm9kZU9yZGluYWwgKyAxXTsKKyAgICAgICAgICAg
IGZvciAodmFyIGVkZ2VJbmRleCA9IGJlZ2luRWRnZUluZGV4OyBlZGdlSW5kZXggPCBlbmRFZGdl
SW5kZXg7IGVkZ2VJbmRleCArPSBlZGdlRmllbGRzQ291bnQpIHsKKyAgICAgICAgICAgICAgICB2
YXIgY2hpbGROb2RlSW5kZXggPSBjb250YWlubWVudEVkZ2VzW2VkZ2VJbmRleCArIGVkZ2VUb05v
ZGVPZmZzZXRdOworICAgICAgICAgICAgICAgIHZhciBjaGlsZE5vZGVPcmRpbmFsID0gY2hpbGRO
b2RlSW5kZXggLyBub2RlRmllbGRDb3VudDsKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ3NbY2hp
bGROb2RlT3JkaW5hbF0gJiBtYXJrZXJBbmRGbGFnKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICB2YXIgdHlwZSA9IGNvbnRhaW5tZW50RWRnZXNbZWRnZUlu
ZGV4ICsgZWRnZVR5cGVPZmZzZXRdOworICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSBlZGdl
V2Vha1R5cGUpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAg
IG5vZGVzVG9WaXNpdFtub2Rlc1RvVmlzaXRMZW5ndGgrK10gPSBjaGlsZE5vZGVPcmRpbmFsOwor
ICAgICAgICAgICAgICAgIGZsYWdzW2NoaWxkTm9kZU9yZGluYWxdIHw9IHZpc2l0ZWRNYXJrZXI7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9LAorCiAgICAgX19wcm90b19fOiBXZWJJ
bnNwZWN0b3IuSGVhcFNuYXBzaG90LnByb3RvdHlwZQogfTsKIApAQCAtNzQsNyArMjYxLDcgQEAg
V2ViSW5zcGVjdG9yLkpTSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJl
dHVybiAhIShmbGFncyAmIHRoaXMuX3NuYXBzaG90Ll9ub2RlRmxhZ3MuY2FuQmVRdWVyaWVkKTsK
ICAgICB9LAogCi0gICAgaXNQYWdlT2JqZWN0OiBmdW5jdGlvbigpCisgICAgaXNVc2VyT2JqZWN0
OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9zbmFwc2hvdC5f
ZmxhZ3NPZk5vZGUodGhpcyk7CiAgICAgICAgIHJldHVybiAhIShmbGFncyAmIHRoaXMuX3NuYXBz
aG90Ll9ub2RlRmxhZ3MucGFnZU9iamVjdCk7CkBAIC0xMjIsMTEgKzMwOSw2IEBAIFdlYkluc3Bl
Y3Rvci5KU0hlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gdGhp
cy5fdHlwZSgpID09PSB0aGlzLl9zbmFwc2hvdC5fbm9kZUhpZGRlblR5cGU7CiAgICAgfSwKIAot
ICAgIGlzTmF0aXZlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdHlw
ZSgpID09PSB0aGlzLl9zbmFwc2hvdC5fbm9kZU5hdGl2ZVR5cGU7Ci0gICAgfSwKLQogICAgIGlz
U3ludGhldGljOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSgp
ID09PSB0aGlzLl9zbmFwc2hvdC5fbm9kZVN5bnRoZXRpY1R5cGU7CkBAIC0xNDksNiArMzMxLDE3
IEBAIFdlYkluc3BlY3Rvci5KU0hlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4gZGV0YWNoZWRET01UcmVlUkUudGVzdCh0aGlzLmNsYXNzTmFtZSgpKTsKICAgICB9
LAogCisgICAgc2VyaWFsaXplOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0
ID0gV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGUucHJvdG90eXBlLnNlcmlhbGl6ZS5jYWxs
KHRoaXMpOworICAgICAgICB2YXIgZmxhZ3MgPSB0aGlzLl9zbmFwc2hvdC5fZmxhZ3NPZk5vZGUo
dGhpcyk7CisgICAgICAgIGlmIChmbGFncyAmIHRoaXMuX3NuYXBzaG90Ll9ub2RlRmxhZ3MuY2Fu
QmVRdWVyaWVkKQorICAgICAgICAgICAgcmVzdWx0LmNhbkJlUXVlcmllZCA9IHRydWU7CisgICAg
ICAgIGlmIChmbGFncyAmIHRoaXMuX3NuYXBzaG90Ll9ub2RlRmxhZ3MuZGV0YWNoZWRET01UcmVl
Tm9kZSkKKyAgICAgICAgICAgIHJlc3VsdC5kZXRhY2hlZERPTVRyZWVOb2RlID0gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorCiAgICAgX19wcm90b19fOiBXZWJJbnNwZWN0
b3IuSGVhcFNuYXBzaG90Tm9kZS5wcm90b3R5cGUKIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhZmNiMDdlZDk0ZWFk
YTgwMjZlYWQxM2M4YmFjNjY1ZTZhODE0Njg1Li40NGIxOGViZDcwMjI5NjJmZDZiMmFkMDNkMWRk
MmFjYTUxOTRiYTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMTItMjcgIFl1cnkgU2Vt
aWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
bW92ZSBqcyBoZWFwIHNuYXBzaG90IHByZXByb2Nlc3NpbmcgdG8gSlNIZWFwU25hcHNob3QKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNTc5OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9y
L3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbDogdXBkYXRlZCB0ZXN0IHRvIG1hdGNoIEhlYXBT
bmFwc2hvdC5qcyBjaGFuZ2VzCisKIDIwMTItMTItMjYgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGEgTWFjIHRlc3QgZXhwZWN0YXRpb25zIGZvciBidWdz
IDEwNTc3NyBhbmQgMTA1Nzc4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3By
b2ZpbGVyL2hlYXAtc25hcHNob3QuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9wcm9maWxl
ci9oZWFwLXNuYXBzaG90Lmh0bWwKaW5kZXggMTc4YWM0NTQ3ZjEyODFlMTliMDc5MWI5NmZiNWZi
MDU2OGU0MjQzZS4uOTk5MmE1MWY1ZDJhZmYzZWEzMzE1M2EwZGY3Nzc0ZmE2NTViMDEyMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Byb2ZpbGVyL2hlYXAtc25hcHNob3QuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvcHJvZmlsZXIvaGVhcC1zbmFwc2hvdC5odG1s
CkBAIC0yOCw3ICsyOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgdmFyIG5vZGVS
b290ID0gc25hcHNob3QuY3JlYXRlTm9kZShzbmFwc2hvdC5fcm9vdE5vZGVJbmRleCk7CiAgICAg
ICAgICAgICB2YXIgaXRlcmF0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdE5vZGVJ
dGVyYXRvcihub2RlUm9vdCk7CiAgICAgICAgICAgICB2YXIgbmFtZXMgPSBbXTsKLSAgICAgICAg
ICAgIGZvciAoaXRlcmF0b3IuZmlyc3QoKTsgaXRlcmF0b3IuaGFzTmV4dCgpOyBpdGVyYXRvci5u
ZXh0KCkpCisgICAgICAgICAgICBmb3IgKGl0ZXJhdG9yLnJld2luZCgpOyBpdGVyYXRvci5oYXNO
ZXh0KCk7IGl0ZXJhdG9yLm5leHQoKSkKICAgICAgICAgICAgICAgICBuYW1lcy5wdXNoKGl0ZXJh
dG9yLml0ZW0oKS5uYW1lKCkpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVh
bHMoIixBLEIsQyxELEUiLCBuYW1lcy5qb2luKCIsIiksICJub2RlIGl0ZXJhdG9yIik7CiAgICAg
ICAgICAgICBuZXh0KCk7CkBAIC01Myw3ICs1Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgdmFyIG5vZGVSb290ID0gc25hcHNob3QuY3JlYXRlTm9kZShzbmFwc2hvdC5fcm9vdE5v
ZGVJbmRleCk7CiAgICAgICAgICAgICB2YXIgbmFtZXMgPSBbXTsKICAgICAgICAgICAgIHZhciBp
dGVyYXRvciA9IG5vZGVSb290LmVkZ2VzKCk7Ci0gICAgICAgICAgICBmb3IgKGl0ZXJhdG9yLmZp
cnN0KCk7IGl0ZXJhdG9yLmhhc05leHQoKTsgaXRlcmF0b3IubmV4dCgpKQorICAgICAgICAgICAg
Zm9yIChpdGVyYXRvci5yZXdpbmQoKTsgaXRlcmF0b3IuaGFzTmV4dCgpOyBpdGVyYXRvci5uZXh0
KCkpCiAgICAgICAgICAgICAgICAgbmFtZXMucHVzaChpdGVyYXRvci5pdGVtKCkubmFtZSgpKTsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJhLGIiLCBuYW1lcy5qb2lu
KCIsIiksICJlZGdlIGl0ZXJhdG9yIik7CiAgICAgICAgICAgICB2YXIgbm9kZUUgPSBzbmFwc2hv
dC5jcmVhdGVOb2RlKDE1KTsKQEAgLTI5Nyw3ICsyOTcsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgIHByb3ZpZGVyLnNvcnQoV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEZpbHRlcmVk
T3JkZXJlZEl0ZXJhdG9yLnByb3RvdHlwZS5jcmVhdGVDb21wYXJhdG9yKFsibmFtZSIsIGZhbHNl
LCAiaWQiLCBmYWxzZV0pLCAwLCAyLCAzKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKDMsIHByb3ZpZGVyLmxlbmd0aCwgIm5vZGVzIHByb3ZpZGVyIGxlbmd0aCIpOwog
ICAgICAgICAgICAgdmFyIG5hbWVzID0gW107Ci0gICAgICAgICAgICBmb3IgKHByb3ZpZGVyLmZp
cnN0KCk7IHByb3ZpZGVyLmhhc05leHQoKTsgcHJvdmlkZXIubmV4dCgpKQorICAgICAgICAgICAg
Zm9yIChwcm92aWRlci5yZXdpbmQoKTsgcHJvdmlkZXIuaGFzTmV4dCgpOyBwcm92aWRlci5uZXh0
KCkpCiAgICAgICAgICAgICAgICAgbmFtZXMucHVzaChwcm92aWRlci5pdGVtKCkubmFtZSgpKTsK
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJFLEMsQSIsIG5hbWVzLmpv
aW4oIiwiKSwgIm5vZGVzIHByb3ZpZGVyIG5hbWVzIik7CiAgICAgICAgICAgICBuZXh0KCk7CkBA
IC0zMTcsNyArMzE3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICBwcm92aWRlci5z
b3J0KFdlYkluc3BlY3Rvci5IZWFwU25hcHNob3RGaWx0ZXJlZE9yZGVyZWRJdGVyYXRvci5wcm90
b3R5cGUuY3JlYXRlQ29tcGFyYXRvcihbIiFlZGdlTmFtZSIsIGZhbHNlLCAiaWQiLCBmYWxzZV0p
LCAwLCAwLCAxKTsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDEsIHBy
b3ZpZGVyLmxlbmd0aCwgImVkZ2VzIHByb3ZpZGVyIGxlbmd0aCIpOwogICAgICAgICAgICAgdmFy
IG5hbWVzID0gW107Ci0gICAgICAgICAgICBmb3IgKHByb3ZpZGVyLmZpcnN0KCk7IHByb3ZpZGVy
Lmhhc05leHQoKTsgcHJvdmlkZXIubmV4dCgpKQorICAgICAgICAgICAgZm9yIChwcm92aWRlci5y
ZXdpbmQoKTsgcHJvdmlkZXIuaGFzTmV4dCgpOyBwcm92aWRlci5uZXh0KCkpCiAgICAgICAgICAg
ICAgICAgbmFtZXMucHVzaChwcm92aWRlci5pdGVtKCkubmFtZSgpKTsKICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKCJiIiwgbmFtZXMuam9pbigiLCIpLCAiZWRnZXMgcHJv
dmlkZXIgbmFtZXMiKTsKICAgICAgICAgICAgIG5leHQoKTsK
</data>
<flag name="review"
          id="198200"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="198201"
          type_id="3"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>