<?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>121262</bug_id>
          
          <creation_ts>2013-09-12 14:48:12 -0700</creation_ts>
          <short_desc>Web Inspector: Update CodeMirror for gutter fix</short_desc>
          <delta_ts>2013-09-12 16:27:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</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>928502</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-09-12 14:48:12 -0700</bug_when>
    <thetext>Update CodeMirror to 757944449:
&lt;https://github.com/marijnh/CodeMirror/commit/7579444498ba0db844f4921ee59a5dbaed9f93d0&gt;

Desired to pick up the following fix:
&lt;https://github.com/marijnh/CodeMirror/issues/1807&gt;
&lt;https://github.com/marijnh/CodeMirror/commit/30a9ee56fe988d54e3bdd435f7c37af68c5c4c21&gt;

• PrettyPrinting tests pass and performance looks good
• Mode &quot;css-base&quot; was renamed to &quot;css&quot; and required minor fixes for our &quot;css-rule&quot; mode
• Tested forced jsmin build to ensure production builds should be good
• Otherwise things looked good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928503</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2013-09-12 14:48:32 -0700</bug_when>
    <thetext>&lt;rdar://problem/14979366&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928505</commentid>
    <comment_count>2</comment_count>
      <attachid>211479</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2013-09-12 14:49:43 -0700</bug_when>
    <thetext>Created attachment 211479
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928560</commentid>
    <comment_count>3</comment_count>
      <attachid>211479</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-12 16:27:02 -0700</bug_when>
    <thetext>Comment on attachment 211479
[PATCH] Proposed Fix

Clearing flags on attachment: 211479

Committed r155659: &lt;http://trac.webkit.org/changeset/155659&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>928561</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-12 16:27:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211479</attachid>
            <date>2013-09-12 14:49:43 -0700</date>
            <delta_ts>2013-09-12 16:27:02 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>update-codemirror.patch</filename>
            <type>text/plain</type>
            <size>49725</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDY4OGIxMGIuLmMwNDBlZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTA5LTEyICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVXBkYXRl
IENvZGVNaXJyb3IgZm9yIGd1dHRlciBmaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEyMTI2MgorCisgICAgICAgIFVwZGF0ZSBDb2RlTWlycm9yIHRv
IDc1Nzk0NDQ0OSB0byBmaXggZ3V0dGVyIGNsaWNrIGlzc3VlOgorICAgICAgICA8aHR0cHM6Ly9n
aXRodWIuY29tL21hcmlqbmgvQ29kZU1pcnJvci9pc3N1ZXMvMTgwNz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRvb2xzL1ByZXR0eVByaW50aW5n
L0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzOgorICAgICAgICAqIFRvb2xzL1ByZXR0eVByaW50aW5n
L0Zvcm1hdHRlckNvbnRlbnRCdWlsZGVyLmpzOgorICAgICAgICAoRm9ybWF0dGVyQ29udGVudEJ1
aWxkZXIucHJvdG90eXBlLl9hcHBlbmRJbmRlbnQpOgorICAgICAgICAqIFRvb2xzL1ByZXR0eVBy
aW50aW5nL2NvZGVtaXJyb3IuY3NzOgorICAgICAgICAqIFRvb2xzL1ByZXR0eVByaW50aW5nL2Nv
ZGVtaXJyb3IuanM6CisgICAgICAgICogVG9vbHMvUHJldHR5UHJpbnRpbmcvY3NzLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckFkZGl0aW9ucy5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzOgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvRGVidWdnZXJNYW5hZ2VyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUuZGlkUmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fcmVtb3ZlQnJlYWtwb2ludCk6CisgICAg
ICAgICogVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuY3NzOgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmpz
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2ZmZWVzY3Jp
cHQuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2Nzcy5q
czoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbGVzcy5qczoK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3Ivc3FsLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5UZXh0RWRpdG9yLnByb3RvdHlwZS5oYXNGb3JtYXR0ZXIpOgorCiAyMDEzLTA5LTExICBHZW9m
ZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlZCBzb21lIHVu
dXNlZCBmdW5jdGlvbnMgZnJvbSB0aGUgZGVidWdnZXIgaW50ZXJmYWNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvQ29kZU1pcnJvckZvcm1h
dHRlcnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvQ29k
ZU1pcnJvckZvcm1hdHRlcnMuanMKaW5kZXggODFjODE1NS4uM2Q5OWNiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL0NvZGVNaXJyb3JGb3Jt
YXR0ZXJzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGlu
Zy9Db2RlTWlycm9yRm9ybWF0dGVycy5qcwpAQCAtMjkwLDcgKzI5MCw3IEBAIENvZGVNaXJyb3Iu
ZXh0ZW5kTW9kZSgiamF2YXNjcmlwdCIsIHsKICAgICB9CiB9KTsKIAotQ29kZU1pcnJvci5leHRl
bmRNb2RlKCJjc3MtYmFzZSIsIHsKK0NvZGVNaXJyb3IuZXh0ZW5kTW9kZSgiY3NzIiwgewogICAg
IHNob3VsZEhhdmVTcGFjZUJlZm9yZVRva2VuOiBmdW5jdGlvbihsYXN0VG9rZW4sIGxhc3RDb250
ZW50LCB0b2tlbiwgc3RhdGUsIGNvbnRlbnQsIGlzQ29tbWVudCkKICAgICB7CiAgICAgICAgIGlm
ICghdG9rZW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0
dHlQcmludGluZy9Gb3JtYXR0ZXJDb250ZW50QnVpbGRlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9Gb3JtYXR0ZXJDb250ZW50QnVpbGRlci5qcwppbmRl
eCA0NTk2ODgwLi43MmQ5YTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9v
bHMvUHJldHR5UHJpbnRpbmcvRm9ybWF0dGVyQ29udGVudEJ1aWxkZXIuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL0Zvcm1hdHRlckNvbnRlbnRCdWls
ZGVyLmpzCkBAIC0yMDIsNyArMjAyLDcgQEAgRm9ybWF0dGVyQ29udGVudEJ1aWxkZXIucHJvdG90
eXBlID0gewogICAgICAgICB2YXIgaW5kZW50ID0gdGhpcy5faW5kZW50OwogICAgICAgICBkbyB7
CiAgICAgICAgICAgICBpZiAoaW5kZW50ID49IG1heENhY2hlSW5kZW50KQotICAgICAgICAgICAg
ICAgIHRoaXMuX2FwcGVuZCh0aGlzLl9pbmRlbnRDYWNoZVttYXhDYWNoZUluZGVudF0pCisgICAg
ICAgICAgICAgICAgdGhpcy5fYXBwZW5kKHRoaXMuX2luZGVudENhY2hlW21heENhY2hlSW5kZW50
XSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdGhpcy5fYXBwZW5kKHRoaXMu
X2luZGVudENhY2hlW2luZGVudF0pOwogICAgICAgICAgICAgaW5kZW50IC09IG1heENhY2hlSW5k
ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50
aW5nL2NvZGVtaXJyb3IuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVBy
aW50aW5nL2NvZGVtaXJyb3IuY3NzCmluZGV4IGM5NWRiNjQuLjRlMzAwYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jb2RlbWlycm9yLmNz
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY29kZW1p
cnJvci5jc3MKQEAgLTExOCw2ICsxMTgsOCBAQCBkaXYuQ29kZU1pcnJvciBzcGFuLkNvZGVNaXJy
b3Itbm9ubWF0Y2hpbmdicmFja2V0IHtjb2xvcjogI2YyMjt9CiAgIGhlaWdodDogMTAwJTsKICAg
b3V0bGluZTogbm9uZTsgLyogUHJldmVudCBkcmFnZ2luZyBmcm9tIGhpZ2hsaWdodGluZyB0aGUg
ZWxlbWVudCAqLwogICBwb3NpdGlvbjogcmVsYXRpdmU7CisgIC1tb3otYm94LXNpemluZzogY29u
dGVudC1ib3g7CisgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94OwogfQogLkNvZGVNaXJyb3Itc2l6
ZXIgewogICBwb3NpdGlvbjogcmVsYXRpdmU7CkBAIC0xNTYsNiArMTU4LDggQEAgZGl2LkNvZGVN
aXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5vbm1hdGNoaW5nYnJhY2tldCB7Y29sb3I6ICNmMjI7fQog
LkNvZGVNaXJyb3ItZ3V0dGVyIHsKICAgd2hpdGUtc3BhY2U6IG5vcm1hbDsKICAgaGVpZ2h0OiAx
MDAlOworICAtbW96LWJveC1zaXppbmc6IGNvbnRlbnQtYm94OworICBib3gtc2l6aW5nOiBjb250
ZW50LWJveDsKICAgcGFkZGluZy1ib3R0b206IDMwcHg7CiAgIG1hcmdpbi1ib3R0b206IC0zMnB4
OwogICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CkBAIC0yMTUsOCArMjE5LDcgQEAgZGl2LkNvZGVN
aXJyb3Igc3Bhbi5Db2RlTWlycm9yLW5vbm1hdGNoaW5nYnJhY2tldCB7Y29sb3I6ICNmMjI7fQog
ICBvdmVyZmxvdzogYXV0bzsKIH0KIAotLkNvZGVNaXJyb3Itd2lkZ2V0IHsKLX0KKy5Db2RlTWly
cm9yLXdpZGdldCB7fQogCiAuQ29kZU1pcnJvci13cmFwIC5Db2RlTWlycm9yLXNjcm9sbCB7CiAg
IG92ZXJmbG93LXg6IGhpZGRlbjsKQEAgLTIyNCw3ICsyMjcsOCBAQCBkaXYuQ29kZU1pcnJvciBz
cGFuLkNvZGVNaXJyb3Itbm9ubWF0Y2hpbmdicmFja2V0IHtjb2xvcjogI2YyMjt9CiAKIC5Db2Rl
TWlycm9yLW1lYXN1cmUgewogICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIHdpZHRoOiAxMDAlOyBo
ZWlnaHQ6IDBweDsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMDsKICAgb3ZlcmZsb3c6IGhp
ZGRlbjsKICAgdmlzaWJpbGl0eTogaGlkZGVuOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2NvZGVtaXJyb3IuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVG9vbHMvUHJldHR5UHJpbnRpbmcvY29kZW1pcnJvci5qcwppbmRleCBiYzIz
OGEyLi44MTc3MWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9vbHMvUHJl
dHR5UHJpbnRpbmcvY29kZW1pcnJvci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVG9v
bHMvUHJldHR5UHJpbnRpbmcvY29kZW1pcnJvci5qcwpAQCAtMzA0LDE1ICszMDQsMTMgQEAgd2lu
ZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgIC8vIE1ha2Ugc3VyZSB0aGUgZ3V0dGVy
cyBvcHRpb25zIGNvbnRhaW5zIHRoZSBlbGVtZW50CiAgIC8vICJDb2RlTWlycm9yLWxpbmVudW1i
ZXJzIiB3aGVuIHRoZSBsaW5lTnVtYmVycyBvcHRpb24gaXMgdHJ1ZS4KICAgZnVuY3Rpb24gc2V0
R3V0dGVyc0ZvckxpbmVOdW1iZXJzKG9wdGlvbnMpIHsKLSAgICB2YXIgZm91bmQgPSBmYWxzZTsK
LSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdGlvbnMuZ3V0dGVycy5sZW5ndGg7ICsraSkgewot
ICAgICAgaWYgKG9wdGlvbnMuZ3V0dGVyc1tpXSA9PSAiQ29kZU1pcnJvci1saW5lbnVtYmVycyIp
IHsKLSAgICAgICAgaWYgKG9wdGlvbnMubGluZU51bWJlcnMpIGZvdW5kID0gdHJ1ZTsKLSAgICAg
ICAgZWxzZSBvcHRpb25zLmd1dHRlcnMuc3BsaWNlKGktLSwgMSk7Ci0gICAgICB9CisgICAgdmFy
IGZvdW5kID0gaW5kZXhPZihvcHRpb25zLmd1dHRlcnMsICJDb2RlTWlycm9yLWxpbmVudW1iZXJz
Iik7CisgICAgaWYgKGZvdW5kID09IC0xICYmIG9wdGlvbnMubGluZU51bWJlcnMpIHsKKyAgICAg
IG9wdGlvbnMuZ3V0dGVycyA9IG9wdGlvbnMuZ3V0dGVycy5jb25jYXQoWyJDb2RlTWlycm9yLWxp
bmVudW1iZXJzIl0pOworICAgIH0gZWxzZSBpZiAoZm91bmQgPiAtMSAmJiAhb3B0aW9ucy5saW5l
TnVtYmVycykgeworICAgICAgb3B0aW9ucy5ndXR0ZXJzID0gb3B0aW9ucy5ndXR0ZXJzLnNsaWNl
KDApOworICAgICAgb3B0aW9ucy5ndXR0ZXJzLnNwbGljZShpLCAxKTsKICAgICB9Ci0gICAgaWYg
KCFmb3VuZCAmJiBvcHRpb25zLmxpbmVOdW1iZXJzKQotICAgICAgb3B0aW9ucy5ndXR0ZXJzLnB1
c2goIkNvZGVNaXJyb3ItbGluZW51bWJlcnMiKTsKICAgfQogCiAgIC8vIFNDUk9MTEJBUlMKQEAg
LTQxMiwxMSArNDEwLDE3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAg
IHZhciBvbGRGcm9tID0gY20uZGlzcGxheS5zaG93aW5nRnJvbSwgb2xkVG8gPSBjbS5kaXNwbGF5
LnNob3dpbmdUbywgdXBkYXRlZDsKICAgICB2YXIgdmlzaWJsZSA9IHZpc2libGVMaW5lcyhjbS5k
aXNwbGF5LCBjbS5kb2MsIHZpZXdQb3J0KTsKICAgICBmb3IgKDs7KSB7CisgICAgICB2YXIgb2xk
V2lkdGggPSBjbS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoOwogICAgICAgaWYgKCF1cGRh
dGVEaXNwbGF5SW5uZXIoY20sIGNoYW5nZXMsIHZpc2libGUsIGZvcmNlZCkpIGJyZWFrOwotICAg
ICAgZm9yY2VkID0gZmFsc2U7CiAgICAgICB1cGRhdGVkID0gdHJ1ZTsKKyAgICAgIGNoYW5nZXMg
PSBbXTsKICAgICAgIHVwZGF0ZVNlbGVjdGlvbihjbSk7CiAgICAgICB1cGRhdGVTY3JvbGxiYXJz
KGNtKTsKKyAgICAgIGlmIChjbS5vcHRpb25zLmxpbmVXcmFwcGluZyAmJiBvbGRXaWR0aCAhPSBj
bS5kaXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoKSB7CisgICAgICAgIGZvcmNlZCA9IHRydWU7
CisgICAgICAgIGNvbnRpbnVlOworICAgICAgfQorICAgICAgZm9yY2VkID0gZmFsc2U7CiAKICAg
ICAgIC8vIENsaXAgZm9yY2VkIHZpZXdwb3J0IHRvIGFjdHVhbCBzY3JvbGxhYmxlIGFyZWEKICAg
ICAgIGlmICh2aWV3UG9ydCkKQEAgLTQyNSw3ICs0MjksNiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgICAgIHZpc2libGUgPSB2aXNpYmxlTGluZXMoY20uZGlzcGxheSwg
Y20uZG9jLCB2aWV3UG9ydCk7CiAgICAgICBpZiAodmlzaWJsZS5mcm9tID49IGNtLmRpc3BsYXku
c2hvd2luZ0Zyb20gJiYgdmlzaWJsZS50byA8PSBjbS5kaXNwbGF5LnNob3dpbmdUbykKICAgICAg
ICAgYnJlYWs7Ci0gICAgICBjaGFuZ2VzID0gW107CiAgICAgfQogCiAgICAgaWYgKHVwZGF0ZWQp
IHsKQEAgLTY2MywxMCArNjY2LDExIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkg
ewogICB9CiAKICAgZnVuY3Rpb24gYnVpbGRMaW5lRWxlbWVudChjbSwgbGluZSwgbGluZU5vLCBk
aW1zLCByZXVzZSkgewotICAgIHZhciBsaW5lRWxlbWVudCA9IGxpbmVDb250ZW50KGNtLCBsaW5l
KTsKKyAgICB2YXIgYnVpbHQgPSBidWlsZExpbmVDb250ZW50KGNtLCBsaW5lKSwgbGluZUVsZW1l
bnQgPSBidWlsdC5wcmU7CiAgICAgdmFyIG1hcmtlcnMgPSBsaW5lLmd1dHRlck1hcmtlcnMsIGRp
c3BsYXkgPSBjbS5kaXNwbGF5LCB3cmFwOwogCi0gICAgaWYgKCFjbS5vcHRpb25zLmxpbmVOdW1i
ZXJzICYmICFtYXJrZXJzICYmICFsaW5lLmJnQ2xhc3MgJiYgIWxpbmUud3JhcENsYXNzICYmICFs
aW5lLndpZGdldHMpCisgICAgdmFyIGJnQ2xhc3MgPSBidWlsdC5iZ0NsYXNzID8gYnVpbHQuYmdD
bGFzcyArICIgIiArIChsaW5lLmJnQ2xhc3MgfHwgIiIpIDogbGluZS5iZ0NsYXNzOworICAgIGlm
ICghY20ub3B0aW9ucy5saW5lTnVtYmVycyAmJiAhbWFya2VycyAmJiAhYmdDbGFzcyAmJiAhbGlu
ZS53cmFwQ2xhc3MgJiYgIWxpbmUud2lkZ2V0cykKICAgICAgIHJldHVybiBsaW5lRWxlbWVudDsK
IAogICAgIC8vIExpbmVzIHdpdGggZ3V0dGVyIGVsZW1lbnRzLCB3aWRnZXRzIG9yIGEgYmFja2dy
b3VuZCBjbGFzcyBuZWVkCkBAIC03MDQsOCArNzA4LDggQEAgd2luZG93LkNvZGVNaXJyb3IgPSAo
ZnVuY3Rpb24oKSB7CiAgICAgICB3cmFwLmFwcGVuZENoaWxkKGxpbmVFbGVtZW50KTsKICAgICB9
CiAgICAgLy8gS2x1ZGdlIHRvIG1ha2Ugc3VyZSB0aGUgc3R5bGVkIGVsZW1lbnQgbGllcyBiZWhp
bmQgdGhlIHNlbGVjdGlvbiAoYnkgei1pbmRleCkKLSAgICBpZiAobGluZS5iZ0NsYXNzKQotICAg
ICAgd3JhcC5pbnNlcnRCZWZvcmUoZWx0KCJkaXYiLCBudWxsLCBsaW5lLmJnQ2xhc3MgKyAiIENv
ZGVNaXJyb3ItbGluZWJhY2tncm91bmQiKSwgd3JhcC5maXJzdENoaWxkKTsKKyAgICBpZiAoYmdD
bGFzcykKKyAgICAgIHdyYXAuaW5zZXJ0QmVmb3JlKGVsdCgiZGl2IiwgbnVsbCwgYmdDbGFzcyAr
ICIgQ29kZU1pcnJvci1saW5lYmFja2dyb3VuZCIpLCB3cmFwLmZpcnN0Q2hpbGQpOwogICAgIGlm
IChjbS5vcHRpb25zLmxpbmVOdW1iZXJzIHx8IG1hcmtlcnMpIHsKICAgICAgIHZhciBndXR0ZXJX
cmFwID0gd3JhcC5pbnNlcnRCZWZvcmUoZWx0KCJkaXYiLCBudWxsLCBudWxsLCAicG9zaXRpb246
IGFic29sdXRlOyBsZWZ0OiAiICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjbS5vcHRpb25zLmZpeGVkR3V0dGVyID8gZGltcy5maXhlZFBvcyA6IC1kaW1z
Lmd1dHRlclRvdGFsV2lkdGgpICsgInB4IiksCkBAIC05NzIsNiArOTc2LDEwIEBAIHdpbmRvdy5D
b2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICBmdW5jdGlvbiBtZWFzdXJlQ2hhcihjbSwgbGlu
ZSwgY2gsIGRhdGEsIGJpYXMpIHsKICAgICB2YXIgZGlyID0gLTE7CiAgICAgZGF0YSA9IGRhdGEg
fHwgbWVhc3VyZUxpbmUoY20sIGxpbmUpOworICAgIGlmIChkYXRhLmNydWRlKSB7CisgICAgICB2
YXIgbGVmdCA9IGRhdGEubGVmdCArIGNoICogZGF0YS53aWR0aDsKKyAgICAgIHJldHVybiB7bGVm
dDogbGVmdCwgcmlnaHQ6IGxlZnQgKyBkYXRhLndpZHRoLCB0b3A6IGRhdGEudG9wLCBib3R0b206
IGRhdGEuYm90dG9tfTsKKyAgICB9CiAKICAgICBmb3IgKHZhciBwb3MgPSBjaDs7IHBvcyArPSBk
aXIpIHsKICAgICAgIHZhciByID0gZGF0YVtwb3NdOwpAQCAtMTAyMCw4ICsxMDI4LDExIEBAIHdp
bmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICB9CiAKICAgZnVuY3Rpb24gbWVhc3Vy
ZUxpbmVJbm5lcihjbSwgbGluZSkgeworICAgIGlmICghY20ub3B0aW9ucy5saW5lV3JhcHBpbmcg
JiYgbGluZS50ZXh0Lmxlbmd0aCA+PSBjbS5vcHRpb25zLmNydWRlTWVhc3VyaW5nRnJvbSkKKyAg
ICAgIHJldHVybiBjcnVkZWx5TWVhc3VyZUxpbmUoY20sIGxpbmUpOworCiAgICAgdmFyIGRpc3Bs
YXkgPSBjbS5kaXNwbGF5LCBtZWFzdXJlID0gZW1wdHlBcnJheShsaW5lLnRleHQubGVuZ3RoKTsK
LSAgICB2YXIgcHJlID0gbGluZUNvbnRlbnQoY20sIGxpbmUsIG1lYXN1cmUsIHRydWUpOworICAg
IHZhciBwcmUgPSBidWlsZExpbmVDb250ZW50KGNtLCBsaW5lLCBtZWFzdXJlLCB0cnVlKS5wcmU7
CiAKICAgICAvLyBJRSBkb2VzIG5vdCBjYWNoZSBlbGVtZW50IHBvc2l0aW9ucyBvZiBpbmxpbmUg
ZWxlbWVudHMgYmV0d2VlbgogICAgIC8vIGNhbGxzIHRvIGdldEJvdW5kaW5nQ2xpZW50UmVjdC4g
VGhpcyBtYWtlcyB0aGUgbG9vcCBiZWxvdywKQEAgLTExMDYsNiArMTExNywxNSBAQCB3aW5kb3cu
Q29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICByZXR1cm4gZGF0YTsKICAgfQogCisgIGZ1
bmN0aW9uIGNydWRlbHlNZWFzdXJlTGluZShjbSwgbGluZSkgeworICAgIHZhciBjb3B5ID0gbmV3
IExpbmUobGluZS50ZXh0LnNsaWNlKDAsIDEwMCksIG51bGwpOworICAgIGlmIChsaW5lLnRleHRD
bGFzcykgY29weS50ZXh0Q2xhc3MgPSBsaW5lLnRleHRDbGFzczsKKyAgICB2YXIgbWVhc3VyZSA9
IG1lYXN1cmVMaW5lSW5uZXIoY20sIGNvcHkpOworICAgIHZhciBsZWZ0ID0gbWVhc3VyZUNoYXIo
Y20sIGNvcHksIDAsIG1lYXN1cmUsICJsZWZ0Iik7CisgICAgdmFyIHJpZ2h0ID0gbWVhc3VyZUNo
YXIoY20sIGNvcHksIDk5LCBtZWFzdXJlLCAicmlnaHQiKTsKKyAgICByZXR1cm4ge2NydWRlOiB0
cnVlLCB0b3A6IGxlZnQudG9wLCBsZWZ0OiBsZWZ0LmxlZnQsIGJvdHRvbTogbGVmdC5ib3R0b20s
IHdpZHRoOiAocmlnaHQucmlnaHQgLSBsZWZ0LmxlZnQpIC8gMTAwfTsKKyAgfQorCiAgIGZ1bmN0
aW9uIG1lYXN1cmVMaW5lV2lkdGgoY20sIGxpbmUpIHsKICAgICB2YXIgaGFzQmFkU3BhbiA9IGZh
bHNlOwogICAgIGlmIChsaW5lLm1hcmtlZFNwYW5zKSBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmUu
bWFya2VkU3BhbnM7ICsraSkgewpAQCAtMTExMyw5ICsxMTMzLDEwIEBAIHdpbmRvdy5Db2RlTWly
cm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgaWYgKHNwLmNvbGxhcHNlZCAmJiAoc3AudG8gPT0g
bnVsbCB8fCBzcC50byA9PSBsaW5lLnRleHQubGVuZ3RoKSkgaGFzQmFkU3BhbiA9IHRydWU7CiAg
ICAgfQogICAgIHZhciBjYWNoZWQgPSAhaGFzQmFkU3BhbiAmJiBmaW5kQ2FjaGVkTWVhc3VyZW1l
bnQoY20sIGxpbmUpOwotICAgIGlmIChjYWNoZWQpIHJldHVybiBtZWFzdXJlQ2hhcihjbSwgbGlu
ZSwgbGluZS50ZXh0Lmxlbmd0aCwgY2FjaGVkLm1lYXN1cmUsICJyaWdodCIpLnJpZ2h0OworICAg
IGlmIChjYWNoZWQgfHwgbGluZS50ZXh0Lmxlbmd0aCA+PSBjbS5vcHRpb25zLmNydWRlTWVhc3Vy
aW5nRnJvbSkKKyAgICAgIHJldHVybiBtZWFzdXJlQ2hhcihjbSwgbGluZSwgbGluZS50ZXh0Lmxl
bmd0aCwgY2FjaGVkICYmIGNhY2hlZC5tZWFzdXJlLCAicmlnaHQiKS5yaWdodDsKIAotICAgIHZh
ciBwcmUgPSBsaW5lQ29udGVudChjbSwgbGluZSwgbnVsbCwgdHJ1ZSk7CisgICAgdmFyIHByZSA9
IGJ1aWxkTGluZUNvbnRlbnQoY20sIGxpbmUsIG51bGwsIHRydWUpLnByZTsKICAgICB2YXIgZW5k
ID0gcHJlLmFwcGVuZENoaWxkKHplcm9XaWR0aEVsZW1lbnQoY20uZGlzcGxheS5tZWFzdXJlKSk7
CiAgICAgcmVtb3ZlQ2hpbGRyZW5BbmRBZGQoY20uZGlzcGxheS5tZWFzdXJlLCBwcmUpOwogICAg
IHJldHVybiBnZXRSZWN0KGVuZCkucmlnaHQgLSBnZXRSZWN0KGNtLmRpc3BsYXkubGluZURpdiku
bGVmdDsKQEAgLTE4OTIsNiArMTkxMyw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9u
KCkgewogICAgIC8vIFJlY2VudCBTYWZhcmkgKH42LjAuMikgaGF2ZSBhIHRlbmRlbmN5IHRvIHNl
Z2ZhdWx0IHdoZW4gdGhpcyBoYXBwZW5zLCBzbyB3ZSBkb24ndCBkbyBpdCB0aGVyZS4KICAgICBp
ZiAoZS5kYXRhVHJhbnNmZXIuc2V0RHJhZ0ltYWdlICYmICFzYWZhcmkpIHsKICAgICAgIHZhciBp
bWcgPSBlbHQoImltZyIsIG51bGwsIG51bGwsICJwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IDA7IHRv
cDogMDsiKTsKKyAgICAgIGltZy5zcmMgPSAiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxo
QVFBQkFBQUFBQ0g1QkFFS0FBRUFMQUFBQUFBQkFBRUFBQUlDVEFFQU93PT0iOwogICAgICAgaWYg
KG9wZXJhKSB7CiAgICAgICAgIGltZy53aWR0aCA9IGltZy5oZWlnaHQgPSAxOwogICAgICAgICBj
bS5kaXNwbGF5LndyYXBwZXIuYXBwZW5kQ2hpbGQoaW1nKTsKQEAgLTI1MjYsNiArMjU0OCw3IEBA
IHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogCiAgICAgdmFyIHNlbCA9IGRvYy5z
ZWw7CiAgICAgc2VsLmdvYWxDb2x1bW4gPSBudWxsOworICAgIGlmIChiaWFzID09IG51bGwpIGJp
YXMgPSBwb3NMZXNzKGhlYWQsIHNlbC5oZWFkKSA/IC0xIDogMTsKICAgICAvLyBTa2lwIG92ZXIg
YXRvbWljIHNwYW5zLgogICAgIGlmIChjaGVja0F0b21pYyB8fCAhcG9zRXEoYW5jaG9yLCBzZWwu
YW5jaG9yKSkKICAgICAgIGFuY2hvciA9IHNraXBBdG9taWMoZG9jLCBhbmNob3IsIGJpYXMsIGNo
ZWNrQXRvbWljICE9ICJwdXNoIik7CkBAIC0zMTcwLDkgKzMxOTMsMTEgQEAgd2luZG93LkNvZGVN
aXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgb3BlcmF0aW9uOiBmdW5jdGlvbihmKXtyZXR1cm4g
cnVuSW5PcCh0aGlzLCBmKTt9LAogCiAgICAgcmVmcmVzaDogb3BlcmF0aW9uKG51bGwsIGZ1bmN0
aW9uKCkgeworICAgICAgdmFyIGJhZEhlaWdodCA9IHRoaXMuZGlzcGxheS5jYWNoZWRUZXh0SGVp
Z2h0ID09IG51bGw7CiAgICAgICBjbGVhckNhY2hlcyh0aGlzKTsKICAgICAgIHVwZGF0ZVNjcm9s
bFBvcyh0aGlzLCB0aGlzLmRvYy5zY3JvbGxMZWZ0LCB0aGlzLmRvYy5zY3JvbGxUb3ApOwogICAg
ICAgcmVnQ2hhbmdlKHRoaXMpOworICAgICAgaWYgKGJhZEhlaWdodCkgZXN0aW1hdGVMaW5lSGVp
Z2h0cyh0aGlzKTsKICAgICB9KSwKIAogICAgIHN3YXBEb2M6IG9wZXJhdGlvbihudWxsLCBmdW5j
dGlvbihkb2MpIHsKQEAgLTMyNzMsNiArMzI5OCw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1
bmN0aW9uKCkgewogICBvcHRpb24oImhpc3RvcnlFdmVudERlbGF5IiwgNTAwKTsKICAgb3B0aW9u
KCJ2aWV3cG9ydE1hcmdpbiIsIDEwLCBmdW5jdGlvbihjbSl7Y20ucmVmcmVzaCgpO30sIHRydWUp
OwogICBvcHRpb24oIm1heEhpZ2hsaWdodExlbmd0aCIsIDEwMDAwLCBmdW5jdGlvbihjbSl7bG9h
ZE1vZGUoY20pOyBjbS5yZWZyZXNoKCk7fSwgdHJ1ZSk7CisgIG9wdGlvbigiY3J1ZGVNZWFzdXJp
bmdGcm9tIiwgMTAwMDApOwogICBvcHRpb24oIm1vdmVJbnB1dFdpdGhDdXJzb3IiLCB0cnVlLCBm
dW5jdGlvbihjbSwgdmFsKSB7CiAgICAgaWYgKCF2YWwpIGNtLmRpc3BsYXkuaW5wdXREaXYuc3R5
bGUudG9wID0gY20uZGlzcGxheS5pbnB1dERpdi5zdHlsZS5sZWZ0ID0gMDsKICAgfSk7CkBAIC00
MjE1LDggKzQyNDEsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB3
aGlsZSAoIXN0cmVhbS5lb2woKSkgewogICAgICAgaWYgKHN0cmVhbS5wb3MgPiBjbS5vcHRpb25z
Lm1heEhpZ2hsaWdodExlbmd0aCkgewogICAgICAgICBmbGF0dGVuU3BhbnMgPSBmYWxzZTsKLSAg
ICAgICAgLy8gV2Via2l0IHNlZW1zIHRvIHJlZnVzZSB0byByZW5kZXIgdGV4dCBub2RlcyBsb25n
ZXIgdGhhbiA1NzQ0NCBjaGFyYWN0ZXJzCi0gICAgICAgIHN0cmVhbS5wb3MgPSBNYXRoLm1pbih0
ZXh0Lmxlbmd0aCwgc3RyZWFtLnN0YXJ0ICsgNTAwMDApOworICAgICAgICBzdHJlYW0ucG9zID0g
dGV4dC5sZW5ndGg7CiAgICAgICAgIHN0eWxlID0gbnVsbDsKICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgIHN0eWxlID0gbW9kZS50b2tlbihzdHJlYW0sIHN0YXRlKTsKQEAgLTQyMjcsNyArNDI1Miwx
MiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIH0KICAgICAgIHN0
cmVhbS5zdGFydCA9IHN0cmVhbS5wb3M7CiAgICAgfQotICAgIGlmIChjdXJTdGFydCA8IHN0cmVh
bS5wb3MpIGYoc3RyZWFtLnBvcywgY3VyU3R5bGUpOworICAgIHdoaWxlIChjdXJTdGFydCA8IHN0
cmVhbS5wb3MpIHsKKyAgICAgIC8vIFdlYmtpdCBzZWVtcyB0byByZWZ1c2UgdG8gcmVuZGVyIHRl
eHQgbm9kZXMgbG9uZ2VyIHRoYW4gNTc0NDQgY2hhcmFjdGVycworICAgICAgdmFyIHBvcyA9IE1h
dGgubWluKHN0cmVhbS5wb3MsIGN1clN0YXJ0ICsgNTAwMDApOworICAgICAgZihwb3MsIGN1clN0
eWxlKTsKKyAgICAgIGN1clN0YXJ0ID0gcG9zOworICAgIH0KICAgfQogCiAgIGZ1bmN0aW9uIGhp
Z2hsaWdodExpbmUoY20sIGxpbmUsIHN0YXRlKSB7CkBAIC00Mjg1LDEzICs0MzE1LDIzIEBAIHdp
bmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICB9CiAKICAgdmFyIHN0eWxlVG9DbGFz
c0NhY2hlID0ge307Ci0gIGZ1bmN0aW9uIHN0eWxlVG9DbGFzcyhzdHlsZSkgeworICBmdW5jdGlv
biBpbnRlcnByZXRUb2tlblN0eWxlKHN0eWxlLCBidWlsZGVyKSB7CiAgICAgaWYgKCFzdHlsZSkg
cmV0dXJuIG51bGw7CisgICAgZm9yICg7OykgeworICAgICAgdmFyIGxpbmVDbGFzcyA9IHN0eWxl
Lm1hdGNoKC8oPzpefFxzKWxpbmUtKGJhY2tncm91bmQtKT8oXFMrKS8pOworICAgICAgaWYgKCFs
aW5lQ2xhc3MpIGJyZWFrOworICAgICAgc3R5bGUgPSBzdHlsZS5zbGljZSgwLCBsaW5lQ2xhc3Mu
aW5kZXgpICsgc3R5bGUuc2xpY2UobGluZUNsYXNzLmluZGV4ICsgbGluZUNsYXNzWzBdLmxlbmd0
aCk7CisgICAgICB2YXIgcHJvcCA9IGxpbmVDbGFzc1sxXSA/ICJiZ0NsYXNzIiA6ICJ0ZXh0Q2xh
c3MiOworICAgICAgaWYgKGJ1aWxkZXJbcHJvcF0gPT0gbnVsbCkKKyAgICAgICAgYnVpbGRlcltw
cm9wXSA9IGxpbmVDbGFzc1syXTsKKyAgICAgIGVsc2UgaWYgKCEobmV3IFJlZ0V4cCgiKD86Xnxc
cykiICsgbGluZUNsYXNzWzJdICsgIig/OiR8XHMpIikpLnRlc3QoYnVpbGRlcltwcm9wXSkpCisg
ICAgICAgIGJ1aWxkZXJbcHJvcF0gKz0gIiAiICsgbGluZUNsYXNzWzJdOworICAgIH0KICAgICBy
ZXR1cm4gc3R5bGVUb0NsYXNzQ2FjaGVbc3R5bGVdIHx8CiAgICAgICAoc3R5bGVUb0NsYXNzQ2Fj
aGVbc3R5bGVdID0gImNtLSIgKyBzdHlsZS5yZXBsYWNlKC8gKy9nLCAiIGNtLSIpKTsKICAgfQog
Ci0gIGZ1bmN0aW9uIGxpbmVDb250ZW50KGNtLCByZWFsTGluZSwgbWVhc3VyZSwgY29weVdpZGdl
dHMpIHsKKyAgZnVuY3Rpb24gYnVpbGRMaW5lQ29udGVudChjbSwgcmVhbExpbmUsIG1lYXN1cmUs
IGNvcHlXaWRnZXRzKSB7CiAgICAgdmFyIG1lcmdlZCwgbGluZSA9IHJlYWxMaW5lLCBlbXB0eSA9
IHRydWU7CiAgICAgd2hpbGUgKG1lcmdlZCA9IGNvbGxhcHNlZFNwYW5BdFN0YXJ0KGxpbmUpKQog
ICAgICAgbGluZSA9IGdldExpbmUoY20uZG9jLCBtZXJnZWQuZmluZCgpLmZyb20ubGluZSk7CkBA
IC00Mjk5LDcgKzQzMzksNiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAg
ICB2YXIgYnVpbGRlciA9IHtwcmU6IGVsdCgicHJlIiksIGNvbDogMCwgcG9zOiAwLAogICAgICAg
ICAgICAgICAgICAgIG1lYXN1cmU6IG51bGwsIG1lYXN1cmVkU29tZXRoaW5nOiBmYWxzZSwgY206
IGNtLAogICAgICAgICAgICAgICAgICAgIGNvcHlXaWRnZXRzOiBjb3B5V2lkZ2V0c307Ci0gICAg
aWYgKGxpbmUudGV4dENsYXNzKSBidWlsZGVyLnByZS5jbGFzc05hbWUgPSBsaW5lLnRleHRDbGFz
czsKIAogICAgIGRvIHsKICAgICAgIGlmIChsaW5lLnRleHQpIGVtcHR5ID0gZmFsc2U7CkBAIC00
MzM2LDggKzQzNzUsMTEgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAg
ICB9CiAgICAgfQogCisgICAgdmFyIHRleHRDbGFzcyA9IGJ1aWxkZXIudGV4dENsYXNzID8gYnVp
bGRlci50ZXh0Q2xhc3MgKyAiICIgKyAocmVhbExpbmUudGV4dENsYXNzIHx8ICIiKSA6IHJlYWxM
aW5lLnRleHRDbGFzczsKKyAgICBpZiAodGV4dENsYXNzKSBidWlsZGVyLnByZS5jbGFzc05hbWUg
PSB0ZXh0Q2xhc3M7CisKICAgICBzaWduYWwoY20sICJyZW5kZXJMaW5lIiwgY20sIHJlYWxMaW5l
LCBidWlsZGVyLnByZSk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIucHJlOworICAgIHJldHVybiBidWls
ZGVyOwogICB9CiAKICAgdmFyIHRva2VuU3BlY2lhbENoYXJzID0gL1tcdFx1MDAwMC1cdTAwMTlc
dTAwYWRcdTIwMGJcdTIwMjhcdTIwMjlcdUZFRkZdL2c7CkBAIC00NDQ4LDcgKzQ0OTAsNyBAQCB3
aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB2YXIgc3BhbnMgPSBsaW5lLm1h
cmtlZFNwYW5zLCBhbGxUZXh0ID0gbGluZS50ZXh0LCBhdCA9IDA7CiAgICAgaWYgKCFzcGFucykg
ewogICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKz0yKQotICAgICAg
ICBidWlsZGVyLmFkZFRva2VuKGJ1aWxkZXIsIGFsbFRleHQuc2xpY2UoYXQsIGF0ID0gc3R5bGVz
W2ldKSwgc3R5bGVUb0NsYXNzKHN0eWxlc1tpKzFdKSk7CisgICAgICAgIGJ1aWxkZXIuYWRkVG9r
ZW4oYnVpbGRlciwgYWxsVGV4dC5zbGljZShhdCwgYXQgPSBzdHlsZXNbaV0pLCBpbnRlcnByZXRU
b2tlblN0eWxlKHN0eWxlc1tpKzFdLCBidWlsZGVyKSk7CiAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC00NDk4LDcgKzQ1NDAsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsK
ICAgICAgICAgICBzcGFuU3RhcnRTdHlsZSA9ICIiOwogICAgICAgICB9CiAgICAgICAgIHRleHQg
PSBhbGxUZXh0LnNsaWNlKGF0LCBhdCA9IHN0eWxlc1tpKytdKTsKLSAgICAgICAgc3R5bGUgPSBz
dHlsZVRvQ2xhc3Moc3R5bGVzW2krK10pOworICAgICAgICBzdHlsZSA9IGludGVycHJldFRva2Vu
U3R5bGUoc3R5bGVzW2krK10sIGJ1aWxkZXIpOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtNTQ2
NCwxNSArNTUwNiwyMiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB9
OwogICBlbHNlIGlmIChzYWZhcmkgJiYgIS9WZXJzaW9uXC8oWzYtOV18XGRcZClcYi8udGVzdChu
YXZpZ2F0b3IudXNlckFnZW50KSkKICAgICBzcGFuQWZmZWN0c1dyYXBwaW5nID0gZnVuY3Rpb24o
c3RyLCBpKSB7Ci0gICAgICByZXR1cm4gL1wtW14gXC0/XXxcP1teICFcJ1wiXCksLlwtXC86O1w/
XF1cfV0vLnRlc3Qoc3RyLnNsaWNlKGkgLSAxLCBpICsgMSkpOworICAgICAgdmFyIHJlc3VsdCA9
IC9cLVteIFwtP118XD9bXiAhXCdcIlwpLC5cLVwvOjtcP1xdXH1dLy50ZXN0KHN0ci5zbGljZShp
IC0gMSwgaSArIDEpKTsKKyAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfTsKLSAgZWxzZSBpZiAo
d2Via2l0ICYmICEvQ2hyb21lXC8oPzoyOXxbMy05XVxkfFxkXGRcZClcLi8udGVzdChuYXZpZ2F0
b3IudXNlckFnZW50KSkKKyAgZWxzZSBpZiAod2Via2l0ICYmIC9DaHJvbWVcLyg/OjI5fFszLTld
XGR8XGRcZFxkKVwuLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKQorICAgIHNwYW5BZmZlY3Rz
V3JhcHBpbmcgPSBmdW5jdGlvbihzdHIsIGkpIHsKKyAgICAgIHZhciBjb2RlID0gc3RyLmNoYXJD
b2RlQXQoaSAtIDEpOworICAgICAgcmV0dXJuIGNvZGUgPj0gODIwOCAmJiBjb2RlIDw9IDgyMTI7
CisgICAgfTsKKyAgZWxzZSBpZiAod2Via2l0KQogICAgIHNwYW5BZmZlY3RzV3JhcHBpbmcgPSBm
dW5jdGlvbihzdHIsIGkpIHsKICAgICAgIGlmIChpID4gMSAmJiBzdHIuY2hhckNvZGVBdChpIC0g
MSkgPT0gNDUpIHsKICAgICAgICAgaWYgKC9cdy8udGVzdChzdHIuY2hhckF0KGkgLSAyKSkgJiYg
L1teXC0/XC5dLy50ZXN0KHN0ci5jaGFyQXQoaSkpKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYg
KGkgPiAyICYmIC9bXGRcLixdLy50ZXN0KHN0ci5jaGFyQXQoaSAtIDIpKSAmJiAvW1xkXC4sXS8u
dGVzdChzdHIuY2hhckF0KGkpKSkgcmV0dXJuIGZhbHNlOwogICAgICAgfQotICAgICAgcmV0dXJu
IC9bfiEjJSYqKT0rfVxdfFwiXC4+LDo7XVsoe1s8XXwtW15cLT9cLlx1MjAxMC1cdTIwMWZcdTIw
MjZdfFw/W1x3fmBAIyQlXF4mKihfPSt7W3w+PF184oCmW1x3fmBAIyQlXF4mKihfPSt7Wz48XS8u
dGVzdChzdHIuc2xpY2UoaSAtIDEsIGkgKyAxKSk7CisgICAgICB2YXIgcmVzdWx0ID0gL1t+ISMl
JiopPSt9XF18XCJcLj4sOjtdWyh7WzxdfC1bXlwtP1wuXHUyMDEwLVx1MjAxZlx1MjAyNl18XD9b
XHd+YEAjJCVcXiYqKF89K3tbfD48XXzigKZbXHd+YEAjJCVcXiYqKF89K3tbPjxdLy50ZXN0KHN0
ci5zbGljZShpIC0gMSwgaSArIDEpKTsKKyAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfTsKIAog
ICB2YXIga25vd25TY3JvbGxiYXJXaWR0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jc3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VG9vbHMvUHJldHR5UHJpbnRpbmcvY3NzLmpzCmluZGV4IDJlYWE5NmEuLjA4NWIxMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Ub29scy9QcmV0dHlQcmludGluZy9jc3MuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Rvb2xzL1ByZXR0eVByaW50aW5nL2Nzcy5qcwpA
QCAtMSwxMCArMSw4IEBACi1Db2RlTWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0aW9uKGNv
bmZpZykgewotICByZXR1cm4gQ29kZU1pcnJvci5nZXRNb2RlKGNvbmZpZywgInRleHQvY3NzIik7
Ci19KTsKLQotQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MtYmFzZSIsIGZ1bmN0aW9uKGNvbmZp
ZywgcGFyc2VyQ29uZmlnKSB7CitDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcyIsIGZ1bmN0aW9u
KGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICJ1c2Ugc3RyaWN0IjsKIAorICBpZiAoIXBhcnNl
ckNvbmZpZy5wcm9wZXJ0eUtleXdvcmRzKSBwYXJzZXJDb25maWcgPSBDb2RlTWlycm9yLnJlc29s
dmVNb2RlKCJ0ZXh0L2NzcyIpOworCiAgIHZhciBpbmRlbnRVbml0ID0gY29uZmlnLmluZGVudFVu
aXQsCiAgICAgICBob29rcyA9IHBhcnNlckNvbmZpZy5ob29rcyB8fCB7fSwKICAgICAgIGF0TWVk
aWFUeXBlcyA9IHBhcnNlckNvbmZpZy5hdE1lZGlhVHlwZXMgfHwge30sCkBAIC0yNzcsMTYgKzI3
NSwxNCBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcy1iYXNlIiwgZnVuY3Rpb24oY29uZmln
LCBwYXJzZXJDb25maWcpIHsKICAgICAgICAgICBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5n
dGgtMV0gPSAiQG1lZGlhVHlwZSI7CiAgICAgICAgICAgc3RhdGUuc3RhY2sucHVzaCgiQG1lZGlh
VHlwZSgiKTsKICAgICAgICAgfQorICAgICAgICBlbHNlIHN0YXRlLnN0YWNrLnB1c2goIigiKTsK
ICAgICAgIH0KICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gIikiKSB7Ci0gICAgICAgIGlmIChjb250
ZXh0ID09ICJwcm9wZXJ0eVZhbHVlIiAmJiBzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgt
Ml0gPT0gIkBtZWRpYVR5cGUoIikgeworICAgICAgICBpZiAoY29udGV4dCA9PSAicHJvcGVydHlW
YWx1ZSIpIHsKICAgICAgICAgICAvLyBJbiBAbWVkaWFUeXBlKCB3aXRob3V0IGNsb3NpbmcgOyBh
ZnRlciBwcm9wZXJ0eVZhbHVlCiAgICAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7Ci0gICAgICAg
ICAgc3RhdGUuc3RhY2sucG9wKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY29udGV4
dCA9PSAiQG1lZGlhVHlwZSgiKSB7Ci0gICAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7CiAgICAg
ICAgIH0KKyAgICAgICAgc3RhdGUuc3RhY2sucG9wKCk7CiAgICAgICB9CiAgICAgICBlbHNlIGlm
ICh0eXBlID09ICI6IiAmJiBzdGF0ZS5sYXN0VG9rZW4gPT0gInByb3BlcnR5Iikgc3RhdGUuc3Rh
Y2sucHVzaCgicHJvcGVydHlWYWx1ZSIpOwogICAgICAgZWxzZSBpZiAoY29udGV4dCA9PSAicHJv
cGVydHlWYWx1ZSIgJiYgdHlwZSA9PSAiOyIpIHN0YXRlLnN0YWNrLnBvcCgpOwpAQCAtNTgyLDcg
KzU3OCw3IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiY3NzLWJhc2UiLCBmdW5jdGlvbihjb25m
aWcsIHBhcnNlckNvbmZpZykgewogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICB9CiAgICAg
fSwKLSAgICBuYW1lOiAiY3NzLWJhc2UiCisgICAgbmFtZTogImNzcyIKICAgfSk7CiAKICAgQ29k
ZU1pcnJvci5kZWZpbmVNSU1FKCJ0ZXh0L3gtc2NzcyIsIHsKQEAgLTU5Myw2ICs1ODksMTIgQEAg
Q29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MtYmFzZSIsIGZ1bmN0aW9uKGNvbmZpZywgcGFyc2Vy
Q29uZmlnKSB7CiAgICAgdmFsdWVLZXl3b3JkczogdmFsdWVLZXl3b3JkcywKICAgICBhbGxvd05l
c3RlZDogdHJ1ZSwKICAgICBob29rczogeworICAgICAgIjoiOiBmdW5jdGlvbihzdHJlYW0pIHsK
KyAgICAgICAgaWYgKHN0cmVhbS5tYXRjaCgvXHMqey8pKSB7CisgICAgICAgICAgcmV0dXJuIFtu
dWxsLCAieyJdOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0sCiAg
ICAgICAiJCI6IGZ1bmN0aW9uKHN0cmVhbSkgewogICAgICAgICBzdHJlYW0ubWF0Y2goL15bXHct
XSsvKTsKICAgICAgICAgaWYgKHN0cmVhbS5wZWVrKCkgPT0gIjoiKSB7CkBAIC02MjAsNiArNjIy
LDYgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MtYmFzZSIsIGZ1bmN0aW9uKGNvbmZpZywg
cGFyc2VyQ29uZmlnKSB7CiAgICAgICAgIH0KICAgICAgIH0KICAgICB9LAotICAgIG5hbWU6ICJj
c3MtYmFzZSIKKyAgICBuYW1lOiAiY3NzIgogICB9KTsKIH0pKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2RlTWlycm9yQWRkaXRpb25zLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29kZU1pcnJvckFkZGl0aW9ucy5q
cwppbmRleCA0NzM2MjhhLi44MzJhMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db2RlTWlycm9yQWRkaXRpb25zLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvZGVNaXJyb3JBZGRpdGlvbnMuanMKQEAgLTI0MCwx
MiArMjQwLDEyIEBACiAgICAgICAgIHJldHVybiBzdGF0ZTsKICAgICB9CiAKLSAgICBDb2RlTWly
cm9yLmV4dGVuZE1vZGUoImNzcy1iYXNlIiwge3Rva2VuOiBleHRlbmRlZENTU1Rva2VuLCBhbHRl
cm5hdGVOYW1lOiAiY3NzIn0pOworICAgIENvZGVNaXJyb3IuZXh0ZW5kTW9kZSgiY3NzIiwge3Rv
a2VuOiBleHRlbmRlZENTU1Rva2VufSk7CiAgICAgQ29kZU1pcnJvci5leHRlbmRNb2RlKCJ4bWwi
LCB7dG9rZW46IGV4dGVuZGVkWE1MVG9rZW59KTsKICAgICBDb2RlTWlycm9yLmV4dGVuZE1vZGUo
ImphdmFzY3JpcHQiLCB7dG9rZW46IGV4dGVuZGVkVG9rZW59KTsKIAogICAgIENvZGVNaXJyb3Iu
ZGVmaW5lTW9kZSgiY3NzLXJ1bGUiLCBDb2RlTWlycm9yLm1vZGVzLmNzcyk7Ci0gICAgQ29kZU1p
cnJvci5leHRlbmRNb2RlKCJjc3MtcnVsZSIsIHtzdGFydFN0YXRlOiBleHRlbmRlZENTU1J1bGVT
dGFydFN0YXRlfSk7CisgICAgQ29kZU1pcnJvci5leHRlbmRNb2RlKCJjc3MtcnVsZSIsIHt0b2tl
bjogZXh0ZW5kZWRDU1NUb2tlbiwgc3RhcnRTdGF0ZTogZXh0ZW5kZWRDU1NSdWxlU3RhcnRTdGF0
ZSwgYWx0ZXJuYXRlTmFtZTogImNzcyJ9KTsKIAogICAgIENvZGVNaXJyb3IuZGVmaW5lRXh0ZW5z
aW9uKCJoYXNMaW5lQ2xhc3MiLCBmdW5jdGlvbihsaW5lLCB3aGVyZSwgY2xhc3NOYW1lKSB7CiAg
ICAgICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUgYXJndW1lbnRzIHRvIGFkZExpbmVDbGFzcyBhbmQg
cmVtb3ZlTGluZUNsYXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29kZU1pcnJvckZvcm1hdHRlcnMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db2RlTWlycm9yRm9ybWF0dGVycy5qcwppbmRleCA4MWM4MTU1Li4zZDk5
Y2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db2Rl
TWlycm9yRm9ybWF0dGVycy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db2RlTWlycm9yRm9ybWF0dGVycy5qcwpAQCAtMjkwLDcgKzI5MCw3IEBAIENvZGVNaXJy
b3IuZXh0ZW5kTW9kZSgiamF2YXNjcmlwdCIsIHsKICAgICB9CiB9KTsKIAotQ29kZU1pcnJvci5l
eHRlbmRNb2RlKCJjc3MtYmFzZSIsIHsKK0NvZGVNaXJyb3IuZXh0ZW5kTW9kZSgiY3NzIiwgewog
ICAgIHNob3VsZEhhdmVTcGFjZUJlZm9yZVRva2VuOiBmdW5jdGlvbihsYXN0VG9rZW4sIGxhc3RD
b250ZW50LCB0b2tlbiwgc3RhdGUsIGNvbnRlbnQsIGlzQ29tbWVudCkKICAgICB7CiAgICAgICAg
IGlmICghdG9rZW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0RlYnVnZ2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0RlYnVnZ2VyTWFuYWdlci5qcwppbmRleCBlZDEzMmQ0Li4wYmRjZDU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9EZWJ1Z2dlck1hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRGVidWdnZXJNYW5h
Z2VyLmpzCkBAIC01NTAsNyArNTUwLDcgQEAgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTWFuYWdlci5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGZ1bmN0aW9uIGRpZFJlbW92ZUJyZWFrcG9pbnQoZXJyb3Ip
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChlcnJvcikKLSAgICAgICAgICAgICAgICBjb25z
b2xlLmxvZyhlcnJvcik7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CiAK
ICAgICAgICAgICAgIGRlbGV0ZSB0aGlzLl9icmVha3BvaW50SWRNYXBbYnJlYWtwb2ludC5pZF07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVy
bmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuY3NzCmluZGV4IGM5NWRi
NjQuLjRlMzAwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY29kZW1pcnJvci5jc3MKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmNz
cwpAQCAtMTE4LDYgKzExOCw4IEBAIGRpdi5Db2RlTWlycm9yIHNwYW4uQ29kZU1pcnJvci1ub25t
YXRjaGluZ2JyYWNrZXQge2NvbG9yOiAjZjIyO30KICAgaGVpZ2h0OiAxMDAlOwogICBvdXRsaW5l
OiBub25lOyAvKiBQcmV2ZW50IGRyYWdnaW5nIGZyb20gaGlnaGxpZ2h0aW5nIHRoZSBlbGVtZW50
ICovCiAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJv
eDsKKyAgYm94LXNpemluZzogY29udGVudC1ib3g7CiB9CiAuQ29kZU1pcnJvci1zaXplciB7CiAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKQEAgLTE1Niw2ICsxNTgsOCBAQCBkaXYuQ29kZU1pcnJvciBz
cGFuLkNvZGVNaXJyb3Itbm9ubWF0Y2hpbmdicmFja2V0IHtjb2xvcjogI2YyMjt9CiAuQ29kZU1p
cnJvci1ndXR0ZXIgewogICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICBoZWlnaHQ6IDEwMCU7Cisg
IC1tb3otYm94LXNpemluZzogY29udGVudC1ib3g7CisgIGJveC1zaXppbmc6IGNvbnRlbnQtYm94
OwogICBwYWRkaW5nLWJvdHRvbTogMzBweDsKICAgbWFyZ2luLWJvdHRvbTogLTMycHg7CiAgIGRp
c3BsYXk6IGlubGluZS1ibG9jazsKQEAgLTIxNSw4ICsyMTksNyBAQCBkaXYuQ29kZU1pcnJvciBz
cGFuLkNvZGVNaXJyb3Itbm9ubWF0Y2hpbmdicmFja2V0IHtjb2xvcjogI2YyMjt9CiAgIG92ZXJm
bG93OiBhdXRvOwogfQogCi0uQ29kZU1pcnJvci13aWRnZXQgewotfQorLkNvZGVNaXJyb3Itd2lk
Z2V0IHt9CiAKIC5Db2RlTWlycm9yLXdyYXAgLkNvZGVNaXJyb3Itc2Nyb2xsIHsKICAgb3ZlcmZs
b3cteDogaGlkZGVuOwpAQCAtMjI0LDcgKzIyNyw4IEBAIGRpdi5Db2RlTWlycm9yIHNwYW4uQ29k
ZU1pcnJvci1ub25tYXRjaGluZ2JyYWNrZXQge2NvbG9yOiAjZjIyO30KIAogLkNvZGVNaXJyb3It
bWVhc3VyZSB7CiAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgd2lkdGg6IDEwMCU7IGhlaWdodDog
MHB4OworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiAwOwogICBvdmVyZmxvdzogaGlkZGVuOwog
ICB2aXNpYmlsaXR5OiBoaWRkZW47CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVtaXJyb3IuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2NvZGVt
aXJyb3IuanMKaW5kZXggN2E1YTFlNS4uODE3NzFlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2RlbWlycm9yLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVN
aXJyb3IvY29kZW1pcnJvci5qcwpAQCAtMzA0LDE1ICszMDQsMTMgQEAgd2luZG93LkNvZGVNaXJy
b3IgPSAoZnVuY3Rpb24oKSB7CiAgIC8vIE1ha2Ugc3VyZSB0aGUgZ3V0dGVycyBvcHRpb25zIGNv
bnRhaW5zIHRoZSBlbGVtZW50CiAgIC8vICJDb2RlTWlycm9yLWxpbmVudW1iZXJzIiB3aGVuIHRo
ZSBsaW5lTnVtYmVycyBvcHRpb24gaXMgdHJ1ZS4KICAgZnVuY3Rpb24gc2V0R3V0dGVyc0Zvckxp
bmVOdW1iZXJzKG9wdGlvbnMpIHsKLSAgICB2YXIgZm91bmQgPSBmYWxzZTsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG9wdGlvbnMuZ3V0dGVycy5sZW5ndGg7ICsraSkgewotICAgICAgaWYgKG9w
dGlvbnMuZ3V0dGVyc1tpXSA9PSAiQ29kZU1pcnJvci1saW5lbnVtYmVycyIpIHsKLSAgICAgICAg
aWYgKG9wdGlvbnMubGluZU51bWJlcnMpIGZvdW5kID0gdHJ1ZTsKLSAgICAgICAgZWxzZSBvcHRp
b25zLmd1dHRlcnMuc3BsaWNlKGktLSwgMSk7Ci0gICAgICB9CisgICAgdmFyIGZvdW5kID0gaW5k
ZXhPZihvcHRpb25zLmd1dHRlcnMsICJDb2RlTWlycm9yLWxpbmVudW1iZXJzIik7CisgICAgaWYg
KGZvdW5kID09IC0xICYmIG9wdGlvbnMubGluZU51bWJlcnMpIHsKKyAgICAgIG9wdGlvbnMuZ3V0
dGVycyA9IG9wdGlvbnMuZ3V0dGVycy5jb25jYXQoWyJDb2RlTWlycm9yLWxpbmVudW1iZXJzIl0p
OworICAgIH0gZWxzZSBpZiAoZm91bmQgPiAtMSAmJiAhb3B0aW9ucy5saW5lTnVtYmVycykgewor
ICAgICAgb3B0aW9ucy5ndXR0ZXJzID0gb3B0aW9ucy5ndXR0ZXJzLnNsaWNlKDApOworICAgICAg
b3B0aW9ucy5ndXR0ZXJzLnNwbGljZShpLCAxKTsKICAgICB9Ci0gICAgaWYgKCFmb3VuZCAmJiBv
cHRpb25zLmxpbmVOdW1iZXJzKQotICAgICAgb3B0aW9ucy5ndXR0ZXJzLnB1c2goIkNvZGVNaXJy
b3ItbGluZW51bWJlcnMiKTsKICAgfQogCiAgIC8vIFNDUk9MTEJBUlMKQEAgLTQxMiwxMSArNDEw
LDE3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIHZhciBvbGRGcm9t
ID0gY20uZGlzcGxheS5zaG93aW5nRnJvbSwgb2xkVG8gPSBjbS5kaXNwbGF5LnNob3dpbmdUbywg
dXBkYXRlZDsKICAgICB2YXIgdmlzaWJsZSA9IHZpc2libGVMaW5lcyhjbS5kaXNwbGF5LCBjbS5k
b2MsIHZpZXdQb3J0KTsKICAgICBmb3IgKDs7KSB7CisgICAgICB2YXIgb2xkV2lkdGggPSBjbS5k
aXNwbGF5LnNjcm9sbGVyLmNsaWVudFdpZHRoOwogICAgICAgaWYgKCF1cGRhdGVEaXNwbGF5SW5u
ZXIoY20sIGNoYW5nZXMsIHZpc2libGUsIGZvcmNlZCkpIGJyZWFrOwotICAgICAgZm9yY2VkID0g
ZmFsc2U7CiAgICAgICB1cGRhdGVkID0gdHJ1ZTsKKyAgICAgIGNoYW5nZXMgPSBbXTsKICAgICAg
IHVwZGF0ZVNlbGVjdGlvbihjbSk7CiAgICAgICB1cGRhdGVTY3JvbGxiYXJzKGNtKTsKKyAgICAg
IGlmIChjbS5vcHRpb25zLmxpbmVXcmFwcGluZyAmJiBvbGRXaWR0aCAhPSBjbS5kaXNwbGF5LnNj
cm9sbGVyLmNsaWVudFdpZHRoKSB7CisgICAgICAgIGZvcmNlZCA9IHRydWU7CisgICAgICAgIGNv
bnRpbnVlOworICAgICAgfQorICAgICAgZm9yY2VkID0gZmFsc2U7CiAKICAgICAgIC8vIENsaXAg
Zm9yY2VkIHZpZXdwb3J0IHRvIGFjdHVhbCBzY3JvbGxhYmxlIGFyZWEKICAgICAgIGlmICh2aWV3
UG9ydCkKQEAgLTQyNSw3ICs0MjksNiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigp
IHsKICAgICAgIHZpc2libGUgPSB2aXNpYmxlTGluZXMoY20uZGlzcGxheSwgY20uZG9jLCB2aWV3
UG9ydCk7CiAgICAgICBpZiAodmlzaWJsZS5mcm9tID49IGNtLmRpc3BsYXkuc2hvd2luZ0Zyb20g
JiYgdmlzaWJsZS50byA8PSBjbS5kaXNwbGF5LnNob3dpbmdUbykKICAgICAgICAgYnJlYWs7Ci0g
ICAgICBjaGFuZ2VzID0gW107CiAgICAgfQogCiAgICAgaWYgKHVwZGF0ZWQpIHsKQEAgLTY2Mywx
MCArNjY2LDExIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICB9CiAKICAg
ZnVuY3Rpb24gYnVpbGRMaW5lRWxlbWVudChjbSwgbGluZSwgbGluZU5vLCBkaW1zLCByZXVzZSkg
ewotICAgIHZhciBsaW5lRWxlbWVudCA9IGxpbmVDb250ZW50KGNtLCBsaW5lKTsKKyAgICB2YXIg
YnVpbHQgPSBidWlsZExpbmVDb250ZW50KGNtLCBsaW5lKSwgbGluZUVsZW1lbnQgPSBidWlsdC5w
cmU7CiAgICAgdmFyIG1hcmtlcnMgPSBsaW5lLmd1dHRlck1hcmtlcnMsIGRpc3BsYXkgPSBjbS5k
aXNwbGF5LCB3cmFwOwogCi0gICAgaWYgKCFjbS5vcHRpb25zLmxpbmVOdW1iZXJzICYmICFtYXJr
ZXJzICYmICFsaW5lLmJnQ2xhc3MgJiYgIWxpbmUud3JhcENsYXNzICYmICFsaW5lLndpZGdldHMp
CisgICAgdmFyIGJnQ2xhc3MgPSBidWlsdC5iZ0NsYXNzID8gYnVpbHQuYmdDbGFzcyArICIgIiAr
IChsaW5lLmJnQ2xhc3MgfHwgIiIpIDogbGluZS5iZ0NsYXNzOworICAgIGlmICghY20ub3B0aW9u
cy5saW5lTnVtYmVycyAmJiAhbWFya2VycyAmJiAhYmdDbGFzcyAmJiAhbGluZS53cmFwQ2xhc3Mg
JiYgIWxpbmUud2lkZ2V0cykKICAgICAgIHJldHVybiBsaW5lRWxlbWVudDsKIAogICAgIC8vIExp
bmVzIHdpdGggZ3V0dGVyIGVsZW1lbnRzLCB3aWRnZXRzIG9yIGEgYmFja2dyb3VuZCBjbGFzcyBu
ZWVkCkBAIC03MDQsOCArNzA4LDggQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7
CiAgICAgICB3cmFwLmFwcGVuZENoaWxkKGxpbmVFbGVtZW50KTsKICAgICB9CiAgICAgLy8gS2x1
ZGdlIHRvIG1ha2Ugc3VyZSB0aGUgc3R5bGVkIGVsZW1lbnQgbGllcyBiZWhpbmQgdGhlIHNlbGVj
dGlvbiAoYnkgei1pbmRleCkKLSAgICBpZiAobGluZS5iZ0NsYXNzKQotICAgICAgd3JhcC5pbnNl
cnRCZWZvcmUoZWx0KCJkaXYiLCBudWxsLCBsaW5lLmJnQ2xhc3MgKyAiIENvZGVNaXJyb3ItbGlu
ZWJhY2tncm91bmQiKSwgd3JhcC5maXJzdENoaWxkKTsKKyAgICBpZiAoYmdDbGFzcykKKyAgICAg
IHdyYXAuaW5zZXJ0QmVmb3JlKGVsdCgiZGl2IiwgbnVsbCwgYmdDbGFzcyArICIgQ29kZU1pcnJv
ci1saW5lYmFja2dyb3VuZCIpLCB3cmFwLmZpcnN0Q2hpbGQpOwogICAgIGlmIChjbS5vcHRpb25z
LmxpbmVOdW1iZXJzIHx8IG1hcmtlcnMpIHsKICAgICAgIHZhciBndXR0ZXJXcmFwID0gd3JhcC5p
bnNlcnRCZWZvcmUoZWx0KCJkaXYiLCBudWxsLCBudWxsLCAicG9zaXRpb246IGFic29sdXRlOyBs
ZWZ0OiAiICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChj
bS5vcHRpb25zLmZpeGVkR3V0dGVyID8gZGltcy5maXhlZFBvcyA6IC1kaW1zLmd1dHRlclRvdGFs
V2lkdGgpICsgInB4IiksCkBAIC05NzIsNiArOTc2LDEwIEBAIHdpbmRvdy5Db2RlTWlycm9yID0g
KGZ1bmN0aW9uKCkgewogICBmdW5jdGlvbiBtZWFzdXJlQ2hhcihjbSwgbGluZSwgY2gsIGRhdGEs
IGJpYXMpIHsKICAgICB2YXIgZGlyID0gLTE7CiAgICAgZGF0YSA9IGRhdGEgfHwgbWVhc3VyZUxp
bmUoY20sIGxpbmUpOworICAgIGlmIChkYXRhLmNydWRlKSB7CisgICAgICB2YXIgbGVmdCA9IGRh
dGEubGVmdCArIGNoICogZGF0YS53aWR0aDsKKyAgICAgIHJldHVybiB7bGVmdDogbGVmdCwgcmln
aHQ6IGxlZnQgKyBkYXRhLndpZHRoLCB0b3A6IGRhdGEudG9wLCBib3R0b206IGRhdGEuYm90dG9t
fTsKKyAgICB9CiAKICAgICBmb3IgKHZhciBwb3MgPSBjaDs7IHBvcyArPSBkaXIpIHsKICAgICAg
IHZhciByID0gZGF0YVtwb3NdOwpAQCAtMTAyMCw4ICsxMDI4LDExIEBAIHdpbmRvdy5Db2RlTWly
cm9yID0gKGZ1bmN0aW9uKCkgewogICB9CiAKICAgZnVuY3Rpb24gbWVhc3VyZUxpbmVJbm5lcihj
bSwgbGluZSkgeworICAgIGlmICghY20ub3B0aW9ucy5saW5lV3JhcHBpbmcgJiYgbGluZS50ZXh0
Lmxlbmd0aCA+PSBjbS5vcHRpb25zLmNydWRlTWVhc3VyaW5nRnJvbSkKKyAgICAgIHJldHVybiBj
cnVkZWx5TWVhc3VyZUxpbmUoY20sIGxpbmUpOworCiAgICAgdmFyIGRpc3BsYXkgPSBjbS5kaXNw
bGF5LCBtZWFzdXJlID0gZW1wdHlBcnJheShsaW5lLnRleHQubGVuZ3RoKTsKLSAgICB2YXIgcHJl
ID0gbGluZUNvbnRlbnQoY20sIGxpbmUsIG1lYXN1cmUsIHRydWUpOworICAgIHZhciBwcmUgPSBi
dWlsZExpbmVDb250ZW50KGNtLCBsaW5lLCBtZWFzdXJlLCB0cnVlKS5wcmU7CiAKICAgICAvLyBJ
RSBkb2VzIG5vdCBjYWNoZSBlbGVtZW50IHBvc2l0aW9ucyBvZiBpbmxpbmUgZWxlbWVudHMgYmV0
d2VlbgogICAgIC8vIGNhbGxzIHRvIGdldEJvdW5kaW5nQ2xpZW50UmVjdC4gVGhpcyBtYWtlcyB0
aGUgbG9vcCBiZWxvdywKQEAgLTExMDYsNiArMTExNywxNSBAQCB3aW5kb3cuQ29kZU1pcnJvciA9
IChmdW5jdGlvbigpIHsKICAgICByZXR1cm4gZGF0YTsKICAgfQogCisgIGZ1bmN0aW9uIGNydWRl
bHlNZWFzdXJlTGluZShjbSwgbGluZSkgeworICAgIHZhciBjb3B5ID0gbmV3IExpbmUobGluZS50
ZXh0LnNsaWNlKDAsIDEwMCksIG51bGwpOworICAgIGlmIChsaW5lLnRleHRDbGFzcykgY29weS50
ZXh0Q2xhc3MgPSBsaW5lLnRleHRDbGFzczsKKyAgICB2YXIgbWVhc3VyZSA9IG1lYXN1cmVMaW5l
SW5uZXIoY20sIGNvcHkpOworICAgIHZhciBsZWZ0ID0gbWVhc3VyZUNoYXIoY20sIGNvcHksIDAs
IG1lYXN1cmUsICJsZWZ0Iik7CisgICAgdmFyIHJpZ2h0ID0gbWVhc3VyZUNoYXIoY20sIGNvcHks
IDk5LCBtZWFzdXJlLCAicmlnaHQiKTsKKyAgICByZXR1cm4ge2NydWRlOiB0cnVlLCB0b3A6IGxl
ZnQudG9wLCBsZWZ0OiBsZWZ0LmxlZnQsIGJvdHRvbTogbGVmdC5ib3R0b20sIHdpZHRoOiAocmln
aHQucmlnaHQgLSBsZWZ0LmxlZnQpIC8gMTAwfTsKKyAgfQorCiAgIGZ1bmN0aW9uIG1lYXN1cmVM
aW5lV2lkdGgoY20sIGxpbmUpIHsKICAgICB2YXIgaGFzQmFkU3BhbiA9IGZhbHNlOwogICAgIGlm
IChsaW5lLm1hcmtlZFNwYW5zKSBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmUubWFya2VkU3BhbnM7
ICsraSkgewpAQCAtMTExMyw5ICsxMTMzLDEwIEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0
aW9uKCkgewogICAgICAgaWYgKHNwLmNvbGxhcHNlZCAmJiAoc3AudG8gPT0gbnVsbCB8fCBzcC50
byA9PSBsaW5lLnRleHQubGVuZ3RoKSkgaGFzQmFkU3BhbiA9IHRydWU7CiAgICAgfQogICAgIHZh
ciBjYWNoZWQgPSAhaGFzQmFkU3BhbiAmJiBmaW5kQ2FjaGVkTWVhc3VyZW1lbnQoY20sIGxpbmUp
OwotICAgIGlmIChjYWNoZWQpIHJldHVybiBtZWFzdXJlQ2hhcihjbSwgbGluZSwgbGluZS50ZXh0
Lmxlbmd0aCwgY2FjaGVkLm1lYXN1cmUsICJyaWdodCIpLnJpZ2h0OworICAgIGlmIChjYWNoZWQg
fHwgbGluZS50ZXh0Lmxlbmd0aCA+PSBjbS5vcHRpb25zLmNydWRlTWVhc3VyaW5nRnJvbSkKKyAg
ICAgIHJldHVybiBtZWFzdXJlQ2hhcihjbSwgbGluZSwgbGluZS50ZXh0Lmxlbmd0aCwgY2FjaGVk
ICYmIGNhY2hlZC5tZWFzdXJlLCAicmlnaHQiKS5yaWdodDsKIAotICAgIHZhciBwcmUgPSBsaW5l
Q29udGVudChjbSwgbGluZSwgbnVsbCwgdHJ1ZSk7CisgICAgdmFyIHByZSA9IGJ1aWxkTGluZUNv
bnRlbnQoY20sIGxpbmUsIG51bGwsIHRydWUpLnByZTsKICAgICB2YXIgZW5kID0gcHJlLmFwcGVu
ZENoaWxkKHplcm9XaWR0aEVsZW1lbnQoY20uZGlzcGxheS5tZWFzdXJlKSk7CiAgICAgcmVtb3Zl
Q2hpbGRyZW5BbmRBZGQoY20uZGlzcGxheS5tZWFzdXJlLCBwcmUpOwogICAgIHJldHVybiBnZXRS
ZWN0KGVuZCkucmlnaHQgLSBnZXRSZWN0KGNtLmRpc3BsYXkubGluZURpdikubGVmdDsKQEAgLTE4
OTIsNiArMTkxMyw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgIC8v
IFJlY2VudCBTYWZhcmkgKH42LjAuMikgaGF2ZSBhIHRlbmRlbmN5IHRvIHNlZ2ZhdWx0IHdoZW4g
dGhpcyBoYXBwZW5zLCBzbyB3ZSBkb24ndCBkbyBpdCB0aGVyZS4KICAgICBpZiAoZS5kYXRhVHJh
bnNmZXIuc2V0RHJhZ0ltYWdlICYmICFzYWZhcmkpIHsKICAgICAgIHZhciBpbWcgPSBlbHQoImlt
ZyIsIG51bGwsIG51bGwsICJwb3NpdGlvbjogZml4ZWQ7IGxlZnQ6IDA7IHRvcDogMDsiKTsKKyAg
ICAgIGltZy5zcmMgPSAiZGF0YTppbWFnZS9naWY7YmFzZTY0LFIwbEdPRGxoQVFBQkFBQUFBQ0g1
QkFFS0FBRUFMQUFBQUFBQkFBRUFBQUlDVEFFQU93PT0iOwogICAgICAgaWYgKG9wZXJhKSB7CiAg
ICAgICAgIGltZy53aWR0aCA9IGltZy5oZWlnaHQgPSAxOwogICAgICAgICBjbS5kaXNwbGF5Lndy
YXBwZXIuYXBwZW5kQ2hpbGQoaW1nKTsKQEAgLTI1MjYsNiArMjU0OCw3IEBAIHdpbmRvdy5Db2Rl
TWlycm9yID0gKGZ1bmN0aW9uKCkgewogCiAgICAgdmFyIHNlbCA9IGRvYy5zZWw7CiAgICAgc2Vs
LmdvYWxDb2x1bW4gPSBudWxsOworICAgIGlmIChiaWFzID09IG51bGwpIGJpYXMgPSBwb3NMZXNz
KGhlYWQsIHNlbC5oZWFkKSA/IC0xIDogMTsKICAgICAvLyBTa2lwIG92ZXIgYXRvbWljIHNwYW5z
LgogICAgIGlmIChjaGVja0F0b21pYyB8fCAhcG9zRXEoYW5jaG9yLCBzZWwuYW5jaG9yKSkKICAg
ICAgIGFuY2hvciA9IHNraXBBdG9taWMoZG9jLCBhbmNob3IsIGJpYXMsIGNoZWNrQXRvbWljICE9
ICJwdXNoIik7CkBAIC0zMTcwLDkgKzMxOTMsMTEgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVu
Y3Rpb24oKSB7CiAgICAgb3BlcmF0aW9uOiBmdW5jdGlvbihmKXtyZXR1cm4gcnVuSW5PcCh0aGlz
LCBmKTt9LAogCiAgICAgcmVmcmVzaDogb3BlcmF0aW9uKG51bGwsIGZ1bmN0aW9uKCkgeworICAg
ICAgdmFyIGJhZEhlaWdodCA9IHRoaXMuZGlzcGxheS5jYWNoZWRUZXh0SGVpZ2h0ID09IG51bGw7
CiAgICAgICBjbGVhckNhY2hlcyh0aGlzKTsKICAgICAgIHVwZGF0ZVNjcm9sbFBvcyh0aGlzLCB0
aGlzLmRvYy5zY3JvbGxMZWZ0LCB0aGlzLmRvYy5zY3JvbGxUb3ApOwogICAgICAgcmVnQ2hhbmdl
KHRoaXMpOworICAgICAgaWYgKGJhZEhlaWdodCkgZXN0aW1hdGVMaW5lSGVpZ2h0cyh0aGlzKTsK
ICAgICB9KSwKIAogICAgIHN3YXBEb2M6IG9wZXJhdGlvbihudWxsLCBmdW5jdGlvbihkb2MpIHsK
QEAgLTMyNzMsNiArMzI5OCw3IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewog
ICBvcHRpb24oImhpc3RvcnlFdmVudERlbGF5IiwgNTAwKTsKICAgb3B0aW9uKCJ2aWV3cG9ydE1h
cmdpbiIsIDEwLCBmdW5jdGlvbihjbSl7Y20ucmVmcmVzaCgpO30sIHRydWUpOwogICBvcHRpb24o
Im1heEhpZ2hsaWdodExlbmd0aCIsIDEwMDAwLCBmdW5jdGlvbihjbSl7bG9hZE1vZGUoY20pOyBj
bS5yZWZyZXNoKCk7fSwgdHJ1ZSk7CisgIG9wdGlvbigiY3J1ZGVNZWFzdXJpbmdGcm9tIiwgMTAw
MDApOwogICBvcHRpb24oIm1vdmVJbnB1dFdpdGhDdXJzb3IiLCB0cnVlLCBmdW5jdGlvbihjbSwg
dmFsKSB7CiAgICAgaWYgKCF2YWwpIGNtLmRpc3BsYXkuaW5wdXREaXYuc3R5bGUudG9wID0gY20u
ZGlzcGxheS5pbnB1dERpdi5zdHlsZS5sZWZ0ID0gMDsKICAgfSk7CkBAIC00MjE1LDggKzQyNDEs
NyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB3aGlsZSAoIXN0cmVh
bS5lb2woKSkgewogICAgICAgaWYgKHN0cmVhbS5wb3MgPiBjbS5vcHRpb25zLm1heEhpZ2hsaWdo
dExlbmd0aCkgewogICAgICAgICBmbGF0dGVuU3BhbnMgPSBmYWxzZTsKLSAgICAgICAgLy8gV2Vi
a2l0IHNlZW1zIHRvIHJlZnVzZSB0byByZW5kZXIgdGV4dCBub2RlcyBsb25nZXIgdGhhbiA1NzQ0
NCBjaGFyYWN0ZXJzCi0gICAgICAgIHN0cmVhbS5wb3MgPSBNYXRoLm1pbih0ZXh0Lmxlbmd0aCwg
c3RyZWFtLnN0YXJ0ICsgNTAwMDApOworICAgICAgICBzdHJlYW0ucG9zID0gdGV4dC5sZW5ndGg7
CiAgICAgICAgIHN0eWxlID0gbnVsbDsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIHN0eWxlID0g
bW9kZS50b2tlbihzdHJlYW0sIHN0YXRlKTsKQEAgLTQyMjcsNyArNDI1MiwxMiBAQCB3aW5kb3cu
Q29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgIH0KICAgICAgIHN0cmVhbS5zdGFydCA9
IHN0cmVhbS5wb3M7CiAgICAgfQotICAgIGlmIChjdXJTdGFydCA8IHN0cmVhbS5wb3MpIGYoc3Ry
ZWFtLnBvcywgY3VyU3R5bGUpOworICAgIHdoaWxlIChjdXJTdGFydCA8IHN0cmVhbS5wb3MpIHsK
KyAgICAgIC8vIFdlYmtpdCBzZWVtcyB0byByZWZ1c2UgdG8gcmVuZGVyIHRleHQgbm9kZXMgbG9u
Z2VyIHRoYW4gNTc0NDQgY2hhcmFjdGVycworICAgICAgdmFyIHBvcyA9IE1hdGgubWluKHN0cmVh
bS5wb3MsIGN1clN0YXJ0ICsgNTAwMDApOworICAgICAgZihwb3MsIGN1clN0eWxlKTsKKyAgICAg
IGN1clN0YXJ0ID0gcG9zOworICAgIH0KICAgfQogCiAgIGZ1bmN0aW9uIGhpZ2hsaWdodExpbmUo
Y20sIGxpbmUsIHN0YXRlKSB7CkBAIC00Mjg1LDEzICs0MzE1LDIzIEBAIHdpbmRvdy5Db2RlTWly
cm9yID0gKGZ1bmN0aW9uKCkgewogICB9CiAKICAgdmFyIHN0eWxlVG9DbGFzc0NhY2hlID0ge307
Ci0gIGZ1bmN0aW9uIHN0eWxlVG9DbGFzcyhzdHlsZSkgeworICBmdW5jdGlvbiBpbnRlcnByZXRU
b2tlblN0eWxlKHN0eWxlLCBidWlsZGVyKSB7CiAgICAgaWYgKCFzdHlsZSkgcmV0dXJuIG51bGw7
CisgICAgZm9yICg7OykgeworICAgICAgdmFyIGxpbmVDbGFzcyA9IHN0eWxlLm1hdGNoKC8oPzpe
fFxzKWxpbmUtKGJhY2tncm91bmQtKT8oXFMrKS8pOworICAgICAgaWYgKCFsaW5lQ2xhc3MpIGJy
ZWFrOworICAgICAgc3R5bGUgPSBzdHlsZS5zbGljZSgwLCBsaW5lQ2xhc3MuaW5kZXgpICsgc3R5
bGUuc2xpY2UobGluZUNsYXNzLmluZGV4ICsgbGluZUNsYXNzWzBdLmxlbmd0aCk7CisgICAgICB2
YXIgcHJvcCA9IGxpbmVDbGFzc1sxXSA/ICJiZ0NsYXNzIiA6ICJ0ZXh0Q2xhc3MiOworICAgICAg
aWYgKGJ1aWxkZXJbcHJvcF0gPT0gbnVsbCkKKyAgICAgICAgYnVpbGRlcltwcm9wXSA9IGxpbmVD
bGFzc1syXTsKKyAgICAgIGVsc2UgaWYgKCEobmV3IFJlZ0V4cCgiKD86XnxccykiICsgbGluZUNs
YXNzWzJdICsgIig/OiR8XHMpIikpLnRlc3QoYnVpbGRlcltwcm9wXSkpCisgICAgICAgIGJ1aWxk
ZXJbcHJvcF0gKz0gIiAiICsgbGluZUNsYXNzWzJdOworICAgIH0KICAgICByZXR1cm4gc3R5bGVU
b0NsYXNzQ2FjaGVbc3R5bGVdIHx8CiAgICAgICAoc3R5bGVUb0NsYXNzQ2FjaGVbc3R5bGVdID0g
ImNtLSIgKyBzdHlsZS5yZXBsYWNlKC8gKy9nLCAiIGNtLSIpKTsKICAgfQogCi0gIGZ1bmN0aW9u
IGxpbmVDb250ZW50KGNtLCByZWFsTGluZSwgbWVhc3VyZSwgY29weVdpZGdldHMpIHsKKyAgZnVu
Y3Rpb24gYnVpbGRMaW5lQ29udGVudChjbSwgcmVhbExpbmUsIG1lYXN1cmUsIGNvcHlXaWRnZXRz
KSB7CiAgICAgdmFyIG1lcmdlZCwgbGluZSA9IHJlYWxMaW5lLCBlbXB0eSA9IHRydWU7CiAgICAg
d2hpbGUgKG1lcmdlZCA9IGNvbGxhcHNlZFNwYW5BdFN0YXJ0KGxpbmUpKQogICAgICAgbGluZSA9
IGdldExpbmUoY20uZG9jLCBtZXJnZWQuZmluZCgpLmZyb20ubGluZSk7CkBAIC00Mjk5LDcgKzQz
MzksNiBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICB2YXIgYnVpbGRl
ciA9IHtwcmU6IGVsdCgicHJlIiksIGNvbDogMCwgcG9zOiAwLAogICAgICAgICAgICAgICAgICAg
IG1lYXN1cmU6IG51bGwsIG1lYXN1cmVkU29tZXRoaW5nOiBmYWxzZSwgY206IGNtLAogICAgICAg
ICAgICAgICAgICAgIGNvcHlXaWRnZXRzOiBjb3B5V2lkZ2V0c307Ci0gICAgaWYgKGxpbmUudGV4
dENsYXNzKSBidWlsZGVyLnByZS5jbGFzc05hbWUgPSBsaW5lLnRleHRDbGFzczsKIAogICAgIGRv
IHsKICAgICAgIGlmIChsaW5lLnRleHQpIGVtcHR5ID0gZmFsc2U7CkBAIC00MzM2LDggKzQzNzUs
MTEgQEAgd2luZG93LkNvZGVNaXJyb3IgPSAoZnVuY3Rpb24oKSB7CiAgICAgICB9CiAgICAgfQog
CisgICAgdmFyIHRleHRDbGFzcyA9IGJ1aWxkZXIudGV4dENsYXNzID8gYnVpbGRlci50ZXh0Q2xh
c3MgKyAiICIgKyAocmVhbExpbmUudGV4dENsYXNzIHx8ICIiKSA6IHJlYWxMaW5lLnRleHRDbGFz
czsKKyAgICBpZiAodGV4dENsYXNzKSBidWlsZGVyLnByZS5jbGFzc05hbWUgPSB0ZXh0Q2xhc3M7
CisKICAgICBzaWduYWwoY20sICJyZW5kZXJMaW5lIiwgY20sIHJlYWxMaW5lLCBidWlsZGVyLnBy
ZSk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIucHJlOworICAgIHJldHVybiBidWlsZGVyOwogICB9CiAK
ICAgdmFyIHRva2VuU3BlY2lhbENoYXJzID0gL1tcdFx1MDAwMC1cdTAwMTlcdTAwYWRcdTIwMGJc
dTIwMjhcdTIwMjlcdUZFRkZdL2c7CkBAIC00NDQ4LDcgKzQ0OTAsNyBAQCB3aW5kb3cuQ29kZU1p
cnJvciA9IChmdW5jdGlvbigpIHsKICAgICB2YXIgc3BhbnMgPSBsaW5lLm1hcmtlZFNwYW5zLCBh
bGxUZXh0ID0gbGluZS50ZXh0LCBhdCA9IDA7CiAgICAgaWYgKCFzcGFucykgewogICAgICAgZm9y
ICh2YXIgaSA9IDE7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKz0yKQotICAgICAgICBidWlsZGVyLmFk
ZFRva2VuKGJ1aWxkZXIsIGFsbFRleHQuc2xpY2UoYXQsIGF0ID0gc3R5bGVzW2ldKSwgc3R5bGVU
b0NsYXNzKHN0eWxlc1tpKzFdKSk7CisgICAgICAgIGJ1aWxkZXIuYWRkVG9rZW4oYnVpbGRlciwg
YWxsVGV4dC5zbGljZShhdCwgYXQgPSBzdHlsZXNbaV0pLCBpbnRlcnByZXRUb2tlblN0eWxlKHN0
eWxlc1tpKzFdLCBidWlsZGVyKSk7CiAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NDk4LDcg
KzQ1NDAsNyBAQCB3aW5kb3cuQ29kZU1pcnJvciA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICBz
cGFuU3RhcnRTdHlsZSA9ICIiOwogICAgICAgICB9CiAgICAgICAgIHRleHQgPSBhbGxUZXh0LnNs
aWNlKGF0LCBhdCA9IHN0eWxlc1tpKytdKTsKLSAgICAgICAgc3R5bGUgPSBzdHlsZVRvQ2xhc3Mo
c3R5bGVzW2krK10pOworICAgICAgICBzdHlsZSA9IGludGVycHJldFRva2VuU3R5bGUoc3R5bGVz
W2krK10sIGJ1aWxkZXIpOwogICAgICAgfQogICAgIH0KICAgfQpAQCAtNTQ2Nyw3ICs1NTA5LDEy
IEBAIHdpbmRvdy5Db2RlTWlycm9yID0gKGZ1bmN0aW9uKCkgewogICAgICAgdmFyIHJlc3VsdCA9
IC9cLVteIFwtP118XD9bXiAhXCdcIlwpLC5cLVwvOjtcP1xdXH1dLy50ZXN0KHN0ci5zbGljZShp
IC0gMSwgaSArIDEpKTsKICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfTsKLSAgZWxzZSBpZiAo
d2Via2l0ICYmICEvQ2hyb21lXC8oPzoyOXxbMy05XVxkfFxkXGRcZClcLi8udGVzdChuYXZpZ2F0
b3IudXNlckFnZW50KSkKKyAgZWxzZSBpZiAod2Via2l0ICYmIC9DaHJvbWVcLyg/OjI5fFszLTld
XGR8XGRcZFxkKVwuLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKQorICAgIHNwYW5BZmZlY3Rz
V3JhcHBpbmcgPSBmdW5jdGlvbihzdHIsIGkpIHsKKyAgICAgIHZhciBjb2RlID0gc3RyLmNoYXJD
b2RlQXQoaSAtIDEpOworICAgICAgcmV0dXJuIGNvZGUgPj0gODIwOCAmJiBjb2RlIDw9IDgyMTI7
CisgICAgfTsKKyAgZWxzZSBpZiAod2Via2l0KQogICAgIHNwYW5BZmZlY3RzV3JhcHBpbmcgPSBm
dW5jdGlvbihzdHIsIGkpIHsKICAgICAgIGlmIChpID4gMSAmJiBzdHIuY2hhckNvZGVBdChpIC0g
MSkgPT0gNDUpIHsKICAgICAgICAgaWYgKC9cdy8udGVzdChzdHIuY2hhckF0KGkgLSAyKSkgJiYg
L1teXC0/XC5dLy50ZXN0KHN0ci5jaGFyQXQoaSkpKSByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3Iv
Y29mZmVlc2NyaXB0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0
ZXJuYWwvQ29kZU1pcnJvci9jb2ZmZWVzY3JpcHQuanMKaW5kZXggNGY1NGIwYy4uYjcyMDNmMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwv
Q29kZU1pcnJvci9jb2ZmZWVzY3JpcHQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9jb2ZmZWVzY3JpcHQuanMKQEAgLTI1OSw3
ICsyNTksNyBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoJ2NvZmZlZXNjcmlwdCcsIGZ1bmN0aW9u
KGNvbmYpIHsKICAgICAgICAgaWYgKGN1cnJlbnQgPT09ICcuJykgewogICAgICAgICAgICAgc3R5
bGUgPSBzdGF0ZS50b2tlbml6ZShzdHJlYW0sIHN0YXRlKTsKICAgICAgICAgICAgIGN1cnJlbnQg
PSBzdHJlYW0uY3VycmVudCgpOwotICAgICAgICAgICAgaWYgKHN0eWxlID09PSAndmFyaWFibGUn
KSB7CisgICAgICAgICAgICBpZiAoL15cLltcdyRdKyQvLnRlc3QoY3VycmVudCkpIHsKICAgICAg
ICAgICAgICAgICByZXR1cm4gJ3ZhcmlhYmxlJzsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIEVSUk9SQ0xBU1M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2Nzcy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY3NzLmpz
CmluZGV4IDJlYWE5NmEuLjA4NWIxMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY3NzLmpzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvY3NzLmpzCkBA
IC0xLDEwICsxLDggQEAKLUNvZGVNaXJyb3IuZGVmaW5lTW9kZSgiY3NzIiwgZnVuY3Rpb24oY29u
ZmlnKSB7Ci0gIHJldHVybiBDb2RlTWlycm9yLmdldE1vZGUoY29uZmlnLCAidGV4dC9jc3MiKTsK
LX0pOwotCi1Db2RlTWlycm9yLmRlZmluZU1vZGUoImNzcy1iYXNlIiwgZnVuY3Rpb24oY29uZmln
LCBwYXJzZXJDb25maWcpIHsKK0NvZGVNaXJyb3IuZGVmaW5lTW9kZSgiY3NzIiwgZnVuY3Rpb24o
Y29uZmlnLCBwYXJzZXJDb25maWcpIHsKICAgInVzZSBzdHJpY3QiOwogCisgIGlmICghcGFyc2Vy
Q29uZmlnLnByb3BlcnR5S2V5d29yZHMpIHBhcnNlckNvbmZpZyA9IENvZGVNaXJyb3IucmVzb2x2
ZU1vZGUoInRleHQvY3NzIik7CisKICAgdmFyIGluZGVudFVuaXQgPSBjb25maWcuaW5kZW50VW5p
dCwKICAgICAgIGhvb2tzID0gcGFyc2VyQ29uZmlnLmhvb2tzIHx8IHt9LAogICAgICAgYXRNZWRp
YVR5cGVzID0gcGFyc2VyQ29uZmlnLmF0TWVkaWFUeXBlcyB8fCB7fSwKQEAgLTI3NywxNiArMjc1
LDE0IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgiY3NzLWJhc2UiLCBmdW5jdGlvbihjb25maWcs
IHBhcnNlckNvbmZpZykgewogICAgICAgICAgIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0
aC0xXSA9ICJAbWVkaWFUeXBlIjsKICAgICAgICAgICBzdGF0ZS5zdGFjay5wdXNoKCJAbWVkaWFU
eXBlKCIpOwogICAgICAgICB9CisgICAgICAgIGVsc2Ugc3RhdGUuc3RhY2sucHVzaCgiKCIpOwog
ICAgICAgfQogICAgICAgZWxzZSBpZiAodHlwZSA9PSAiKSIpIHsKLSAgICAgICAgaWYgKGNvbnRl
eHQgPT0gInByb3BlcnR5VmFsdWUiICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0y
XSA9PSAiQG1lZGlhVHlwZSgiKSB7CisgICAgICAgIGlmIChjb250ZXh0ID09ICJwcm9wZXJ0eVZh
bHVlIikgewogICAgICAgICAgIC8vIEluIEBtZWRpYVR5cGUoIHdpdGhvdXQgY2xvc2luZyA7IGFm
dGVyIHByb3BlcnR5VmFsdWUKICAgICAgICAgICBzdGF0ZS5zdGFjay5wb3AoKTsKLSAgICAgICAg
ICBzdGF0ZS5zdGFjay5wb3AoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjb250ZXh0
ID09ICJAbWVkaWFUeXBlKCIpIHsKLSAgICAgICAgICBzdGF0ZS5zdGFjay5wb3AoKTsKICAgICAg
ICAgfQorICAgICAgICBzdGF0ZS5zdGFjay5wb3AoKTsKICAgICAgIH0KICAgICAgIGVsc2UgaWYg
KHR5cGUgPT0gIjoiICYmIHN0YXRlLmxhc3RUb2tlbiA9PSAicHJvcGVydHkiKSBzdGF0ZS5zdGFj
ay5wdXNoKCJwcm9wZXJ0eVZhbHVlIik7CiAgICAgICBlbHNlIGlmIChjb250ZXh0ID09ICJwcm9w
ZXJ0eVZhbHVlIiAmJiB0eXBlID09ICI7Iikgc3RhdGUuc3RhY2sucG9wKCk7CkBAIC01ODIsNyAr
NTc4LDcgQEAgQ29kZU1pcnJvci5kZWZpbmVNb2RlKCJjc3MtYmFzZSIsIGZ1bmN0aW9uKGNvbmZp
ZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgIH0KICAgICB9
LAotICAgIG5hbWU6ICJjc3MtYmFzZSIKKyAgICBuYW1lOiAiY3NzIgogICB9KTsKIAogICBDb2Rl
TWlycm9yLmRlZmluZU1JTUUoInRleHQveC1zY3NzIiwgewpAQCAtNTkzLDYgKzU4OSwxMiBAQCBD
b2RlTWlycm9yLmRlZmluZU1vZGUoImNzcy1iYXNlIiwgZnVuY3Rpb24oY29uZmlnLCBwYXJzZXJD
b25maWcpIHsKICAgICB2YWx1ZUtleXdvcmRzOiB2YWx1ZUtleXdvcmRzLAogICAgIGFsbG93TmVz
dGVkOiB0cnVlLAogICAgIGhvb2tzOiB7CisgICAgICAiOiI6IGZ1bmN0aW9uKHN0cmVhbSkgewor
ICAgICAgICBpZiAoc3RyZWFtLm1hdGNoKC9ccyp7LykpIHsKKyAgICAgICAgICByZXR1cm4gW251
bGwsICJ7Il07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfSwKICAg
ICAgICIkIjogZnVuY3Rpb24oc3RyZWFtKSB7CiAgICAgICAgIHN0cmVhbS5tYXRjaCgvXltcdy1d
Ky8pOwogICAgICAgICBpZiAoc3RyZWFtLnBlZWsoKSA9PSAiOiIpIHsKQEAgLTYyMCw2ICs2MjIs
NiBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoImNzcy1iYXNlIiwgZnVuY3Rpb24oY29uZmlnLCBw
YXJzZXJDb25maWcpIHsKICAgICAgICAgfQogICAgICAgfQogICAgIH0sCi0gICAgbmFtZTogImNz
cy1iYXNlIgorICAgIG5hbWU6ICJjc3MiCiAgIH0pOwogfSkoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJyb3IvbGVzcy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0NvZGVNaXJy
b3IvbGVzcy5qcwppbmRleCAwOWY1MTBlLi44Mzg0YjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL2xlc3MuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJv
ci9sZXNzLmpzCkBAIC0xLDcgKzEsOCBAQAogLyoKICAgTEVTUyBtb2RlIC0gaHR0cDovL3d3dy5s
ZXNzY3NzLm9yZy8KICAgUG9ydGVkIHRvIENvZGVNaXJyb3IgYnkgUGV0ZXIgS3Jvb24gPHBsYWty
b29uQGdtYWlsLmNvbT4KLSAgUmVwb3J0IGJ1Z3MvaXNzdWVzIGhlcmU6IGh0dHBzOi8vZ2l0aHVi
LmNvbS9tYXJpam5oL0NvZGVNaXJyb3IvaXNzdWVzICBHaXRIdWI6IEBwZXRlcmtyb29uCisgIFJl
cG9ydCBidWdzL2lzc3VlcyBoZXJlOiBodHRwczovL2dpdGh1Yi5jb20vbWFyaWpuaC9Db2RlTWly
cm9yL2lzc3VlcworICBHaXRIdWI6IEBwZXRlcmtyb29uCiAqLwogCiBDb2RlTWlycm9yLmRlZmlu
ZU1vZGUoImxlc3MiLCBmdW5jdGlvbihjb25maWcpIHsKQEAgLTE3LDY4ICsxOCw2MCBAQCBDb2Rl
TWlycm9yLmRlZmluZU1vZGUoImxlc3MiLCBmdW5jdGlvbihjb25maWcpIHsKICAgICBlbHNlIGlm
IChjaCA9PSAiLyIgJiYgc3RyZWFtLmVhdCgiKiIpKSB7CiAgICAgICBzdGF0ZS50b2tlbml6ZSA9
IHRva2VuQ0NvbW1lbnQ7CiAgICAgICByZXR1cm4gdG9rZW5DQ29tbWVudChzdHJlYW0sIHN0YXRl
KTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoY2ggPT0gIjwiICYmIHN0cmVhbS5lYXQoIiEiKSkgewor
ICAgIH0gZWxzZSBpZiAoY2ggPT0gIjwiICYmIHN0cmVhbS5lYXQoIiEiKSkgewogICAgICAgc3Rh
dGUudG9rZW5pemUgPSB0b2tlblNHTUxDb21tZW50OwogICAgICAgcmV0dXJuIHRva2VuU0dNTENv
bW1lbnQoc3RyZWFtLCBzdGF0ZSk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGNoID09ICI9IikgcmV0
KG51bGwsICJjb21wYXJlIik7CisgICAgfSBlbHNlIGlmIChjaCA9PSAiPSIpIHJldChudWxsLCAi
Y29tcGFyZSIpOwogICAgIGVsc2UgaWYgKGNoID09ICJ8IiAmJiBzdHJlYW0uZWF0KCI9IikpIHJl
dHVybiByZXQobnVsbCwgImNvbXBhcmUiKTsKICAgICBlbHNlIGlmIChjaCA9PSAiXCIiIHx8IGNo
ID09ICInIikgewogICAgICAgc3RhdGUudG9rZW5pemUgPSB0b2tlblN0cmluZyhjaCk7CiAgICAg
ICByZXR1cm4gc3RhdGUudG9rZW5pemUoc3RyZWFtLCBzdGF0ZSk7Ci0gICAgfQotICAgIGVsc2Ug
aWYgKGNoID09ICIvIikgeyAvLyBlLmcuOiAucG5nIHdpbGwgbm90IGJlIHBhcnNlZCBhcyBhIGNs
YXNzCisgICAgfSBlbHNlIGlmIChjaCA9PSAiLyIpIHsgLy8gZS5nLjogLnBuZyB3aWxsIG5vdCBi
ZSBwYXJzZWQgYXMgYSBjbGFzcwogICAgICAgaWYoc3RyZWFtLmVhdCgiLyIpKXsKICAgICAgICAg
c3RhdGUudG9rZW5pemUgPSB0b2tlblNDb21tZW50OwogICAgICAgICByZXR1cm4gdG9rZW5TQ29t
bWVudChzdHJlYW0sIHN0YXRlKTsKLSAgICAgIH1lbHNlewotICAgICAgICBpZih0eXBlID09ICJz
dHJpbmciIHx8IHR5cGUgPT0gIigiKXJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsKLSAg
ICAgICAgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdICE9IHVuZGVmaW5lZCly
ZXR1cm4gcmV0KG51bGwsIGNoKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmKHR5cGUgPT0g
InN0cmluZyIgfHwgdHlwZSA9PSAiKCIpIHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsK
KyAgICAgICAgaWYoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3RoLTFdICE9IHVuZGVmaW5l
ZCkgcmV0dXJuIHJldChudWxsLCBjaCk7CiAgICAgICAgIHN0cmVhbS5lYXRXaGlsZSgvW1xhLXpB
LVowLTlcLV8uXHNdLyk7CiAgICAgICAgIGlmKCAvXC98XCl8Iy8udGVzdChzdHJlYW0ucGVlaygp
IHx8IChzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpID09ICIpIikpICB8fCBzdHJl
YW0uZW9sKCkgKXJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsgLy8gbGV0IHVybCgvaW1h
Z2VzL2xvZ28ucG5nKSB3aXRob3V0IHF1b3RlcyByZXR1cm4gYXMgc3RyaW5nCiAgICAgICB9Ci0g
ICAgfQotICAgIGVsc2UgaWYgKGNoID09ICIhIikgeworICAgIH0gZWxzZSBpZiAoY2ggPT0gIiEi
KSB7CiAgICAgICBzdHJlYW0ubWF0Y2goL15ccypcdyovKTsKICAgICAgIHJldHVybiByZXQoImtl
eXdvcmQiLCAiaW1wb3J0YW50Iik7Ci0gICAgfQotICAgIGVsc2UgaWYgKC9cZC8udGVzdChjaCkp
IHsKKyAgICB9IGVsc2UgaWYgKC9cZC8udGVzdChjaCkpIHsKICAgICAgIHN0cmVhbS5lYXRXaGls
ZSgvW1x3LiVdLyk7CiAgICAgICByZXR1cm4gcmV0KCJudW1iZXIiLCAidW5pdCIpOwotICAgIH0K
LSAgICBlbHNlIGlmICgvWywrPD4qXC9dLy50ZXN0KGNoKSkgeworICAgIH0gZWxzZSBpZiAoL1ss
Kzw+KlwvXS8udGVzdChjaCkpIHsKICAgICAgIGlmKHN0cmVhbS5wZWVrKCkgPT0gIj0iIHx8IHR5
cGUgPT0gImEiKXJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsKKyAgICAgIGlmKGNoID09
PSAiLCIpcmV0dXJuIHJldChudWxsLCBjaCk7CiAgICAgICByZXR1cm4gcmV0KG51bGwsICJzZWxl
Y3Qtb3AiKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoL1s7e306XFtcXSgpflx8XS8udGVzdChjaCkp
IHsKKyAgICB9IGVsc2UgaWYgKC9bO3t9OlxbXF0oKX5cfF0vLnRlc3QoY2gpKSB7CiAgICAgICBp
ZihjaCA9PSAiOiIpewogICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1thLXpcXFwtXS8pOwogICAg
ICAgICBpZiggc2VsZWN0b3JzLnRlc3Qoc3RyZWFtLmN1cnJlbnQoKSkgKXsKICAgICAgICAgICBy
ZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7Ci0gICAgICAgIH1lbHNlIGlmKHN0cmVhbS5wZWVrKCkg
PT0gIjoiKXsvLzo6LXdlYmtpdC1zZWFyY2gtZGVjb3JhdGlvbgorICAgICAgICB9IGVsc2UgaWYo
c3RyZWFtLnBlZWsoKSA9PSAiOiIpey8vOjotd2Via2l0LXNlYXJjaC1kZWNvcmF0aW9uCiAgICAg
ICAgICAgc3RyZWFtLm5leHQoKTsKICAgICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1thLXpcXFwt
XS8pOwogICAgICAgICAgIGlmKHN0cmVhbS5jdXJyZW50KCkubWF0Y2goL1w6XDpcLShvfG1zfG1v
enx3ZWJraXQpXC0vKSlyZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7CiAgICAgICAgICAg
aWYoIHNlbGVjdG9ycy50ZXN0KHN0cmVhbS5jdXJyZW50KCkuc3Vic3RyaW5nKDEpKSApcmV0dXJu
IHJldCgidGFnIiwgInRhZyIpOwogICAgICAgICAgIHJldHVybiByZXQobnVsbCwgY2gpOwotICAg
ICAgICB9ZWxzZXsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICByZXR1cm4gcmV0KG51bGws
IGNoKTsKICAgICAgICAgfQotICAgICAgfWVsc2UgaWYoY2ggPT0gIn4iKXsKKyAgICAgIH0gZWxz
ZSBpZihjaCA9PSAifiIpewogICAgICAgICBpZih0eXBlID09ICJyIilyZXR1cm4gcmV0KCJzdHJp
bmciLCAic3RyaW5nIik7Ci0gICAgICB9ZWxzZXsKKyAgICAgIH0gZWxzZSB7CiAgICAgICAgIHJl
dHVybiByZXQobnVsbCwgY2gpOwogICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChjaCA9PSAi
LiIpIHsKKyAgICB9IGVsc2UgaWYgKGNoID09ICIuIikgewogICAgICAgaWYodHlwZSA9PSAiKCIg
fHwgdHlwZSA9PSAic3RyaW5nIilyZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7IC8vIGFs
bG93IHVybCguLi9pbWFnZS5wbmcpCiAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcYS16QS1aMC05
XC1fXS8pOwogICAgICAgaWYoc3RyZWFtLnBlZWsoKSA9PSAiICIpc3RyZWFtLmVhdFNwYWNlKCk7
CiAgICAgICBpZihzdHJlYW0ucGVlaygpID09ICIpIilyZXR1cm4gcmV0KCJudW1iZXIiLCAidW5p
dCIpOy8vcmdiYSgwLDAsMCwuMjUpOwogICAgICAgcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOwot
ICAgIH0KLSAgICBlbHNlIGlmIChjaCA9PSAiIyIpIHsKKyAgICB9IGVsc2UgaWYgKGNoID09ICIj
IikgewogICAgICAgLy93ZSBkb24ndCBlYXQgd2hpdGUtc3BhY2UsIHdlIHdhbnQgdGhlIGhleCBj
b2xvciBhbmQgb3IgaWQgb25seQogICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bQS1aYS16MC05XS8p
OwogICAgICAgLy9jaGVjayBpZiB0aGVyZSBpcyBhIHByb3BlciBoZXggY29sb3IgbGVuZ3RoIGUu
Zy4gI2VlZSB8fCAjZWVlRUVFCkBAIC05Myw0MyArODYsNDEgQEAgQ29kZU1pcnJvci5kZWZpbmVN
b2RlKCJsZXNzIiwgZnVuY3Rpb24oY29uZmlnKSB7CiAgICAgICAgICAgLy8jdGltZSB7IGNvbG9y
OiAjYWFhIH0KICAgICAgICAgICBlbHNlIGlmKHN0cmVhbS5wZWVrKCkgPT0gIn0iIClyZXR1cm4g
cmV0KCJudW1iZXIiLCAidW5pdCIpOwogICAgICAgICAgIC8vd2UgaGF2ZSBhIHZhbGlkIGhleCBj
b2xvciB2YWx1ZSwgcGFyc2UgYXMgaWQgd2hlbmV2ZXIgYW4gZWxlbWVudC9jbGFzcyBpcyBkZWZp
bmVkIGFmdGVyIHRoZSBoZXgoaWQpIHZhbHVlIGUuZy4gI2VlZSBhYWEgfHwgI2VlZSAuYWFhCi0g
ICAgICAgICAgZWxzZSBpZiggL1thLXpBLVpcXF0vLnRlc3Qoc3RyZWFtLnBlZWsoKSkgKXJldHVy
biByZXQoImF0b20iLCAidGFnIik7CisgICAgICAgICAgICBlbHNlIGlmKCAvW2EtekEtWlxcXS8u
dGVzdChzdHJlYW0ucGVlaygpKSApcmV0dXJuIHJldCgiYXRvbSIsICJ0YWciKTsKICAgICAgICAg
ICAvL3doZW4gYSBoZXggdmFsdWUgaXMgb24gdGhlIGVuZCBvZiBhIGxpbmUsIHBhcnNlIGFzIGlk
Ci0gICAgICAgICAgZWxzZSBpZihzdHJlYW0uZW9sKCkpcmV0dXJuIHJldCgiYXRvbSIsICJ0YWci
KTsKKyAgICAgICAgICAgICAgZWxzZSBpZihzdHJlYW0uZW9sKCkpcmV0dXJuIHJldCgiYXRvbSIs
ICJ0YWciKTsKICAgICAgICAgICAvL2RlZmF1bHQKLSAgICAgICAgICBlbHNlIHJldHVybiByZXQo
Im51bWJlciIsICJ1bml0Iik7Ci0gICAgICAgIH1lbHNley8vd2hlbiBub3QgYSB2YWxpZCBoZXh2
YWx1ZSBpbiB0aGUgY3VycmVudCBzdHJlYW0gZS5nLiAjZm9vdGVyCisgICAgICAgICAgICAgICAg
ZWxzZSByZXR1cm4gcmV0KCJudW1iZXIiLCAidW5pdCIpOworICAgICAgICB9IGVsc2Ugey8vd2hl
biBub3QgYSB2YWxpZCBoZXh2YWx1ZSBpbiB0aGUgY3VycmVudCBzdHJlYW0gZS5nLiAjZm9vdGVy
CiAgICAgICAgICAgc3RyZWFtLmVhdFdoaWxlKC9bXHdcXFwtXS8pOwogICAgICAgICAgIHJldHVy
biByZXQoImF0b20iLCAidGFnIik7CiAgICAgICAgIH0KLSAgICAgIH1lbHNley8vd2hlbiBub3Qg
YSB2YWxpZCBoZXh2YWx1ZSBsZW5ndGgKKyAgICAgIH0gZWxzZSB7Ly93aGVuIG5vdCBhIHZhbGlk
IGhleHZhbHVlIGxlbmd0aAogICAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tcd1xcXC1dLyk7CiAg
ICAgICAgIHJldHVybiByZXQoImF0b20iLCAidGFnIik7CiAgICAgICB9Ci0gICAgfQotICAgIGVs
c2UgaWYgKGNoID09ICImIikgeworICAgIH0gZWxzZSBpZiAoY2ggPT0gIiYiKSB7CiAgICAgICBz
dHJlYW0uZWF0V2hpbGUoL1tcd1wtXS8pOwogICAgICAgcmV0dXJuIHJldChudWxsLCBjaCk7Ci0g
ICAgfQotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICBzdHJlYW0uZWF0V2hpbGUoL1tc
d1xcXC1fJS57XS8pOwogICAgICAgaWYodHlwZSA9PSAic3RyaW5nIil7CiAgICAgICAgIHJldHVy
biByZXQoInN0cmluZyIsICJzdHJpbmciKTsKLSAgICAgIH1lbHNlIGlmKHN0cmVhbS5jdXJyZW50
KCkubWF0Y2goLyheaHR0cCR8Xmh0dHBzJCkvKSAhPSBudWxsKXsKKyAgICAgIH0gZWxzZSBpZihz
dHJlYW0uY3VycmVudCgpLm1hdGNoKC8oXmh0dHAkfF5odHRwcyQpLykgIT0gbnVsbCl7CiAgICAg
ICAgIHN0cmVhbS5lYXRXaGlsZSgvW1x3XFxcLV8lLns6XC9dLyk7CiAgICAgICAgIHJldHVybiBy
ZXQoInN0cmluZyIsICJzdHJpbmciKTsKLSAgICAgIH1lbHNlIGlmKHN0cmVhbS5wZWVrKCkgPT0g
IjwiIHx8IHN0cmVhbS5wZWVrKCkgPT0gIj4iKXsKKyAgICAgIH0gZWxzZSBpZihzdHJlYW0ucGVl
aygpID09ICI8IiB8fCBzdHJlYW0ucGVlaygpID09ICI+IiB8fCBzdHJlYW0ucGVlaygpID09ICIr
Iil7CiAgICAgICAgIHJldHVybiByZXQoInRhZyIsICJ0YWciKTsKLSAgICAgIH1lbHNlIGlmKCAv
XCgvLnRlc3Qoc3RyZWFtLnBlZWsoKSkgKXsKKyAgICAgIH0gZWxzZSBpZiggL1woLy50ZXN0KHN0
cmVhbS5wZWVrKCkpICl7CiAgICAgICAgIHJldHVybiByZXQobnVsbCwgY2gpOwotICAgICAgfWVs
c2UgaWYgKHN0cmVhbS5wZWVrKCkgPT0gIi8iICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxl
bmd0aC0xXSAhPSB1bmRlZmluZWQpeyAvLyB1cmwoZGlyL2NlbnRlci9pbWFnZS5wbmcpCisgICAg
ICB9IGVsc2UgaWYgKHN0cmVhbS5wZWVrKCkgPT0gIi8iICYmIHN0YXRlLnN0YWNrW3N0YXRlLnN0
YWNrLmxlbmd0aC0xXSAhPSB1bmRlZmluZWQpeyAvLyB1cmwoZGlyL2NlbnRlci9pbWFnZS5wbmcp
CiAgICAgICAgIHJldHVybiByZXQoInN0cmluZyIsICJzdHJpbmciKTsKLSAgICAgIH1lbHNlIGlm
KCBzdHJlYW0uY3VycmVudCgpLm1hdGNoKC9cLVxkfFwtLlxkLykgKXsgLy8gbWF0Y2ggZS5nLjog
LTVweCAtMC40IGV0Yy4uLiBvbmx5IGNvbG9yaXplIHRoZSBtaW51cyBzaWduCisgICAgICB9IGVs
c2UgaWYoIHN0cmVhbS5jdXJyZW50KCkubWF0Y2goL1wtXGR8XC0uXGQvKSApeyAvLyBtYXRjaCBl
LmcuOiAtNXB4IC0wLjQgZXRjLi4uIG9ubHkgY29sb3JpemUgdGhlIG1pbnVzIHNpZ24KICAgICAg
ICAgLy9jb21tbWVudCBvdXQgdGhlc2UgMiBjb21tZW50IGlmIHlvdSB3YW50IHRoZSBtaW51cyBz
aWduIHRvIGJlIHBhcnNlZCBhcyBudWxsIC01MDBweAogICAgICAgICAvL3N0cmVhbS5iYWNrVXAo
c3RyZWFtLmN1cnJlbnQoKS5sZW5ndGgtMSk7Ci0gICAgICAgIC8vcmV0dXJuIHJldChudWxsLCBj
aCk7IC8vY29uc29sZS5sb2coIHN0cmVhbS5jdXJyZW50KCkgKTsKKyAgICAgICAgLy9yZXR1cm4g
cmV0KG51bGwsIGNoKTsKICAgICAgICAgcmV0dXJuIHJldCgibnVtYmVyIiwgInVuaXQiKTsKLSAg
ICAgIH1lbHNlIGlmKCAvXC98W1xzXCldLy50ZXN0KHN0cmVhbS5wZWVrKCkgfHwgc3RyZWFtLmVv
bCgpIHx8IChzdHJlYW0uZWF0U3BhY2UoKSAmJiBzdHJlYW0ucGVlaygpID09ICIvIikpICYmIHN0
cmVhbS5jdXJyZW50KCkuaW5kZXhPZigiLiIpICE9PSAtMSl7CisgICAgICB9IGVsc2UgaWYoIC9c
L3xbXHNcKV0vLnRlc3Qoc3RyZWFtLnBlZWsoKSB8fCBzdHJlYW0uZW9sKCkgfHwgKHN0cmVhbS5l
YXRTcGFjZSgpICYmIHN0cmVhbS5wZWVrKCkgPT0gIi8iKSkgJiYgc3RyZWFtLmN1cnJlbnQoKS5p
bmRleE9mKCIuIikgIT09IC0xKXsKICAgICAgICAgaWYoc3RyZWFtLmN1cnJlbnQoKS5zdWJzdHJp
bmcoc3RyZWFtLmN1cnJlbnQoKS5sZW5ndGgtMSxzdHJlYW0uY3VycmVudCgpLmxlbmd0aCkgPT0g
InsiKXsKICAgICAgICAgICBzdHJlYW0uYmFja1VwKDEpOwogICAgICAgICAgIHJldHVybiByZXQo
InRhZyIsICJ0YWciKTsKQEAgLTEzNywxNCArMTI4LDE1IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9k
ZSgibGVzcyIsIGZ1bmN0aW9uKGNvbmZpZykgewogICAgICAgICBzdHJlYW0uZWF0U3BhY2UoKTsK
ICAgICAgICAgaWYoIC9bezw+LmEtekEtWlwvXS8udGVzdChzdHJlYW0ucGVlaygpKSAgfHwgc3Ry
ZWFtLmVvbCgpIClyZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7IC8vIGUuZy4gYnV0dG9uLmljb24t
cGx1cwogICAgICAgICByZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7IC8vIGxldCB1cmwo
L2ltYWdlcy9sb2dvLnBuZykgd2l0aG91dCBxdW90ZXMgcmV0dXJuIGFzIHN0cmluZwotICAgICAg
fWVsc2UgaWYoIHN0cmVhbS5lb2woKSB8fCBzdHJlYW0ucGVlaygpID09ICJbIiB8fCBzdHJlYW0u
cGVlaygpID09ICIjIiB8fCB0eXBlID09ICJ0YWciICl7CisgICAgICB9IGVsc2UgaWYoIHN0cmVh
bS5lb2woKSB8fCBzdHJlYW0ucGVlaygpID09ICJbIiB8fCBzdHJlYW0ucGVlaygpID09ICIjIiB8
fCB0eXBlID09ICJ0YWciICl7CiAgICAgICAgIGlmKHN0cmVhbS5jdXJyZW50KCkuc3Vic3RyaW5n
KHN0cmVhbS5jdXJyZW50KCkubGVuZ3RoLTEsc3RyZWFtLmN1cnJlbnQoKS5sZW5ndGgpID09ICJ7
IilzdHJlYW0uYmFja1VwKDEpOwogICAgICAgICByZXR1cm4gcmV0KCJ0YWciLCAidGFnIik7Ci0g
ICAgICB9ZWxzZSBpZih0eXBlID09ICJjb21wYXJlIiB8fCB0eXBlID09ICJhIiB8fCB0eXBlID09
ICIoIil7CisgICAgICB9IGVsc2UgaWYodHlwZSA9PSAiY29tcGFyZSIgfHwgdHlwZSA9PSAiYSIg
fHwgdHlwZSA9PSAiKCIpewogICAgICAgICByZXR1cm4gcmV0KCJzdHJpbmciLCAic3RyaW5nIik7
Ci0gICAgICB9ZWxzZSBpZih0eXBlID09ICJ8IiB8fCBzdHJlYW0uY3VycmVudCgpID09ICItIiB8
fCB0eXBlID09ICJbIil7CisgICAgICB9IGVsc2UgaWYodHlwZSA9PSAifCIgfHwgc3RyZWFtLmN1
cnJlbnQoKSA9PSAiLSIgfHwgdHlwZSA9PSAiWyIpeworICAgICAgICBpZih0eXBlID09ICJ8IiAp
cmV0dXJuIHJldCgidGFnIiwgInRhZyIpOwogICAgICAgICByZXR1cm4gcmV0KG51bGwsIGNoKTsK
LSAgICAgIH1lbHNlIGlmKHN0cmVhbS5wZWVrKCkgPT0gIjoiKSB7CisgICAgICB9IGVsc2UgaWYo
c3RyZWFtLnBlZWsoKSA9PSAiOiIpIHsKICAgICAgICAgc3RyZWFtLm5leHQoKTsKICAgICAgICAg
dmFyIHRfdiA9IHN0cmVhbS5wZWVrKCkgPT0gIjoiID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgICBp
ZighdF92KXsKQEAgLTE1NiwxMSArMTQ4LDE0IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgibGVz
cyIsIGZ1bmN0aW9uKGNvbmZpZykgewogICAgICAgICAgICAgc3RyZWFtLmJhY2tVcChuZXdfcG9z
LShvbGRfcG9zLTEpKTsKICAgICAgICAgICAgIHJldHVybiByZXQoInRhZyIsICJ0YWciKTsKICAg
ICAgICAgICB9IGVsc2Ugc3RyZWFtLmJhY2tVcChuZXdfcG9zLShvbGRfcG9zLTEpKTsKLSAgICAg
ICAgfWVsc2V7CisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgc3RyZWFtLmJhY2tVcCgxKTsK
ICAgICAgICAgfQogICAgICAgICBpZih0X3YpcmV0dXJuIHJldCgidGFnIiwgInRhZyIpOyBlbHNl
IHJldHVybiByZXQoInZhcmlhYmxlIiwgInZhcmlhYmxlIik7Ci0gICAgICB9ZWxzZXsKKyAgICAg
IH0gZWxzZSBpZihzdGF0ZS5zdGFja1tzdGF0ZS5zdGFjay5sZW5ndGgtMV0gID09PSAiZm9udC1m
YW1pbHkiKXsKKyAgICAgICAgcmV0dXJuIHJldChudWxsLCBudWxsKTsKKyAgICAgIH0gZWxzZSB7
CisgICAgICAgIGlmKHN0YXRlLnN0YWNrW3N0YXRlLnN0YWNrLmxlbmd0aC0xXSA9PT0gInsiIHx8
IHR5cGUgPT09ICJzZWxlY3Qtb3AiICB8fCAoc3RhdGUuc3RhY2tbc3RhdGUuc3RhY2subGVuZ3Ro
LTFdID09PSAicnVsZSIgJiYgdHlwZSA9PT0gIiwiKSApcmV0dXJuIHJldCgidGFnIiwgInRhZyIp
OwogICAgICAgICByZXR1cm4gcmV0KCJ2YXJpYWJsZSIsICJ2YXJpYWJsZSIpOwogICAgICAgfQog
ICAgIH0KQEAgLTIzOCwxMiArMjMzLDE1IEBAIENvZGVNaXJyb3IuZGVmaW5lTW9kZSgibGVzcyIs
IGZ1bmN0aW9uKGNvbmZpZykgewogICAgICAgfQogICAgICAgZWxzZSBpZiAodHlwZSA9PSAifSIp
IHN0YXRlLnN0YWNrLnBvcCgpOwogICAgICAgZWxzZSBpZiAodHlwZSA9PSAiQG1lZGlhIikgc3Rh
dGUuc3RhY2sucHVzaCgiQG1lZGlhIik7Ci0gICAgICBlbHNlIGlmIChjb250ZXh0ID09ICJ7IiAm
JiB0eXBlICE9ICJjb21tZW50Iikgc3RhdGUuc3RhY2sucHVzaCgicnVsZSIpOworICAgICAgZWxz
ZSBpZiAoc3RyZWFtLmN1cnJlbnQoKSA9PT0gImZvbnQtZmFtaWx5Iikgc3RhdGUuc3RhY2tbc3Rh
dGUuc3RhY2subGVuZ3RoLTFdID0gImZvbnQtZmFtaWx5IjsKKyAgICAgIGVsc2UgaWYgKGNvbnRl
eHQgPT0gInsiICYmIHR5cGUgIT0gImNvbW1lbnQiICYmIHR5cGUgIT09ICJ0YWciKSBzdGF0ZS5z
dGFjay5wdXNoKCJydWxlIik7CisgICAgICBlbHNlIGlmIChzdHJlYW0ucGVlaygpID09PSAiOiIg
JiYgc3RyZWFtLmN1cnJlbnQoKS5tYXRjaCgvQHwjLykgPT09IG51bGwpIHN0eWxlID0gdHlwZTsK
ICAgICAgIHJldHVybiBzdHlsZTsKICAgICB9LAogCiAgICAgaW5kZW50OiBmdW5jdGlvbihzdGF0
ZSwgdGV4dEFmdGVyKSB7CiAgICAgICB2YXIgbiA9IHN0YXRlLnN0YWNrLmxlbmd0aDsKKwogICAg
ICAgaWYgKC9eXH0vLnRlc3QodGV4dEFmdGVyKSkKICAgICAgICAgbiAtPSBzdGF0ZS5zdGFja1tz
dGF0ZS5zdGFjay5sZW5ndGgtMV0gPT0gInJ1bGUiID8gMiA6IDE7CiAgICAgICByZXR1cm4gc3Rh
dGUuYmFzZUluZGVudCArIG4gKiBpbmRlbnRVbml0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvQ29kZU1pcnJvci9zcWwuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3NxbC5q
cwppbmRleCA5MDE2Y2M3Li5lOWRjYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3NxbC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9FeHRlcm5hbC9Db2RlTWlycm9yL3NxbC5qcwpA
QCAtMTgwLDcgKzE4MCwxMSBAQCBDb2RlTWlycm9yLmRlZmluZU1vZGUoInNxbCIsIGZ1bmN0aW9u
KGNvbmZpZywgcGFyc2VyQ29uZmlnKSB7CiAgICAgICBpZiAoIWN4KSByZXR1cm4gQ29kZU1pcnJv
ci5QYXNzOwogICAgICAgaWYgKGN4LmFsaWduKSByZXR1cm4gY3guY29sICsgKHRleHRBZnRlci5j
aGFyQXQoMCkgPT0gY3gudHlwZSA/IDAgOiAxKTsKICAgICAgIGVsc2UgcmV0dXJuIGN4LmluZGVu
dCArIGNvbmZpZy5pbmRlbnRVbml0OwotICAgIH0KKyAgICB9LAorCisgICAgYmxvY2tDb21tZW50
U3RhcnQ6ICIvKiIsCisgICAgYmxvY2tDb21tZW50RW5kOiAiKi8iLAorICAgIGxpbmVDb21tZW50
OiBzdXBwb3J0LmNvbW1lbnRTbGFzaFNsYXNoID8gIi8vIiA6IHN1cHBvcnQuY29tbWVudEhhc2gg
PyAiIyIgOiBudWxsCiAgIH07CiB9KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1RleHRFZGl0b3IuanMKaW5kZXggMmI0ZWQ0MS4uYWNlMDRiMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGV4dEVkaXRvci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXh0RWRpdG9yLmpzCkBA
IC0xODUsNyArMTg1LDcgQEAgV2ViSW5zcGVjdG9yLlRleHRFZGl0b3IucHJvdG90eXBlID0gewog
ICAgIHsKICAgICAgICAgY29uc3Qgc3VwcG9ydGVkTW9kZXMgPSB7CiAgICAgICAgICAgICAiamF2
YXNjcmlwdCI6IHRydWUsCi0gICAgICAgICAgICAiY3NzLWJhc2UiOiB0cnVlLAorICAgICAgICAg
ICAgImNzcyI6IHRydWUsCiAgICAgICAgIH07CiAKICAgICAgICAgdmFyIG1vZGUgPSB0aGlzLl9j
b2RlTWlycm9yLmdldE1vZGUoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>