<?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>189014</bug_id>
          
          <creation_ts>2018-08-27 15:18:46 -0700</creation_ts>
          <short_desc>[WHLSL] The parser is too slow</short_desc>
          <delta_ts>2018-10-13 15:20:47 -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>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>176199</blocked>
    
    <blocked>189202</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>fpizlo</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tdenney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1454122</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-27 15:18:46 -0700</bug_when>
    <thetext>It takes 2.5 hours to compile the standard library. 95% of the time is spent parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454127</commentid>
    <comment_count>1</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-27 15:21:28 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 188517 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1454601</commentid>
    <comment_count>2</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-08-28 15:54:30 -0700</bug_when>
    <thetext>Reopening</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456606</commentid>
    <comment_count>3</comment_count>
      <attachid>348887</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-04 19:41:52 -0700</bug_when>
    <thetext>Created attachment 348887
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456806</commentid>
    <comment_count>4</comment_count>
      <attachid>348951</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-05 11:42:55 -0700</bug_when>
    <thetext>Created attachment 348951
first draft</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456829</commentid>
    <comment_count>5</comment_count>
      <attachid>348955</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-05 13:06:32 -0700</bug_when>
    <thetext>Created attachment 348955
Second draft</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456888</commentid>
    <comment_count>6</comment_count>
      <attachid>348970</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-05 15:12:22 -0700</bug_when>
    <thetext>Created attachment 348970
Removes try/catch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456943</commentid>
    <comment_count>7</comment_count>
      <attachid>348985</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-05 17:27:41 -0700</bug_when>
    <thetext>Created attachment 348985
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456944</commentid>
    <comment_count>8</comment_count>
      <attachid>348985</attachid>
    <who name="Thomas Denney">tdenney</who>
    <bug_when>2018-09-05 17:34:54 -0700</bug_when>
    <thetext>Comment on attachment 348985
Patch

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

&gt; Tools/WebGPUShadingLanguageRI/Lexer.js:45
&gt; +    Â Â Â Â }

Weird characters here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456961</commentid>
    <comment_count>9</comment_count>
      <attachid>348993</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-05 19:00:45 -0700</bug_when>
    <thetext>Created attachment 348993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1456962</commentid>
    <comment_count>10</comment_count>
      <attachid>348994</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-09-05 19:10:37 -0700</bug_when>
    <thetext>Created attachment 348994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457095</commentid>
    <comment_count>11</comment_count>
      <attachid>348994</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-06 09:01:13 -0700</bug_when>
    <thetext>Comment on attachment 348994
Patch

Clearing flags on attachment: 348994

Committed r235738: &lt;https://trac.webkit.org/changeset/235738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457096</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-06 09:01:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1457097</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-06 09:03:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/44183440&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1468887</commentid>
    <comment_count>14</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 15:20:47 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/87</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348887</attachid>
            <date>2018-09-04 19:41:52 -0700</date>
            <delta_ts>2018-09-05 11:42:54 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-189014-20180904194151.patch</filename>
            <type>text/plain</type>
            <size>32948</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1NjUyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWEzNTlhNmU3YzI0YTU4YTUxNjgzZDM0MTNkZTRkYTE0
YmNkNGQ1OS4uNTU1ODI0MmY4OGQ1Y2U1NGY0MjMzOTNhMTg3ZjE0MDkzYmUwY2Q0OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDE4LTA5LTA0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBUaGUgcGFyc2VyIGlzIHRvbyBzbG93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0xleGVyLmpzOgorICAgICAgICAoTGV4ZXIucHJvdG90eXBlLm5leHQpOgorICAgICAgICAo
TGV4ZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAg
ICAgICAoZ2VuZXJpY0NvbnN1bWUpOgorICAgICAgICAoZ2VuZXJpY1Rlc3QpOgorICAgICAgICAo
Y29uc3VtZUVuZE9mVHlwZUFyZ3MpOgorICAgICAgICAocGFyc2VUZXJtKToKKyAgICAgICAgKHBh
cnNlVHlwZUFyZ3VtZW50cyk6CisgICAgICAgIChwYXJzZVR5cGUpOgorICAgICAgICAocGFyc2VU
eXBlRGVmKToKKyAgICAgICAgKHBhcnNlQ2FsbEV4cHJlc3Npb24ubGV0LnBhcnNlQXJndW1lbnRz
KToKKyAgICAgICAgKGlzQ2FsbEV4cHJlc3Npb24pOgorICAgICAgICAocGFyc2VTdWZmaXhPcGVy
YXRvcik6CisgICAgICAgIChwYXJzZVByZUluY3JlbWVudCk6CisgICAgICAgIChwYXJzZVBvc3Np
YmxlVGVybmFyeUNvbmRpdGlvbmFsKToKKyAgICAgICAgKHBhcnNlUG9zc2libGVBc3NpZ25tZW50
KToKKyAgICAgICAgKHBhcnNlUG9zdEluY3JlbWVudCk6CisgICAgICAgIChnZW5lcmljUGFyc2VD
b21tYUV4cHJlc3Npb24pOgorICAgICAgICAocGFyc2VFZmZlY3RmdWxTdGF0ZW1lbnQpOgorICAg
ICAgICAocGFyc2VSZXR1cm4pOgorICAgICAgICAocGFyc2VCcmVhayk6CisgICAgICAgIChwYXJz
ZUNvbnRpbnVlKToKKyAgICAgICAgKHBhcnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAocGFyc2VX
aGlsZSk6CisgICAgICAgIChwYXJzZUZvcik6CisgICAgICAgIChwYXJzZURvKToKKyAgICAgICAg
KHBhcnNlVmFyaWFibGVEZWNscyk6CisgICAgICAgIChwYXJzZVN3aXRjaENhc2UpOgorICAgICAg
ICAocGFyc2VTd2l0Y2hTdGF0ZW1lbnQpOgorICAgICAgICAocGFyc2VTdGF0ZW1lbnQpOgorICAg
ICAgICAocGFyc2VCbG9jayk6CisgICAgICAgIChwYXJzZUZ1bmNOYW1lKToKKyAgICAgICAgKHBh
cnNlRmllbGQpOgorICAgICAgICAocGFyc2VTdHJ1Y3RUeXBlKToKKyAgICAgICAgKHBhcnNlTmF0
aXZlRnVuYyk6CisgICAgICAgIChwYXJzZU5hdGl2ZSk6CisgICAgICAgIChwYXJzZVJlc3RyaWN0
ZWRGdW5jRGVmKToKKyAgICAgICAgKHBhcnNlRW51bVR5cGUpOgorICAgICAgICAocGFyc2UpOgor
CiAyMDE4LTA5LTA0ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAg
ICAgICAgIFBvcHVsYXRlICJ0ZXh0L3VyaS1saXN0IiB3aXRoIG11bHRpcGxlIFVSTHMgd2hlbiB0
aGUgcGFzdGVib2FyZCBjb250YWlucyBtdWx0aXBsZSBVUkxzCmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0xleGVyLmpzCmluZGV4IDk1NmRjYTMzNmEyYTlhMzEyMWEyNzcyODVhZTNkYjc2ZGRl
NzIzNzAuLmY4MDBjMTE4ZWFjZDhiMzAzOTBhYTUxNWFiNWQ0M2JlNGU1ZTY0OWMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzCkBAIC03Myw3ICs3Myw3IEBAIGNsYXNzIExl
eGVyIHsKICAgICB7CiAgICAgICAgIHJldHVybiBMZXhlci5fdGV4dElzSWRlbnRpZmllckltcGwo
dGV4dCkgJiYgIVJlZ0V4cC5yaWdodENvbnRleHQubGVuZ3RoOwogICAgIH0KLSAgICAKKwogICAg
IG5leHQoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3N0YWNrLmxlbmd0aCkKQEAgLTEwMiw3
ICsxMDIsNyBAQCBjbGFzcyBMZXhlciB7CiAgICAgICAgICAgICBpZiAoL15cL1wqLy50ZXN0KHJl
bGV2YW50VGV4dCkpIHsKICAgICAgICAgICAgICAgICBsZXQgZW5kSW5kZXggPSByZWxldmFudFRl
eHQuc2VhcmNoKC9cKlwvLyk7CiAgICAgICAgICAgICAgICAgaWYgKGVuZEluZGV4IDwgMCkKLSAg
ICAgICAgICAgICAgICAgICAgdGhpcy5mYWlsKCJVbnRlcm1pbmF0ZWQgY29tbWVudCIpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mYWlsKCJVbnRlcm1pbmF0ZWQgY29tbWVudCIp
OwogICAgICAgICAgICAgICAgIHRoaXMuX2luZGV4ICs9IGVuZEluZGV4ICsgMjsKICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KQEAgLTE0OSw1MiArMTQ5LDQ0IEBAIGNs
YXNzIExleGVyIHsKICAgICAgICAgbGV0IHJlbWFpbmluZyA9IHJlbGV2YW50VGV4dC5zdWJzdHJp
bmcoMCwgMjApLnNwbGl0KC9ccy8pWzBdOwogICAgICAgICBpZiAoIXJlbWFpbmluZy5sZW5ndGgp
CiAgICAgICAgICAgICByZW1haW5pbmcgPSByZWxldmFudFRleHQuc3Vic3RyaW5nKDAsIDIwKTsK
LSAgICAgICAgdGhpcy5mYWlsKCJVbnJlY29nbml6ZWQgdG9rZW4gYmVnaW5uaW5nIHdpdGg6ICIg
KyByZW1haW5pbmcpOworICAgICAgICByZXR1cm4gdGhpcy5mYWlsKCJVbnJlY29nbml6ZWQgdG9r
ZW4gYmVnaW5uaW5nIHdpdGg6ICIgKyByZW1haW5pbmcpOwogICAgIH0KICAgICAKICAgICBwdXNo
KHRva2VuKQogICAgIHsKICAgICAgICAgdGhpcy5fc3RhY2sucHVzaCh0b2tlbik7CiAgICAgfQot
ICAgIAorCiAgICAgcGVlaygpCiAgICAgewogICAgICAgICBsZXQgcmVzdWx0ID0gdGhpcy5uZXh0
KCk7CisgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB0aGlzLnB1c2gocmVzdWx0KTsKICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgZmFpbChlcnJvcikKICAgICB7Ci0gICAg
ICAgIHRocm93IG5ldyBXU3ludGF4RXJyb3IodGhpcy5vcmlnaW5TdHJpbmcsIGVycm9yKTsKKyAg
ICAgICAgcmV0dXJuIG5ldyBXU3ludGF4RXJyb3IodGhpcy5vcmlnaW5TdHJpbmcsIGVycm9yKTsK
ICAgICB9CiAgICAgCiAgICAgYmFja3RyYWNraW5nU2NvcGUoY2FsbGJhY2spCiAgICAgewogICAg
ICAgICBsZXQgc3RhdGUgPSB0aGlzLnN0YXRlOwotICAgICAgICB0cnkgewotICAgICAgICAgICAg
cmV0dXJuIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGlm
IChlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5zdGF0
ZSA9IHN0YXRlOwotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IGNhbGxiYWNrKCk7Cisg
ICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpIHsKKyAgICAgICAgICAg
IHRoaXMuc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9
CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIHRlc3RTY29wZShjYWxs
YmFjaykKICAgICB7CiAgICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuc3RhdGU7Ci0gICAgICAgIHRy
eSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHRocm93
IGU7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICB0aGlzLnN0YXRlID0gc3RhdGU7
Ci0gICAgICAgIH0KKyAgICAgICAgbGV0IHJlc3VsdCA9IGNhbGxiYWNrKCk7CisgICAgICAgIHRo
aXMuc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgcmV0dXJuICEocmVzdWx0IGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9QYXJzZS5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpz
CmluZGV4IGVlNGM5ODBmM2ExNjcyYjY4YTc3ZWJiNDg1MjVlZGQyNDk0NDNhNTMuLmIwZjM0OTI0
M2QwYjY2MTY0NGMyODIyOWMyN2MyZmE3NjgxNmIxMmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1BhcnNlLmpzCkBAIC02MSwzNiArNjEsNDggQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3Jh
bSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgIC8vIHBv
aW50ZXJzIG1lYW5zIHRoYXQgd2UgY2FuIHN0aWxsIGFsbG93IGZ1bmN0aW9uIGNhbGwgc3RhdGVt
ZW50cyAtIHVubGlrZSBpbiBDLCB0aG9zZSBjYW5ub3QKICAgICAvLyBoYXZlIGFyYml0cmFyeSBl
eHByZXNzaW9ucyBhcyB0aGUgY2FsbGVlLiBUaGUgcmVtYWluaW5nIHR3byBwcm9ibGVtcyBhcmUg
c29sdmVkIGJ5CiAgICAgLy8gYmFja3RyYWNraW5nLiBJbiBhbGwgb3RoZXIgcmVzcGVjdHMsIHRo
aXMgaXMgYSBzaW1wbGUgcmVjdXJzaXZlIGRlc2NlbnQgcGFyc2VyLgotICAgIAorCiAgICAgZnVu
Y3Rpb24gZ2VuZXJpY0NvbnN1bWUoY2FsbGJhY2ssIGV4cGxhbmF0aW9uKQogICAgIHsKICAgICAg
ICAgbGV0IHRva2VuID0gbGV4ZXIubmV4dCgpOwogICAgICAgICBpZiAoIXRva2VuKQotICAgICAg
ICAgICAgbGV4ZXIuZmFpbCgiVW5leHBlY3RlZCBlbmQgb2YgZmlsZSIpOworICAgICAgICAgICAg
cmV0dXJuIGxleGVyLmZhaWwoIlVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiKTsKKyAgICAgICAgaWYg
KHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRva2Vu
OwogICAgICAgICBpZiAoIWNhbGxiYWNrKHRva2VuKSkKLSAgICAgICAgICAgIGxleGVyLmZhaWwo
IlVuZXhwZWN0ZWQgdG9rZW46ICIgKyB0b2tlbi50ZXh0ICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBs
YW5hdGlvbik7CisgICAgICAgICAgICByZXR1cm4gbGV4ZXIuZmFpbCgiVW5leHBlY3RlZCB0b2tl
bjogIiArIHRva2VuLnRleHQgKyAiOyBleHBlY3RlZDogIiArIGV4cGxhbmF0aW9uKTsKICAgICAg
ICAgcmV0dXJuIHRva2VuOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIGNvbnN1bWUoLi4u
dGV4dHMpCiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJpY0NvbnN1bWUodG9rZW4gPT4gdGV4
dHMuaW5jbHVkZXModG9rZW4udGV4dCksIHRleHRzKTsKICAgICB9CiAgICAgCisgICAgLy8gTmVl
ZHNVcGRhdGVDYWxsZXJzCiAgICAgZnVuY3Rpb24gY29uc3VtZUtpbmQoa2luZCkKICAgICB7CiAg
ICAgICAgIHJldHVybiBnZW5lcmljQ29uc3VtZSh0b2tlbiA9PiB0b2tlbi5raW5kID09IGtpbmQs
IGtpbmQpOwogICAgIH0KICAgICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5j
dGlvbiBhc3NlcnROZXh0KC4uLnRleHRzKQogICAgIHsKLSAgICAgICAgbGV4ZXIucHVzaChjb25z
dW1lKC4uLnRleHRzKSk7CisgICAgICAgIGxldCByZXN1bHQgPSBjb25zdW1lKC4uLnRleHRzKTsK
KyAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CisgICAgICAgIGxleGVyLnB1c2gocmVzdWx0KTsKICAgICB9CiAgICAg
CisgICAgLy8gTmVlZHNVcGRhdGVDYWxsZXJzCiAgICAgZnVuY3Rpb24gZ2VuZXJpY1Rlc3QoY2Fs
bGJhY2spCiAgICAgewogICAgICAgICBsZXQgdG9rZW4gPSBsZXhlci5wZWVrKCk7Ci0gICAgICAg
IGlmICh0b2tlbiAmJiBjYWxsYmFjayh0b2tlbikpCisgICAgICAgIGlmICghdG9rZW4pCisgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuOworICAgICAgICBpZiAoY2FsbGJhY2so
dG9rZW4pKQogICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICByZXR1cm4gbnVsbDsK
ICAgICB9CkBAIC0xMDQsMTIgKzExNiwxNiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmln
aW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgewogICAgICAgICBy
ZXR1cm4gZ2VuZXJpY1Rlc3QodG9rZW4gPT4gdG9rZW4ua2luZCA9PSBraW5kKTsKICAgICB9Ci0g
ICAgCisKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiB0cnlDb25zdW1l
KC4uLnRleHRzKQogICAgIHsKICAgICAgICAgbGV0IHJlc3VsdCA9IHRlc3QoLi4udGV4dHMpOwot
ICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICAgICAgbGV4ZXIubmV4dCgpOworICAgICAgICBp
ZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGlmIChyZXN1
bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICBsZXhlci5uZXh0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IApAQCAtMTIxLDE1ICsxMzcsMjAgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBv
cmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KICAgICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBj
b25zdW1lRW5kT2ZUeXBlQXJncygpCiAgICAgewogICAgICAgICBsZXQgcmlnaHRTaGlmdCA9IHRy
eUNvbnN1bWUoIj4+Iik7CiAgICAgICAgIGlmIChyaWdodFNoaWZ0KQogICAgICAgICAgICAgbGV4
ZXIucHVzaChuZXcgTGV4ZXJUb2tlbihsZXhlciwgcmlnaHRTaGlmdCwgcmlnaHRTaGlmdC5pbmRl
eCwgcmlnaHRTaGlmdC5raW5kLCAiPiIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29u
c3VtZSgiPiIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSBjb25z
dW1lKCI+Iik7CisgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAgICB9Ci0gICAg
CisKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBwYXJzZVRlcm0oKQog
ICAgIHsKICAgICAgICAgbGV0IHRva2VuOwpAQCAtMTQwLDEzICsxNjEsMTMgQEAgZnVuY3Rpb24g
cGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0
KQogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2luZCgiaW50TGl0ZXJhbCIpKSB7CiAg
ICAgICAgICAgICBsZXQgaW50VmVyc2lvbiA9ICgrdG9rZW4udGV4dCkgfCAwOwogICAgICAgICAg
ICAgaWYgKCIiICsgaW50VmVyc2lvbiAhPT0gdG9rZW4udGV4dCkKLSAgICAgICAgICAgICAgICBs
ZXhlci5mYWlsKCJJbnRlZ2VyIGxpdGVyYWwgaXMgbm90IGFuIGludGVnZXI6ICIgKyB0b2tlbi50
ZXh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGV4ZXIuZmFpbCgiSW50ZWdlciBsaXRlcmFs
IGlzIG5vdCBhbiBpbnRlZ2VyOiAiICsgdG9rZW4udGV4dCk7CiAgICAgICAgICAgICByZXR1cm4g
bmV3IEludExpdGVyYWwodG9rZW4sIGludFZlcnNpb24pOwogICAgICAgICB9CiAgICAgICAgIGlm
ICh0b2tlbiA9IHRyeUNvbnN1bWVLaW5kKCJ1aW50TGl0ZXJhbCIpKSB7CiAgICAgICAgICAgICBs
ZXQgdWludFZlcnNpb24gPSB0b2tlbi50ZXh0LnN1YnN0cigwLCB0b2tlbi50ZXh0Lmxlbmd0aCAt
IDEpID4+PiAwOwogICAgICAgICAgICAgaWYgKHVpbnRWZXJzaW9uICsgInUiICE9PSB0b2tlbi50
ZXh0KQotICAgICAgICAgICAgICAgIGxleGVyLmZhaWwoIkludGVnZXIgbGl0ZXJhbCBpcyBub3Qg
MzItYml0IHVuc2lnbmVkIGludGVnZXI6ICIgKyB0b2tlbi50ZXh0KTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbGV4ZXIuZmFpbCgiSW50ZWdlciBsaXRlcmFsIGlzIG5vdCAzMi1iaXQgdW5zaWdu
ZWQgaW50ZWdlcjogIiArIHRva2VuLnRleHQpOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50
TGl0ZXJhbCh0b2tlbiwgdWludFZlcnNpb24pOwogICAgICAgICB9CiAgICAgICAgIGlmICgodG9r
ZW4gPSB0cnlDb25zdW1lS2luZCgiaW50SGV4TGl0ZXJhbCIpKQpAQCAtMTYyLDcgKzE4Myw3IEBA
IGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9m
ZnNldCwgdGV4dCkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpbnRWZXJzaW9u
ID0gaW50VmVyc2lvbiA+Pj4gMDsKICAgICAgICAgICAgIGlmIChpbnRWZXJzaW9uLnRvU3RyaW5n
KDE2KSAhPT0gaGV4U3RyaW5nKQotICAgICAgICAgICAgICAgIGxleGVyLmZhaWwoIkhleCBpbnRl
Z2VyIGxpdGVyYWwgaXMgbm90IGFuIGludGVnZXI6ICIgKyB0b2tlbi50ZXh0KTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbGV4ZXIuZmFpbCgiSGV4IGludGVnZXIgbGl0ZXJhbCBpcyBub3QgYW4g
aW50ZWdlcjogIiArIHRva2VuLnRleHQpOwogICAgICAgICAgICAgaWYgKHRva2VuLmtpbmQgPT0g
ImludEhleExpdGVyYWwiKQogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW50TGl0ZXJhbCh0
b2tlbiwgaW50VmVyc2lvbik7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnRMaXRlcmFsKHRv
a2VuLCBpbnRWZXJzaW9uID4+PiAwKTsKQEAgLTE3OCw5ICsxOTksMTMgQEAgZnVuY3Rpb24gcGFy
c2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQog
ICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJ0cnVlIiwgImZhbHNlIikpCiAgICAgICAg
ICAgICByZXR1cm4gbmV3IEJvb2xMaXRlcmFsKHRva2VuLCB0b2tlbi50ZXh0ID09ICJ0cnVlIik7
CiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHN1cHBvcnQgZm9yIG90aGVyIGxpdGVyYWxzIHRvby4K
LSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBsZXQgcGFyZW50aGVzaXNSZXN1bHQgPSBj
b25zdW1lKCIoIik7CisgICAgICAgIGlmIChwYXJlbnRoZXNpc1Jlc3VsdCBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBwYXJlbnRoZXNpc1Jlc3VsdDsKICAgICAg
ICAgbGV0IHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBjb25zdW1lKCIpIik7
CisgICAgICAgIHBhcmVudGhlc2lzUmVzdWx0ID0gY29uc3VtZSgiKSIpOworICAgICAgICBpZiAo
cGFyZW50aGVzaXNSZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gcGFyZW50aGVzaXNSZXN1bHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
ICAgIApAQCAtMTk1LDEzICsyMjAsMTYgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2lu
LCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICByZXR1cm4gbGVm
dDsKICAgICB9CiAgICAgCisgICAgLy8gTmVlZHNVcGRhdGVDYWxsZXJzCiAgICAgZnVuY3Rpb24g
cGFyc2VUeXBlQXJndW1lbnRzKCkKICAgICB7CiAgICAgICAgIGlmICghdGVzdCgiPCIpKQogICAg
ICAgICAgICAgcmV0dXJuIFtdOwogCiAgICAgICAgIGxldCByZXN1bHQgPSBbXTsKLSAgICAgICAg
Y29uc3VtZSgiPCIpOworICAgICAgICBsZXQgYnJhY2tldFJlc3VsdCA9IGNvbnN1bWUoIjwiKTsK
KyAgICAgICAgaWYgKGJyYWNrZXRSZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gYnJhY2tldFJlc3VsdDsKICAgICAgICAgd2hpbGUgKCF0ZXN0KCI+Iikp
IHsKICAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgZm9yIGEgY29uc3RleHByIG9yIHR5cGUg
Y2FuIHN5bnRhY3RpY2FsbHkgb3ZlcmxhcCBpbiB0aGUgc2luZ2xlCiAgICAgICAgICAgICAvLyBp
ZGVudGlmaWVyIGNhc2UuIExldCdzIGNvbnNpZGVyIHRoZSBwb3NzaWJpbGl0aWVzOgpAQCAtMjM4
LDcgKzI2Niw4IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwg
bGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgY29uc3VtZUVuZE9mVHlwZUFyZ3MoKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKKyAgICAvLyBOZWVkc1VwZGF0
ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBwYXJzZVR5cGUoKQogICAgIHsKICAgICAgICAgbGV0IHRv
a2VuOwpAQCAtMjUxLDYgKzI4MCw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwg
b3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgbGV0IHR5cGVBcmd1
bWVudHMgPSBwYXJzZVR5cGVBcmd1bWVudHMoKTsKICAgICAgICAgbGV0IHR5cGUgPSBuZXcgVHlw
ZVJlZihuYW1lLCBuYW1lLnRleHQsIHR5cGVBcmd1bWVudHMpOwogICAgICAgICAKKyAgICAgICAg
Ly8gTmVlZHNVcGRhdGVDYWxsZXJzCiAgICAgICAgIGZ1bmN0aW9uIGdldEFkZHJlc3NTcGFjZSgp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGFkZHJlc3NTcGFjZUNvbnN1bWVkID0gdHJ1ZTsKQEAg
LTI3NywyNSArMzA3LDM0IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2lu
S2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKIAogICAgICAgICAgICAgY29uc3QgbGVuZ3Ro
RXhwciA9IHBhcnNlQ29uc3RleHByKCk7CiAgICAgICAgICAgICB0eXBlQ29uc3RydWN0b3JTdGFj
ay51bnNoaWZ0KHR5cGUgPT4gbmV3IEFycmF5VHlwZSh0b2tlbiwgdHlwZSwgbGVuZ3RoRXhwcikp
OwotICAgICAgICAgICAgY29uc3VtZSgiXSIpOworICAgICAgICAgICAgbGV0IGJyYWNrZXRSZXN1
bHQgPSBjb25zdW1lKCJdIik7CisgICAgICAgICAgICBpZiAoYnJhY2tldFJlc3VsdCBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhY2tldFJlc3VsdDsK
ICAgICAgICAgfQogCiAgICAgICAgIGZvciAobGV0IGNvbnN0cnVjdG9yIG9mIHR5cGVDb25zdHJ1
Y3RvclN0YWNrKQogICAgICAgICAgICAgdHlwZSA9IGNvbnN0cnVjdG9yKHR5cGUpOwogCiAgICAg
ICAgIGlmIChhZGRyZXNzU3BhY2UgJiYgIWFkZHJlc3NTcGFjZUNvbnN1bWVkKQotICAgICAgICAg
ICAgbGV4ZXIuZmFpbCgiQWRkcmVzcyBzcGFjZSBzcGVjaWZpZWQgZm9yIHR5cGUgdGhhdCBkb2Vz
IG5vdCBuZWVkIGFkZHJlc3Mgc3BhY2UiKTsKKyAgICAgICAgICAgIHJldHVybiBsZXhlci5mYWls
KCJBZGRyZXNzIHNwYWNlIHNwZWNpZmllZCBmb3IgdHlwZSB0aGF0IGRvZXMgbm90IG5lZWQgYWRk
cmVzcyBzcGFjZSIpOwogCiAgICAgICAgIHJldHVybiB0eXBlOwogICAgIH0KICAgICAKKyAgICAv
LyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBwYXJzZVR5cGVEZWYoKQogICAgIHsK
ICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoInR5cGVkZWYiKTsKKyAgICAgICAgaWYgKG9y
aWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW4K
ICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQ7Ci0gICAg
ICAgIGNvbnN1bWUoIj0iKTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI9Iik7
CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7
Ci0gICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsi
KTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gbWF5YmVFcnJvcgogICAgICAgICByZXR1cm4gbmV3IFR5cGVEZWYob3Jp
Z2luLCBuYW1lLCB0eXBlKTsKICAgICB9CiAgICAgCkBAIC0zMTYsNiArMzU1LDcgQEAgZnVuY3Rp
b24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0
ZXh0KQogICAgICAgICAgICAgICAgIG5ldyBDYWxsRXhwcmVzc2lvbih0b2tlbiwgIm9wZXJhdG9y
IiArIHRva2VuLnRleHQsIFtsZWZ0LCByaWdodF0pKTsKICAgICB9CiAgICAgCisgICAgLy8gTmVl
ZHNVcGRhdGVDYWxsZXJzCiAgICAgZnVuY3Rpb24gcGFyc2VDYWxsRXhwcmVzc2lvbigpCiAgICAg
ewogICAgICAgICBsZXQgcGFyc2VBcmd1bWVudHMgPSBmdW5jdGlvbihvcmlnaW4sIGNhbGxOYW1l
KSB7CkBAIC0zMjYsMTMgKzM2NiwxNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICAgICAgaWYg
KCF0cnlDb25zdW1lKCIsIikpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQotICAgICAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAg
ICAgICAgIHJldHVybiBuZXcgQ2FsbEV4cHJlc3Npb24ob3JpZ2luLCBjYWxsTmFtZSwgYXJndW1l
bnRMaXN0KTsKICAgICAgICAgfQogCiAgICAgICAgIGxldCBuYW1lID0gbGV4ZXIuYmFja3RyYWNr
aW5nU2NvcGUoKCkgPT4gewogICAgICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRl
bnRpZmllciIpOwotICAgICAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICAgICAgbGV0IG1h
eWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
ICAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICB9KTsKIApAQCAtMzQxLDIxICszODUs
MjggQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVt
YmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGxldCByZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7Ci0gICAgICAg
ICAgICBjb25zdW1lKCIoIik7CisgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUo
IigiKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICAgICAgbGV0IHJl
c3VsdCA9IHBhcnNlQXJndW1lbnRzKHJldHVyblR5cGUub3JpZ2luLCAib3BlcmF0b3IgY2FzdCIp
OwogICAgICAgICAgICAgcmVzdWx0LnNldENhc3REYXRhKHJldHVyblR5cGUpOwogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICAvLyBOZWVkc1Vw
ZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBpc0NhbGxFeHByZXNzaW9uKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBsZXhlci50ZXN0U2NvcGUoKCkgPT4gewogICAgICAgICAgICAgICAgIGNvbnN1
bWVLaW5kKCJpZGVudGlmaWVyIik7Ci0gICAgICAgICAgICAgICAgY29uc3VtZSgiKCIpOworICAg
ICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICAgICAg
ICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgIH0pIHx8IGxleGVyLnRlc3RT
Y29wZSgoKSA9PiB7CiAgICAgICAgICAgICAgICAgcGFyc2VUeXBlKCk7Ci0gICAgICAgICAgICAg
ICAgY29uc3VtZSgiKCIpOworICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3Vt
ZSgiKCIpOworICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAg
ICAgIH0pOwogICAgIH0KICAgICAKQEAgLTM4Myw2ICs0MzQsNyBAQCBmdW5jdGlvbiBwYXJzZShw
cm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAg
ICAgIHJldHVybiByZWFkTW9kaWZ5V3JpdGU7CiAgICAgfQogICAgIAorICAgIC8vIE5lZWRzVXBk
YXRlQ2FsbGVycwogICAgIGZ1bmN0aW9uIHBhcnNlU3VmZml4T3BlcmF0b3IobGVmdCwgYWNjZXB0
YWJsZU9wZXJhdG9ycykKICAgICB7CiAgICAgICAgIGxldCB0b2tlbjsKQEAgLTM5OSw3ICs0NTEs
OSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1i
ZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
ICJbIjogewogICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHBhcnNlRXhwcmVzc2lvbigpOwot
ICAgICAgICAgICAgICAgIGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICBsZXQgbWF5YmVF
cnJvciA9IGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CiAgICAgICAgICAgICAgICAgbGVmdCA9IG5ldyBJbmRleEV4cHJlc3Npb24odG9rZW4sIGxl
ZnQsIGluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQz
Miw5ICs0ODYsMTIgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5k
LCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICByZXR1cm4gcmVhZE1vZGlmeVdyaXRl
OwogICAgIH0KICAgICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBw
YXJzZVByZUluY3JlbWVudCgpCiAgICAgewogICAgICAgICBsZXQgdG9rZW4gPSBjb25zdW1lKCIr
KyIsICItLSIpOworICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgIGxldCBsZWZ0ID0gcGFyc2VQb3NzaWJs
ZVByZWZpeCgpOwogICAgICAgICByZXR1cm4gZmluaXNoUGFyc2luZ1ByZUluY3JlbWVudCh0b2tl
biwgbGVmdCk7CiAgICAgfQpAQCAtNTIzLDYgKzU4MCw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dy
YW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAg
cmV0dXJuIHBhcnNlTGVmdExvZ2ljYWxFeHByZXNzaW9uKFsifHwiXSwgcGFyc2VQb3NzaWJsZUxv
Z2ljYWxBbmQpOwogICAgIH0KICAgICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBm
dW5jdGlvbiBwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKCkKICAgICB7CiAgICAgICAg
IGxldCBwcmVkaWNhdGUgPSBwYXJzZVBvc3NpYmxlTG9naWNhbE9yKCk7CkBAIC01MzAsMTggKzU4
OCwyMSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVO
dW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGlmICghb3BlcmF0b3IpCiAgICAgICAgICAgICBy
ZXR1cm4gcHJlZGljYXRlOwogICAgICAgICBsZXQgYm9keUV4cHJlc3Npb24gPSBwYXJzZVBvc3Np
YmxlQXNzaWdubWVudCgpOwotICAgICAgICBjb25zdW1lKCI6Iik7CisgICAgICAgIGxldCBtYXli
ZUVycm9yID0gY29uc3VtZSgiOiIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBs
ZXQgZWxzZUV4cHJlc3Npb24gPSBwYXJzZVBvc3NpYmxlQXNzaWdubWVudCgpOwogICAgICAgICBy
ZXR1cm4gbmV3IFRlcm5hcnlFeHByZXNzaW9uKG9wZXJhdG9yLCBwcmVkaWNhdGUsIGJvZHlFeHBy
ZXNzaW9uLCBlbHNlRXhwcmVzc2lvbik7CiAgICAgfQotICAgIAorCisgICAgLy8gTmVlZHNVcGRh
dGVDYWxsZXJzCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZUFzc2lnbm1lbnQobW9kZSkKICAg
ICB7CiAgICAgICAgIGxldCBsaHMgPSBwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKCk7
CiAgICAgICAgIGxldCBvcGVyYXRvciA9IHRyeUNvbnN1bWUoIj0iLCAiKz0iLCAiLT0iLCAiKj0i
LCAiLz0iLCAiJT0iLCAiXj0iLCAifD0iLCAiJj0iKTsKICAgICAgICAgaWYgKCFvcGVyYXRvcikg
ewogICAgICAgICAgICAgaWYgKG1vZGUgPT0gInJlcXVpcmVkIikKLSAgICAgICAgICAgICAgICBs
ZXhlci5mYWlsKCJFeHBlY3RlZCBhc3NpZ25tZW50OiAiICsgbGV4ZXIuX3RleHQuc3Vic3RyaW5n
KGxleGVyLl9pbmRleCkpOworICAgICAgICAgICAgICAgIHJldHVybiBsZXhlci5mYWlsKCJFeHBl
Y3RlZCBhc3NpZ25tZW50OiAiICsgbGV4ZXIuX3RleHQuc3Vic3RyaW5nKGxleGVyLl9pbmRleCkp
OwogICAgICAgICAgICAgcmV0dXJuIGxoczsKICAgICAgICAgfQogICAgICAgICBpZiAob3BlcmF0
b3IudGV4dCA9PSAiPSIpCkBAIC01NTQsMTAgKzYxNSwxMyBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAg
IHJldHVybiBwYXJzZVBvc3NpYmxlQXNzaWdubWVudCgicmVxdWlyZWQiKTsKICAgICB9CiAgICAg
CisgICAgLy8gTmVlZHNVcGRhdGVDYWxsZXJzCiAgICAgZnVuY3Rpb24gcGFyc2VQb3N0SW5jcmVt
ZW50KCkKICAgICB7CiAgICAgICAgIGxldCBsZWZ0ID0gcGFyc2VTdWZmaXhPcGVyYXRvcihwYXJz
ZVRlcm0oKSwgIi4iLCAiLT4iLCAiWyIpOwogICAgICAgICBsZXQgdG9rZW4gPSBjb25zdW1lKCIr
KyIsICItLSIpOworICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgIHJldHVybiBmaW5pc2hQYXJzaW5nUG9z
dEluY3JlbWVudCh0b2tlbiwgbGVmdCk7CiAgICAgfQogICAgIApAQCAtNTczLDE3ICs2MzcsMjIg
QEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVy
T2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHBvc3RJbmNyZW1lbnQ7CiAgICAgICAg
IHJldHVybiBwYXJzZUFzc2lnbm1lbnQoKTsKICAgICB9Ci0gICAgCisKKyAgICAvLyBOZWVkc1Vw
ZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBnZW5lcmljUGFyc2VDb21tYUV4cHJlc3Npb24oZmlu
YWxFeHByZXNzaW9uUGFyc2VyKQogICAgIHsKICAgICAgICAgbGV0IGxpc3QgPSBbXTsKICAgICAg
ICAgbGV0IG9yaWdpbiA9IGxleGVyLnBlZWsoKTsKICAgICAgICAgaWYgKCFvcmlnaW4pCi0gICAg
ICAgICAgICBsZXhlci5mYWlsKCJVbmV4cGVjdGVkIGVuZCBvZiBmaWxlIik7CisgICAgICAgICAg
ICByZXR1cm4gbGV4ZXIuZmFpbCgiVW5leHBlY3RlZCBlbmQgb2YgZmlsZSIpOworICAgICAgICBp
ZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9y
aWdpbjsKICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgbGV0IGVmZmVjdGZ1bEV4cHJl
c3Npb24gPSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7CiAgICAgICAgICAgICAgICAg
cGFyc2VFZmZlY3RmdWxFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgY29uc3VtZSgiLCIp
OworICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiLCIpOworICAgICAg
ICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgaWYgKCFlZmZlY3RmdWxFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICAgICAgbGV0IGZp
bmFsID0gZmluYWxFeHByZXNzaW9uUGFyc2VyKCk7CkBAIC02MDksNDMgKzY3OCw2OCBAQCBmdW5j
dGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQs
IHRleHQpCiAgICAgICAgIHJldHVybiBwYXJzZUNvbW1hRXhwcmVzc2lvbigpOwogICAgIH0KICAg
ICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBwYXJzZUVmZmVjdGZ1
bFN0YXRlbWVudCgpCiAgICAgewogICAgICAgICBsZXQgcmVzdWx0ID0gZ2VuZXJpY1BhcnNlQ29t
bWFFeHByZXNzaW9uKHBhcnNlRWZmZWN0ZnVsRXhwcmVzc2lvbik7Ci0gICAgICAgIGNvbnN1bWUo
IjsiKTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgIGlm
IChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIC8v
IE5lZWRzVXBkYXRlQ2FsbGVycwogICAgIGZ1bmN0aW9uIHBhcnNlUmV0dXJuKCkKICAgICB7CiAg
ICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJyZXR1cm4iKTsKKyAgICAgICAgaWYgKG9yaWdp
biBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CiAg
ICAgICAgIGlmICh0cnlDb25zdW1lKCI7IikpCiAgICAgICAgICAgICByZXR1cm4gbmV3IFJldHVy
bihvcmlnaW4sIG51bGwpOwogICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lv
bigpOwotICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29u
c3VtZSgiOyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gbmV3IFJl
dHVybihvcmlnaW4sIGV4cHJlc3Npb24pOwogICAgIH0KICAgICAKKyAgICAvLyBOZWVkc1VwZGF0
ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBwYXJzZUJyZWFrKCkKICAgICB7CiAgICAgICAgIGxldCBv
cmlnaW4gPSBjb25zdW1lKCJicmVhayIpOwotICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAg
IGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
b3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAg
aWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1
cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBCcmVhayhvcmlnaW4pOwogICAgIH0K
ICAgICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBwYXJzZUNvbnRp
bnVlKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJjb250aW51ZSIpOwot
ICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVF
cnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0
dXJuIG5ldyBDb250aW51ZShvcmlnaW4pOwogICAgIH0KIAorICAgIC8vIE5lZWRzVXBkYXRlQ2Fs
bGVycwogICAgIGZ1bmN0aW9uIHBhcnNlSWZTdGF0ZW1lbnQoKQogICAgIHsKICAgICAgICAgbGV0
IG9yaWdpbiA9IGNvbnN1bWUoImlmIik7Ci0gICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAg
aWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBv
cmlnaW47CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICBp
ZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVy
biBtYXliZUVycm9yOwogICAgICAgICBsZXQgY29uZGl0aW9uYWwgPSBwYXJzZUV4cHJlc3Npb24o
KTsKLSAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgi
KSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgYm9keSA9IHBhcnNlU3Rh
dGVtZW50KCk7CiAgICAgICAgIGxldCBlbHNlQm9keTsKICAgICAgICAgaWYgKHRyeUNvbnN1bWUo
ImVsc2UiKSkKQEAgLTY1MywyMCArNzQ3LDMyIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9y
aWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgcmV0dXJu
IG5ldyBJZlN0YXRlbWVudChvcmlnaW4sIG5ldyBDYWxsRXhwcmVzc2lvbihjb25kaXRpb25hbC5v
cmlnaW4sICJib29sIiwgW2NvbmRpdGlvbmFsXSksIGJvZHksIGVsc2VCb2R5KTsKICAgICB9CiAK
KyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBwYXJzZVdoaWxlKCkKICAg
ICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJ3aGlsZSIpOwotICAgICAgICBjb25z
dW1lKCIoIik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIigiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IGNvbmRpdGlvbmFs
ID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgIGNvbnN1bWUoIikiKTsKKyAgICAgICAgbWF5
YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAg
bGV0IGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOwogICAgICAgICByZXR1cm4gbmV3IFdoaWxlTG9v
cChvcmlnaW4sIG5ldyBDYWxsRXhwcmVzc2lvbihjb25kaXRpb25hbC5vcmlnaW4sICJib29sIiwg
W2NvbmRpdGlvbmFsXSksIGJvZHkpOwogICAgIH0KIAorICAgIC8vIE5lZWRzVXBkYXRlQ2FsbGVy
cwogICAgIGZ1bmN0aW9uIHBhcnNlRm9yKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBj
b25zdW1lKCJmb3IiKTsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAob3JpZ2lu
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CiAgICAgICAgIGxldCBpbml0aWFsaXphdGlvbjsKICAgICAgICAgaWYgKHRyeUNvbnN1bWUo
IjsiKSkKICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uID0gdW5kZWZpbmVkOwpAQCAtNjgwLDcg
Kzc4Niw5IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGlu
ZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIGNvbmRpdGlvbiA9IHVuZGVmaW5lZDsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb25kaXRpb24gPSBwYXJzZUV4cHJlc3Npb24o
KTsKLSAgICAgICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgICAgIG1heWJlRXJyb3IgPSBj
b25zdW1lKCI7Iik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAg
IGNvbmRpdGlvbiA9IG5ldyBDYWxsRXhwcmVzc2lvbihjb25kaXRpb24ub3JpZ2luLCAiYm9vbCIs
IFtjb25kaXRpb25dKTsKICAgICAgICAgfQogICAgICAgICBsZXQgaW5jcmVtZW50OwpAQCAtNjg4
LDYyICs3OTYsOTYgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5k
LCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgaW5jcmVtZW50ID0gdW5kZWZp
bmVkOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGluY3JlbWVudCA9IHBhcnNlRXhwcmVz
c2lvbigpOwotICAgICAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICAgICAgbWF5YmVFcnJv
ciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAg
ICB9CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKICAgICAgICAgcmV0dXJu
IG5ldyBGb3JMb29wKG9yaWdpbiwgaW5pdGlhbGl6YXRpb24sIGNvbmRpdGlvbiwgaW5jcmVtZW50
LCBib2R5KTsKICAgICB9CiAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlv
biBwYXJzZURvKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJkbyIpOwor
ICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIG9yaWdpbjsKICAgICAgICAgbGV0IGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOwotICAg
ICAgICBjb25zdW1lKCJ3aGlsZSIpOwotICAgICAgICBjb25zdW1lKCIoIik7CisgICAgICAgIGxl
dCBtYXliZUVycm9yID0gY29uc3VtZSgid2hpbGUiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
KyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKICAgICAgICAgbGV0IGNvbmRpdGlvbmFsID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAg
IGNvbnN1bWUoIikiKTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAg
ICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBEb1doaWxlTG9vcChvcmlnaW4s
IGJvZHksIG5ldyBDYWxsRXhwcmVzc2lvbihjb25kaXRpb25hbC5vcmlnaW4sICJib29sIiwgW2Nv
bmRpdGlvbmFsXSkpOwogICAgIH0KICAgICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAg
ICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbHMoKQogICAgIHsKICAgICAgICAgbGV0IHR5cGUg
PSBwYXJzZVR5cGUoKTsKICAgICAgICAgbGV0IGxpc3QgPSBbXTsKKyAgICAgICAgbGV0IHJlcGVh
dDsKICAgICAgICAgZG8gewogICAgICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRl
bnRpZmllciIpOwogICAgICAgICAgICAgbGV0IGluaXRpYWxpemVyID0gdHJ5Q29uc3VtZSgiPSIp
ID8gcGFyc2VFeHByZXNzaW9uKCkgOiBudWxsOwogICAgICAgICAgICAgbGlzdC5wdXNoKG5ldyBW
YXJpYWJsZURlY2wobmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBpbml0aWFsaXplcikpOwotICAgICAg
ICB9IHdoaWxlIChjb25zdW1lKCIsIiwgIjsiKS50ZXh0ID09ICIsIik7CisgICAgICAgICAgICBs
ZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIiwiLCAiOyIpOworICAgICAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
eWJlRXJyb3I7CisgICAgICAgICAgICByZXBlYXQgPSBtYXliZUVycm9yLnRleHQgPT0gIiwiOwor
ICAgICAgICB9IHdoaWxlIChyZXBlYXQpOwogICAgICAgICByZXR1cm4gbmV3IENvbW1hRXhwcmVz
c2lvbih0eXBlLm9yaWdpbiwgbGlzdCk7CiAgICAgfQogICAgIAorICAgIC8vIE5lZWRzVXBkYXRl
Q2FsbGVycwogICAgIGZ1bmN0aW9uIHBhcnNlU3dpdGNoQ2FzZSgpCiAgICAgewogICAgICAgICBs
ZXQgdG9rZW4gPSBjb25zdW1lKCJkZWZhdWx0IiwgImNhc2UiKTsKKyAgICAgICAgaWYgKHRva2Vu
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAg
ICAgICBsZXQgdmFsdWU7CiAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJjYXNlIikKICAgICAg
ICAgICAgIHZhbHVlID0gcGFyc2VDb25zdGV4cHIoKTsKLSAgICAgICAgY29uc3VtZSgiOiIpOwor
ICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjoiKTsKKyAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKICAgICAgICAgbGV0IGJvZHkgPSBwYXJzZUJsb2NrQm9keSgifSIsICJkZWZhdWx0Iiwg
ImNhc2UiKTsKICAgICAgICAgcmV0dXJuIG5ldyBTd2l0Y2hDYXNlKHRva2VuLCB2YWx1ZSwgYm9k
eSk7CiAgICAgfQogICAgIAorICAgIC8vIE5lZWRzVXBkYXRlQ2FsbGVycwogICAgIGZ1bmN0aW9u
IHBhcnNlU3dpdGNoU3RhdGVtZW50KCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25z
dW1lKCJzd2l0Y2giKTsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAob3JpZ2lu
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CiAgICAgICAgIGxldCB2YWx1ZSA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBjb25z
dW1lKCIpIik7Ci0gICAgICAgIGNvbnN1bWUoInsiKTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNv
bnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgbWF5YmVFcnJvciA9
IGNvbnN1bWUoInsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IHJlc3Vs
dCA9IG5ldyBTd2l0Y2hTdGF0ZW1lbnQob3JpZ2luLCB2YWx1ZSk7CiAgICAgICAgIHdoaWxlICgh
dHJ5Q29uc3VtZSgifSIpKQogICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZVN3aXRjaENhc2Uo
KSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAorICAgIC8vIE5lZWRzVXBk
YXRlQ2FsbGVycwogICAgIGZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50KCkKICAgICB7CiAgICAgICAg
IGxldCB0b2tlbiA9IGxleGVyLnBlZWsoKTsKKyAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICBpZiAodG9r
ZW4udGV4dCA9PSAiOyIpIHsKICAgICAgICAgICAgIGxleGVyLm5leHQoKTsKICAgICAgICAgICAg
IHJldHVybiBudWxsOwpAQCAtNzY2LDcgKzkwOCwxMSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFt
LCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAg
ICByZXR1cm4gcGFyc2VTd2l0Y2hTdGF0ZW1lbnQoKTsKICAgICAgICAgaWYgKHRva2VuLnRleHQg
PT0gInRyYXAiKSB7CiAgICAgICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgidHJhcCIpOwot
ICAgICAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAgICAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgICAgICBpZiAobWF5
YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4g
bWF5YmVFcnJvcjsKICAgICAgICAgICAgIHJldHVybiBuZXcgVHJhcFN0YXRlbWVudChvcmlnaW4p
OwogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJ7IikKQEAgLTc4OCwxMSAr
OTM0LDE2IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGlu
ZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgIH0KICAgICAK
KyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBwYXJzZUJsb2NrKCkKICAg
ICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJ7Iik7CisgICAgICAgIGlmIChvcmln
aW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOwog
ICAgICAgICBsZXQgYmxvY2sgPSBwYXJzZUJsb2NrQm9keSgifSIpOwotICAgICAgICBjb25zdW1l
KCJ9Iik7CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgifSIpOworICAgICAgICBp
ZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVy
biBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gYmxvY2s7CiAgICAgfQogICAgIApAQCAtODAz
LDI2ICs5NTQsMzYgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5k
LCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICByZXR1cm4gbmV3IEZ1bmNQYXJhbWV0
ZXIodHlwZS5vcmlnaW4sIG5hbWUgPyBuYW1lLnRleHQgOiBudWxsLCB0eXBlKTsKICAgICB9CiAg
ICAgCisgICAgLy8gTmVlZHNVcGRhdGVDYWxsZXJzCiAgICAgZnVuY3Rpb24gcGFyc2VQYXJhbWV0
ZXJzKCkKICAgICB7Ci0gICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBw
YXJhbWV0ZXJzID0gW107CiAgICAgICAgIHdoaWxlICghdGVzdCgiKSIpKSB7CiAgICAgICAgICAg
ICBwYXJhbWV0ZXJzLnB1c2gocGFyc2VQYXJhbWV0ZXIoKSk7CiAgICAgICAgICAgICBpZiAoIXRy
eUNvbnN1bWUoIiwiKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAg
ICBjb25zdW1lKCIpIik7CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAg
ICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzOwogICAgIH0KICAg
ICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBwYXJzZUZ1bmNOYW1l
KCkKICAgICB7CiAgICAgICAgIGlmICh0cnlDb25zdW1lKCJvcGVyYXRvciIpKSB7CiAgICAgICAg
ICAgICBsZXQgdG9rZW4gPSBjb25zdW1lKCIrIiwgIi0iLCAiKiIsICIvIiwgIiUiLCAiXiIsICIm
IiwgInwiLCAiPCIsICI+IiwgIjw9IiwgIj49IiwgIj09IiwgIisrIiwgIi0tIiwgIi4iLCAifiIs
ICI8PCIsICI+PiIsICJbIik7CisgICAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgICAgaWYg
KHRva2VuLnRleHQgPT0gIiYiKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIlsi
KSkgewotICAgICAgICAgICAgICAgICAgICBjb25zdW1lKCJdIik7CisgICAgICAgICAgICAgICAg
ICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiXSIpOworICAgICAgICAgICAgICAgICAgICBp
ZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm9w
ZXJhdG9yJltdIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKHRyeUNv
bnN1bWUoIi4iKSkKQEAgLTgzNiw3ICs5OTcsOSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBv
cmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0b2tlbi50
ZXh0ID09ICJbIikgewotICAgICAgICAgICAgICAgIGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAg
ICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICBpZiAo
bWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1heWJlRXJyb3IKICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gIm9wZXJhdG9y
W10iOwogICAgICAgICAgICAgICAgIGlmICh0cnlDb25zdW1lKCI9IikpCiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCArPSAiPSI7CkBAIC04ODIsNDcgKzEwNDUsNjYgQEAgZnVuY3Rpb24gcGFy
c2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQog
ICAgICAgICByZXR1cm4gbmV3IEZ1bmNEZWYoZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVuYy5y
ZXR1cm5UeXBlLCBmdW5jLnBhcmFtZXRlcnMsIGJvZHksIGZ1bmMuaXNDYXN0LCBmdW5jLnNoYWRl
clR5cGUpOwogICAgIH0KICAgICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5j
dGlvbiBwYXJzZUZpZWxkKCkKICAgICB7CiAgICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7
CiAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKLSAgICAgICAg
Y29uc3VtZSgiOyIpOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBGaWVsZChuYW1lLCBuYW1l
LnRleHQsIHR5cGUpOwogICAgIH0KICAgICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAg
ICBmdW5jdGlvbiBwYXJzZVN0cnVjdFR5cGUoKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9
IGNvbnN1bWUoInN0cnVjdCIpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKICAgICAgICAgbGV0IG5hbWUgPSBj
b25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQ7CiAgICAgICAgIGxldCByZXN1bHQgPSBuZXcg
U3RydWN0VHlwZShvcmlnaW4sIG5hbWUpOwotICAgICAgICBjb25zdW1lKCJ7Iik7CisgICAgICAg
IGxldCBtYXliZUVycm9yID0gY29uc3VtZSgieyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwog
ICAgICAgICB3aGlsZSAoIXRyeUNvbnN1bWUoIn0iKSkKICAgICAgICAgICAgIHJlc3VsdC5hZGQo
cGFyc2VGaWVsZCgpKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCisgICAg
Ly8gTmVlZHNVcGRhdGVDYWxsZXJzCiAgICAgZnVuY3Rpb24gcGFyc2VOYXRpdmVGdW5jKCkKICAg
ICB7CiAgICAgICAgIGxldCBmdW5jID0gcGFyc2VGdW5jRGVjbCgpOwotICAgICAgICBjb25zdW1l
KCI7Iik7CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOworICAgICAgICBp
ZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVy
biBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUZ1bmMoZnVuYy5vcmlnaW4s
IGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBmdW5jLnBhcmFtZXRlcnMsIGZ1bmMuaXNDYXN0
LCBmdW5jLnNoYWRlclR5cGUpOwogICAgIH0KICAgICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxl
cnMKICAgICBmdW5jdGlvbiBwYXJzZU5hdGl2ZSgpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2lu
ID0gY29uc3VtZSgibmF0aXZlIik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOwogICAgICAgICBpZiAodHJ5Q29u
c3VtZSgidHlwZWRlZiIpKSB7CiAgICAgICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJp
ZGVudGlmaWVyIik7CiAgICAgICAgICAgICBsZXQgYXJncyA9IHBhcnNlVHlwZUFyZ3VtZW50cygp
OwotICAgICAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3Ig
PSBjb25zdW1lKCI7Iik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAg
ICAgIHJldHVybiBOYXRpdmVUeXBlLmNyZWF0ZShvcmlnaW4sIG5hbWUudGV4dCwgYXJncyk7CiAg
ICAgICAgIH0KICAgICAgICAgcmV0dXJuIHBhcnNlTmF0aXZlRnVuYygpOwogICAgIH0KICAgICAK
KyAgICAvLyBOZWVkc1VwZGF0ZUNhbGxlcnMKICAgICBmdW5jdGlvbiBwYXJzZVJlc3RyaWN0ZWRG
dW5jRGVmKCkKICAgICB7Ci0gICAgICAgIGNvbnN1bWUoInJlc3RyaWN0ZWQiKTsKKyAgICAgICAg
bGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJyZXN0cmljdGVkIik7CisgICAgICAgIGlmIChtYXli
ZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJl
RXJyb3I7CiAgICAgICAgIGxldCByZXN1bHQ7CiAgICAgICAgIGlmICh0cnlDb25zdW1lKCJuYXRp
dmUiKSkKICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlTmF0aXZlRnVuYygpOwpAQCAtOTQxLDIz
ICsxMTIzLDMwIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwg
bGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgcmV0dXJuIG5ldyBFbnVtTWVtYmVyKG5h
bWUsIG5hbWUudGV4dCwgdmFsdWUpOwogICAgIH0KICAgICAKKyAgICAvLyBOZWVkc1VwZGF0ZUNh
bGxlcnMKICAgICBmdW5jdGlvbiBwYXJzZUVudW1UeXBlKCkKICAgICB7Ci0gICAgICAgIGNvbnN1
bWUoImVudW0iKTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJlbnVtIik7Cisg
ICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIG1heWJlRXJyb3IKICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRl
bnRpZmllciIpOwogICAgICAgICBsZXQgYmFzZVR5cGU7CiAgICAgICAgIGlmICh0cnlDb25zdW1l
KCI6IikpCiAgICAgICAgICAgICBiYXNlVHlwZSA9IHBhcnNlVHlwZSgpOwogICAgICAgICBlbHNl
CiAgICAgICAgICAgICBiYXNlVHlwZSA9IG5ldyBUeXBlUmVmKG5hbWUsICJpbnQiKTsKLSAgICAg
ICAgY29uc3VtZSgieyIpOworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgieyIpOworICAg
ICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVudW1UeXBlKG5h
bWUsIG5hbWUudGV4dCwgYmFzZVR5cGUpOwogICAgICAgICB3aGlsZSAoIXRlc3QoIn0iKSkgewog
ICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZUVudW1NZW1iZXIoKSk7CiAgICAgICAgICAgICBp
ZiAoIXRyeUNvbnN1bWUoIiwiKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICBjb25zdW1lKCJ9Iik7CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCJ9Iik7
CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQog
ICAgIApAQCAtOTY1LDYgKzExNTQsOCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCB0b2tlbiA9
IGxleGVyLnBlZWsoKTsKICAgICAgICAgaWYgKCF0b2tlbikKICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIHRva2VuOwogICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAiOyIpCiAgICAgICAgICAg
ICBsZXhlci5uZXh0KCk7CiAgICAgICAgIGVsc2UgaWYgKHRva2VuLnRleHQgPT0gInR5cGVkZWYi
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348951</attachid>
            <date>2018-09-05 11:42:55 -0700</date>
            <delta_ts>2018-09-05 13:06:31 -0700</delta_ts>
            <desc>first draft</desc>
            <filename>bug-189014-20180905114254.patch</filename>
            <type>text/plain</type>
            <size>62276</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Njc0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2U2ZTQ1MmNiMTgyYzY5ZDBkNTc1ZjU0MWMyYWJjYzQz
ODI3MzljZC4uN2E0NjlkNmEyYWQ4YTFmZTc2ZWI0NmI1NzNmYjA3N2VjZThkYjhhMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUx
IEBACisyMDE4LTA5LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBUaGUgcGFyc2VyIGlzIHRvbyBzbG93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0xleGVyLmpzOgorICAgICAgICAoTGV4ZXIucHJvdG90eXBlLm5leHQpOgorICAgICAgICAo
TGV4ZXIpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzOgorICAg
ICAgICAoZ2VuZXJpY0NvbnN1bWUpOgorICAgICAgICAoZ2VuZXJpY1Rlc3QpOgorICAgICAgICAo
Y29uc3VtZUVuZE9mVHlwZUFyZ3MpOgorICAgICAgICAocGFyc2VUZXJtKToKKyAgICAgICAgKHBh
cnNlVHlwZUFyZ3VtZW50cyk6CisgICAgICAgIChwYXJzZVR5cGUpOgorICAgICAgICAocGFyc2VU
eXBlRGVmKToKKyAgICAgICAgKHBhcnNlQ2FsbEV4cHJlc3Npb24ubGV0LnBhcnNlQXJndW1lbnRz
KToKKyAgICAgICAgKGlzQ2FsbEV4cHJlc3Npb24pOgorICAgICAgICAocGFyc2VTdWZmaXhPcGVy
YXRvcik6CisgICAgICAgIChwYXJzZVByZUluY3JlbWVudCk6CisgICAgICAgIChwYXJzZVBvc3Np
YmxlVGVybmFyeUNvbmRpdGlvbmFsKToKKyAgICAgICAgKHBhcnNlUG9zc2libGVBc3NpZ25tZW50
KToKKyAgICAgICAgKHBhcnNlUG9zdEluY3JlbWVudCk6CisgICAgICAgIChnZW5lcmljUGFyc2VD
b21tYUV4cHJlc3Npb24pOgorICAgICAgICAocGFyc2VFZmZlY3RmdWxTdGF0ZW1lbnQpOgorICAg
ICAgICAocGFyc2VSZXR1cm4pOgorICAgICAgICAocGFyc2VCcmVhayk6CisgICAgICAgIChwYXJz
ZUNvbnRpbnVlKToKKyAgICAgICAgKHBhcnNlSWZTdGF0ZW1lbnQpOgorICAgICAgICAocGFyc2VX
aGlsZSk6CisgICAgICAgIChwYXJzZUZvcik6CisgICAgICAgIChwYXJzZURvKToKKyAgICAgICAg
KHBhcnNlVmFyaWFibGVEZWNscyk6CisgICAgICAgIChwYXJzZVN3aXRjaENhc2UpOgorICAgICAg
ICAocGFyc2VTd2l0Y2hTdGF0ZW1lbnQpOgorICAgICAgICAocGFyc2VTdGF0ZW1lbnQpOgorICAg
ICAgICAocGFyc2VCbG9jayk6CisgICAgICAgIChwYXJzZUZ1bmNOYW1lKToKKyAgICAgICAgKHBh
cnNlRmllbGQpOgorICAgICAgICAocGFyc2VTdHJ1Y3RUeXBlKToKKyAgICAgICAgKHBhcnNlTmF0
aXZlRnVuYyk6CisgICAgICAgIChwYXJzZU5hdGl2ZSk6CisgICAgICAgIChwYXJzZVJlc3RyaWN0
ZWRGdW5jRGVmKToKKyAgICAgICAgKHBhcnNlRW51bVR5cGUpOgorICAgICAgICAocGFyc2UpOgor
CiAyMDE4LTA5LTA1ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAg
ICAgUkVHUkVTU0lPTiAocjIwOTQ3MCk6IEVkaXRpbmdIaXN0b3J5IGZvbGRlciBpcyBtaXNzaW5n
IGluIEVkaXRpbmdIaXN0b3J5IFhjb2RlIHByb2plY3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvTGV4ZXIuanMKaW5kZXggOTU2ZGNhMzM2YTJhOWEzMTIxYTI3NzI4NWFlM2RiNzZkZGU3MjM3
MC4uZjgwMGMxMThlYWNkOGIzMDM5MGFhNTE1YWI1ZDQzYmU0ZTVlNjQ5YyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKQEAgLTczLDcgKzczLDcgQEAgY2xhc3MgTGV4ZXIg
ewogICAgIHsKICAgICAgICAgcmV0dXJuIExleGVyLl90ZXh0SXNJZGVudGlmaWVySW1wbCh0ZXh0
KSAmJiAhUmVnRXhwLnJpZ2h0Q29udGV4dC5sZW5ndGg7CiAgICAgfQotICAgIAorCiAgICAgbmV4
dCgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc3RhY2subGVuZ3RoKQpAQCAtMTAyLDcgKzEw
Miw3IEBAIGNsYXNzIExleGVyIHsKICAgICAgICAgICAgIGlmICgvXlwvXCovLnRlc3QocmVsZXZh
bnRUZXh0KSkgewogICAgICAgICAgICAgICAgIGxldCBlbmRJbmRleCA9IHJlbGV2YW50VGV4dC5z
ZWFyY2goL1wqXC8vKTsKICAgICAgICAgICAgICAgICBpZiAoZW5kSW5kZXggPCAwKQotICAgICAg
ICAgICAgICAgICAgICB0aGlzLmZhaWwoIlVudGVybWluYXRlZCBjb21tZW50Iik7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0aGlzLmZhaWwoIlVudGVybWluYXRlZCBjb21tZW50Iik7CiAg
ICAgICAgICAgICAgICAgdGhpcy5faW5kZXggKz0gZW5kSW5kZXggKyAyOwogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMTQ5LDUyICsxNDksNDQgQEAgY2xhc3Mg
TGV4ZXIgewogICAgICAgICBsZXQgcmVtYWluaW5nID0gcmVsZXZhbnRUZXh0LnN1YnN0cmluZygw
LCAyMCkuc3BsaXQoL1xzLylbMF07CiAgICAgICAgIGlmICghcmVtYWluaW5nLmxlbmd0aCkKICAg
ICAgICAgICAgIHJlbWFpbmluZyA9IHJlbGV2YW50VGV4dC5zdWJzdHJpbmcoMCwgMjApOwotICAg
ICAgICB0aGlzLmZhaWwoIlVucmVjb2duaXplZCB0b2tlbiBiZWdpbm5pbmcgd2l0aDogIiArIHJl
bWFpbmluZyk7CisgICAgICAgIHJldHVybiB0aGlzLmZhaWwoIlVucmVjb2duaXplZCB0b2tlbiBi
ZWdpbm5pbmcgd2l0aDogIiArIHJlbWFpbmluZyk7CiAgICAgfQogICAgIAogICAgIHB1c2godG9r
ZW4pCiAgICAgewogICAgICAgICB0aGlzLl9zdGFjay5wdXNoKHRva2VuKTsKICAgICB9Ci0gICAg
CisKICAgICBwZWVrKCkKICAgICB7CiAgICAgICAgIGxldCByZXN1bHQgPSB0aGlzLm5leHQoKTsK
KyAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIHRoaXMucHVzaChyZXN1bHQpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBmYWlsKGVycm9yKQogICAgIHsKLSAgICAgICAg
dGhyb3cgbmV3IFdTeW50YXhFcnJvcih0aGlzLm9yaWdpblN0cmluZywgZXJyb3IpOworICAgICAg
ICByZXR1cm4gbmV3IFdTeW50YXhFcnJvcih0aGlzLm9yaWdpblN0cmluZywgZXJyb3IpOwogICAg
IH0KICAgICAKICAgICBiYWNrdHJhY2tpbmdTY29wZShjYWxsYmFjaykKICAgICB7CiAgICAgICAg
IGxldCBzdGF0ZSA9IHRoaXMuc3RhdGU7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1
cm4gY2FsbGJhY2soKTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgaWYgKGUg
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpIHsKLSAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0g
c3RhdGU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB0aHJvdyBlOworICAgICAgICBsZXQgcmVzdWx0ID0gY2FsbGJhY2soKTsKKyAgICAg
ICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikgeworICAgICAgICAgICAgdGhp
cy5zdGF0ZSA9IHN0YXRlOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgdGVzdFNjb3BlKGNhbGxiYWNr
KQogICAgIHsKICAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5zdGF0ZTsKLSAgICAgICAgdHJ5IHsK
LSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgdGhyb3cgZTsK
LSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTsKLSAg
ICAgICAgfQorICAgICAgICBsZXQgcmVzdWx0ID0gY2FsbGJhY2soKTsKKyAgICAgICAgdGhpcy5z
dGF0ZSA9IHN0YXRlOworICAgICAgICByZXR1cm4gIShyZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKaW5k
ZXggZWU0Yzk4MGYzYTE2NzJiNjhhNzdlYmI0ODUyNWVkZDI0OTQ0M2E1My4uMDJmNjYxNjQ1YTdk
MThhNTU2OGM5MjE3NzYxMzkzMjk2ZTlmZmE0NyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvUGFyc2UuanMKQEAgLTI3LDcgKzI3LDcgQEAKIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9y
aWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKIHsKICAgICBsZXQgbGV4
ZXIgPSBuZXcgTGV4ZXIob3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0
KTsKLSAgICAKKwogICAgIC8vIFRoZSBoYXJkZXN0IHBhcnQgb2YgZGVhbGluZyB3aXRoIEMtbGlr
ZSBsYW5ndWFnZXMgaXMgcGFyc2luZyB2YXJpYWJsZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLgog
ICAgIC8vIExldCdzIGNvbnNpZGVyIGlmIHRoaXMgaGFwcGVucyBpbiBXU0wuIEhlcmUgYXJlIHRo
ZSB2YWxpZCBzdGF0ZW1lbnRzIGluIFdTTCB0aGF0IGJlaW5nIHdpdGggYW4KICAgICAvLyBpZGVu
dGlmaWVyLCBpZiB3ZSBhc3N1bWUgdGhhdCBhbnkgZXhwcmVzc2lvbiBjYW4gYmUgYSBzdGFuZGFs
b25lIHN0YXRlbWVudC4KQEAgLTYxLDU4ICs2MSw3NSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFt
LCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgLy8gcG9p
bnRlcnMgbWVhbnMgdGhhdCB3ZSBjYW4gc3RpbGwgYWxsb3cgZnVuY3Rpb24gY2FsbCBzdGF0ZW1l
bnRzIC0gdW5saWtlIGluIEMsIHRob3NlIGNhbm5vdAogICAgIC8vIGhhdmUgYXJiaXRyYXJ5IGV4
cHJlc3Npb25zIGFzIHRoZSBjYWxsZWUuIFRoZSByZW1haW5pbmcgdHdvIHByb2JsZW1zIGFyZSBz
b2x2ZWQgYnkKICAgICAvLyBiYWNrdHJhY2tpbmcuIEluIGFsbCBvdGhlciByZXNwZWN0cywgdGhp
cyBpcyBhIHNpbXBsZSByZWN1cnNpdmUgZGVzY2VudCBwYXJzZXIuCi0gICAgCisKICAgICBmdW5j
dGlvbiBnZW5lcmljQ29uc3VtZShjYWxsYmFjaywgZXhwbGFuYXRpb24pCiAgICAgewogICAgICAg
ICBsZXQgdG9rZW4gPSBsZXhlci5uZXh0KCk7CiAgICAgICAgIGlmICghdG9rZW4pCi0gICAgICAg
ICAgICBsZXhlci5mYWlsKCJVbmV4cGVjdGVkIGVuZCBvZiBmaWxlIik7CisgICAgICAgICAgICBy
ZXR1cm4gbGV4ZXIuZmFpbCgiVW5leHBlY3RlZCBlbmQgb2YgZmlsZSIpOworICAgICAgICBpZiAo
dG9rZW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdG9rZW47
CiAgICAgICAgIGlmICghY2FsbGJhY2sodG9rZW4pKQotICAgICAgICAgICAgbGV4ZXIuZmFpbCgi
VW5leHBlY3RlZCB0b2tlbjogIiArIHRva2VuLnRleHQgKyAiOyBleHBlY3RlZDogIiArIGV4cGxh
bmF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBsZXhlci5mYWlsKCJVbmV4cGVjdGVkIHRva2Vu
OiAiICsgdG9rZW4udGV4dCArICI7IGV4cGVjdGVkOiAiICsgZXhwbGFuYXRpb24pOwogICAgICAg
ICByZXR1cm4gdG9rZW47CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gY29uc3VtZSguLi50
ZXh0cykKICAgICB7CiAgICAgICAgIHJldHVybiBnZW5lcmljQ29uc3VtZSh0b2tlbiA9PiB0ZXh0
cy5pbmNsdWRlcyh0b2tlbi50ZXh0KSwgdGV4dHMpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0
aW9uIGNvbnN1bWVLaW5kKGtpbmQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJpY0NvbnN1
bWUodG9rZW4gPT4gdG9rZW4ua2luZCA9PSBraW5kLCBraW5kKTsKICAgICB9Ci0gICAgCisKICAg
ICBmdW5jdGlvbiBhc3NlcnROZXh0KC4uLnRleHRzKQogICAgIHsKLSAgICAgICAgbGV4ZXIucHVz
aChjb25zdW1lKC4uLnRleHRzKSk7CisgICAgICAgIGxldCByZXN1bHQgPSBjb25zdW1lKC4uLnRl
eHRzKTsKKyAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGxleGVyLnB1c2gocmVzdWx0KTsKICAgICB9
Ci0gICAgCisKKyAgICAvLyBUaGlzIGNhbiBzdGlsbCByZXR1cm4gYW4gZXJyb3IgZm9yIHRoaW5n
cyBsaWtlIHVudGVybWluYXRlZCBjb21tZW50cy4KICAgICBmdW5jdGlvbiBnZW5lcmljVGVzdChj
YWxsYmFjaykKICAgICB7CiAgICAgICAgIGxldCB0b2tlbiA9IGxleGVyLnBlZWsoKTsKLSAgICAg
ICAgaWYgKHRva2VuICYmIGNhbGxiYWNrKHRva2VuKSkKKyAgICAgICAgaWYgKCF0b2tlbikKKyAg
ICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdG9rZW47CisgICAgICAgIGlmIChjYWxsYmFj
ayh0b2tlbikpCiAgICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgIHJldHVybiBudWxs
OwogICAgIH0KLSAgICAKKworICAgIC8vIFRoaXMgY2FuIHN0aWxsIHJldHVybiBhbiBlcnJvciBm
b3IgdGhpbmdzIGxpa2UgdW50ZXJtaW5hdGVkIGNvbW1lbnRzLgogICAgIGZ1bmN0aW9uIHRlc3Qo
Li4udGV4dHMpCiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJpY1Rlc3QodG9rZW4gPT4gdGV4
dHMuaW5jbHVkZXModG9rZW4udGV4dCkpOwogICAgIH0KLSAgICAKKworICAgIC8vIFRoaXMgY2Fu
IHN0aWxsIHJldHVybiBhbiBlcnJvciBmb3IgdGhpbmdzIGxpa2UgdW50ZXJtaW5hdGVkIGNvbW1l
bnRzLgogICAgIGZ1bmN0aW9uIHRlc3RLaW5kKGtpbmQpCiAgICAgewogICAgICAgICByZXR1cm4g
Z2VuZXJpY1Rlc3QodG9rZW4gPT4gdG9rZW4ua2luZCA9PSBraW5kKTsKICAgICB9Ci0gICAgCisK
KyAgICAvLyBUaGlzIGNhbiBzdGlsbCByZXR1cm4gYW4gZXJyb3IgZm9yIHRoaW5ncyBsaWtlIHVu
dGVybWluYXRlZCBjb21tZW50cy4KICAgICBmdW5jdGlvbiB0cnlDb25zdW1lKC4uLnRleHRzKQog
ICAgIHsKICAgICAgICAgbGV0IHJlc3VsdCA9IHRlc3QoLi4udGV4dHMpOwotICAgICAgICBpZiAo
cmVzdWx0KQotICAgICAgICAgICAgbGV4ZXIubmV4dCgpOworICAgICAgICBpZiAoIXJlc3VsdCkK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBsZXhl
ci5uZXh0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCisgICAgLy8g
VGhpcyBjYW4gc3RpbGwgcmV0dXJuIGFuIGVycm9yIGZvciB0aGluZ3MgbGlrZSB1bnRlcm1pbmF0
ZWQgY29tbWVudHMuCiAgICAgZnVuY3Rpb24gdHJ5Q29uc3VtZUtpbmQoa2luZCkKICAgICB7CiAg
ICAgICAgIGxldCByZXN1bHQgPSB0ZXN0S2luZChraW5kKTsKQEAgLTEyMCwzNyArMTM3LDU2IEBA
IGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9m
ZnNldCwgdGV4dCkKICAgICAgICAgICAgIGxleGVyLm5leHQoKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBjb25zdW1lRW5kT2ZUeXBlQXJncygp
CiAgICAgewogICAgICAgICBsZXQgcmlnaHRTaGlmdCA9IHRyeUNvbnN1bWUoIj4+Iik7CisgICAg
ICAgIGlmIChyaWdodFNoaWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIHJpZ2h0U2hpZnQ7CiAgICAgICAgIGlmIChyaWdodFNoaWZ0KQogICAgICAgICAgICAg
bGV4ZXIucHVzaChuZXcgTGV4ZXJUb2tlbihsZXhlciwgcmlnaHRTaGlmdCwgcmlnaHRTaGlmdC5p
bmRleCwgcmlnaHRTaGlmdC5raW5kLCAiPiIpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y29uc3VtZSgiPiIpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSBj
b25zdW1lKCI+Iik7CisgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAgICB9Ci0g
ICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVRlcm0oKQogICAgIHsKICAgICAgICAgbGV0IHRva2Vu
OwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJudWxsIikpCisgICAgICAgIGlmICh0
b2tlbiA9IHRyeUNvbnN1bWUoIm51bGwiKSkgeworICAgICAgICAgICAgaWYgKHRva2VuIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAg
ICAgICAgIHJldHVybiBuZXcgTnVsbExpdGVyYWwodG9rZW4pOwotICAgICAgICBpZiAodG9rZW4g
PSB0cnlDb25zdW1lS2luZCgiaWRlbnRpZmllciIpKQorICAgICAgICB9CisgICAgICAgIGlmICh0
b2tlbiA9IHRyeUNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikpIHsKKyAgICAgICAgICAgIGlmICh0
b2tlbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9r
ZW47CiAgICAgICAgICAgICByZXR1cm4gbmV3IFZhcmlhYmxlUmVmKHRva2VuLCB0b2tlbi50ZXh0
KTsKKyAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2luZCgiaW50TGl0
ZXJhbCIpKSB7CisgICAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgICAgbGV0IGludFZlcnNp
b24gPSAoK3Rva2VuLnRleHQpIHwgMDsKICAgICAgICAgICAgIGlmICgiIiArIGludFZlcnNpb24g
IT09IHRva2VuLnRleHQpCi0gICAgICAgICAgICAgICAgbGV4ZXIuZmFpbCgiSW50ZWdlciBsaXRl
cmFsIGlzIG5vdCBhbiBpbnRlZ2VyOiAiICsgdG9rZW4udGV4dCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIGxleGVyLmZhaWwoIkludGVnZXIgbGl0ZXJhbCBpcyBub3QgYW4gaW50ZWdlcjogIiAr
IHRva2VuLnRleHQpOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBJbnRMaXRlcmFsKHRva2VuLCBp
bnRWZXJzaW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2lu
ZCgidWludExpdGVyYWwiKSkgeworICAgICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgICAgIGxl
dCB1aW50VmVyc2lvbiA9IHRva2VuLnRleHQuc3Vic3RyKDAsIHRva2VuLnRleHQubGVuZ3RoIC0g
MSkgPj4+IDA7CiAgICAgICAgICAgICBpZiAodWludFZlcnNpb24gKyAidSIgIT09IHRva2VuLnRl
eHQpCi0gICAgICAgICAgICAgICAgbGV4ZXIuZmFpbCgiSW50ZWdlciBsaXRlcmFsIGlzIG5vdCAz
Mi1iaXQgdW5zaWduZWQgaW50ZWdlcjogIiArIHRva2VuLnRleHQpOworICAgICAgICAgICAgICAg
IHJldHVybiBsZXhlci5mYWlsKCJJbnRlZ2VyIGxpdGVyYWwgaXMgbm90IDMyLWJpdCB1bnNpZ25l
ZCBpbnRlZ2VyOiAiICsgdG9rZW4udGV4dCk7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnRM
aXRlcmFsKHRva2VuLCB1aW50VmVyc2lvbik7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCh0b2tl
biA9IHRyeUNvbnN1bWVLaW5kKCJpbnRIZXhMaXRlcmFsIikpCi0gICAgICAgICAgICB8fCAodG9r
ZW4gPSB0cnlDb25zdW1lS2luZCgidWludEhleExpdGVyYWwiKSkpIHsKKyAgICAgICAgdG9rZW4g
PSB0cnlDb25zdW1lS2luZCgiaW50SGV4TGl0ZXJhbCIpOworICAgICAgICBpZiAodG9rZW4gaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdG9rZW47CisgICAgICAg
IGlmICh0b2tlbiB8fCAodG9rZW4gPSB0cnlDb25zdW1lS2luZCgidWludEhleExpdGVyYWwiKSkp
IHsKKyAgICAgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgICAgICBsZXQgaGV4U3RyaW5nID0gdG9r
ZW4udGV4dC5zdWJzdHIoMik7CiAgICAgICAgICAgICBpZiAodG9rZW4ua2luZCA9PSAidWludEhl
eExpdGVyYWwiKQogICAgICAgICAgICAgICAgIGhleFN0cmluZyA9IGhleFN0cmluZy5zdWJzdHIo
MCwgaGV4U3RyaW5nLmxlbmd0aCAtIDEpOwpAQCAtMTYyLDEyICsxOTgsMTQgQEAgZnVuY3Rpb24g
cGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0
KQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGludFZlcnNpb24gPSBpbnRWZXJz
aW9uID4+PiAwOwogICAgICAgICAgICAgaWYgKGludFZlcnNpb24udG9TdHJpbmcoMTYpICE9PSBo
ZXhTdHJpbmcpCi0gICAgICAgICAgICAgICAgbGV4ZXIuZmFpbCgiSGV4IGludGVnZXIgbGl0ZXJh
bCBpcyBub3QgYW4gaW50ZWdlcjogIiArIHRva2VuLnRleHQpOworICAgICAgICAgICAgICAgIHJl
dHVybiBsZXhlci5mYWlsKCJIZXggaW50ZWdlciBsaXRlcmFsIGlzIG5vdCBhbiBpbnRlZ2VyOiAi
ICsgdG9rZW4udGV4dCk7CiAgICAgICAgICAgICBpZiAodG9rZW4ua2luZCA9PSAiaW50SGV4TGl0
ZXJhbCIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbnRMaXRlcmFsKHRva2VuLCBpbnRW
ZXJzaW9uKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgVWludExpdGVyYWwodG9rZW4sIGludFZl
cnNpb24gPj4+IDApOwogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWVL
aW5kKCJmbG9hdExpdGVyYWwiKSkgeworICAgICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgICAg
IGxldCB0ZXh0ID0gdG9rZW4udGV4dDsKICAgICAgICAgICAgIGxldCBmID0gdG9rZW4udGV4dC5l
bmRzV2l0aCgiZiIpOwogICAgICAgICAgICAgaWYgKGYpCkBAIC0xNzUsMzMgKzIxMyw1OCBAQCBm
dW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZz
ZXQsIHRleHQpCiAgICAgICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUZsb2F0KHRleHQpOwogICAg
ICAgICAgICAgcmV0dXJuIG5ldyBGbG9hdExpdGVyYWwodG9rZW4sIE1hdGguZnJvdW5kKHZhbHVl
KSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgidHJ1ZSIsICJm
YWxzZSIpKQorICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJ0cnVlIiwgImZhbHNlIikp
IHsKKyAgICAgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgICAgICByZXR1cm4gbmV3IEJvb2xMaXRl
cmFsKHRva2VuLCB0b2tlbi50ZXh0ID09ICJ0cnVlIik7CisgICAgICAgIH0KICAgICAgICAgLy8g
RklYTUU6IE5lZWQgc3VwcG9ydCBmb3Igb3RoZXIgbGl0ZXJhbHMgdG9vLgotICAgICAgICBjb25z
dW1lKCIoIik7CisgICAgICAgIGxldCBwYXJlbnRoZXNpc1Jlc3VsdCA9IGNvbnN1bWUoIigiKTsK
KyAgICAgICAgaWYgKHBhcmVudGhlc2lzUmVzdWx0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgcmV0dXJuIHBhcmVudGhlc2lzUmVzdWx0OwogICAgICAgICBsZXQgcmVzdWx0
ID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgIGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYg
KHJlc3VsdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIHBhcmVudGhlc2lzUmVzdWx0ID0gY29uc3VtZSgiKSIpOworICAgICAgICBp
ZiAocGFyZW50aGVzaXNSZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gcGFyZW50aGVzaXNSZXN1bHQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VDb25zdGV4cHIoKQogICAgIHsKICAgICAgICAg
bGV0IHRva2VuOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCItIikpCi0gICAgICAg
ICAgICByZXR1cm4gbmV3IENhbGxFeHByZXNzaW9uKHRva2VuLCAib3BlcmF0b3IiICsgdG9rZW4u
dGV4dCwgW3BhcnNlVGVybSgpXSk7CisgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIi0i
KSkgeworICAgICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgICAgIHJldHVybiB0b2tlbjsKKyAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0g
cGFyc2VUZXJtKCk7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0
LCBbbWF5YmVFcnJvcl0pOworICAgICAgICB9CiAgICAgICAgIGxldCBsZWZ0ID0gcGFyc2VUZXJt
KCk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIi4iKSkKLSAgICAgICAgICAgIGxl
ZnQgPSBuZXcgRG90RXhwcmVzc2lvbih0b2tlbiwgbGVmdCwgY29uc3VtZUtpbmQoImlkZW50aWZp
ZXIiKS50ZXh0KTsKKyAgICAgICAgaWYgKGxlZnQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICByZXR1cm4gbGVmdDsKKyAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgi
LiIpKSB7CisgICAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuOworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3Ig
PSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CisgICAgICAgICAgICBsZWZ0ID0gbmV3IERvdEV4cHJlc3Npb24odG9rZW4sIGxlZnQsIG1h
eWJlRXJyb3IudGV4dCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgfQot
ICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VUeXBlQXJndW1lbnRzKCkKICAgICB7CiAgICAgICAg
IGlmICghdGVzdCgiPCIpKQogICAgICAgICAgICAgcmV0dXJuIFtdOwogCiAgICAgICAgIGxldCBy
ZXN1bHQgPSBbXTsKLSAgICAgICAgY29uc3VtZSgiPCIpOworICAgICAgICBsZXQgYnJhY2tldFJl
c3VsdCA9IGNvbnN1bWUoIjwiKTsKKyAgICAgICAgaWYgKGJyYWNrZXRSZXN1bHQgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gYnJhY2tldFJlc3VsdDsKICAgICAg
ICAgd2hpbGUgKCF0ZXN0KCI+IikpIHsKICAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgZm9y
IGEgY29uc3RleHByIG9yIHR5cGUgY2FuIHN5bnRhY3RpY2FsbHkgb3ZlcmxhcCBpbiB0aGUgc2lu
Z2xlCiAgICAgICAgICAgICAvLyBpZGVudGlmaWVyIGNhc2UuIExldCdzIGNvbnNpZGVyIHRoZSBw
b3NzaWJpbGl0aWVzOgpAQCAtMjE2LDcgKzI3OSwxMSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFt
LCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAg
ICAvLyBjb25zdGV4cHIsIGFuZCB3ZSBjYW4gZmlndXJlIG91dCBpbiB0aGUgY2hlY2tlciB3aGlj
aCBpdCBpcy4KICAgICAgICAgICAgIGxldCB0eXBlUmVmID0gbGV4ZXIuYmFja3RyYWNraW5nU2Nv
cGUoKCkgPT4gewogICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBjb25zdW1lS2luZCgiaWRl
bnRpZmllciIpOwotICAgICAgICAgICAgICAgIGFzc2VydE5leHQoIiwiLCAiPiIsICI+PiIpOwor
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgbGV0IG1heWJl
RXJyb3IgPSBhc3NlcnROZXh0KCIsIiwgIj4iLCAiPj4iKTsKKyAgICAgICAgICAgICAgICBpZiAo
bWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBUeXBlUmVmKHJl
c3VsdCwgcmVzdWx0LnRleHQpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBpZiAodHlw
ZVJlZikKQEAgLTIyNCw5MCArMjkxLDE0NCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmln
aW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgICAgICBsZXQgY29uc3RleHByID0gbGV4ZXIuYmFja3RyYWNraW5nU2Nv
cGUoKCkgPT4gewogICAgICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcGFyc2VDb25zdGV4
cHIoKTsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0TmV4dCgiLCIsICI+IiwgIj4+Iik7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgICAg
ICBsZXQgbWF5YmVFcnJvciA9IGFzc2VydE5leHQoIiwiLCAiPiIsICI+PiIpOworICAgICAgICAg
ICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgIGlm
IChjb25zdGV4cHIpCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbnN0ZXhwcik7
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaChw
YXJzZVR5cGUoKSk7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IGxldCBtYXliZUVycm9yID0gcGFyc2VUeXBlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICht
YXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKG1h
eWJlRXJyb3IpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IGlmICghdHJ5Q29uc3VtZSgiLCIpKQorICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSB0cnlD
b25zdW1lKCIsIik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAg
IGlmICghbWF5YmVFcnJvcikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAg
ICAgICBjb25zdW1lRW5kT2ZUeXBlQXJncygpOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNv
bnN1bWVFbmRPZlR5cGVBcmdzKCk7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VUeXBlKCkKICAg
ICB7CiAgICAgICAgIGxldCB0b2tlbjsKICAgICAgICAgbGV0IGFkZHJlc3NTcGFjZTsKICAgICAg
ICAgbGV0IGFkZHJlc3NTcGFjZUNvbnN1bWVkID0gZmFsc2U7Ci0gICAgICAgIGlmICh0b2tlbiA9
IHRyeUNvbnN1bWUoLi4uYWRkcmVzc1NwYWNlcykpCisgICAgICAgIGlmICh0b2tlbiA9IHRyeUNv
bnN1bWUoLi4uYWRkcmVzc1NwYWNlcykpIHsKKyAgICAgICAgICAgIGlmICh0b2tlbiBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAg
ICAgICBhZGRyZXNzU3BhY2UgPSB0b2tlbi50ZXh0OwotICAgICAgICAKKyAgICAgICAgfQorCiAg
ICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgaWYg
KG5hbWUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmFtZTsK
ICAgICAgICAgbGV0IHR5cGVBcmd1bWVudHMgPSBwYXJzZVR5cGVBcmd1bWVudHMoKTsKKyAgICAg
ICAgaWYgKHR5cGVBcmd1bWVudHMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gdHlwZUFyZ3VtZW50czsKICAgICAgICAgbGV0IHR5cGUgPSBuZXcgVHlwZVJlZihu
YW1lLCBuYW1lLnRleHQsIHR5cGVBcmd1bWVudHMpOwotICAgICAgICAKKwogICAgICAgICBmdW5j
dGlvbiBnZXRBZGRyZXNzU3BhY2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBhZGRyZXNzU3Bh
Y2VDb25zdW1lZCA9IHRydWU7CiAgICAgICAgICAgICBpZiAoYWRkcmVzc1NwYWNlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBhZGRyZXNzU3BhY2U7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3Vt
ZSguLi5hZGRyZXNzU3BhY2VzKS50ZXh0OworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBj
b25zdW1lKC4uLmFkZHJlc3NTcGFjZXMpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvci50ZXh0OwogICAgICAgICB9Ci0gICAgICAg
IAorCiAgICAgICAgIGNvbnN0IHR5cGVDb25zdHJ1Y3RvclN0YWNrID0gWyBdOwogCiAgICAgICAg
IGZvciAobGV0IHRva2VuOyB0b2tlbiA9IHRyeUNvbnN1bWUoIioiLCAiWyIpOykgeworICAgICAg
ICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAg
IHJldHVybiB0b2tlbjsKICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICIqIikgewogICAg
ICAgICAgICAgICAgIC8vIExpa2V3aXNlLCB0aGUgYWRkcmVzcyBzcGFjZSBtdXN0IGJlIHBhcnNl
ZCBiZWZvcmUgcGFyc2luZyBjb250aW51ZXMuCiAgICAgICAgICAgICAgICAgY29uc3QgYWRkcmVz
c1NwYWNlID0gZ2V0QWRkcmVzc1NwYWNlKCk7CisgICAgICAgICAgICAgICAgaWYgKGFkZHJlc3NT
cGFjZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGFkZHJlc3NTcGFjZTsKICAgICAgICAgICAgICAgICB0eXBlQ29uc3RydWN0b3JTdGFjay51bnNo
aWZ0KHR5cGUgPT4gbmV3IFB0clR5cGUodG9rZW4sIGFkZHJlc3NTcGFjZSwgdHlwZSkpOwogICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAo
dHJ5Q29uc3VtZSgiXSIpKSB7CisgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IHRyeUNvbnN1
bWUoIl0iKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAgICAgaWYg
KG1heWJlRXJyb3IpIHsKICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzU3BhY2UgPSBnZXRB
ZGRyZXNzU3BhY2UoKTsKKyAgICAgICAgICAgICAgICBpZiAoYWRkcmVzc1NwYWNlIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWRkcmVzc1NwYWNl
OwogICAgICAgICAgICAgICAgIHR5cGVDb25zdHJ1Y3RvclN0YWNrLnVuc2hpZnQodHlwZSA9PiBu
ZXcgQXJyYXlSZWZUeXBlKHRva2VuLCBhZGRyZXNzU3BhY2UsIHR5cGUpKTsKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgY29uc3QgbGVuZ3Ro
RXhwciA9IHBhcnNlQ29uc3RleHByKCk7CisgICAgICAgICAgICBpZiAobGVuZ3RoRXhwciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVuZ3RoRXhwcgog
ICAgICAgICAgICAgdHlwZUNvbnN0cnVjdG9yU3RhY2sudW5zaGlmdCh0eXBlID0+IG5ldyBBcnJh
eVR5cGUodG9rZW4sIHR5cGUsIGxlbmd0aEV4cHIpKTsKLSAgICAgICAgICAgIGNvbnN1bWUoIl0i
KTsKKyAgICAgICAgICAgIGxldCBicmFja2V0UmVzdWx0ID0gY29uc3VtZSgiXSIpOworICAgICAg
ICAgICAgaWYgKGJyYWNrZXRSZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGJyYWNrZXRSZXN1bHQ7CiAgICAgICAgIH0KIAogICAgICAgICBmb3Ig
KGxldCBjb25zdHJ1Y3RvciBvZiB0eXBlQ29uc3RydWN0b3JTdGFjaykKICAgICAgICAgICAgIHR5
cGUgPSBjb25zdHJ1Y3Rvcih0eXBlKTsKIAogICAgICAgICBpZiAoYWRkcmVzc1NwYWNlICYmICFh
ZGRyZXNzU3BhY2VDb25zdW1lZCkKLSAgICAgICAgICAgIGxleGVyLmZhaWwoIkFkZHJlc3Mgc3Bh
Y2Ugc3BlY2lmaWVkIGZvciB0eXBlIHRoYXQgZG9lcyBub3QgbmVlZCBhZGRyZXNzIHNwYWNlIik7
CisgICAgICAgICAgICByZXR1cm4gbGV4ZXIuZmFpbCgiQWRkcmVzcyBzcGFjZSBzcGVjaWZpZWQg
Zm9yIHR5cGUgdGhhdCBkb2VzIG5vdCBuZWVkIGFkZHJlc3Mgc3BhY2UiKTsKIAogICAgICAgICBy
ZXR1cm4gdHlwZTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVR5cGVEZWYoKQog
ICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoInR5cGVkZWYiKTsKKyAgICAgICAg
aWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBv
cmlnaW4KICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQ7
Ci0gICAgICAgIGNvbnN1bWUoIj0iKTsKKyAgICAgICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjb25zdW1lKCI9Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCB0
eXBlID0gcGFyc2VUeXBlKCk7Ci0gICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKHR5
cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAg
ICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcgog
ICAgICAgICByZXR1cm4gbmV3IFR5cGVEZWYob3JpZ2luLCBuYW1lLCB0eXBlKTsKICAgICB9Ci0g
ICAgCisKICAgICBmdW5jdGlvbiBnZW5lcmljUGFyc2VMZWZ0KHRleHRzLCBuZXh0UGFyc2VyLCBj
b25zdHJ1Y3RvcikKICAgICB7CiAgICAgICAgIGxldCBsZWZ0ID0gbmV4dFBhcnNlcigpOworICAg
ICAgICBpZiAobGVmdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVy
biBsZWZ0OwogICAgICAgICBsZXQgdG9rZW47Ci0gICAgICAgIHdoaWxlICh0b2tlbiA9IHRyeUNv
bnN1bWUoLi4udGV4dHMpKQotICAgICAgICAgICAgbGVmdCA9IGNvbnN0cnVjdG9yKHRva2VuLCBs
ZWZ0LCBuZXh0UGFyc2VyKCkpOworICAgICAgICB3aGlsZSAodG9rZW4gPSB0cnlDb25zdW1lKC4u
LnRleHRzKSkgeworICAgICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjsKKyAgICAgICAgICAgIGxldCBtYXliZUVy
cm9yID0gbmV4dFBhcnNlcigpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAg
ICAgICAgICBsZWZ0ID0gY29uc3RydWN0b3IodG9rZW4sIGxlZnQsIG1heWJlRXJyb3IpOworICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBsZWZ0OwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9u
IHBhcnNlTGVmdE9wZXJhdG9yQ2FsbCh0ZXh0cywgbmV4dFBhcnNlcikKICAgICB7CiAgICAgICAg
IHJldHVybiBnZW5lcmljUGFyc2VMZWZ0KApAQCAtMzE1LDI0ICs0MzYsMzUgQEAgZnVuY3Rpb24g
cGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0
KQogICAgICAgICAgICAgKHRva2VuLCBsZWZ0LCByaWdodCkgPT4KICAgICAgICAgICAgICAgICBu
ZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0LCBbbGVmdCwg
cmlnaHRdKSk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VDYWxsRXhwcmVzc2lv
bigpCiAgICAgewogICAgICAgICBsZXQgcGFyc2VBcmd1bWVudHMgPSBmdW5jdGlvbihvcmlnaW4s
IGNhbGxOYW1lKSB7CiAgICAgICAgICAgICBsZXQgYXJndW1lbnRMaXN0ID0gW107CiAgICAgICAg
ICAgICB3aGlsZSAoIXRlc3QoIikiKSkgewogICAgICAgICAgICAgICAgIGxldCBhcmd1bWVudCA9
IHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJn
dW1lbnQ7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRMaXN0LnB1c2goYXJndW1lbnQpOwotICAg
ICAgICAgICAgICAgIGlmICghdHJ5Q29uc3VtZSgiLCIpKQorICAgICAgICAgICAgICAgIGxldCBt
YXliZUVycm9yID0gdHJ5Q29uc3VtZSgiLCIpOworICAgICAgICAgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bWF5YmVFcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAoIW1heWJlRXJyb3IpCiAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY29uc3VtZSgiKSIp
OworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgICAg
ICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4cHJlc3Np
b24ob3JpZ2luLCBjYWxsTmFtZSwgYXJndW1lbnRMaXN0KTsKICAgICAgICAgfQogCiAgICAgICAg
IGxldCBuYW1lID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUoKCkgPT4gewogICAgICAgICAgICAg
bGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOwotICAgICAgICAgICAgY29uc3Vt
ZSgiKCIpOworICAgICAgICAgICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9
IGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICAg
ICAgcmV0dXJuIG5hbWU7CiAgICAgICAgIH0pOwogCkBAIC0zNDEsNDAgKzQ3Myw1MiBAQCBmdW5j
dGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQs
IHRleHQpCiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbGV0IHJldHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKLSAgICAgICAgICAgIGNvbnN1
bWUoIigiKTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5UeXBlIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5UeXBlOworICAgICAgICAgICAgbGV0
IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwYXJzZUFyZ3VtZW50cyhyZXR1cm5UeXBlLm9y
aWdpbiwgIm9wZXJhdG9yIGNhc3QiKTsKICAgICAgICAgICAgIHJlc3VsdC5zZXRDYXN0RGF0YShy
ZXR1cm5UeXBlKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgCisKICAgICBmdW5jdGlvbiBpc0NhbGxFeHByZXNzaW9uKCkKICAgICB7CiAgICAgICAg
IHJldHVybiBsZXhlci50ZXN0U2NvcGUoKCkgPT4gewotICAgICAgICAgICAgICAgIGNvbnN1bWVL
aW5kKCJpZGVudGlmaWVyIik7Ci0gICAgICAgICAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAg
ICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAg
ICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgICAgICAgICAgbWF5
YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJl
RXJyb3I7CiAgICAgICAgICAgICB9KSB8fCBsZXhlci50ZXN0U2NvcGUoKCkgPT4gewotICAgICAg
ICAgICAgICAgIHBhcnNlVHlwZSgpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUoIigiKTsKKyAg
ICAgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IHBhcnNlVHlwZSgpOworICAgICAgICAgICAg
ICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgICAgICBtYXliZUVycm9yID0g
Y29uc3VtZSgiKCIpOworICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAg
ICAgICAgICAgIH0pOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIGVtaXRJbmNyZW1lbnQo
dG9rZW4sIG9sZCwgZXh0cmFBcmcpCiAgICAgewogICAgICAgICBsZXQgYXJncyA9IFtvbGRdOwog
ICAgICAgICBpZiAoZXh0cmFBcmcpCiAgICAgICAgICAgICBhcmdzLnB1c2goZXh0cmFBcmcpOwot
ICAgICAgICAKKwogICAgICAgICBsZXQgbmFtZSA9ICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0Owog
ICAgICAgICBpZiAoLz0kLy50ZXN0KG5hbWUpKQogICAgICAgICAgICAgbmFtZSA9IFJlZ0V4cC5s
ZWZ0Q29udGV4dDsKLSAgICAgICAgCisKICAgICAgICAgaWYgKG5hbWUgPT0gIm9wZXJhdG9yIikK
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBuYW1lOiAiICsgbmFtZSk7Ci0g
ICAgICAgIAorCiAgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sIG5hbWUs
IGFyZ3MpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIGZpbmlzaFBhcnNpbmdQb3N0SW5j
cmVtZW50KHRva2VuLCBsZWZ0KQogICAgIHsKICAgICAgICAgbGV0IHJlYWRNb2RpZnlXcml0ZSA9
IG5ldyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKHRva2VuLCBsZWZ0KTsKQEAgLTM4MiwxMSAr
NTI2LDEzIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGlu
ZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgcmVhZE1vZGlmeVdyaXRlLnJlc3VsdEV4cCA9
IHJlYWRNb2RpZnlXcml0ZS5vbGRWYWx1ZVJlZigpOwogICAgICAgICByZXR1cm4gcmVhZE1vZGlm
eVdyaXRlOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlU3VmZml4T3BlcmF0b3Io
bGVmdCwgYWNjZXB0YWJsZU9wZXJhdG9ycykKICAgICB7CiAgICAgICAgIGxldCB0b2tlbjsKICAg
ICAgICAgd2hpbGUgKHRva2VuID0gdHJ5Q29uc3VtZSguLi5hY2NlcHRhYmxlT3BlcmF0b3JzKSkg
eworICAgICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgICAgIHN3aXRjaCAodG9rZW4udGV4dCkg
ewogICAgICAgICAgICAgY2FzZSAiKysiOgogICAgICAgICAgICAgY2FzZSAiLS0iOgpAQCAtMzk1
LDExICs1NDEsMTggQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5k
LCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgY2FzZSAiLT4iOgogICAgICAg
ICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICItPiIpCiAgICAgICAgICAgICAgICAgICAgIGxl
ZnQgPSBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9uKHRva2VuLCBsZWZ0KTsKLSAgICAgICAgICAg
ICAgICBsZWZ0ID0gbmV3IERvdEV4cHJlc3Npb24odG9rZW4sIGxlZnQsIGNvbnN1bWVLaW5kKCJp
ZGVudGlmaWVyIikudGV4dCk7CisgICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25z
dW1lS2luZCgiaWRlbnRpZmllciIpCisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVy
cm9yOworICAgICAgICAgICAgICAgIGxlZnQgPSBuZXcgRG90RXhwcmVzc2lvbih0b2tlbiwgbGVm
dCwgbWF5YmVFcnJvci50ZXh0KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgIlsiOiB7CiAgICAgICAgICAgICAgICAgbGV0IGluZGV4ID0gcGFyc2VFeHByZXNzaW9u
KCk7Ci0gICAgICAgICAgICAgICAgY29uc3VtZSgiXSIpOworICAgICAgICAgICAgICAgIGlmIChp
bmRleCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGluZGV4OworICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiXSIpOwor
ICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgICAgICBs
ZWZ0ID0gbmV3IEluZGV4RXhwcmVzc2lvbih0b2tlbiwgbGVmdCwgaW5kZXgpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNDA5LDIxICs1NjIsMjkgQEAgZnVuY3Rp
b24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0
ZXh0KQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBsZWZ0OwogICAgIH0KLSAgICAKKwogICAg
IGZ1bmN0aW9uIHBhcnNlUG9zc2libGVTdWZmaXgoKQogICAgIHsKICAgICAgICAgbGV0IGFjY2Vw
dGFibGVPcGVyYXRvcnMgPSBbIisrIiwgIi0tIiwgIi4iLCAiLT4iLCAiWyJdOwogICAgICAgICBs
ZXQgbGltaXRlZE9wZXJhdG9ycyA9IFsiLiIsICItPiIsICJbIl07CiAgICAgICAgIGxldCBsZWZ0
OwotICAgICAgICBpZiAoaXNDYWxsRXhwcmVzc2lvbigpKSB7CisgICAgICAgIGxldCBtYXliZUVy
cm9yID0gaXNDYWxsRXhwcmVzc2lvbigpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAg
ICBpZiAobWF5YmVFcnJvcikgewogICAgICAgICAgICAgbGVmdCA9IHBhcnNlQ2FsbEV4cHJlc3Np
b24oKTsKKyAgICAgICAgICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgICAgIHJldHVybiBsZWZ0OwogICAgICAgICAgICAgYWNjZXB0YWJsZU9wZXJhdG9y
cyA9IGxpbWl0ZWRPcGVyYXRvcnM7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgbGVmdCA9IHBhcnNlVGVybSgpOwotICAgICAgICAKKyAgICAgICAgICAgIGlm
IChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBs
ZWZ0OworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHBhcnNlU3VmZml4T3BlcmF0b3IobGVm
dCwgYWNjZXB0YWJsZU9wZXJhdG9ycyk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gZmlu
aXNoUGFyc2luZ1ByZUluY3JlbWVudCh0b2tlbiwgbGVmdCwgZXh0cmFBcmcpCiAgICAgewogICAg
ICAgICBsZXQgcmVhZE1vZGlmeVdyaXRlID0gbmV3IFJlYWRNb2RpZnlXcml0ZUV4cHJlc3Npb24o
dG9rZW4sIGxlZnQpOwpAQCAtNDMxLDU0ICs1OTIsODYgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3Jh
bSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBy
ZWFkTW9kaWZ5V3JpdGUucmVzdWx0RXhwID0gcmVhZE1vZGlmeVdyaXRlLm5ld1ZhbHVlUmVmKCk7
CiAgICAgICAgIHJldHVybiByZWFkTW9kaWZ5V3JpdGU7CiAgICAgfQotICAgIAorCiAgICAgZnVu
Y3Rpb24gcGFyc2VQcmVJbmNyZW1lbnQoKQogICAgIHsKICAgICAgICAgbGV0IHRva2VuID0gY29u
c3VtZSgiKysiLCAiLS0iKTsKKyAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICBsZXQgbGVmdCA9IHBhcnNl
UG9zc2libGVQcmVmaXgoKTsKKyAgICAgICAgaWYgKGxlZnQgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gbGVmdDsKICAgICAgICAgcmV0dXJuIGZpbmlzaFBhcnNp
bmdQcmVJbmNyZW1lbnQodG9rZW4sIGxlZnQpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9u
IHBhcnNlUG9zc2libGVQcmVmaXgoKQogICAgIHsKICAgICAgICAgbGV0IHRva2VuOwogICAgICAg
ICBpZiAodGVzdCgiKysiLCAiLS0iKSkKICAgICAgICAgICAgIHJldHVybiBwYXJzZVByZUluY3Jl
bWVudCgpOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIrIiwgIi0iLCAifiIpKQot
ICAgICAgICAgICAgcmV0dXJuIG5ldyBDYWxsRXhwcmVzc2lvbih0b2tlbiwgIm9wZXJhdG9yIiAr
IHRva2VuLnRleHQsIFtwYXJzZVBvc3NpYmxlUHJlZml4KCldKTsKLSAgICAgICAgaWYgKHRva2Vu
ID0gdHJ5Q29uc3VtZSgiKiIpKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBEZXJlZmVyZW5jZUV4
cHJlc3Npb24odG9rZW4sIHBhcnNlUG9zc2libGVQcmVmaXgoKSk7Ci0gICAgICAgIGlmICh0b2tl
biA9IHRyeUNvbnN1bWUoIiYiKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgTWFrZVB0ckV4cHJl
c3Npb24odG9rZW4sIHBhcnNlUG9zc2libGVQcmVmaXgoKSk7Ci0gICAgICAgIGlmICh0b2tlbiA9
IHRyeUNvbnN1bWUoIkAiKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgTWFrZUFycmF5UmVmRXhw
cmVzc2lvbih0b2tlbiwgcGFyc2VQb3NzaWJsZVByZWZpeCgpKTsKKyAgICAgICAgaWYgKHRva2Vu
ID0gdHJ5Q29uc3VtZSgiKyIsICItIiwgIn4iKSkgeworICAgICAgICAgICAgaWYgKHRva2VuIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjsKKyAg
ICAgICAgICAgIGxldCBtYXliZUVycm9yID0gcGFyc2VQb3NzaWJsZVByZWZpeCgpOworICAgICAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gbmV3IENhbGxFeHBy
ZXNzaW9uKHRva2VuLCAib3BlcmF0b3IiICsgdG9rZW4udGV4dCwgW21heWJlRXJyb3JdKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIqIikpIHsKKyAgICAgICAg
ICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdG9rZW47CisgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IHBhcnNlUG9zc2libGVQ
cmVmaXgoKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAgICAgcmV0
dXJuIG5ldyBEZXJlZmVyZW5jZUV4cHJlc3Npb24odG9rZW4sIG1heWJlRXJyb3IpOworICAgICAg
ICB9CisgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIiYiKSkgeworICAgICAgICAgICAg
aWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVy
biB0b2tlbjsKKyAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gcGFyc2VQb3NzaWJsZVByZWZp
eCgpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgICAgICByZXR1cm4g
bmV3IE1ha2VQdHJFeHByZXNzaW9uKHRva2VuLCBtYXliZUVycm9yKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJAIikpIHsKKyAgICAgICAgICAgIGlmICh0b2tl
biBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47
CisgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IHBhcnNlUG9zc2libGVQcmVmaXgoKTsKKyAg
ICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAgICAgcmV0dXJuIG5ldyBNYWtl
QXJyYXlSZWZFeHByZXNzaW9uKHRva2VuLCBtYXliZUVycm9yKTsKKyAgICAgICAgfQogICAgICAg
ICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIhIikpIHsKKyAgICAgICAgICAgIGlmICh0b2tlbiBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gdG9rZW47CiAg
ICAgICAgICAgICBsZXQgcmVtYWluZGVyID0gcGFyc2VQb3NzaWJsZVByZWZpeCgpOworICAgICAg
ICAgICAgaWYgKHJlbWFpbmRlciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVtYWluZGVyOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBMb2dpY2FsTm90
KHRva2VuLCBuZXcgQ2FsbEV4cHJlc3Npb24ocmVtYWluZGVyLm9yaWdpbiwgImJvb2wiLCBbcmVt
YWluZGVyXSkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwYXJzZVBvc3NpYmxlU3VmZml4
KCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZVByb2R1Y3QoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9wZXJhdG9yQ2FsbChbIioiLCAiLyIsICIl
Il0sIHBhcnNlUG9zc2libGVQcmVmaXgpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBh
cnNlUG9zc2libGVTdW0oKQogICAgIHsKICAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9wZXJhdG9y
Q2FsbChbIisiLCAiLSJdLCBwYXJzZVBvc3NpYmxlUHJvZHVjdCk7CiAgICAgfQotICAgIAorCiAg
ICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZVNoaWZ0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBw
YXJzZUxlZnRPcGVyYXRvckNhbGwoWyI8PCIsICI+PiJdLCBwYXJzZVBvc3NpYmxlU3VtKTsKICAg
ICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEluZXF1YWxp
dHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9wZXJhdG9yQ2FsbChbIjwiLCAi
PiIsICI8PSIsICI+PSJdLCBwYXJzZVBvc3NpYmxlU2hpZnQpOwogICAgIH0KLSAgICAKKwogICAg
IGZ1bmN0aW9uIHBhcnNlUG9zc2libGVSZWxhdGlvbmFsRXF1YWxpdHkoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGdlbmVyaWNQYXJzZUxlZnQoCkBAIC00OTAsODEgKzY4MywxMTQgQEAgZnVuY3Rp
b24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0
ZXh0KQogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9KTsKICAg
ICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlQml0d2lzZUFuZCgpCiAgICAg
ewogICAgICAgICByZXR1cm4gcGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsiJiJdLCBwYXJzZVBvc3Np
YmxlUmVsYXRpb25hbEVxdWFsaXR5KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJz
ZVBvc3NpYmxlQml0d2lzZVhvcigpCiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VMZWZ0T3Bl
cmF0b3JDYWxsKFsiXiJdLCBwYXJzZVBvc3NpYmxlQml0d2lzZUFuZCk7CiAgICAgfQotICAgIAor
CiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZUJpdHdpc2VPcigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gcGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsifCJdLCBwYXJzZVBvc3NpYmxlQml0d2lzZVhv
cik7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VMZWZ0TG9naWNhbEV4cHJlc3Np
b24odGV4dHMsIG5leHRQYXJzZXIpCiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJpY1BhcnNl
TGVmdCgKICAgICAgICAgICAgIHRleHRzLCBuZXh0UGFyc2VyLAogICAgICAgICAgICAgKHRva2Vu
LCBsZWZ0LCByaWdodCkgPT4gbmV3IExvZ2ljYWxFeHByZXNzaW9uKHRva2VuLCB0b2tlbi50ZXh0
LCBuZXcgQ2FsbEV4cHJlc3Npb24obGVmdC5vcmlnaW4sICJib29sIiwgW2xlZnRdKSwgbmV3IENh
bGxFeHByZXNzaW9uKHJpZ2h0Lm9yaWdpbiwgImJvb2wiLCBbcmlnaHRdKSkpOwogICAgIH0KLSAg
ICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUG9zc2libGVMb2dpY2FsQW5kKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBwYXJzZUxlZnRMb2dpY2FsRXhwcmVzc2lvbihbIiYmIl0sIHBhcnNlUG9zc2li
bGVCaXR3aXNlT3IpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUG9zc2libGVM
b2dpY2FsT3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHBhcnNlTGVmdExvZ2ljYWxFeHByZXNz
aW9uKFsifHwiXSwgcGFyc2VQb3NzaWJsZUxvZ2ljYWxBbmQpOwogICAgIH0KLSAgICAKKwogICAg
IGZ1bmN0aW9uIHBhcnNlUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwoKQogICAgIHsKICAgICAg
ICAgbGV0IHByZWRpY2F0ZSA9IHBhcnNlUG9zc2libGVMb2dpY2FsT3IoKTsKICAgICAgICAgbGV0
IG9wZXJhdG9yID0gdHJ5Q29uc3VtZSgiPyIpOworICAgICAgICBpZiAob3BlcmF0b3IgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0b3I7CiAgICAgICAg
IGlmICghb3BlcmF0b3IpCiAgICAgICAgICAgICByZXR1cm4gcHJlZGljYXRlOwogICAgICAgICBs
ZXQgYm9keUV4cHJlc3Npb24gPSBwYXJzZVBvc3NpYmxlQXNzaWdubWVudCgpOwotICAgICAgICBj
b25zdW1lKCI6Iik7CisgICAgICAgIGlmIChib2R5RXhwcmVzc2lvbiBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5RXhwcmVzc2lvbjsKKyAgICAgICAgbGV0
IG1heWJlRXJyb3IgPSBjb25zdW1lKCI6Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAg
ICAgIGxldCBlbHNlRXhwcmVzc2lvbiA9IHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCk7CisgICAg
ICAgIGlmIChlbHNlRXhwcmVzc2lvbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgIHJldHVybiBlbHNlRXhwcmVzc2lvbjsKICAgICAgICAgcmV0dXJuIG5ldyBUZXJuYXJ5RXhw
cmVzc2lvbihvcGVyYXRvciwgcHJlZGljYXRlLCBib2R5RXhwcmVzc2lvbiwgZWxzZUV4cHJlc3Np
b24pOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUG9zc2libGVBc3NpZ25tZW50
KG1vZGUpCiAgICAgewogICAgICAgICBsZXQgbGhzID0gcGFyc2VQb3NzaWJsZVRlcm5hcnlDb25k
aXRpb25hbCgpOworICAgICAgICBpZiAobGhzIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIGxoczsKICAgICAgICAgbGV0IG9wZXJhdG9yID0gdHJ5Q29uc3VtZSgi
PSIsICIrPSIsICItPSIsICIqPSIsICIvPSIsICIlPSIsICJePSIsICJ8PSIsICImPSIpOworICAg
ICAgICBpZiAob3BlcmF0b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gb3BlcmF0b3I7CiAgICAgICAgIGlmICghb3BlcmF0b3IpIHsKICAgICAgICAgICAgIGlm
IChtb2RlID09ICJyZXF1aXJlZCIpCi0gICAgICAgICAgICAgICAgbGV4ZXIuZmFpbCgiRXhwZWN0
ZWQgYXNzaWdubWVudDogIiArIGxleGVyLl90ZXh0LnN1YnN0cmluZyhsZXhlci5faW5kZXgpKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbGV4ZXIuZmFpbCgiRXhwZWN0ZWQgYXNzaWdubWVudDog
IiArIGxleGVyLl90ZXh0LnN1YnN0cmluZyhsZXhlci5faW5kZXgpKTsKICAgICAgICAgICAgIHJl
dHVybiBsaHM7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG9wZXJhdG9yLnRleHQgPT0gIj0iKQot
ICAgICAgICAgICAgcmV0dXJuIG5ldyBBc3NpZ25tZW50KG9wZXJhdG9yLCBsaHMsIHBhcnNlUG9z
c2libGVBc3NpZ25tZW50KCkpOwotICAgICAgICByZXR1cm4gZmluaXNoUGFyc2luZ1ByZUluY3Jl
bWVudChvcGVyYXRvciwgbGhzLCBwYXJzZVBvc3NpYmxlQXNzaWdubWVudCgpKTsKKyAgICAgICAg
aWYgKG9wZXJhdG9yLnRleHQgPT0gIj0iKSB7CisgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9
IHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCk7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQXNzaWdubWVudChvcGVyYXRvciwgbGhzLCBtYXli
ZUVycm9yKTsKKyAgICAgICAgfQorICAgICAgICBsZXQgbWF5YmVFcnJvciA9IHBhcnNlUG9zc2li
bGVBc3NpZ25tZW50KCk7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgIHJldHVybiBm
aW5pc2hQYXJzaW5nUHJlSW5jcmVtZW50KG9wZXJhdG9yLCBsaHMsIG1heWJlRXJyb3IpOwogICAg
IH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlQXNzaWdubWVudCgpCiAgICAgewogICAgICAg
ICByZXR1cm4gcGFyc2VQb3NzaWJsZUFzc2lnbm1lbnQoInJlcXVpcmVkIik7CiAgICAgfQotICAg
IAorCiAgICAgZnVuY3Rpb24gcGFyc2VQb3N0SW5jcmVtZW50KCkKICAgICB7Ci0gICAgICAgIGxl
dCBsZWZ0ID0gcGFyc2VTdWZmaXhPcGVyYXRvcihwYXJzZVRlcm0oKSwgIi4iLCAiLT4iLCAiWyIp
OworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IHBhcnNlVGVybSgpOworICAgICAgICBpZiAobWF5
YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXli
ZUVycm9yOworICAgICAgICBsZXQgbGVmdCA9IHBhcnNlU3VmZml4T3BlcmF0b3IobWF5YmVFcnJv
ciwgIi4iLCAiLT4iLCAiWyIpOworICAgICAgICBpZiAobGVmdCBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBsZWZ0OwogICAgICAgICBsZXQgdG9rZW4gPSBjb25z
dW1lKCIrKyIsICItLSIpOworICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgIHJldHVybiBmaW5pc2hQYXJz
aW5nUG9zdEluY3JlbWVudCh0b2tlbiwgbGVmdCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rp
b24gcGFyc2VFZmZlY3RmdWxFeHByZXNzaW9uKCkKICAgICB7Ci0gICAgICAgIGlmIChpc0NhbGxF
eHByZXNzaW9uKCkpCi0gICAgICAgICAgICByZXR1cm4gcGFyc2VDYWxsRXhwcmVzc2lvbigpOwor
ICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGlzQ2FsbEV4cHJlc3Npb24oKTsKKyAgICAgICAgaWYg
KG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
bWF5YmVFcnJvcjsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IpIHsKKyAgICAgICAgICAgIG1heWJl
RXJyb3IgPSBwYXJzZUNhbGxFeHByZXNzaW9uKCk7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJv
ciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICB9CiAgICAgICAg
IGxldCBwcmVJbmNyZW1lbnQgPSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZShwYXJzZVByZUluY3Jl
bWVudCk7CiAgICAgICAgIGlmIChwcmVJbmNyZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gcHJl
SW5jcmVtZW50OwpAQCAtNTczLDIwICs3OTksMjkgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwg
b3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAg
cmV0dXJuIHBvc3RJbmNyZW1lbnQ7CiAgICAgICAgIHJldHVybiBwYXJzZUFzc2lnbm1lbnQoKTsK
ICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBnZW5lcmljUGFyc2VDb21tYUV4cHJlc3Npb24o
ZmluYWxFeHByZXNzaW9uUGFyc2VyKQogICAgIHsKICAgICAgICAgbGV0IGxpc3QgPSBbXTsKICAg
ICAgICAgbGV0IG9yaWdpbiA9IGxleGVyLnBlZWsoKTsKICAgICAgICAgaWYgKCFvcmlnaW4pCi0g
ICAgICAgICAgICBsZXhlci5mYWlsKCJVbmV4cGVjdGVkIGVuZCBvZiBmaWxlIik7CisgICAgICAg
ICAgICByZXR1cm4gbGV4ZXIuZmFpbCgiVW5leHBlY3RlZCBlbmQgb2YgZmlsZSIpOworICAgICAg
ICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IG9yaWdpbjsKICAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgbGV0IGVmZmVjdGZ1bEV4
cHJlc3Npb24gPSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7Ci0gICAgICAgICAgICAg
ICAgcGFyc2VFZmZlY3RmdWxFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgY29uc3VtZSgi
LCIpOworICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gcGFyc2VFZmZlY3RmdWxFeHBy
ZXNzaW9uKCk7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNlZW1zIHdyb25nLiBXZSBkb24ndCByZXR1cm4gdGhl
IGVmZmVjdGZ1bCBleHByZXNzaW9uIHdlIGp1c3QgcGFyc2VkLgorICAgICAgICAgICAgICAgIG1h
eWJlRXJyb3IgPSBjb25zdW1lKCIsIik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXli
ZUVycm9yOwogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBpZiAoIWVmZmVjdGZ1bEV4cHJl
c3Npb24pIHsKICAgICAgICAgICAgICAgICBsZXQgZmluYWwgPSBmaW5hbEV4cHJlc3Npb25QYXJz
ZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoZmluYWwgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaW5hbDsKICAgICAgICAgICAgICAgICBsaXN0
LnB1c2goZmluYWwpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAt
NTk4LDE1MiArODMzLDI4MCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdp
bktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICByZXR1cm4gbGlzdFsw
XTsKICAgICAgICAgcmV0dXJuIG5ldyBDb21tYUV4cHJlc3Npb24ob3JpZ2luLCBsaXN0KTsKICAg
ICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUNvbW1hRXhwcmVzc2lvbigpCiAgICAgewog
ICAgICAgICByZXR1cm4gZ2VuZXJpY1BhcnNlQ29tbWFFeHByZXNzaW9uKHBhcnNlUG9zc2libGVB
c3NpZ25tZW50KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24o
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHBhcnNlQ29tbWFFeHByZXNzaW9uKCk7CiAgICAgfQot
ICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VFZmZlY3RmdWxTdGF0ZW1lbnQoKQogICAgIHsKICAg
ICAgICAgbGV0IHJlc3VsdCA9IGdlbmVyaWNQYXJzZUNvbW1hRXhwcmVzc2lvbihwYXJzZUVmZmVj
dGZ1bEV4cHJlc3Npb24pOwotICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGxldCBtYXli
ZUVycm9yID0gY29uc3VtZSgiOyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUmV0dXJuKCkK
ICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJyZXR1cm4iKTsKLSAgICAgICAg
aWYgKHRyeUNvbnN1bWUoIjsiKSkKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CisgICAgICAgIGxldCBtYXliZUVy
cm9yID0gdHJ5Q29uc3VtZSgiOyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICBp
ZiAobWF5YmVFcnJvcikKICAgICAgICAgICAgIHJldHVybiBuZXcgUmV0dXJuKG9yaWdpbiwgbnVs
bCk7CiAgICAgICAgIGxldCBleHByZXNzaW9uID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAg
IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKGV4cHJlc3Npb24gaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gZXhwcmVzc2lvbjsKKyAgICAgICAgbWF5YmVFcnJv
ciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJu
IG5ldyBSZXR1cm4ob3JpZ2luLCBleHByZXNzaW9uKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5j
dGlvbiBwYXJzZUJyZWFrKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJi
cmVhayIpOwotICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAgICAgICBs
ZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAg
ICAgICAgcmV0dXJuIG5ldyBCcmVhayhvcmlnaW4pOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0
aW9uIHBhcnNlQ29udGludWUoKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUo
ImNvbnRpbnVlIik7Ci0gICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CisgICAg
ICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOworICAgICAgICBpZiAobWF5YmVFcnJv
ciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9y
OwogICAgICAgICByZXR1cm4gbmV3IENvbnRpbnVlKG9yaWdpbik7CiAgICAgfQogCiAgICAgZnVu
Y3Rpb24gcGFyc2VJZlN0YXRlbWVudCgpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29u
c3VtZSgiaWYiKTsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAob3JpZ2luIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAg
ICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CiAgICAgICAgIGxldCBjb25kaXRpb25hbCA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBj
b25zdW1lKCIpIik7CisgICAgICAgIGlmIChjb25kaXRpb25hbCBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBjb25kaXRpb25hbDsKKyAgICAgICAgbWF5YmVFcnJv
ciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IGJv
ZHkgPSBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5OwogICAgICAgICBsZXQgZWxzZUJvZHk7
Ci0gICAgICAgIGlmICh0cnlDb25zdW1lKCJlbHNlIikpCisgICAgICAgIG1heWJlRXJyb3IgPSB0
cnlDb25zdW1lKCJlbHNlIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgIGlmICht
YXliZUVycm9yKSB7CiAgICAgICAgICAgICBlbHNlQm9keSA9IHBhcnNlU3RhdGVtZW50KCk7Cisg
ICAgICAgICAgICBpZiAoZWxzZUJvZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGVsc2VCb2R5OworICAgICAgICB9CiAgICAgICAgIHJldHVybiBuZXcg
SWZTdGF0ZW1lbnQob3JpZ2luLCBuZXcgQ2FsbEV4cHJlc3Npb24oY29uZGl0aW9uYWwub3JpZ2lu
LCAiYm9vbCIsIFtjb25kaXRpb25hbF0pLCBib2R5LCBlbHNlQm9keSk7CiAgICAgfQogCiAgICAg
ZnVuY3Rpb24gcGFyc2VXaGlsZSgpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3Vt
ZSgid2hpbGUiKTsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAob3JpZ2luIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAg
ICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CiAgICAgICAgIGxldCBjb25kaXRpb25hbCA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBj
b25zdW1lKCIpIik7CisgICAgICAgIGlmIChjb25kaXRpb25hbCBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBjb25kaXRpb25hbDsKKyAgICAgICAgbWF5YmVFcnJv
ciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IGJv
ZHkgPSBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5OwogICAgICAgICByZXR1cm4gbmV3IFdo
aWxlTG9vcChvcmlnaW4sIG5ldyBDYWxsRXhwcmVzc2lvbihjb25kaXRpb25hbC5vcmlnaW4sICJi
b29sIiwgW2NvbmRpdGlvbmFsXSksIGJvZHkpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNl
Rm9yKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJmb3IiKTsKLSAgICAg
ICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3Ig
PSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBpbml0
aWFsaXphdGlvbjsKLSAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjsiKSkKKyAgICAgICAgbWF5YmVF
cnJvciA9IHRyeUNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAg
aWYgKG1heWJlRXJyb3IpCiAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiA9IHVuZGVmaW5lZDsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpbml0aWFsaXphdGlvbiA9IGxleGVyLmJhY2t0
cmFja2luZ1Njb3BlKHBhcnNlVmFyaWFibGVEZWNscyk7Ci0gICAgICAgICAgICBpZiAoIWluaXRp
YWxpemF0aW9uKQorICAgICAgICAgICAgaWYgKGluaXRpYWxpemF0aW9uIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBpbml0aWFsaXphdGlvbjsKKyAgICAg
ICAgICAgIGlmICghaW5pdGlhbGl6YXRpb24pIHsKICAgICAgICAgICAgICAgICBpbml0aWFsaXph
dGlvbiA9IHBhcnNlRWZmZWN0ZnVsU3RhdGVtZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKGlu
aXRpYWxpemF0aW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaW5pdGlhbGl6YXRpb247CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAg
ICAgbGV0IGNvbmRpdGlvbiA9IHRyeUNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKGNvbmRpdGlv
biBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBjb25kaXRpb247
CiAgICAgICAgIGlmIChjb25kaXRpb24pCiAgICAgICAgICAgICBjb25kaXRpb24gPSB1bmRlZmlu
ZWQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29uZGl0aW9uID0gcGFyc2VFeHByZXNz
aW9uKCk7Ci0gICAgICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgICAgICBpZiAoY29uZGl0
aW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBjb25k
aXRpb247CisgICAgICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOworICAgICAgICAg
ICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICBjb25kaXRpb24gPSBuZXcgQ2FsbEV4
cHJlc3Npb24oY29uZGl0aW9uLm9yaWdpbiwgImJvb2wiLCBbY29uZGl0aW9uXSk7CiAgICAgICAg
IH0KICAgICAgICAgbGV0IGluY3JlbWVudDsKLSAgICAgICAgaWYgKHRyeUNvbnN1bWUoIikiKSkK
KyAgICAgICAgbWF5YmVFcnJvciA9IHRyeUNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IpCiAgICAgICAgICAgICBpbmNyZW1lbnQgPSB1
bmRlZmluZWQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW5jcmVtZW50ID0gcGFyc2VF
eHByZXNzaW9uKCk7Ci0gICAgICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgICAgICBpZiAo
aW5jcmVtZW50IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVy
biBpbmNyZW1lbnQ7CisgICAgICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKSIpOworICAg
ICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgbGV0IGJvZHkg
PSBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5OwogICAgICAgICByZXR1cm4gbmV3IEZvckxv
b3Aob3JpZ2luLCBpbml0aWFsaXphdGlvbiwgY29uZGl0aW9uLCBpbmNyZW1lbnQsIGJvZHkpOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRG8oKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdp
biA9IGNvbnN1bWUoImRvIik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOwogICAgICAgICBsZXQgYm9keSA9IHBh
cnNlU3RhdGVtZW50KCk7Ci0gICAgICAgIGNvbnN1bWUoIndoaWxlIik7Ci0gICAgICAgIGNvbnN1
bWUoIigiKTsKKyAgICAgICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gYm9keTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJ3
aGlsZSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICBtYXliZUVycm9yID0gY29u
c3VtZSgiKCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgY29uZGl0aW9u
YWwgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBp
ZiAoY29uZGl0aW9uYWwgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1
cm4gY29uZGl0aW9uYWw7CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAg
ICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBuZXcgRG9XaGlsZUxvb3Aob3JpZ2lu
LCBib2R5LCBuZXcgQ2FsbEV4cHJlc3Npb24oY29uZGl0aW9uYWwub3JpZ2luLCAiYm9vbCIsIFtj
b25kaXRpb25hbF0pKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxl
RGVjbHMoKQogICAgIHsKICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAg
aWYgKHR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdHlw
ZTsKICAgICAgICAgbGV0IGxpc3QgPSBbXTsKKyAgICAgICAgbGV0IHJlcGVhdDsKICAgICAgICAg
ZG8gewogICAgICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOwot
ICAgICAgICAgICAgbGV0IGluaXRpYWxpemVyID0gdHJ5Q29uc3VtZSgiPSIpID8gcGFyc2VFeHBy
ZXNzaW9uKCkgOiBudWxsOworICAgICAgICAgICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgICAgICBsZXQgbWF5
YmVFcnJvciA9IHRyeUNvbnN1bWUoIj0iKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9y
OworICAgICAgICAgICAgbGV0IGluaXRpYWxpemVyID0gbWF5YmVFcnJvciA/IHBhcnNlRXhwcmVz
c2lvbigpIDogbnVsbDsKKyAgICAgICAgICAgIGlmIChpbml0aWFsaXplciBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZXI7CiAgICAgICAg
ICAgICBsaXN0LnB1c2gobmV3IFZhcmlhYmxlRGVjbChuYW1lLCBuYW1lLnRleHQsIHR5cGUsIGlu
aXRpYWxpemVyKSk7Ci0gICAgICAgIH0gd2hpbGUgKGNvbnN1bWUoIiwiLCAiOyIpLnRleHQgPT0g
IiwiKTsKKyAgICAgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCIsIiwgIjsiKTsKKyAgICAg
ICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAgICAgcmVwZWF0ID0gbWF5YmVFcnJv
ci50ZXh0ID09ICIsIjsKKyAgICAgICAgfSB3aGlsZSAocmVwZWF0KTsKICAgICAgICAgcmV0dXJu
IG5ldyBDb21tYUV4cHJlc3Npb24odHlwZS5vcmlnaW4sIGxpc3QpOwogICAgIH0KLSAgICAKKwog
ICAgIGZ1bmN0aW9uIHBhcnNlU3dpdGNoQ2FzZSgpCiAgICAgewogICAgICAgICBsZXQgdG9rZW4g
PSBjb25zdW1lKCJkZWZhdWx0IiwgImNhc2UiKTsKKyAgICAgICAgaWYgKHRva2VuIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICBsZXQg
dmFsdWU7Ci0gICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJjYXNlIikKKyAgICAgICAgaWYgKHRv
a2VuLnRleHQgPT0gImNhc2UiKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlQ29uc3RleHBy
KCk7Ci0gICAgICAgIGNvbnN1bWUoIjoiKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1N5bnRheEVycm9yOwor
ICAgICAgICB9CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOiIpOworICAgICAg
ICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJl
dHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgYm9keSA9IHBhcnNlQmxvY2tCb2R5KCJ9Iiwg
ImRlZmF1bHQiLCAiY2FzZSIpOworICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5OwogICAgICAgICByZXR1cm4gbmV3IFN3aXRj
aENhc2UodG9rZW4sIHZhbHVlLCBib2R5KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBw
YXJzZVN3aXRjaFN0YXRlbWVudCgpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3Vt
ZSgic3dpdGNoIik7Ci0gICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CisgICAg
ICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICBpZiAobWF5YmVFcnJv
ciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9y
OwogICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgY29uc3Vt
ZSgiKSIpOwotICAgICAgICBjb25zdW1lKCJ7Iik7CisgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgbWF5
YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAg
bWF5YmVFcnJvciA9IGNvbnN1bWUoInsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAg
ICAgbGV0IHJlc3VsdCA9IG5ldyBTd2l0Y2hTdGF0ZW1lbnQob3JpZ2luLCB2YWx1ZSk7Ci0gICAg
ICAgIHdoaWxlICghdHJ5Q29uc3VtZSgifSIpKQotICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJz
ZVN3aXRjaENhc2UoKSk7CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBtYXli
ZUVycm9yID0gdHJ5Q29uc3VtZSgifSIpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvcikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIG1heWJlRXJyb3IgPSBwYXJzZVN3aXRjaENhc2UoKTsKKyAgICAgICAgICAgIGlm
IChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJl
dHVybiBtYXliZUVycm9yOworICAgICAgICAgICAgcmVzdWx0LmFkZChtYXliZUVycm9yKTsKKyAg
ICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0
aW9uIHBhcnNlU3RhdGVtZW50KCkKICAgICB7CiAgICAgICAgIGxldCB0b2tlbiA9IGxleGVyLnBl
ZWsoKTsKKyAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAiOyIpIHsKICAg
ICAgICAgICAgIGxleGVyLm5leHQoKTsKICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtNzY2
LDg1ICsxMTI5LDE0NCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktp
bmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VTd2l0
Y2hTdGF0ZW1lbnQoKTsKICAgICAgICAgaWYgKHRva2VuLnRleHQgPT0gInRyYXAiKSB7CiAgICAg
ICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgidHJhcCIpOwotICAgICAgICAgICAgY29uc3Vt
ZSgiOyIpOworICAgICAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAgICAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAg
ICAgICAgIHJldHVybiBuZXcgVHJhcFN0YXRlbWVudChvcmlnaW4pOwogICAgICAgICB9CiAgICAg
ICAgIGlmICh0b2tlbi50ZXh0ID09ICJ7IikKICAgICAgICAgICAgIHJldHVybiBwYXJzZUJsb2Nr
KCk7CiAgICAgICAgIGxldCB2YXJpYWJsZURlY2wgPSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZShw
YXJzZVZhcmlhYmxlRGVjbHMpOworICAgICAgICBpZiAodmFyaWFibGVEZWNsIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHZhcmlhYmxlRGVjbDsKICAgICAgICAg
aWYgKHZhcmlhYmxlRGVjbCkKICAgICAgICAgICAgIHJldHVybiB2YXJpYWJsZURlY2w7CiAgICAg
ICAgIHJldHVybiBwYXJzZUVmZmVjdGZ1bFN0YXRlbWVudCgpOwogICAgIH0KLSAgICAKKwogICAg
IGZ1bmN0aW9uIHBhcnNlQmxvY2tCb2R5KC4uLnRlcm1pbmF0b3JzKQogICAgIHsKICAgICAgICAg
bGV0IGJsb2NrID0gbmV3IEJsb2NrKG9yaWdpbik7CiAgICAgICAgIHdoaWxlICghdGVzdCguLi50
ZXJtaW5hdG9ycykpIHsKICAgICAgICAgICAgIGxldCBzdGF0ZW1lbnQgPSBwYXJzZVN0YXRlbWVu
dCgpOworICAgICAgICAgICAgaWYgKHN0YXRlbWVudCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGVtZW50OwogICAgICAgICAgICAgaWYgKHN0YXRl
bWVudCkKICAgICAgICAgICAgICAgICBibG9jay5hZGQoc3RhdGVtZW50KTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm4gYmxvY2s7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VC
bG9jaygpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgieyIpOworICAgICAg
ICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IG9yaWdpbjsKICAgICAgICAgbGV0IGJsb2NrID0gcGFyc2VCbG9ja0JvZHkoIn0iKTsKLSAgICAg
ICAgY29uc3VtZSgifSIpOworICAgICAgICBpZiAoYmxvY2sgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gYmxvY2s7CisgICAgICAgIGxldCBtYXliZUVycm9yID0g
Y29uc3VtZSgifSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gYmxv
Y2s7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQYXJhbWV0ZXIoKQogICAgIHsK
ICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdHlwZTsKICAgICAgICAgbGV0
IG5hbWUgPSB0cnlDb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICBpZiAobmFtZSBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAg
ICByZXR1cm4gbmV3IEZ1bmNQYXJhbWV0ZXIodHlwZS5vcmlnaW4sIG5hbWUgPyBuYW1lLnRleHQg
OiBudWxsLCB0eXBlKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBhcmFtZXRl
cnMoKQogICAgIHsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBsZXQgbWF5YmVFcnJv
ciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IHBh
cmFtZXRlcnMgPSBbXTsKICAgICAgICAgd2hpbGUgKCF0ZXN0KCIpIikpIHsKLSAgICAgICAgICAg
IHBhcmFtZXRlcnMucHVzaChwYXJzZVBhcmFtZXRlcigpKTsKLSAgICAgICAgICAgIGlmICghdHJ5
Q29uc3VtZSgiLCIpKQorICAgICAgICAgICAgbWF5YmVFcnJvciA9IHBhcnNlUGFyYW1ldGVyKCk7
CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMu
cHVzaChtYXliZUVycm9yKTsKKyAgICAgICAgICAgIG1heWJlRXJyb3IgPSB0cnlDb25zdW1lKCIs
Iik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgIGlmICghbWF5
YmVFcnJvcikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjb25z
dW1lKCIpIik7CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgIGlm
IChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzOwogICAgIH0KLSAgICAKKwog
ICAgIGZ1bmN0aW9uIHBhcnNlRnVuY05hbWUoKQogICAgIHsKLSAgICAgICAgaWYgKHRyeUNvbnN1
bWUoIm9wZXJhdG9yIikpIHsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSB0cnlDb25zdW1lKCJv
cGVyYXRvciIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICBpZiAobWF5YmVFcnJv
cikgewogICAgICAgICAgICAgbGV0IHRva2VuID0gY29uc3VtZSgiKyIsICItIiwgIioiLCAiLyIs
ICIlIiwgIl4iLCAiJiIsICJ8IiwgIjwiLCAiPiIsICI8PSIsICI+PSIsICI9PSIsICIrKyIsICIt
LSIsICIuIiwgIn4iLCAiPDwiLCAiPj4iLCAiWyIpOworICAgICAgICAgICAgaWYgKHRva2VuIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAg
ICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICImIikgewotICAgICAgICAgICAgICAgIGlmICh0
cnlDb25zdW1lKCJbIikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3VtZSgiXSIpOworICAg
ICAgICAgICAgICAgIG1heWJlRXJyb3IgPSB0cnlDb25zdW1lKCJbIik7CisgICAgICAgICAgICAg
ICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJv
cikgeworICAgICAgICAgICAgICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiXSIpOworICAg
ICAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gIm9wZXJhdG9yJltdIjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIi4iKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICJvcGVyYXRvciYuIiArIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dDsKKyAgICAgICAg
ICAgICAgICBtYXliZUVycm9yID0gdHJ5Q29uc3VtZSgiLiIpOworICAgICAgICAgICAgICAgIGlm
IChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvcikgewor
ICAgICAgICAgICAgICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIi
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuICJvcGVyYXRvciYuIiArIG1heWJlRXJyb3IudGV4dDsKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuICJvcGVyYXRvciYiOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHRva2VuLnRleHQgPT0gIi4iKSB7Ci0gICAgICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9ICJvcGVyYXRvci4iICsgY29uc3VtZUtpbmQoImlkZW50aWZp
ZXIiKS50ZXh0OwotICAgICAgICAgICAgICAgIGlmICh0cnlDb25zdW1lKCI9IikpCisgICAgICAg
ICAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAg
ICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAgICAgICAgIGxldCByZXN1
bHQgPSAib3BlcmF0b3IuIiArIG1heWJlRXJyb3IudGV4dDsKKyAgICAgICAgICAgICAgICBtYXli
ZUVycm9yID0gdHJ5Q29uc3VtZSgiPSIpOworICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5
YmVFcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvcikKICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ICs9ICI9IjsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHRva2VuLnRleHQgPT0gIlsiKSB7Ci0gICAgICAg
ICAgICAgICAgY29uc3VtZSgiXSIpOworICAgICAgICAgICAgICAgIG1heWJlRXJyb3IgPSBjb25z
dW1lKCJdIik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yCiAgICAgICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9ICJvcGVyYXRvcltdIjsKLSAgICAgICAgICAgICAgICBpZiAo
dHJ5Q29uc3VtZSgiPSIpKQorICAgICAgICAgICAgICAgIG1heWJlRXJyb3IgPSB0cnlDb25zdW1l
KCI9Iik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAg
ICAgICAgIGlmIChtYXliZUVycm9yKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIj0i
OwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICByZXR1cm4gIm9wZXJhdG9yIiArIHRva2VuLnRleHQ7CiAgICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dDsKKyAgICAgICAgbWF5YmVFcnJv
ciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7Cisg
ICAgICAgIHJldHVybiBtYXliZUVycm9yLnRleHQ7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFy
c2VGdW5jRGVjbCgpCkBAIC04NTUsMTMwICsxMjc3LDI0MSBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAg
IGxldCBpc0Nhc3Q7CiAgICAgICAgIGxldCBzaGFkZXJUeXBlOwogICAgICAgICBsZXQgb3BlcmF0
b3JUb2tlbiA9IHRyeUNvbnN1bWUoIm9wZXJhdG9yIik7CisgICAgICAgIGlmIChvcGVyYXRvclRv
a2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdG9y
VG9rZW47CiAgICAgICAgIGlmIChvcGVyYXRvclRva2VuKSB7CiAgICAgICAgICAgICBvcmlnaW4g
PSBvcGVyYXRvclRva2VuOwogICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOwor
ICAgICAgICAgICAgaWYgKHJldHVyblR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJldHVyblR5cGU7CiAgICAgICAgICAgICBuYW1lID0gIm9wZXJh
dG9yIGNhc3QiOwogICAgICAgICAgICAgaXNDYXN0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIHNoYWRlclR5cGUgPSB0cnlDb25zdW1lKCJ2ZXJ0ZXgiLCAiZnJhZ21lbnQi
KTsKKyAgICAgICAgICAgIGlmIChzaGFkZXJUeXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgICAgIHJldHVybiBzaGFkZXJUeXBlOwogICAgICAgICAgICAgcmV0dXJuVHlw
ZSA9IHBhcnNlVHlwZSgpOworICAgICAgICAgICAgaWYgKHJldHVyblR5cGUgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVyblR5cGU7CiAgICAgICAg
ICAgICBpZiAoc2hhZGVyVHlwZSkgewogICAgICAgICAgICAgICAgIG9yaWdpbiA9IHNoYWRlclR5
cGU7CiAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZSA9IHNoYWRlclR5cGUudGV4dDsKICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG9yaWdpbiA9IHJldHVyblR5cGUub3JpZ2lu
OwogICAgICAgICAgICAgbmFtZSA9IHBhcnNlRnVuY05hbWUoKTsKKyAgICAgICAgICAgIGlmIChu
YW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBuYW1l
OwogICAgICAgICAgICAgaXNDYXN0ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgbGV0IHBh
cmFtZXRlcnMgPSBwYXJzZVBhcmFtZXRlcnMoKTsKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyczsKICAg
ICAgICAgcmV0dXJuIG5ldyBGdW5jKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVy
cywgaXNDYXN0LCBzaGFkZXJUeXBlKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJz
ZUZ1bmNEZWYoKQogICAgIHsKICAgICAgICAgbGV0IGZ1bmMgPSBwYXJzZUZ1bmNEZWNsKCk7Cisg
ICAgICAgIGlmIChmdW5jIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIGZ1bmM7CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VCbG9jaygpOworICAgICAgICBpZiAo
Ym9keSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5Owog
ICAgICAgICByZXR1cm4gbmV3IEZ1bmNEZWYoZnVuYy5vcmlnaW4sIGZ1bmMubmFtZSwgZnVuYy5y
ZXR1cm5UeXBlLCBmdW5jLnBhcmFtZXRlcnMsIGJvZHksIGZ1bmMuaXNDYXN0LCBmdW5jLnNoYWRl
clR5cGUpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlRmllbGQoKQogICAgIHsK
ICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdHlwZTsKICAgICAgICAgbGV0
IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOwotICAgICAgICBjb25zdW1lKCI7Iik7
CisgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIG5hbWU7CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOworICAg
ICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gbmV3IEZpZWxkKG5hbWUsIG5hbWUu
dGV4dCwgdHlwZSk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VTdHJ1Y3RUeXBl
KCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJzdHJ1Y3QiKTsKKyAgICAg
ICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVy
biBvcmlnaW47CiAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50
ZXh0OworICAgICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgIHJldHVybiBuYW1lOwogICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFN0cnVjdFR5cGUob3Jp
Z2luLCBuYW1lKTsKLSAgICAgICAgY29uc3VtZSgieyIpOwotICAgICAgICB3aGlsZSAoIXRyeUNv
bnN1bWUoIn0iKSkKLSAgICAgICAgICAgIHJlc3VsdC5hZGQocGFyc2VGaWVsZCgpKTsKKyAgICAg
ICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJ7Iik7CisgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBtYXliZUVycm9yID0gdHJ5Q29u
c3VtZSgifSIpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgICAgICBp
ZiAobWF5YmVFcnJvcikKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG1heWJl
RXJyb3IgPSBwYXJzZUZpZWxkKCk7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAg
ICAgICAgICAgIHJlc3VsdC5hZGQobWF5YmVFcnJvcik7CisgICAgICAgIH0KICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZU5hdGl2ZUZ1bmMo
KQogICAgIHsKICAgICAgICAgbGV0IGZ1bmMgPSBwYXJzZUZ1bmNEZWNsKCk7Ci0gICAgICAgIGNv
bnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKGZ1bmMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICByZXR1cm4gZnVuYzsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1l
KCI7Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBuZXcgTmF0aXZl
RnVuYyhmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUsIGZ1bmMucGFyYW1l
dGVycywgZnVuYy5pc0Nhc3QsIGZ1bmMuc2hhZGVyVHlwZSk7CiAgICAgfQotICAgIAorCiAgICAg
ZnVuY3Rpb24gcGFyc2VOYXRpdmUoKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1
bWUoIm5hdGl2ZSIpOwotICAgICAgICBpZiAodHJ5Q29uc3VtZSgidHlwZWRlZiIpKSB7CisgICAg
ICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1
cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IHRyeUNvbnN1bWUoInR5cGVkZWYi
KTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IpIHsKICAg
ICAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAg
ICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJl
dHVybiBuYW1lOwogICAgICAgICAgICAgbGV0IGFyZ3MgPSBwYXJzZVR5cGVBcmd1bWVudHMoKTsK
LSAgICAgICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgICAgIGlmIChhcmdzIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBhcmdzOworICAgICAgICAg
ICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVy
cm9yOwogICAgICAgICAgICAgcmV0dXJuIE5hdGl2ZVR5cGUuY3JlYXRlKG9yaWdpbiwgbmFtZS50
ZXh0LCBhcmdzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcGFyc2VOYXRpdmVGdW5jKCk7
CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VSZXN0cmljdGVkRnVuY0RlZigpCiAg
ICAgewotICAgICAgICBjb25zdW1lKCJyZXN0cmljdGVkIik7CisgICAgICAgIGxldCBtYXliZUVy
cm9yID0gY29uc3VtZSgicmVzdHJpY3RlZCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAg
ICAgICBsZXQgcmVzdWx0OwotICAgICAgICBpZiAodHJ5Q29uc3VtZSgibmF0aXZlIikpCisgICAg
ICAgIG1heWJlRXJyb3IgPSB0cnlDb25zdW1lKCJuYXRpdmUiKTsKKyAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IpIHsKICAgICAgICAgICAgIHJlc3VsdCA9IHBh
cnNlTmF0aXZlRnVuYygpOwotICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAocmVzdWx0IGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICByZXN1bHQgPSBwYXJzZUZ1bmNEZWYoKTsKKyAg
ICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQogICAgICAgICByZXN1bHQuaXNSZXN0cmlj
dGVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKICAgICBm
dW5jdGlvbiBwYXJzZUVudW1NZW1iZXIoKQogICAgIHsKICAgICAgICAgbGV0IG5hbWUgPSBjb25z
dW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICBsZXQgdmFsdWUgPSBu
dWxsOwotICAgICAgICBpZiAodHJ5Q29uc3VtZSgiPSIpKQorICAgICAgICBsZXQgbWF5YmVFcnJv
ciA9IHRyeUNvbnN1bWUoIj0iKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgaWYg
KG1heWJlRXJyb3IpIHsKICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VDb25zdGV4cHIoKTsKKyAg
ICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5ldyBFbnVtTWVt
YmVyKG5hbWUsIG5hbWUudGV4dCwgdmFsdWUpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9u
IHBhcnNlRW51bVR5cGUoKQogICAgIHsKLSAgICAgICAgY29uc3VtZSgiZW51bSIpOworICAgICAg
ICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoImVudW0iKTsKKyAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cgogICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAg
IGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG5h
bWU7CiAgICAgICAgIGxldCBiYXNlVHlwZTsKLSAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjoiKSkK
KyAgICAgICAgbWF5YmVFcnJvciA9IHRyeUNvbnN1bWUoIjoiKTsKKyAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IpIHsKICAgICAgICAgICAgIGJhc2VUeXBlID0g
cGFyc2VUeXBlKCk7CisgICAgICAgICAgICBpZiAoYmFzZVR5cGUgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2VUeXBlOworICAgICAgICB9CiAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgIGJhc2VUeXBlID0gbmV3IFR5cGVSZWYobmFtZSwgImludCIp
OwotICAgICAgICBjb25zdW1lKCJ7Iik7CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCJ7
Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCByZXN1bHQgPSBuZXcgRW51
bVR5cGUobmFtZSwgbmFtZS50ZXh0LCBiYXNlVHlwZSk7CiAgICAgICAgIHdoaWxlICghdGVzdCgi
fSIpKSB7Ci0gICAgICAgICAgICByZXN1bHQuYWRkKHBhcnNlRW51bU1lbWJlcigpKTsKLSAgICAg
ICAgICAgIGlmICghdHJ5Q29uc3VtZSgiLCIpKQorICAgICAgICAgICAgbWF5YmVFcnJvciA9IHBh
cnNlRW51bU1lbWJlcigpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAg
ICAgICByZXN1bHQuYWRkKG1heWJlRXJyb3IpOworICAgICAgICAgICAgbWF5YmVFcnJvciA9IHRy
eUNvbnN1bWUoIiwiKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAg
ICAgaWYgKCFtYXliZUVycm9yKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIGNvbnN1bWUoIn0iKTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIn0iKTsK
KyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0g
ICAgCisKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGxldCB0b2tlbiA9IGxleGVyLnBlZWsoKTsK
KyAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
dGhyb3cgdG9rZW47CiAgICAgICAgIGlmICghdG9rZW4pCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICI7IikKICAgICAgICAgICAgIGxleGVyLm5leHQoKTsK
LSAgICAgICAgZWxzZSBpZiAodG9rZW4udGV4dCA9PSAidHlwZWRlZiIpCi0gICAgICAgICAgICBw
cm9ncmFtLmFkZChwYXJzZVR5cGVEZWYoKSk7Ci0gICAgICAgIGVsc2UgaWYgKG9yaWdpbktpbmQg
PT0gIm5hdGl2ZSIgJiYgdG9rZW4udGV4dCA9PSAibmF0aXZlIikKLSAgICAgICAgICAgIHByb2dy
YW0uYWRkKHBhcnNlTmF0aXZlKCkpOwotICAgICAgICBlbHNlIGlmIChvcmlnaW5LaW5kID09ICJu
YXRpdmUiICYmIHRva2VuLnRleHQgPT0gInJlc3RyaWN0ZWQiKQotICAgICAgICAgICAgcHJvZ3Jh
bS5hZGQocGFyc2VSZXN0cmljdGVkRnVuY0RlZigpKTsKLSAgICAgICAgZWxzZSBpZiAodG9rZW4u
dGV4dCA9PSAic3RydWN0IikKLSAgICAgICAgICAgIHByb2dyYW0uYWRkKHBhcnNlU3RydWN0VHlw
ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAodG9rZW4udGV4dCA9PSAiZW51bSIpCi0gICAgICAgICAg
ICBwcm9ncmFtLmFkZChwYXJzZUVudW1UeXBlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBwcm9ncmFtLmFkZChwYXJzZUZ1bmNEZWYoKSk7CisgICAgICAgIGVsc2UgaWYgKHRva2VuLnRl
eHQgPT0gInR5cGVkZWYiKSB7CisgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IHBhcnNlVHlw
ZURlZigpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICAgICAgdGhyb3cgbWF5YmVFcnJvcjsKKyAgICAgICAgICAgIHByb2dy
YW0uYWRkKG1heWJlRXJyb3IpOworICAgICAgICB9IGVsc2UgaWYgKG9yaWdpbktpbmQgPT0gIm5h
dGl2ZSIgJiYgdG9rZW4udGV4dCA9PSAibmF0aXZlIikgeworICAgICAgICAgICAgbGV0IG1heWJl
RXJyb3IgPSBwYXJzZU5hdGl2ZSgpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgdGhyb3cgbWF5YmVFcnJvcjsKKyAg
ICAgICAgICAgIHByb2dyYW0uYWRkKG1heWJlRXJyb3IpOworICAgICAgICB9IGVsc2UgaWYgKG9y
aWdpbktpbmQgPT0gIm5hdGl2ZSIgJiYgdG9rZW4udGV4dCA9PSAicmVzdHJpY3RlZCIpIHsKKyAg
ICAgICAgICAgIGxldCBtYXliZUVycm9yID0gcGFyc2VSZXN0cmljdGVkRnVuY0RlZigpOworICAg
ICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgdGhyb3cgbWF5YmVFcnJvcjsKKyAgICAgICAgICAgIHByb2dyYW0uYWRkKG1heWJl
RXJyb3IpOworICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnRleHQgPT0gInN0cnVjdCIpIHsKKyAg
ICAgICAgICAgIGxldCBtYXliZUVycm9yID0gcGFyc2VTdHJ1Y3RUeXBlKCk7CisgICAgICAgICAg
ICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICB0aHJvdyBtYXliZUVycm9yOworICAgICAgICAgICAgcHJvZ3JhbS5hZGQobWF5YmVFcnJvcik7
CisgICAgICAgIH0gZWxzZSBpZiAodG9rZW4udGV4dCA9PSAiZW51bSIpIHsKKyAgICAgICAgICAg
IGxldCBtYXliZUVycm9yID0gcGFyc2VFbnVtVHlwZSgpOworICAgICAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgdGhyb3cgbWF5
YmVFcnJvcjsKKyAgICAgICAgICAgIHByb2dyYW0uYWRkKG1heWJlRXJyb3IpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBwYXJzZUZ1bmNEZWYoKTsKKyAg
ICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgICAgIHRocm93IG1heWJlRXJyb3I7CisgICAgICAgICAgICBwcm9ncmFtLmFkZChtYXli
ZUVycm9yKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348955</attachid>
            <date>2018-09-05 13:06:32 -0700</date>
            <delta_ts>2018-09-05 15:12:21 -0700</delta_ts>
            <desc>Second draft</desc>
            <filename>bug-189014-20180905130631.patch</filename>
            <type>text/plain</type>
            <size>52541</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Njc0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2U2ZTQ1MmNiMTgyYzY5ZDBkNTc1ZjU0MWMyYWJjYzQz
ODI3MzljZC4uYmVkNDkzMDgyMDMzZDI3ZjhmZmYzN2VmMzQ2OTVlNWNlN2U1MDVhMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3
IEBACisyMDE4LTA5LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBUaGUgcGFyc2VyIGlzIHRvbyBzbG93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qczoK
KyAgICAgICAgKExleGVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qczoKKyAgICAgICAgKGZhaWwpOgorICAgICAgICAoYmFja3RyYWNraW5nU2NvcGUpOgorICAg
ICAgICAodGVzdFNjb3BlKToKKyAgICAgICAgKGdlbmVyaWNDb25zdW1lKToKKyAgICAgICAgKGNv
bnN1bWVFbmRPZlR5cGVBcmdzKToKKyAgICAgICAgKHBhcnNlVGVybSk6CisgICAgICAgIChwYXJz
ZUNvbnN0ZXhwcik6CisgICAgICAgIChwYXJzZVR5cGVBcmd1bWVudHMpOgorICAgICAgICAocGFy
c2VUeXBlLmdldEFkZHJlc3NTcGFjZSk6CisgICAgICAgIChwYXJzZVR5cGUpOgorICAgICAgICAo
cGFyc2VUeXBlRGVmKToKKyAgICAgICAgKGdlbmVyaWNQYXJzZUxlZnQpOgorICAgICAgICAocGFy
c2VDYWxsRXhwcmVzc2lvbi5sZXQucGFyc2VBcmd1bWVudHMpOgorICAgICAgICAoaXNDYWxsRXhw
cmVzc2lvbik6CisgICAgICAgIChwYXJzZVN1ZmZpeE9wZXJhdG9yKToKKyAgICAgICAgKHBhcnNl
UG9zc2libGVTdWZmaXgpOgorICAgICAgICAocGFyc2VQcmVJbmNyZW1lbnQpOgorICAgICAgICAo
cGFyc2VQb3NzaWJsZVByZWZpeCk6CisgICAgICAgIChwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRp
dGlvbmFsKToKKyAgICAgICAgKHBhcnNlUG9zc2libGVBc3NpZ25tZW50KToKKyAgICAgICAgKHBh
cnNlUG9zdEluY3JlbWVudCk6CisgICAgICAgIChwYXJzZUVmZmVjdGZ1bEV4cHJlc3Npb24pOgor
ICAgICAgICAoZ2VuZXJpY1BhcnNlQ29tbWFFeHByZXNzaW9uKToKKyAgICAgICAgKHBhcnNlRWZm
ZWN0ZnVsU3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNlUmV0dXJuKToKKyAgICAgICAgKHBhcnNl
QnJlYWspOgorICAgICAgICAocGFyc2VDb250aW51ZSk6CisgICAgICAgIChwYXJzZUlmU3RhdGVt
ZW50KToKKyAgICAgICAgKHBhcnNlV2hpbGUpOgorICAgICAgICAocGFyc2VGb3IpOgorICAgICAg
ICAocGFyc2VEbyk6CisgICAgICAgIChwYXJzZVZhcmlhYmxlRGVjbHMpOgorICAgICAgICAocGFy
c2VTd2l0Y2hDYXNlKToKKyAgICAgICAgKHBhcnNlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAg
KHBhcnNlU3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNlQmxvY2tCb2R5KToKKyAgICAgICAgKHBh
cnNlQmxvY2spOgorICAgICAgICAocGFyc2VQYXJhbWV0ZXIpOgorICAgICAgICAocGFyc2VGdW5j
TmFtZSk6CisgICAgICAgIChwYXJzZUZ1bmNEZWNsKToKKyAgICAgICAgKHBhcnNlRnVuY0RlZik6
CisgICAgICAgIChwYXJzZUZpZWxkKToKKyAgICAgICAgKHBhcnNlU3RydWN0VHlwZSk6CisgICAg
ICAgIChwYXJzZU5hdGl2ZUZ1bmMpOgorICAgICAgICAocGFyc2VOYXRpdmUpOgorICAgICAgICAo
cGFyc2VSZXN0cmljdGVkRnVuY0RlZik6CisgICAgICAgIChwYXJzZUVudW1NZW1iZXIpOgorICAg
ICAgICAocGFyc2VFbnVtVHlwZSk6CisgICAgICAgIChwYXJzZSk6CisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbDoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UZXN0Lmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5k
ZXguaHRtbDoKKwogMjAxOC0wOS0wNSAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMDk0NzApOiBFZGl0aW5nSGlzdG9yeSBmb2xkZXIg
aXMgbWlzc2luZyBpbiBFZGl0aW5nSGlzdG9yeSBYY29kZSBwcm9qZWN0CmRpZmYgLS1naXQgYS9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggOTBmYzg0MTNhNjUxMjI0NDZiZjAxZmQ5NjdkZDY1MTM5
YTBmODdlOS4uMGE1ODg1MTYxYTQwM2QwOWFlYWExZmU1ZTEwNDNhZGZlNjEyNTY1ZiAxMDA2NDQK
LS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpAQCAtMTY4LDYgKzE2OCw3IEBAIGxvYWQoIlZh
cmlhYmxlRGVjbC5qcyIpOwogbG9hZCgiVmFyaWFibGVSZWYuanMiKTsKIGxvYWQoIlZlY3RvclR5
cGUuanMiKTsKIGxvYWQoIlZpc2l0aW5nU2V0LmpzIik7Citsb2FkKCJXTGV4aWNhbEVycm9yLmpz
Iik7CiBsb2FkKCJXU3ludGF4RXJyb3IuanMiKTsKIGxvYWQoIldUcmFwRXJyb3IuanMiKTsKIGxv
YWQoIldUeXBlRXJyb3IuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL0xleGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMK
aW5kZXggOTU2ZGNhMzM2YTJhOWEzMTIxYTI3NzI4NWFlM2RiNzZkZGU3MjM3MC4uMDk5ZDZkMDBk
YjdiODA1YzYyYzg2NGUyOGNhNDM2NTM5NDM2MjIzYyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvTGV4ZXIuanMKQEAgLTE2NiwzNSArMTY2LDYgQEAgY2xhc3MgTGV4ZXIgewogICAgIAog
ICAgIGZhaWwoZXJyb3IpCiAgICAgewotICAgICAgICB0aHJvdyBuZXcgV1N5bnRheEVycm9yKHRo
aXMub3JpZ2luU3RyaW5nLCBlcnJvcik7Ci0gICAgfQotICAgIAotICAgIGJhY2t0cmFja2luZ1Nj
b3BlKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5zdGF0ZTsKLSAg
ICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiBjYWxsYmFjaygpOwotICAgICAgICB9IGNh
dGNoIChlKSB7Ci0gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikgewot
ICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTsKLSAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgdGVzdFNjb3BlKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgbGV0
IHN0YXRlID0gdGhpcy5zdGF0ZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNhbGxiYWNr
KCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewotICAg
ICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfSBmaW5hbGx5IHsK
LSAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTsKLSAgICAgICAgfQorICAgICAgICB0aHJv
dyBuZXcgV0xleGljYWxFcnJvcih0aGlzLm9yaWdpblN0cmluZywgZXJyb3IpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKaW5kZXggZWU0Yzk4MGYzYTE2NzJi
NjhhNzdlYmI0ODUyNWVkZDI0OTQ0M2E1My4uMGQ4YjFiYzU0OTYxNjM3NGRjYzJkNzY1NmU2MzMy
N2JlY2IyOTIwOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFy
c2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKQEAgLTYx
LDE0ICs2MSwzOCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQs
IGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgLy8gcG9pbnRlcnMgbWVhbnMgdGhhdCB3ZSBj
YW4gc3RpbGwgYWxsb3cgZnVuY3Rpb24gY2FsbCBzdGF0ZW1lbnRzIC0gdW5saWtlIGluIEMsIHRo
b3NlIGNhbm5vdAogICAgIC8vIGhhdmUgYXJiaXRyYXJ5IGV4cHJlc3Npb25zIGFzIHRoZSBjYWxs
ZWUuIFRoZSByZW1haW5pbmcgdHdvIHByb2JsZW1zIGFyZSBzb2x2ZWQgYnkKICAgICAvLyBiYWNr
dHJhY2tpbmcuIEluIGFsbCBvdGhlciByZXNwZWN0cywgdGhpcyBpcyBhIHNpbXBsZSByZWN1cnNp
dmUgZGVzY2VudCBwYXJzZXIuCisKKyAgICBmdW5jdGlvbiBmYWlsKGVycm9yKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG5ldyBXU3ludGF4RXJyb3IobGV4ZXIub3JpZ2luU3RyaW5nLCBlcnJvcik7
CisgICAgfQorCisgICAgZnVuY3Rpb24gYmFja3RyYWNraW5nU2NvcGUoY2FsbGJhY2spCisgICAg
eworICAgICAgICBsZXQgc3RhdGUgPSBsZXhlci5zdGF0ZTsKKyAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjYWxsYmFjaygpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikgeworICAgICAgICAgICAgbGV4ZXIuc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgICAg
IHJldHVybiBudWxsOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVy
cm9yOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0ZXN0U2NvcGUoY2FsbGJhY2spCisgICAg
eworICAgICAgICBsZXQgc3RhdGUgPSBsZXhlci5zdGF0ZTsKKyAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjYWxsYmFjaygpOworICAgICAgICBsZXhlci5zdGF0ZSA9IHN0YXRlOworICAgICAgICBy
ZXR1cm4gIShtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKTsKKyAgICB9CiAgICAg
CiAgICAgZnVuY3Rpb24gZ2VuZXJpY0NvbnN1bWUoY2FsbGJhY2ssIGV4cGxhbmF0aW9uKQogICAg
IHsKICAgICAgICAgbGV0IHRva2VuID0gbGV4ZXIubmV4dCgpOwogICAgICAgICBpZiAoIXRva2Vu
KQotICAgICAgICAgICAgbGV4ZXIuZmFpbCgiVW5leHBlY3RlZCBlbmQgb2YgZmlsZSIpOworICAg
ICAgICAgICAgcmV0dXJuIGZhaWwoIlVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiKTsKICAgICAgICAg
aWYgKCFjYWxsYmFjayh0b2tlbikpCi0gICAgICAgICAgICBsZXhlci5mYWlsKCJVbmV4cGVjdGVk
IHRva2VuOiAiICsgdG9rZW4udGV4dCArICI7IGV4cGVjdGVkOiAiICsgZXhwbGFuYXRpb24pOwor
ICAgICAgICAgICAgcmV0dXJuIGZhaWwoIlVuZXhwZWN0ZWQgdG9rZW46ICIgKyB0b2tlbi50ZXh0
ICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBsYW5hdGlvbik7CiAgICAgICAgIHJldHVybiB0b2tlbjsK
ICAgICB9CiAgICAgCkBAIC03Niw3ICsxMDAsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBv
cmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgewogICAgICAg
ICByZXR1cm4gZ2VuZXJpY0NvbnN1bWUodG9rZW4gPT4gdGV4dHMuaW5jbHVkZXModG9rZW4udGV4
dCksIHRleHRzKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBjb25zdW1lS2luZChraW5k
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGdlbmVyaWNDb25zdW1lKHRva2VuID0+IHRva2VuLmtp
bmQgPT0ga2luZCwga2luZCk7CkBAIC04NCw3ICsxMDgsMTAgQEAgZnVuY3Rpb24gcGFyc2UocHJv
Z3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgIAog
ICAgIGZ1bmN0aW9uIGFzc2VydE5leHQoLi4udGV4dHMpCiAgICAgewotICAgICAgICBsZXhlci5w
dXNoKGNvbnN1bWUoLi4udGV4dHMpKTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1l
KC4uLnRleHRzKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgbGV4ZXIucHVzaCht
YXliZUVycm9yKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gZ2VuZXJpY1Rlc3QoY2FsbGJh
Y2spCkBAIC0xMjYsOCArMTUzLDExIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwg
b3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgbGV0IHJpZ2h0U2hp
ZnQgPSB0cnlDb25zdW1lKCI+PiIpOwogICAgICAgICBpZiAocmlnaHRTaGlmdCkKICAgICAgICAg
ICAgIGxleGVyLnB1c2gobmV3IExleGVyVG9rZW4obGV4ZXIsIHJpZ2h0U2hpZnQsIHJpZ2h0U2hp
ZnQuaW5kZXgsIHJpZ2h0U2hpZnQua2luZCwgIj4iKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGNvbnN1bWUoIj4iKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsZXQgbWF5YmVF
cnJvciA9IGNvbnN1bWUoIj4iKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAg
ICAgICB9CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHBhcnNlVGVybSgpCkBAIC0xNDAsMTMg
KzE3MCwxMyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxp
bmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWVLaW5k
KCJpbnRMaXRlcmFsIikpIHsKICAgICAgICAgICAgIGxldCBpbnRWZXJzaW9uID0gKCt0b2tlbi50
ZXh0KSB8IDA7CiAgICAgICAgICAgICBpZiAoIiIgKyBpbnRWZXJzaW9uICE9PSB0b2tlbi50ZXh0
KQotICAgICAgICAgICAgICAgIGxleGVyLmZhaWwoIkludGVnZXIgbGl0ZXJhbCBpcyBub3QgYW4g
aW50ZWdlcjogIiArIHRva2VuLnRleHQpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCJJ
bnRlZ2VyIGxpdGVyYWwgaXMgbm90IGFuIGludGVnZXI6ICIgKyB0b2tlbi50ZXh0KTsKICAgICAg
ICAgICAgIHJldHVybiBuZXcgSW50TGl0ZXJhbCh0b2tlbiwgaW50VmVyc2lvbik7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZUtpbmQoInVpbnRMaXRlcmFsIikpIHsK
ICAgICAgICAgICAgIGxldCB1aW50VmVyc2lvbiA9IHRva2VuLnRleHQuc3Vic3RyKDAsIHRva2Vu
LnRleHQubGVuZ3RoIC0gMSkgPj4+IDA7CiAgICAgICAgICAgICBpZiAodWludFZlcnNpb24gKyAi
dSIgIT09IHRva2VuLnRleHQpCi0gICAgICAgICAgICAgICAgbGV4ZXIuZmFpbCgiSW50ZWdlciBs
aXRlcmFsIGlzIG5vdCAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcjogIiArIHRva2VuLnRleHQpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCJJbnRlZ2VyIGxpdGVyYWwgaXMgbm90IDMyLWJp
dCB1bnNpZ25lZCBpbnRlZ2VyOiAiICsgdG9rZW4udGV4dCk7CiAgICAgICAgICAgICByZXR1cm4g
bmV3IFVpbnRMaXRlcmFsKHRva2VuLCB1aW50VmVyc2lvbik7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCh0b2tlbiA9IHRyeUNvbnN1bWVLaW5kKCJpbnRIZXhMaXRlcmFsIikpCkBAIC0xNjIsNyAr
MTkyLDcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5l
TnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGlu
dFZlcnNpb24gPSBpbnRWZXJzaW9uID4+PiAwOwogICAgICAgICAgICAgaWYgKGludFZlcnNpb24u
dG9TdHJpbmcoMTYpICE9PSBoZXhTdHJpbmcpCi0gICAgICAgICAgICAgICAgbGV4ZXIuZmFpbCgi
SGV4IGludGVnZXIgbGl0ZXJhbCBpcyBub3QgYW4gaW50ZWdlcjogIiArIHRva2VuLnRleHQpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCJIZXggaW50ZWdlciBsaXRlcmFsIGlzIG5vdCBh
biBpbnRlZ2VyOiAiICsgdG9rZW4udGV4dCk7CiAgICAgICAgICAgICBpZiAodG9rZW4ua2luZCA9
PSAiaW50SGV4TGl0ZXJhbCIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBJbnRMaXRlcmFs
KHRva2VuLCBpbnRWZXJzaW9uKTsKICAgICAgICAgICAgIHJldHVybiBuZXcgVWludExpdGVyYWwo
dG9rZW4sIGludFZlcnNpb24gPj4+IDApOwpAQCAtMTc4LDIwICsyMDgsMzYgQEAgZnVuY3Rpb24g
cGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0
KQogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJ0cnVlIiwgImZhbHNlIikpCiAgICAg
ICAgICAgICByZXR1cm4gbmV3IEJvb2xMaXRlcmFsKHRva2VuLCB0b2tlbi50ZXh0ID09ICJ0cnVl
Iik7CiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHN1cHBvcnQgZm9yIG90aGVyIGxpdGVyYWxzIHRv
by4KLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIigiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IHJlc3VsdCA9IHBh
cnNlRXhwcmVzc2lvbigpOwotICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChyZXN1
bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKSIpOworICAgICAgICBpZiAobWF5YmVFcnJv
ciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9y
OwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJz
ZUNvbnN0ZXhwcigpCiAgICAgewogICAgICAgICBsZXQgdG9rZW47Ci0gICAgICAgIGlmICh0b2tl
biA9IHRyeUNvbnN1bWUoIi0iKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4cHJlc3Np
b24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0LCBbcGFyc2VUZXJtKCldKTsKKyAgICAg
ICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiLSIpKSB7CisgICAgICAgICAgICBsZXQgdGVybSA9
IHBhcnNlVGVybSgpOworICAgICAgICAgICAgaWYgKHRlcm0gaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm07CisgICAgICAgICAgICByZXR1cm4gbmV3
IENhbGxFeHByZXNzaW9uKHRva2VuLCAib3BlcmF0b3IiICsgdG9rZW4udGV4dCwgW3Rlcm1dKTsK
KyAgICAgICAgfQogICAgICAgICBsZXQgbGVmdCA9IHBhcnNlVGVybSgpOwotICAgICAgICBpZiAo
dG9rZW4gPSB0cnlDb25zdW1lKCIuIikpCi0gICAgICAgICAgICBsZWZ0ID0gbmV3IERvdEV4cHJl
c3Npb24odG9rZW4sIGxlZnQsIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dCk7CisgICAg
ICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IGxlZnQ7CisgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIi4iKSkgeworICAgICAgICAg
ICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpCisgICAgICAgICAg
ICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgIGxlZnQgPSBuZXcgRG90RXhwcmVzc2lv
bih0b2tlbiwgbGVmdCwgbWF5YmVFcnJvci50ZXh0KTsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm4gbGVmdDsKICAgICB9CiAgICAgCkBAIC0yMDEsNyArMjQ3LDkgQEAgZnVuY3Rpb24gcGFyc2Uo
cHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAg
ICAgICAgICAgcmV0dXJuIFtdOwogCiAgICAgICAgIGxldCByZXN1bHQgPSBbXTsKLSAgICAgICAg
Y29uc3VtZSgiPCIpOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjwiKTsKKyAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgd2hpbGUgKCF0ZXN0KCI+IikpIHsKICAgICAg
ICAgICAgIC8vIEl0J3MgcG9zc2libGUgZm9yIGEgY29uc3RleHByIG9yIHR5cGUgY2FuIHN5bnRh
Y3RpY2FsbHkgb3ZlcmxhcCBpbiB0aGUgc2luZ2xlCiAgICAgICAgICAgICAvLyBpZGVudGlmaWVy
IGNhc2UuIExldCdzIGNvbnNpZGVyIHRoZSBwb3NzaWJpbGl0aWVzOgpAQCAtMjE0LDI4ICsyNjIs
NDIgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVt
YmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSdsbCBhbGxv
dyBjb25zdGV4cHJzIHRvIGRvIG1vcmUgdGhpbmdzLCBhbmQgdGhlbiB3ZSdsbCBzdGlsbCBoYXZl
CiAgICAgICAgICAgICAvLyB0aGUgcHJvYmxlbSB0aGF0IHNvbWV0aGluZyBvZiB0aGUgZm9ybSBU
WzFdWzJdWzNdLi4uIGNhbiBlaXRoZXIgYmUgYSB0eXBlIG9yIGEKICAgICAgICAgICAgIC8vIGNv
bnN0ZXhwciwgYW5kIHdlIGNhbiBmaWd1cmUgb3V0IGluIHRoZSBjaGVja2VyIHdoaWNoIGl0IGlz
LgotICAgICAgICAgICAgbGV0IHR5cGVSZWYgPSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9
PiB7CisgICAgICAgICAgICBsZXQgdHlwZVJlZiA9IGJhY2t0cmFja2luZ1Njb3BlKCgpID0+IHsK
ICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsK
LSAgICAgICAgICAgICAgICBhc3NlcnROZXh0KCIsIiwgIj4iLCAiPj4iKTsKKyAgICAgICAgICAg
ICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gYXNz
ZXJ0TmV4dCgiLCIsICI+IiwgIj4+Iik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXli
ZUVycm9yOwogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVHlwZVJlZihyZXN1bHQsIHJlc3Vs
dC50ZXh0KTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgaWYgKHR5cGVSZWYpCiAgICAg
ICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZVJlZik7CiAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBsZXQgY29uc3RleHByID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUoKCkg
PT4geworICAgICAgICAgICAgICAgIGxldCBjb25zdGV4cHIgPSBiYWNrdHJhY2tpbmdTY29wZSgo
KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBwYXJzZUNvbnN0ZXhwcigp
OwotICAgICAgICAgICAgICAgICAgICBhc3NlcnROZXh0KCIsIiwgIj4iLCAiPj4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIGxl
dCBtYXliZUVycm9yID0gYXNzZXJ0TmV4dCgiLCIsICI+IiwgIj4+Iik7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgaWYgKGNv
bnN0ZXhwcikKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goY29uc3RleHByKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNl
VHlwZSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0
IHR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZTsK
KyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZSk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCF0cnlDb25zdW1lKCIsIikpCiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY29uc3VtZUVuZE9mVHlwZUFy
Z3MoKTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWVFbmRPZlR5cGVBcmdzKCk7CisgICAg
ICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIApA
QCAtMjQ4LDcgKzMxMCwxMSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdp
bktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBhZGRyZXNzU3BhY2Ug
PSB0b2tlbi50ZXh0OwogICAgICAgICAKICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgi
aWRlbnRpZmllciIpOworICAgICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICBsZXQgdHlwZUFyZ3VtZW50cyA9IHBh
cnNlVHlwZUFyZ3VtZW50cygpOworICAgICAgICBpZiAodHlwZUFyZ3VtZW50cyBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB0eXBlQXJndW1lbnRzOwogICAgICAg
ICBsZXQgdHlwZSA9IG5ldyBUeXBlUmVmKG5hbWUsIG5hbWUudGV4dCwgdHlwZUFyZ3VtZW50cyk7
CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvbiBnZXRBZGRyZXNzU3BhY2UoKQpAQCAtMjU2LDcg
KzMyMiwxMCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxp
bmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBhZGRyZXNzU3BhY2VDb25zdW1lZCA9
IHRydWU7CiAgICAgICAgICAgICBpZiAoYWRkcmVzc1NwYWNlKQogICAgICAgICAgICAgICAgIHJl
dHVybiBhZGRyZXNzU3BhY2U7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3VtZSguLi5hZGRyZXNz
U3BhY2VzKS50ZXh0OworICAgICAgICAgICAgbGV0IGNvbnN1bWVkQWRkcmVzc1NwYWNlID0gY29u
c3VtZSguLi5hZGRyZXNzU3BhY2VzKTsKKyAgICAgICAgICAgIGlmIChjb25zdW1lZEFkZHJlc3NT
cGFjZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gY29u
c3VtZWRBZGRyZXNzU3BhY2U7CisgICAgICAgICAgICByZXR1cm4gY29uc3VtZWRBZGRyZXNzU3Bh
Y2UudGV4dDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY29uc3QgdHlwZUNvbnN0cnVj
dG9yU3RhY2sgPSBbIF07CkBAIC0yNjUsMjYgKzMzNCwzNCBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAg
ICAgICBpZiAodG9rZW4udGV4dCA9PSAiKiIpIHsKICAgICAgICAgICAgICAgICAvLyBMaWtld2lz
ZSwgdGhlIGFkZHJlc3Mgc3BhY2UgbXVzdCBiZSBwYXJzZWQgYmVmb3JlIHBhcnNpbmcgY29udGlu
dWVzLgogICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NTcGFjZSA9IGdldEFkZHJlc3NTcGFj
ZSgpOworICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzU3BhY2UgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGRyZXNzU3BhY2U7CiAgICAgICAg
ICAgICAgICAgdHlwZUNvbnN0cnVjdG9yU3RhY2sudW5zaGlmdCh0eXBlID0+IG5ldyBQdHJUeXBl
KHRva2VuLCBhZGRyZXNzU3BhY2UsIHR5cGUpKTsKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIl0iKSkgewogICAg
ICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NTcGFjZSA9IGdldEFkZHJlc3NTcGFjZSgpOworICAg
ICAgICAgICAgICAgIGlmIChhZGRyZXNzU3BhY2UgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGRyZXNzU3BhY2U7CiAgICAgICAgICAgICAgICAg
dHlwZUNvbnN0cnVjdG9yU3RhY2sudW5zaGlmdCh0eXBlID0+IG5ldyBBcnJheVJlZlR5cGUodG9r
ZW4sIGFkZHJlc3NTcGFjZSwgdHlwZSkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBjb25zdCBsZW5ndGhFeHByID0gcGFyc2VDb25zdGV4
cHIoKTsKKyAgICAgICAgICAgIGlmIChsZW5ndGhFeHByIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgICAgIHJldHVybiBsZW5ndGhFeHByOwogICAgICAgICAgICAgdHlwZUNv
bnN0cnVjdG9yU3RhY2sudW5zaGlmdCh0eXBlID0+IG5ldyBBcnJheVR5cGUodG9rZW4sIHR5cGUs
IGxlbmd0aEV4cHIpKTsKLSAgICAgICAgICAgIGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgIGxl
dCBtYXliZUVycm9yID0gY29uc3VtZSgiXSIpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGxldCBjb25zdHJ1Y3RvciBvZiB0eXBlQ29u
c3RydWN0b3JTdGFjaykKICAgICAgICAgICAgIHR5cGUgPSBjb25zdHJ1Y3Rvcih0eXBlKTsKIAog
ICAgICAgICBpZiAoYWRkcmVzc1NwYWNlICYmICFhZGRyZXNzU3BhY2VDb25zdW1lZCkKLSAgICAg
ICAgICAgIGxleGVyLmZhaWwoIkFkZHJlc3Mgc3BhY2Ugc3BlY2lmaWVkIGZvciB0eXBlIHRoYXQg
ZG9lcyBub3QgbmVlZCBhZGRyZXNzIHNwYWNlIik7CisgICAgICAgICAgICByZXR1cm4gZmFpbCgi
QWRkcmVzcyBzcGFjZSBzcGVjaWZpZWQgZm9yIHR5cGUgdGhhdCBkb2VzIG5vdCBuZWVkIGFkZHJl
c3Mgc3BhY2UiKTsKIAogICAgICAgICByZXR1cm4gdHlwZTsKICAgICB9CkBAIC0yOTIsMTYgKzM2
OSwyOSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVO
dW1iZXJPZmZzZXQsIHRleHQpCiAgICAgZnVuY3Rpb24gcGFyc2VUeXBlRGVmKCkKICAgICB7CiAg
ICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJ0eXBlZGVmIik7Ci0gICAgICAgIGxldCBuYW1l
ID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50ZXh0OwotICAgICAgICBjb25zdW1lKCI9Iik7
CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWVLaW5kKCJp
ZGVudGlmaWVyIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgIGxldCBuYW1lID0g
bWF5YmVFcnJvci50ZXh0OworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiPSIpOworICAg
ICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgdHlwZSA9IHBhcnNlVHlwZSgpOwotICAg
ICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25z
dW1lKCI7Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBuZXcgVHlw
ZURlZihvcmlnaW4sIG5hbWUsIHR5cGUpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIGdl
bmVyaWNQYXJzZUxlZnQodGV4dHMsIG5leHRQYXJzZXIsIGNvbnN0cnVjdG9yKQogICAgIHsKICAg
ICAgICAgbGV0IGxlZnQgPSBuZXh0UGFyc2VyKCk7CisgICAgICAgIGlmIChsZWZ0IGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgICAgIGxldCB0
b2tlbjsKICAgICAgICAgd2hpbGUgKHRva2VuID0gdHJ5Q29uc3VtZSguLi50ZXh0cykpCiAgICAg
ICAgICAgICBsZWZ0ID0gY29uc3RydWN0b3IodG9rZW4sIGxlZnQsIG5leHRQYXJzZXIoKSk7CkBA
IC0zMjIsMTcgKzQxMiwyNSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdp
bktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBsZXQgYXJndW1lbnRM
aXN0ID0gW107CiAgICAgICAgICAgICB3aGlsZSAoIXRlc3QoIikiKSkgewogICAgICAgICAgICAg
ICAgIGxldCBhcmd1bWVudCA9IHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCk7CisgICAgICAgICAg
ICAgICAgaWYgKGFyZ3VtZW50IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYXJndW1lbnQ7CiAgICAgICAgICAgICAgICAgYXJndW1lbnRMaXN0LnB1
c2goYXJndW1lbnQpOwogICAgICAgICAgICAgICAgIGlmICghdHJ5Q29uc3VtZSgiLCIpKQogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnN1
bWUoIikiKTsKKyAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKSIpOworICAg
ICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICByZXR1cm4gbmV3IENhbGxF
eHByZXNzaW9uKG9yaWdpbiwgY2FsbE5hbWUsIGFyZ3VtZW50TGlzdCk7CiAgICAgICAgIH0KIAot
ICAgICAgICBsZXQgbmFtZSA9IGxleGVyLmJhY2t0cmFja2luZ1Njb3BlKCgpID0+IHsKKyAgICAg
ICAgbGV0IG5hbWUgPSBiYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7CiAgICAgICAgICAgICBsZXQg
bmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Ci0gICAgICAgICAgICBjb25zdW1lKCIo
Iik7CisgICAgICAgICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29u
c3VtZSgiKCIpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICBy
ZXR1cm4gbmFtZTsKICAgICAgICAgfSk7CiAKQEAgLTM0MSw3ICs0MzksMTEgQEAgZnVuY3Rpb24g
cGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0
KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIGxldCByZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7Ci0gICAgICAgICAgICBjb25zdW1lKCIo
Iik7CisgICAgICAgICAgICBpZiAocmV0dXJuVHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVHlwZTsKKyAgICAgICAgICAgIGxldCBtYXli
ZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAg
ICAgICAgICAgICBsZXQgcmVzdWx0ID0gcGFyc2VBcmd1bWVudHMocmV0dXJuVHlwZS5vcmlnaW4s
ICJvcGVyYXRvciBjYXN0Iik7CiAgICAgICAgICAgICByZXN1bHQuc2V0Q2FzdERhdGEocmV0dXJu
VHlwZSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzUwLDEyICs0NTIsMjAgQEAg
ZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zm
c2V0LCB0ZXh0KQogICAgIAogICAgIGZ1bmN0aW9uIGlzQ2FsbEV4cHJlc3Npb24oKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGxleGVyLnRlc3RTY29wZSgoKSA9PiB7Ci0gICAgICAgICAgICAgICAg
Y29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKLSAgICAgICAgICAgICAgICBjb25zdW1lKCIoIik7
Ci0gICAgICAgICAgICB9KSB8fCBsZXhlci50ZXN0U2NvcGUoKCkgPT4gewotICAgICAgICAgICAg
ICAgIHBhcnNlVHlwZSgpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAg
cmV0dXJuIHRlc3RTY29wZSgoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3Ig
PSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICAgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bWF5YmVFcnJvcjsKKyAgICAgICAgICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOwor
ICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgIH0pIHx8
IHRlc3RTY29wZSgoKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUo
KTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGU7CisgICAgICAgICAgICAgICAgbGV0IG1heWJl
RXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVy
cm9yOwogICAgICAgICAgICAgfSk7CiAgICAgfQogICAgIApAQCAtMzk1LDExICs1MDUsMTggQEAg
ZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zm
c2V0LCB0ZXh0KQogICAgICAgICAgICAgY2FzZSAiLT4iOgogICAgICAgICAgICAgICAgIGlmICh0
b2tlbi50ZXh0ID09ICItPiIpCiAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBuZXcgRGVyZWZl
cmVuY2VFeHByZXNzaW9uKHRva2VuLCBsZWZ0KTsKLSAgICAgICAgICAgICAgICBsZWZ0ID0gbmV3
IERvdEV4cHJlc3Npb24odG9rZW4sIGxlZnQsIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4
dCk7CisgICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lS2luZCgiaWRlbnRp
ZmllciIpOworICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAg
ICAgICAgICBsZWZ0ID0gbmV3IERvdEV4cHJlc3Npb24odG9rZW4sIGxlZnQsIG1heWJlRXJyb3Iu
dGV4dCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICJbIjogewog
ICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICAg
ICAgICAgIGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAg
ICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAg
ICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICAgICAgbGVmdCA9IG5ldyBJbmRl
eEV4cHJlc3Npb24odG9rZW4sIGxlZnQsIGluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIH0KQEAgLTQxNyw5ICs1MzQsMTQgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3Jh
bSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBs
ZXQgbGVmdDsKICAgICAgICAgaWYgKGlzQ2FsbEV4cHJlc3Npb24oKSkgewogICAgICAgICAgICAg
bGVmdCA9IHBhcnNlQ2FsbEV4cHJlc3Npb24oKTsKKyAgICAgICAgICAgIGlmIChsZWZ0IGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0OwogICAgICAg
ICAgICAgYWNjZXB0YWJsZU9wZXJhdG9ycyA9IGxpbWl0ZWRPcGVyYXRvcnM7Ci0gICAgICAgIH0g
ZWxzZQorICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGVmdCA9IHBhcnNlVGVybSgpOwor
ICAgICAgICAgICAgaWYgKGxlZnQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGxlZnQ7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybiBw
YXJzZVN1ZmZpeE9wZXJhdG9yKGxlZnQsIGFjY2VwdGFibGVPcGVyYXRvcnMpOwogICAgIH0KQEAg
LTQzNSw3ICs1NTcsMTEgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5L
aW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgIGZ1bmN0aW9uIHBhcnNlUHJlSW5jcmVt
ZW50KCkKICAgICB7CiAgICAgICAgIGxldCB0b2tlbiA9IGNvbnN1bWUoIisrIiwgIi0tIik7Cisg
ICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJl
dHVybiB0b2tlbjsKICAgICAgICAgbGV0IGxlZnQgPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7Cisg
ICAgICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIGxlZnQ7CiAgICAgICAgIHJldHVybiBmaW5pc2hQYXJzaW5nUHJlSW5jcmVtZW50KHRva2Vu
LCBsZWZ0KTsKICAgICB9CiAgICAgCkBAIC00NDQsMTYgKzU3MCwzMCBAQCBmdW5jdGlvbiBwYXJz
ZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgICAgIGxldCB0b2tlbjsKICAgICAgICAgaWYgKHRlc3QoIisrIiwgIi0tIikpCiAgICAgICAg
ICAgICByZXR1cm4gcGFyc2VQcmVJbmNyZW1lbnQoKTsKLSAgICAgICAgaWYgKHRva2VuID0gdHJ5
Q29uc3VtZSgiKyIsICItIiwgIn4iKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4cHJl
c3Npb24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0LCBbcGFyc2VQb3NzaWJsZVByZWZp
eCgpXSk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIioiKSkKLSAgICAgICAgICAg
IHJldHVybiBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3NpYmxlUHJl
Zml4KCkpOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCImIikpCi0gICAgICAgICAg
ICByZXR1cm4gbmV3IE1ha2VQdHJFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3NpYmxlUHJlZml4
KCkpOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJAIikpCi0gICAgICAgICAgICBy
ZXR1cm4gbmV3IE1ha2VBcnJheVJlZkV4cHJlc3Npb24odG9rZW4sIHBhcnNlUG9zc2libGVQcmVm
aXgoKSk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIiEiKSkgeworICAgICAgICBp
ZiAodG9rZW4gPSB0cnlDb25zdW1lKCIrIiwgIi0iLCAifiIpKSB7CisgICAgICAgICAgICBsZXQg
cG9zc2libGVQcmVmaXggPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgICAgICBpZiAo
cG9zc2libGVQcmVmaXggaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAg
cmV0dXJuIFdTeW50YXhFcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4cHJlc3Np
b24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0LCBbcG9zc2libGVQcmVmaXhdKTsKKyAg
ICAgICAgfSBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIqIikpIHsKKyAgICAgICAgICAgIGxldCBw
b3NzaWJsZVByZWZpeCA9IHBhcnNlUG9zc2libGVQcmVmaXgoKTsKKyAgICAgICAgICAgIGlmIChw
b3NzaWJsZVByZWZpeCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gV1N5bnRheEVycm9yOworICAgICAgICAgICAgcmV0dXJuIG5ldyBEZXJlZmVyZW5jZUV4
cHJlc3Npb24odG9rZW4sIHBvc3NpYmxlUHJlZml4KTsKKyAgICAgICAgfSBpZiAodG9rZW4gPSB0
cnlDb25zdW1lKCImIikpIHsKKyAgICAgICAgICAgIGxldCBwb3NzaWJsZVByZWZpeCA9IHBhcnNl
UG9zc2libGVQcmVmaXgoKTsKKyAgICAgICAgICAgIGlmIChwb3NzaWJsZVByZWZpeCBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1N5bnRheEVycm9yOwor
ICAgICAgICAgICAgcmV0dXJuIG5ldyBNYWtlUHRyRXhwcmVzc2lvbih0b2tlbiwgcG9zc2libGVQ
cmVmaXgpOworICAgICAgICB9IGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIkAiKSkgeworICAgICAg
ICAgICAgbGV0IHBvc3NpYmxlUHJlZml4ID0gcGFyc2VQb3NzaWJsZVByZWZpeCgpOworICAgICAg
ICAgICAgaWYgKHBvc3NpYmxlUHJlZml4IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgICAgIHJldHVybiBXU3ludGF4RXJyb3I7CisgICAgICAgICAgICByZXR1cm4gbmV3IE1h
a2VBcnJheVJlZkV4cHJlc3Npb24odG9rZW4sIHBvc3NpYmxlUHJlZml4KTsKKyAgICAgICAgfSBp
ZiAodG9rZW4gPSB0cnlDb25zdW1lKCIhIikpIHsKICAgICAgICAgICAgIGxldCByZW1haW5kZXIg
PSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgICAgICBpZiAocmVtYWluZGVyIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiByZW1haW5kZXI7CiAg
ICAgICAgICAgICByZXR1cm4gbmV3IExvZ2ljYWxOb3QodG9rZW4sIG5ldyBDYWxsRXhwcmVzc2lv
bihyZW1haW5kZXIub3JpZ2luLCAiYm9vbCIsIFtyZW1haW5kZXJdKSk7CiAgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHBhcnNlUG9zc2libGVTdWZmaXgoKTsKQEAgLTUyNiwyNyArNjY2LDQ0IEBA
IGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9m
ZnNldCwgdGV4dCkKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFs
KCkKICAgICB7CiAgICAgICAgIGxldCBwcmVkaWNhdGUgPSBwYXJzZVBvc3NpYmxlTG9naWNhbE9y
KCk7CisgICAgICAgIGlmIChwcmVkaWNhdGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gcHJlZGljYXRlOwogICAgICAgICBsZXQgb3BlcmF0b3IgPSB0cnlDb25z
dW1lKCI/Iik7CiAgICAgICAgIGlmICghb3BlcmF0b3IpCiAgICAgICAgICAgICByZXR1cm4gcHJl
ZGljYXRlOwogICAgICAgICBsZXQgYm9keUV4cHJlc3Npb24gPSBwYXJzZVBvc3NpYmxlQXNzaWdu
bWVudCgpOwotICAgICAgICBjb25zdW1lKCI6Iik7CisgICAgICAgIGlmIChib2R5RXhwcmVzc2lv
biBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5RXhwcmVz
c2lvbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI6Iik7CisgICAgICAgIGlm
IChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBlbHNlRXhwcmVzc2lvbiA9IHBhcnNlUG9zc2libGVB
c3NpZ25tZW50KCk7CisgICAgICAgIGlmIChlbHNlRXhwcmVzc2lvbiBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBlbHNlRXhwcmVzc2lvbjsKICAgICAgICAgcmV0
dXJuIG5ldyBUZXJuYXJ5RXhwcmVzc2lvbihvcGVyYXRvciwgcHJlZGljYXRlLCBib2R5RXhwcmVz
c2lvbiwgZWxzZUV4cHJlc3Npb24pOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZVBv
c3NpYmxlQXNzaWdubWVudChtb2RlKQogICAgIHsKICAgICAgICAgbGV0IGxocyA9IHBhcnNlUG9z
c2libGVUZXJuYXJ5Q29uZGl0aW9uYWwoKTsKKyAgICAgICAgaWYgKGxocyBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBsaHM7CiAgICAgICAgIGxldCBvcGVyYXRv
ciA9IHRyeUNvbnN1bWUoIj0iLCAiKz0iLCAiLT0iLCAiKj0iLCAiLz0iLCAiJT0iLCAiXj0iLCAi
fD0iLCAiJj0iKTsKICAgICAgICAgaWYgKCFvcGVyYXRvcikgewogICAgICAgICAgICAgaWYgKG1v
ZGUgPT0gInJlcXVpcmVkIikKLSAgICAgICAgICAgICAgICBsZXhlci5mYWlsKCJFeHBlY3RlZCBh
c3NpZ25tZW50OiAiICsgbGV4ZXIuX3RleHQuc3Vic3RyaW5nKGxleGVyLl9pbmRleCkpOworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWlsKCJFeHBlY3RlZCBhc3NpZ25tZW50OiAiICsgbGV4ZXIu
X3RleHQuc3Vic3RyaW5nKGxleGVyLl9pbmRleCkpOwogICAgICAgICAgICAgcmV0dXJuIGxoczsK
ICAgICAgICAgfQotICAgICAgICBpZiAob3BlcmF0b3IudGV4dCA9PSAiPSIpCi0gICAgICAgICAg
ICByZXR1cm4gbmV3IEFzc2lnbm1lbnQob3BlcmF0b3IsIGxocywgcGFyc2VQb3NzaWJsZUFzc2ln
bm1lbnQoKSk7Ci0gICAgICAgIHJldHVybiBmaW5pc2hQYXJzaW5nUHJlSW5jcmVtZW50KG9wZXJh
dG9yLCBsaHMsIHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCkpOworICAgICAgICBpZiAob3BlcmF0
b3IudGV4dCA9PSAiPSIpIHsKKyAgICAgICAgICAgIGxldCBpbm5lckFzc2lnbm1lbnQgPSBwYXJz
ZVBvc3NpYmxlQXNzaWdubWVudCgpOworICAgICAgICAgICAgaWYgKGlubmVyQXNzaWdubWVudCBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5uZXJBc3Np
Z25tZW50OworICAgICAgICAgICAgcmV0dXJuIG5ldyBBc3NpZ25tZW50KG9wZXJhdG9yLCBsaHMs
IGlubmVyQXNzaWdubWVudCk7CisgICAgICAgIH0KKyAgICAgICAgbGV0IGlubmVyQXNzaWdubWVu
dCA9IHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCk7CisgICAgICAgIGlmIChpbm5lckFzc2lnbm1l
bnQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gaW5uZXJBc3Np
Z25tZW50OworICAgICAgICByZXR1cm4gZmluaXNoUGFyc2luZ1ByZUluY3JlbWVudChvcGVyYXRv
ciwgbGhzLCBpbm5lckFzc2lnbm1lbnQpOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJz
ZUFzc2lnbm1lbnQoKQpAQCAtNTU2LDggKzcxMywxNSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFt
LCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgCiAgICAg
ZnVuY3Rpb24gcGFyc2VQb3N0SW5jcmVtZW50KCkKICAgICB7Ci0gICAgICAgIGxldCBsZWZ0ID0g
cGFyc2VTdWZmaXhPcGVyYXRvcihwYXJzZVRlcm0oKSwgIi4iLCAiLT4iLCAiWyIpOworICAgICAg
ICBsZXQgdGVybSA9IHBhcnNlVGVybSgpOworICAgICAgICBpZiAodGVybSBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB0ZXJtOworICAgICAgICBsZXQgbGVmdCA9
IHBhcnNlU3VmZml4T3BlcmF0b3IodGVybSwgIi4iLCAiLT4iLCAiWyIpOworICAgICAgICBpZiAo
bGVmdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBsZWZ0Owog
ICAgICAgICBsZXQgdG9rZW4gPSBjb25zdW1lKCIrKyIsICItLSIpOworICAgICAgICBpZiAodG9r
ZW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdG9rZW47CiAg
ICAgICAgIHJldHVybiBmaW5pc2hQYXJzaW5nUG9zdEluY3JlbWVudCh0b2tlbiwgbGVmdCk7CiAg
ICAgfQogICAgIApAQCAtNTY1LDEwICs3MjksMTAgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwg
b3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgIHsKICAgICAg
ICAgaWYgKGlzQ2FsbEV4cHJlc3Npb24oKSkKICAgICAgICAgICAgIHJldHVybiBwYXJzZUNhbGxF
eHByZXNzaW9uKCk7Ci0gICAgICAgIGxldCBwcmVJbmNyZW1lbnQgPSBsZXhlci5iYWNrdHJhY2tp
bmdTY29wZShwYXJzZVByZUluY3JlbWVudCk7CisgICAgICAgIGxldCBwcmVJbmNyZW1lbnQgPSBi
YWNrdHJhY2tpbmdTY29wZShwYXJzZVByZUluY3JlbWVudCk7CiAgICAgICAgIGlmIChwcmVJbmNy
ZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gcHJlSW5jcmVtZW50OwotICAgICAgICBsZXQgcG9z
dEluY3JlbWVudCA9IGxleGVyLmJhY2t0cmFja2luZ1Njb3BlKHBhcnNlUG9zdEluY3JlbWVudCk7
CisgICAgICAgIGxldCBwb3N0SW5jcmVtZW50ID0gYmFja3RyYWNraW5nU2NvcGUocGFyc2VQb3N0
SW5jcmVtZW50KTsKICAgICAgICAgaWYgKHBvc3RJbmNyZW1lbnQpCiAgICAgICAgICAgICByZXR1
cm4gcG9zdEluY3JlbWVudDsKICAgICAgICAgcmV0dXJuIHBhcnNlQXNzaWdubWVudCgpOwpAQCAt
NTc5LDExICs3NDMsMTYgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5L
aW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBsZXQgbGlzdCA9IFtdOwogICAg
ICAgICBsZXQgb3JpZ2luID0gbGV4ZXIucGVlaygpOwogICAgICAgICBpZiAoIW9yaWdpbikKLSAg
ICAgICAgICAgIGxleGVyLmZhaWwoIlVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiKTsKKyAgICAgICAg
ICAgIHJldHVybiBmYWlsKCJVbmV4cGVjdGVkIGVuZCBvZiBmaWxlIik7CiAgICAgICAgIGZvciAo
OzspIHsKLSAgICAgICAgICAgIGxldCBlZmZlY3RmdWxFeHByZXNzaW9uID0gbGV4ZXIuYmFja3Ry
YWNraW5nU2NvcGUoKCkgPT4gewotICAgICAgICAgICAgICAgIHBhcnNlRWZmZWN0ZnVsRXhwcmVz
c2lvbigpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUoIiwiKTsKKyAgICAgICAgICAgIGxldCBl
ZmZlY3RmdWxFeHByZXNzaW9uID0gYmFja3RyYWNraW5nU2NvcGUoKCkgPT4geworICAgICAgICAg
ICAgICAgIGxldCBlZmZlY3RmdWxFeHByZXNzaW9uID0gcGFyc2VFZmZlY3RmdWxFeHByZXNzaW9u
KCk7CisgICAgICAgICAgICAgICAgaWYgKGVmZmVjdGZ1bEV4cHJlc3Npb24gaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZmZlY3RmdWxFeHByZXNz
aW9uOworICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiLCIpOworICAg
ICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgICAgICByZXR1
cm4gZWZmZWN0ZnVsRXhwcmVzc2lvbjsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgaWYg
KCFlZmZlY3RmdWxFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICAgICAgbGV0IGZpbmFsID0gZmlu
YWxFeHByZXNzaW9uUGFyc2VyKCk7CkBAIC02MTIsNzUgKzc4MSwxMjcgQEAgZnVuY3Rpb24gcGFy
c2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQog
ICAgIGZ1bmN0aW9uIHBhcnNlRWZmZWN0ZnVsU3RhdGVtZW50KCkKICAgICB7CiAgICAgICAgIGxl
dCByZXN1bHQgPSBnZW5lcmljUGFyc2VDb21tYUV4cHJlc3Npb24ocGFyc2VFZmZlY3RmdWxFeHBy
ZXNzaW9uKTsKLSAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICBpZiAocmVzdWx0IGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAg
bGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHBhcnNlUmV0
dXJuKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJyZXR1cm4iKTsKKyAg
ICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJl
dHVybiBvcmlnaW47CiAgICAgICAgIGlmICh0cnlDb25zdW1lKCI7IikpCiAgICAgICAgICAgICBy
ZXR1cm4gbmV3IFJldHVybihvcmlnaW4sIG51bGwpOwogICAgICAgICBsZXQgZXhwcmVzc2lvbiA9
IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChl
eHByZXNzaW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGV4
cHJlc3Npb247CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOworICAgICAg
ICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJl
dHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gbmV3IFJldHVybihvcmlnaW4sIGV4cHJl
c3Npb24pOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZUJyZWFrKCkKICAgICB7CiAg
ICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJicmVhayIpOwotICAgICAgICBjb25zdW1lKCI7
Iik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsi
KTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBCcmVhayhvcmln
aW4pOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZUNvbnRpbnVlKCkKICAgICB7CiAg
ICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJjb250aW51ZSIpOwotICAgICAgICBjb25zdW1l
KCI7Iik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUo
IjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBDb250aW51
ZShvcmlnaW4pOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlSWZTdGF0ZW1lbnQoKQogICAg
IHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoImlmIik7Ci0gICAgICAgIGNvbnN1bWUo
IigiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgIHJldHVybiBvcmlnaW47CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgi
KCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgY29uZGl0aW9uYWwgPSBw
YXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBpZiAoY29u
ZGl0aW9uYWwgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gY29u
ZGl0aW9uYWw7CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgIGlm
IChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKKyAgICAg
ICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
Ym9keTsKICAgICAgICAgbGV0IGVsc2VCb2R5OwotICAgICAgICBpZiAodHJ5Q29uc3VtZSgiZWxz
ZSIpKQorICAgICAgICBpZiAodHJ5Q29uc3VtZSgiZWxzZSIpKSB7CiAgICAgICAgICAgICBlbHNl
Qm9keSA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAoZWxzZUJvZHkgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVsc2VCb2R5OworICAg
ICAgICB9CiAgICAgICAgIHJldHVybiBuZXcgSWZTdGF0ZW1lbnQob3JpZ2luLCBuZXcgQ2FsbEV4
cHJlc3Npb24oY29uZGl0aW9uYWwub3JpZ2luLCAiYm9vbCIsIFtjb25kaXRpb25hbF0pLCBib2R5
LCBlbHNlQm9keSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VXaGlsZSgpCiAgICAgewog
ICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgid2hpbGUiKTsKLSAgICAgICAgY29uc3VtZSgi
KCIpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIo
Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBjb25kaXRpb25hbCA9IHBh
cnNlRXhwcmVzc2lvbigpOwotICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChjb25k
aXRpb25hbCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBjb25k
aXRpb25hbDsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYg
KG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
bWF5YmVFcnJvcjsKICAgICAgICAgbGV0IGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOworICAgICAg
ICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBi
b2R5OwogICAgICAgICByZXR1cm4gbmV3IFdoaWxlTG9vcChvcmlnaW4sIG5ldyBDYWxsRXhwcmVz
c2lvbihjb25kaXRpb25hbC5vcmlnaW4sICJib29sIiwgW2NvbmRpdGlvbmFsXSksIGJvZHkpOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRm9yKCkKICAgICB7CiAgICAgICAgIGxldCBvcmln
aW4gPSBjb25zdW1lKCJmb3IiKTsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAo
b3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdp
bjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmICht
YXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1h
eWJlRXJyb3I7CiAgICAgICAgIGxldCBpbml0aWFsaXphdGlvbjsKICAgICAgICAgaWYgKHRyeUNv
bnN1bWUoIjsiKSkKICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uID0gdW5kZWZpbmVkOwogICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIGluaXRpYWxpemF0aW9uID0gbGV4ZXIuYmFja3RyYWNr
aW5nU2NvcGUocGFyc2VWYXJpYWJsZURlY2xzKTsKLSAgICAgICAgICAgIGlmICghaW5pdGlhbGl6
YXRpb24pCisgICAgICAgICAgICBpbml0aWFsaXphdGlvbiA9IGJhY2t0cmFja2luZ1Njb3BlKHBh
cnNlVmFyaWFibGVEZWNscyk7CisgICAgICAgICAgICBpZiAoIWluaXRpYWxpemF0aW9uKSB7CiAg
ICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gPSBwYXJzZUVmZmVjdGZ1bFN0YXRlbWVudCgp
OworICAgICAgICAgICAgICAgIGlmIChpbml0aWFsaXphdGlvbiBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxpemF0aW9uOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGxldCBjb25kaXRpb24gPSB0cnlDb25zdW1lKCI7
Iik7CiAgICAgICAgIGlmIChjb25kaXRpb24pCiAgICAgICAgICAgICBjb25kaXRpb24gPSB1bmRl
ZmluZWQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29uZGl0aW9uID0gcGFyc2VFeHBy
ZXNzaW9uKCk7Ci0gICAgICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgICAgICBpZiAoY29u
ZGl0aW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBj
b25kaXRpb247CisgICAgICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOworICAgICAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICBjb25kaXRpb24gPSBuZXcgQ2Fs
bEV4cHJlc3Npb24oY29uZGl0aW9uLm9yaWdpbiwgImJvb2wiLCBbY29uZGl0aW9uXSk7CiAgICAg
ICAgIH0KICAgICAgICAgbGV0IGluY3JlbWVudDsKQEAgLTY4OCw1NiArOTA5LDEwOCBAQCBmdW5j
dGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQs
IHRleHQpCiAgICAgICAgICAgICBpbmNyZW1lbnQgPSB1bmRlZmluZWQ7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgaW5jcmVtZW50ID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgICAg
ICBjb25zdW1lKCIpIik7CisgICAgICAgICAgICBpZiAoaW5jcmVtZW50IGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBpbmNyZW1lbnQ7CisgICAgICAgICAg
ICBtYXliZUVycm9yID0gY29uc3VtZSgiKSIpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CiAgICAgICAgIH0KICAgICAgICAgbGV0IGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOworICAg
ICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVy
biBib2R5OwogICAgICAgICByZXR1cm4gbmV3IEZvckxvb3Aob3JpZ2luLCBpbml0aWFsaXphdGlv
biwgY29uZGl0aW9uLCBpbmNyZW1lbnQsIGJvZHkpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBh
cnNlRG8oKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoImRvIik7CisgICAg
ICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1
cm4gb3JpZ2luOwogICAgICAgICBsZXQgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7Ci0gICAgICAg
IGNvbnN1bWUoIndoaWxlIik7Ci0gICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKGJv
ZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gYm9keTsKKyAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJ3aGlsZSIpOworICAgICAgICBpZiAobWF5
YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXli
ZUVycm9yOworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICBpZiAo
bWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBt
YXliZUVycm9yOwogICAgICAgICBsZXQgY29uZGl0aW9uYWwgPSBwYXJzZUV4cHJlc3Npb24oKTsK
LSAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBpZiAoY29uZGl0aW9uYWwgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uYWw7CisgICAgICAg
IG1heWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAg
ICAgIHJldHVybiBuZXcgRG9XaGlsZUxvb3Aob3JpZ2luLCBib2R5LCBuZXcgQ2FsbEV4cHJlc3Np
b24oY29uZGl0aW9uYWwub3JpZ2luLCAiYm9vbCIsIFtjb25kaXRpb25hbF0pKTsKICAgICB9CiAg
ICAgCiAgICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZURlY2xzKCkKICAgICB7CiAgICAgICAgIGxl
dCB0eXBlID0gcGFyc2VUeXBlKCk7CisgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHR5cGU7CiAgICAgICAgIGxldCBsaXN0ID0gW107
CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50
aWZpZXIiKTsKKyAgICAgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICAgICAgbGV0IGluaXRpYWxpemVy
ID0gdHJ5Q29uc3VtZSgiPSIpID8gcGFyc2VFeHByZXNzaW9uKCkgOiBudWxsOworICAgICAgICAg
ICAgaWYgKGluaXRpYWxpemVyIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
ICAgIHJldHVybiBpbml0aWFsaXplcjsKICAgICAgICAgICAgIGxpc3QucHVzaChuZXcgVmFyaWFi
bGVEZWNsKG5hbWUsIG5hbWUudGV4dCwgdHlwZSwgaW5pdGlhbGl6ZXIpKTsKLSAgICAgICAgfSB3
aGlsZSAoY29uc3VtZSgiLCIsICI7IikudGV4dCA9PSAiLCIpOworICAgICAgICAgICAgbGV0IG1h
eWJlRXJyb3IgPSBjb25zdW1lKCIsIiwgIjsiKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVy
cm9yOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IudGV4dCAhPSAiLCIpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0gd2hpbGUgKHRydWUpOwogICAgICAgICByZXR1cm4gbmV3
IENvbW1hRXhwcmVzc2lvbih0eXBlLm9yaWdpbiwgbGlzdCk7CiAgICAgfQogICAgIAogICAgIGZ1
bmN0aW9uIHBhcnNlU3dpdGNoQ2FzZSgpCiAgICAgewogICAgICAgICBsZXQgdG9rZW4gPSBjb25z
dW1lKCJkZWZhdWx0IiwgImNhc2UiKTsKKyAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICBsZXQgdmFsdWU7
Ci0gICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJjYXNlIikKKyAgICAgICAgaWYgKHRva2VuLnRl
eHQgPT0gImNhc2UiKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlQ29uc3RleHByKCk7Ci0g
ICAgICAgIGNvbnN1bWUoIjoiKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKyAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI6Iik7CisgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VCbG9ja0JvZHkoIn0iLCAiZGVmYXVsdCIsICJj
YXNlIik7CisgICAgICAgIGlmIChib2R5IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIGJvZHk7CiAgICAgICAgIHJldHVybiBuZXcgU3dpdGNoQ2FzZSh0b2tlbiwg
dmFsdWUsIGJvZHkpOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZVN3aXRjaFN0YXRl
bWVudCgpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgic3dpdGNoIik7Ci0g
ICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CisgICAgICAgIGxldCBtYXliZUVy
cm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQg
dmFsdWUgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgY29uc3VtZSgiKSIpOwotICAgICAg
ICBjb25zdW1lKCJ7Iik7CisgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNv
bnN1bWUoInsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IHJlc3VsdCA9
IG5ldyBTd2l0Y2hTdGF0ZW1lbnQob3JpZ2luLCB2YWx1ZSk7Ci0gICAgICAgIHdoaWxlICghdHJ5
Q29uc3VtZSgifSIpKQotICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZVN3aXRjaENhc2UoKSk7
CisgICAgICAgIHdoaWxlICghdHJ5Q29uc3VtZSgifSIpKSB7CisgICAgICAgICAgICBsZXQgc3dp
dGNoQ2FzZSA9IHBhcnNlU3dpdGNoQ2FzZSgpOworICAgICAgICAgICAgaWYgKHN3aXRjaENhc2Ug
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN3aXRjaENh
c2U7CisgICAgICAgICAgICByZXN1bHQuYWRkKHN3aXRjaENhc2UpOworICAgICAgICB9CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIApAQCAtNzY2LDEyICsxMDM5LDE0IEBAIGZ1
bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNl
dCwgdGV4dCkKICAgICAgICAgICAgIHJldHVybiBwYXJzZVN3aXRjaFN0YXRlbWVudCgpOwogICAg
ICAgICBpZiAodG9rZW4udGV4dCA9PSAidHJhcCIpIHsKICAgICAgICAgICAgIGxldCBvcmlnaW4g
PSBjb25zdW1lKCJ0cmFwIik7CisgICAgICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBvcmlnaW47CiAgICAgICAgICAgICBj
b25zdW1lKCI7Iik7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFRyYXBTdGF0ZW1lbnQob3JpZ2lu
KTsKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAieyIpCiAgICAgICAgICAg
ICByZXR1cm4gcGFyc2VCbG9jaygpOwotICAgICAgICBsZXQgdmFyaWFibGVEZWNsID0gbGV4ZXIu
YmFja3RyYWNraW5nU2NvcGUocGFyc2VWYXJpYWJsZURlY2xzKTsKKyAgICAgICAgbGV0IHZhcmlh
YmxlRGVjbCA9IGJhY2t0cmFja2luZ1Njb3BlKHBhcnNlVmFyaWFibGVEZWNscyk7CiAgICAgICAg
IGlmICh2YXJpYWJsZURlY2wpCiAgICAgICAgICAgICByZXR1cm4gdmFyaWFibGVEZWNsOwogICAg
ICAgICByZXR1cm4gcGFyc2VFZmZlY3RmdWxTdGF0ZW1lbnQoKTsKQEAgLTc4Miw2ICsxMDU3LDgg
QEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVy
T2Zmc2V0LCB0ZXh0KQogICAgICAgICBsZXQgYmxvY2sgPSBuZXcgQmxvY2sob3JpZ2luKTsKICAg
ICAgICAgd2hpbGUgKCF0ZXN0KC4uLnRlcm1pbmF0b3JzKSkgewogICAgICAgICAgICAgbGV0IHN0
YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAoc3RhdGVtZW50IGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZW1lbnQ7
CiAgICAgICAgICAgICBpZiAoc3RhdGVtZW50KQogICAgICAgICAgICAgICAgIGJsb2NrLmFkZChz
dGF0ZW1lbnQpOwogICAgICAgICB9CkBAIC03OTEsMjggKzEwNjgsNDMgQEAgZnVuY3Rpb24gcGFy
c2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQog
ICAgIGZ1bmN0aW9uIHBhcnNlQmxvY2soKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNv
bnN1bWUoInsiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CiAgICAgICAgIGxldCBibG9jayA9IHBhcnNlQmxv
Y2tCb2R5KCJ9Iik7Ci0gICAgICAgIGNvbnN1bWUoIn0iKTsKKyAgICAgICAgaWYgKGJsb2NrIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGJsb2NrOworICAgICAg
ICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIn0iKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
ICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZVBh
cmFtZXRlcigpCiAgICAgewogICAgICAgICBsZXQgdHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAg
ICBpZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB0
eXBlOwogICAgICAgICBsZXQgbmFtZSA9IHRyeUNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CiAg
ICAgICAgIHJldHVybiBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbmFtZSA/IG5hbWUu
dGV4dCA6IG51bGwsIHR5cGUpOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZVBhcmFt
ZXRlcnMoKQogICAgIHsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBsZXQgbWF5YmVF
cnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0
IHBhcmFtZXRlcnMgPSBbXTsKICAgICAgICAgd2hpbGUgKCF0ZXN0KCIpIikpIHsKLSAgICAgICAg
ICAgIHBhcmFtZXRlcnMucHVzaChwYXJzZVBhcmFtZXRlcigpKTsKKyAgICAgICAgICAgIGxldCBw
YXJhbWV0ZXIgPSBwYXJzZVBhcmFtZXRlcigpOworICAgICAgICAgICAgaWYgKHBhcmFtZXRlciBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVy
OworICAgICAgICAgICAgcGFyYW1ldGVycy5wdXNoKHBhcmFtZXRlcik7CiAgICAgICAgICAgICBp
ZiAoIXRyeUNvbnN1bWUoIiwiKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQot
ICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCIpIik7
CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzOwogICAg
IH0KICAgICAKQEAgLTgyMCwyMyArMTExMiwzNiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBv
cmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgewogICAgICAg
ICBpZiAodHJ5Q29uc3VtZSgib3BlcmF0b3IiKSkgewogICAgICAgICAgICAgbGV0IHRva2VuID0g
Y29uc3VtZSgiKyIsICItIiwgIioiLCAiLyIsICIlIiwgIl4iLCAiJiIsICJ8IiwgIjwiLCAiPiIs
ICI8PSIsICI+PSIsICI9PSIsICIrKyIsICItLSIsICIuIiwgIn4iLCAiPDwiLCAiPj4iLCAiWyIp
OworICAgICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICIm
IikgewogICAgICAgICAgICAgICAgIGlmICh0cnlDb25zdW1lKCJbIikpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3VtZSgiXSIpOworICAgICAgICAgICAgICAgICAgICBsZXQgbWF5YmVFcnJv
ciA9IGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5
YmVFcnJvcjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJvcGVyYXRvciZbXSI7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0cnlDb25zdW1lKCIuIikpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3ImLiIgKyBjb25zdW1lS2luZCgiaWRlbnRp
ZmllciIpLnRleHQ7CisgICAgICAgICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIi4iKSkgeworICAg
ICAgICAgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVy
Iik7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3ImLiIgKyBtYXliZUVycm9yLnRleHQ7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3ImIjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICIuIikgewotICAgICAg
ICAgICAgICAgIGxldCByZXN1bHQgPSAib3BlcmF0b3IuIiArIGNvbnN1bWVLaW5kKCJpZGVudGlm
aWVyIikudGV4dDsKKyAgICAgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWVLaW5k
KCJpZGVudGlmaWVyIik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwor
ICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAib3BlcmF0b3IuIiArIG1heWJlRXJyb3IudGV4
dDsKICAgICAgICAgICAgICAgICBpZiAodHJ5Q29uc3VtZSgiPSIpKQogICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgKz0gIj0iOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAiWyIpIHsKLSAgICAgICAg
ICAgICAgICBjb25zdW1lKCJdIik7CisgICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBj
b25zdW1lKCJdIik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAg
ICAgICAgICAgICAgIGxldCByZXN1bHQgPSAib3BlcmF0b3JbXSI7CiAgICAgICAgICAgICAgICAg
aWYgKHRyeUNvbnN1bWUoIj0iKSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICI9IjsK
QEAgLTg0NCw3ICsxMTQ5LDEwIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3Jp
Z2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiAib3BlcmF0b3IiICsgdG9rZW4udGV4dDsKICAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50ZXh0OworICAgICAgICBsZXQgbWF5YmVF
cnJvciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CisgICAgICAgIHJldHVybiBtYXliZUVycm9yLnRleHQ7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
cGFyc2VGdW5jRGVjbCgpCkBAIC04NTgsNjMgKzExNjYsMTAzIEBAIGZ1bmN0aW9uIHBhcnNlKHBy
b2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAg
ICAgaWYgKG9wZXJhdG9yVG9rZW4pIHsKICAgICAgICAgICAgIG9yaWdpbiA9IG9wZXJhdG9yVG9r
ZW47CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7CisgICAgICAgICAgICBp
ZiAocmV0dXJuVHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmV0dXJuVHlwZTsKICAgICAgICAgICAgIG5hbWUgPSAib3BlcmF0b3IgY2FzdCI7CiAg
ICAgICAgICAgICBpc0Nhc3QgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
c2hhZGVyVHlwZSA9IHRyeUNvbnN1bWUoInZlcnRleCIsICJmcmFnbWVudCIpOwogICAgICAgICAg
ICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICAgICAgaWYgKHJldHVyblR5cGUg
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVyblR5
cGU7CiAgICAgICAgICAgICBpZiAoc2hhZGVyVHlwZSkgewogICAgICAgICAgICAgICAgIG9yaWdp
biA9IHNoYWRlclR5cGU7CiAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZSA9IHNoYWRlclR5cGUu
dGV4dDsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG9yaWdpbiA9IHJldHVy
blR5cGUub3JpZ2luOwogICAgICAgICAgICAgbmFtZSA9IHBhcnNlRnVuY05hbWUoKTsKKyAgICAg
ICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAg
IHJldHVybiBuYW1lOwogICAgICAgICAgICAgaXNDYXN0ID0gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgbGV0IHBhcmFtZXRlcnMgPSBwYXJzZVBhcmFtZXRlcnMoKTsKKyAgICAgICAgaWYgKHBh
cmFtZXRlcnMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gcGFy
YW1ldGVyczsKICAgICAgICAgcmV0dXJuIG5ldyBGdW5jKG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlw
ZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBlKTsKICAgICB9CiAgICAgCiAgICAgZnVu
Y3Rpb24gcGFyc2VGdW5jRGVmKCkKICAgICB7CiAgICAgICAgIGxldCBmdW5jID0gcGFyc2VGdW5j
RGVjbCgpOworICAgICAgICBpZiAoZnVuYyBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgIHJldHVybiBmdW5jOwogICAgICAgICBsZXQgYm9keSA9IHBhcnNlQmxvY2soKTsKKyAg
ICAgICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1
cm4gYm9keTsKICAgICAgICAgcmV0dXJuIG5ldyBGdW5jRGVmKGZ1bmMub3JpZ2luLCBmdW5jLm5h
bWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBib2R5LCBmdW5jLmlzQ2FzdCwg
ZnVuYy5zaGFkZXJUeXBlKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VGaWVsZCgp
CiAgICAgewogICAgICAgICBsZXQgdHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICBpZiAodHlw
ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB0eXBlOwogICAg
ICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Ci0gICAgICAgIGNvbnN1
bWUoIjsiKTsKKyAgICAgICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7
Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBuZXcgRmllbGQobmFt
ZSwgbmFtZS50ZXh0LCB0eXBlKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VTdHJ1
Y3RUeXBlKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJzdHJ1Y3QiKTsK
LSAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQ7Ci0gICAg
ICAgIGxldCByZXN1bHQgPSBuZXcgU3RydWN0VHlwZShvcmlnaW4sIG5hbWUpOwotICAgICAgICBj
b25zdW1lKCJ7Iik7Ci0gICAgICAgIHdoaWxlICghdHJ5Q29uc3VtZSgifSIpKQotICAgICAgICAg
ICAgcmVzdWx0LmFkZChwYXJzZUZpZWxkKCkpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0
IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICBpZiAobmFtZSBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuYW1lOworICAgICAgICBs
ZXQgcmVzdWx0ID0gbmV3IFN0cnVjdFR5cGUob3JpZ2luLCBuYW1lLnRleHQpOworICAgICAgICBs
ZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoInsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAg
ICAgICAgd2hpbGUgKCF0cnlDb25zdW1lKCJ9IikpIHsKKyAgICAgICAgICAgIGxldCBmaWVsZCA9
IHBhcnNlRmllbGQoKTsKKyAgICAgICAgICAgIGlmIChmaWVsZCBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7CisgICAgICAgICAgICByZXN1bHQu
YWRkKGZpZWxkKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAg
ICAKICAgICBmdW5jdGlvbiBwYXJzZU5hdGl2ZUZ1bmMoKQogICAgIHsKICAgICAgICAgbGV0IGZ1
bmMgPSBwYXJzZUZ1bmNEZWNsKCk7Ci0gICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYg
KGZ1bmMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gZnVuYzsK
KyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChtYXli
ZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJl
RXJyb3I7CiAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlRnVuYyhmdW5jLm9yaWdpbiwgZnVuYy5u
YW1lLCBmdW5jLnJldHVyblR5cGUsIGZ1bmMucGFyYW1ldGVycywgZnVuYy5pc0Nhc3QsIGZ1bmMu
c2hhZGVyVHlwZSk7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHBhcnNlTmF0aXZlKCkKICAg
ICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJuYXRpdmUiKTsKKyAgICAgICAgaWYg
KG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmln
aW47CiAgICAgICAgIGlmICh0cnlDb25zdW1lKCJ0eXBlZGVmIikpIHsKICAgICAgICAgICAgIGxl
dCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgIGlmIChuYW1l
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOwog
ICAgICAgICAgICAgbGV0IGFyZ3MgPSBwYXJzZVR5cGVBcmd1bWVudHMoKTsKLSAgICAgICAgICAg
IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgICAgIGlmIChhcmdzIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBhcmdzOworICAgICAgICAgICAgbGV0IG1heWJl
RXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAg
ICAgICAgICAgIHJldHVybiBOYXRpdmVUeXBlLmNyZWF0ZShvcmlnaW4sIG5hbWUudGV4dCwgYXJn
cyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHBhcnNlTmF0aXZlRnVuYygpOwpAQCAtOTIy
LDEyICsxMjcwLDE5IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2lu
ZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAKICAgICBmdW5jdGlvbiBwYXJzZVJlc3Ry
aWN0ZWRGdW5jRGVmKCkKICAgICB7Ci0gICAgICAgIGNvbnN1bWUoInJlc3RyaWN0ZWQiKTsKKyAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJyZXN0cmljdGVkIik7CisgICAgICAgIGlm
IChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IG1heWJlRXJyb3I7CiAgICAgICAgIGxldCByZXN1bHQ7Ci0gICAgICAgIGlmICh0cnlDb25zdW1l
KCJuYXRpdmUiKSkKKyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIm5hdGl2ZSIpKSB7CiAgICAgICAg
ICAgICByZXN1bHQgPSBwYXJzZU5hdGl2ZUZ1bmMoKTsKLSAgICAgICAgZWxzZQorICAgICAgICAg
ICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzdWx0ID0gcGFy
c2VGdW5jRGVmKCk7CisgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAgICAgICAg
cmVzdWx0LmlzUmVzdHJpY3RlZCA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQpAQCAtOTM1LDI5ICsxMjkwLDQ3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwg
b3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICBmdW5jdGlvbiBwYXJzZUVu
dW1NZW1iZXIoKQogICAgIHsKICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRp
ZmllciIpOworICAgICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICBsZXQgdmFsdWUgPSBudWxsOwotICAgICAgICBp
ZiAodHJ5Q29uc3VtZSgiPSIpKQorICAgICAgICBpZiAodHJ5Q29uc3VtZSgiPSIpKSB7CiAgICAg
ICAgICAgICB2YWx1ZSA9IHBhcnNlQ29uc3RleHByKCk7CisgICAgICAgICAgICBpZiAodmFsdWUg
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgICAgICB9CiAgICAgICAgIHJldHVybiBuZXcgRW51bU1lbWJlcihuYW1lLCBuYW1lLnRleHQs
IHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VFbnVtVHlwZSgpCiAgICAg
ewotICAgICAgICBjb25zdW1lKCJlbnVtIik7CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29u
c3VtZSgiZW51bSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgbmFtZSA9
IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgICAgIGxldCBiYXNl
VHlwZTsKLSAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjoiKSkKKyAgICAgICAgaWYgKHRyeUNvbnN1
bWUoIjoiKSkgewogICAgICAgICAgICAgYmFzZVR5cGUgPSBwYXJzZVR5cGUoKTsKLSAgICAgICAg
ZWxzZQorICAgICAgICAgICAgaWYgKGJhc2VUeXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgICAgIHJldHVybiBiYXNlVHlwZTsKKyAgICAgICAgfSBlbHNlCiAgICAgICAg
ICAgICBiYXNlVHlwZSA9IG5ldyBUeXBlUmVmKG5hbWUsICJpbnQiKTsKLSAgICAgICAgY29uc3Vt
ZSgieyIpOworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgieyIpOworICAgICAgICBpZiAo
bWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBt
YXliZUVycm9yOwogICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IEVudW1UeXBlKG5hbWUsIG5hbWUu
dGV4dCwgYmFzZVR5cGUpOwogICAgICAgICB3aGlsZSAoIXRlc3QoIn0iKSkgewotICAgICAgICAg
ICAgcmVzdWx0LmFkZChwYXJzZUVudW1NZW1iZXIoKSk7CisgICAgICAgICAgICBsZXQgZW51bU1l
bWJlciA9IHBhcnNlRW51bU1lbWJlcigpOworICAgICAgICAgICAgaWYgKGVudW1NZW1iZXIgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVudW1NZW1iZXI7
CisgICAgICAgICAgICByZXN1bHQuYWRkKGVudW1NZW1iZXIpOwogICAgICAgICAgICAgaWYgKCF0
cnlDb25zdW1lKCIsIikpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAg
ICAgY29uc3VtZSgifSIpOworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgifSIpOworICAg
ICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAK
QEAgLTk2NywxOCArMTM0MCwzNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9y
aWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICI7IikKICAgICAgICAgICAgIGxleGVyLm5leHQoKTsK
LSAgICAgICAgZWxzZSBpZiAodG9rZW4udGV4dCA9PSAidHlwZWRlZiIpCi0gICAgICAgICAgICBw
cm9ncmFtLmFkZChwYXJzZVR5cGVEZWYoKSk7Ci0gICAgICAgIGVsc2UgaWYgKG9yaWdpbktpbmQg
PT0gIm5hdGl2ZSIgJiYgdG9rZW4udGV4dCA9PSAibmF0aXZlIikKLSAgICAgICAgICAgIHByb2dy
YW0uYWRkKHBhcnNlTmF0aXZlKCkpOwotICAgICAgICBlbHNlIGlmIChvcmlnaW5LaW5kID09ICJu
YXRpdmUiICYmIHRva2VuLnRleHQgPT0gInJlc3RyaWN0ZWQiKQotICAgICAgICAgICAgcHJvZ3Jh
bS5hZGQocGFyc2VSZXN0cmljdGVkRnVuY0RlZigpKTsKLSAgICAgICAgZWxzZSBpZiAodG9rZW4u
dGV4dCA9PSAic3RydWN0IikKLSAgICAgICAgICAgIHByb2dyYW0uYWRkKHBhcnNlU3RydWN0VHlw
ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAodG9rZW4udGV4dCA9PSAiZW51bSIpCi0gICAgICAgICAg
ICBwcm9ncmFtLmFkZChwYXJzZUVudW1UeXBlKCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICBwcm9ncmFtLmFkZChwYXJzZUZ1bmNEZWYoKSk7CisgICAgICAgIGVsc2UgaWYgKHRva2VuLnRl
eHQgPT0gInR5cGVkZWYiKSB7CisgICAgICAgICAgICBsZXQgdHlwZURlZiA9IHBhcnNlVHlwZURl
ZigpOworICAgICAgICAgICAgaWYgKHR5cGVEZWYgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICAgICAgdGhyb3cgdHlwZURlZjsKKyAgICAgICAgICAgIHByb2dyYW0uYWRkKHR5
cGVEZWYpOworICAgICAgICB9IGVsc2UgaWYgKG9yaWdpbktpbmQgPT0gIm5hdGl2ZSIgJiYgdG9r
ZW4udGV4dCA9PSAibmF0aXZlIikgeworICAgICAgICAgICAgbGV0IG5hdGl2ZSA9IHBhcnNlTmF0
aXZlKCk7CisgICAgICAgICAgICBpZiAobmF0aXZlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgICAgIHRocm93IG5hdGl2ZTsKKyAgICAgICAgICAgIHByb2dyYW0uYWRkKG5h
dGl2ZSk7CisgICAgICAgIH0gZWxzZSBpZiAob3JpZ2luS2luZCA9PSAibmF0aXZlIiAmJiB0b2tl
bi50ZXh0ID09ICJyZXN0cmljdGVkIikgeworICAgICAgICAgICAgbGV0IHJlc3RyaWN0ZWRGdW5j
RGVmID0gcGFyc2VSZXN0cmljdGVkRnVuY0RlZigpOworICAgICAgICAgICAgaWYgKHJlc3RyaWN0
ZWRGdW5jRGVmIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHRocm93
IHJlc3RyaWN0ZWRGdW5jRGVmOworICAgICAgICAgICAgcHJvZ3JhbS5hZGQocmVzdHJpY3RlZEZ1
bmNEZWYpOworICAgICAgICB9IGVsc2UgaWYgKHRva2VuLnRleHQgPT0gInN0cnVjdCIpIHsKKyAg
ICAgICAgICAgIGxldCBzdHJ1Y3QgPSBwYXJzZVN0cnVjdFR5cGUoKTsKKyAgICAgICAgICAgIGlm
IChzdHJ1Y3QgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgdGhyb3cg
c3RydWN0OworICAgICAgICAgICAgcHJvZ3JhbS5hZGQoc3RydWN0KTsKKyAgICAgICAgfSBlbHNl
IGlmICh0b2tlbi50ZXh0ID09ICJlbnVtIikgeworICAgICAgICAgICAgbGV0IGVudW1UeXBlID0g
cGFyc2VFbnVtVHlwZSgpOworICAgICAgICAgICAgaWYgKGVudW1UeXBlIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHRocm93IGVudW1UeXBlOworICAgICAgICAgICAg
cHJvZ3JhbS5hZGQoZW51bVR5cGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbGV0
IGZ1bmNEZWYgPSBwYXJzZUZ1bmNEZWYoKTsKKyAgICAgICAgICAgIGlmIChmdW5jRGVmIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHRocm93IGZ1bmNEZWY7CisgICAg
ICAgICAgICBwcm9ncmFtLmFkZChmdW5jRGVmKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbCBiL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwKaW5kZXggMWIyNmNmMmIyZTY1MTUy
N2ExNTJlZThkOTJmZjI1YmVkYTYxZDMzOS4uODA0Y2Q5YWJkYTZkNWMzYmVjMDNiZTI1ODJhYTNm
MjNmMDA3YTE4OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJ
UlYuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCkBA
IC0xNTEsNiArMTUxLDcgQEAgdGQgewogICAgIDxzY3JpcHQgc3JjPSJWYXJpYWJsZVJlZi5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZlY3RvclR5cGUuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaXNpdGluZ1NldC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9
IldMZXhpY2FsRXJyb3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJXU3ludGF4RXJy
b3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJXVHJhcEVycm9yLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iV1R5cGVFcnJvci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKaW5kZXggZmIxMDE1ZjE5MzgxY2Y2ZWFjNzMxN2I0
ODVlZjAwYzNlYzFjYjk2ZS4uZjVlYTNkOTAxOThkY2RiODcxMzFmOTJjMjUwYzc0MzMwNGI2NmFj
MCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbApAQCAtMTQ1LDYgKzE0
NSw3IEBACiA8c2NyaXB0IHNyYz0iVmFyaWFibGVSZWYuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBz
cmM9IlZlY3RvclR5cGUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlZpc2l0aW5nU2V0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXTGV4aWNhbEVycm9yLmpzIj48L3NjcmlwdD4KIDxz
Y3JpcHQgc3JjPSJXU3ludGF4RXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IldUcmFw
RXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IldUeXBlRXJyb3IuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKaW5kZXggOTBkNWU1Y2NkNTBjZmY0
YTk0MmI5MTc2NmIyNzI4NjlmMDk0NGM2Ny4uNTY4ODcyMWI3YTgxNDQ5NTRjYTViMGEzYTY2NTgy
ZDJhZmZhMjBlYSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVz
dC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCkBAIC03Njgz
LDQgKzc2ODMsMyBAQCBpZiAoIXRoaXMud2luZG93KSB7CiAgICAgZm9yIChsZXQgXyBvZiBkb1Rl
c3QodGVzdEZpbHRlcikpIHsgfQogfQogCi0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9p
bmRleC5odG1sCmluZGV4IGU2ZTEzZGZlOGRmYTVjNTMzMmFkOWVmMDQ5ZWNlYTM1OWI3ZTNhNDIu
LmRmYzkwYzRjMjM5NDM5NTQ1ODg2NWM0YThkNjU0ODY4NzBjMjYyMzQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbApAQCAtMTQ1LDYgKzE0NSw3IEBACiA8c2NyaXB0
IHNyYz0iVmFyaWFibGVSZWYuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlZlY3RvclR5cGUu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlZpc2l0aW5nU2V0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSJXTGV4aWNhbEVycm9yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJXU3lu
dGF4RXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IldUcmFwRXJyb3IuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IldUeXBlRXJyb3IuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348970</attachid>
            <date>2018-09-05 15:12:22 -0700</date>
            <delta_ts>2018-09-05 17:27:40 -0700</delta_ts>
            <desc>Removes try/catch</desc>
            <filename>bug-189014-20180905151222.patch</filename>
            <type>text/plain</type>
            <size>55639</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Njg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWJiNDgxOTNiYzE0MzM1MmQ5OTQ0ZmZlY2Y2ZDgzNDQx
YzZmMWY0OS4uMGNmN2QzMGE0YTBjMWZhMjQxNTQyYWMyYTdiOGQ4MjcwOWI0NWRkMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3
IEBACisyMDE4LTA5LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBUaGUgcGFyc2VyIGlzIHRvbyBzbG93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0FsbC5qczoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qczoK
KyAgICAgICAgKExleGVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJz
ZS5qczoKKyAgICAgICAgKGZhaWwpOgorICAgICAgICAoYmFja3RyYWNraW5nU2NvcGUpOgorICAg
ICAgICAodGVzdFNjb3BlKToKKyAgICAgICAgKGdlbmVyaWNDb25zdW1lKToKKyAgICAgICAgKGNv
bnN1bWVFbmRPZlR5cGVBcmdzKToKKyAgICAgICAgKHBhcnNlVGVybSk6CisgICAgICAgIChwYXJz
ZUNvbnN0ZXhwcik6CisgICAgICAgIChwYXJzZVR5cGVBcmd1bWVudHMpOgorICAgICAgICAocGFy
c2VUeXBlLmdldEFkZHJlc3NTcGFjZSk6CisgICAgICAgIChwYXJzZVR5cGUpOgorICAgICAgICAo
cGFyc2VUeXBlRGVmKToKKyAgICAgICAgKGdlbmVyaWNQYXJzZUxlZnQpOgorICAgICAgICAocGFy
c2VDYWxsRXhwcmVzc2lvbi5sZXQucGFyc2VBcmd1bWVudHMpOgorICAgICAgICAoaXNDYWxsRXhw
cmVzc2lvbik6CisgICAgICAgIChwYXJzZVN1ZmZpeE9wZXJhdG9yKToKKyAgICAgICAgKHBhcnNl
UG9zc2libGVTdWZmaXgpOgorICAgICAgICAocGFyc2VQcmVJbmNyZW1lbnQpOgorICAgICAgICAo
cGFyc2VQb3NzaWJsZVByZWZpeCk6CisgICAgICAgIChwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRp
dGlvbmFsKToKKyAgICAgICAgKHBhcnNlUG9zc2libGVBc3NpZ25tZW50KToKKyAgICAgICAgKHBh
cnNlUG9zdEluY3JlbWVudCk6CisgICAgICAgIChwYXJzZUVmZmVjdGZ1bEV4cHJlc3Npb24pOgor
ICAgICAgICAoZ2VuZXJpY1BhcnNlQ29tbWFFeHByZXNzaW9uKToKKyAgICAgICAgKHBhcnNlRWZm
ZWN0ZnVsU3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNlUmV0dXJuKToKKyAgICAgICAgKHBhcnNl
QnJlYWspOgorICAgICAgICAocGFyc2VDb250aW51ZSk6CisgICAgICAgIChwYXJzZUlmU3RhdGVt
ZW50KToKKyAgICAgICAgKHBhcnNlV2hpbGUpOgorICAgICAgICAocGFyc2VGb3IpOgorICAgICAg
ICAocGFyc2VEbyk6CisgICAgICAgIChwYXJzZVZhcmlhYmxlRGVjbHMpOgorICAgICAgICAocGFy
c2VTd2l0Y2hDYXNlKToKKyAgICAgICAgKHBhcnNlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAg
KHBhcnNlU3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNlQmxvY2tCb2R5KToKKyAgICAgICAgKHBh
cnNlQmxvY2spOgorICAgICAgICAocGFyc2VQYXJhbWV0ZXIpOgorICAgICAgICAocGFyc2VGdW5j
TmFtZSk6CisgICAgICAgIChwYXJzZUZ1bmNEZWNsKToKKyAgICAgICAgKHBhcnNlRnVuY0RlZik6
CisgICAgICAgIChwYXJzZUZpZWxkKToKKyAgICAgICAgKHBhcnNlU3RydWN0VHlwZSk6CisgICAg
ICAgIChwYXJzZU5hdGl2ZUZ1bmMpOgorICAgICAgICAocGFyc2VOYXRpdmUpOgorICAgICAgICAo
cGFyc2VSZXN0cmljdGVkRnVuY0RlZik6CisgICAgICAgIChwYXJzZUVudW1NZW1iZXIpOgorICAg
ICAgICAocGFyc2VFbnVtVHlwZSk6CisgICAgICAgIChwYXJzZSk6CisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbDoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UZXN0Lmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5k
ZXguaHRtbDoKKwogMjAxOC0wOS0wNSAgV29vZHJvdyBXYW5nICA8d29vZHJvd193YW5nQGFwcGxl
LmNvbT4KIAogICAgICAgICBBZGRlZCBydW50aW1lIGZlYXR1cmUgZmxhZyBmb3Igd2ViIEFQSSBz
dGF0aXN0aWNzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggOTBmYzg0MTNh
NjUxMjI0NDZiZjAxZmQ5NjdkZDY1MTM5YTBmODdlOS4uMGE1ODg1MTYxYTQwM2QwOWFlYWExZmU1
ZTEwNDNhZGZlNjEyNTY1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpAQCAt
MTY4LDYgKzE2OCw3IEBAIGxvYWQoIlZhcmlhYmxlRGVjbC5qcyIpOwogbG9hZCgiVmFyaWFibGVS
ZWYuanMiKTsKIGxvYWQoIlZlY3RvclR5cGUuanMiKTsKIGxvYWQoIlZpc2l0aW5nU2V0LmpzIik7
Citsb2FkKCJXTGV4aWNhbEVycm9yLmpzIik7CiBsb2FkKCJXU3ludGF4RXJyb3IuanMiKTsKIGxv
YWQoIldUcmFwRXJyb3IuanMiKTsKIGxvYWQoIldUeXBlRXJyb3IuanMiKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKaW5kZXggOTU2ZGNhMzM2YTJhOWEzMTIxYTI3NzI4NWFl
M2RiNzZkZGU3MjM3MC4uMDk5ZDZkMDBkYjdiODA1YzYyYzg2NGUyOGNhNDM2NTM5NDM2MjIzYyAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKQEAgLTE2NiwzNSArMTY2LDYg
QEAgY2xhc3MgTGV4ZXIgewogICAgIAogICAgIGZhaWwoZXJyb3IpCiAgICAgewotICAgICAgICB0
aHJvdyBuZXcgV1N5bnRheEVycm9yKHRoaXMub3JpZ2luU3RyaW5nLCBlcnJvcik7Ci0gICAgfQot
ICAgIAotICAgIGJhY2t0cmFja2luZ1Njb3BlKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgbGV0
IHN0YXRlID0gdGhpcy5zdGF0ZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiBj
YWxsYmFjaygpOwotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBpZiAoZSBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikgewotICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0
ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHRocm93IGU7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgdGVzdFNjb3BlKGNhbGxi
YWNrKQotICAgIHsKLSAgICAgICAgbGV0IHN0YXRlID0gdGhpcy5zdGF0ZTsKLSAgICAgICAgdHJ5
IHsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgdGhyb3cg
ZTsKLSAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBzdGF0ZTsK
LSAgICAgICAgfQorICAgICAgICB0aHJvdyBuZXcgV0xleGljYWxFcnJvcih0aGlzLm9yaWdpblN0
cmluZywgZXJyb3IpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2Uu
anMKaW5kZXggZWU0Yzk4MGYzYTE2NzJiNjhhNzdlYmI0ODUyNWVkZDI0OTQ0M2E1My4uMGQ4YjFi
YzU0OTYxNjM3NGRjYzJkNzY1NmU2MzMyN2JlY2IyOTIwOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvUGFyc2UuanMKQEAgLTYxLDE0ICs2MSwzOCBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgLy8g
cG9pbnRlcnMgbWVhbnMgdGhhdCB3ZSBjYW4gc3RpbGwgYWxsb3cgZnVuY3Rpb24gY2FsbCBzdGF0
ZW1lbnRzIC0gdW5saWtlIGluIEMsIHRob3NlIGNhbm5vdAogICAgIC8vIGhhdmUgYXJiaXRyYXJ5
IGV4cHJlc3Npb25zIGFzIHRoZSBjYWxsZWUuIFRoZSByZW1haW5pbmcgdHdvIHByb2JsZW1zIGFy
ZSBzb2x2ZWQgYnkKICAgICAvLyBiYWNrdHJhY2tpbmcuIEluIGFsbCBvdGhlciByZXNwZWN0cywg
dGhpcyBpcyBhIHNpbXBsZSByZWN1cnNpdmUgZGVzY2VudCBwYXJzZXIuCisKKyAgICBmdW5jdGlv
biBmYWlsKGVycm9yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBXU3ludGF4RXJyb3IobGV4
ZXIub3JpZ2luU3RyaW5nLCBlcnJvcik7CisgICAgfQorCisgICAgZnVuY3Rpb24gYmFja3RyYWNr
aW5nU2NvcGUoY2FsbGJhY2spCisgICAgeworICAgICAgICBsZXQgc3RhdGUgPSBsZXhlci5zdGF0
ZTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjYWxsYmFjaygpOworICAgICAgICBpZiAobWF5
YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikgeworICAgICAgICAgICAgbGV4ZXIuc3Rh
dGUgPSBzdGF0ZTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9IGVsc2UKKyAg
ICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiB0
ZXN0U2NvcGUoY2FsbGJhY2spCisgICAgeworICAgICAgICBsZXQgc3RhdGUgPSBsZXhlci5zdGF0
ZTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjYWxsYmFjaygpOworICAgICAgICBsZXhlci5z
dGF0ZSA9IHN0YXRlOworICAgICAgICByZXR1cm4gIShtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKTsKKyAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gZ2VuZXJpY0NvbnN1bWUoY2Fs
bGJhY2ssIGV4cGxhbmF0aW9uKQogICAgIHsKICAgICAgICAgbGV0IHRva2VuID0gbGV4ZXIubmV4
dCgpOwogICAgICAgICBpZiAoIXRva2VuKQotICAgICAgICAgICAgbGV4ZXIuZmFpbCgiVW5leHBl
Y3RlZCBlbmQgb2YgZmlsZSIpOworICAgICAgICAgICAgcmV0dXJuIGZhaWwoIlVuZXhwZWN0ZWQg
ZW5kIG9mIGZpbGUiKTsKICAgICAgICAgaWYgKCFjYWxsYmFjayh0b2tlbikpCi0gICAgICAgICAg
ICBsZXhlci5mYWlsKCJVbmV4cGVjdGVkIHRva2VuOiAiICsgdG9rZW4udGV4dCArICI7IGV4cGVj
dGVkOiAiICsgZXhwbGFuYXRpb24pOworICAgICAgICAgICAgcmV0dXJuIGZhaWwoIlVuZXhwZWN0
ZWQgdG9rZW46ICIgKyB0b2tlbi50ZXh0ICsgIjsgZXhwZWN0ZWQ6ICIgKyBleHBsYW5hdGlvbik7
CiAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICB9CiAgICAgCkBAIC03Niw3ICsxMDAsNyBAQCBm
dW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZz
ZXQsIHRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJpY0NvbnN1bWUodG9rZW4gPT4g
dGV4dHMuaW5jbHVkZXModG9rZW4udGV4dCksIHRleHRzKTsKICAgICB9Ci0gICAgCisKICAgICBm
dW5jdGlvbiBjb25zdW1lS2luZChraW5kKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdlbmVyaWND
b25zdW1lKHRva2VuID0+IHRva2VuLmtpbmQgPT0ga2luZCwga2luZCk7CkBAIC04NCw3ICsxMDgs
MTAgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVt
YmVyT2Zmc2V0LCB0ZXh0KQogICAgIAogICAgIGZ1bmN0aW9uIGFzc2VydE5leHQoLi4udGV4dHMp
CiAgICAgewotICAgICAgICBsZXhlci5wdXNoKGNvbnN1bWUoLi4udGV4dHMpKTsKKyAgICAgICAg
bGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKC4uLnRleHRzKTsKKyAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKKyAgICAgICAgbGV4ZXIucHVzaChtYXliZUVycm9yKTsKICAgICB9CiAgICAgCiAgICAgZnVu
Y3Rpb24gZ2VuZXJpY1Rlc3QoY2FsbGJhY2spCkBAIC0xMjYsOCArMTUzLDExIEBAIGZ1bmN0aW9u
IHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4
dCkKICAgICAgICAgbGV0IHJpZ2h0U2hpZnQgPSB0cnlDb25zdW1lKCI+PiIpOwogICAgICAgICBp
ZiAocmlnaHRTaGlmdCkKICAgICAgICAgICAgIGxleGVyLnB1c2gobmV3IExleGVyVG9rZW4obGV4
ZXIsIHJpZ2h0U2hpZnQsIHJpZ2h0U2hpZnQuaW5kZXgsIHJpZ2h0U2hpZnQua2luZCwgIj4iKSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnN1bWUoIj4iKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIj4iKTsKKyAgICAgICAgICAg
IGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAg
IHJldHVybiBtYXliZUVycm9yOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9u
IHBhcnNlVGVybSgpCkBAIC0xNDAsMTMgKzE3MCwxMyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFt
LCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGlm
ICh0b2tlbiA9IHRyeUNvbnN1bWVLaW5kKCJpbnRMaXRlcmFsIikpIHsKICAgICAgICAgICAgIGxl
dCBpbnRWZXJzaW9uID0gKCt0b2tlbi50ZXh0KSB8IDA7CiAgICAgICAgICAgICBpZiAoIiIgKyBp
bnRWZXJzaW9uICE9PSB0b2tlbi50ZXh0KQotICAgICAgICAgICAgICAgIGxleGVyLmZhaWwoIklu
dGVnZXIgbGl0ZXJhbCBpcyBub3QgYW4gaW50ZWdlcjogIiArIHRva2VuLnRleHQpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWlsKCJJbnRlZ2VyIGxpdGVyYWwgaXMgbm90IGFuIGludGVnZXI6
ICIgKyB0b2tlbi50ZXh0KTsKICAgICAgICAgICAgIHJldHVybiBuZXcgSW50TGl0ZXJhbCh0b2tl
biwgaW50VmVyc2lvbik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3Vt
ZUtpbmQoInVpbnRMaXRlcmFsIikpIHsKICAgICAgICAgICAgIGxldCB1aW50VmVyc2lvbiA9IHRv
a2VuLnRleHQuc3Vic3RyKDAsIHRva2VuLnRleHQubGVuZ3RoIC0gMSkgPj4+IDA7CiAgICAgICAg
ICAgICBpZiAodWludFZlcnNpb24gKyAidSIgIT09IHRva2VuLnRleHQpCi0gICAgICAgICAgICAg
ICAgbGV4ZXIuZmFpbCgiSW50ZWdlciBsaXRlcmFsIGlzIG5vdCAzMi1iaXQgdW5zaWduZWQgaW50
ZWdlcjogIiArIHRva2VuLnRleHQpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCJJbnRl
Z2VyIGxpdGVyYWwgaXMgbm90IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyOiAiICsgdG9rZW4udGV4
dCk7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnRMaXRlcmFsKHRva2VuLCB1aW50VmVyc2lv
bik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCh0b2tlbiA9IHRyeUNvbnN1bWVLaW5kKCJpbnRI
ZXhMaXRlcmFsIikpCkBAIC0xNjIsNyArMTkyLDcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwg
b3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGludFZlcnNpb24gPSBpbnRWZXJzaW9uID4+PiAwOwogICAg
ICAgICAgICAgaWYgKGludFZlcnNpb24udG9TdHJpbmcoMTYpICE9PSBoZXhTdHJpbmcpCi0gICAg
ICAgICAgICAgICAgbGV4ZXIuZmFpbCgiSGV4IGludGVnZXIgbGl0ZXJhbCBpcyBub3QgYW4gaW50
ZWdlcjogIiArIHRva2VuLnRleHQpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCJIZXgg
aW50ZWdlciBsaXRlcmFsIGlzIG5vdCBhbiBpbnRlZ2VyOiAiICsgdG9rZW4udGV4dCk7CiAgICAg
ICAgICAgICBpZiAodG9rZW4ua2luZCA9PSAiaW50SGV4TGl0ZXJhbCIpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBJbnRMaXRlcmFsKHRva2VuLCBpbnRWZXJzaW9uKTsKICAgICAgICAgICAg
IHJldHVybiBuZXcgVWludExpdGVyYWwodG9rZW4sIGludFZlcnNpb24gPj4+IDApOwpAQCAtMTc4
LDIwICsyMDgsMzYgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5k
LCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1l
KCJ0cnVlIiwgImZhbHNlIikpCiAgICAgICAgICAgICByZXR1cm4gbmV3IEJvb2xMaXRlcmFsKHRv
a2VuLCB0b2tlbi50ZXh0ID09ICJ0cnVlIik7CiAgICAgICAgIC8vIEZJWE1FOiBOZWVkIHN1cHBv
cnQgZm9yIG90aGVyIGxpdGVyYWxzIHRvby4KLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAg
ICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
ICAgICAgICAgbGV0IHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBjb25zdW1l
KCIpIik7CisgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKSIp
OworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0K
ICAgICAKICAgICBmdW5jdGlvbiBwYXJzZUNvbnN0ZXhwcigpCiAgICAgewogICAgICAgICBsZXQg
dG9rZW47Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIi0iKSkKLSAgICAgICAgICAg
IHJldHVybiBuZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0
LCBbcGFyc2VUZXJtKCldKTsKKyAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiLSIpKSB7
CisgICAgICAgICAgICBsZXQgdGVybSA9IHBhcnNlVGVybSgpOworICAgICAgICAgICAgaWYgKHRl
cm0gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm07
CisgICAgICAgICAgICByZXR1cm4gbmV3IENhbGxFeHByZXNzaW9uKHRva2VuLCAib3BlcmF0b3Ii
ICsgdG9rZW4udGV4dCwgW3Rlcm1dKTsKKyAgICAgICAgfQogICAgICAgICBsZXQgbGVmdCA9IHBh
cnNlVGVybSgpOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIuIikpCi0gICAgICAg
ICAgICBsZWZ0ID0gbmV3IERvdEV4cHJlc3Npb24odG9rZW4sIGxlZnQsIGNvbnN1bWVLaW5kKCJp
ZGVudGlmaWVyIikudGV4dCk7CisgICAgICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIGxlZnQ7CisgICAgICAgIGlmICh0b2tlbiA9IHRyeUNv
bnN1bWUoIi4iKSkgeworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lS2luZCgi
aWRlbnRpZmllciIpCisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAg
IGxlZnQgPSBuZXcgRG90RXhwcmVzc2lvbih0b2tlbiwgbGVmdCwgbWF5YmVFcnJvci50ZXh0KTsK
KyAgICAgICAgfQogICAgICAgICByZXR1cm4gbGVmdDsKICAgICB9CiAgICAgCkBAIC0yMDEsNyAr
MjQ3LDkgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5l
TnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgcmV0dXJuIFtdOwogCiAgICAgICAgIGxl
dCByZXN1bHQgPSBbXTsKLSAgICAgICAgY29uc3VtZSgiPCIpOworICAgICAgICBsZXQgbWF5YmVF
cnJvciA9IGNvbnN1bWUoIjwiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgd2hp
bGUgKCF0ZXN0KCI+IikpIHsKICAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgZm9yIGEgY29u
c3RleHByIG9yIHR5cGUgY2FuIHN5bnRhY3RpY2FsbHkgb3ZlcmxhcCBpbiB0aGUgc2luZ2xlCiAg
ICAgICAgICAgICAvLyBpZGVudGlmaWVyIGNhc2UuIExldCdzIGNvbnNpZGVyIHRoZSBwb3NzaWJp
bGl0aWVzOgpAQCAtMjE0LDI4ICsyNjIsNDIgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3Jp
Z2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgLy8g
SW4gdGhlIGZ1dHVyZSB3ZSdsbCBhbGxvdyBjb25zdGV4cHJzIHRvIGRvIG1vcmUgdGhpbmdzLCBh
bmQgdGhlbiB3ZSdsbCBzdGlsbCBoYXZlCiAgICAgICAgICAgICAvLyB0aGUgcHJvYmxlbSB0aGF0
IHNvbWV0aGluZyBvZiB0aGUgZm9ybSBUWzFdWzJdWzNdLi4uIGNhbiBlaXRoZXIgYmUgYSB0eXBl
IG9yIGEKICAgICAgICAgICAgIC8vIGNvbnN0ZXhwciwgYW5kIHdlIGNhbiBmaWd1cmUgb3V0IGlu
IHRoZSBjaGVja2VyIHdoaWNoIGl0IGlzLgotICAgICAgICAgICAgbGV0IHR5cGVSZWYgPSBsZXhl
ci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7CisgICAgICAgICAgICBsZXQgdHlwZVJlZiA9IGJh
Y2t0cmFja2luZ1Njb3BlKCgpID0+IHsKICAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gY29u
c3VtZUtpbmQoImlkZW50aWZpZXIiKTsKLSAgICAgICAgICAgICAgICBhc3NlcnROZXh0KCIsIiwg
Ij4iLCAiPj4iKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAg
ICAgIGxldCBtYXliZUVycm9yID0gYXNzZXJ0TmV4dCgiLCIsICI+IiwgIj4+Iik7CisgICAgICAg
ICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICAgICAgICAgIHJldHVybiBu
ZXcgVHlwZVJlZihyZXN1bHQsIHJlc3VsdC50ZXh0KTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgaWYgKHR5cGVSZWYpCiAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2godHlwZVJlZik7
CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgY29uc3RleHByID0gbGV4
ZXIuYmFja3RyYWNraW5nU2NvcGUoKCkgPT4geworICAgICAgICAgICAgICAgIGxldCBjb25zdGV4
cHIgPSBiYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIGxldCBy
ZXN1bHQgPSBwYXJzZUNvbnN0ZXhwcigpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnROZXh0
KCIsIiwgIj4iLCAiPj4iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gYXNzZXJ0TmV4dCgiLCIsICI+
IiwgIj4+Iik7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0ZXhwcikKICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LnB1c2goY29uc3RleHByKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlVHlwZSgpKTsKKyAgICAgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2go
dHlwZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KCF0cnlDb25zdW1lKCIsIikpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAg
ICAgICAgY29uc3VtZUVuZE9mVHlwZUFyZ3MoKTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1
bWVFbmRPZlR5cGVBcmdzKCk7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogICAgIApAQCAtMjQ4LDcgKzMxMCwxMSBAQCBmdW5jdGlvbiBwYXJz
ZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgICAgICAgICBhZGRyZXNzU3BhY2UgPSB0b2tlbi50ZXh0OwogICAgICAgICAKICAgICAgICAg
bGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICBpZiAobmFtZSBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAg
ICBsZXQgdHlwZUFyZ3VtZW50cyA9IHBhcnNlVHlwZUFyZ3VtZW50cygpOworICAgICAgICBpZiAo
dHlwZUFyZ3VtZW50cyBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVy
biB0eXBlQXJndW1lbnRzOwogICAgICAgICBsZXQgdHlwZSA9IG5ldyBUeXBlUmVmKG5hbWUsIG5h
bWUudGV4dCwgdHlwZUFyZ3VtZW50cyk7CiAgICAgICAgIAogICAgICAgICBmdW5jdGlvbiBnZXRB
ZGRyZXNzU3BhY2UoKQpAQCAtMjU2LDcgKzMyMiwxMCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFt
LCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAg
ICBhZGRyZXNzU3BhY2VDb25zdW1lZCA9IHRydWU7CiAgICAgICAgICAgICBpZiAoYWRkcmVzc1Nw
YWNlKQogICAgICAgICAgICAgICAgIHJldHVybiBhZGRyZXNzU3BhY2U7Ci0gICAgICAgICAgICBy
ZXR1cm4gY29uc3VtZSguLi5hZGRyZXNzU3BhY2VzKS50ZXh0OworICAgICAgICAgICAgbGV0IGNv
bnN1bWVkQWRkcmVzc1NwYWNlID0gY29uc3VtZSguLi5hZGRyZXNzU3BhY2VzKTsKKyAgICAgICAg
ICAgIGlmIChjb25zdW1lZEFkZHJlc3NTcGFjZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gY29uc3VtZWRBZGRyZXNzU3BhY2U7CisgICAgICAgICAgICBy
ZXR1cm4gY29uc3VtZWRBZGRyZXNzU3BhY2UudGV4dDsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgY29uc3QgdHlwZUNvbnN0cnVjdG9yU3RhY2sgPSBbIF07CkBAIC0yNjUsMjYgKzMzNCwz
NCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1i
ZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAiKiIpIHsKICAg
ICAgICAgICAgICAgICAvLyBMaWtld2lzZSwgdGhlIGFkZHJlc3Mgc3BhY2UgbXVzdCBiZSBwYXJz
ZWQgYmVmb3JlIHBhcnNpbmcgY29udGludWVzLgogICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJl
c3NTcGFjZSA9IGdldEFkZHJlc3NTcGFjZSgpOworICAgICAgICAgICAgICAgIGlmIChhZGRyZXNz
U3BhY2UgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBhZGRyZXNzU3BhY2U7CiAgICAgICAgICAgICAgICAgdHlwZUNvbnN0cnVjdG9yU3RhY2sudW5z
aGlmdCh0eXBlID0+IG5ldyBQdHJUeXBlKHRva2VuLCBhZGRyZXNzU3BhY2UsIHR5cGUpKTsKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KHRyeUNvbnN1bWUoIl0iKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NTcGFjZSA9
IGdldEFkZHJlc3NTcGFjZSgpOworICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzU3BhY2UgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGRyZXNz
U3BhY2U7CiAgICAgICAgICAgICAgICAgdHlwZUNvbnN0cnVjdG9yU3RhY2sudW5zaGlmdCh0eXBl
ID0+IG5ldyBBcnJheVJlZlR5cGUodG9rZW4sIGFkZHJlc3NTcGFjZSwgdHlwZSkpOwogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjb25zdCBs
ZW5ndGhFeHByID0gcGFyc2VDb25zdGV4cHIoKTsKKyAgICAgICAgICAgIGlmIChsZW5ndGhFeHBy
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBsZW5ndGhF
eHByOwogICAgICAgICAgICAgdHlwZUNvbnN0cnVjdG9yU3RhY2sudW5zaGlmdCh0eXBlID0+IG5l
dyBBcnJheVR5cGUodG9rZW4sIHR5cGUsIGxlbmd0aEV4cHIpKTsKLSAgICAgICAgICAgIGNvbnN1
bWUoIl0iKTsKKyAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiXSIpOworICAg
ICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGxl
dCBjb25zdHJ1Y3RvciBvZiB0eXBlQ29uc3RydWN0b3JTdGFjaykKICAgICAgICAgICAgIHR5cGUg
PSBjb25zdHJ1Y3Rvcih0eXBlKTsKIAogICAgICAgICBpZiAoYWRkcmVzc1NwYWNlICYmICFhZGRy
ZXNzU3BhY2VDb25zdW1lZCkKLSAgICAgICAgICAgIGxleGVyLmZhaWwoIkFkZHJlc3Mgc3BhY2Ug
c3BlY2lmaWVkIGZvciB0eXBlIHRoYXQgZG9lcyBub3QgbmVlZCBhZGRyZXNzIHNwYWNlIik7Cisg
ICAgICAgICAgICByZXR1cm4gZmFpbCgiQWRkcmVzcyBzcGFjZSBzcGVjaWZpZWQgZm9yIHR5cGUg
dGhhdCBkb2VzIG5vdCBuZWVkIGFkZHJlc3Mgc3BhY2UiKTsKIAogICAgICAgICByZXR1cm4gdHlw
ZTsKICAgICB9CkBAIC0yOTIsMTYgKzM2OSwyOSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBv
cmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgZnVuY3Rpb24g
cGFyc2VUeXBlRGVmKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJ0eXBl
ZGVmIik7Ci0gICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50ZXh0
OwotICAgICAgICBjb25zdW1lKCI9Iik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5
YmVFcnJvciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CisgICAgICAgIGxldCBuYW1lID0gbWF5YmVFcnJvci50ZXh0OworICAgICAgICBtYXliZUVy
cm9yID0gY29uc3VtZSgiPSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQg
dHlwZSA9IHBhcnNlVHlwZSgpOwotICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmICh0
eXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHR5cGU7Cisg
ICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CiAgICAgICAgIHJldHVybiBuZXcgVHlwZURlZihvcmlnaW4sIG5hbWUsIHR5cGUpOwogICAgIH0K
LSAgICAKKwogICAgIGZ1bmN0aW9uIGdlbmVyaWNQYXJzZUxlZnQodGV4dHMsIG5leHRQYXJzZXIs
IGNvbnN0cnVjdG9yKQogICAgIHsKICAgICAgICAgbGV0IGxlZnQgPSBuZXh0UGFyc2VyKCk7Cisg
ICAgICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIGxlZnQ7CiAgICAgICAgIGxldCB0b2tlbjsKICAgICAgICAgd2hpbGUgKHRva2VuID0gdHJ5
Q29uc3VtZSguLi50ZXh0cykpCiAgICAgICAgICAgICBsZWZ0ID0gY29uc3RydWN0b3IodG9rZW4s
IGxlZnQsIG5leHRQYXJzZXIoKSk7CkBAIC0zMjIsMTcgKzQxMiwyNSBAQCBmdW5jdGlvbiBwYXJz
ZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgICAgICAgICBsZXQgYXJndW1lbnRMaXN0ID0gW107CiAgICAgICAgICAgICB3aGlsZSAoIXRl
c3QoIikiKSkgewogICAgICAgICAgICAgICAgIGxldCBhcmd1bWVudCA9IHBhcnNlUG9zc2libGVB
c3NpZ25tZW50KCk7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50IGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJndW1lbnQ7CiAgICAgICAg
ICAgICAgICAgYXJndW1lbnRMaXN0LnB1c2goYXJndW1lbnQpOwogICAgICAgICAgICAgICAgIGlm
ICghdHJ5Q29uc3VtZSgiLCIpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGNvbnN1bWUoIikiKTsKKyAgICAgICAgICAgIGxldCBtYXliZUVy
cm9yID0gY29uc3VtZSgiKSIpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAg
ICAgICAgICByZXR1cm4gbmV3IENhbGxFeHByZXNzaW9uKG9yaWdpbiwgY2FsbE5hbWUsIGFyZ3Vt
ZW50TGlzdCk7CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgbmFtZSA9IGxleGVyLmJhY2t0cmFj
a2luZ1Njb3BlKCgpID0+IHsKKyAgICAgICAgbGV0IG5hbWUgPSBiYWNrdHJhY2tpbmdTY29wZSgo
KSA9PiB7CiAgICAgICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7
Ci0gICAgICAgICAgICBjb25zdW1lKCIoIik7CisgICAgICAgICAgICBpZiAobmFtZSBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAg
ICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
eWJlRXJyb3I7CiAgICAgICAgICAgICByZXR1cm4gbmFtZTsKICAgICAgICAgfSk7CiAKQEAgLTM0
MSw3ICs0MzksMTEgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5k
LCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxldCByZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7
Ci0gICAgICAgICAgICBjb25zdW1lKCIoIik7CisgICAgICAgICAgICBpZiAocmV0dXJuVHlwZSBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVHlw
ZTsKKyAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICAg
ICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcGFyc2VBcmd1
bWVudHMocmV0dXJuVHlwZS5vcmlnaW4sICJvcGVyYXRvciBjYXN0Iik7CiAgICAgICAgICAgICBy
ZXN1bHQuc2V0Q2FzdERhdGEocmV0dXJuVHlwZSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtMzUwLDEyICs0NTIsMjAgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBv
cmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgIAogICAgIGZ1bmN0aW9uIGlz
Q2FsbEV4cHJlc3Npb24oKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGxleGVyLnRlc3RTY29wZSgo
KSA9PiB7Ci0gICAgICAgICAgICAgICAgY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKLSAgICAg
ICAgICAgICAgICBjb25zdW1lKCIoIik7Ci0gICAgICAgICAgICB9KSB8fCBsZXhlci50ZXN0U2Nv
cGUoKCkgPT4gewotICAgICAgICAgICAgICAgIHBhcnNlVHlwZSgpOwotICAgICAgICAgICAgICAg
IGNvbnN1bWUoIigiKTsKKyAgICAgICAgcmV0dXJuIHRlc3RTY29wZSgoKSA9PiB7CisgICAgICAg
ICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAg
ICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgICAgICBtYXli
ZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKKyAgICAgICAgICAgIH0pIHx8IHRlc3RTY29wZSgoKSA9PiB7CisgICAgICAgICAgICAg
ICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZSBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGU7Cisg
ICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgICAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICAgICAgfSk7CiAgICAgfQogICAg
IApAQCAtMzk1LDExICs1MDUsMTggQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBv
cmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgY2FzZSAiLT4i
OgogICAgICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICItPiIpCiAgICAgICAgICAgICAg
ICAgICAgIGxlZnQgPSBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9uKHRva2VuLCBsZWZ0KTsKLSAg
ICAgICAgICAgICAgICBsZWZ0ID0gbmV3IERvdEV4cHJlc3Npb24odG9rZW4sIGxlZnQsIGNvbnN1
bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dCk7CisgICAgICAgICAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICAgICAgICAgIGlmIChtYXli
ZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgICAgICBsZWZ0ID0gbmV3IERvdEV4cHJlc3Npb24o
dG9rZW4sIGxlZnQsIG1heWJlRXJyb3IudGV4dCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlICJbIjogewogICAgICAgICAgICAgICAgIGxldCBpbmRleCA9IHBhcnNl
RXhwcmVzc2lvbigpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAg
ICAgICBpZiAoaW5kZXggaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIl0iKTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAg
ICAgICAgICAgbGVmdCA9IG5ldyBJbmRleEV4cHJlc3Npb24odG9rZW4sIGxlZnQsIGluZGV4KTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQxNyw5ICs1MzQsMTQg
QEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVy
T2Zmc2V0LCB0ZXh0KQogICAgICAgICBsZXQgbGVmdDsKICAgICAgICAgaWYgKGlzQ2FsbEV4cHJl
c3Npb24oKSkgewogICAgICAgICAgICAgbGVmdCA9IHBhcnNlQ2FsbEV4cHJlc3Npb24oKTsKKyAg
ICAgICAgICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
ICAgIHJldHVybiBsZWZ0OwogICAgICAgICAgICAgYWNjZXB0YWJsZU9wZXJhdG9ycyA9IGxpbWl0
ZWRPcGVyYXRvcnM7Ci0gICAgICAgIH0gZWxzZQorICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgbGVmdCA9IHBhcnNlVGVybSgpOworICAgICAgICAgICAgaWYgKGxlZnQgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQ7CisgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIHJldHVybiBwYXJzZVN1ZmZpeE9wZXJhdG9yKGxlZnQsIGFjY2VwdGFi
bGVPcGVyYXRvcnMpOwogICAgIH0KQEAgLTQzNSw3ICs1NTcsMTEgQEAgZnVuY3Rpb24gcGFyc2Uo
cHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAg
IGZ1bmN0aW9uIHBhcnNlUHJlSW5jcmVtZW50KCkKICAgICB7CiAgICAgICAgIGxldCB0b2tlbiA9
IGNvbnN1bWUoIisrIiwgIi0tIik7CisgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgbGV0IGxlZnQgPSBw
YXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgICAgIHJldHVybiBmaW5pc2hQ
YXJzaW5nUHJlSW5jcmVtZW50KHRva2VuLCBsZWZ0KTsKICAgICB9CiAgICAgCkBAIC00NDQsMTYg
KzU3MCwzMCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxp
bmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIGxldCB0b2tlbjsKICAgICAgICAgaWYgKHRl
c3QoIisrIiwgIi0tIikpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VQcmVJbmNyZW1lbnQoKTsK
LSAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiKyIsICItIiwgIn4iKSkKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50
ZXh0LCBbcGFyc2VQb3NzaWJsZVByZWZpeCgpXSk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNv
bnN1bWUoIioiKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9u
KHRva2VuLCBwYXJzZVBvc3NpYmxlUHJlZml4KCkpOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlD
b25zdW1lKCImIikpCi0gICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VQdHJFeHByZXNzaW9uKHRv
a2VuLCBwYXJzZVBvc3NpYmxlUHJlZml4KCkpOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25z
dW1lKCJAIikpCi0gICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VBcnJheVJlZkV4cHJlc3Npb24o
dG9rZW4sIHBhcnNlUG9zc2libGVQcmVmaXgoKSk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNv
bnN1bWUoIiEiKSkgeworICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIrIiwgIi0iLCAi
fiIpKSB7CisgICAgICAgICAgICBsZXQgcG9zc2libGVQcmVmaXggPSBwYXJzZVBvc3NpYmxlUHJl
Zml4KCk7CisgICAgICAgICAgICBpZiAocG9zc2libGVQcmVmaXggaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdTeW50YXhFcnJvcjsKKyAgICAgICAgICAg
IHJldHVybiBuZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0
LCBbcG9zc2libGVQcmVmaXhdKTsKKyAgICAgICAgfSBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIq
IikpIHsKKyAgICAgICAgICAgIGxldCBwb3NzaWJsZVByZWZpeCA9IHBhcnNlUG9zc2libGVQcmVm
aXgoKTsKKyAgICAgICAgICAgIGlmIChwb3NzaWJsZVByZWZpeCBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1N5bnRheEVycm9yOworICAgICAgICAgICAg
cmV0dXJuIG5ldyBEZXJlZmVyZW5jZUV4cHJlc3Npb24odG9rZW4sIHBvc3NpYmxlUHJlZml4KTsK
KyAgICAgICAgfSBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCImIikpIHsKKyAgICAgICAgICAgIGxl
dCBwb3NzaWJsZVByZWZpeCA9IHBhcnNlUG9zc2libGVQcmVmaXgoKTsKKyAgICAgICAgICAgIGlm
IChwb3NzaWJsZVByZWZpeCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gV1N5bnRheEVycm9yOworICAgICAgICAgICAgcmV0dXJuIG5ldyBNYWtlUHRyRXhw
cmVzc2lvbih0b2tlbiwgcG9zc2libGVQcmVmaXgpOworICAgICAgICB9IGlmICh0b2tlbiA9IHRy
eUNvbnN1bWUoIkAiKSkgeworICAgICAgICAgICAgbGV0IHBvc3NpYmxlUHJlZml4ID0gcGFyc2VQ
b3NzaWJsZVByZWZpeCgpOworICAgICAgICAgICAgaWYgKHBvc3NpYmxlUHJlZml4IGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBXU3ludGF4RXJyb3I7Cisg
ICAgICAgICAgICByZXR1cm4gbmV3IE1ha2VBcnJheVJlZkV4cHJlc3Npb24odG9rZW4sIHBvc3Np
YmxlUHJlZml4KTsKKyAgICAgICAgfSBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIhIikpIHsKICAg
ICAgICAgICAgIGxldCByZW1haW5kZXIgPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAg
ICAgICBpZiAocmVtYWluZGVyIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
ICAgIHJldHVybiByZW1haW5kZXI7CiAgICAgICAgICAgICByZXR1cm4gbmV3IExvZ2ljYWxOb3Qo
dG9rZW4sIG5ldyBDYWxsRXhwcmVzc2lvbihyZW1haW5kZXIub3JpZ2luLCAiYm9vbCIsIFtyZW1h
aW5kZXJdKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHBhcnNlUG9zc2libGVTdWZmaXgo
KTsKQEAgLTUyNiwyNyArNjY2LDQ0IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwg
b3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICBmdW5jdGlvbiBwYXJzZVBv
c3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKCkKICAgICB7CiAgICAgICAgIGxldCBwcmVkaWNhdGUg
PSBwYXJzZVBvc3NpYmxlTG9naWNhbE9yKCk7CisgICAgICAgIGlmIChwcmVkaWNhdGUgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gcHJlZGljYXRlOwogICAgICAg
ICBsZXQgb3BlcmF0b3IgPSB0cnlDb25zdW1lKCI/Iik7CiAgICAgICAgIGlmICghb3BlcmF0b3Ip
CiAgICAgICAgICAgICByZXR1cm4gcHJlZGljYXRlOwogICAgICAgICBsZXQgYm9keUV4cHJlc3Np
b24gPSBwYXJzZVBvc3NpYmxlQXNzaWdubWVudCgpOwotICAgICAgICBjb25zdW1lKCI6Iik7Cisg
ICAgICAgIGlmIChib2R5RXhwcmVzc2lvbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgIHJldHVybiBib2R5RXhwcmVzc2lvbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBj
b25zdW1lKCI6Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBlbHNlRXhw
cmVzc2lvbiA9IHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCk7CisgICAgICAgIGlmIChlbHNlRXhw
cmVzc2lvbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBlbHNl
RXhwcmVzc2lvbjsKICAgICAgICAgcmV0dXJuIG5ldyBUZXJuYXJ5RXhwcmVzc2lvbihvcGVyYXRv
ciwgcHJlZGljYXRlLCBib2R5RXhwcmVzc2lvbiwgZWxzZUV4cHJlc3Npb24pOwogICAgIH0KICAg
ICAKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlQXNzaWdubWVudChtb2RlKQogICAgIHsKICAg
ICAgICAgbGV0IGxocyA9IHBhcnNlUG9zc2libGVUZXJuYXJ5Q29uZGl0aW9uYWwoKTsKKyAgICAg
ICAgaWYgKGxocyBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBs
aHM7CiAgICAgICAgIGxldCBvcGVyYXRvciA9IHRyeUNvbnN1bWUoIj0iLCAiKz0iLCAiLT0iLCAi
Kj0iLCAiLz0iLCAiJT0iLCAiXj0iLCAifD0iLCAiJj0iKTsKICAgICAgICAgaWYgKCFvcGVyYXRv
cikgewogICAgICAgICAgICAgaWYgKG1vZGUgPT0gInJlcXVpcmVkIikKLSAgICAgICAgICAgICAg
ICBsZXhlci5mYWlsKCJFeHBlY3RlZCBhc3NpZ25tZW50OiAiICsgbGV4ZXIuX3RleHQuc3Vic3Ry
aW5nKGxleGVyLl9pbmRleCkpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWlsKCJFeHBlY3Rl
ZCBhc3NpZ25tZW50OiAiICsgbGV4ZXIuX3RleHQuc3Vic3RyaW5nKGxleGVyLl9pbmRleCkpOwog
ICAgICAgICAgICAgcmV0dXJuIGxoczsKICAgICAgICAgfQotICAgICAgICBpZiAob3BlcmF0b3Iu
dGV4dCA9PSAiPSIpCi0gICAgICAgICAgICByZXR1cm4gbmV3IEFzc2lnbm1lbnQob3BlcmF0b3Is
IGxocywgcGFyc2VQb3NzaWJsZUFzc2lnbm1lbnQoKSk7Ci0gICAgICAgIHJldHVybiBmaW5pc2hQ
YXJzaW5nUHJlSW5jcmVtZW50KG9wZXJhdG9yLCBsaHMsIHBhcnNlUG9zc2libGVBc3NpZ25tZW50
KCkpOworICAgICAgICBpZiAob3BlcmF0b3IudGV4dCA9PSAiPSIpIHsKKyAgICAgICAgICAgIGxl
dCBpbm5lckFzc2lnbm1lbnQgPSBwYXJzZVBvc3NpYmxlQXNzaWdubWVudCgpOworICAgICAgICAg
ICAgaWYgKGlubmVyQXNzaWdubWVudCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gaW5uZXJBc3NpZ25tZW50OworICAgICAgICAgICAgcmV0dXJuIG5ldyBB
c3NpZ25tZW50KG9wZXJhdG9yLCBsaHMsIGlubmVyQXNzaWdubWVudCk7CisgICAgICAgIH0KKyAg
ICAgICAgbGV0IGlubmVyQXNzaWdubWVudCA9IHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCk7Cisg
ICAgICAgIGlmIChpbm5lckFzc2lnbm1lbnQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gaW5uZXJBc3NpZ25tZW50OworICAgICAgICByZXR1cm4gZmluaXNoUGFy
c2luZ1ByZUluY3JlbWVudChvcGVyYXRvciwgbGhzLCBpbm5lckFzc2lnbm1lbnQpOwogICAgIH0K
ICAgICAKICAgICBmdW5jdGlvbiBwYXJzZUFzc2lnbm1lbnQoKQpAQCAtNTU2LDggKzcxMywxNSBA
QCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJP
ZmZzZXQsIHRleHQpCiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VQb3N0SW5jcmVtZW50KCkKICAg
ICB7Ci0gICAgICAgIGxldCBsZWZ0ID0gcGFyc2VTdWZmaXhPcGVyYXRvcihwYXJzZVRlcm0oKSwg
Ii4iLCAiLT4iLCAiWyIpOworICAgICAgICBsZXQgdGVybSA9IHBhcnNlVGVybSgpOworICAgICAg
ICBpZiAodGVybSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB0
ZXJtOworICAgICAgICBsZXQgbGVmdCA9IHBhcnNlU3VmZml4T3BlcmF0b3IodGVybSwgIi4iLCAi
LT4iLCAiWyIpOworICAgICAgICBpZiAobGVmdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgIHJldHVybiBsZWZ0OwogICAgICAgICBsZXQgdG9rZW4gPSBjb25zdW1lKCIrKyIs
ICItLSIpOworICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgICAgIHJldHVybiBmaW5pc2hQYXJzaW5nUG9zdElu
Y3JlbWVudCh0b2tlbiwgbGVmdCk7CiAgICAgfQogICAgIApAQCAtNTY1LDEwICs3MjksMTAgQEAg
ZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zm
c2V0LCB0ZXh0KQogICAgIHsKICAgICAgICAgaWYgKGlzQ2FsbEV4cHJlc3Npb24oKSkKICAgICAg
ICAgICAgIHJldHVybiBwYXJzZUNhbGxFeHByZXNzaW9uKCk7Ci0gICAgICAgIGxldCBwcmVJbmNy
ZW1lbnQgPSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZShwYXJzZVByZUluY3JlbWVudCk7CisgICAg
ICAgIGxldCBwcmVJbmNyZW1lbnQgPSBiYWNrdHJhY2tpbmdTY29wZShwYXJzZVByZUluY3JlbWVu
dCk7CiAgICAgICAgIGlmIChwcmVJbmNyZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gcHJlSW5j
cmVtZW50OwotICAgICAgICBsZXQgcG9zdEluY3JlbWVudCA9IGxleGVyLmJhY2t0cmFja2luZ1Nj
b3BlKHBhcnNlUG9zdEluY3JlbWVudCk7CisgICAgICAgIGxldCBwb3N0SW5jcmVtZW50ID0gYmFj
a3RyYWNraW5nU2NvcGUocGFyc2VQb3N0SW5jcmVtZW50KTsKICAgICAgICAgaWYgKHBvc3RJbmNy
ZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gcG9zdEluY3JlbWVudDsKICAgICAgICAgcmV0dXJu
IHBhcnNlQXNzaWdubWVudCgpOwpAQCAtNTc5LDExICs3NDMsMTYgQEAgZnVuY3Rpb24gcGFyc2Uo
cHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAg
ICAgICBsZXQgbGlzdCA9IFtdOwogICAgICAgICBsZXQgb3JpZ2luID0gbGV4ZXIucGVlaygpOwog
ICAgICAgICBpZiAoIW9yaWdpbikKLSAgICAgICAgICAgIGxleGVyLmZhaWwoIlVuZXhwZWN0ZWQg
ZW5kIG9mIGZpbGUiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWlsKCJVbmV4cGVjdGVkIGVuZCBv
ZiBmaWxlIik7CiAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIGxldCBlZmZlY3RmdWxF
eHByZXNzaW9uID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUoKCkgPT4gewotICAgICAgICAgICAg
ICAgIHBhcnNlRWZmZWN0ZnVsRXhwcmVzc2lvbigpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUo
IiwiKTsKKyAgICAgICAgICAgIGxldCBlZmZlY3RmdWxFeHByZXNzaW9uID0gYmFja3RyYWNraW5n
U2NvcGUoKCkgPT4geworICAgICAgICAgICAgICAgIGxldCBlZmZlY3RmdWxFeHByZXNzaW9uID0g
cGFyc2VFZmZlY3RmdWxFeHByZXNzaW9uKCk7CisgICAgICAgICAgICAgICAgaWYgKGVmZmVjdGZ1
bEV4cHJlc3Npb24gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBlZmZlY3RmdWxFeHByZXNzaW9uOworICAgICAgICAgICAgICAgIGxldCBtYXliZUVy
cm9yID0gY29uc3VtZSgiLCIpOworICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKKyAgICAgICAgICAgICAgICByZXR1cm4gZWZmZWN0ZnVsRXhwcmVzc2lvbjsKICAgICAgICAg
ICAgIH0pOwogICAgICAgICAgICAgaWYgKCFlZmZlY3RmdWxFeHByZXNzaW9uKSB7CiAgICAgICAg
ICAgICAgICAgbGV0IGZpbmFsID0gZmluYWxFeHByZXNzaW9uUGFyc2VyKCk7CkBAIC02MTIsNzUg
Kzc4MSwxMjcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBs
aW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgIGZ1bmN0aW9uIHBhcnNlRWZmZWN0ZnVsU3RhdGVt
ZW50KCkKICAgICB7CiAgICAgICAgIGxldCByZXN1bHQgPSBnZW5lcmljUGFyc2VDb21tYUV4cHJl
c3Npb24ocGFyc2VFZmZlY3RmdWxFeHByZXNzaW9uKTsKLSAgICAgICAgY29uc3VtZSgiOyIpOwor
ICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7Cisg
ICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAg
IAogICAgIGZ1bmN0aW9uIHBhcnNlUmV0dXJuKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4g
PSBjb25zdW1lKCJyZXR1cm4iKTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CiAgICAgICAgIGlmICh0cnlDb25z
dW1lKCI7IikpCiAgICAgICAgICAgICByZXR1cm4gbmV3IFJldHVybihvcmlnaW4sIG51bGwpOwog
ICAgICAgICBsZXQgZXhwcmVzc2lvbiA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBjb25z
dW1lKCI7Iik7CisgICAgICAgIGlmIChleHByZXNzaW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgcmV0dXJuIGV4cHJlc3Npb247CisgICAgICAgIGxldCBtYXliZUVycm9y
ID0gY29uc3VtZSgiOyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4g
bmV3IFJldHVybihvcmlnaW4sIGV4cHJlc3Npb24pOwogICAgIH0KICAgICAKICAgICBmdW5jdGlv
biBwYXJzZUJyZWFrKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJicmVh
ayIpOwotICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQg
bWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAg
ICAgcmV0dXJuIG5ldyBCcmVhayhvcmlnaW4pOwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBw
YXJzZUNvbnRpbnVlKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJjb250
aW51ZSIpOwotICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAgICAgICBs
ZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAg
ICAgICAgcmV0dXJuIG5ldyBDb250aW51ZShvcmlnaW4pOwogICAgIH0KIAogICAgIGZ1bmN0aW9u
IHBhcnNlSWZTdGF0ZW1lbnQoKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUo
ImlmIik7Ci0gICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CisgICAgICAgIGxl
dCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAg
ICAgICBsZXQgY29uZGl0aW9uYWwgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgY29uc3Vt
ZSgiKSIpOworICAgICAgICBpZiAoY29uZGl0aW9uYWwgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uYWw7CisgICAgICAgIG1heWJlRXJyb3IgPSBj
b25zdW1lKCIpIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBib2R5ID0g
cGFyc2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gYm9keTsKICAgICAgICAgbGV0IGVsc2VCb2R5OwotICAg
ICAgICBpZiAodHJ5Q29uc3VtZSgiZWxzZSIpKQorICAgICAgICBpZiAodHJ5Q29uc3VtZSgiZWxz
ZSIpKSB7CiAgICAgICAgICAgICBlbHNlQm9keSA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAg
ICAgICBpZiAoZWxzZUJvZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGVsc2VCb2R5OworICAgICAgICB9CiAgICAgICAgIHJldHVybiBuZXcgSWZTdGF0
ZW1lbnQob3JpZ2luLCBuZXcgQ2FsbEV4cHJlc3Npb24oY29uZGl0aW9uYWwub3JpZ2luLCAiYm9v
bCIsIFtjb25kaXRpb25hbF0pLCBib2R5LCBlbHNlQm9keSk7CiAgICAgfQogCiAgICAgZnVuY3Rp
b24gcGFyc2VXaGlsZSgpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgid2hp
bGUiKTsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0
IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAg
ICAgIGxldCBjb25kaXRpb25hbCA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBjb25zdW1l
KCIpIik7CisgICAgICAgIGlmIChjb25kaXRpb25hbCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBjb25kaXRpb25hbDsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNv
bnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IGJvZHkgPSBw
YXJzZVN0YXRlbWVudCgpOworICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBib2R5OwogICAgICAgICByZXR1cm4gbmV3IFdoaWxlTG9v
cChvcmlnaW4sIG5ldyBDYWxsRXhwcmVzc2lvbihjb25kaXRpb25hbC5vcmlnaW4sICJib29sIiwg
W2NvbmRpdGlvbmFsXSksIGJvZHkpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRm9yKCkK
ICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJmb3IiKTsKLSAgICAgICAgY29u
c3VtZSgiKCIpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25z
dW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBpbml0aWFsaXph
dGlvbjsKICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjsiKSkKICAgICAgICAgICAgIGluaXRpYWxp
emF0aW9uID0gdW5kZWZpbmVkOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGluaXRpYWxp
emF0aW9uID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUocGFyc2VWYXJpYWJsZURlY2xzKTsKLSAg
ICAgICAgICAgIGlmICghaW5pdGlhbGl6YXRpb24pCisgICAgICAgICAgICBpbml0aWFsaXphdGlv
biA9IGJhY2t0cmFja2luZ1Njb3BlKHBhcnNlVmFyaWFibGVEZWNscyk7CisgICAgICAgICAgICBp
ZiAoIWluaXRpYWxpemF0aW9uKSB7CiAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gPSBw
YXJzZUVmZmVjdGZ1bFN0YXRlbWVudCgpOworICAgICAgICAgICAgICAgIGlmIChpbml0aWFsaXph
dGlvbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGluaXRpYWxpemF0aW9uOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGxldCBj
b25kaXRpb24gPSB0cnlDb25zdW1lKCI7Iik7CiAgICAgICAgIGlmIChjb25kaXRpb24pCiAgICAg
ICAgICAgICBjb25kaXRpb24gPSB1bmRlZmluZWQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgY29uZGl0aW9uID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICBjb25zdW1lKCI7
Iik7CisgICAgICAgICAgICBpZiAoY29uZGl0aW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgICAgIHJldHVybiBjb25kaXRpb247CisgICAgICAgICAgICBtYXliZUVycm9y
ID0gY29uc3VtZSgiOyIpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAg
ICAgICBjb25kaXRpb24gPSBuZXcgQ2FsbEV4cHJlc3Npb24oY29uZGl0aW9uLm9yaWdpbiwgImJv
b2wiLCBbY29uZGl0aW9uXSk7CiAgICAgICAgIH0KICAgICAgICAgbGV0IGluY3JlbWVudDsKQEAg
LTY4OCw1NiArOTA5LDEwOCBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdp
bktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBpbmNyZW1lbnQgPSB1
bmRlZmluZWQ7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaW5jcmVtZW50ID0gcGFyc2VF
eHByZXNzaW9uKCk7Ci0gICAgICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgICAgICBpZiAo
aW5jcmVtZW50IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVy
biBpbmNyZW1lbnQ7CisgICAgICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKSIpOworICAg
ICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIH0KICAgICAgICAgbGV0IGJvZHkg
PSBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5OwogICAgICAgICByZXR1cm4gbmV3IEZvckxv
b3Aob3JpZ2luLCBpbml0aWFsaXphdGlvbiwgY29uZGl0aW9uLCBpbmNyZW1lbnQsIGJvZHkpOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRG8oKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdp
biA9IGNvbnN1bWUoImRvIik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOwogICAgICAgICBsZXQgYm9keSA9IHBh
cnNlU3RhdGVtZW50KCk7Ci0gICAgICAgIGNvbnN1bWUoIndoaWxlIik7Ci0gICAgICAgIGNvbnN1
bWUoIigiKTsKKyAgICAgICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gYm9keTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJ3
aGlsZSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICBtYXliZUVycm9yID0gY29u
c3VtZSgiKCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgY29uZGl0aW9u
YWwgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBp
ZiAoY29uZGl0aW9uYWwgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1
cm4gY29uZGl0aW9uYWw7CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAg
ICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBuZXcgRG9XaGlsZUxvb3Aob3JpZ2lu
LCBib2R5LCBuZXcgQ2FsbEV4cHJlc3Npb24oY29uZGl0aW9uYWwub3JpZ2luLCAiYm9vbCIsIFtj
b25kaXRpb25hbF0pKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZURl
Y2xzKCkKICAgICB7CiAgICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7CisgICAgICAgIGlm
ICh0eXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHR5cGU7
CiAgICAgICAgIGxldCBsaXN0ID0gW107CiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGxldCBu
YW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgIGlmIChuYW1lIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAg
ICAgICAgICAgbGV0IGluaXRpYWxpemVyID0gdHJ5Q29uc3VtZSgiPSIpID8gcGFyc2VFeHByZXNz
aW9uKCkgOiBudWxsOworICAgICAgICAgICAgaWYgKGluaXRpYWxpemVyIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBpbml0aWFsaXplcjsKICAgICAgICAg
ICAgIGxpc3QucHVzaChuZXcgVmFyaWFibGVEZWNsKG5hbWUsIG5hbWUudGV4dCwgdHlwZSwgaW5p
dGlhbGl6ZXIpKTsKLSAgICAgICAgfSB3aGlsZSAoY29uc3VtZSgiLCIsICI7IikudGV4dCA9PSAi
LCIpOworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIsIiwgIjsiKTsKKyAg
ICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3Iu
dGV4dCAhPSAiLCIpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gd2hpbGUgKHRy
dWUpOwogICAgICAgICByZXR1cm4gbmV3IENvbW1hRXhwcmVzc2lvbih0eXBlLm9yaWdpbiwgbGlz
dCk7CiAgICAgfQogICAgIAogICAgIGZ1bmN0aW9uIHBhcnNlU3dpdGNoQ2FzZSgpCiAgICAgewog
ICAgICAgICBsZXQgdG9rZW4gPSBjb25zdW1lKCJkZWZhdWx0IiwgImNhc2UiKTsKKyAgICAgICAg
aWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRv
a2VuOwogICAgICAgICBsZXQgdmFsdWU7Ci0gICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJjYXNl
IikKKyAgICAgICAgaWYgKHRva2VuLnRleHQgPT0gImNhc2UiKSB7CiAgICAgICAgICAgICB2YWx1
ZSA9IHBhcnNlQ29uc3RleHByKCk7Ci0gICAgICAgIGNvbnN1bWUoIjoiKTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1
cm4gdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI6
Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VCbG9j
a0JvZHkoIn0iLCAiZGVmYXVsdCIsICJjYXNlIik7CisgICAgICAgIGlmIChib2R5IGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGJvZHk7CiAgICAgICAgIHJldHVy
biBuZXcgU3dpdGNoQ2FzZSh0b2tlbiwgdmFsdWUsIGJvZHkpOwogICAgIH0KICAgICAKICAgICBm
dW5jdGlvbiBwYXJzZVN3aXRjaFN0YXRlbWVudCgpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2lu
ID0gY29uc3VtZSgic3dpdGNoIik7Ci0gICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYg
KG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmln
aW47CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICBpZiAo
bWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBt
YXliZUVycm9yOwogICAgICAgICBsZXQgdmFsdWUgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAg
ICAgY29uc3VtZSgiKSIpOwotICAgICAgICBjb25zdW1lKCJ7Iik7CisgICAgICAgIGlmICh2YWx1
ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAg
ICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
KyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoInsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKICAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBTd2l0Y2hTdGF0ZW1lbnQob3JpZ2luLCB2YWx1
ZSk7Ci0gICAgICAgIHdoaWxlICghdHJ5Q29uc3VtZSgifSIpKQotICAgICAgICAgICAgcmVzdWx0
LmFkZChwYXJzZVN3aXRjaENhc2UoKSk7CisgICAgICAgIHdoaWxlICghdHJ5Q29uc3VtZSgifSIp
KSB7CisgICAgICAgICAgICBsZXQgc3dpdGNoQ2FzZSA9IHBhcnNlU3dpdGNoQ2FzZSgpOworICAg
ICAgICAgICAgaWYgKHN3aXRjaENhc2UgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHN3aXRjaENhc2U7CisgICAgICAgICAgICByZXN1bHQuYWRkKHN3aXRj
aENhc2UpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIApA
QCAtNzY2LDEyICsxMDM5LDE0IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3Jp
Z2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIHJldHVybiBwYXJz
ZVN3aXRjaFN0YXRlbWVudCgpOwogICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAidHJhcCIpIHsK
ICAgICAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJ0cmFwIik7CisgICAgICAgICAgICBp
ZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVy
biBvcmlnaW47CiAgICAgICAgICAgICBjb25zdW1lKCI7Iik7CiAgICAgICAgICAgICByZXR1cm4g
bmV3IFRyYXBTdGF0ZW1lbnQob3JpZ2luKTsKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4u
dGV4dCA9PSAieyIpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VCbG9jaygpOwotICAgICAgICBs
ZXQgdmFyaWFibGVEZWNsID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUocGFyc2VWYXJpYWJsZURl
Y2xzKTsKKyAgICAgICAgbGV0IHZhcmlhYmxlRGVjbCA9IGJhY2t0cmFja2luZ1Njb3BlKHBhcnNl
VmFyaWFibGVEZWNscyk7CiAgICAgICAgIGlmICh2YXJpYWJsZURlY2wpCiAgICAgICAgICAgICBy
ZXR1cm4gdmFyaWFibGVEZWNsOwogICAgICAgICByZXR1cm4gcGFyc2VFZmZlY3RmdWxTdGF0ZW1l
bnQoKTsKQEAgLTc4Miw2ICsxMDU3LDggQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2lu
LCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBsZXQgYmxvY2sg
PSBuZXcgQmxvY2sob3JpZ2luKTsKICAgICAgICAgd2hpbGUgKCF0ZXN0KC4uLnRlcm1pbmF0b3Jz
KSkgewogICAgICAgICAgICAgbGV0IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAg
ICAgICAgICBpZiAoc3RhdGVtZW50IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgICAgIHJldHVybiBzdGF0ZW1lbnQ7CiAgICAgICAgICAgICBpZiAoc3RhdGVtZW50KQogICAg
ICAgICAgICAgICAgIGJsb2NrLmFkZChzdGF0ZW1lbnQpOwogICAgICAgICB9CkBAIC03OTEsMjgg
KzEwNjgsNDMgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBs
aW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgIGZ1bmN0aW9uIHBhcnNlQmxvY2soKQogICAgIHsK
ICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoInsiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CiAgICAg
ICAgIGxldCBibG9jayA9IHBhcnNlQmxvY2tCb2R5KCJ9Iik7Ci0gICAgICAgIGNvbnN1bWUoIn0i
KTsKKyAgICAgICAgaWYgKGJsb2NrIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIGJsb2NrOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIn0iKTsK
KyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgIH0KICAg
ICAKICAgICBmdW5jdGlvbiBwYXJzZVBhcmFtZXRlcigpCiAgICAgewogICAgICAgICBsZXQgdHlw
ZSA9IHBhcnNlVHlwZSgpOworICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiB0eXBlOwogICAgICAgICBsZXQgbmFtZSA9IHRyeUNvbnN1
bWVLaW5kKCJpZGVudGlmaWVyIik7CiAgICAgICAgIHJldHVybiBuZXcgRnVuY1BhcmFtZXRlcih0
eXBlLm9yaWdpbiwgbmFtZSA/IG5hbWUudGV4dCA6IG51bGwsIHR5cGUpOwogICAgIH0KICAgICAK
ICAgICBmdW5jdGlvbiBwYXJzZVBhcmFtZXRlcnMoKQogICAgIHsKLSAgICAgICAgY29uc3VtZSgi
KCIpOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYg
KG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
bWF5YmVFcnJvcjsKICAgICAgICAgbGV0IHBhcmFtZXRlcnMgPSBbXTsKICAgICAgICAgd2hpbGUg
KCF0ZXN0KCIpIikpIHsKLSAgICAgICAgICAgIHBhcmFtZXRlcnMucHVzaChwYXJzZVBhcmFtZXRl
cigpKTsKKyAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJzZVBhcmFtZXRlcigpOworICAg
ICAgICAgICAgaWYgKHBhcmFtZXRlciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcGFyYW1ldGVyOworICAgICAgICAgICAgcGFyYW1ldGVycy5wdXNoKHBh
cmFtZXRlcik7CiAgICAgICAgICAgICBpZiAoIXRyeUNvbnN1bWUoIiwiKSkKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgIG1h
eWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAg
IHJldHVybiBwYXJhbWV0ZXJzOwogICAgIH0KICAgICAKQEAgLTgyMCwyMyArMTExMiwzNiBAQCBm
dW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZz
ZXQsIHRleHQpCiAgICAgewogICAgICAgICBpZiAodHJ5Q29uc3VtZSgib3BlcmF0b3IiKSkgewog
ICAgICAgICAgICAgbGV0IHRva2VuID0gY29uc3VtZSgiKyIsICItIiwgIioiLCAiLyIsICIlIiwg
Il4iLCAiJiIsICJ8IiwgIjwiLCAiPiIsICI8PSIsICI+PSIsICI9PSIsICIrKyIsICItLSIsICIu
IiwgIn4iLCAiPDwiLCAiPj4iLCAiWyIpOworICAgICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAg
ICAgIGlmICh0b2tlbi50ZXh0ID09ICImIikgewogICAgICAgICAgICAgICAgIGlmICh0cnlDb25z
dW1lKCJbIikpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3VtZSgiXSIpOworICAgICAgICAg
ICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuICJvcGVyYXRvciZbXSI7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlm
ICh0cnlDb25zdW1lKCIuIikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3Im
LiIgKyBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQ7CisgICAgICAgICAgICAgICAgaWYg
KHRyeUNvbnN1bWUoIi4iKSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9
IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXli
ZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3Im
LiIgKyBtYXliZUVycm9yLnRleHQ7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IHJldHVybiAib3BlcmF0b3ImIjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0b2tl
bi50ZXh0ID09ICIuIikgewotICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAib3BlcmF0b3Iu
IiArIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dDsKKyAgICAgICAgICAgICAgICBsZXQg
bWF5YmVFcnJvciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgICAgICAgICAg
aWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAib3Bl
cmF0b3IuIiArIG1heWJlRXJyb3IudGV4dDsKICAgICAgICAgICAgICAgICBpZiAodHJ5Q29uc3Vt
ZSgiPSIpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIj0iOwogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAodG9rZW4u
dGV4dCA9PSAiWyIpIHsKLSAgICAgICAgICAgICAgICBjb25zdW1lKCJdIik7CisgICAgICAgICAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJdIik7CisgICAgICAgICAgICAgICAgaWYg
KG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBtYXliZUVycm9yOwogICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAib3BlcmF0
b3JbXSI7CiAgICAgICAgICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIj0iKSkKICAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ICs9ICI9IjsKQEAgLTg0NCw3ICsxMTQ5LDEwIEBAIGZ1bmN0aW9uIHBh
cnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3IiICsgdG9rZW4udGV4
dDsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50
ZXh0OworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7
CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgIHJldHVybiBtYXliZUVycm9yLnRleHQ7
CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VGdW5jRGVjbCgpCkBAIC04NTgsNjMgKzExNjYs
MTAzIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51
bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgaWYgKG9wZXJhdG9yVG9rZW4pIHsKICAgICAgICAg
ICAgIG9yaWdpbiA9IG9wZXJhdG9yVG9rZW47CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gcGFy
c2VUeXBlKCk7CisgICAgICAgICAgICBpZiAocmV0dXJuVHlwZSBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0dXJuVHlwZTsKICAgICAgICAgICAgIG5h
bWUgPSAib3BlcmF0b3IgY2FzdCI7CiAgICAgICAgICAgICBpc0Nhc3QgPSB0cnVlOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgc2hhZGVyVHlwZSA9IHRyeUNvbnN1bWUoInZlcnRleCIs
ICJmcmFnbWVudCIpOwogICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOworICAg
ICAgICAgICAgaWYgKHJldHVyblR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJldHVyblR5cGU7CiAgICAgICAgICAgICBpZiAoc2hhZGVyVHlwZSkg
ewogICAgICAgICAgICAgICAgIG9yaWdpbiA9IHNoYWRlclR5cGU7CiAgICAgICAgICAgICAgICAg
c2hhZGVyVHlwZSA9IHNoYWRlclR5cGUudGV4dDsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAg
ICAgICAgICAgIG9yaWdpbiA9IHJldHVyblR5cGUub3JpZ2luOwogICAgICAgICAgICAgbmFtZSA9
IHBhcnNlRnVuY05hbWUoKTsKKyAgICAgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICAgICAgaXNDYXN0
ID0gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgbGV0IHBhcmFtZXRlcnMgPSBwYXJzZVBhcmFt
ZXRlcnMoKTsKKyAgICAgICAgaWYgKHBhcmFtZXRlcnMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gcGFyYW1ldGVyczsKICAgICAgICAgcmV0dXJuIG5ldyBGdW5j
KG9yaWdpbiwgbmFtZSwgcmV0dXJuVHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBl
KTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rpb24gcGFyc2VGdW5jRGVmKCkKICAgICB7CiAgICAg
ICAgIGxldCBmdW5jID0gcGFyc2VGdW5jRGVjbCgpOworICAgICAgICBpZiAoZnVuYyBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBmdW5jOwogICAgICAgICBsZXQg
Ym9keSA9IHBhcnNlQmxvY2soKTsKKyAgICAgICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gYm9keTsKICAgICAgICAgcmV0dXJuIG5ldyBGdW5j
RGVmKGZ1bmMub3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0
ZXJzLCBib2R5LCBmdW5jLmlzQ2FzdCwgZnVuYy5zaGFkZXJUeXBlKTsKICAgICB9CiAgICAgCiAg
ICAgZnVuY3Rpb24gcGFyc2VGaWVsZCgpCiAgICAgewogICAgICAgICBsZXQgdHlwZSA9IHBhcnNl
VHlwZSgpOworICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgIHJldHVybiB0eXBlOwogICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVu
dGlmaWVyIik7Ci0gICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG5hbWUgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAgICAgICAgbGV0
IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAg
ICAgIHJldHVybiBuZXcgRmllbGQobmFtZSwgbmFtZS50ZXh0LCB0eXBlKTsKICAgICB9CiAgICAg
CiAgICAgZnVuY3Rpb24gcGFyc2VTdHJ1Y3RUeXBlKCkKICAgICB7CiAgICAgICAgIGxldCBvcmln
aW4gPSBjb25zdW1lKCJzdHJ1Y3QiKTsKLSAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgi
aWRlbnRpZmllciIpLnRleHQ7Ci0gICAgICAgIGxldCByZXN1bHQgPSBuZXcgU3RydWN0VHlwZShv
cmlnaW4sIG5hbWUpOwotICAgICAgICBjb25zdW1lKCJ7Iik7Ci0gICAgICAgIHdoaWxlICghdHJ5
Q29uc3VtZSgifSIpKQotICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZUZpZWxkKCkpOworICAg
ICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIp
OworICAgICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBuYW1lOworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFN0cnVjdFR5cGUob3JpZ2lu
LCBuYW1lLnRleHQpOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoInsiKTsKKyAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgd2hpbGUgKCF0cnlDb25zdW1lKCJ9IikpIHsK
KyAgICAgICAgICAgIGxldCBmaWVsZCA9IHBhcnNlRmllbGQoKTsKKyAgICAgICAgICAgIGlmIChm
aWVsZCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmll
bGQ7CisgICAgICAgICAgICByZXN1bHQuYWRkKGZpZWxkKTsKKyAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKICAgICBmdW5jdGlvbiBwYXJzZU5hdGl2ZUZ1bmMo
KQogICAgIHsKICAgICAgICAgbGV0IGZ1bmMgPSBwYXJzZUZ1bmNEZWNsKCk7Ci0gICAgICAgIGNv
bnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKGZ1bmMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICByZXR1cm4gZnVuYzsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1l
KCI7Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBuZXcgTmF0aXZl
RnVuYyhmdW5jLm9yaWdpbiwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUsIGZ1bmMucGFyYW1l
dGVycywgZnVuYy5pc0Nhc3QsIGZ1bmMuc2hhZGVyVHlwZSk7CiAgICAgfQogICAgIAogICAgIGZ1
bmN0aW9uIHBhcnNlTmF0aXZlKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1l
KCJuYXRpdmUiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CiAgICAgICAgIGlmICh0cnlDb25zdW1lKCJ0eXBl
ZGVmIikpIHsKICAgICAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIi
KTsKKyAgICAgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICAgICAgbGV0IGFyZ3MgPSBwYXJzZVR5cGVB
cmd1bWVudHMoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgICAgIGlmIChh
cmdzIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBhcmdz
OworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgICAg
ICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgIHJldHVybiBOYXRpdmVUeXBlLmNyZWF0
ZShvcmlnaW4sIG5hbWUudGV4dCwgYXJncyk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHBh
cnNlTmF0aXZlRnVuYygpOwpAQCAtOTIyLDEyICsxMjcwLDE5IEBAIGZ1bmN0aW9uIHBhcnNlKHBy
b2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAK
ICAgICBmdW5jdGlvbiBwYXJzZVJlc3RyaWN0ZWRGdW5jRGVmKCkKICAgICB7Ci0gICAgICAgIGNv
bnN1bWUoInJlc3RyaWN0ZWQiKTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJy
ZXN0cmljdGVkIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCByZXN1bHQ7
Ci0gICAgICAgIGlmICh0cnlDb25zdW1lKCJuYXRpdmUiKSkKKyAgICAgICAgaWYgKHRyeUNvbnN1
bWUoIm5hdGl2ZSIpKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBwYXJzZU5hdGl2ZUZ1bmMoKTsK
LSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VGdW5jRGVmKCk7CisgICAgICAgICAgICBpZiAocmVz
dWx0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0LmlzUmVzdHJpY3RlZCA9IHRydWU7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQpAQCAtOTM1LDI5ICsxMjkwLDQ3IEBAIGZ1bmN0aW9u
IHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4
dCkKICAgICBmdW5jdGlvbiBwYXJzZUVudW1NZW1iZXIoKQogICAgIHsKICAgICAgICAgbGV0IG5h
bWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICBpZiAobmFtZSBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICBsZXQg
dmFsdWUgPSBudWxsOwotICAgICAgICBpZiAodHJ5Q29uc3VtZSgiPSIpKQorICAgICAgICBpZiAo
dHJ5Q29uc3VtZSgiPSIpKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlQ29uc3RleHByKCk7
CisgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBuZXcgRW51
bU1lbWJlcihuYW1lLCBuYW1lLnRleHQsIHZhbHVlKTsKICAgICB9CiAgICAgCiAgICAgZnVuY3Rp
b24gcGFyc2VFbnVtVHlwZSgpCiAgICAgewotICAgICAgICBjb25zdW1lKCJlbnVtIik7CisgICAg
ICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiZW51bSIpOworICAgICAgICBpZiAobWF5YmVF
cnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVy
cm9yOwogICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAg
ICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IG5hbWU7CiAgICAgICAgIGxldCBiYXNlVHlwZTsKLSAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjoi
KSkKKyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjoiKSkgewogICAgICAgICAgICAgYmFzZVR5cGUg
PSBwYXJzZVR5cGUoKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKGJhc2VUeXBlIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBiYXNlVHlwZTsK
KyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBiYXNlVHlwZSA9IG5ldyBUeXBlUmVmKG5hbWUs
ICJpbnQiKTsKLSAgICAgICAgY29uc3VtZSgieyIpOworICAgICAgICBtYXliZUVycm9yID0gY29u
c3VtZSgieyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgcmVzdWx0ID0g
bmV3IEVudW1UeXBlKG5hbWUsIG5hbWUudGV4dCwgYmFzZVR5cGUpOwogICAgICAgICB3aGlsZSAo
IXRlc3QoIn0iKSkgewotICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZUVudW1NZW1iZXIoKSk7
CisgICAgICAgICAgICBsZXQgZW51bU1lbWJlciA9IHBhcnNlRW51bU1lbWJlcigpOworICAgICAg
ICAgICAgaWYgKGVudW1NZW1iZXIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGVudW1NZW1iZXI7CisgICAgICAgICAgICByZXN1bHQuYWRkKGVudW1NZW1i
ZXIpOwogICAgICAgICAgICAgaWYgKCF0cnlDb25zdW1lKCIsIikpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY29uc3VtZSgifSIpOworICAgICAgICBtYXliZUVy
cm9yID0gY29uc3VtZSgifSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KICAgICAKQEAgLTk2NywxOCArMTM0MCwzNyBAQCBmdW5jdGlvbiBw
YXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICI7IikKICAg
ICAgICAgICAgIGxleGVyLm5leHQoKTsKLSAgICAgICAgZWxzZSBpZiAodG9rZW4udGV4dCA9PSAi
dHlwZWRlZiIpCi0gICAgICAgICAgICBwcm9ncmFtLmFkZChwYXJzZVR5cGVEZWYoKSk7Ci0gICAg
ICAgIGVsc2UgaWYgKG9yaWdpbktpbmQgPT0gIm5hdGl2ZSIgJiYgdG9rZW4udGV4dCA9PSAibmF0
aXZlIikKLSAgICAgICAgICAgIHByb2dyYW0uYWRkKHBhcnNlTmF0aXZlKCkpOwotICAgICAgICBl
bHNlIGlmIChvcmlnaW5LaW5kID09ICJuYXRpdmUiICYmIHRva2VuLnRleHQgPT0gInJlc3RyaWN0
ZWQiKQotICAgICAgICAgICAgcHJvZ3JhbS5hZGQocGFyc2VSZXN0cmljdGVkRnVuY0RlZigpKTsK
LSAgICAgICAgZWxzZSBpZiAodG9rZW4udGV4dCA9PSAic3RydWN0IikKLSAgICAgICAgICAgIHBy
b2dyYW0uYWRkKHBhcnNlU3RydWN0VHlwZSgpKTsKLSAgICAgICAgZWxzZSBpZiAodG9rZW4udGV4
dCA9PSAiZW51bSIpCi0gICAgICAgICAgICBwcm9ncmFtLmFkZChwYXJzZUVudW1UeXBlKCkpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBwcm9ncmFtLmFkZChwYXJzZUZ1bmNEZWYoKSk7Cisg
ICAgICAgIGVsc2UgaWYgKHRva2VuLnRleHQgPT0gInR5cGVkZWYiKSB7CisgICAgICAgICAgICBs
ZXQgdHlwZURlZiA9IHBhcnNlVHlwZURlZigpOworICAgICAgICAgICAgaWYgKHR5cGVEZWYgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgdGhyb3cgdHlwZURlZjsKKyAg
ICAgICAgICAgIHByb2dyYW0uYWRkKHR5cGVEZWYpOworICAgICAgICB9IGVsc2UgaWYgKG9yaWdp
bktpbmQgPT0gIm5hdGl2ZSIgJiYgdG9rZW4udGV4dCA9PSAibmF0aXZlIikgeworICAgICAgICAg
ICAgbGV0IG5hdGl2ZSA9IHBhcnNlTmF0aXZlKCk7CisgICAgICAgICAgICBpZiAobmF0aXZlIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHRocm93IG5hdGl2ZTsKKyAg
ICAgICAgICAgIHByb2dyYW0uYWRkKG5hdGl2ZSk7CisgICAgICAgIH0gZWxzZSBpZiAob3JpZ2lu
S2luZCA9PSAibmF0aXZlIiAmJiB0b2tlbi50ZXh0ID09ICJyZXN0cmljdGVkIikgeworICAgICAg
ICAgICAgbGV0IHJlc3RyaWN0ZWRGdW5jRGVmID0gcGFyc2VSZXN0cmljdGVkRnVuY0RlZigpOwor
ICAgICAgICAgICAgaWYgKHJlc3RyaWN0ZWRGdW5jRGVmIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgICAgIHRocm93IHJlc3RyaWN0ZWRGdW5jRGVmOworICAgICAgICAgICAg
cHJvZ3JhbS5hZGQocmVzdHJpY3RlZEZ1bmNEZWYpOworICAgICAgICB9IGVsc2UgaWYgKHRva2Vu
LnRleHQgPT0gInN0cnVjdCIpIHsKKyAgICAgICAgICAgIGxldCBzdHJ1Y3QgPSBwYXJzZVN0cnVj
dFR5cGUoKTsKKyAgICAgICAgICAgIGlmIChzdHJ1Y3QgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICAgICAgdGhyb3cgc3RydWN0OworICAgICAgICAgICAgcHJvZ3JhbS5hZGQo
c3RydWN0KTsKKyAgICAgICAgfSBlbHNlIGlmICh0b2tlbi50ZXh0ID09ICJlbnVtIikgeworICAg
ICAgICAgICAgbGV0IGVudW1UeXBlID0gcGFyc2VFbnVtVHlwZSgpOworICAgICAgICAgICAgaWYg
KGVudW1UeXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHRocm93
IGVudW1UeXBlOworICAgICAgICAgICAgcHJvZ3JhbS5hZGQoZW51bVR5cGUpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgbGV0IGZ1bmNEZWYgPSBwYXJzZUZ1bmNEZWYoKTsKKyAgICAg
ICAgICAgIGlmIChmdW5jRGVmIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
ICAgIHRocm93IGZ1bmNEZWY7CisgICAgICAgICAgICBwcm9ncmFtLmFkZChmdW5jRGVmKTsKKyAg
ICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvU1BJUlYuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0
bWwKaW5kZXggMWIyNmNmMmIyZTY1MTUyN2ExNTJlZThkOTJmZjI1YmVkYTYxZDMzOS4uODA0Y2Q5
YWJkYTZkNWMzYmVjMDNiZTI1ODJhYTNmMjNmMDA3YTE4OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9TUElSVi5odG1sCkBAIC0xNTEsNiArMTUxLDcgQEAgdGQgewogICAgIDxzY3Jp
cHQgc3JjPSJWYXJpYWJsZVJlZi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZlY3Rv
clR5cGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaXNpdGluZ1NldC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IldMZXhpY2FsRXJyb3IuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJXU3ludGF4RXJyb3IuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJXVHJhcEVycm9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iV1R5cGVFcnJvci5q
cyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9U
ZXN0Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKaW5kZXgg
ZmIxMDE1ZjE5MzgxY2Y2ZWFjNzMxN2I0ODVlZjAwYzNlYzFjYjk2ZS4uZjVlYTNkOTAxOThkY2Ri
ODcxMzFmOTJjMjUwYzc0MzMwNGI2NmFjMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVGVzdC5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1Rlc3QuaHRtbApAQCAtMTQ1LDYgKzE0NSw3IEBACiA8c2NyaXB0IHNyYz0iVmFyaWFibGVSZWYu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlZlY3RvclR5cGUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IlZpc2l0aW5nU2V0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXTGV4aWNh
bEVycm9yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJXU3ludGF4RXJyb3IuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IldUcmFwRXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IldUeXBlRXJyb3IuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVGVzdC5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3Qu
anMKaW5kZXggOTBkNWU1Y2NkNTBjZmY0YTk0MmI5MTc2NmIyNzI4NjlmMDk0NGM2Ny4uNTU2Y2Iy
ZmI4YmI1MTA4NzkwYzViNGRhOGZhNjdlNGM1NGNhYzY2NiAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UZXN0LmpzCkBAIC0zMjksMjMgKzMyOSw2IEBAIHRlc3RzID0gbmV3IFByb3h5KHt9
LCB7CiAgICAgfQogfSk7CiAKLXRlc3RzLmNvbW1lbnRQYXJzaW5nID0gZnVuY3Rpb24oKSB7Ci0g
ICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAotICAgICAgICAvKiB0aGlzIGNvbW1lbnQKLSAgICAg
ICAgcnVucyBvdmVyIG11bHRpcGxlIGxpbmVzICovCi0gICAgICAgIGJvb2wgZm9vKCkgeyByZXR1
cm4gdHJ1ZTsgfQotICAgIGApOwotICAgIGNoZWNrQm9vbChwcm9ncmFtLCBjYWxsRnVuY3Rpb24o
cHJvZ3JhbSwgImZvbyIsIFtdKSwgdHJ1ZSk7Ci0KLSAgICBjaGVja0ZhaWwoCi0gICAgICAgICgp
ID0+IGRvUHJlcChgCi0gICAgICAgIC8qIHRoaXMgY29tbWVudAotICAgICAgICBydW5zIG92ZXIg
bXVsdGlwbGUgbGluZXMKLSAgICAgICAgYm9vbCBmb28oKSB7IHJldHVybiB0cnVlOyB9Ci0gICAg
ICAgIGApLAotICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcik7Ci19Ci0K
IHRlc3RzLnRlcm5hcnlFeHByZXNzaW9uID0gZnVuY3Rpb24oKSB7CiAgICAgbGV0IHByb2dyYW0g
PSBkb1ByZXAoYAogICAgICAgICBpbnQgZm9vKGludCB4KQpAQCAtNzYyNiw2ICs3NjA5LDIzIEBA
IHRlc3RzLnRleHR1cmVHYXRoZXIgPSBmdW5jdGlvbigpIHsKICAgICAvLyBGSVhNRTogR2F0aGVy
IG90aGVyIGNvbXBvbmVudHMKIH0KIAordGVzdHMuY29tbWVudFBhcnNpbmcgPSBmdW5jdGlvbigp
IHsKKyAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCisgICAgICAgIC8qIHRoaXMgY29tbWVudAor
ICAgICAgICBydW5zIG92ZXIgbXVsdGlwbGUgbGluZXMgKi8KKyAgICAgICAgYm9vbCBmb28oKSB7
IHJldHVybiB0cnVlOyB9CisgICAgYCk7CisgICAgY2hlY2tCb29sKHByb2dyYW0sIGNhbGxGdW5j
dGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKKworICAgIGNoZWNrRmFpbCgKKyAgICAg
ICAgKCkgPT4gZG9QcmVwKGAKKyAgICAgICAgLyogdGhpcyBjb21tZW50CisgICAgICAgIHJ1bnMg
b3ZlciBtdWx0aXBsZSBsaW5lcworICAgICAgICBib29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0K
KyAgICAgICAgYCksCisgICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV0xleGljYWxFcnJvcik7
Cit9CisKIG9rVG9UZXN0ID0gdHJ1ZTsKIAogbGV0IHRlc3RGaWx0ZXIgPSAvLiovOyAvLyBydW4g
ZXZlcnl0aGluZyBieSBkZWZhdWx0CkBAIC03NjgzLDQgKzc2ODMsMyBAQCBpZiAoIXRoaXMud2lu
ZG93KSB7CiAgICAgZm9yIChsZXQgXyBvZiBkb1Rlc3QodGVzdEZpbHRlcikpIHsgfQogfQogCi0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dMZXhpY2FsRXJyb3Iu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XTGV4aWNhbEVycm9yLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmM5ODU4OTNkMjlmNmJlY2RjNTkzOWNiMWEyZTUzNjZlNDhhZTE1ZjkKLS0tIC9kZXYv
bnVsbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XTGV4aWNhbEVycm9yLmpz
CkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworY2xhc3MgV0xleGljYWxFcnJvciBleHRlbmRzIEVycm9y
IHsKKyAgICBjb25zdHJ1Y3RvcihvcmlnaW5TdHJpbmcsIG1lc3NhZ2UpCisgICAgeworICAgICAg
ICBzdXBlcigiTGV4aWNhbCBlcnJvciBhdCAiICsgb3JpZ2luU3RyaW5nICsgIjogIiArIG1lc3Nh
Z2UpOworICAgICAgICB0aGlzLm9yaWdpblN0cmluZyA9IG9yaWdpblN0cmluZzsKKyAgICAgICAg
dGhpcy5zeW50YXhFcnJvck1lc3NhZ2UgPSBtZXNzYWdlOworICAgIH0KK30KKwpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbCBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKaW5kZXggZTZlMTNkZmU4ZGZhNWM1MzMyYWQ5
ZWYwNDllY2VhMzU5YjdlM2E0Mi4uZGZjOTBjNGMyMzk0Mzk1NDU4ODY1YzRhOGQ2NTQ4Njg3MGMy
NjIzNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRt
bAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCkBAIC0xNDUs
NiArMTQ1LDcgQEAKIDxzY3JpcHQgc3JjPSJWYXJpYWJsZVJlZi5qcyI+PC9zY3JpcHQ+CiA8c2Ny
aXB0IHNyYz0iVmVjdG9yVHlwZS5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVmlzaXRpbmdT
ZXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IldMZXhpY2FsRXJyb3IuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IldTeW50YXhFcnJvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0i
V1RyYXBFcnJvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iV1R5cGVFcnJvci5qcyI+PC9z
Y3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348985</attachid>
            <date>2018-09-05 17:27:41 -0700</date>
            <delta_ts>2018-09-05 17:49:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189014-20180905172740.patch</filename>
            <type>text/plain</type>
            <size>63578</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Njg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWJiNDgxOTNiYzE0MzM1MmQ5OTQ0ZmZlY2Y2ZDgzNDQx
YzZmMWY0OS4uYjU5YjU4YjEwOGJmNGI2ZTE0ZDc2MjFmYzE1Mzk4YjM4YTdlOGY0ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2
IEBACisyMDE4LTA5LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBUaGUgcGFyc2VyIGlzIHRvbyBzbG93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHR3
byBjaGFuZ2VzOgorICAgICAgICAxLiBNaWdyYXRlIGZyb20gdXNpbmcgdHJ5L2NhdGNoIHRvIHNp
bXBseSByZXR1cm5pbmcgdGhlIFdTeW50YXhFcnJvci4gVGhpcyBtZWFucyB0aGF0CisgICAgICAg
ICAgIGVhY2ggcGFyc2VyIGNhbGwgaGFzIHRvIGNoZWNrIGZvciB0aGlzIHNlbnRpbmVsIHZhbHVl
LiBUaGUgbGV4ZXIgc3RpbGwgY2FuIHRocm93IGlmCisgICAgICAgICAgIGl0IGVuY291bnRlcnMg
YW4gdW5rbm93biB0b2tlbiBvciBhbiB1bm1hdGNoZWQgIi8qIiB0b2tlbiAod2hpY2ggaXMgcmFy
ZSkuCisgICAgICAgIDIuIFByZXZpb3VzbHksIGV2ZXJ5IHRpbWUgdGhlIHBhcnNlciBmYWlsZWQg
KHdoaWNoIGlzIG1hbnkgdGltZXMgcGVyIGV4cHJlc3Npb24pIGl0IHdhcworICAgICAgICAgICBy
dW5uaW5nIGEgcmVnZXggb3ZlciB0aGUgZW50aXJlIHNvdXJjZSB0ZXh0IHRvIGZpZ3VyZSBvdXQg
d2hlcmUgdGhlIGVycm9yIG9jY3VycmVkLgorICAgICAgICAgICBJbnN0ZWFkLCB3ZSBjYW4gcHJl
cHJvY2VzcyB0aGUgdGV4dCBzdHJpbmcgdG8gZmluZCB0aGVzZSBsaW5lIG51bWJlcnMgYWhlYWQg
b2YgdGltZS4KKworICAgICAgICBUb2dldGhlciwgdGhlc2UgbWFrZSB0aGUgcGFyc2VyIDIxeCBm
YXN0ZXIuIFBhcnNpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZ29lcyBmcm9tIDIuNQorICAgICAg
ICBob3VycyBkb3duIHRvIDcgbWludXRlcy4gQmVjYXVzZSBpdCdzIG5vdyBhIHJlYXNvbmFibGUg
bGVuZ3RoLCB0aGlzIHBhdGNoIHVuY29tbWVudHMKKyAgICAgICAgdGhlIGJ1bGsgb2YgdGhlIHN0
YW5kYXJkIGxpYnJhcnkuCisKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwu
anM6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanM6CisgICAgICAg
IChMZXhlcik6CisgICAgICAgIChMZXhlci5wcm90b3R5cGUubGluZU51bWJlckZvckluZGV4KToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qczoKKyAgICAgICAgKGZh
aWwpOgorICAgICAgICAoYmFja3RyYWNraW5nU2NvcGUpOgorICAgICAgICAodGVzdFNjb3BlKToK
KyAgICAgICAgKGdlbmVyaWNDb25zdW1lKToKKyAgICAgICAgKGNvbnN1bWVFbmRPZlR5cGVBcmdz
KToKKyAgICAgICAgKHBhcnNlVGVybSk6CisgICAgICAgIChwYXJzZUNvbnN0ZXhwcik6CisgICAg
ICAgIChwYXJzZVR5cGVBcmd1bWVudHMpOgorICAgICAgICAocGFyc2VUeXBlLmdldEFkZHJlc3NT
cGFjZSk6CisgICAgICAgIChwYXJzZVR5cGUpOgorICAgICAgICAocGFyc2VUeXBlRGVmKToKKyAg
ICAgICAgKGdlbmVyaWNQYXJzZUxlZnQpOgorICAgICAgICAocGFyc2VDYWxsRXhwcmVzc2lvbi5s
ZXQucGFyc2VBcmd1bWVudHMpOgorICAgICAgICAoaXNDYWxsRXhwcmVzc2lvbik6CisgICAgICAg
IChwYXJzZVN1ZmZpeE9wZXJhdG9yKToKKyAgICAgICAgKHBhcnNlUG9zc2libGVTdWZmaXgpOgor
ICAgICAgICAocGFyc2VQcmVJbmNyZW1lbnQpOgorICAgICAgICAocGFyc2VQb3NzaWJsZVByZWZp
eCk6CisgICAgICAgIChwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKToKKyAgICAgICAg
KHBhcnNlUG9zc2libGVBc3NpZ25tZW50KToKKyAgICAgICAgKHBhcnNlUG9zdEluY3JlbWVudCk6
CisgICAgICAgIChwYXJzZUVmZmVjdGZ1bEV4cHJlc3Npb24pOgorICAgICAgICAoZ2VuZXJpY1Bh
cnNlQ29tbWFFeHByZXNzaW9uKToKKyAgICAgICAgKHBhcnNlRWZmZWN0ZnVsU3RhdGVtZW50KToK
KyAgICAgICAgKHBhcnNlUmV0dXJuKToKKyAgICAgICAgKHBhcnNlQnJlYWspOgorICAgICAgICAo
cGFyc2VDb250aW51ZSk6CisgICAgICAgIChwYXJzZUlmU3RhdGVtZW50KToKKyAgICAgICAgKHBh
cnNlV2hpbGUpOgorICAgICAgICAocGFyc2VGb3IpOgorICAgICAgICAocGFyc2VEbyk6CisgICAg
ICAgIChwYXJzZVZhcmlhYmxlRGVjbHMpOgorICAgICAgICAocGFyc2VTd2l0Y2hDYXNlKToKKyAg
ICAgICAgKHBhcnNlU3dpdGNoU3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNlU3RhdGVtZW50KToK
KyAgICAgICAgKHBhcnNlQmxvY2tCb2R5KToKKyAgICAgICAgKHBhcnNlQmxvY2spOgorICAgICAg
ICAocGFyc2VQYXJhbWV0ZXIpOgorICAgICAgICAocGFyc2VGdW5jTmFtZSk6CisgICAgICAgIChw
YXJzZUZ1bmNEZWNsKToKKyAgICAgICAgKHBhcnNlRnVuY0RlZik6CisgICAgICAgIChwYXJzZUZp
ZWxkKToKKyAgICAgICAgKHBhcnNlU3RydWN0VHlwZSk6CisgICAgICAgIChwYXJzZU5hdGl2ZUZ1
bmMpOgorICAgICAgICAocGFyc2VOYXRpdmUpOgorICAgICAgICAocGFyc2VSZXN0cmljdGVkRnVu
Y0RlZik6CisgICAgICAgIChwYXJzZUVudW1NZW1iZXIpOgorICAgICAgICAocGFyc2VFbnVtVHlw
ZSk6CisgICAgICAgIChwYXJzZSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
U1BJUlYuaHRtbDoKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExp
YnJhcnkuanM6CisgICAgICAgIChsZXQuc3RhbmRhcmRMaWJyYXJ5KToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVGVzdC5qczoKKyAgICAgICAgKGNoZWNrRmFpbC5kb1ByZXApOiBEZWxldGVkLgor
ICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dMZXhpY2FsRXJyb3IuanM6IEFkZGVk
LgorICAgICAgICAoV0xleGljYWxFcnJvcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvaW5kZXguaHRtbDoKKwogMjAxOC0wOS0wNSAgV29vZHJvdyBXYW5nICA8d29vZHJvd193
YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRlZCBydW50aW1lIGZlYXR1cmUgZmxhZyBmb3Ig
d2ViIEFQSSBzdGF0aXN0aWNzCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9BbGwuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXgg
OTBmYzg0MTNhNjUxMjI0NDZiZjAxZmQ5NjdkZDY1MTM5YTBmODdlOS4uMGE1ODg1MTYxYTQwM2Qw
OWFlYWExZmU1ZTEwNDNhZGZlNjEyNTY1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvQWxsLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Fs
bC5qcwpAQCAtMTY4LDYgKzE2OCw3IEBAIGxvYWQoIlZhcmlhYmxlRGVjbC5qcyIpOwogbG9hZCgi
VmFyaWFibGVSZWYuanMiKTsKIGxvYWQoIlZlY3RvclR5cGUuanMiKTsKIGxvYWQoIlZpc2l0aW5n
U2V0LmpzIik7Citsb2FkKCJXTGV4aWNhbEVycm9yLmpzIik7CiBsb2FkKCJXU3ludGF4RXJyb3Iu
anMiKTsKIGxvYWQoIldUcmFwRXJyb3IuanMiKTsKIGxvYWQoIldUeXBlRXJyb3IuanMiKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKaW5kZXggOTU2ZGNhMzM2YTJhOWEzMTIx
YTI3NzI4NWFlM2RiNzZkZGU3MjM3MC4uOTg0NGRlMzU0ZTRkNDkxYjVlZGZmOTUzNzE1ZGJmYjA3
NDkxZTdlZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIu
anMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKQEAgLTM1LDYg
KzM1LDE0IEBAIGNsYXNzIExleGVyIHsKICAgICAgICAgdGhpcy5fdGV4dCA9IHRleHQ7CiAgICAg
ICAgIHRoaXMuX2luZGV4ID0gMDsKICAgICAgICAgdGhpcy5fc3RhY2sgPSBbXTsKKworICAgICAg
ICB0aGlzLl9saW5lTnVtYmVycyA9IFtdOworICAgIMKgwqDCoMKgbGV0IGxpbmVOdW1iZXIgPSAx
OworICAgIMKgwqDCoMKgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl90ZXh0Lmxlbmd0aDsgaSsr
KSB7CisgICAgwqDCoMKgwqDCoMKgwqDCoHRoaXMuX2xpbmVOdW1iZXJzLnB1c2gobGluZU51bWJl
cik7CisgICAgwqDCoMKgwqDCoMKgwqDCoGlmICh0aGlzLl90ZXh0W2ldID09ICdcbicpCisgICAg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGluZU51bWJlcisrOworICAgIMKgwqDCoMKgfQogICAg
IH0KICAgICAKICAgICBnZXQgbGluZU51bWJlcigpCkBAIC01Myw4ICs2MSw3IEBAIGNsYXNzIExl
eGVyIHsKICAgICAKICAgICBsaW5lTnVtYmVyRm9ySW5kZXgoaW5kZXgpCiAgICAgewotICAgICAg
ICBsZXQgbWF0Y2hlcyA9IHRoaXMuX3RleHQuc3Vic3RyaW5nKDAsIGluZGV4KS5tYXRjaCgvXG4v
Zyk7Ci0gICAgICAgIHJldHVybiAobWF0Y2hlcyA/IG1hdGNoZXMubGVuZ3RoIDogMCkgKyB0aGlz
Ll9saW5lTnVtYmVyT2Zmc2V0OworICAgICAgICByZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbaW5k
ZXhdICsgdGhpcy5fbGluZU51bWJlck9mZnNldDsKICAgICB9CiAgICAgCiAgICAgZ2V0IHN0YXRl
KCkgeyByZXR1cm4ge2luZGV4OiB0aGlzLl9pbmRleCwgc3RhY2s6IHRoaXMuX3N0YWNrLmNvbmNh
dCgpfTsgfQpAQCAtMTY2LDM1ICsxNzMsNiBAQCBjbGFzcyBMZXhlciB7CiAgICAgCiAgICAgZmFp
bChlcnJvcikKICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBXU3ludGF4RXJyb3IodGhpcy5vcmln
aW5TdHJpbmcsIGVycm9yKTsKLSAgICB9Ci0gICAgCi0gICAgYmFja3RyYWNraW5nU2NvcGUoY2Fs
bGJhY2spCi0gICAgewotICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLnN0YXRlOwotICAgICAgICB0
cnkgewotICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0gY2F0Y2ggKGUp
IHsKLSAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKSB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlOwotICAgICAgICAgICAgICAgIHJldHVybiBudWxs
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfQotICAgIH0K
LSAgICAKLSAgICB0ZXN0U2NvcGUoY2FsbGJhY2spCi0gICAgewotICAgICAgICBsZXQgc3RhdGUg
PSB0aGlzLnN0YXRlOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAg
ICBpZiAoZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAg
ICAgICAgdGhpcy5zdGF0ZSA9IHN0YXRlOwotICAgICAgICB9CisgICAgICAgIHRocm93IG5ldyBX
TGV4aWNhbEVycm9yKHRoaXMub3JpZ2luU3RyaW5nLCBlcnJvcik7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29scy9XZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCBlZTRjOTgwZjNhMTY3MmI2OGE3N2Vi
YjQ4NTI1ZWRkMjQ5NDQzYTUzLi40ZmI4NDlkMGNkZjBkOWRhMDkwZjFjMzAxMzExMjhiNDEzNTFi
OWYxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwor
KysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtMjcsNyArMjcs
NyBAQAogZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVt
YmVyT2Zmc2V0LCB0ZXh0KQogewogICAgIGxldCBsZXhlciA9IG5ldyBMZXhlcihvcmlnaW4sIG9y
aWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpOwotICAgIAorCiAgICAgLy8gVGhlIGhh
cmRlc3QgcGFydCBvZiBkZWFsaW5nIHdpdGggQy1saWtlIGxhbmd1YWdlcyBpcyBwYXJzaW5nIHZh
cmlhYmxlIGRlY2xhcmF0aW9uIHN0YXRlbWVudHMuCiAgICAgLy8gTGV0J3MgY29uc2lkZXIgaWYg
dGhpcyBoYXBwZW5zIGluIFdTTC4gSGVyZSBhcmUgdGhlIHZhbGlkIHN0YXRlbWVudHMgaW4gV1NM
IHRoYXQgYmVpbmcgd2l0aCBhbgogICAgIC8vIGlkZW50aWZpZXIsIGlmIHdlIGFzc3VtZSB0aGF0
IGFueSBleHByZXNzaW9uIGNhbiBiZSBhIHN0YW5kYWxvbmUgc3RhdGVtZW50LgpAQCAtNjEsMzIg
KzYxLDU5IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGlu
ZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAvLyBwb2ludGVycyBtZWFucyB0aGF0IHdlIGNhbiBz
dGlsbCBhbGxvdyBmdW5jdGlvbiBjYWxsIHN0YXRlbWVudHMgLSB1bmxpa2UgaW4gQywgdGhvc2Ug
Y2Fubm90CiAgICAgLy8gaGF2ZSBhcmJpdHJhcnkgZXhwcmVzc2lvbnMgYXMgdGhlIGNhbGxlZS4g
VGhlIHJlbWFpbmluZyB0d28gcHJvYmxlbXMgYXJlIHNvbHZlZCBieQogICAgIC8vIGJhY2t0cmFj
a2luZy4gSW4gYWxsIG90aGVyIHJlc3BlY3RzLCB0aGlzIGlzIGEgc2ltcGxlIHJlY3Vyc2l2ZSBk
ZXNjZW50IHBhcnNlci4KLSAgICAKKworICAgIGZ1bmN0aW9uIGZhaWwoZXJyb3IpCisgICAgewor
ICAgICAgICByZXR1cm4gbmV3IFdTeW50YXhFcnJvcihsZXhlci5vcmlnaW5TdHJpbmcsIGVycm9y
KTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBiYWNrdHJhY2tpbmdTY29wZShjYWxsYmFjaykKKyAg
ICB7CisgICAgICAgIGxldCBzdGF0ZSA9IGxleGVyLnN0YXRlOworICAgICAgICBsZXQgbWF5YmVF
cnJvciA9IGNhbGxiYWNrKCk7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKSB7CisgICAgICAgICAgICBsZXhlci5zdGF0ZSA9IHN0YXRlOworICAgICAgICAg
ICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIG1heWJl
RXJyb3I7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFNjb3BlKGNhbGxiYWNrKQorICAgIHsK
KyAgICAgICAgbGV0IHN0YXRlID0gbGV4ZXIuc3RhdGU7CisgICAgICAgIGxldCBtYXliZUVycm9y
ID0gY2FsbGJhY2soKTsKKyAgICAgICAgbGV4ZXIuc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgcmV0
dXJuICEobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcik7CisgICAgfQorCiAgICAg
ZnVuY3Rpb24gZ2VuZXJpY0NvbnN1bWUoY2FsbGJhY2ssIGV4cGxhbmF0aW9uKQogICAgIHsKICAg
ICAgICAgbGV0IHRva2VuID0gbGV4ZXIubmV4dCgpOwogICAgICAgICBpZiAoIXRva2VuKQotICAg
ICAgICAgICAgbGV4ZXIuZmFpbCgiVW5leHBlY3RlZCBlbmQgb2YgZmlsZSIpOworICAgICAgICAg
ICAgcmV0dXJuIGZhaWwoIlVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiKTsKICAgICAgICAgaWYgKCFj
YWxsYmFjayh0b2tlbikpCi0gICAgICAgICAgICBsZXhlci5mYWlsKCJVbmV4cGVjdGVkIHRva2Vu
OiAiICsgdG9rZW4udGV4dCArICI7IGV4cGVjdGVkOiAiICsgZXhwbGFuYXRpb24pOworICAgICAg
ICAgICAgcmV0dXJuIGZhaWwoIlVuZXhwZWN0ZWQgdG9rZW46ICIgKyB0b2tlbi50ZXh0ICsgIjsg
ZXhwZWN0ZWQ6ICIgKyBleHBsYW5hdGlvbik7CiAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICB9
Ci0gICAgCisKICAgICBmdW5jdGlvbiBjb25zdW1lKC4uLnRleHRzKQogICAgIHsKICAgICAgICAg
cmV0dXJuIGdlbmVyaWNDb25zdW1lKHRva2VuID0+IHRleHRzLmluY2x1ZGVzKHRva2VuLnRleHQp
LCB0ZXh0cyk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gY29uc3VtZUtpbmQoa2luZCkK
ICAgICB7CiAgICAgICAgIHJldHVybiBnZW5lcmljQ29uc3VtZSh0b2tlbiA9PiB0b2tlbi5raW5k
ID09IGtpbmQsIGtpbmQpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIGFzc2VydE5leHQo
Li4udGV4dHMpCiAgICAgewotICAgICAgICBsZXhlci5wdXNoKGNvbnN1bWUoLi4udGV4dHMpKTsK
KyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKC4uLnRleHRzKTsKKyAgICAgICAgaWYg
KG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
bWF5YmVFcnJvcjsKKyAgICAgICAgbGV4ZXIucHVzaChtYXliZUVycm9yKTsKICAgICB9Ci0gICAg
CisKICAgICBmdW5jdGlvbiBnZW5lcmljVGVzdChjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGxl
dCB0b2tlbiA9IGxleGVyLnBlZWsoKTsKQEAgLTk0LDE3ICsxMjEsMTcgQEAgZnVuY3Rpb24gcGFy
c2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQog
ICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9Ci0g
ICAgCisKICAgICBmdW5jdGlvbiB0ZXN0KC4uLnRleHRzKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGdlbmVyaWNUZXN0KHRva2VuID0+IHRleHRzLmluY2x1ZGVzKHRva2VuLnRleHQpKTsKICAgICB9
Ci0gICAgCisKICAgICBmdW5jdGlvbiB0ZXN0S2luZChraW5kKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGdlbmVyaWNUZXN0KHRva2VuID0+IHRva2VuLmtpbmQgPT0ga2luZCk7CiAgICAgfQotICAg
IAorCiAgICAgZnVuY3Rpb24gdHJ5Q29uc3VtZSguLi50ZXh0cykKICAgICB7CiAgICAgICAgIGxl
dCByZXN1bHQgPSB0ZXN0KC4uLnRleHRzKTsKQEAgLTExMiw3ICsxMzksNyBAQCBmdW5jdGlvbiBw
YXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQp
CiAgICAgICAgICAgICBsZXhlci5uZXh0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQotICAgIAorCiAgICAgZnVuY3Rpb24gdHJ5Q29uc3VtZUtpbmQoa2luZCkKICAgICB7CiAgICAg
ICAgIGxldCByZXN1bHQgPSB0ZXN0S2luZChraW5kKTsKQEAgLTEyMCwxNiArMTQ3LDE5IEBAIGZ1
bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNl
dCwgdGV4dCkKICAgICAgICAgICAgIGxleGVyLm5leHQoKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBjb25zdW1lRW5kT2ZUeXBlQXJncygpCiAg
ICAgewogICAgICAgICBsZXQgcmlnaHRTaGlmdCA9IHRyeUNvbnN1bWUoIj4+Iik7CiAgICAgICAg
IGlmIChyaWdodFNoaWZ0KQogICAgICAgICAgICAgbGV4ZXIucHVzaChuZXcgTGV4ZXJUb2tlbihs
ZXhlciwgcmlnaHRTaGlmdCwgcmlnaHRTaGlmdC5pbmRleCwgcmlnaHRTaGlmdC5raW5kLCAiPiIp
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29uc3VtZSgiPiIpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiPiIpOworICAgICAgICAg
ICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBmdW5j
dGlvbiBwYXJzZVRlcm0oKQogICAgIHsKICAgICAgICAgbGV0IHRva2VuOwpAQCAtMTQwLDEzICsx
NzAsMTMgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5l
TnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2luZCgi
aW50TGl0ZXJhbCIpKSB7CiAgICAgICAgICAgICBsZXQgaW50VmVyc2lvbiA9ICgrdG9rZW4udGV4
dCkgfCAwOwogICAgICAgICAgICAgaWYgKCIiICsgaW50VmVyc2lvbiAhPT0gdG9rZW4udGV4dCkK
LSAgICAgICAgICAgICAgICBsZXhlci5mYWlsKCJJbnRlZ2VyIGxpdGVyYWwgaXMgbm90IGFuIGlu
dGVnZXI6ICIgKyB0b2tlbi50ZXh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgiSW50
ZWdlciBsaXRlcmFsIGlzIG5vdCBhbiBpbnRlZ2VyOiAiICsgdG9rZW4udGV4dCk7CiAgICAgICAg
ICAgICByZXR1cm4gbmV3IEludExpdGVyYWwodG9rZW4sIGludFZlcnNpb24pOwogICAgICAgICB9
CiAgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWVLaW5kKCJ1aW50TGl0ZXJhbCIpKSB7CiAg
ICAgICAgICAgICBsZXQgdWludFZlcnNpb24gPSB0b2tlbi50ZXh0LnN1YnN0cigwLCB0b2tlbi50
ZXh0Lmxlbmd0aCAtIDEpID4+PiAwOwogICAgICAgICAgICAgaWYgKHVpbnRWZXJzaW9uICsgInUi
ICE9PSB0b2tlbi50ZXh0KQotICAgICAgICAgICAgICAgIGxleGVyLmZhaWwoIkludGVnZXIgbGl0
ZXJhbCBpcyBub3QgMzItYml0IHVuc2lnbmVkIGludGVnZXI6ICIgKyB0b2tlbi50ZXh0KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFpbCgiSW50ZWdlciBsaXRlcmFsIGlzIG5vdCAzMi1iaXQg
dW5zaWduZWQgaW50ZWdlcjogIiArIHRva2VuLnRleHQpOwogICAgICAgICAgICAgcmV0dXJuIG5l
dyBVaW50TGl0ZXJhbCh0b2tlbiwgdWludFZlcnNpb24pOwogICAgICAgICB9CiAgICAgICAgIGlm
ICgodG9rZW4gPSB0cnlDb25zdW1lS2luZCgiaW50SGV4TGl0ZXJhbCIpKQpAQCAtMTYyLDcgKzE5
Miw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51
bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpbnRW
ZXJzaW9uID0gaW50VmVyc2lvbiA+Pj4gMDsKICAgICAgICAgICAgIGlmIChpbnRWZXJzaW9uLnRv
U3RyaW5nKDE2KSAhPT0gaGV4U3RyaW5nKQotICAgICAgICAgICAgICAgIGxleGVyLmZhaWwoIkhl
eCBpbnRlZ2VyIGxpdGVyYWwgaXMgbm90IGFuIGludGVnZXI6ICIgKyB0b2tlbi50ZXh0KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFpbCgiSGV4IGludGVnZXIgbGl0ZXJhbCBpcyBub3QgYW4g
aW50ZWdlcjogIiArIHRva2VuLnRleHQpOwogICAgICAgICAgICAgaWYgKHRva2VuLmtpbmQgPT0g
ImludEhleExpdGVyYWwiKQogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW50TGl0ZXJhbCh0
b2tlbiwgaW50VmVyc2lvbik7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnRMaXRlcmFsKHRv
a2VuLCBpbnRWZXJzaW9uID4+PiAwKTsKQEAgLTE3OCwzMCArMjA4LDQ4IEBAIGZ1bmN0aW9uIHBh
cnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkK
ICAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgidHJ1ZSIsICJmYWxzZSIpKQogICAgICAg
ICAgICAgcmV0dXJuIG5ldyBCb29sTGl0ZXJhbCh0b2tlbiwgdG9rZW4udGV4dCA9PSAidHJ1ZSIp
OwogICAgICAgICAvLyBGSVhNRTogTmVlZCBzdXBwb3J0IGZvciBvdGhlciBsaXRlcmFscyB0b28u
Ci0gICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1l
KCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCByZXN1bHQgPSBwYXJz
ZUV4cHJlc3Npb24oKTsKLSAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBpZiAocmVzdWx0
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJz
ZUNvbnN0ZXhwcigpCiAgICAgewogICAgICAgICBsZXQgdG9rZW47Ci0gICAgICAgIGlmICh0b2tl
biA9IHRyeUNvbnN1bWUoIi0iKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4cHJlc3Np
b24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0LCBbcGFyc2VUZXJtKCldKTsKKyAgICAg
ICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiLSIpKSB7CisgICAgICAgICAgICBsZXQgdGVybSA9
IHBhcnNlVGVybSgpOworICAgICAgICAgICAgaWYgKHRlcm0gaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm07CisgICAgICAgICAgICByZXR1cm4gbmV3
IENhbGxFeHByZXNzaW9uKHRva2VuLCAib3BlcmF0b3IiICsgdG9rZW4udGV4dCwgW3Rlcm1dKTsK
KyAgICAgICAgfQogICAgICAgICBsZXQgbGVmdCA9IHBhcnNlVGVybSgpOwotICAgICAgICBpZiAo
dG9rZW4gPSB0cnlDb25zdW1lKCIuIikpCi0gICAgICAgICAgICBsZWZ0ID0gbmV3IERvdEV4cHJl
c3Npb24odG9rZW4sIGxlZnQsIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dCk7CisgICAg
ICAgIGlmIChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IGxlZnQ7CisgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIi4iKSkgeworICAgICAgICAg
ICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpCisgICAgICAgICAg
ICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgIGxlZnQgPSBuZXcgRG90RXhwcmVzc2lv
bih0b2tlbiwgbGVmdCwgbWF5YmVFcnJvci50ZXh0KTsKKyAgICAgICAgfQogICAgICAgICByZXR1
cm4gbGVmdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVR5cGVBcmd1bWVudHMo
KQogICAgIHsKICAgICAgICAgaWYgKCF0ZXN0KCI8IikpCiAgICAgICAgICAgICByZXR1cm4gW107
CiAKICAgICAgICAgbGV0IHJlc3VsdCA9IFtdOwotICAgICAgICBjb25zdW1lKCI8Iik7CisgICAg
ICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiPCIpOworICAgICAgICBpZiAobWF5YmVFcnJv
ciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9y
OwogICAgICAgICB3aGlsZSAoIXRlc3QoIj4iKSkgewogICAgICAgICAgICAgLy8gSXQncyBwb3Nz
aWJsZSBmb3IgYSBjb25zdGV4cHIgb3IgdHlwZSBjYW4gc3ludGFjdGljYWxseSBvdmVybGFwIGlu
IHRoZSBzaW5nbGUKICAgICAgICAgICAgIC8vIGlkZW50aWZpZXIgY2FzZS4gTGV0J3MgY29uc2lk
ZXIgdGhlIHBvc3NpYmlsaXRpZXM6CkBAIC0yMTQsMzEgKzI2Miw0NSBAQCBmdW5jdGlvbiBwYXJz
ZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgICAgICAgICAvLyBJbiB0aGUgZnV0dXJlIHdlJ2xsIGFsbG93IGNvbnN0ZXhwcnMgdG8gZG8g
bW9yZSB0aGluZ3MsIGFuZCB0aGVuIHdlJ2xsIHN0aWxsIGhhdmUKICAgICAgICAgICAgIC8vIHRo
ZSBwcm9ibGVtIHRoYXQgc29tZXRoaW5nIG9mIHRoZSBmb3JtIFRbMV1bMl1bM10uLi4gY2FuIGVp
dGhlciBiZSBhIHR5cGUgb3IgYQogICAgICAgICAgICAgLy8gY29uc3RleHByLCBhbmQgd2UgY2Fu
IGZpZ3VyZSBvdXQgaW4gdGhlIGNoZWNrZXIgd2hpY2ggaXQgaXMuCi0gICAgICAgICAgICBsZXQg
dHlwZVJlZiA9IGxleGVyLmJhY2t0cmFja2luZ1Njb3BlKCgpID0+IHsKKyAgICAgICAgICAgIGxl
dCB0eXBlUmVmID0gYmFja3RyYWNraW5nU2NvcGUoKCkgPT4gewogICAgICAgICAgICAgICAgIGxl
dCByZXN1bHQgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOwotICAgICAgICAgICAgICAgIGFz
c2VydE5leHQoIiwiLCAiPiIsICI+PiIpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBhc3NlcnROZXh0KCIsIiwgIj4iLCAi
Pj4iKTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBUeXBlUmVmKHJlc3VsdCwgcmVzdWx0LnRleHQpOwogICAgICAgICAg
ICAgfSk7CiAgICAgICAgICAgICBpZiAodHlwZVJlZikKICAgICAgICAgICAgICAgICByZXN1bHQu
cHVzaCh0eXBlUmVmKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGxldCBj
b25zdGV4cHIgPSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7CisgICAgICAgICAgICAg
ICAgbGV0IGNvbnN0ZXhwciA9IGJhY2t0cmFja2luZ1Njb3BlKCgpID0+IHsKICAgICAgICAgICAg
ICAgICAgICAgbGV0IHJlc3VsdCA9IHBhcnNlQ29uc3RleHByKCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGFzc2VydE5leHQoIiwiLCAiPiIsICI+PiIpOworICAgICAgICAgICAgICAgICAgICBpZiAo
cmVzdWx0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBhc3Nl
cnROZXh0KCIsIiwgIj4iLCAiPj4iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBpZiAoY29uc3RleHByKQogICAgICAgICAg
ICAgICAgICAgICByZXN1bHQucHVzaChjb25zdGV4cHIpOwotICAgICAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VUeXBlKCkpOworICAgICAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IHBhcnNlVHlwZSgp
OworICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlOworICAgICAgICAgICAgICAgICAg
ICByZXN1bHQucHVzaCh0eXBlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoIXRyeUNvbnN1bWUoIiwiKSkKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgICAgICBjb25zdW1lRW5kT2ZUeXBlQXJncygpOworICAgICAgICBtYXli
ZUVycm9yID0gY29uc3VtZUVuZE9mVHlwZUFyZ3MoKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJz
ZVR5cGUoKQogICAgIHsKICAgICAgICAgbGV0IHRva2VuOwpAQCAtMjQ2LDY4ICszMDgsOTYgQEAg
ZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zm
c2V0LCB0ZXh0KQogICAgICAgICBsZXQgYWRkcmVzc1NwYWNlQ29uc3VtZWQgPSBmYWxzZTsKICAg
ICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSguLi5hZGRyZXNzU3BhY2VzKSkKICAgICAgICAg
ICAgIGFkZHJlc3NTcGFjZSA9IHRva2VuLnRleHQ7Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBu
YW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgaWYgKG5hbWUgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmFtZTsKICAgICAgICAgbGV0
IHR5cGVBcmd1bWVudHMgPSBwYXJzZVR5cGVBcmd1bWVudHMoKTsKKyAgICAgICAgaWYgKHR5cGVB
cmd1bWVudHMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdHlw
ZUFyZ3VtZW50czsKICAgICAgICAgbGV0IHR5cGUgPSBuZXcgVHlwZVJlZihuYW1lLCBuYW1lLnRl
eHQsIHR5cGVBcmd1bWVudHMpOwotICAgICAgICAKKwogICAgICAgICBmdW5jdGlvbiBnZXRBZGRy
ZXNzU3BhY2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBhZGRyZXNzU3BhY2VDb25zdW1lZCA9
IHRydWU7CiAgICAgICAgICAgICBpZiAoYWRkcmVzc1NwYWNlKQogICAgICAgICAgICAgICAgIHJl
dHVybiBhZGRyZXNzU3BhY2U7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3VtZSguLi5hZGRyZXNz
U3BhY2VzKS50ZXh0OworICAgICAgICAgICAgbGV0IGNvbnN1bWVkQWRkcmVzc1NwYWNlID0gY29u
c3VtZSguLi5hZGRyZXNzU3BhY2VzKTsKKyAgICAgICAgICAgIGlmIChjb25zdW1lZEFkZHJlc3NT
cGFjZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gY29u
c3VtZWRBZGRyZXNzU3BhY2U7CisgICAgICAgICAgICByZXR1cm4gY29uc3VtZWRBZGRyZXNzU3Bh
Y2UudGV4dDsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBjb25zdCB0eXBlQ29uc3Ry
dWN0b3JTdGFjayA9IFsgXTsKIAogICAgICAgICBmb3IgKGxldCB0b2tlbjsgdG9rZW4gPSB0cnlD
b25zdW1lKCIqIiwgIlsiKTspIHsKICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICIqIikg
ewogICAgICAgICAgICAgICAgIC8vIExpa2V3aXNlLCB0aGUgYWRkcmVzcyBzcGFjZSBtdXN0IGJl
IHBhcnNlZCBiZWZvcmUgcGFyc2luZyBjb250aW51ZXMuCiAgICAgICAgICAgICAgICAgY29uc3Qg
YWRkcmVzc1NwYWNlID0gZ2V0QWRkcmVzc1NwYWNlKCk7CisgICAgICAgICAgICAgICAgaWYgKGFk
ZHJlc3NTcGFjZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGFkZHJlc3NTcGFjZTsKICAgICAgICAgICAgICAgICB0eXBlQ29uc3RydWN0b3JTdGFj
ay51bnNoaWZ0KHR5cGUgPT4gbmV3IFB0clR5cGUodG9rZW4sIGFkZHJlc3NTcGFjZSwgdHlwZSkp
OwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAodHJ5Q29uc3VtZSgiXSIpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgYWRkcmVzc1Nw
YWNlID0gZ2V0QWRkcmVzc1NwYWNlKCk7CisgICAgICAgICAgICAgICAgaWYgKGFkZHJlc3NTcGFj
ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFk
ZHJlc3NTcGFjZTsKICAgICAgICAgICAgICAgICB0eXBlQ29uc3RydWN0b3JTdGFjay51bnNoaWZ0
KHR5cGUgPT4gbmV3IEFycmF5UmVmVHlwZSh0b2tlbiwgYWRkcmVzc1NwYWNlLCB0eXBlKSk7CiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNv
bnN0IGxlbmd0aEV4cHIgPSBwYXJzZUNvbnN0ZXhwcigpOworICAgICAgICAgICAgaWYgKGxlbmd0
aEV4cHIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxl
bmd0aEV4cHI7CiAgICAgICAgICAgICB0eXBlQ29uc3RydWN0b3JTdGFjay51bnNoaWZ0KHR5cGUg
PT4gbmV3IEFycmF5VHlwZSh0b2tlbiwgdHlwZSwgbGVuZ3RoRXhwcikpOwotICAgICAgICAgICAg
Y29uc3VtZSgiXSIpOworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJdIik7
CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgfQogCiAgICAgICAgIGZv
ciAobGV0IGNvbnN0cnVjdG9yIG9mIHR5cGVDb25zdHJ1Y3RvclN0YWNrKQogICAgICAgICAgICAg
dHlwZSA9IGNvbnN0cnVjdG9yKHR5cGUpOwogCiAgICAgICAgIGlmIChhZGRyZXNzU3BhY2UgJiYg
IWFkZHJlc3NTcGFjZUNvbnN1bWVkKQotICAgICAgICAgICAgbGV4ZXIuZmFpbCgiQWRkcmVzcyBz
cGFjZSBzcGVjaWZpZWQgZm9yIHR5cGUgdGhhdCBkb2VzIG5vdCBuZWVkIGFkZHJlc3Mgc3BhY2Ui
KTsKKyAgICAgICAgICAgIHJldHVybiBmYWlsKCJBZGRyZXNzIHNwYWNlIHNwZWNpZmllZCBmb3Ig
dHlwZSB0aGF0IGRvZXMgbm90IG5lZWQgYWRkcmVzcyBzcGFjZSIpOwogCiAgICAgICAgIHJldHVy
biB0eXBlOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlVHlwZURlZigpCiAgICAg
ewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgidHlwZWRlZiIpOwotICAgICAgICBsZXQg
bmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dDsKLSAgICAgICAgY29uc3VtZSgi
PSIpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lS2lu
ZCgiaWRlbnRpZmllciIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICBsZXQgbmFt
ZSA9IG1heWJlRXJyb3IudGV4dDsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIj0iKTsK
KyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsK
LSAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB0eXBlOworICAgICAgICBtYXliZUVycm9yID0g
Y29uc3VtZSgiOyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gbmV3
IFR5cGVEZWYob3JpZ2luLCBuYW1lLCB0eXBlKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlv
biBnZW5lcmljUGFyc2VMZWZ0KHRleHRzLCBuZXh0UGFyc2VyLCBjb25zdHJ1Y3RvcikKICAgICB7
CiAgICAgICAgIGxldCBsZWZ0ID0gbmV4dFBhcnNlcigpOworICAgICAgICBpZiAobGVmdCBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBsZWZ0OwogICAgICAgICBs
ZXQgdG9rZW47CiAgICAgICAgIHdoaWxlICh0b2tlbiA9IHRyeUNvbnN1bWUoLi4udGV4dHMpKQog
ICAgICAgICAgICAgbGVmdCA9IGNvbnN0cnVjdG9yKHRva2VuLCBsZWZ0LCBuZXh0UGFyc2VyKCkp
OwogICAgICAgICByZXR1cm4gbGVmdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJz
ZUxlZnRPcGVyYXRvckNhbGwodGV4dHMsIG5leHRQYXJzZXIpCiAgICAgewogICAgICAgICByZXR1
cm4gZ2VuZXJpY1BhcnNlTGVmdCgKQEAgLTMxNSwyNCArNDA1LDMyIEBAIGZ1bmN0aW9uIHBhcnNl
KHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAg
ICAgICAgICAgICh0b2tlbiwgbGVmdCwgcmlnaHQpID0+CiAgICAgICAgICAgICAgICAgbmV3IENh
bGxFeHByZXNzaW9uKHRva2VuLCAib3BlcmF0b3IiICsgdG9rZW4udGV4dCwgW2xlZnQsIHJpZ2h0
XSkpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlQ2FsbEV4cHJlc3Npb24oKQog
ICAgIHsKICAgICAgICAgbGV0IHBhcnNlQXJndW1lbnRzID0gZnVuY3Rpb24ob3JpZ2luLCBjYWxs
TmFtZSkgewogICAgICAgICAgICAgbGV0IGFyZ3VtZW50TGlzdCA9IFtdOwogICAgICAgICAgICAg
d2hpbGUgKCF0ZXN0KCIpIikpIHsKICAgICAgICAgICAgICAgICBsZXQgYXJndW1lbnQgPSBwYXJz
ZVBvc3NpYmxlQXNzaWdubWVudCgpOworICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudCBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50
OwogICAgICAgICAgICAgICAgIGFyZ3VtZW50TGlzdC5wdXNoKGFyZ3VtZW50KTsKICAgICAgICAg
ICAgICAgICBpZiAoIXRyeUNvbnN1bWUoIiwiKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgICAgICBs
ZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVy
cm9yOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBDYWxsRXhwcmVzc2lvbihvcmlnaW4sIGNhbGxO
YW1lLCBhcmd1bWVudExpc3QpOwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IG5hbWUgPSBsZXhl
ci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7CisgICAgICAgIGxldCBuYW1lID0gYmFja3RyYWNr
aW5nU2NvcGUoKCkgPT4gewogICAgICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRl
bnRpZmllciIpOwotICAgICAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICAgICAgaWYgKG5h
bWUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7
CisgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAg
IGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAg
IHJldHVybiBtYXliZUVycm9yOwogICAgICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgICAgIH0p
OwogCkBAIC0zNDEsNDAgKzQzOSw1MiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4s
IG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGV0IHJldHVyblR5cGUgPSBw
YXJzZVR5cGUoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAgIGlmIChy
ZXR1cm5UeXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVy
biByZXR1cm5UeXBlOworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7
CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgIGxldCByZXN1bHQg
PSBwYXJzZUFyZ3VtZW50cyhyZXR1cm5UeXBlLm9yaWdpbiwgIm9wZXJhdG9yIGNhc3QiKTsKICAg
ICAgICAgICAgIHJlc3VsdC5zZXRDYXN0RGF0YShyZXR1cm5UeXBlKTsKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBpc0Nh
bGxFeHByZXNzaW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBsZXhlci50ZXN0U2NvcGUoKCkg
PT4gewotICAgICAgICAgICAgICAgIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Ci0gICAgICAg
ICAgICAgICAgY29uc3VtZSgiKCIpOwotICAgICAgICAgICAgfSkgfHwgbGV4ZXIudGVzdFNjb3Bl
KCgpID0+IHsKLSAgICAgICAgICAgICAgICBwYXJzZVR5cGUoKTsKLSAgICAgICAgICAgICAgICBj
b25zdW1lKCIoIik7CisgICAgICAgIHJldHVybiB0ZXN0U2NvcGUoKCkgPT4geworICAgICAgICAg
ICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAg
ICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgICAgICAgICAgbWF5YmVF
cnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CisgICAgICAgICAgICB9KSB8fCB0ZXN0U2NvcGUoKCkgPT4geworICAgICAgICAgICAgICAg
IGxldCB0eXBlID0gcGFyc2VUeXBlKCk7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlOworICAg
ICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICAgICAg
ICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgIH0pOwogICAgIH0KLSAgICAK
KwogICAgIGZ1bmN0aW9uIGVtaXRJbmNyZW1lbnQodG9rZW4sIG9sZCwgZXh0cmFBcmcpCiAgICAg
ewogICAgICAgICBsZXQgYXJncyA9IFtvbGRdOwogICAgICAgICBpZiAoZXh0cmFBcmcpCiAgICAg
ICAgICAgICBhcmdzLnB1c2goZXh0cmFBcmcpOwotICAgICAgICAKKwogICAgICAgICBsZXQgbmFt
ZSA9ICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0OwogICAgICAgICBpZiAoLz0kLy50ZXN0KG5hbWUp
KQogICAgICAgICAgICAgbmFtZSA9IFJlZ0V4cC5sZWZ0Q29udGV4dDsKLSAgICAgICAgCisKICAg
ICAgICAgaWYgKG5hbWUgPT0gIm9wZXJhdG9yIikKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiSW52YWxpZCBuYW1lOiAiICsgbmFtZSk7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiBu
ZXcgQ2FsbEV4cHJlc3Npb24odG9rZW4sIG5hbWUsIGFyZ3MpOwogICAgIH0KLSAgICAKKwogICAg
IGZ1bmN0aW9uIGZpbmlzaFBhcnNpbmdQb3N0SW5jcmVtZW50KHRva2VuLCBsZWZ0KQogICAgIHsK
ICAgICAgICAgbGV0IHJlYWRNb2RpZnlXcml0ZSA9IG5ldyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNz
aW9uKHRva2VuLCBsZWZ0KTsKQEAgLTM4Miw3ICs0OTIsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAg
IHJlYWRNb2RpZnlXcml0ZS5yZXN1bHRFeHAgPSByZWFkTW9kaWZ5V3JpdGUub2xkVmFsdWVSZWYo
KTsKICAgICAgICAgcmV0dXJuIHJlYWRNb2RpZnlXcml0ZTsKICAgICB9Ci0gICAgCisKICAgICBm
dW5jdGlvbiBwYXJzZVN1ZmZpeE9wZXJhdG9yKGxlZnQsIGFjY2VwdGFibGVPcGVyYXRvcnMpCiAg
ICAgewogICAgICAgICBsZXQgdG9rZW47CkBAIC0zOTUsMTEgKzUwNSwxOCBAQCBmdW5jdGlvbiBw
YXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQp
CiAgICAgICAgICAgICBjYXNlICItPiI6CiAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnRleHQg
PT0gIi0+IikKICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IG5ldyBEZXJlZmVyZW5jZUV4cHJl
c3Npb24odG9rZW4sIGxlZnQpOwotICAgICAgICAgICAgICAgIGxlZnQgPSBuZXcgRG90RXhwcmVz
c2lvbih0b2tlbiwgbGVmdCwgY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50ZXh0KTsKKyAgICAg
ICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Cisg
ICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAgICAgICAgIGxl
ZnQgPSBuZXcgRG90RXhwcmVzc2lvbih0b2tlbiwgbGVmdCwgbWF5YmVFcnJvci50ZXh0KTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgIlsiOiB7CiAgICAgICAgICAg
ICAgICAgbGV0IGluZGV4ID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgY29u
c3VtZSgiXSIpOworICAgICAgICAgICAgICAgIGlmIChpbmRleCBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICAgICAgICAg
IGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiXSIpOworICAgICAgICAgICAgICAgIGlmIChtYXli
ZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgICAgICBsZWZ0ID0gbmV3IEluZGV4RXhwcmVzc2lv
bih0b2tlbiwgbGVmdCwgaW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQpAQCAtNDA5LDcgKzUyNiw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwg
b3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm4gbGVmdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlU3Vm
Zml4KCkKICAgICB7CiAgICAgICAgIGxldCBhY2NlcHRhYmxlT3BlcmF0b3JzID0gWyIrKyIsICIt
LSIsICIuIiwgIi0+IiwgIlsiXTsKQEAgLTQxNywxMyArNTM0LDE4IEBAIGZ1bmN0aW9uIHBhcnNl
KHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAg
ICAgICAgbGV0IGxlZnQ7CiAgICAgICAgIGlmIChpc0NhbGxFeHByZXNzaW9uKCkpIHsKICAgICAg
ICAgICAgIGxlZnQgPSBwYXJzZUNhbGxFeHByZXNzaW9uKCk7CisgICAgICAgICAgICBpZiAobGVm
dCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVmdDsK
ICAgICAgICAgICAgIGFjY2VwdGFibGVPcGVyYXRvcnMgPSBsaW1pdGVkT3BlcmF0b3JzOwotICAg
ICAgICB9IGVsc2UKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxlZnQgPSBwYXJzZVRl
cm0oKTsKLSAgICAgICAgCisgICAgICAgICAgICBpZiAobGVmdCBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVmdDsKKyAgICAgICAgfQorCiAgICAgICAg
IHJldHVybiBwYXJzZVN1ZmZpeE9wZXJhdG9yKGxlZnQsIGFjY2VwdGFibGVPcGVyYXRvcnMpOwog
ICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIGZpbmlzaFBhcnNpbmdQcmVJbmNyZW1lbnQodG9r
ZW4sIGxlZnQsIGV4dHJhQXJnKQogICAgIHsKICAgICAgICAgbGV0IHJlYWRNb2RpZnlXcml0ZSA9
IG5ldyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKHRva2VuLCBsZWZ0KTsKQEAgLTQzMSw1NCAr
NTUzLDcyIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGlu
ZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgcmVhZE1vZGlmeVdyaXRlLnJlc3VsdEV4cCA9
IHJlYWRNb2RpZnlXcml0ZS5uZXdWYWx1ZVJlZigpOwogICAgICAgICByZXR1cm4gcmVhZE1vZGlm
eVdyaXRlOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUHJlSW5jcmVtZW50KCkK
ICAgICB7CiAgICAgICAgIGxldCB0b2tlbiA9IGNvbnN1bWUoIisrIiwgIi0tIik7CisgICAgICAg
IGlmICh0b2tlbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB0
b2tlbjsKICAgICAgICAgbGV0IGxlZnQgPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAg
IGlmIChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGxl
ZnQ7CiAgICAgICAgIHJldHVybiBmaW5pc2hQYXJzaW5nUHJlSW5jcmVtZW50KHRva2VuLCBsZWZ0
KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlUHJlZml4KCkKICAg
ICB7CiAgICAgICAgIGxldCB0b2tlbjsKICAgICAgICAgaWYgKHRlc3QoIisrIiwgIi0tIikpCiAg
ICAgICAgICAgICByZXR1cm4gcGFyc2VQcmVJbmNyZW1lbnQoKTsKLSAgICAgICAgaWYgKHRva2Vu
ID0gdHJ5Q29uc3VtZSgiKyIsICItIiwgIn4iKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ2Fs
bEV4cHJlc3Npb24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0LCBbcGFyc2VQb3NzaWJs
ZVByZWZpeCgpXSk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIioiKSkKLSAgICAg
ICAgICAgIHJldHVybiBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3Np
YmxlUHJlZml4KCkpOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCImIikpCi0gICAg
ICAgICAgICByZXR1cm4gbmV3IE1ha2VQdHJFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3NpYmxl
UHJlZml4KCkpOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJAIikpCi0gICAgICAg
ICAgICByZXR1cm4gbmV3IE1ha2VBcnJheVJlZkV4cHJlc3Npb24odG9rZW4sIHBhcnNlUG9zc2li
bGVQcmVmaXgoKSk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIiEiKSkgeworICAg
ICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIrIiwgIi0iLCAifiIpKSB7CisgICAgICAgICAg
ICBsZXQgcG9zc2libGVQcmVmaXggPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgICAg
ICBpZiAocG9zc2libGVQcmVmaXggaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIFdTeW50YXhFcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4
cHJlc3Npb24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0LCBbcG9zc2libGVQcmVmaXhd
KTsKKyAgICAgICAgfSBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIqIikpIHsKKyAgICAgICAgICAg
IGxldCBwb3NzaWJsZVByZWZpeCA9IHBhcnNlUG9zc2libGVQcmVmaXgoKTsKKyAgICAgICAgICAg
IGlmIChwb3NzaWJsZVByZWZpeCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gV1N5bnRheEVycm9yOworICAgICAgICAgICAgcmV0dXJuIG5ldyBEZXJlZmVy
ZW5jZUV4cHJlc3Npb24odG9rZW4sIHBvc3NpYmxlUHJlZml4KTsKKyAgICAgICAgfSBpZiAodG9r
ZW4gPSB0cnlDb25zdW1lKCImIikpIHsKKyAgICAgICAgICAgIGxldCBwb3NzaWJsZVByZWZpeCA9
IHBhcnNlUG9zc2libGVQcmVmaXgoKTsKKyAgICAgICAgICAgIGlmIChwb3NzaWJsZVByZWZpeCBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1N5bnRheEVy
cm9yOworICAgICAgICAgICAgcmV0dXJuIG5ldyBNYWtlUHRyRXhwcmVzc2lvbih0b2tlbiwgcG9z
c2libGVQcmVmaXgpOworICAgICAgICB9IGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIkAiKSkgewor
ICAgICAgICAgICAgbGV0IHBvc3NpYmxlUHJlZml4ID0gcGFyc2VQb3NzaWJsZVByZWZpeCgpOwor
ICAgICAgICAgICAgaWYgKHBvc3NpYmxlUHJlZml4IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgICAgIHJldHVybiBXU3ludGF4RXJyb3I7CisgICAgICAgICAgICByZXR1cm4g
bmV3IE1ha2VBcnJheVJlZkV4cHJlc3Npb24odG9rZW4sIHBvc3NpYmxlUHJlZml4KTsKKyAgICAg
ICAgfSBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIhIikpIHsKICAgICAgICAgICAgIGxldCByZW1h
aW5kZXIgPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgICAgICBpZiAocmVtYWluZGVy
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiByZW1haW5k
ZXI7CiAgICAgICAgICAgICByZXR1cm4gbmV3IExvZ2ljYWxOb3QodG9rZW4sIG5ldyBDYWxsRXhw
cmVzc2lvbihyZW1haW5kZXIub3JpZ2luLCAiYm9vbCIsIFtyZW1haW5kZXJdKSk7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIHBhcnNlUG9zc2libGVTdWZmaXgoKTsKICAgICB9Ci0gICAgCisK
ICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlUHJvZHVjdCgpCiAgICAgewogICAgICAgICByZXR1
cm4gcGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsiKiIsICIvIiwgIiUiXSwgcGFyc2VQb3NzaWJsZVBy
ZWZpeCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZVN1bSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gcGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsiKyIsICItIl0sIHBh
cnNlUG9zc2libGVQcm9kdWN0KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBv
c3NpYmxlU2hpZnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9wZXJhdG9yQ2Fs
bChbIjw8IiwgIj4+Il0sIHBhcnNlUG9zc2libGVTdW0pOwogICAgIH0KLSAgICAKKwogICAgIGZ1
bmN0aW9uIHBhcnNlUG9zc2libGVSZWxhdGlvbmFsSW5lcXVhbGl0eSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gcGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsiPCIsICI+IiwgIjw9IiwgIj49Il0sIHBh
cnNlUG9zc2libGVTaGlmdCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQb3Nz
aWJsZVJlbGF0aW9uYWxFcXVhbGl0eSgpCiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJpY1Bh
cnNlTGVmdCgKQEAgLTQ5MCwxMDAgKzYzMCwxMjkgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwg
b3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9KTsKICAgICB9Ci0gICAgCisKICAgICBm
dW5jdGlvbiBwYXJzZVBvc3NpYmxlQml0d2lzZUFuZCgpCiAgICAgewogICAgICAgICByZXR1cm4g
cGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsiJiJdLCBwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEVxdWFs
aXR5KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlQml0d2lzZVhv
cigpCiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsiXiJdLCBw
YXJzZVBvc3NpYmxlQml0d2lzZUFuZCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFy
c2VQb3NzaWJsZUJpdHdpc2VPcigpCiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VMZWZ0T3Bl
cmF0b3JDYWxsKFsifCJdLCBwYXJzZVBvc3NpYmxlQml0d2lzZVhvcik7CiAgICAgfQotICAgIAor
CiAgICAgZnVuY3Rpb24gcGFyc2VMZWZ0TG9naWNhbEV4cHJlc3Npb24odGV4dHMsIG5leHRQYXJz
ZXIpCiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJpY1BhcnNlTGVmdCgKICAgICAgICAgICAg
IHRleHRzLCBuZXh0UGFyc2VyLAogICAgICAgICAgICAgKHRva2VuLCBsZWZ0LCByaWdodCkgPT4g
bmV3IExvZ2ljYWxFeHByZXNzaW9uKHRva2VuLCB0b2tlbi50ZXh0LCBuZXcgQ2FsbEV4cHJlc3Np
b24obGVmdC5vcmlnaW4sICJib29sIiwgW2xlZnRdKSwgbmV3IENhbGxFeHByZXNzaW9uKHJpZ2h0
Lm9yaWdpbiwgImJvb2wiLCBbcmlnaHRdKSkpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9u
IHBhcnNlUG9zc2libGVMb2dpY2FsQW5kKCkKICAgICB7CiAgICAgICAgIHJldHVybiBwYXJzZUxl
ZnRMb2dpY2FsRXhwcmVzc2lvbihbIiYmIl0sIHBhcnNlUG9zc2libGVCaXR3aXNlT3IpOwogICAg
IH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUG9zc2libGVMb2dpY2FsT3IoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHBhcnNlTGVmdExvZ2ljYWxFeHByZXNzaW9uKFsifHwiXSwgcGFyc2VQ
b3NzaWJsZUxvZ2ljYWxBbmQpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUG9z
c2libGVUZXJuYXJ5Q29uZGl0aW9uYWwoKQogICAgIHsKICAgICAgICAgbGV0IHByZWRpY2F0ZSA9
IHBhcnNlUG9zc2libGVMb2dpY2FsT3IoKTsKKyAgICAgICAgaWYgKHByZWRpY2F0ZSBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBwcmVkaWNhdGU7CiAgICAgICAg
IGxldCBvcGVyYXRvciA9IHRyeUNvbnN1bWUoIj8iKTsKICAgICAgICAgaWYgKCFvcGVyYXRvcikK
ICAgICAgICAgICAgIHJldHVybiBwcmVkaWNhdGU7CiAgICAgICAgIGxldCBib2R5RXhwcmVzc2lv
biA9IHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCk7Ci0gICAgICAgIGNvbnN1bWUoIjoiKTsKKyAg
ICAgICAgaWYgKGJvZHlFeHByZXNzaW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIGJvZHlFeHByZXNzaW9uOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNv
bnN1bWUoIjoiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IGVsc2VFeHBy
ZXNzaW9uID0gcGFyc2VQb3NzaWJsZUFzc2lnbm1lbnQoKTsKKyAgICAgICAgaWYgKGVsc2VFeHBy
ZXNzaW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGVsc2VF
eHByZXNzaW9uOwogICAgICAgICByZXR1cm4gbmV3IFRlcm5hcnlFeHByZXNzaW9uKG9wZXJhdG9y
LCBwcmVkaWNhdGUsIGJvZHlFeHByZXNzaW9uLCBlbHNlRXhwcmVzc2lvbik7CiAgICAgfQotICAg
IAorCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZUFzc2lnbm1lbnQobW9kZSkKICAgICB7CiAg
ICAgICAgIGxldCBsaHMgPSBwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKCk7CisgICAg
ICAgIGlmIChsaHMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
bGhzOwogICAgICAgICBsZXQgb3BlcmF0b3IgPSB0cnlDb25zdW1lKCI9IiwgIis9IiwgIi09Iiwg
Iio9IiwgIi89IiwgIiU9IiwgIl49IiwgInw9IiwgIiY9Iik7CiAgICAgICAgIGlmICghb3BlcmF0
b3IpIHsKICAgICAgICAgICAgIGlmIChtb2RlID09ICJyZXF1aXJlZCIpCi0gICAgICAgICAgICAg
ICAgbGV4ZXIuZmFpbCgiRXhwZWN0ZWQgYXNzaWdubWVudDogIiArIGxleGVyLl90ZXh0LnN1YnN0
cmluZyhsZXhlci5faW5kZXgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgiRXhwZWN0
ZWQgYXNzaWdubWVudDogIiArIGxleGVyLl90ZXh0LnN1YnN0cmluZyhsZXhlci5faW5kZXgpKTsK
ICAgICAgICAgICAgIHJldHVybiBsaHM7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG9wZXJhdG9y
LnRleHQgPT0gIj0iKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBBc3NpZ25tZW50KG9wZXJhdG9y
LCBsaHMsIHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCkpOwotICAgICAgICByZXR1cm4gZmluaXNo
UGFyc2luZ1ByZUluY3JlbWVudChvcGVyYXRvciwgbGhzLCBwYXJzZVBvc3NpYmxlQXNzaWdubWVu
dCgpKTsKKyAgICAgICAgaWYgKG9wZXJhdG9yLnRleHQgPT0gIj0iKSB7CisgICAgICAgICAgICBs
ZXQgaW5uZXJBc3NpZ25tZW50ID0gcGFyc2VQb3NzaWJsZUFzc2lnbm1lbnQoKTsKKyAgICAgICAg
ICAgIGlmIChpbm5lckFzc2lnbm1lbnQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGlubmVyQXNzaWdubWVudDsKKyAgICAgICAgICAgIHJldHVybiBuZXcg
QXNzaWdubWVudChvcGVyYXRvciwgbGhzLCBpbm5lckFzc2lnbm1lbnQpOworICAgICAgICB9Cisg
ICAgICAgIGxldCBpbm5lckFzc2lnbm1lbnQgPSBwYXJzZVBvc3NpYmxlQXNzaWdubWVudCgpOwor
ICAgICAgICBpZiAoaW5uZXJBc3NpZ25tZW50IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIGlubmVyQXNzaWdubWVudDsKKyAgICAgICAgcmV0dXJuIGZpbmlzaFBh
cnNpbmdQcmVJbmNyZW1lbnQob3BlcmF0b3IsIGxocywgaW5uZXJBc3NpZ25tZW50KTsKICAgICB9
Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUFzc2lnbm1lbnQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCJyZXF1aXJlZCIpOwogICAgIH0KLSAgICAK
KwogICAgIGZ1bmN0aW9uIHBhcnNlUG9zdEluY3JlbWVudCgpCiAgICAgewotICAgICAgICBsZXQg
bGVmdCA9IHBhcnNlU3VmZml4T3BlcmF0b3IocGFyc2VUZXJtKCksICIuIiwgIi0+IiwgIlsiKTsK
KyAgICAgICAgbGV0IHRlcm0gPSBwYXJzZVRlcm0oKTsKKyAgICAgICAgaWYgKHRlcm0gaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdGVybTsKKyAgICAgICAgbGV0
IGxlZnQgPSBwYXJzZVN1ZmZpeE9wZXJhdG9yKHRlcm0sICIuIiwgIi0+IiwgIlsiKTsKKyAgICAg
ICAgaWYgKGxlZnQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
bGVmdDsKICAgICAgICAgbGV0IHRva2VuID0gY29uc3VtZSgiKysiLCAiLS0iKTsKKyAgICAgICAg
aWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRv
a2VuOwogICAgICAgICByZXR1cm4gZmluaXNoUGFyc2luZ1Bvc3RJbmNyZW1lbnQodG9rZW4sIGxl
ZnQpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlRWZmZWN0ZnVsRXhwcmVzc2lv
bigpCiAgICAgewogICAgICAgICBpZiAoaXNDYWxsRXhwcmVzc2lvbigpKQogICAgICAgICAgICAg
cmV0dXJuIHBhcnNlQ2FsbEV4cHJlc3Npb24oKTsKLSAgICAgICAgbGV0IHByZUluY3JlbWVudCA9
IGxleGVyLmJhY2t0cmFja2luZ1Njb3BlKHBhcnNlUHJlSW5jcmVtZW50KTsKKyAgICAgICAgbGV0
IHByZUluY3JlbWVudCA9IGJhY2t0cmFja2luZ1Njb3BlKHBhcnNlUHJlSW5jcmVtZW50KTsKICAg
ICAgICAgaWYgKHByZUluY3JlbWVudCkKICAgICAgICAgICAgIHJldHVybiBwcmVJbmNyZW1lbnQ7
Ci0gICAgICAgIGxldCBwb3N0SW5jcmVtZW50ID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUocGFy
c2VQb3N0SW5jcmVtZW50KTsKKyAgICAgICAgbGV0IHBvc3RJbmNyZW1lbnQgPSBiYWNrdHJhY2tp
bmdTY29wZShwYXJzZVBvc3RJbmNyZW1lbnQpOwogICAgICAgICBpZiAocG9zdEluY3JlbWVudCkK
ICAgICAgICAgICAgIHJldHVybiBwb3N0SW5jcmVtZW50OwogICAgICAgICByZXR1cm4gcGFyc2VB
c3NpZ25tZW50KCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gZ2VuZXJpY1BhcnNlQ29t
bWFFeHByZXNzaW9uKGZpbmFsRXhwcmVzc2lvblBhcnNlcikKICAgICB7CiAgICAgICAgIGxldCBs
aXN0ID0gW107CiAgICAgICAgIGxldCBvcmlnaW4gPSBsZXhlci5wZWVrKCk7CiAgICAgICAgIGlm
ICghb3JpZ2luKQotICAgICAgICAgICAgbGV4ZXIuZmFpbCgiVW5leHBlY3RlZCBlbmQgb2YgZmls
ZSIpOworICAgICAgICAgICAgcmV0dXJuIGZhaWwoIlVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiKTsK
ICAgICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgbGV0IGVmZmVjdGZ1bEV4cHJlc3Npb24g
PSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcGFyc2VF
ZmZlY3RmdWxFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgY29uc3VtZSgiLCIpOworICAg
ICAgICAgICAgbGV0IGVmZmVjdGZ1bEV4cHJlc3Npb24gPSBiYWNrdHJhY2tpbmdTY29wZSgoKSA9
PiB7CisgICAgICAgICAgICAgICAgbGV0IGVmZmVjdGZ1bEV4cHJlc3Npb24gPSBwYXJzZUVmZmVj
dGZ1bEV4cHJlc3Npb24oKTsKKyAgICAgICAgICAgICAgICBpZiAoZWZmZWN0ZnVsRXhwcmVzc2lv
biBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVm
ZmVjdGZ1bEV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25z
dW1lKCIsIik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAg
ICAgICAgICAgIHJldHVybiBlZmZlY3RmdWxFeHByZXNzaW9uOwogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICBpZiAoIWVmZmVjdGZ1bEV4cHJlc3Npb24pIHsKICAgICAgICAgICAgICAgICBs
ZXQgZmluYWwgPSBmaW5hbEV4cHJlc3Npb25QYXJzZXIoKTsKQEAgLTU5OCw4OSArNzY3LDE0MSBA
QCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJP
ZmZzZXQsIHRleHQpCiAgICAgICAgICAgICByZXR1cm4gbGlzdFswXTsKICAgICAgICAgcmV0dXJu
IG5ldyBDb21tYUV4cHJlc3Npb24ob3JpZ2luLCBsaXN0KTsKICAgICB9Ci0gICAgCisKICAgICBm
dW5jdGlvbiBwYXJzZUNvbW1hRXhwcmVzc2lvbigpCiAgICAgewogICAgICAgICByZXR1cm4gZ2Vu
ZXJpY1BhcnNlQ29tbWFFeHByZXNzaW9uKHBhcnNlUG9zc2libGVBc3NpZ25tZW50KTsKICAgICB9
Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHBhcnNlQ29tbWFFeHByZXNzaW9uKCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rp
b24gcGFyc2VFZmZlY3RmdWxTdGF0ZW1lbnQoKQogICAgIHsKICAgICAgICAgbGV0IHJlc3VsdCA9
IGdlbmVyaWNQYXJzZUNvbW1hRXhwcmVzc2lvbihwYXJzZUVmZmVjdGZ1bEV4cHJlc3Npb24pOwot
ICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBsZXQgbWF5YmVF
cnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVJldHVybigpCiAg
ICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgicmV0dXJuIik7CisgICAgICAgIGlm
IChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3Jp
Z2luOwogICAgICAgICBpZiAodHJ5Q29uc3VtZSgiOyIpKQogICAgICAgICAgICAgcmV0dXJuIG5l
dyBSZXR1cm4ob3JpZ2luLCBudWxsKTsKICAgICAgICAgbGV0IGV4cHJlc3Npb24gPSBwYXJzZUV4
cHJlc3Npb24oKTsKLSAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICBpZiAoZXhwcmVzc2lv
biBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBleHByZXNzaW9u
OworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG1h
eWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5
YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBSZXR1cm4ob3JpZ2luLCBleHByZXNzaW9uKTsK
ICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUJyZWFrKCkKICAgICB7CiAgICAgICAg
IGxldCBvcmlnaW4gPSBjb25zdW1lKCJicmVhayIpOwotICAgICAgICBjb25zdW1lKCI7Iik7Cisg
ICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBCcmVhayhvcmlnaW4pOwog
ICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlQ29udGludWUoKQogICAgIHsKICAgICAg
ICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoImNvbnRpbnVlIik7Ci0gICAgICAgIGNvbnN1bWUoIjsi
KTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgIHJldHVybiBvcmlnaW47CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIp
OworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gbmV3IENvbnRpbnVlKG9y
aWdpbik7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VJZlN0YXRlbWVudCgpCiAgICAgewog
ICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgiaWYiKTsKLSAgICAgICAgY29uc3VtZSgiKCIp
OworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7
CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBjb25kaXRpb25hbCA9IHBhcnNl
RXhwcmVzc2lvbigpOwotICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChjb25kaXRp
b25hbCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBjb25kaXRp
b25hbDsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1h
eWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5
YmVFcnJvcjsKICAgICAgICAgbGV0IGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICBp
ZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5
OwogICAgICAgICBsZXQgZWxzZUJvZHk7Ci0gICAgICAgIGlmICh0cnlDb25zdW1lKCJlbHNlIikp
CisgICAgICAgIGlmICh0cnlDb25zdW1lKCJlbHNlIikpIHsKICAgICAgICAgICAgIGVsc2VCb2R5
ID0gcGFyc2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChlbHNlQm9keSBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxzZUJvZHk7CisgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIG5ldyBJZlN0YXRlbWVudChvcmlnaW4sIG5ldyBDYWxsRXhwcmVz
c2lvbihjb25kaXRpb25hbC5vcmlnaW4sICJib29sIiwgW2NvbmRpdGlvbmFsXSksIGJvZHksIGVs
c2VCb2R5KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZVdoaWxlKCkKICAgICB7CiAgICAg
ICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJ3aGlsZSIpOwotICAgICAgICBjb25zdW1lKCIoIik7
CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsK
KyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IGNvbmRpdGlvbmFsID0gcGFyc2VF
eHByZXNzaW9uKCk7Ci0gICAgICAgIGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKGNvbmRpdGlv
bmFsIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlv
bmFsOworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKSIpOworICAgICAgICBpZiAobWF5
YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXli
ZUVycm9yOwogICAgICAgICBsZXQgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAgIGlm
IChib2R5IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGJvZHk7
CiAgICAgICAgIHJldHVybiBuZXcgV2hpbGVMb29wKG9yaWdpbiwgbmV3IENhbGxFeHByZXNzaW9u
KGNvbmRpdGlvbmFsLm9yaWdpbiwgImJvb2wiLCBbY29uZGl0aW9uYWxdKSwgYm9keSk7CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gcGFyc2VGb3IoKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9
IGNvbnN1bWUoImZvciIpOwotICAgICAgICBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChvcmln
aW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOwor
ICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKICAgICAgICAgbGV0IGluaXRpYWxpemF0aW9uOwogICAgICAgICBpZiAodHJ5Q29uc3Vt
ZSgiOyIpKQogICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gPSB1bmRlZmluZWQ7CiAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gPSBsZXhlci5iYWNrdHJhY2tpbmdT
Y29wZShwYXJzZVZhcmlhYmxlRGVjbHMpOwotICAgICAgICAgICAgaWYgKCFpbml0aWFsaXphdGlv
bikKKyAgICAgICAgICAgIGluaXRpYWxpemF0aW9uID0gYmFja3RyYWNraW5nU2NvcGUocGFyc2VW
YXJpYWJsZURlY2xzKTsKKyAgICAgICAgICAgIGlmICghaW5pdGlhbGl6YXRpb24pIHsKICAgICAg
ICAgICAgICAgICBpbml0aWFsaXphdGlvbiA9IHBhcnNlRWZmZWN0ZnVsU3RhdGVtZW50KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGluaXRpYWxpemF0aW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5pdGlhbGl6YXRpb247CisgICAgICAgICAg
ICB9CiAgICAgICAgIH0KICAgICAgICAgbGV0IGNvbmRpdGlvbiA9IHRyeUNvbnN1bWUoIjsiKTsK
ICAgICAgICAgaWYgKGNvbmRpdGlvbikKICAgICAgICAgICAgIGNvbmRpdGlvbiA9IHVuZGVmaW5l
ZDsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb25kaXRpb24gPSBwYXJzZUV4cHJlc3Np
b24oKTsKLSAgICAgICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgICAgIGlmIChjb25kaXRp
b24gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmRp
dGlvbjsKKyAgICAgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgICAg
ICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgIGNvbmRpdGlvbiA9IG5ldyBDYWxsRXhw
cmVzc2lvbihjb25kaXRpb24ub3JpZ2luLCAiYm9vbCIsIFtjb25kaXRpb25dKTsKICAgICAgICAg
fQogICAgICAgICBsZXQgaW5jcmVtZW50OwpAQCAtNjg4LDU5ICs5MDksMTExIEBAIGZ1bmN0aW9u
IHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4
dCkKICAgICAgICAgICAgIGluY3JlbWVudCA9IHVuZGVmaW5lZDsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBpbmNyZW1lbnQgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIGNv
bnN1bWUoIikiKTsKKyAgICAgICAgICAgIGlmIChpbmNyZW1lbnQgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGluY3JlbWVudDsKKyAgICAgICAgICAgIG1h
eWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
ICAgICAgICAgfQogICAgICAgICBsZXQgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAg
IGlmIChib2R5IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGJv
ZHk7CiAgICAgICAgIHJldHVybiBuZXcgRm9yTG9vcChvcmlnaW4sIGluaXRpYWxpemF0aW9uLCBj
b25kaXRpb24sIGluY3JlbWVudCwgYm9keSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VE
bygpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgiZG8iKTsKKyAgICAgICAg
aWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBv
cmlnaW47CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKLSAgICAgICAgY29u
c3VtZSgid2hpbGUiKTsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAoYm9keSBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5OworICAgICAg
ICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIndoaWxlIik7CisgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXli
ZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJl
RXJyb3I7CiAgICAgICAgIGxldCBjb25kaXRpb25hbCA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAg
ICAgICBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChjb25kaXRpb25hbCBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBjb25kaXRpb25hbDsKKyAgICAgICAgbWF5
YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAg
cmV0dXJuIG5ldyBEb1doaWxlTG9vcChvcmlnaW4sIGJvZHksIG5ldyBDYWxsRXhwcmVzc2lvbihj
b25kaXRpb25hbC5vcmlnaW4sICJib29sIiwgW2NvbmRpdGlvbmFsXSkpOwogICAgIH0KLSAgICAK
KwogICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVEZWNscygpCiAgICAgewogICAgICAgICBsZXQg
dHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiB0eXBlOwogICAgICAgICBsZXQgbGlzdCA9IFtdOwog
ICAgICAgICBkbyB7CiAgICAgICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlm
aWVyIik7CisgICAgICAgICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gbmFtZTsKICAgICAgICAgICAgIGxldCBpbml0aWFsaXplciA9
IHRyeUNvbnN1bWUoIj0iKSA/IHBhcnNlRXhwcmVzc2lvbigpIDogbnVsbDsKKyAgICAgICAgICAg
IGlmIChpbml0aWFsaXplciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gaW5pdGlhbGl6ZXI7CiAgICAgICAgICAgICBsaXN0LnB1c2gobmV3IFZhcmlhYmxl
RGVjbChuYW1lLCBuYW1lLnRleHQsIHR5cGUsIGluaXRpYWxpemVyKSk7Ci0gICAgICAgIH0gd2hp
bGUgKGNvbnN1bWUoIiwiLCAiOyIpLnRleHQgPT0gIiwiKTsKKyAgICAgICAgICAgIGxldCBtYXli
ZUVycm9yID0gY29uc3VtZSgiLCIsICI7Iik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9yLnRleHQgIT0gIiwiKQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9IHdoaWxlICh0cnVlKTsKICAgICAgICAgcmV0dXJuIG5ldyBD
b21tYUV4cHJlc3Npb24odHlwZS5vcmlnaW4sIGxpc3QpOwogICAgIH0KLSAgICAKKwogICAgIGZ1
bmN0aW9uIHBhcnNlU3dpdGNoQ2FzZSgpCiAgICAgewogICAgICAgICBsZXQgdG9rZW4gPSBjb25z
dW1lKCJkZWZhdWx0IiwgImNhc2UiKTsKKyAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICBsZXQgdmFsdWU7
Ci0gICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJjYXNlIikKKyAgICAgICAgaWYgKHRva2VuLnRl
eHQgPT0gImNhc2UiKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlQ29uc3RleHByKCk7Ci0g
ICAgICAgIGNvbnN1bWUoIjoiKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKyAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI6Iik7CisgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VCbG9ja0JvZHkoIn0iLCAiZGVmYXVsdCIsICJj
YXNlIik7CisgICAgICAgIGlmIChib2R5IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIGJvZHk7CiAgICAgICAgIHJldHVybiBuZXcgU3dpdGNoQ2FzZSh0b2tlbiwg
dmFsdWUsIGJvZHkpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlU3dpdGNoU3Rh
dGVtZW50KCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJzd2l0Y2giKTsK
LSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJl
RXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxl
dCB2YWx1ZSA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBjb25zdW1lKCIpIik7Ci0gICAg
ICAgIGNvbnN1bWUoInsiKTsKKyAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICBtYXliZUVycm9yID0gY29u
c3VtZSgiKSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICBtYXliZUVycm9yID0g
Y29uc3VtZSgieyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgcmVzdWx0
ID0gbmV3IFN3aXRjaFN0YXRlbWVudChvcmlnaW4sIHZhbHVlKTsKLSAgICAgICAgd2hpbGUgKCF0
cnlDb25zdW1lKCJ9IikpCi0gICAgICAgICAgICByZXN1bHQuYWRkKHBhcnNlU3dpdGNoQ2FzZSgp
KTsKKyAgICAgICAgd2hpbGUgKCF0cnlDb25zdW1lKCJ9IikpIHsKKyAgICAgICAgICAgIGxldCBz
d2l0Y2hDYXNlID0gcGFyc2VTd2l0Y2hDYXNlKCk7CisgICAgICAgICAgICBpZiAoc3dpdGNoQ2Fz
ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gc3dpdGNo
Q2FzZTsKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoc3dpdGNoQ2FzZSk7CisgICAgICAgIH0KICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVN0
YXRlbWVudCgpCiAgICAgewogICAgICAgICBsZXQgdG9rZW4gPSBsZXhlci5wZWVrKCk7CkBAIC03
NjYsNzcgKzEwMzksMTA5IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2lu
S2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIHJldHVybiBwYXJzZVN3
aXRjaFN0YXRlbWVudCgpOwogICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAidHJhcCIpIHsKICAg
ICAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJ0cmFwIik7CisgICAgICAgICAgICBpZiAo
b3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBv
cmlnaW47CiAgICAgICAgICAgICBjb25zdW1lKCI7Iik7CiAgICAgICAgICAgICByZXR1cm4gbmV3
IFRyYXBTdGF0ZW1lbnQob3JpZ2luKTsKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4udGV4
dCA9PSAieyIpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VCbG9jaygpOwotICAgICAgICBsZXQg
dmFyaWFibGVEZWNsID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUocGFyc2VWYXJpYWJsZURlY2xz
KTsKKyAgICAgICAgbGV0IHZhcmlhYmxlRGVjbCA9IGJhY2t0cmFja2luZ1Njb3BlKHBhcnNlVmFy
aWFibGVEZWNscyk7CiAgICAgICAgIGlmICh2YXJpYWJsZURlY2wpCiAgICAgICAgICAgICByZXR1
cm4gdmFyaWFibGVEZWNsOwogICAgICAgICByZXR1cm4gcGFyc2VFZmZlY3RmdWxTdGF0ZW1lbnQo
KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUJsb2NrQm9keSguLi50ZXJtaW5h
dG9ycykKICAgICB7CiAgICAgICAgIGxldCBibG9jayA9IG5ldyBCbG9jayhvcmlnaW4pOwogICAg
ICAgICB3aGlsZSAoIXRlc3QoLi4udGVybWluYXRvcnMpKSB7CiAgICAgICAgICAgICBsZXQgc3Rh
dGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlbWVudDsK
ICAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQpCiAgICAgICAgICAgICAgICAgYmxvY2suYWRkKHN0
YXRlbWVudCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgIH0KLSAgICAK
KwogICAgIGZ1bmN0aW9uIHBhcnNlQmxvY2soKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9
IGNvbnN1bWUoInsiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CiAgICAgICAgIGxldCBibG9jayA9IHBhcnNl
QmxvY2tCb2R5KCJ9Iik7Ci0gICAgICAgIGNvbnN1bWUoIn0iKTsKKyAgICAgICAgaWYgKGJsb2Nr
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGJsb2NrOworICAg
ICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIn0iKTsKKyAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBh
cnNlUGFyYW1ldGVyKCkKICAgICB7CiAgICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7Cisg
ICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIHR5cGU7CiAgICAgICAgIGxldCBuYW1lID0gdHJ5Q29uc3VtZUtpbmQoImlkZW50aWZpZXIi
KTsKICAgICAgICAgcmV0dXJuIG5ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBuYW1lID8g
bmFtZS50ZXh0IDogbnVsbCwgdHlwZSk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFy
c2VQYXJhbWV0ZXJzKCkKICAgICB7Ci0gICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgbGV0
IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAg
ICAgIGxldCBwYXJhbWV0ZXJzID0gW107CiAgICAgICAgIHdoaWxlICghdGVzdCgiKSIpKSB7Ci0g
ICAgICAgICAgICBwYXJhbWV0ZXJzLnB1c2gocGFyc2VQYXJhbWV0ZXIoKSk7CisgICAgICAgICAg
ICBsZXQgcGFyYW1ldGVyID0gcGFyc2VQYXJhbWV0ZXIoKTsKKyAgICAgICAgICAgIGlmIChwYXJh
bWV0ZXIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHBh
cmFtZXRlcjsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMucHVzaChwYXJhbWV0ZXIpOwogICAgICAg
ICAgICAgaWYgKCF0cnlDb25zdW1lKCIsIikpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBtYXliZUVycm9yID0gY29uc3Vt
ZSgiKSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gcGFyYW1ldGVy
czsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUZ1bmNOYW1lKCkKICAgICB7CiAg
ICAgICAgIGlmICh0cnlDb25zdW1lKCJvcGVyYXRvciIpKSB7CiAgICAgICAgICAgICBsZXQgdG9r
ZW4gPSBjb25zdW1lKCIrIiwgIi0iLCAiKiIsICIvIiwgIiUiLCAiXiIsICImIiwgInwiLCAiPCIs
ICI+IiwgIjw9IiwgIj49IiwgIj09IiwgIisrIiwgIi0tIiwgIi4iLCAifiIsICI8PCIsICI+PiIs
ICJbIik7CisgICAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgICAgaWYgKHRva2VuLnRleHQg
PT0gIiYiKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIlsiKSkgewotICAgICAg
ICAgICAgICAgICAgICBjb25zdW1lKCJdIik7CisgICAgICAgICAgICAgICAgICAgIGxldCBtYXli
ZUVycm9yID0gY29uc3VtZSgiXSIpOworICAgICAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJv
ciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBtYXliZUVycm9yOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm9wZXJhdG9yJltdIjsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIi4iKSkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJvcGVyYXRvciYuIiArIGNvbnN1bWVLaW5kKCJp
ZGVudGlmaWVyIikudGV4dDsKKyAgICAgICAgICAgICAgICBpZiAodHJ5Q29uc3VtZSgiLiIpKSB7
CisgICAgICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZUtpbmQoImlkZW50
aWZpZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJvcGVyYXRvciYuIiArIG1heWJlRXJyb3IudGV4
dDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuICJvcGVyYXRvciYi
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHRva2VuLnRleHQgPT0gIi4iKSB7Ci0g
ICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICJvcGVyYXRvci4iICsgY29uc3VtZUtpbmQoImlk
ZW50aWZpZXIiKS50ZXh0OworICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3Vt
ZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICJvcGVyYXRvci4iICsgbWF5YmVFcnJv
ci50ZXh0OwogICAgICAgICAgICAgICAgIGlmICh0cnlDb25zdW1lKCI9IikpCiAgICAgICAgICAg
ICAgICAgICAgIHJlc3VsdCArPSAiPSI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJbIikgewotICAg
ICAgICAgICAgICAgIGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICBsZXQgbWF5YmVFcnJv
ciA9IGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CiAgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICJvcGVyYXRvcltdIjsKICAgICAgICAgICAg
ICAgICBpZiAodHJ5Q29uc3VtZSgiPSIpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0g
Ij0iOwpAQCAtODQ0LDcgKzExNDksMTAgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2lu
LCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcmV0dXJuICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0OwogICAgICAgICB9Ci0gICAg
ICAgIHJldHVybiBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQ7CisgICAgICAgIGxldCBt
YXliZUVycm9yID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKKyAgICAgICAgcmV0dXJuIG1heWJlRXJyb3IudGV4dDsKICAgICB9CiAKICAgICBmdW5j
dGlvbiBwYXJzZUZ1bmNEZWNsKCkKQEAgLTg1OCwxMjcgKzExNjYsMjExIEBAIGZ1bmN0aW9uIHBh
cnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkK
ICAgICAgICAgaWYgKG9wZXJhdG9yVG9rZW4pIHsKICAgICAgICAgICAgIG9yaWdpbiA9IG9wZXJh
dG9yVG9rZW47CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7CisgICAgICAg
ICAgICBpZiAocmV0dXJuVHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmV0dXJuVHlwZTsKICAgICAgICAgICAgIG5hbWUgPSAib3BlcmF0b3IgY2Fz
dCI7CiAgICAgICAgICAgICBpc0Nhc3QgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgc2hhZGVyVHlwZSA9IHRyeUNvbnN1bWUoInZlcnRleCIsICJmcmFnbWVudCIpOwogICAg
ICAgICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICAgICAgaWYgKHJldHVy
blR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJl
dHVyblR5cGU7CiAgICAgICAgICAgICBpZiAoc2hhZGVyVHlwZSkgewogICAgICAgICAgICAgICAg
IG9yaWdpbiA9IHNoYWRlclR5cGU7CiAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZSA9IHNoYWRl
clR5cGUudGV4dDsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG9yaWdpbiA9
IHJldHVyblR5cGUub3JpZ2luOwogICAgICAgICAgICAgbmFtZSA9IHBhcnNlRnVuY05hbWUoKTsK
KyAgICAgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICAgICAgaXNDYXN0ID0gZmFsc2U7CiAgICAgICAg
IH0KICAgICAgICAgbGV0IHBhcmFtZXRlcnMgPSBwYXJzZVBhcmFtZXRlcnMoKTsKKyAgICAgICAg
aWYgKHBhcmFtZXRlcnMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1
cm4gcGFyYW1ldGVyczsKICAgICAgICAgcmV0dXJuIG5ldyBGdW5jKG9yaWdpbiwgbmFtZSwgcmV0
dXJuVHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBlKTsKICAgICB9Ci0gICAgCisK
ICAgICBmdW5jdGlvbiBwYXJzZUZ1bmNEZWYoKQogICAgIHsKICAgICAgICAgbGV0IGZ1bmMgPSBw
YXJzZUZ1bmNEZWNsKCk7CisgICAgICAgIGlmIChmdW5jIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgcmV0dXJuIGZ1bmM7CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VCbG9j
aygpOworICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgIHJldHVybiBib2R5OwogICAgICAgICByZXR1cm4gbmV3IEZ1bmNEZWYoZnVuYy5vcmlnaW4s
IGZ1bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBmdW5jLnBhcmFtZXRlcnMsIGJvZHksIGZ1bmMu
aXNDYXN0LCBmdW5jLnNoYWRlclR5cGUpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBh
cnNlRmllbGQoKQogICAgIHsKICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAg
ICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
dHlwZTsKICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOwotICAg
ICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgIGxldCBtYXliZUVycm9yID0g
Y29uc3VtZSgiOyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gbmV3
IEZpZWxkKG5hbWUsIG5hbWUudGV4dCwgdHlwZSk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rp
b24gcGFyc2VTdHJ1Y3RUeXBlKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1l
KCJzdHJ1Y3QiKTsKLSAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIp
LnRleHQ7Ci0gICAgICAgIGxldCByZXN1bHQgPSBuZXcgU3RydWN0VHlwZShvcmlnaW4sIG5hbWUp
OwotICAgICAgICBjb25zdW1lKCJ7Iik7Ci0gICAgICAgIHdoaWxlICghdHJ5Q29uc3VtZSgifSIp
KQotICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZUZpZWxkKCkpOworICAgICAgICBpZiAob3Jp
Z2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsK
KyAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICBp
ZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuYW1l
OworICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFN0cnVjdFR5cGUob3JpZ2luLCBuYW1lLnRleHQp
OworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoInsiKTsKKyAgICAgICAgaWYgKG1h
eWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5
YmVFcnJvcjsKKyAgICAgICAgd2hpbGUgKCF0cnlDb25zdW1lKCJ9IikpIHsKKyAgICAgICAgICAg
IGxldCBmaWVsZCA9IHBhcnNlRmllbGQoKTsKKyAgICAgICAgICAgIGlmIChmaWVsZCBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7CisgICAgICAg
ICAgICByZXN1bHQuYWRkKGZpZWxkKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlTmF0aXZlRnVuYygpCiAgICAgewog
ICAgICAgICBsZXQgZnVuYyA9IHBhcnNlRnVuY0RlY2woKTsKLSAgICAgICAgY29uc3VtZSgiOyIp
OworICAgICAgICBpZiAoZnVuYyBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBmdW5jOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5jKGZ1bmMu
b3JpZ2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBmdW5j
LmlzQ2FzdCwgZnVuYy5zaGFkZXJUeXBlKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBw
YXJzZU5hdGl2ZSgpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgibmF0aXZl
Iik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICByZXR1cm4gb3JpZ2luOwogICAgICAgICBpZiAodHJ5Q29uc3VtZSgidHlwZWRlZiIpKSB7
CiAgICAgICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAg
ICAgICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbmFtZTsKICAgICAgICAgICAgIGxldCBhcmdzID0gcGFyc2VUeXBlQXJndW1lbnRz
KCk7Ci0gICAgICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgICAgICBpZiAoYXJncyBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJnczsKKyAgICAg
ICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOworICAgICAgICAgICAgaWYgKG1h
eWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJu
IG1heWJlRXJyb3I7CiAgICAgICAgICAgICByZXR1cm4gTmF0aXZlVHlwZS5jcmVhdGUob3JpZ2lu
LCBuYW1lLnRleHQsIGFyZ3MpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwYXJzZU5hdGl2
ZUZ1bmMoKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVJlc3RyaWN0ZWRGdW5j
RGVmKCkKICAgICB7Ci0gICAgICAgIGNvbnN1bWUoInJlc3RyaWN0ZWQiKTsKKyAgICAgICAgbGV0
IG1heWJlRXJyb3IgPSBjb25zdW1lKCJyZXN0cmljdGVkIik7CisgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CiAgICAgICAgIGxldCByZXN1bHQ7Ci0gICAgICAgIGlmICh0cnlDb25zdW1lKCJuYXRpdmUi
KSkKKyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIm5hdGl2ZSIpKSB7CiAgICAgICAgICAgICByZXN1
bHQgPSBwYXJzZU5hdGl2ZUZ1bmMoKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKHJl
c3VsdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VGdW5jRGVm
KCk7CisgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0Lmlz
UmVzdHJpY3RlZCA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAor
CiAgICAgZnVuY3Rpb24gcGFyc2VFbnVtTWVtYmVyKCkKICAgICB7CiAgICAgICAgIGxldCBuYW1l
ID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgaWYgKG5hbWUgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmFtZTsKICAgICAgICAgbGV0IHZh
bHVlID0gbnVsbDsKLSAgICAgICAgaWYgKHRyeUNvbnN1bWUoIj0iKSkKKyAgICAgICAgaWYgKHRy
eUNvbnN1bWUoIj0iKSkgewogICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUNvbnN0ZXhwcigpOwor
ICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV3IEVudW1N
ZW1iZXIobmFtZSwgbmFtZS50ZXh0LCB2YWx1ZSk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rp
b24gcGFyc2VFbnVtVHlwZSgpCiAgICAgewotICAgICAgICBjb25zdW1lKCJlbnVtIik7CisgICAg
ICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiZW51bSIpOworICAgICAgICBpZiAobWF5YmVF
cnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVy
cm9yOwogICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAg
ICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IG5hbWU7CiAgICAgICAgIGxldCBiYXNlVHlwZTsKLSAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjoi
KSkKKyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjoiKSkgewogICAgICAgICAgICAgYmFzZVR5cGUg
PSBwYXJzZVR5cGUoKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKGJhc2VUeXBlIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBiYXNlVHlwZTsK
KyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBiYXNlVHlwZSA9IG5ldyBUeXBlUmVmKG5hbWUs
ICJpbnQiKTsKLSAgICAgICAgY29uc3VtZSgieyIpOworICAgICAgICBtYXliZUVycm9yID0gY29u
c3VtZSgieyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgcmVzdWx0ID0g
bmV3IEVudW1UeXBlKG5hbWUsIG5hbWUudGV4dCwgYmFzZVR5cGUpOwogICAgICAgICB3aGlsZSAo
IXRlc3QoIn0iKSkgewotICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZUVudW1NZW1iZXIoKSk7
CisgICAgICAgICAgICBsZXQgZW51bU1lbWJlciA9IHBhcnNlRW51bU1lbWJlcigpOworICAgICAg
ICAgICAgaWYgKGVudW1NZW1iZXIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGVudW1NZW1iZXI7CisgICAgICAgICAgICByZXN1bHQuYWRkKGVudW1NZW1i
ZXIpOwogICAgICAgICAgICAgaWYgKCF0cnlDb25zdW1lKCIsIikpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY29uc3VtZSgifSIpOworICAgICAgICBtYXliZUVy
cm9yID0gY29uc3VtZSgifSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKwogICAgIGZvciAoOzspIHsKICAgICAgICAgbGV0IHRv
a2VuID0gbGV4ZXIucGVlaygpOwogICAgICAgICBpZiAoIXRva2VuKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAiOyIpCiAgICAgICAgICAgICBsZXhlci5u
ZXh0KCk7Ci0gICAgICAgIGVsc2UgaWYgKHRva2VuLnRleHQgPT0gInR5cGVkZWYiKQotICAgICAg
ICAgICAgcHJvZ3JhbS5hZGQocGFyc2VUeXBlRGVmKCkpOwotICAgICAgICBlbHNlIGlmIChvcmln
aW5LaW5kID09ICJuYXRpdmUiICYmIHRva2VuLnRleHQgPT0gIm5hdGl2ZSIpCi0gICAgICAgICAg
ICBwcm9ncmFtLmFkZChwYXJzZU5hdGl2ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAob3JpZ2luS2lu
ZCA9PSAibmF0aXZlIiAmJiB0b2tlbi50ZXh0ID09ICJyZXN0cmljdGVkIikKLSAgICAgICAgICAg
IHByb2dyYW0uYWRkKHBhcnNlUmVzdHJpY3RlZEZ1bmNEZWYoKSk7Ci0gICAgICAgIGVsc2UgaWYg
KHRva2VuLnRleHQgPT0gInN0cnVjdCIpCi0gICAgICAgICAgICBwcm9ncmFtLmFkZChwYXJzZVN0
cnVjdFR5cGUoKSk7Ci0gICAgICAgIGVsc2UgaWYgKHRva2VuLnRleHQgPT0gImVudW0iKQotICAg
ICAgICAgICAgcHJvZ3JhbS5hZGQocGFyc2VFbnVtVHlwZSgpKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcHJvZ3JhbS5hZGQocGFyc2VGdW5jRGVmKCkpOworICAgICAgICBlbHNlIGlmICh0
b2tlbi50ZXh0ID09ICJ0eXBlZGVmIikgeworICAgICAgICAgICAgbGV0IHR5cGVEZWYgPSBwYXJz
ZVR5cGVEZWYoKTsKKyAgICAgICAgICAgIGlmICh0eXBlRGVmIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgICAgIHRocm93IHR5cGVEZWY7CisgICAgICAgICAgICBwcm9ncmFt
LmFkZCh0eXBlRGVmKTsKKyAgICAgICAgfSBlbHNlIGlmIChvcmlnaW5LaW5kID09ICJuYXRpdmUi
ICYmIHRva2VuLnRleHQgPT0gIm5hdGl2ZSIpIHsKKyAgICAgICAgICAgIGxldCBuYXRpdmUgPSBw
YXJzZU5hdGl2ZSgpOworICAgICAgICAgICAgaWYgKG5hdGl2ZSBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgICAgICB0aHJvdyBuYXRpdmU7CisgICAgICAgICAgICBwcm9ncmFt
LmFkZChuYXRpdmUpOworICAgICAgICB9IGVsc2UgaWYgKG9yaWdpbktpbmQgPT0gIm5hdGl2ZSIg
JiYgdG9rZW4udGV4dCA9PSAicmVzdHJpY3RlZCIpIHsKKyAgICAgICAgICAgIGxldCByZXN0cmlj
dGVkRnVuY0RlZiA9IHBhcnNlUmVzdHJpY3RlZEZ1bmNEZWYoKTsKKyAgICAgICAgICAgIGlmIChy
ZXN0cmljdGVkRnVuY0RlZiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICB0aHJvdyByZXN0cmljdGVkRnVuY0RlZjsKKyAgICAgICAgICAgIHByb2dyYW0uYWRkKHJlc3Ry
aWN0ZWRGdW5jRGVmKTsKKyAgICAgICAgfSBlbHNlIGlmICh0b2tlbi50ZXh0ID09ICJzdHJ1Y3Qi
KSB7CisgICAgICAgICAgICBsZXQgc3RydWN0ID0gcGFyc2VTdHJ1Y3RUeXBlKCk7CisgICAgICAg
ICAgICBpZiAoc3RydWN0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAg
IHRocm93IHN0cnVjdDsKKyAgICAgICAgICAgIHByb2dyYW0uYWRkKHN0cnVjdCk7CisgICAgICAg
IH0gZWxzZSBpZiAodG9rZW4udGV4dCA9PSAiZW51bSIpIHsKKyAgICAgICAgICAgIGxldCBlbnVt
VHlwZSA9IHBhcnNlRW51bVR5cGUoKTsKKyAgICAgICAgICAgIGlmIChlbnVtVHlwZSBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICB0aHJvdyBlbnVtVHlwZTsKKyAgICAg
ICAgICAgIHByb2dyYW0uYWRkKGVudW1UeXBlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGxldCBmdW5jRGVmID0gcGFyc2VGdW5jRGVmKCk7CisgICAgICAgICAgICBpZiAoZnVuY0Rl
ZiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICB0aHJvdyBmdW5jRGVm
OworICAgICAgICAgICAgcHJvZ3JhbS5hZGQoZnVuY0RlZik7CisgICAgICAgIH0KICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCmluZGV4IDFiMjZjZjJi
MmU2NTE1MjdhMTUyZWU4ZDkyZmYyNWJlZGE2MWQzMzkuLjgwNGNkOWFiZGE2ZDVjM2JlYzAzYmUy
NTgyYWEzZjIzZjAwN2ExODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1NQSVJWLmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYu
aHRtbApAQCAtMTUxLDYgKzE1MSw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iVmFyaWFibGVS
ZWYuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWZWN0b3JUeXBlLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iVmlzaXRpbmdTZXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJXTGV4aWNhbEVycm9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iV1N5
bnRheEVycm9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iV1RyYXBFcnJvci5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IldUeXBlRXJyb3IuanMiPjwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5Lmpz
IGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCmluZGV4
IGZiMTc1ZTI2YTI3YTQ2NTQ4ZWM5YzJhNTYzZDM4MDMyZmYxZTQ5YzQuLmNmMzA5M2JiZThjZjM3
YjI5M2QzOGE3OWU2ZTc2OTExNmM0NDkzMzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKQEAgLTc3Myw4ICs3NzMsNyBAQCBsZXQgc3Rh
bmRhcmRMaWJyYXJ5ID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgfQogICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLyoKKwogICAgICAg
ICBmb3IgKGxldCB0eXBlIG9mIFtgYm9vbGAsIGB1Y2hhcmAsIGB1c2hvcnRgLCBgdWludGAsIGBj
aGFyYCwgYHNob3J0YCwgYGludGAsIGBoYWxmYCwgYGZsb2F0YF0pIHsKICAgICAgICAgICAgIGZv
ciAobGV0IHNpemUgb2YgWzIsIDMsIDRdKSB7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgbWF4
VmFsdWUgb2YgWzIsIDMsIDRdKSB7CkBAIC0xODg5LDcgKzE4ODgsNyBAQCBsZXQgc3RhbmRhcmRM
aWJyYXJ5ID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IHByaW50KCk7Ci0gICAgICAgIAorICAgICAgICAvKgogICAgICAgICBmb3IgKGxldCB0eXBlIG9m
IFtgdWludGAsIGBpbnRgXSkgewogICAgICAgICAgICAgZm9yIChsZXQgZnVuY3Rpb25OYW1lIG9m
IFtgQWRkYCwgYEFuZGAsIGBFeGNoYW5nZWAsIGBNYXhgLCBgTWluYCwgYE9yYCwgYFhvcmBdKSB7
CiAgICAgICAgICAgICAgICAgcHJpbnQoYG5hdGl2ZSB2b2lkIEludGVybG9ja2VkJHtmdW5jdGlv
bk5hbWV9KHRocmVhZCBhdG9taWNfJHt0eXBlfSosICR7dHlwZX0sIHRocmVhZCAke3R5cGV9Kik7
YCk7CkBAIC0xODk4LDcgKzE4OTcsNiBAQCBsZXQgc3RhbmRhcmRMaWJyYXJ5ID0gKGZ1bmN0aW9u
KCkgewogICAgICAgICB9CiAgICAgICAgIHByaW50KCk7CiAgICAgICAgICovCi0KICAgICAgICAg
Zm9yIChsZXQgdHlwZSBvZiBbYHVjaGFyYCwgYHVzaG9ydGAsIGB1aW50YCwgYGNoYXJgLCBgc2hv
cnRgLCBgaW50YCwgYGhhbGZgLCBgZmxvYXRgXSkgewogICAgICAgICAgICAgZm9yIChsZXQgbGVu
Z3RoIG9mIFtgYCwgYDJgLCBgM2AsIGA0YF0pIHsKICAgICAgICAgICAgICAgICBwcmludChgbmF0
aXZlICR7dHlwZX0ke2xlbmd0aH0gU2FtcGxlKFRleHR1cmUxRDwke3R5cGV9JHtsZW5ndGh9Piwg
c2FtcGxlciwgZmxvYXQgbG9jYXRpb24pO2ApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvVGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
VGVzdC5odG1sCmluZGV4IGZiMTAxNWYxOTM4MWNmNmVhYzczMTdiNDg1ZWYwMGMzZWMxY2I5NmUu
LmY1ZWEzZDkwMTk4ZGNkYjg3MTMxZjkyYzI1MGM3NDMzMDRiNjZhYzAgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKQEAgLTE0NSw2ICsxNDUsNyBAQAogPHNjcmlwdCBz
cmM9IlZhcmlhYmxlUmVmLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJWZWN0b3JUeXBlLmpz
Ij48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJWaXNpdGluZ1NldC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iV0xleGljYWxFcnJvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iV1N5bnRh
eEVycm9yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJXVHJhcEVycm9yLmpzIj48L3Njcmlw
dD4KIDxzY3JpcHQgc3JjPSJXVHlwZUVycm9yLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9UZXN0LmpzCmluZGV4IDkwZDVlNWNjZDUwY2ZmNGE5NDJiOTE3NjZiMjcyODY5
ZjA5NDRjNjcuLjU1NmNiMmZiOGJiNTEwODc5MGM1YjRkYThmYTY3ZTRjNTRjYWM2NjYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKKysrIGIvVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwpAQCAtMzI5LDIzICszMjksNiBAQCB0ZXN0
cyA9IG5ldyBQcm94eSh7fSwgewogICAgIH0KIH0pOwogCi10ZXN0cy5jb21tZW50UGFyc2luZyA9
IGZ1bmN0aW9uKCkgewotICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgLyogdGhp
cyBjb21tZW50Ci0gICAgICAgIHJ1bnMgb3ZlciBtdWx0aXBsZSBsaW5lcyAqLwotICAgICAgICBi
b29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBgKTsKLSAgICBjaGVja0Jvb2wocHJvZ3Jh
bSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRydWUpOwotCi0gICAgY2hlY2tG
YWlsKAotICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAvKiB0aGlzIGNvbW1lbnQKLSAg
ICAgICAgcnVucyBvdmVyIG11bHRpcGxlIGxpbmVzCi0gICAgICAgIGJvb2wgZm9vKCkgeyByZXR1
cm4gdHJ1ZTsgfQotICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpOwotfQotCiB0ZXN0cy50ZXJuYXJ5RXhwcmVzc2lvbiA9IGZ1bmN0aW9uKCkgewog
ICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKICAgICAgICAgaW50IGZvbyhpbnQgeCkKQEAgLTc2
MjYsNiArNzYwOSwyMyBAQCB0ZXN0cy50ZXh0dXJlR2F0aGVyID0gZnVuY3Rpb24oKSB7CiAgICAg
Ly8gRklYTUU6IEdhdGhlciBvdGhlciBjb21wb25lbnRzCiB9CiAKK3Rlc3RzLmNvbW1lbnRQYXJz
aW5nID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICAv
KiB0aGlzIGNvbW1lbnQKKyAgICAgICAgcnVucyBvdmVyIG11bHRpcGxlIGxpbmVzICovCisgICAg
ICAgIGJvb2wgZm9vKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGApOworICAgIGNoZWNrQm9vbChw
cm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgdHJ1ZSk7CisKKyAgICBj
aGVja0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgIC8qIHRoaXMgY29tbWVu
dAorICAgICAgICBydW5zIG92ZXIgbXVsdGlwbGUgbGluZXMKKyAgICAgICAgYm9vbCBmb28oKSB7
IHJldHVybiB0cnVlOyB9CisgICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9m
IFdMZXhpY2FsRXJyb3IpOworfQorCiBva1RvVGVzdCA9IHRydWU7CiAKIGxldCB0ZXN0RmlsdGVy
ID0gLy4qLzsgLy8gcnVuIGV2ZXJ5dGhpbmcgYnkgZGVmYXVsdApAQCAtNzY4Myw0ICs3NjgzLDMg
QEAgaWYgKCF0aGlzLndpbmRvdykgewogICAgIGZvciAobGV0IF8gb2YgZG9UZXN0KHRlc3RGaWx0
ZXIpKSB7IH0KIH0KIAotCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9XTGV4aWNhbEVycm9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV0xleGlj
YWxFcnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTg1ODkzZDI5ZjZiZWNkYzU5MzljYjFhMmU1MzY2ZTQ4
YWUxNWY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
V0xleGljYWxFcnJvci5qcwpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIFdMZXhpY2FsRXJy
b3IgZXh0ZW5kcyBFcnJvciB7CisgICAgY29uc3RydWN0b3Iob3JpZ2luU3RyaW5nLCBtZXNzYWdl
KQorICAgIHsKKyAgICAgICAgc3VwZXIoIkxleGljYWwgZXJyb3IgYXQgIiArIG9yaWdpblN0cmlu
ZyArICI6ICIgKyBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5vcmlnaW5TdHJpbmcgPSBvcmlnaW5T
dHJpbmc7CisgICAgICAgIHRoaXMuc3ludGF4RXJyb3JNZXNzYWdlID0gbWVzc2FnZTsKKyAgICB9
Cit9CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0
bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCmluZGV4IGU2ZTEz
ZGZlOGRmYTVjNTMzMmFkOWVmMDQ5ZWNlYTM1OWI3ZTNhNDIuLmRmYzkwYzRjMjM5NDM5NTQ1ODg2
NWM0YThkNjU0ODY4NzBjMjYyMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL2luZGV4Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5k
ZXguaHRtbApAQCAtMTQ1LDYgKzE0NSw3IEBACiA8c2NyaXB0IHNyYz0iVmFyaWFibGVSZWYuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlZlY3RvclR5cGUuanMiPjwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9IlZpc2l0aW5nU2V0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXTGV4aWNhbEVy
cm9yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJXU3ludGF4RXJyb3IuanMiPjwvc2NyaXB0
PgogPHNjcmlwdCBzcmM9IldUcmFwRXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IldU
eXBlRXJyb3IuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348993</attachid>
            <date>2018-09-05 19:00:45 -0700</date>
            <delta_ts>2018-09-05 19:10:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189014-20180905190044.patch</filename>
            <type>text/plain</type>
            <size>64892</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Njg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWJiNDgxOTNiYzE0MzM1MmQ5OTQ0ZmZlY2Y2ZDgzNDQx
YzZmMWY0OS4uNDI4NGUxOWJlM2MzZWQ3MzBhOTAzZGQ2MmIwOWFmZTU2NjIzYjRmMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4
IEBACisyMDE4LTA5LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBUaGUgcGFyc2VyIGlzIHRvbyBzbG93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHR3
byBjaGFuZ2VzOgorICAgICAgICAxLiBNaWdyYXRlIGZyb20gdXNpbmcgdHJ5L2NhdGNoIHRvIHNp
bXBseSByZXR1cm5pbmcgdGhlIFdTeW50YXhFcnJvci4gVGhpcyBtZWFucyB0aGF0CisgICAgICAg
ICAgIGVhY2ggcGFyc2VyIGNhbGwgaGFzIHRvIGNoZWNrIGZvciB0aGlzIHNlbnRpbmVsIHZhbHVl
LiBUaGUgbGV4ZXIgc3RpbGwgY2FuIHRocm93IGlmCisgICAgICAgICAgIGl0IGVuY291bnRlcnMg
YW4gdW5rbm93biB0b2tlbiBvciBhbiB1bm1hdGNoZWQgIi8qIiB0b2tlbiAod2hpY2ggaXMgcmFy
ZSkuCisgICAgICAgIDIuIEFmdGVyIHJlbW92aW5nIHRyeS9jYXRjaCwgbWFraW5nIHRoZSBzZW50
aW5lbCB2YWx1ZXMgbm90IGluaGVyaXQgZnJvbSBFcnJvciAodGhlCisgICAgICAgICAgIEVycm9y
IGNvbnN0cnVjdG9yIHdhcyB0YWtpbmcgbG90cyBvZiB0aW1lKQorICAgICAgICAyLiBQcmV2aW91
c2x5LCBldmVyeSB0aW1lIHRoZSBwYXJzZXIgZmFpbGVkICh3aGljaCBpcyBtYW55IHRpbWVzIHBl
ciBleHByZXNzaW9uKSBpdCB3YXMKKyAgICAgICAgICAgcnVubmluZyBhIHJlZ2V4IG92ZXIgdGhl
IGVudGlyZSBzb3VyY2UgdGV4dCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBlcnJvciBvY2N1cnJl
ZC4KKyAgICAgICAgICAgSW5zdGVhZCwgd2UgY2FuIHByZXByb2Nlc3MgdGhlIHRleHQgc3RyaW5n
IHRvIGZpbmQgdGhlc2UgbGluZSBudW1iZXJzIGFoZWFkIG9mIHRpbWUuCisKKyAgICAgICAgVG9n
ZXRoZXIsIHRoZXNlIG1ha2UgdGhlIHBhcnNlciA3NXggZmFzdGVyLiBQYXJzaW5nIHRoZSBzdGFu
ZGFyZCBsaWJyYXJ5IGdvZXMgZnJvbSAyLjUKKyAgICAgICAgaG91cnMgZG93biB0byAyIG1pbnV0
ZXMuIEJlY2F1c2UgaXQncyBub3cgYSByZWFzb25hYmxlIGxlbmd0aCwgdGhpcyBwYXRjaCB1bmNv
bW1lbnRzCisgICAgICAgIHRoZSBidWxrIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgorCisgICAg
ICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzOgorICAgICAgICAqIFdlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzOgorICAgICAgICAoTGV4ZXIpOgorICAgICAgICAoTGV4
ZXIucHJvdG90eXBlLmxpbmVOdW1iZXJGb3JJbmRleCk6CisgICAgICAgICogV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvUGFyc2UuanM6CisgICAgICAgIChmYWlsKToKKyAgICAgICAgKGJhY2t0cmFj
a2luZ1Njb3BlKToKKyAgICAgICAgKHRlc3RTY29wZSk6CisgICAgICAgIChnZW5lcmljQ29uc3Vt
ZSk6CisgICAgICAgIChjb25zdW1lRW5kT2ZUeXBlQXJncyk6CisgICAgICAgIChwYXJzZVRlcm0p
OgorICAgICAgICAocGFyc2VDb25zdGV4cHIpOgorICAgICAgICAocGFyc2VUeXBlQXJndW1lbnRz
KToKKyAgICAgICAgKHBhcnNlVHlwZS5nZXRBZGRyZXNzU3BhY2UpOgorICAgICAgICAocGFyc2VU
eXBlKToKKyAgICAgICAgKHBhcnNlVHlwZURlZik6CisgICAgICAgIChnZW5lcmljUGFyc2VMZWZ0
KToKKyAgICAgICAgKHBhcnNlQ2FsbEV4cHJlc3Npb24ubGV0LnBhcnNlQXJndW1lbnRzKToKKyAg
ICAgICAgKGlzQ2FsbEV4cHJlc3Npb24pOgorICAgICAgICAocGFyc2VTdWZmaXhPcGVyYXRvcik6
CisgICAgICAgIChwYXJzZVBvc3NpYmxlU3VmZml4KToKKyAgICAgICAgKHBhcnNlUHJlSW5jcmVt
ZW50KToKKyAgICAgICAgKHBhcnNlUG9zc2libGVQcmVmaXgpOgorICAgICAgICAocGFyc2VQb3Nz
aWJsZVRlcm5hcnlDb25kaXRpb25hbCk6CisgICAgICAgIChwYXJzZVBvc3NpYmxlQXNzaWdubWVu
dCk6CisgICAgICAgIChwYXJzZVBvc3RJbmNyZW1lbnQpOgorICAgICAgICAocGFyc2VFZmZlY3Rm
dWxFeHByZXNzaW9uKToKKyAgICAgICAgKGdlbmVyaWNQYXJzZUNvbW1hRXhwcmVzc2lvbik6Cisg
ICAgICAgIChwYXJzZUVmZmVjdGZ1bFN0YXRlbWVudCk6CisgICAgICAgIChwYXJzZVJldHVybik6
CisgICAgICAgIChwYXJzZUJyZWFrKToKKyAgICAgICAgKHBhcnNlQ29udGludWUpOgorICAgICAg
ICAocGFyc2VJZlN0YXRlbWVudCk6CisgICAgICAgIChwYXJzZVdoaWxlKToKKyAgICAgICAgKHBh
cnNlRm9yKToKKyAgICAgICAgKHBhcnNlRG8pOgorICAgICAgICAocGFyc2VWYXJpYWJsZURlY2xz
KToKKyAgICAgICAgKHBhcnNlU3dpdGNoQ2FzZSk6CisgICAgICAgIChwYXJzZVN3aXRjaFN0YXRl
bWVudCk6CisgICAgICAgIChwYXJzZVN0YXRlbWVudCk6CisgICAgICAgIChwYXJzZUJsb2NrQm9k
eSk6CisgICAgICAgIChwYXJzZUJsb2NrKToKKyAgICAgICAgKHBhcnNlUGFyYW1ldGVyKToKKyAg
ICAgICAgKHBhcnNlRnVuY05hbWUpOgorICAgICAgICAocGFyc2VGdW5jRGVjbCk6CisgICAgICAg
IChwYXJzZUZ1bmNEZWYpOgorICAgICAgICAocGFyc2VGaWVsZCk6CisgICAgICAgIChwYXJzZVN0
cnVjdFR5cGUpOgorICAgICAgICAocGFyc2VOYXRpdmVGdW5jKToKKyAgICAgICAgKHBhcnNlTmF0
aXZlKToKKyAgICAgICAgKHBhcnNlUmVzdHJpY3RlZEZ1bmNEZWYpOgorICAgICAgICAocGFyc2VF
bnVtTWVtYmVyKToKKyAgICAgICAgKHBhcnNlRW51bVR5cGUpOgorICAgICAgICAocGFyc2UpOgor
ICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWw6CisgICAgICAgICog
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzOgorICAgICAgICAobGV0
LnN0YW5kYXJkTGlicmFyeSk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVz
dC5odG1sOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanM6CisgICAg
ICAgIChjaGVja0ZhaWwuZG9QcmVwKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9XTGV4aWNhbEVycm9yLmpzOiBBZGRlZC4KKyAgICAgICAgKFdMZXhpY2FsRXJy
b3IpOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWw6CisKIDIw
MTgtMDktMDUgIFdvb2Ryb3cgV2FuZyAgPHdvb2Ryb3dfd2FuZ0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQWRkZWQgcnVudGltZSBmZWF0dXJlIGZsYWcgZm9yIHdlYiBBUEkgc3RhdGlzdGljcwpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCmluZGV4IDkwZmM4NDEzYTY1MTIyNDQ2YmYwMWZk
OTY3ZGQ2NTEzOWEwZjg3ZTkuLjBhNTg4NTE2MWE0MDNkMDlhZWFhMWZlNWUxMDQzYWRmZTYxMjU2
NWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKQEAgLTE2OCw2ICsxNjgsNyBA
QCBsb2FkKCJWYXJpYWJsZURlY2wuanMiKTsKIGxvYWQoIlZhcmlhYmxlUmVmLmpzIik7CiBsb2Fk
KCJWZWN0b3JUeXBlLmpzIik7CiBsb2FkKCJWaXNpdGluZ1NldC5qcyIpOworbG9hZCgiV0xleGlj
YWxFcnJvci5qcyIpOwogbG9hZCgiV1N5bnRheEVycm9yLmpzIik7CiBsb2FkKCJXVHJhcEVycm9y
LmpzIik7CiBsb2FkKCJXVHlwZUVycm9yLmpzIik7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9MZXhlci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L0xleGVyLmpzCmluZGV4IDk1NmRjYTMzNmEyYTlhMzEyMWEyNzcyODVhZTNkYjc2ZGRlNzIzNzAu
LmFjYTc5M2NkYmUyMzgyODVkOTdjOWM4NzI2NTMzNzM3M2ZlYzc4NWMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzCkBAIC0zNSw2ICszNSwxNCBAQCBjbGFzcyBMZXhlciB7
CiAgICAgICAgIHRoaXMuX3RleHQgPSB0ZXh0OwogICAgICAgICB0aGlzLl9pbmRleCA9IDA7CiAg
ICAgICAgIHRoaXMuX3N0YWNrID0gW107CisKKyAgICAgICAgdGhpcy5fbGluZU51bWJlcnMgPSBb
XTsKKyAgICAgICAgbGV0IGxpbmVOdW1iZXIgPSAxOworICAgICAgICBmb3IgKGxldCBpID0gMDsg
aSA8IHRoaXMuX3RleHQubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHRoaXMuX2xpbmVOdW1i
ZXJzLnB1c2gobGluZU51bWJlcik7CisgICAgICAgICAgICBpZiAodGhpcy5fdGV4dFtpXSA9PSAn
XG4nKQorICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjsKKyAgICAgICAgfQogICAgIH0KICAg
ICAKICAgICBnZXQgbGluZU51bWJlcigpCkBAIC01Myw4ICs2MSw3IEBAIGNsYXNzIExleGVyIHsK
ICAgICAKICAgICBsaW5lTnVtYmVyRm9ySW5kZXgoaW5kZXgpCiAgICAgewotICAgICAgICBsZXQg
bWF0Y2hlcyA9IHRoaXMuX3RleHQuc3Vic3RyaW5nKDAsIGluZGV4KS5tYXRjaCgvXG4vZyk7Ci0g
ICAgICAgIHJldHVybiAobWF0Y2hlcyA/IG1hdGNoZXMubGVuZ3RoIDogMCkgKyB0aGlzLl9saW5l
TnVtYmVyT2Zmc2V0OworICAgICAgICByZXR1cm4gdGhpcy5fbGluZU51bWJlcnNbaW5kZXhdICsg
dGhpcy5fbGluZU51bWJlck9mZnNldDsKICAgICB9CiAgICAgCiAgICAgZ2V0IHN0YXRlKCkgeyBy
ZXR1cm4ge2luZGV4OiB0aGlzLl9pbmRleCwgc3RhY2s6IHRoaXMuX3N0YWNrLmNvbmNhdCgpfTsg
fQpAQCAtMTY2LDM1ICsxNzMsNiBAQCBjbGFzcyBMZXhlciB7CiAgICAgCiAgICAgZmFpbChlcnJv
cikKICAgICB7Ci0gICAgICAgIHRocm93IG5ldyBXU3ludGF4RXJyb3IodGhpcy5vcmlnaW5TdHJp
bmcsIGVycm9yKTsKLSAgICB9Ci0gICAgCi0gICAgYmFja3RyYWNraW5nU2NvcGUoY2FsbGJhY2sp
Ci0gICAgewotICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLnN0YXRlOwotICAgICAgICB0cnkgewot
ICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKSB7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5zdGF0ZSA9IHN0YXRlOwotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAK
LSAgICB0ZXN0U2NvcGUoY2FsbGJhY2spCi0gICAgewotICAgICAgICBsZXQgc3RhdGUgPSB0aGlz
LnN0YXRlOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgICAgICBpZiAo
ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAg
dGhpcy5zdGF0ZSA9IHN0YXRlOwotICAgICAgICB9CisgICAgICAgIHRocm93IG5ldyBXTGV4aWNh
bEVycm9yKHRoaXMub3JpZ2luU3RyaW5nLCBlcnJvcik7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXJUb2tlbi5qcyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyVG9rZW4uanMKaW5kZXggOWUwNmVlNjhmNzIzODBlYmJk
NmE2MDUwMDFmNWEzZjI2MjgxMmJmNS4uMTQ0MDMxMmNkZGQ1ZjY5YTgyNGM0Mjc5MGU3Y2RjZGU4
YzIzNzA1YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXJU
b2tlbi5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlclRva2VuLmpz
CkBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIExleGVyVG9rZW4gewogICAgIAogICAgIGdldCBvcmln
aW5TdHJpbmcoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luICsgIjoiICsgKHRo
aXMubGluZU51bWJlciArIDEpOworICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW4gKyAiOiIgKyB0
aGlzLmxpbmVOdW1iZXI7CiAgICAgfQogICAgIAogICAgIHRvU3RyaW5nKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1BhcnNlLmpzIGIvVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKaW5kZXggZWU0Yzk4MGYzYTE2NzJiNjhhNzdlYmI0ODUy
NWVkZDI0OTQ0M2E1My4uNGZiODQ5ZDBjZGYwZDlkYTA5MGYxYzMwMTMxMTI4YjQxMzUxYjlmMSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKKysrIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMKQEAgLTI3LDcgKzI3LDcgQEAK
IGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9m
ZnNldCwgdGV4dCkKIHsKICAgICBsZXQgbGV4ZXIgPSBuZXcgTGV4ZXIob3JpZ2luLCBvcmlnaW5L
aW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KTsKLSAgICAKKwogICAgIC8vIFRoZSBoYXJkZXN0
IHBhcnQgb2YgZGVhbGluZyB3aXRoIEMtbGlrZSBsYW5ndWFnZXMgaXMgcGFyc2luZyB2YXJpYWJs
ZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnRzLgogICAgIC8vIExldCdzIGNvbnNpZGVyIGlmIHRoaXMg
aGFwcGVucyBpbiBXU0wuIEhlcmUgYXJlIHRoZSB2YWxpZCBzdGF0ZW1lbnRzIGluIFdTTCB0aGF0
IGJlaW5nIHdpdGggYW4KICAgICAvLyBpZGVudGlmaWVyLCBpZiB3ZSBhc3N1bWUgdGhhdCBhbnkg
ZXhwcmVzc2lvbiBjYW4gYmUgYSBzdGFuZGFsb25lIHN0YXRlbWVudC4KQEAgLTYxLDMyICs2MSw1
OSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1i
ZXJPZmZzZXQsIHRleHQpCiAgICAgLy8gcG9pbnRlcnMgbWVhbnMgdGhhdCB3ZSBjYW4gc3RpbGwg
YWxsb3cgZnVuY3Rpb24gY2FsbCBzdGF0ZW1lbnRzIC0gdW5saWtlIGluIEMsIHRob3NlIGNhbm5v
dAogICAgIC8vIGhhdmUgYXJiaXRyYXJ5IGV4cHJlc3Npb25zIGFzIHRoZSBjYWxsZWUuIFRoZSBy
ZW1haW5pbmcgdHdvIHByb2JsZW1zIGFyZSBzb2x2ZWQgYnkKICAgICAvLyBiYWNrdHJhY2tpbmcu
IEluIGFsbCBvdGhlciByZXNwZWN0cywgdGhpcyBpcyBhIHNpbXBsZSByZWN1cnNpdmUgZGVzY2Vu
dCBwYXJzZXIuCi0gICAgCisKKyAgICBmdW5jdGlvbiBmYWlsKGVycm9yKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG5ldyBXU3ludGF4RXJyb3IobGV4ZXIub3JpZ2luU3RyaW5nLCBlcnJvcik7Cisg
ICAgfQorCisgICAgZnVuY3Rpb24gYmFja3RyYWNraW5nU2NvcGUoY2FsbGJhY2spCisgICAgewor
ICAgICAgICBsZXQgc3RhdGUgPSBsZXhlci5zdGF0ZTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3Ig
PSBjYWxsYmFjaygpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikgeworICAgICAgICAgICAgbGV4ZXIuc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgICAgIHJl
dHVybiBudWxsOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9y
OworICAgIH0KKworICAgIGZ1bmN0aW9uIHRlc3RTY29wZShjYWxsYmFjaykKKyAgICB7CisgICAg
ICAgIGxldCBzdGF0ZSA9IGxleGVyLnN0YXRlOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNh
bGxiYWNrKCk7CisgICAgICAgIGxleGVyLnN0YXRlID0gc3RhdGU7CisgICAgICAgIHJldHVybiAh
KG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpOworICAgIH0KKwogICAgIGZ1bmN0
aW9uIGdlbmVyaWNDb25zdW1lKGNhbGxiYWNrLCBleHBsYW5hdGlvbikKICAgICB7CiAgICAgICAg
IGxldCB0b2tlbiA9IGxleGVyLm5leHQoKTsKICAgICAgICAgaWYgKCF0b2tlbikKLSAgICAgICAg
ICAgIGxleGVyLmZhaWwoIlVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiKTsKKyAgICAgICAgICAgIHJl
dHVybiBmYWlsKCJVbmV4cGVjdGVkIGVuZCBvZiBmaWxlIik7CiAgICAgICAgIGlmICghY2FsbGJh
Y2sodG9rZW4pKQotICAgICAgICAgICAgbGV4ZXIuZmFpbCgiVW5leHBlY3RlZCB0b2tlbjogIiAr
IHRva2VuLnRleHQgKyAiOyBleHBlY3RlZDogIiArIGV4cGxhbmF0aW9uKTsKKyAgICAgICAgICAg
IHJldHVybiBmYWlsKCJVbmV4cGVjdGVkIHRva2VuOiAiICsgdG9rZW4udGV4dCArICI7IGV4cGVj
dGVkOiAiICsgZXhwbGFuYXRpb24pOwogICAgICAgICByZXR1cm4gdG9rZW47CiAgICAgfQotICAg
IAorCiAgICAgZnVuY3Rpb24gY29uc3VtZSguLi50ZXh0cykKICAgICB7CiAgICAgICAgIHJldHVy
biBnZW5lcmljQ29uc3VtZSh0b2tlbiA9PiB0ZXh0cy5pbmNsdWRlcyh0b2tlbi50ZXh0KSwgdGV4
dHMpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIGNvbnN1bWVLaW5kKGtpbmQpCiAgICAg
ewogICAgICAgICByZXR1cm4gZ2VuZXJpY0NvbnN1bWUodG9rZW4gPT4gdG9rZW4ua2luZCA9PSBr
aW5kLCBraW5kKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBhc3NlcnROZXh0KC4uLnRl
eHRzKQogICAgIHsKLSAgICAgICAgbGV4ZXIucHVzaChjb25zdW1lKC4uLnRleHRzKSk7CisgICAg
ICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSguLi50ZXh0cyk7CisgICAgICAgIGlmIChtYXli
ZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJl
RXJyb3I7CisgICAgICAgIGxleGVyLnB1c2gobWF5YmVFcnJvcik7CiAgICAgfQotICAgIAorCiAg
ICAgZnVuY3Rpb24gZ2VuZXJpY1Rlc3QoY2FsbGJhY2spCiAgICAgewogICAgICAgICBsZXQgdG9r
ZW4gPSBsZXhlci5wZWVrKCk7CkBAIC05NCwxNyArMTIxLDE3IEBAIGZ1bmN0aW9uIHBhcnNlKHBy
b2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAg
ICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQotICAgIAor
CiAgICAgZnVuY3Rpb24gdGVzdCguLi50ZXh0cykKICAgICB7CiAgICAgICAgIHJldHVybiBnZW5l
cmljVGVzdCh0b2tlbiA9PiB0ZXh0cy5pbmNsdWRlcyh0b2tlbi50ZXh0KSk7CiAgICAgfQotICAg
IAorCiAgICAgZnVuY3Rpb24gdGVzdEtpbmQoa2luZCkKICAgICB7CiAgICAgICAgIHJldHVybiBn
ZW5lcmljVGVzdCh0b2tlbiA9PiB0b2tlbi5raW5kID09IGtpbmQpOwogICAgIH0KLSAgICAKKwog
ICAgIGZ1bmN0aW9uIHRyeUNvbnN1bWUoLi4udGV4dHMpCiAgICAgewogICAgICAgICBsZXQgcmVz
dWx0ID0gdGVzdCguLi50ZXh0cyk7CkBAIC0xMTIsNyArMTM5LDcgQEAgZnVuY3Rpb24gcGFyc2Uo
cHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAg
ICAgICAgICAgbGV4ZXIubmV4dCgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAg
ICAKKwogICAgIGZ1bmN0aW9uIHRyeUNvbnN1bWVLaW5kKGtpbmQpCiAgICAgewogICAgICAgICBs
ZXQgcmVzdWx0ID0gdGVzdEtpbmQoa2luZCk7CkBAIC0xMjAsMTYgKzE0NywxOSBAQCBmdW5jdGlv
biBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRl
eHQpCiAgICAgICAgICAgICBsZXhlci5uZXh0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gY29uc3VtZUVuZE9mVHlwZUFyZ3MoKQogICAgIHsK
ICAgICAgICAgbGV0IHJpZ2h0U2hpZnQgPSB0cnlDb25zdW1lKCI+PiIpOwogICAgICAgICBpZiAo
cmlnaHRTaGlmdCkKICAgICAgICAgICAgIGxleGVyLnB1c2gobmV3IExleGVyVG9rZW4obGV4ZXIs
IHJpZ2h0U2hpZnQsIHJpZ2h0U2hpZnQuaW5kZXgsIHJpZ2h0U2hpZnQua2luZCwgIj4iKSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnN1bWUoIj4iKTsKKyAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIj4iKTsKKyAgICAgICAgICAgIGlm
IChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJl
dHVybiBtYXliZUVycm9yOworICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24g
cGFyc2VUZXJtKCkKICAgICB7CiAgICAgICAgIGxldCB0b2tlbjsKQEAgLTE0MCwxMyArMTcwLDEz
IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJl
ck9mZnNldCwgdGV4dCkKICAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZUtpbmQoImludExp
dGVyYWwiKSkgewogICAgICAgICAgICAgbGV0IGludFZlcnNpb24gPSAoK3Rva2VuLnRleHQpIHwg
MDsKICAgICAgICAgICAgIGlmICgiIiArIGludFZlcnNpb24gIT09IHRva2VuLnRleHQpCi0gICAg
ICAgICAgICAgICAgbGV4ZXIuZmFpbCgiSW50ZWdlciBsaXRlcmFsIGlzIG5vdCBhbiBpbnRlZ2Vy
OiAiICsgdG9rZW4udGV4dCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoIkludGVnZXIg
bGl0ZXJhbCBpcyBub3QgYW4gaW50ZWdlcjogIiArIHRva2VuLnRleHQpOwogICAgICAgICAgICAg
cmV0dXJuIG5ldyBJbnRMaXRlcmFsKHRva2VuLCBpbnRWZXJzaW9uKTsKICAgICAgICAgfQogICAg
ICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2luZCgidWludExpdGVyYWwiKSkgewogICAgICAg
ICAgICAgbGV0IHVpbnRWZXJzaW9uID0gdG9rZW4udGV4dC5zdWJzdHIoMCwgdG9rZW4udGV4dC5s
ZW5ndGggLSAxKSA+Pj4gMDsKICAgICAgICAgICAgIGlmICh1aW50VmVyc2lvbiArICJ1IiAhPT0g
dG9rZW4udGV4dCkKLSAgICAgICAgICAgICAgICBsZXhlci5mYWlsKCJJbnRlZ2VyIGxpdGVyYWwg
aXMgbm90IDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyOiAiICsgdG9rZW4udGV4dCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhaWwoIkludGVnZXIgbGl0ZXJhbCBpcyBub3QgMzItYml0IHVuc2ln
bmVkIGludGVnZXI6ICIgKyB0b2tlbi50ZXh0KTsKICAgICAgICAgICAgIHJldHVybiBuZXcgVWlu
dExpdGVyYWwodG9rZW4sIHVpbnRWZXJzaW9uKTsKICAgICAgICAgfQogICAgICAgICBpZiAoKHRv
a2VuID0gdHJ5Q29uc3VtZUtpbmQoImludEhleExpdGVyYWwiKSkKQEAgLTE2Miw3ICsxOTIsNyBA
QCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJP
ZmZzZXQsIHRleHQpCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgaW50VmVyc2lv
biA9IGludFZlcnNpb24gPj4+IDA7CiAgICAgICAgICAgICBpZiAoaW50VmVyc2lvbi50b1N0cmlu
ZygxNikgIT09IGhleFN0cmluZykKLSAgICAgICAgICAgICAgICBsZXhlci5mYWlsKCJIZXggaW50
ZWdlciBsaXRlcmFsIGlzIG5vdCBhbiBpbnRlZ2VyOiAiICsgdG9rZW4udGV4dCk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhaWwoIkhleCBpbnRlZ2VyIGxpdGVyYWwgaXMgbm90IGFuIGludGVn
ZXI6ICIgKyB0b2tlbi50ZXh0KTsKICAgICAgICAgICAgIGlmICh0b2tlbi5raW5kID09ICJpbnRI
ZXhMaXRlcmFsIikKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEludExpdGVyYWwodG9rZW4s
IGludFZlcnNpb24pOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBVaW50TGl0ZXJhbCh0b2tlbiwg
aW50VmVyc2lvbiA+Pj4gMCk7CkBAIC0xNzgsMzAgKzIwOCw0OCBAQCBmdW5jdGlvbiBwYXJzZShw
cm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAg
ICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoInRydWUiLCAiZmFsc2UiKSkKICAgICAgICAgICAg
IHJldHVybiBuZXcgQm9vbExpdGVyYWwodG9rZW4sIHRva2VuLnRleHQgPT0gInRydWUiKTsKICAg
ICAgICAgLy8gRklYTUU6IE5lZWQgc3VwcG9ydCBmb3Igb3RoZXIgbGl0ZXJhbHMgdG9vLgotICAg
ICAgICBjb25zdW1lKCIoIik7CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIp
OworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgcmVzdWx0ID0gcGFyc2VFeHBy
ZXNzaW9uKCk7Ci0gICAgICAgIGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKHJlc3VsdCBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IG1heWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VDb25z
dGV4cHIoKQogICAgIHsKICAgICAgICAgbGV0IHRva2VuOwotICAgICAgICBpZiAodG9rZW4gPSB0
cnlDb25zdW1lKCItIikpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENhbGxFeHByZXNzaW9uKHRv
a2VuLCAib3BlcmF0b3IiICsgdG9rZW4udGV4dCwgW3BhcnNlVGVybSgpXSk7CisgICAgICAgIGlm
ICh0b2tlbiA9IHRyeUNvbnN1bWUoIi0iKSkgeworICAgICAgICAgICAgbGV0IHRlcm0gPSBwYXJz
ZVRlcm0oKTsKKyAgICAgICAgICAgIGlmICh0ZXJtIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgICAgIHJldHVybiB0ZXJtOworICAgICAgICAgICAgcmV0dXJuIG5ldyBDYWxs
RXhwcmVzc2lvbih0b2tlbiwgIm9wZXJhdG9yIiArIHRva2VuLnRleHQsIFt0ZXJtXSk7CisgICAg
ICAgIH0KICAgICAgICAgbGV0IGxlZnQgPSBwYXJzZVRlcm0oKTsKLSAgICAgICAgaWYgKHRva2Vu
ID0gdHJ5Q29uc3VtZSgiLiIpKQotICAgICAgICAgICAgbGVmdCA9IG5ldyBEb3RFeHByZXNzaW9u
KHRva2VuLCBsZWZ0LCBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQpOworICAgICAgICBp
ZiAobGVmdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBsZWZ0
OworICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIuIikpIHsKKyAgICAgICAgICAgIGxl
dCBtYXliZUVycm9yID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKQorICAgICAgICAgICAgaWYg
KG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG1heWJlRXJyb3I7CisgICAgICAgICAgICBsZWZ0ID0gbmV3IERvdEV4cHJlc3Npb24odG9r
ZW4sIGxlZnQsIG1heWJlRXJyb3IudGV4dCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGxl
ZnQ7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VUeXBlQXJndW1lbnRzKCkKICAg
ICB7CiAgICAgICAgIGlmICghdGVzdCgiPCIpKQogICAgICAgICAgICAgcmV0dXJuIFtdOwogCiAg
ICAgICAgIGxldCByZXN1bHQgPSBbXTsKLSAgICAgICAgY29uc3VtZSgiPCIpOworICAgICAgICBs
ZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjwiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAg
ICAgICAgd2hpbGUgKCF0ZXN0KCI+IikpIHsKICAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUg
Zm9yIGEgY29uc3RleHByIG9yIHR5cGUgY2FuIHN5bnRhY3RpY2FsbHkgb3ZlcmxhcCBpbiB0aGUg
c2luZ2xlCiAgICAgICAgICAgICAvLyBpZGVudGlmaWVyIGNhc2UuIExldCdzIGNvbnNpZGVyIHRo
ZSBwb3NzaWJpbGl0aWVzOgpAQCAtMjE0LDMxICsyNjIsNDUgQEAgZnVuY3Rpb24gcGFyc2UocHJv
Z3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAg
ICAgICAgLy8gSW4gdGhlIGZ1dHVyZSB3ZSdsbCBhbGxvdyBjb25zdGV4cHJzIHRvIGRvIG1vcmUg
dGhpbmdzLCBhbmQgdGhlbiB3ZSdsbCBzdGlsbCBoYXZlCiAgICAgICAgICAgICAvLyB0aGUgcHJv
YmxlbSB0aGF0IHNvbWV0aGluZyBvZiB0aGUgZm9ybSBUWzFdWzJdWzNdLi4uIGNhbiBlaXRoZXIg
YmUgYSB0eXBlIG9yIGEKICAgICAgICAgICAgIC8vIGNvbnN0ZXhwciwgYW5kIHdlIGNhbiBmaWd1
cmUgb3V0IGluIHRoZSBjaGVja2VyIHdoaWNoIGl0IGlzLgotICAgICAgICAgICAgbGV0IHR5cGVS
ZWYgPSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7CisgICAgICAgICAgICBsZXQgdHlw
ZVJlZiA9IGJhY2t0cmFja2luZ1Njb3BlKCgpID0+IHsKICAgICAgICAgICAgICAgICBsZXQgcmVz
dWx0ID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKLSAgICAgICAgICAgICAgICBhc3NlcnRO
ZXh0KCIsIiwgIj4iLCAiPj4iKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
ICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gYXNzZXJ0TmV4dCgiLCIsICI+IiwgIj4+Iik7
CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICAgICAgICAg
IHJldHVybiBuZXcgVHlwZVJlZihyZXN1bHQsIHJlc3VsdC50ZXh0KTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgaWYgKHR5cGVSZWYpCiAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2go
dHlwZVJlZik7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBsZXQgY29uc3Rl
eHByID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUoKCkgPT4geworICAgICAgICAgICAgICAgIGxl
dCBjb25zdGV4cHIgPSBiYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7CiAgICAgICAgICAgICAgICAg
ICAgIGxldCByZXN1bHQgPSBwYXJzZUNvbnN0ZXhwcigpOwotICAgICAgICAgICAgICAgICAgICBh
c3NlcnROZXh0KCIsIiwgIj4iLCAiPj4iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3Vs
dCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gYXNzZXJ0TmV4
dCgiLCIsICI+IiwgIj4+Iik7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1h
eWJlRXJyb3I7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbnN0ZXhwcikKICAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0LnB1c2goY29uc3RleHByKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHBhcnNlVHlwZSgpKTsKKyAgICAgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAgICAgICAgICAgICAgICAgICAgcmVz
dWx0LnB1c2godHlwZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKCF0cnlDb25zdW1lKCIsIikpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgY29uc3VtZUVuZE9mVHlwZUFyZ3MoKTsKKyAgICAgICAgbWF5YmVFcnJv
ciA9IGNvbnN1bWVFbmRPZlR5cGVBcmdzKCk7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VUeXBl
KCkKICAgICB7CiAgICAgICAgIGxldCB0b2tlbjsKQEAgLTI0Niw2OCArMzA4LDk2IEBAIGZ1bmN0
aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwg
dGV4dCkKICAgICAgICAgbGV0IGFkZHJlc3NTcGFjZUNvbnN1bWVkID0gZmFsc2U7CiAgICAgICAg
IGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoLi4uYWRkcmVzc1NwYWNlcykpCiAgICAgICAgICAgICBh
ZGRyZXNzU3BhY2UgPSB0b2tlbi50ZXh0OwotICAgICAgICAKKwogICAgICAgICBsZXQgbmFtZSA9
IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgICAgIGxldCB0eXBl
QXJndW1lbnRzID0gcGFyc2VUeXBlQXJndW1lbnRzKCk7CisgICAgICAgIGlmICh0eXBlQXJndW1l
bnRzIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHR5cGVBcmd1
bWVudHM7CiAgICAgICAgIGxldCB0eXBlID0gbmV3IFR5cGVSZWYobmFtZSwgbmFtZS50ZXh0LCB0
eXBlQXJndW1lbnRzKTsKLSAgICAgICAgCisKICAgICAgICAgZnVuY3Rpb24gZ2V0QWRkcmVzc1Nw
YWNlKCkKICAgICAgICAgewogICAgICAgICAgICAgYWRkcmVzc1NwYWNlQ29uc3VtZWQgPSB0cnVl
OwogICAgICAgICAgICAgaWYgKGFkZHJlc3NTcGFjZSkKICAgICAgICAgICAgICAgICByZXR1cm4g
YWRkcmVzc1NwYWNlOwotICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWUoLi4uYWRkcmVzc1NwYWNl
cykudGV4dDsKKyAgICAgICAgICAgIGxldCBjb25zdW1lZEFkZHJlc3NTcGFjZSA9IGNvbnN1bWUo
Li4uYWRkcmVzc1NwYWNlcyk7CisgICAgICAgICAgICBpZiAoY29uc3VtZWRBZGRyZXNzU3BhY2Ug
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVk
QWRkcmVzc1NwYWNlOworICAgICAgICAgICAgcmV0dXJuIGNvbnN1bWVkQWRkcmVzc1NwYWNlLnRl
eHQ7CiAgICAgICAgIH0KLSAgICAgICAgCisKICAgICAgICAgY29uc3QgdHlwZUNvbnN0cnVjdG9y
U3RhY2sgPSBbIF07CiAKICAgICAgICAgZm9yIChsZXQgdG9rZW47IHRva2VuID0gdHJ5Q29uc3Vt
ZSgiKiIsICJbIik7KSB7CiAgICAgICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAiKiIpIHsKICAg
ICAgICAgICAgICAgICAvLyBMaWtld2lzZSwgdGhlIGFkZHJlc3Mgc3BhY2UgbXVzdCBiZSBwYXJz
ZWQgYmVmb3JlIHBhcnNpbmcgY29udGludWVzLgogICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJl
c3NTcGFjZSA9IGdldEFkZHJlc3NTcGFjZSgpOworICAgICAgICAgICAgICAgIGlmIChhZGRyZXNz
U3BhY2UgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBhZGRyZXNzU3BhY2U7CiAgICAgICAgICAgICAgICAgdHlwZUNvbnN0cnVjdG9yU3RhY2sudW5z
aGlmdCh0eXBlID0+IG5ldyBQdHJUeXBlKHRva2VuLCBhZGRyZXNzU3BhY2UsIHR5cGUpKTsKICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KHRyeUNvbnN1bWUoIl0iKSkgewogICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3NTcGFjZSA9
IGdldEFkZHJlc3NTcGFjZSgpOworICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzU3BhY2UgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBhZGRyZXNz
U3BhY2U7CiAgICAgICAgICAgICAgICAgdHlwZUNvbnN0cnVjdG9yU3RhY2sudW5zaGlmdCh0eXBl
ID0+IG5ldyBBcnJheVJlZlR5cGUodG9rZW4sIGFkZHJlc3NTcGFjZSwgdHlwZSkpOwogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBjb25zdCBs
ZW5ndGhFeHByID0gcGFyc2VDb25zdGV4cHIoKTsKKyAgICAgICAgICAgIGlmIChsZW5ndGhFeHBy
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBsZW5ndGhF
eHByOwogICAgICAgICAgICAgdHlwZUNvbnN0cnVjdG9yU3RhY2sudW5zaGlmdCh0eXBlID0+IG5l
dyBBcnJheVR5cGUodG9rZW4sIHR5cGUsIGxlbmd0aEV4cHIpKTsKLSAgICAgICAgICAgIGNvbnN1
bWUoIl0iKTsKKyAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiXSIpOworICAg
ICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGxl
dCBjb25zdHJ1Y3RvciBvZiB0eXBlQ29uc3RydWN0b3JTdGFjaykKICAgICAgICAgICAgIHR5cGUg
PSBjb25zdHJ1Y3Rvcih0eXBlKTsKIAogICAgICAgICBpZiAoYWRkcmVzc1NwYWNlICYmICFhZGRy
ZXNzU3BhY2VDb25zdW1lZCkKLSAgICAgICAgICAgIGxleGVyLmZhaWwoIkFkZHJlc3Mgc3BhY2Ug
c3BlY2lmaWVkIGZvciB0eXBlIHRoYXQgZG9lcyBub3QgbmVlZCBhZGRyZXNzIHNwYWNlIik7Cisg
ICAgICAgICAgICByZXR1cm4gZmFpbCgiQWRkcmVzcyBzcGFjZSBzcGVjaWZpZWQgZm9yIHR5cGUg
dGhhdCBkb2VzIG5vdCBuZWVkIGFkZHJlc3Mgc3BhY2UiKTsKIAogICAgICAgICByZXR1cm4gdHlw
ZTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVR5cGVEZWYoKQogICAgIHsKICAg
ICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoInR5cGVkZWYiKTsKLSAgICAgICAgbGV0IG5hbWUg
PSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQ7Ci0gICAgICAgIGNvbnN1bWUoIj0iKTsK
KyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBvcmlnaW47CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZUtpbmQoImlk
ZW50aWZpZXIiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgbGV0IG5hbWUgPSBt
YXliZUVycm9yLnRleHQ7CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCI9Iik7CisgICAg
ICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7Ci0gICAg
ICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBUeXBl
RGVmKG9yaWdpbiwgbmFtZSwgdHlwZSk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gZ2Vu
ZXJpY1BhcnNlTGVmdCh0ZXh0cywgbmV4dFBhcnNlciwgY29uc3RydWN0b3IpCiAgICAgewogICAg
ICAgICBsZXQgbGVmdCA9IG5leHRQYXJzZXIoKTsKKyAgICAgICAgaWYgKGxlZnQgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbGVmdDsKICAgICAgICAgbGV0IHRv
a2VuOwogICAgICAgICB3aGlsZSAodG9rZW4gPSB0cnlDb25zdW1lKC4uLnRleHRzKSkKICAgICAg
ICAgICAgIGxlZnQgPSBjb25zdHJ1Y3Rvcih0b2tlbiwgbGVmdCwgbmV4dFBhcnNlcigpKTsKICAg
ICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VMZWZ0
T3BlcmF0b3JDYWxsKHRleHRzLCBuZXh0UGFyc2VyKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdl
bmVyaWNQYXJzZUxlZnQoCkBAIC0zMTUsMjQgKzQwNSwzMiBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAg
ICAgICAodG9rZW4sIGxlZnQsIHJpZ2h0KSA9PgogICAgICAgICAgICAgICAgIG5ldyBDYWxsRXhw
cmVzc2lvbih0b2tlbiwgIm9wZXJhdG9yIiArIHRva2VuLnRleHQsIFtsZWZ0LCByaWdodF0pKTsK
ICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUNhbGxFeHByZXNzaW9uKCkKICAgICB7
CiAgICAgICAgIGxldCBwYXJzZUFyZ3VtZW50cyA9IGZ1bmN0aW9uKG9yaWdpbiwgY2FsbE5hbWUp
IHsKICAgICAgICAgICAgIGxldCBhcmd1bWVudExpc3QgPSBbXTsKICAgICAgICAgICAgIHdoaWxl
ICghdGVzdCgiKSIpKSB7CiAgICAgICAgICAgICAgICAgbGV0IGFyZ3VtZW50ID0gcGFyc2VQb3Nz
aWJsZUFzc2lnbm1lbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnQgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBhcmd1bWVudDsKICAg
ICAgICAgICAgICAgICBhcmd1bWVudExpc3QucHVzaChhcmd1bWVudCk7CiAgICAgICAgICAgICAg
ICAgaWYgKCF0cnlDb25zdW1lKCIsIikpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICAgICAgbGV0IG1h
eWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
ICAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4cHJlc3Npb24ob3JpZ2luLCBjYWxsTmFtZSwg
YXJndW1lbnRMaXN0KTsKICAgICAgICAgfQogCi0gICAgICAgIGxldCBuYW1lID0gbGV4ZXIuYmFj
a3RyYWNraW5nU2NvcGUoKCkgPT4geworICAgICAgICBsZXQgbmFtZSA9IGJhY2t0cmFja2luZ1Nj
b3BlKCgpID0+IHsKICAgICAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZp
ZXIiKTsKLSAgICAgICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAgIGlmIChuYW1lIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lOworICAg
ICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgICAgICBpZiAo
bWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1
cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgIHJldHVybiBuYW1lOwogICAgICAgICB9KTsKIApA
QCAtMzQxLDQwICs0MzksNTIgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmln
aW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxldCByZXR1cm5UeXBlID0gcGFyc2VU
eXBlKCk7Ci0gICAgICAgICAgICBjb25zdW1lKCIoIik7CisgICAgICAgICAgICBpZiAocmV0dXJu
VHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV0
dXJuVHlwZTsKKyAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAg
ICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gcGFy
c2VBcmd1bWVudHMocmV0dXJuVHlwZS5vcmlnaW4sICJvcGVyYXRvciBjYXN0Iik7CiAgICAgICAg
ICAgICByZXN1bHQuc2V0Q2FzdERhdGEocmV0dXJuVHlwZSk7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gaXNDYWxsRXhw
cmVzc2lvbigpCiAgICAgewotICAgICAgICByZXR1cm4gbGV4ZXIudGVzdFNjb3BlKCgpID0+IHsK
LSAgICAgICAgICAgICAgICBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOwotICAgICAgICAgICAg
ICAgIGNvbnN1bWUoIigiKTsKLSAgICAgICAgICAgIH0pIHx8IGxleGVyLnRlc3RTY29wZSgoKSA9
PiB7Ci0gICAgICAgICAgICAgICAgcGFyc2VUeXBlKCk7Ci0gICAgICAgICAgICAgICAgY29uc3Vt
ZSgiKCIpOworICAgICAgICByZXR1cm4gdGVzdFNjb3BlKCgpID0+IHsKKyAgICAgICAgICAgICAg
ICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgICAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAgICAgICAgIG1heWJlRXJyb3Ig
PSBjb25zdW1lKCIoIik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwor
ICAgICAgICAgICAgfSkgfHwgdGVzdFNjb3BlKCgpID0+IHsKKyAgICAgICAgICAgICAgICBsZXQg
dHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICAgICAgICAgIGlmICh0eXBlIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZTsKKyAgICAgICAg
ICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAgICAgICBp
ZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICB9KTsKICAgICB9Ci0gICAgCisKICAg
ICBmdW5jdGlvbiBlbWl0SW5jcmVtZW50KHRva2VuLCBvbGQsIGV4dHJhQXJnKQogICAgIHsKICAg
ICAgICAgbGV0IGFyZ3MgPSBbb2xkXTsKICAgICAgICAgaWYgKGV4dHJhQXJnKQogICAgICAgICAg
ICAgYXJncy5wdXNoKGV4dHJhQXJnKTsKLSAgICAgICAgCisKICAgICAgICAgbGV0IG5hbWUgPSAi
b3BlcmF0b3IiICsgdG9rZW4udGV4dDsKICAgICAgICAgaWYgKC89JC8udGVzdChuYW1lKSkKICAg
ICAgICAgICAgIG5hbWUgPSBSZWdFeHAubGVmdENvbnRleHQ7Ci0gICAgICAgIAorCiAgICAgICAg
IGlmIChuYW1lID09ICJvcGVyYXRvciIpCiAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIklu
dmFsaWQgbmFtZTogIiArIG5hbWUpOwotICAgICAgICAKKwogICAgICAgICByZXR1cm4gbmV3IENh
bGxFeHByZXNzaW9uKHRva2VuLCBuYW1lLCBhcmdzKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5j
dGlvbiBmaW5pc2hQYXJzaW5nUG9zdEluY3JlbWVudCh0b2tlbiwgbGVmdCkKICAgICB7CiAgICAg
ICAgIGxldCByZWFkTW9kaWZ5V3JpdGUgPSBuZXcgUmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbih0
b2tlbiwgbGVmdCk7CkBAIC0zODIsNyArNDkyLDcgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwg
b3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICByZWFk
TW9kaWZ5V3JpdGUucmVzdWx0RXhwID0gcmVhZE1vZGlmeVdyaXRlLm9sZFZhbHVlUmVmKCk7CiAg
ICAgICAgIHJldHVybiByZWFkTW9kaWZ5V3JpdGU7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rp
b24gcGFyc2VTdWZmaXhPcGVyYXRvcihsZWZ0LCBhY2NlcHRhYmxlT3BlcmF0b3JzKQogICAgIHsK
ICAgICAgICAgbGV0IHRva2VuOwpAQCAtMzk1LDExICs1MDUsMTggQEAgZnVuY3Rpb24gcGFyc2Uo
cHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAg
ICAgICAgICAgY2FzZSAiLT4iOgogICAgICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICIt
PiIpCiAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9u
KHRva2VuLCBsZWZ0KTsKLSAgICAgICAgICAgICAgICBsZWZ0ID0gbmV3IERvdEV4cHJlc3Npb24o
dG9rZW4sIGxlZnQsIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dCk7CisgICAgICAgICAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAg
ICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgICAgICBsZWZ0ID0g
bmV3IERvdEV4cHJlc3Npb24odG9rZW4sIGxlZnQsIG1heWJlRXJyb3IudGV4dCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlICJbIjogewogICAgICAgICAgICAgICAg
IGxldCBpbmRleCA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUo
Il0iKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgICAgICAgICAgICBsZXQg
bWF5YmVFcnJvciA9IGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJv
ciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1h
eWJlRXJyb3I7CiAgICAgICAgICAgICAgICAgbGVmdCA9IG5ldyBJbmRleEV4cHJlc3Npb24odG9r
ZW4sIGxlZnQsIGluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0K
QEAgLTQwOSw3ICs1MjYsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdp
bktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJu
IGxlZnQ7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZVN1ZmZpeCgp
CiAgICAgewogICAgICAgICBsZXQgYWNjZXB0YWJsZU9wZXJhdG9ycyA9IFsiKysiLCAiLS0iLCAi
LiIsICItPiIsICJbIl07CkBAIC00MTcsMTMgKzUzNCwxOCBAQCBmdW5jdGlvbiBwYXJzZShwcm9n
cmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAg
IGxldCBsZWZ0OwogICAgICAgICBpZiAoaXNDYWxsRXhwcmVzc2lvbigpKSB7CiAgICAgICAgICAg
ICBsZWZ0ID0gcGFyc2VDYWxsRXhwcmVzc2lvbigpOworICAgICAgICAgICAgaWYgKGxlZnQgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQ7CiAgICAg
ICAgICAgICBhY2NlcHRhYmxlT3BlcmF0b3JzID0gbGltaXRlZE9wZXJhdG9yczsKLSAgICAgICAg
fSBlbHNlCisgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsZWZ0ID0gcGFyc2VUZXJtKCk7
Ci0gICAgICAgIAorICAgICAgICAgICAgaWYgKGxlZnQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQ7CisgICAgICAgIH0KKwogICAgICAgICByZXR1
cm4gcGFyc2VTdWZmaXhPcGVyYXRvcihsZWZ0LCBhY2NlcHRhYmxlT3BlcmF0b3JzKTsKICAgICB9
Ci0gICAgCisKICAgICBmdW5jdGlvbiBmaW5pc2hQYXJzaW5nUHJlSW5jcmVtZW50KHRva2VuLCBs
ZWZ0LCBleHRyYUFyZykKICAgICB7CiAgICAgICAgIGxldCByZWFkTW9kaWZ5V3JpdGUgPSBuZXcg
UmVhZE1vZGlmeVdyaXRlRXhwcmVzc2lvbih0b2tlbiwgbGVmdCk7CkBAIC00MzEsNTQgKzU1Myw3
MiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1i
ZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIHJlYWRNb2RpZnlXcml0ZS5yZXN1bHRFeHAgPSByZWFk
TW9kaWZ5V3JpdGUubmV3VmFsdWVSZWYoKTsKICAgICAgICAgcmV0dXJuIHJlYWRNb2RpZnlXcml0
ZTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVByZUluY3JlbWVudCgpCiAgICAg
ewogICAgICAgICBsZXQgdG9rZW4gPSBjb25zdW1lKCIrKyIsICItLSIpOworICAgICAgICBpZiAo
dG9rZW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdG9rZW47
CiAgICAgICAgIGxldCBsZWZ0ID0gcGFyc2VQb3NzaWJsZVByZWZpeCgpOworICAgICAgICBpZiAo
bGVmdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBsZWZ0Owog
ICAgICAgICByZXR1cm4gZmluaXNoUGFyc2luZ1ByZUluY3JlbWVudCh0b2tlbiwgbGVmdCk7CiAg
ICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZVByZWZpeCgpCiAgICAgewog
ICAgICAgICBsZXQgdG9rZW47CiAgICAgICAgIGlmICh0ZXN0KCIrKyIsICItLSIpKQogICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlUHJlSW5jcmVtZW50KCk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRy
eUNvbnN1bWUoIisiLCAiLSIsICJ+IikpCi0gICAgICAgICAgICByZXR1cm4gbmV3IENhbGxFeHBy
ZXNzaW9uKHRva2VuLCAib3BlcmF0b3IiICsgdG9rZW4udGV4dCwgW3BhcnNlUG9zc2libGVQcmVm
aXgoKV0pOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIqIikpCi0gICAgICAgICAg
ICByZXR1cm4gbmV3IERlcmVmZXJlbmNlRXhwcmVzc2lvbih0b2tlbiwgcGFyc2VQb3NzaWJsZVBy
ZWZpeCgpKTsKLSAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiJiIpKQotICAgICAgICAg
ICAgcmV0dXJuIG5ldyBNYWtlUHRyRXhwcmVzc2lvbih0b2tlbiwgcGFyc2VQb3NzaWJsZVByZWZp
eCgpKTsKLSAgICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiQCIpKQotICAgICAgICAgICAg
cmV0dXJuIG5ldyBNYWtlQXJyYXlSZWZFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3NpYmxlUHJl
Zml4KCkpOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIhIikpIHsKKyAgICAgICAg
aWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiKyIsICItIiwgIn4iKSkgeworICAgICAgICAgICAgbGV0
IHBvc3NpYmxlUHJlZml4ID0gcGFyc2VQb3NzaWJsZVByZWZpeCgpOworICAgICAgICAgICAgaWYg
KHBvc3NpYmxlUHJlZml4IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAg
IHJldHVybiBXU3ludGF4RXJyb3I7CisgICAgICAgICAgICByZXR1cm4gbmV3IENhbGxFeHByZXNz
aW9uKHRva2VuLCAib3BlcmF0b3IiICsgdG9rZW4udGV4dCwgW3Bvc3NpYmxlUHJlZml4XSk7Cisg
ICAgICAgIH0gaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiKiIpKSB7CisgICAgICAgICAgICBsZXQg
cG9zc2libGVQcmVmaXggPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgICAgICBpZiAo
cG9zc2libGVQcmVmaXggaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAg
cmV0dXJuIFdTeW50YXhFcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRGVyZWZlcmVuY2VF
eHByZXNzaW9uKHRva2VuLCBwb3NzaWJsZVByZWZpeCk7CisgICAgICAgIH0gaWYgKHRva2VuID0g
dHJ5Q29uc3VtZSgiJiIpKSB7CisgICAgICAgICAgICBsZXQgcG9zc2libGVQcmVmaXggPSBwYXJz
ZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgICAgICBpZiAocG9zc2libGVQcmVmaXggaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIFdTeW50YXhFcnJvcjsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgTWFrZVB0ckV4cHJlc3Npb24odG9rZW4sIHBvc3NpYmxl
UHJlZml4KTsKKyAgICAgICAgfSBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJAIikpIHsKKyAgICAg
ICAgICAgIGxldCBwb3NzaWJsZVByZWZpeCA9IHBhcnNlUG9zc2libGVQcmVmaXgoKTsKKyAgICAg
ICAgICAgIGlmIChwb3NzaWJsZVByZWZpeCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gV1N5bnRheEVycm9yOworICAgICAgICAgICAgcmV0dXJuIG5ldyBN
YWtlQXJyYXlSZWZFeHByZXNzaW9uKHRva2VuLCBwb3NzaWJsZVByZWZpeCk7CisgICAgICAgIH0g
aWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiISIpKSB7CiAgICAgICAgICAgICBsZXQgcmVtYWluZGVy
ID0gcGFyc2VQb3NzaWJsZVByZWZpeCgpOworICAgICAgICAgICAgaWYgKHJlbWFpbmRlciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVtYWluZGVyOwog
ICAgICAgICAgICAgcmV0dXJuIG5ldyBMb2dpY2FsTm90KHRva2VuLCBuZXcgQ2FsbEV4cHJlc3Np
b24ocmVtYWluZGVyLm9yaWdpbiwgImJvb2wiLCBbcmVtYWluZGVyXSkpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBwYXJzZVBvc3NpYmxlU3VmZml4KCk7CiAgICAgfQotICAgIAorCiAgICAg
ZnVuY3Rpb24gcGFyc2VQb3NzaWJsZVByb2R1Y3QoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHBh
cnNlTGVmdE9wZXJhdG9yQ2FsbChbIioiLCAiLyIsICIlIl0sIHBhcnNlUG9zc2libGVQcmVmaXgp
OwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUG9zc2libGVTdW0oKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9wZXJhdG9yQ2FsbChbIisiLCAiLSJdLCBwYXJzZVBv
c3NpYmxlUHJvZHVjdCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJs
ZVNoaWZ0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBwYXJzZUxlZnRPcGVyYXRvckNhbGwoWyI8
PCIsICI+PiJdLCBwYXJzZVBvc3NpYmxlU3VtKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlv
biBwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEluZXF1YWxpdHkoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHBhcnNlTGVmdE9wZXJhdG9yQ2FsbChbIjwiLCAiPiIsICI8PSIsICI+PSJdLCBwYXJzZVBv
c3NpYmxlU2hpZnQpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUG9zc2libGVS
ZWxhdGlvbmFsRXF1YWxpdHkoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdlbmVyaWNQYXJzZUxl
ZnQoCkBAIC00OTAsMTAwICs2MzAsMTI5IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdp
biwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgfSk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rp
b24gcGFyc2VQb3NzaWJsZUJpdHdpc2VBbmQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHBhcnNl
TGVmdE9wZXJhdG9yQ2FsbChbIiYiXSwgcGFyc2VQb3NzaWJsZVJlbGF0aW9uYWxFcXVhbGl0eSk7
CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZUJpdHdpc2VYb3IoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9wZXJhdG9yQ2FsbChbIl4iXSwgcGFyc2VQ
b3NzaWJsZUJpdHdpc2VBbmQpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUG9z
c2libGVCaXR3aXNlT3IoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9wZXJhdG9y
Q2FsbChbInwiXSwgcGFyc2VQb3NzaWJsZUJpdHdpc2VYb3IpOwogICAgIH0KLSAgICAKKwogICAg
IGZ1bmN0aW9uIHBhcnNlTGVmdExvZ2ljYWxFeHByZXNzaW9uKHRleHRzLCBuZXh0UGFyc2VyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGdlbmVyaWNQYXJzZUxlZnQoCiAgICAgICAgICAgICB0ZXh0
cywgbmV4dFBhcnNlciwKICAgICAgICAgICAgICh0b2tlbiwgbGVmdCwgcmlnaHQpID0+IG5ldyBM
b2dpY2FsRXhwcmVzc2lvbih0b2tlbiwgdG9rZW4udGV4dCwgbmV3IENhbGxFeHByZXNzaW9uKGxl
ZnQub3JpZ2luLCAiYm9vbCIsIFtsZWZ0XSksIG5ldyBDYWxsRXhwcmVzc2lvbihyaWdodC5vcmln
aW4sICJib29sIiwgW3JpZ2h0XSkpKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJz
ZVBvc3NpYmxlTG9naWNhbEFuZCgpCiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VMZWZ0TG9n
aWNhbEV4cHJlc3Npb24oWyImJiJdLCBwYXJzZVBvc3NpYmxlQml0d2lzZU9yKTsKICAgICB9Ci0g
ICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlTG9naWNhbE9yKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBwYXJzZUxlZnRMb2dpY2FsRXhwcmVzc2lvbihbInx8Il0sIHBhcnNlUG9zc2li
bGVMb2dpY2FsQW5kKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxl
VGVybmFyeUNvbmRpdGlvbmFsKCkKICAgICB7CiAgICAgICAgIGxldCBwcmVkaWNhdGUgPSBwYXJz
ZVBvc3NpYmxlTG9naWNhbE9yKCk7CisgICAgICAgIGlmIChwcmVkaWNhdGUgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gcHJlZGljYXRlOwogICAgICAgICBsZXQg
b3BlcmF0b3IgPSB0cnlDb25zdW1lKCI/Iik7CiAgICAgICAgIGlmICghb3BlcmF0b3IpCiAgICAg
ICAgICAgICByZXR1cm4gcHJlZGljYXRlOwogICAgICAgICBsZXQgYm9keUV4cHJlc3Npb24gPSBw
YXJzZVBvc3NpYmxlQXNzaWdubWVudCgpOwotICAgICAgICBjb25zdW1lKCI6Iik7CisgICAgICAg
IGlmIChib2R5RXhwcmVzc2lvbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBib2R5RXhwcmVzc2lvbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1l
KCI6Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBlbHNlRXhwcmVzc2lv
biA9IHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCk7CisgICAgICAgIGlmIChlbHNlRXhwcmVzc2lv
biBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBlbHNlRXhwcmVz
c2lvbjsKICAgICAgICAgcmV0dXJuIG5ldyBUZXJuYXJ5RXhwcmVzc2lvbihvcGVyYXRvciwgcHJl
ZGljYXRlLCBib2R5RXhwcmVzc2lvbiwgZWxzZUV4cHJlc3Npb24pOwogICAgIH0KLSAgICAKKwog
ICAgIGZ1bmN0aW9uIHBhcnNlUG9zc2libGVBc3NpZ25tZW50KG1vZGUpCiAgICAgewogICAgICAg
ICBsZXQgbGhzID0gcGFyc2VQb3NzaWJsZVRlcm5hcnlDb25kaXRpb25hbCgpOworICAgICAgICBp
ZiAobGhzIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGxoczsK
ICAgICAgICAgbGV0IG9wZXJhdG9yID0gdHJ5Q29uc3VtZSgiPSIsICIrPSIsICItPSIsICIqPSIs
ICIvPSIsICIlPSIsICJePSIsICJ8PSIsICImPSIpOwogICAgICAgICBpZiAoIW9wZXJhdG9yKSB7
CiAgICAgICAgICAgICBpZiAobW9kZSA9PSAicmVxdWlyZWQiKQotICAgICAgICAgICAgICAgIGxl
eGVyLmZhaWwoIkV4cGVjdGVkIGFzc2lnbm1lbnQ6ICIgKyBsZXhlci5fdGV4dC5zdWJzdHJpbmco
bGV4ZXIuX2luZGV4KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhaWwoIkV4cGVjdGVkIGFz
c2lnbm1lbnQ6ICIgKyBsZXhlci5fdGV4dC5zdWJzdHJpbmcobGV4ZXIuX2luZGV4KSk7CiAgICAg
ICAgICAgICByZXR1cm4gbGhzOwogICAgICAgICB9Ci0gICAgICAgIGlmIChvcGVyYXRvci50ZXh0
ID09ICI9IikKLSAgICAgICAgICAgIHJldHVybiBuZXcgQXNzaWdubWVudChvcGVyYXRvciwgbGhz
LCBwYXJzZVBvc3NpYmxlQXNzaWdubWVudCgpKTsKLSAgICAgICAgcmV0dXJuIGZpbmlzaFBhcnNp
bmdQcmVJbmNyZW1lbnQob3BlcmF0b3IsIGxocywgcGFyc2VQb3NzaWJsZUFzc2lnbm1lbnQoKSk7
CisgICAgICAgIGlmIChvcGVyYXRvci50ZXh0ID09ICI9IikgeworICAgICAgICAgICAgbGV0IGlu
bmVyQXNzaWdubWVudCA9IHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCk7CisgICAgICAgICAgICBp
ZiAoaW5uZXJBc3NpZ25tZW50IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
ICAgIHJldHVybiBpbm5lckFzc2lnbm1lbnQ7CisgICAgICAgICAgICByZXR1cm4gbmV3IEFzc2ln
bm1lbnQob3BlcmF0b3IsIGxocywgaW5uZXJBc3NpZ25tZW50KTsKKyAgICAgICAgfQorICAgICAg
ICBsZXQgaW5uZXJBc3NpZ25tZW50ID0gcGFyc2VQb3NzaWJsZUFzc2lnbm1lbnQoKTsKKyAgICAg
ICAgaWYgKGlubmVyQXNzaWdubWVudCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgIHJldHVybiBpbm5lckFzc2lnbm1lbnQ7CisgICAgICAgIHJldHVybiBmaW5pc2hQYXJzaW5n
UHJlSW5jcmVtZW50KG9wZXJhdG9yLCBsaHMsIGlubmVyQXNzaWdubWVudCk7CiAgICAgfQotICAg
IAorCiAgICAgZnVuY3Rpb24gcGFyc2VBc3NpZ25tZW50KCkKICAgICB7CiAgICAgICAgIHJldHVy
biBwYXJzZVBvc3NpYmxlQXNzaWdubWVudCgicmVxdWlyZWQiKTsKICAgICB9Ci0gICAgCisKICAg
ICBmdW5jdGlvbiBwYXJzZVBvc3RJbmNyZW1lbnQoKQogICAgIHsKLSAgICAgICAgbGV0IGxlZnQg
PSBwYXJzZVN1ZmZpeE9wZXJhdG9yKHBhcnNlVGVybSgpLCAiLiIsICItPiIsICJbIik7CisgICAg
ICAgIGxldCB0ZXJtID0gcGFyc2VUZXJtKCk7CisgICAgICAgIGlmICh0ZXJtIGluc3RhbmNlb2Yg
V1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRlcm07CisgICAgICAgIGxldCBsZWZ0
ID0gcGFyc2VTdWZmaXhPcGVyYXRvcih0ZXJtLCAiLiIsICItPiIsICJbIik7CisgICAgICAgIGlm
IChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGxlZnQ7
CiAgICAgICAgIGxldCB0b2tlbiA9IGNvbnN1bWUoIisrIiwgIi0tIik7CisgICAgICAgIGlmICh0
b2tlbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB0b2tlbjsK
ICAgICAgICAgcmV0dXJuIGZpbmlzaFBhcnNpbmdQb3N0SW5jcmVtZW50KHRva2VuLCBsZWZ0KTsK
ICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUVmZmVjdGZ1bEV4cHJlc3Npb24oKQog
ICAgIHsKICAgICAgICAgaWYgKGlzQ2FsbEV4cHJlc3Npb24oKSkKICAgICAgICAgICAgIHJldHVy
biBwYXJzZUNhbGxFeHByZXNzaW9uKCk7Ci0gICAgICAgIGxldCBwcmVJbmNyZW1lbnQgPSBsZXhl
ci5iYWNrdHJhY2tpbmdTY29wZShwYXJzZVByZUluY3JlbWVudCk7CisgICAgICAgIGxldCBwcmVJ
bmNyZW1lbnQgPSBiYWNrdHJhY2tpbmdTY29wZShwYXJzZVByZUluY3JlbWVudCk7CiAgICAgICAg
IGlmIChwcmVJbmNyZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gcHJlSW5jcmVtZW50OwotICAg
ICAgICBsZXQgcG9zdEluY3JlbWVudCA9IGxleGVyLmJhY2t0cmFja2luZ1Njb3BlKHBhcnNlUG9z
dEluY3JlbWVudCk7CisgICAgICAgIGxldCBwb3N0SW5jcmVtZW50ID0gYmFja3RyYWNraW5nU2Nv
cGUocGFyc2VQb3N0SW5jcmVtZW50KTsKICAgICAgICAgaWYgKHBvc3RJbmNyZW1lbnQpCiAgICAg
ICAgICAgICByZXR1cm4gcG9zdEluY3JlbWVudDsKICAgICAgICAgcmV0dXJuIHBhcnNlQXNzaWdu
bWVudCgpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIGdlbmVyaWNQYXJzZUNvbW1hRXhw
cmVzc2lvbihmaW5hbEV4cHJlc3Npb25QYXJzZXIpCiAgICAgewogICAgICAgICBsZXQgbGlzdCA9
IFtdOwogICAgICAgICBsZXQgb3JpZ2luID0gbGV4ZXIucGVlaygpOwogICAgICAgICBpZiAoIW9y
aWdpbikKLSAgICAgICAgICAgIGxleGVyLmZhaWwoIlVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWlsKCJVbmV4cGVjdGVkIGVuZCBvZiBmaWxlIik7CiAgICAg
ICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgIGxldCBlZmZlY3RmdWxFeHByZXNzaW9uID0gbGV4
ZXIuYmFja3RyYWNraW5nU2NvcGUoKCkgPT4gewotICAgICAgICAgICAgICAgIHBhcnNlRWZmZWN0
ZnVsRXhwcmVzc2lvbigpOwotICAgICAgICAgICAgICAgIGNvbnN1bWUoIiwiKTsKKyAgICAgICAg
ICAgIGxldCBlZmZlY3RmdWxFeHByZXNzaW9uID0gYmFja3RyYWNraW5nU2NvcGUoKCkgPT4gewor
ICAgICAgICAgICAgICAgIGxldCBlZmZlY3RmdWxFeHByZXNzaW9uID0gcGFyc2VFZmZlY3RmdWxF
eHByZXNzaW9uKCk7CisgICAgICAgICAgICAgICAgaWYgKGVmZmVjdGZ1bEV4cHJlc3Npb24gaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlZmZlY3Rm
dWxFeHByZXNzaW9uOworICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgi
LCIpOworICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZWZmZWN0ZnVsRXhwcmVzc2lvbjsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgaWYgKCFlZmZlY3RmdWxFeHByZXNzaW9uKSB7CiAgICAgICAgICAgICAgICAgbGV0IGZp
bmFsID0gZmluYWxFeHByZXNzaW9uUGFyc2VyKCk7CkBAIC01OTgsODkgKzc2NywxNDEgQEAgZnVu
Y3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0
LCB0ZXh0KQogICAgICAgICAgICAgcmV0dXJuIGxpc3RbMF07CiAgICAgICAgIHJldHVybiBuZXcg
Q29tbWFFeHByZXNzaW9uKG9yaWdpbiwgbGlzdCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rp
b24gcGFyc2VDb21tYUV4cHJlc3Npb24oKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdlbmVyaWNQ
YXJzZUNvbW1hRXhwcmVzc2lvbihwYXJzZVBvc3NpYmxlQXNzaWdubWVudCk7CiAgICAgfQotICAg
IAorCiAgICAgZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9uKCkKICAgICB7CiAgICAgICAgIHJldHVy
biBwYXJzZUNvbW1hRXhwcmVzc2lvbigpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBh
cnNlRWZmZWN0ZnVsU3RhdGVtZW50KCkKICAgICB7CiAgICAgICAgIGxldCByZXN1bHQgPSBnZW5l
cmljUGFyc2VDb21tYUV4cHJlc3Npb24ocGFyc2VFZmZlY3RmdWxFeHByZXNzaW9uKTsKLSAgICAg
ICAgY29uc3VtZSgiOyIpOworICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgbGV0IG1heWJlRXJyb3Ig
PSBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VSZXR1cm4oKQogICAgIHsK
ICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoInJldHVybiIpOworICAgICAgICBpZiAob3Jp
Z2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsK
ICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjsiKSkKICAgICAgICAgICAgIHJldHVybiBuZXcgUmV0
dXJuKG9yaWdpbiwgbnVsbCk7CiAgICAgICAgIGxldCBleHByZXNzaW9uID0gcGFyc2VFeHByZXNz
aW9uKCk7Ci0gICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKGV4cHJlc3Npb24gaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gZXhwcmVzc2lvbjsKKyAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CiAgICAgICAgIHJldHVybiBuZXcgUmV0dXJuKG9yaWdpbiwgZXhwcmVzc2lvbik7CiAgICAg
fQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VCcmVhaygpCiAgICAgewogICAgICAgICBsZXQg
b3JpZ2luID0gY29uc3VtZSgiYnJlYWsiKTsKLSAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAg
ICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAg
IGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBuZXcgQnJlYWsob3JpZ2luKTsKICAgICB9
Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUNvbnRpbnVlKCkKICAgICB7CiAgICAgICAgIGxl
dCBvcmlnaW4gPSBjb25zdW1lKCJjb250aW51ZSIpOwotICAgICAgICBjb25zdW1lKCI7Iik7Cisg
ICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBDb250aW51ZShvcmlnaW4p
OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlSWZTdGF0ZW1lbnQoKQogICAgIHsKICAgICAg
ICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoImlmIik7Ci0gICAgICAgIGNvbnN1bWUoIigiKTsKKyAg
ICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJl
dHVybiBvcmlnaW47CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAg
ICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgY29uZGl0aW9uYWwgPSBwYXJzZUV4cHJl
c3Npb24oKTsKLSAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBpZiAoY29uZGl0aW9uYWwg
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uYWw7
CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgaWYgKGJv
ZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gYm9keTsKICAg
ICAgICAgbGV0IGVsc2VCb2R5OwotICAgICAgICBpZiAodHJ5Q29uc3VtZSgiZWxzZSIpKQorICAg
ICAgICBpZiAodHJ5Q29uc3VtZSgiZWxzZSIpKSB7CiAgICAgICAgICAgICBlbHNlQm9keSA9IHBh
cnNlU3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAoZWxzZUJvZHkgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGVsc2VCb2R5OworICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBuZXcgSWZTdGF0ZW1lbnQob3JpZ2luLCBuZXcgQ2FsbEV4cHJlc3Npb24o
Y29uZGl0aW9uYWwub3JpZ2luLCAiYm9vbCIsIFtjb25kaXRpb25hbF0pLCBib2R5LCBlbHNlQm9k
eSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VXaGlsZSgpCiAgICAgewogICAgICAgICBs
ZXQgb3JpZ2luID0gY29uc3VtZSgid2hpbGUiKTsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAg
ICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAg
ICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBjb25kaXRpb25hbCA9IHBhcnNlRXhwcmVz
c2lvbigpOwotICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChjb25kaXRpb25hbCBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBjb25kaXRpb25hbDsK
KyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKICAgICAgICAgbGV0IGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICBpZiAoYm9k
eSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5OwogICAg
ICAgICByZXR1cm4gbmV3IFdoaWxlTG9vcChvcmlnaW4sIG5ldyBDYWxsRXhwcmVzc2lvbihjb25k
aXRpb25hbC5vcmlnaW4sICJib29sIiwgW2NvbmRpdGlvbmFsXSksIGJvZHkpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHBhcnNlRm9yKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25z
dW1lKCJmb3IiKTsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAob3JpZ2luIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAg
ICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CiAgICAgICAgIGxldCBpbml0aWFsaXphdGlvbjsKICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjsi
KSkKICAgICAgICAgICAgIGluaXRpYWxpemF0aW9uID0gdW5kZWZpbmVkOwogICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIGluaXRpYWxpemF0aW9uID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUo
cGFyc2VWYXJpYWJsZURlY2xzKTsKLSAgICAgICAgICAgIGlmICghaW5pdGlhbGl6YXRpb24pCisg
ICAgICAgICAgICBpbml0aWFsaXphdGlvbiA9IGJhY2t0cmFja2luZ1Njb3BlKHBhcnNlVmFyaWFi
bGVEZWNscyk7CisgICAgICAgICAgICBpZiAoIWluaXRpYWxpemF0aW9uKSB7CiAgICAgICAgICAg
ICAgICAgaW5pdGlhbGl6YXRpb24gPSBwYXJzZUVmZmVjdGZ1bFN0YXRlbWVudCgpOworICAgICAg
ICAgICAgICAgIGlmIChpbml0aWFsaXphdGlvbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGluaXRpYWxpemF0aW9uOworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgICAgIGxldCBjb25kaXRpb24gPSB0cnlDb25zdW1lKCI7Iik7CiAgICAg
ICAgIGlmIChjb25kaXRpb24pCiAgICAgICAgICAgICBjb25kaXRpb24gPSB1bmRlZmluZWQ7CiAg
ICAgICAgIGVsc2UgewogICAgICAgICAgICAgY29uZGl0aW9uID0gcGFyc2VFeHByZXNzaW9uKCk7
Ci0gICAgICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgICAgICBpZiAoY29uZGl0aW9uIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBjb25kaXRpb247
CisgICAgICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOworICAgICAgICAgICAgaWYg
KG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICBjb25kaXRpb24gPSBuZXcgQ2FsbEV4cHJlc3Np
b24oY29uZGl0aW9uLm9yaWdpbiwgImJvb2wiLCBbY29uZGl0aW9uXSk7CiAgICAgICAgIH0KICAg
ICAgICAgbGV0IGluY3JlbWVudDsKQEAgLTY4OCw1OSArOTA5LDExMSBAQCBmdW5jdGlvbiBwYXJz
ZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgICAgICAgICBpbmNyZW1lbnQgPSB1bmRlZmluZWQ7CiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgaW5jcmVtZW50ID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICBjb25zdW1l
KCIpIik7CisgICAgICAgICAgICBpZiAoaW5jcmVtZW50IGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgICAgIHJldHVybiBpbmNyZW1lbnQ7CisgICAgICAgICAgICBtYXliZUVy
cm9yID0gY29uc3VtZSgiKSIpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAg
ICAgIH0KICAgICAgICAgbGV0IGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICBpZiAo
Ym9keSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5Owog
ICAgICAgICByZXR1cm4gbmV3IEZvckxvb3Aob3JpZ2luLCBpbml0aWFsaXphdGlvbiwgY29uZGl0
aW9uLCBpbmNyZW1lbnQsIGJvZHkpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlRG8oKQog
ICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoImRvIik7CisgICAgICAgIGlmIChv
cmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2lu
OwogICAgICAgICBsZXQgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7Ci0gICAgICAgIGNvbnN1bWUo
IndoaWxlIik7Ci0gICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKGJvZHkgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gYm9keTsKKyAgICAgICAgbGV0
IG1heWJlRXJyb3IgPSBjb25zdW1lKCJ3aGlsZSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwor
ICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICBpZiAobWF5YmVFcnJv
ciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9y
OwogICAgICAgICBsZXQgY29uZGl0aW9uYWwgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAg
Y29uc3VtZSgiKSIpOworICAgICAgICBpZiAoY29uZGl0aW9uYWwgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gY29uZGl0aW9uYWw7CisgICAgICAgIG1heWJlRXJy
b3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVy
biBuZXcgRG9XaGlsZUxvb3Aob3JpZ2luLCBib2R5LCBuZXcgQ2FsbEV4cHJlc3Npb24oY29uZGl0
aW9uYWwub3JpZ2luLCAiYm9vbCIsIFtjb25kaXRpb25hbF0pKTsKICAgICB9Ci0gICAgCisKICAg
ICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbHMoKQogICAgIHsKICAgICAgICAgbGV0IHR5cGUg
PSBwYXJzZVR5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gdHlwZTsKICAgICAgICAgbGV0IGxpc3QgPSBbXTsKICAgICAg
ICAgZG8gewogICAgICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIp
OworICAgICAgICAgICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgICAgICAgICBsZXQgaW5pdGlhbGl6ZXIgPSB0cnlD
b25zdW1lKCI9IikgPyBwYXJzZUV4cHJlc3Npb24oKSA6IG51bGw7CisgICAgICAgICAgICBpZiAo
aW5pdGlhbGl6ZXIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGluaXRpYWxpemVyOwogICAgICAgICAgICAgbGlzdC5wdXNoKG5ldyBWYXJpYWJsZURlY2wo
bmFtZSwgbmFtZS50ZXh0LCB0eXBlLCBpbml0aWFsaXplcikpOwotICAgICAgICB9IHdoaWxlIChj
b25zdW1lKCIsIiwgIjsiKS50ZXh0ID09ICIsIik7CisgICAgICAgICAgICBsZXQgbWF5YmVFcnJv
ciA9IGNvbnN1bWUoIiwiLCAiOyIpOworICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7Cisg
ICAgICAgICAgICBpZiAobWF5YmVFcnJvci50ZXh0ICE9ICIsIikKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfSB3aGlsZSAodHJ1ZSk7CiAgICAgICAgIHJldHVybiBuZXcgQ29tbWFF
eHByZXNzaW9uKHR5cGUub3JpZ2luLCBsaXN0KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlv
biBwYXJzZVN3aXRjaENhc2UoKQogICAgIHsKICAgICAgICAgbGV0IHRva2VuID0gY29uc3VtZSgi
ZGVmYXVsdCIsICJjYXNlIik7CisgICAgICAgIGlmICh0b2tlbiBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgbGV0IHZhbHVlOwotICAg
ICAgICBpZiAodG9rZW4udGV4dCA9PSAiY2FzZSIpCisgICAgICAgIGlmICh0b2tlbi50ZXh0ID09
ICJjYXNlIikgewogICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUNvbnN0ZXhwcigpOwotICAgICAg
ICBjb25zdW1lKCI6Iik7CisgICAgICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisgICAgICAg
IGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOiIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwog
ICAgICAgICBsZXQgYm9keSA9IHBhcnNlQmxvY2tCb2R5KCJ9IiwgImRlZmF1bHQiLCAiY2FzZSIp
OworICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBib2R5OwogICAgICAgICByZXR1cm4gbmV3IFN3aXRjaENhc2UodG9rZW4sIHZhbHVl
LCBib2R5KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVN3aXRjaFN0YXRlbWVu
dCgpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgic3dpdGNoIik7Ci0gICAg
ICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CisgICAgICAgIGxldCBtYXliZUVycm9y
ID0gY29uc3VtZSgiKCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgdmFs
dWUgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgY29uc3VtZSgiKSIpOwotICAgICAgICBj
b25zdW1lKCJ7Iik7CisgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUo
IikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1
bWUoInsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IHJlc3VsdCA9IG5l
dyBTd2l0Y2hTdGF0ZW1lbnQob3JpZ2luLCB2YWx1ZSk7Ci0gICAgICAgIHdoaWxlICghdHJ5Q29u
c3VtZSgifSIpKQotICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZVN3aXRjaENhc2UoKSk7Cisg
ICAgICAgIHdoaWxlICghdHJ5Q29uc3VtZSgifSIpKSB7CisgICAgICAgICAgICBsZXQgc3dpdGNo
Q2FzZSA9IHBhcnNlU3dpdGNoQ2FzZSgpOworICAgICAgICAgICAgaWYgKHN3aXRjaENhc2UgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN3aXRjaENhc2U7
CisgICAgICAgICAgICByZXN1bHQuYWRkKHN3aXRjaENhc2UpOworICAgICAgICB9CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VTdGF0ZW1l
bnQoKQogICAgIHsKICAgICAgICAgbGV0IHRva2VuID0gbGV4ZXIucGVlaygpOwpAQCAtNzY2LDc3
ICsxMDM5LDEwOSBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQs
IGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VTd2l0Y2hT
dGF0ZW1lbnQoKTsKICAgICAgICAgaWYgKHRva2VuLnRleHQgPT0gInRyYXAiKSB7CiAgICAgICAg
ICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgidHJhcCIpOworICAgICAgICAgICAgaWYgKG9yaWdp
biBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gb3JpZ2lu
OwogICAgICAgICAgICAgY29uc3VtZSgiOyIpOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBUcmFw
U3RhdGVtZW50KG9yaWdpbik7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2VuLnRleHQgPT0g
InsiKQogICAgICAgICAgICAgcmV0dXJuIHBhcnNlQmxvY2soKTsKLSAgICAgICAgbGV0IHZhcmlh
YmxlRGVjbCA9IGxleGVyLmJhY2t0cmFja2luZ1Njb3BlKHBhcnNlVmFyaWFibGVEZWNscyk7Cisg
ICAgICAgIGxldCB2YXJpYWJsZURlY2wgPSBiYWNrdHJhY2tpbmdTY29wZShwYXJzZVZhcmlhYmxl
RGVjbHMpOwogICAgICAgICBpZiAodmFyaWFibGVEZWNsKQogICAgICAgICAgICAgcmV0dXJuIHZh
cmlhYmxlRGVjbDsKICAgICAgICAgcmV0dXJuIHBhcnNlRWZmZWN0ZnVsU3RhdGVtZW50KCk7CiAg
ICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VCbG9ja0JvZHkoLi4udGVybWluYXRvcnMp
CiAgICAgewogICAgICAgICBsZXQgYmxvY2sgPSBuZXcgQmxvY2sob3JpZ2luKTsKICAgICAgICAg
d2hpbGUgKCF0ZXN0KC4uLnRlcm1pbmF0b3JzKSkgewogICAgICAgICAgICAgbGV0IHN0YXRlbWVu
dCA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAgICAgICBpZiAoc3RhdGVtZW50IGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0ZW1lbnQ7CiAgICAg
ICAgICAgICBpZiAoc3RhdGVtZW50KQogICAgICAgICAgICAgICAgIGJsb2NrLmFkZChzdGF0ZW1l
bnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBibG9jazsKICAgICB9Ci0gICAgCisKICAg
ICBmdW5jdGlvbiBwYXJzZUJsb2NrKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25z
dW1lKCJ7Iik7CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICByZXR1cm4gb3JpZ2luOwogICAgICAgICBsZXQgYmxvY2sgPSBwYXJzZUJsb2Nr
Qm9keSgifSIpOwotICAgICAgICBjb25zdW1lKCJ9Iik7CisgICAgICAgIGlmIChibG9jayBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBibG9jazsKKyAgICAgICAg
bGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJ9Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAg
ICAgICAgIHJldHVybiBibG9jazsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBh
cmFtZXRlcigpCiAgICAgewogICAgICAgICBsZXQgdHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAg
ICBpZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB0
eXBlOwogICAgICAgICBsZXQgbmFtZSA9IHRyeUNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CiAg
ICAgICAgIHJldHVybiBuZXcgRnVuY1BhcmFtZXRlcih0eXBlLm9yaWdpbiwgbmFtZSA/IG5hbWUu
dGV4dCA6IG51bGwsIHR5cGUpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUGFy
YW1ldGVycygpCiAgICAgewotICAgICAgICBjb25zdW1lKCIoIik7CisgICAgICAgIGxldCBtYXli
ZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBs
ZXQgcGFyYW1ldGVycyA9IFtdOwogICAgICAgICB3aGlsZSAoIXRlc3QoIikiKSkgewotICAgICAg
ICAgICAgcGFyYW1ldGVycy5wdXNoKHBhcnNlUGFyYW1ldGVyKCkpOworICAgICAgICAgICAgbGV0
IHBhcmFtZXRlciA9IHBhcnNlUGFyYW1ldGVyKCk7CisgICAgICAgICAgICBpZiAocGFyYW1ldGVy
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBwYXJhbWV0
ZXI7CisgICAgICAgICAgICBwYXJhbWV0ZXJzLnB1c2gocGFyYW1ldGVyKTsKICAgICAgICAgICAg
IGlmICghdHJ5Q29uc3VtZSgiLCIpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
Ci0gICAgICAgIGNvbnN1bWUoIikiKTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIiki
KTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiAg
ICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VGdW5jTmFtZSgpCiAgICAgewogICAgICAg
ICBpZiAodHJ5Q29uc3VtZSgib3BlcmF0b3IiKSkgewogICAgICAgICAgICAgbGV0IHRva2VuID0g
Y29uc3VtZSgiKyIsICItIiwgIioiLCAiLyIsICIlIiwgIl4iLCAiJiIsICJ8IiwgIjwiLCAiPiIs
ICI8PSIsICI+PSIsICI9PSIsICIrKyIsICItLSIsICIuIiwgIn4iLCAiPDwiLCAiPj4iLCAiWyIp
OworICAgICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICIm
IikgewogICAgICAgICAgICAgICAgIGlmICh0cnlDb25zdW1lKCJbIikpIHsKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3VtZSgiXSIpOworICAgICAgICAgICAgICAgICAgICBsZXQgbWF5YmVFcnJv
ciA9IGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5
YmVFcnJvcjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICJvcGVyYXRvciZbXSI7CiAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0cnlDb25zdW1lKCIuIikpCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3ImLiIgKyBjb25zdW1lS2luZCgiaWRlbnRp
ZmllciIpLnRleHQ7CisgICAgICAgICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIi4iKSkgeworICAg
ICAgICAgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVy
Iik7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3ImLiIgKyBtYXliZUVycm9yLnRleHQ7Cisg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiAib3BlcmF0b3ImIjsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICIuIikgewotICAgICAg
ICAgICAgICAgIGxldCByZXN1bHQgPSAib3BlcmF0b3IuIiArIGNvbnN1bWVLaW5kKCJpZGVudGlm
aWVyIikudGV4dDsKKyAgICAgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWVLaW5k
KCJpZGVudGlmaWVyIik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwor
ICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSAib3BlcmF0b3IuIiArIG1heWJlRXJyb3IudGV4
dDsKICAgICAgICAgICAgICAgICBpZiAodHJ5Q29uc3VtZSgiPSIpKQogICAgICAgICAgICAgICAg
ICAgICByZXN1bHQgKz0gIj0iOwogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAiWyIpIHsKLSAgICAgICAg
ICAgICAgICBjb25zdW1lKCJdIik7CisgICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBj
b25zdW1lKCJdIik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAg
ICAgICAgICAgICAgIGxldCByZXN1bHQgPSAib3BlcmF0b3JbXSI7CiAgICAgICAgICAgICAgICAg
aWYgKHRyeUNvbnN1bWUoIj0iKSkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICI9IjsK
QEAgLTg0NCw3ICsxMTQ5LDEwIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3Jp
Z2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIHJldHVybiAib3BlcmF0b3IiICsgdG9rZW4udGV4dDsKICAgICAgICAgfQotICAgICAgICBy
ZXR1cm4gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50ZXh0OworICAgICAgICBsZXQgbWF5YmVF
cnJvciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CisgICAgICAgIHJldHVybiBtYXliZUVycm9yLnRleHQ7CiAgICAgfQogCiAgICAgZnVuY3Rpb24g
cGFyc2VGdW5jRGVjbCgpCkBAIC04NTgsMTI3ICsxMTY2LDIxMSBAQCBmdW5jdGlvbiBwYXJzZShw
cm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAg
ICAgIGlmIChvcGVyYXRvclRva2VuKSB7CiAgICAgICAgICAgICBvcmlnaW4gPSBvcGVyYXRvclRv
a2VuOwogICAgICAgICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICAgICAg
aWYgKHJldHVyblR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHJldHVyblR5cGU7CiAgICAgICAgICAgICBuYW1lID0gIm9wZXJhdG9yIGNhc3QiOwog
ICAgICAgICAgICAgaXNDYXN0ID0gdHJ1ZTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IHNoYWRlclR5cGUgPSB0cnlDb25zdW1lKCJ2ZXJ0ZXgiLCAiZnJhZ21lbnQiKTsKICAgICAgICAg
ICAgIHJldHVyblR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAgICAgIGlmIChyZXR1cm5UeXBl
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiByZXR1cm5U
eXBlOwogICAgICAgICAgICAgaWYgKHNoYWRlclR5cGUpIHsKICAgICAgICAgICAgICAgICBvcmln
aW4gPSBzaGFkZXJUeXBlOwogICAgICAgICAgICAgICAgIHNoYWRlclR5cGUgPSBzaGFkZXJUeXBl
LnRleHQ7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBvcmlnaW4gPSByZXR1
cm5UeXBlLm9yaWdpbjsKICAgICAgICAgICAgIG5hbWUgPSBwYXJzZUZ1bmNOYW1lKCk7CisgICAg
ICAgICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbmFtZTsKICAgICAgICAgICAgIGlzQ2FzdCA9IGZhbHNlOwogICAgICAgICB9CiAg
ICAgICAgIGxldCBwYXJhbWV0ZXJzID0gcGFyc2VQYXJhbWV0ZXJzKCk7CisgICAgICAgIGlmIChw
YXJhbWV0ZXJzIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHBh
cmFtZXRlcnM7CiAgICAgICAgIHJldHVybiBuZXcgRnVuYyhvcmlnaW4sIG5hbWUsIHJldHVyblR5
cGUsIHBhcmFtZXRlcnMsIGlzQ2FzdCwgc2hhZGVyVHlwZSk7CiAgICAgfQotICAgIAorCiAgICAg
ZnVuY3Rpb24gcGFyc2VGdW5jRGVmKCkKICAgICB7CiAgICAgICAgIGxldCBmdW5jID0gcGFyc2VG
dW5jRGVjbCgpOworICAgICAgICBpZiAoZnVuYyBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgIHJldHVybiBmdW5jOwogICAgICAgICBsZXQgYm9keSA9IHBhcnNlQmxvY2soKTsK
KyAgICAgICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gYm9keTsKICAgICAgICAgcmV0dXJuIG5ldyBGdW5jRGVmKGZ1bmMub3JpZ2luLCBmdW5j
Lm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBib2R5LCBmdW5jLmlzQ2Fz
dCwgZnVuYy5zaGFkZXJUeXBlKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUZp
ZWxkKCkKICAgICB7CiAgICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7CisgICAgICAgIGlm
ICh0eXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHR5cGU7
CiAgICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKLSAgICAgICAg
Y29uc3VtZSgiOyIpOworICAgICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBuYW1lOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBGaWVs
ZChuYW1lLCBuYW1lLnRleHQsIHR5cGUpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBh
cnNlU3RydWN0VHlwZSgpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgic3Ry
dWN0Iik7Ci0gICAgICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50ZXh0
OwotICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFN0cnVjdFR5cGUob3JpZ2luLCBuYW1lKTsKLSAg
ICAgICAgY29uc3VtZSgieyIpOwotICAgICAgICB3aGlsZSAoIXRyeUNvbnN1bWUoIn0iKSkKLSAg
ICAgICAgICAgIHJlc3VsdC5hZGQocGFyc2VGaWVsZCgpKTsKKyAgICAgICAgaWYgKG9yaWdpbiBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CisgICAg
ICAgIGxldCBuYW1lID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgaWYgKG5h
bWUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmFtZTsKKyAg
ICAgICAgbGV0IHJlc3VsdCA9IG5ldyBTdHJ1Y3RUeXBlKG9yaWdpbiwgbmFtZS50ZXh0KTsKKyAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJ7Iik7CisgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CisgICAgICAgIHdoaWxlICghdHJ5Q29uc3VtZSgifSIpKSB7CisgICAgICAgICAgICBsZXQg
ZmllbGQgPSBwYXJzZUZpZWxkKCk7CisgICAgICAgICAgICBpZiAoZmllbGQgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkOworICAgICAgICAgICAg
cmVzdWx0LmFkZChmaWVsZCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZU5hdGl2ZUZ1bmMoKQogICAgIHsKICAgICAg
ICAgbGV0IGZ1bmMgPSBwYXJzZUZ1bmNEZWNsKCk7Ci0gICAgICAgIGNvbnN1bWUoIjsiKTsKKyAg
ICAgICAgaWYgKGZ1bmMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1
cm4gZnVuYzsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAg
IGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0
dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlRnVuYyhmdW5jLm9yaWdp
biwgZnVuYy5uYW1lLCBmdW5jLnJldHVyblR5cGUsIGZ1bmMucGFyYW1ldGVycywgZnVuYy5pc0Nh
c3QsIGZ1bmMuc2hhZGVyVHlwZSk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VO
YXRpdmUoKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNvbnN1bWUoIm5hdGl2ZSIpOwor
ICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIG9yaWdpbjsKICAgICAgICAgaWYgKHRyeUNvbnN1bWUoInR5cGVkZWYiKSkgewogICAg
ICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICAg
ICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0
dXJuIG5hbWU7CiAgICAgICAgICAgICBsZXQgYXJncyA9IHBhcnNlVHlwZUFyZ3VtZW50cygpOwot
ICAgICAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICAgICAgaWYgKGFyZ3MgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3M7CisgICAgICAgICAg
ICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXli
ZUVycm9yOwogICAgICAgICAgICAgcmV0dXJuIE5hdGl2ZVR5cGUuY3JlYXRlKG9yaWdpbiwgbmFt
ZS50ZXh0LCBhcmdzKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gcGFyc2VOYXRpdmVGdW5j
KCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VSZXN0cmljdGVkRnVuY0RlZigp
CiAgICAgewotICAgICAgICBjb25zdW1lKCJyZXN0cmljdGVkIik7CisgICAgICAgIGxldCBtYXli
ZUVycm9yID0gY29uc3VtZSgicmVzdHJpY3RlZCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwog
ICAgICAgICBsZXQgcmVzdWx0OwotICAgICAgICBpZiAodHJ5Q29uc3VtZSgibmF0aXZlIikpCisg
ICAgICAgIGlmICh0cnlDb25zdW1lKCJuYXRpdmUiKSkgewogICAgICAgICAgICAgcmVzdWx0ID0g
cGFyc2VOYXRpdmVGdW5jKCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChyZXN1bHQg
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHJlc3VsdCA9IHBhcnNlRnVuY0RlZigpOwor
ICAgICAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CiAgICAgICAgIHJlc3VsdC5pc1Jlc3Ry
aWN0ZWQgPSB0cnVlOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICAKKwogICAg
IGZ1bmN0aW9uIHBhcnNlRW51bU1lbWJlcigpCiAgICAgewogICAgICAgICBsZXQgbmFtZSA9IGNv
bnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgICAgIGxldCB2YWx1ZSA9
IG51bGw7Ci0gICAgICAgIGlmICh0cnlDb25zdW1lKCI9IikpCisgICAgICAgIGlmICh0cnlDb25z
dW1lKCI9IikpIHsKICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VDb25zdGV4cHIoKTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG5ldyBFbnVtTWVtYmVy
KG5hbWUsIG5hbWUudGV4dCwgdmFsdWUpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBh
cnNlRW51bVR5cGUoKQogICAgIHsKLSAgICAgICAgY29uc3VtZSgiZW51bSIpOworICAgICAgICBs
ZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoImVudW0iKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
ICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICBp
ZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuYW1l
OwogICAgICAgICBsZXQgYmFzZVR5cGU7Ci0gICAgICAgIGlmICh0cnlDb25zdW1lKCI6IikpCisg
ICAgICAgIGlmICh0cnlDb25zdW1lKCI6IikpIHsKICAgICAgICAgICAgIGJhc2VUeXBlID0gcGFy
c2VUeXBlKCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChiYXNlVHlwZSBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZVR5cGU7CisgICAg
ICAgIH0gZWxzZQogICAgICAgICAgICAgYmFzZVR5cGUgPSBuZXcgVHlwZVJlZihuYW1lLCAiaW50
Iik7Ci0gICAgICAgIGNvbnN1bWUoInsiKTsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUo
InsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisg
ICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IHJlc3VsdCA9IG5ldyBF
bnVtVHlwZShuYW1lLCBuYW1lLnRleHQsIGJhc2VUeXBlKTsKICAgICAgICAgd2hpbGUgKCF0ZXN0
KCJ9IikpIHsKLSAgICAgICAgICAgIHJlc3VsdC5hZGQocGFyc2VFbnVtTWVtYmVyKCkpOworICAg
ICAgICAgICAgbGV0IGVudW1NZW1iZXIgPSBwYXJzZUVudW1NZW1iZXIoKTsKKyAgICAgICAgICAg
IGlmIChlbnVtTWVtYmVyIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAg
IHJldHVybiBlbnVtTWVtYmVyOworICAgICAgICAgICAgcmVzdWx0LmFkZChlbnVtTWVtYmVyKTsK
ICAgICAgICAgICAgIGlmICghdHJ5Q29uc3VtZSgiLCIpKQogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9Ci0gICAgICAgIGNvbnN1bWUoIn0iKTsKKyAgICAgICAgbWF5YmVFcnJvciA9
IGNvbnN1bWUoIn0iKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9Ci0gICAgCisKICAgICBmb3IgKDs7KSB7CiAgICAgICAgIGxldCB0b2tlbiA9
IGxleGVyLnBlZWsoKTsKICAgICAgICAgaWYgKCF0b2tlbikKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgaWYgKHRva2VuLnRleHQgPT0gIjsiKQogICAgICAgICAgICAgbGV4ZXIubmV4dCgp
OwotICAgICAgICBlbHNlIGlmICh0b2tlbi50ZXh0ID09ICJ0eXBlZGVmIikKLSAgICAgICAgICAg
IHByb2dyYW0uYWRkKHBhcnNlVHlwZURlZigpKTsKLSAgICAgICAgZWxzZSBpZiAob3JpZ2luS2lu
ZCA9PSAibmF0aXZlIiAmJiB0b2tlbi50ZXh0ID09ICJuYXRpdmUiKQotICAgICAgICAgICAgcHJv
Z3JhbS5hZGQocGFyc2VOYXRpdmUoKSk7Ci0gICAgICAgIGVsc2UgaWYgKG9yaWdpbktpbmQgPT0g
Im5hdGl2ZSIgJiYgdG9rZW4udGV4dCA9PSAicmVzdHJpY3RlZCIpCi0gICAgICAgICAgICBwcm9n
cmFtLmFkZChwYXJzZVJlc3RyaWN0ZWRGdW5jRGVmKCkpOwotICAgICAgICBlbHNlIGlmICh0b2tl
bi50ZXh0ID09ICJzdHJ1Y3QiKQotICAgICAgICAgICAgcHJvZ3JhbS5hZGQocGFyc2VTdHJ1Y3RU
eXBlKCkpOwotICAgICAgICBlbHNlIGlmICh0b2tlbi50ZXh0ID09ICJlbnVtIikKLSAgICAgICAg
ICAgIHByb2dyYW0uYWRkKHBhcnNlRW51bVR5cGUoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHByb2dyYW0uYWRkKHBhcnNlRnVuY0RlZigpKTsKKyAgICAgICAgZWxzZSBpZiAodG9rZW4u
dGV4dCA9PSAidHlwZWRlZiIpIHsKKyAgICAgICAgICAgIGxldCB0eXBlRGVmID0gcGFyc2VUeXBl
RGVmKCk7CisgICAgICAgICAgICBpZiAodHlwZURlZiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgICAgICB0aHJvdyB0eXBlRGVmOworICAgICAgICAgICAgcHJvZ3JhbS5hZGQo
dHlwZURlZik7CisgICAgICAgIH0gZWxzZSBpZiAob3JpZ2luS2luZCA9PSAibmF0aXZlIiAmJiB0
b2tlbi50ZXh0ID09ICJuYXRpdmUiKSB7CisgICAgICAgICAgICBsZXQgbmF0aXZlID0gcGFyc2VO
YXRpdmUoKTsKKyAgICAgICAgICAgIGlmIChuYXRpdmUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICAgICAgdGhyb3cgbmF0aXZlOworICAgICAgICAgICAgcHJvZ3JhbS5hZGQo
bmF0aXZlKTsKKyAgICAgICAgfSBlbHNlIGlmIChvcmlnaW5LaW5kID09ICJuYXRpdmUiICYmIHRv
a2VuLnRleHQgPT0gInJlc3RyaWN0ZWQiKSB7CisgICAgICAgICAgICBsZXQgcmVzdHJpY3RlZEZ1
bmNEZWYgPSBwYXJzZVJlc3RyaWN0ZWRGdW5jRGVmKCk7CisgICAgICAgICAgICBpZiAocmVzdHJp
Y3RlZEZ1bmNEZWYgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgdGhy
b3cgcmVzdHJpY3RlZEZ1bmNEZWY7CisgICAgICAgICAgICBwcm9ncmFtLmFkZChyZXN0cmljdGVk
RnVuY0RlZik7CisgICAgICAgIH0gZWxzZSBpZiAodG9rZW4udGV4dCA9PSAic3RydWN0Iikgewor
ICAgICAgICAgICAgbGV0IHN0cnVjdCA9IHBhcnNlU3RydWN0VHlwZSgpOworICAgICAgICAgICAg
aWYgKHN0cnVjdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICB0aHJv
dyBzdHJ1Y3Q7CisgICAgICAgICAgICBwcm9ncmFtLmFkZChzdHJ1Y3QpOworICAgICAgICB9IGVs
c2UgaWYgKHRva2VuLnRleHQgPT0gImVudW0iKSB7CisgICAgICAgICAgICBsZXQgZW51bVR5cGUg
PSBwYXJzZUVudW1UeXBlKCk7CisgICAgICAgICAgICBpZiAoZW51bVR5cGUgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgdGhyb3cgZW51bVR5cGU7CisgICAgICAgICAg
ICBwcm9ncmFtLmFkZChlbnVtVHlwZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBs
ZXQgZnVuY0RlZiA9IHBhcnNlRnVuY0RlZigpOworICAgICAgICAgICAgaWYgKGZ1bmNEZWYgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgdGhyb3cgZnVuY0RlZjsKKyAg
ICAgICAgICAgIHByb2dyYW0uYWRkKGZ1bmNEZWYpOworICAgICAgICB9CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sIGIvVG9v
bHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbAppbmRleCAxYjI2Y2YyYjJlNjUx
NTI3YTE1MmVlOGQ5MmZmMjViZWRhNjFkMzM5Li44MDRjZDlhYmRhNmQ1YzNiZWMwM2JlMjU4MmFh
M2YyM2YwMDdhMTg4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9T
UElSVi5odG1sCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwK
QEAgLTE1MSw2ICsxNTEsNyBAQCB0ZCB7CiAgICAgPHNjcmlwdCBzcmM9IlZhcmlhYmxlUmVmLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmVjdG9yVHlwZS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpc2l0aW5nU2V0LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iV0xleGljYWxFcnJvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IldTeW50YXhF
cnJvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IldUcmFwRXJyb3IuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJXVHlwZUVycm9yLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcyBiL1Rv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcwppbmRleCBmYjE3
NWUyNmEyN2E0NjU0OGVjOWMyYTU2M2QzODAzMmZmMWU0OWM0Li5jZjMwOTNiYmU4Y2YzN2IyOTNk
MzhhNzllNmU3NjkxMTZjNDQ5MzM4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCkBAIC03NzMsOCArNzczLDcgQEAgbGV0IHN0YW5kYXJk
TGlicmFyeSA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8qCisKICAgICAgICAgZm9y
IChsZXQgdHlwZSBvZiBbYGJvb2xgLCBgdWNoYXJgLCBgdXNob3J0YCwgYHVpbnRgLCBgY2hhcmAs
IGBzaG9ydGAsIGBpbnRgLCBgaGFsZmAsIGBmbG9hdGBdKSB7CiAgICAgICAgICAgICBmb3IgKGxl
dCBzaXplIG9mIFsyLCAzLCA0XSkgewogICAgICAgICAgICAgICAgIGZvciAobGV0IG1heFZhbHVl
IG9mIFsyLCAzLCA0XSkgewpAQCAtMTg4OSw3ICsxODg4LDcgQEAgbGV0IHN0YW5kYXJkTGlicmFy
eSA9IChmdW5jdGlvbigpIHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBwcmlu
dCgpOwotICAgICAgICAKKyAgICAgICAgLyoKICAgICAgICAgZm9yIChsZXQgdHlwZSBvZiBbYHVp
bnRgLCBgaW50YF0pIHsKICAgICAgICAgICAgIGZvciAobGV0IGZ1bmN0aW9uTmFtZSBvZiBbYEFk
ZGAsIGBBbmRgLCBgRXhjaGFuZ2VgLCBgTWF4YCwgYE1pbmAsIGBPcmAsIGBYb3JgXSkgewogICAg
ICAgICAgICAgICAgIHByaW50KGBuYXRpdmUgdm9pZCBJbnRlcmxvY2tlZCR7ZnVuY3Rpb25OYW1l
fSh0aHJlYWQgYXRvbWljXyR7dHlwZX0qLCAke3R5cGV9LCB0aHJlYWQgJHt0eXBlfSopO2ApOwpA
QCAtMTg5OCw3ICsxODk3LDYgQEAgbGV0IHN0YW5kYXJkTGlicmFyeSA9IChmdW5jdGlvbigpIHsK
ICAgICAgICAgfQogICAgICAgICBwcmludCgpOwogICAgICAgICAqLwotCiAgICAgICAgIGZvciAo
bGV0IHR5cGUgb2YgW2B1Y2hhcmAsIGB1c2hvcnRgLCBgdWludGAsIGBjaGFyYCwgYHNob3J0YCwg
YGludGAsIGBoYWxmYCwgYGZsb2F0YF0pIHsKICAgICAgICAgICAgIGZvciAobGV0IGxlbmd0aCBv
ZiBbYGAsIGAyYCwgYDNgLCBgNGBdKSB7CiAgICAgICAgICAgICAgICAgcHJpbnQoYG5hdGl2ZSAk
e3R5cGV9JHtsZW5ndGh9IFNhbXBsZShUZXh0dXJlMUQ8JHt0eXBlfSR7bGVuZ3RofT4sIHNhbXBs
ZXIsIGZsb2F0IGxvY2F0aW9uKTtgKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Rlc3QuaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3Qu
aHRtbAppbmRleCBmYjEwMTVmMTkzODFjZjZlYWM3MzE3YjQ4NWVmMDBjM2VjMWNiOTZlLi5mNWVh
M2Q5MDE5OGRjZGI4NzEzMWY5MmMyNTBjNzQzMzA0YjY2YWMwIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVGVzdC5odG1sCkBAIC0xNDUsNiArMTQ1LDcgQEAKIDxzY3JpcHQgc3JjPSJW
YXJpYWJsZVJlZi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVmVjdG9yVHlwZS5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iVmlzaXRpbmdTZXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9IldMZXhpY2FsRXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IldTeW50YXhFcnJv
ci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iV1RyYXBFcnJvci5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iV1R5cGVFcnJvci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVGVzdC5qcwppbmRleCA5MGQ1ZTVjY2Q1MGNmZjRhOTQyYjkxNzY2YjI3Mjg2OWYwOTQ0
YzY3Li41NTZjYjJmYjhiYjUxMDg3OTBjNWI0ZGE4ZmE2N2U0YzU0Y2FjNjY2IDEwMDY0NAotLS0g
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzCisrKyBiL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKQEAgLTMyOSwyMyArMzI5LDYgQEAgdGVzdHMgPSBu
ZXcgUHJveHkoe30sIHsKICAgICB9CiB9KTsKIAotdGVzdHMuY29tbWVudFBhcnNpbmcgPSBmdW5j
dGlvbigpIHsKLSAgICBsZXQgcHJvZ3JhbSA9IGRvUHJlcChgCi0gICAgICAgIC8qIHRoaXMgY29t
bWVudAotICAgICAgICBydW5zIG92ZXIgbXVsdGlwbGUgbGluZXMgKi8KLSAgICAgICAgYm9vbCBm
b28oKSB7IHJldHVybiB0cnVlOyB9Ci0gICAgYCk7Ci0gICAgY2hlY2tCb29sKHByb2dyYW0sIGNh
bGxGdW5jdGlvbihwcm9ncmFtLCAiZm9vIiwgW10pLCB0cnVlKTsKLQotICAgIGNoZWNrRmFpbCgK
LSAgICAgICAgKCkgPT4gZG9QcmVwKGAKLSAgICAgICAgLyogdGhpcyBjb21tZW50Ci0gICAgICAg
IHJ1bnMgb3ZlciBtdWx0aXBsZSBsaW5lcwotICAgICAgICBib29sIGZvbygpIHsgcmV0dXJuIHRy
dWU7IH0KLSAgICAgICAgYCksCi0gICAgICAgIChlKSA9PiBlIGluc3RhbmNlb2YgV1N5bnRheEVy
cm9yKTsKLX0KLQogdGVzdHMudGVybmFyeUV4cHJlc3Npb24gPSBmdW5jdGlvbigpIHsKICAgICBs
ZXQgcHJvZ3JhbSA9IGRvUHJlcChgCiAgICAgICAgIGludCBmb28oaW50IHgpCkBAIC03NjI2LDYg
Kzc2MDksMjMgQEAgdGVzdHMudGV4dHVyZUdhdGhlciA9IGZ1bmN0aW9uKCkgewogICAgIC8vIEZJ
WE1FOiBHYXRoZXIgb3RoZXIgY29tcG9uZW50cwogfQogCit0ZXN0cy5jb21tZW50UGFyc2luZyA9
IGZ1bmN0aW9uKCkgeworICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKKyAgICAgICAgLyogdGhp
cyBjb21tZW50CisgICAgICAgIHJ1bnMgb3ZlciBtdWx0aXBsZSBsaW5lcyAqLworICAgICAgICBi
b29sIGZvbygpIHsgcmV0dXJuIHRydWU7IH0KKyAgICBgKTsKKyAgICBjaGVja0Jvb2wocHJvZ3Jh
bSwgY2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRydWUpOworCisgICAgY2hlY2tG
YWlsKAorICAgICAgICAoKSA9PiBkb1ByZXAoYAorICAgICAgICAvKiB0aGlzIGNvbW1lbnQKKyAg
ICAgICAgcnVucyBvdmVyIG11bHRpcGxlIGxpbmVzCisgICAgICAgIGJvb2wgZm9vKCkgeyByZXR1
cm4gdHJ1ZTsgfQorICAgICAgICBgKSwKKyAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXTGV4
aWNhbEVycm9yKTsKK30KKwogb2tUb1Rlc3QgPSB0cnVlOwogCiBsZXQgdGVzdEZpbHRlciA9IC8u
Ki87IC8vIHJ1biBldmVyeXRoaW5nIGJ5IGRlZmF1bHQKQEAgLTc2ODMsNCArNzY4MywzIEBAIGlm
ICghdGhpcy53aW5kb3cpIHsKICAgICBmb3IgKGxldCBfIG9mIGRvVGVzdCh0ZXN0RmlsdGVyKSkg
eyB9CiB9CiAKLQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV0xl
eGljYWxFcnJvci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dMZXhpY2FsRXJy
b3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzk4NTg5M2QyOWY2YmVjZGM1OTM5Y2IxYTJlNTM2NmU0OGFlMTVm
OQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dMZXhp
Y2FsRXJyb3IuanMKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworInVzZSBzdHJpY3QiOworCitjbGFzcyBXTGV4aWNhbEVycm9yIGV4
dGVuZHMgRXJyb3IgeworICAgIGNvbnN0cnVjdG9yKG9yaWdpblN0cmluZywgbWVzc2FnZSkKKyAg
ICB7CisgICAgICAgIHN1cGVyKCJMZXhpY2FsIGVycm9yIGF0ICIgKyBvcmlnaW5TdHJpbmcgKyAi
OiAiICsgbWVzc2FnZSk7CisgICAgICAgIHRoaXMub3JpZ2luU3RyaW5nID0gb3JpZ2luU3RyaW5n
OworICAgICAgICB0aGlzLnN5bnRheEVycm9yTWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgfQorfQor
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XU3ludGF4RXJyb3Iu
anMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9XU3ludGF4RXJyb3IuanMKaW5kZXgg
NjI1ZDhjOWNhZDQ1MmMzNTkzMWNmYTUyNGE2M2QxZTYzZDcxZDViYS4uNzgxYjBlZTlhN2FlOWFm
MmQ4ZmI1NGRjYjQyOWU4MGIwN2VkZTcyOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvV1N5bnRheEVycm9yLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL1dTeW50YXhFcnJvci5qcwpAQCAtMjQsMTAgKzI0LDEwIEBACiAgKi8KICJ1c2Ugc3Ry
aWN0IjsKIAotY2xhc3MgV1N5bnRheEVycm9yIGV4dGVuZHMgRXJyb3IgeworY2xhc3MgV1N5bnRh
eEVycm9yIHsKICAgICBjb25zdHJ1Y3RvcihvcmlnaW5TdHJpbmcsIG1lc3NhZ2UpCiAgICAgewot
ICAgICAgICBzdXBlcigiU3ludGF4IGVycm9yIGF0ICIgKyBvcmlnaW5TdHJpbmcgKyAiOiAiICsg
bWVzc2FnZSk7CisgICAgICAgIHRoaXMucGF5bG9hZCA9ICJTeW50YXggZXJyb3IgYXQgIiArIG9y
aWdpblN0cmluZyArICI6ICIgKyBtZXNzYWdlOwogICAgICAgICB0aGlzLm9yaWdpblN0cmluZyA9
IG9yaWdpblN0cmluZzsKICAgICAgICAgdGhpcy5zeW50YXhFcnJvck1lc3NhZ2UgPSBtZXNzYWdl
OwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4
Lmh0bWwgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9pbmRleC5odG1sCmluZGV4IGU2
ZTEzZGZlOGRmYTVjNTMzMmFkOWVmMDQ5ZWNlYTM1OWI3ZTNhNDIuLmRmYzkwYzRjMjM5NDM5NTQ1
ODg2NWM0YThkNjU0ODY4NzBjMjYyMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL2luZGV4Lmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
aW5kZXguaHRtbApAQCAtMTQ1LDYgKzE0NSw3IEBACiA8c2NyaXB0IHNyYz0iVmFyaWFibGVSZWYu
anMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IlZlY3RvclR5cGUuanMiPjwvc2NyaXB0PgogPHNj
cmlwdCBzcmM9IlZpc2l0aW5nU2V0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJXTGV4aWNh
bEVycm9yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJXU3ludGF4RXJyb3IuanMiPjwvc2Ny
aXB0PgogPHNjcmlwdCBzcmM9IldUcmFwRXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
IldUeXBlRXJyb3IuanMiPjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>348994</attachid>
            <date>2018-09-05 19:10:37 -0700</date>
            <delta_ts>2018-09-06 09:01:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189014-20180905191036.patch</filename>
            <type>text/plain</type>
            <size>64894</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM1Njg1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWJiNDgxOTNiYzE0MzM1MmQ5OTQ0ZmZlY2Y2ZDgzNDQx
YzZmMWY0OS4uMjU3YjkyMDQ3NzU1OTBhMzkyOGExZjVlMThjNDY2ZjNmNWRkYjViNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4
IEBACisyMDE4LTA5LTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgW1dITFNMXSBUaGUgcGFyc2VyIGlzIHRvbyBzbG93CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODkwMTQKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHRo
cmVlIGNoYW5nZXM6CisgICAgICAgIDEuIE1pZ3JhdGUgZnJvbSB1c2luZyB0cnkvY2F0Y2ggdG8g
c2ltcGx5IHJldHVybmluZyB0aGUgV1N5bnRheEVycm9yLiBUaGlzIG1lYW5zIHRoYXQKKyAgICAg
ICAgICAgZWFjaCBwYXJzZXIgY2FsbCBoYXMgdG8gY2hlY2sgZm9yIHRoaXMgc2VudGluZWwgdmFs
dWUuIFRoZSBsZXhlciBzdGlsbCBjYW4gdGhyb3cgaWYKKyAgICAgICAgICAgaXQgZW5jb3VudGVy
cyBhbiB1bmtub3duIHRva2VuIG9yIGFuIHVubWF0Y2hlZCAiLyoiIHRva2VuICh3aGljaCBpcyBy
YXJlKS4KKyAgICAgICAgMi4gQWZ0ZXIgcmVtb3ZpbmcgdHJ5L2NhdGNoLCBtYWtpbmcgdGhlIHNl
bnRpbmVsIHZhbHVlcyBub3QgaW5oZXJpdCBmcm9tIEVycm9yICh0aGUKKyAgICAgICAgICAgRXJy
b3IgY29uc3RydWN0b3Igd2FzIHRha2luZyBsb3RzIG9mIHRpbWUpCisgICAgICAgIDMuIFByZXZp
b3VzbHksIGV2ZXJ5IHRpbWUgdGhlIHBhcnNlciBmYWlsZWQgKHdoaWNoIGlzIG1hbnkgdGltZXMg
cGVyIGV4cHJlc3Npb24pIGl0IHdhcworICAgICAgICAgICBydW5uaW5nIGEgcmVnZXggb3ZlciB0
aGUgZW50aXJlIHNvdXJjZSB0ZXh0IHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGVycm9yIG9jY3Vy
cmVkLgorICAgICAgICAgICBJbnN0ZWFkLCB3ZSBjYW4gcHJlcHJvY2VzcyB0aGUgdGV4dCBzdHJp
bmcgdG8gZmluZCB0aGVzZSBsaW5lIG51bWJlcnMgYWhlYWQgb2YgdGltZS4KKworICAgICAgICBU
b2dldGhlciwgdGhlc2UgbWFrZSB0aGUgcGFyc2VyIDc1eCBmYXN0ZXIuIFBhcnNpbmcgdGhlIHN0
YW5kYXJkIGxpYnJhcnkgZ29lcyBmcm9tIDIuNQorICAgICAgICBob3VycyBkb3duIHRvIDIgbWlu
dXRlcy4gQmVjYXVzZSBpdCdzIG5vdyBhIHJlYXNvbmFibGUgbGVuZ3RoLCB0aGlzIHBhdGNoIHVu
Y29tbWVudHMKKyAgICAgICAgdGhlIGJ1bGsgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkuCisKKyAg
ICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanM6CisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanM6CisgICAgICAgIChMZXhlcik6CisgICAgICAgIChM
ZXhlci5wcm90b3R5cGUubGluZU51bWJlckZvckluZGV4KToKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9QYXJzZS5qczoKKyAgICAgICAgKGZhaWwpOgorICAgICAgICAoYmFja3Ry
YWNraW5nU2NvcGUpOgorICAgICAgICAodGVzdFNjb3BlKToKKyAgICAgICAgKGdlbmVyaWNDb25z
dW1lKToKKyAgICAgICAgKGNvbnN1bWVFbmRPZlR5cGVBcmdzKToKKyAgICAgICAgKHBhcnNlVGVy
bSk6CisgICAgICAgIChwYXJzZUNvbnN0ZXhwcik6CisgICAgICAgIChwYXJzZVR5cGVBcmd1bWVu
dHMpOgorICAgICAgICAocGFyc2VUeXBlLmdldEFkZHJlc3NTcGFjZSk6CisgICAgICAgIChwYXJz
ZVR5cGUpOgorICAgICAgICAocGFyc2VUeXBlRGVmKToKKyAgICAgICAgKGdlbmVyaWNQYXJzZUxl
ZnQpOgorICAgICAgICAocGFyc2VDYWxsRXhwcmVzc2lvbi5sZXQucGFyc2VBcmd1bWVudHMpOgor
ICAgICAgICAoaXNDYWxsRXhwcmVzc2lvbik6CisgICAgICAgIChwYXJzZVN1ZmZpeE9wZXJhdG9y
KToKKyAgICAgICAgKHBhcnNlUG9zc2libGVTdWZmaXgpOgorICAgICAgICAocGFyc2VQcmVJbmNy
ZW1lbnQpOgorICAgICAgICAocGFyc2VQb3NzaWJsZVByZWZpeCk6CisgICAgICAgIChwYXJzZVBv
c3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKToKKyAgICAgICAgKHBhcnNlUG9zc2libGVBc3NpZ25t
ZW50KToKKyAgICAgICAgKHBhcnNlUG9zdEluY3JlbWVudCk6CisgICAgICAgIChwYXJzZUVmZmVj
dGZ1bEV4cHJlc3Npb24pOgorICAgICAgICAoZ2VuZXJpY1BhcnNlQ29tbWFFeHByZXNzaW9uKToK
KyAgICAgICAgKHBhcnNlRWZmZWN0ZnVsU3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNlUmV0dXJu
KToKKyAgICAgICAgKHBhcnNlQnJlYWspOgorICAgICAgICAocGFyc2VDb250aW51ZSk6CisgICAg
ICAgIChwYXJzZUlmU3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNlV2hpbGUpOgorICAgICAgICAo
cGFyc2VGb3IpOgorICAgICAgICAocGFyc2VEbyk6CisgICAgICAgIChwYXJzZVZhcmlhYmxlRGVj
bHMpOgorICAgICAgICAocGFyc2VTd2l0Y2hDYXNlKToKKyAgICAgICAgKHBhcnNlU3dpdGNoU3Rh
dGVtZW50KToKKyAgICAgICAgKHBhcnNlU3RhdGVtZW50KToKKyAgICAgICAgKHBhcnNlQmxvY2tC
b2R5KToKKyAgICAgICAgKHBhcnNlQmxvY2spOgorICAgICAgICAocGFyc2VQYXJhbWV0ZXIpOgor
ICAgICAgICAocGFyc2VGdW5jTmFtZSk6CisgICAgICAgIChwYXJzZUZ1bmNEZWNsKToKKyAgICAg
ICAgKHBhcnNlRnVuY0RlZik6CisgICAgICAgIChwYXJzZUZpZWxkKToKKyAgICAgICAgKHBhcnNl
U3RydWN0VHlwZSk6CisgICAgICAgIChwYXJzZU5hdGl2ZUZ1bmMpOgorICAgICAgICAocGFyc2VO
YXRpdmUpOgorICAgICAgICAocGFyc2VSZXN0cmljdGVkRnVuY0RlZik6CisgICAgICAgIChwYXJz
ZUVudW1NZW1iZXIpOgorICAgICAgICAocGFyc2VFbnVtVHlwZSk6CisgICAgICAgIChwYXJzZSk6
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRtbDoKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanM6CisgICAgICAgIChs
ZXQuc3RhbmRhcmRMaWJyYXJ5KToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9U
ZXN0Lmh0bWw6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qczoKKyAg
ICAgICAgKGNoZWNrRmFpbC5kb1ByZXApOiBEZWxldGVkLgorICAgICAgICAqIFdlYkdQVVNoYWRp
bmdMYW5ndWFnZVJJL1dMZXhpY2FsRXJyb3IuanM6IEFkZGVkLgorICAgICAgICAoV0xleGljYWxF
cnJvcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5kZXguaHRtbDoKKwog
MjAxOC0wOS0wNSAgV29vZHJvdyBXYW5nICA8d29vZHJvd193YW5nQGFwcGxlLmNvbT4KIAogICAg
ICAgICBBZGRlZCBydW50aW1lIGZlYXR1cmUgZmxhZyBmb3Igd2ViIEFQSSBzdGF0aXN0aWNzCmRp
ZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMgYi9Ub29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9BbGwuanMKaW5kZXggOTBmYzg0MTNhNjUxMjI0NDZiZjAx
ZmQ5NjdkZDY1MTM5YTBmODdlOS4uMGE1ODg1MTYxYTQwM2QwOWFlYWExZmU1ZTEwNDNhZGZlNjEy
NTY1ZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzCisr
KyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwpAQCAtMTY4LDYgKzE2OCw3
IEBAIGxvYWQoIlZhcmlhYmxlRGVjbC5qcyIpOwogbG9hZCgiVmFyaWFibGVSZWYuanMiKTsKIGxv
YWQoIlZlY3RvclR5cGUuanMiKTsKIGxvYWQoIlZpc2l0aW5nU2V0LmpzIik7Citsb2FkKCJXTGV4
aWNhbEVycm9yLmpzIik7CiBsb2FkKCJXU3ludGF4RXJyb3IuanMiKTsKIGxvYWQoIldUcmFwRXJy
b3IuanMiKTsKIGxvYWQoIldUeXBlRXJyb3IuanMiKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvTGV4ZXIuanMKaW5kZXggOTU2ZGNhMzM2YTJhOWEzMTIxYTI3NzI4NWFlM2RiNzZkZGU3MjM3
MC4uYWNhNzkzY2RiZTIzODI4NWQ5N2M5Yzg3MjY1MzM3MzczZmVjNzg1YyAxMDA2NDQKLS0tIGEv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKKysrIGIvVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXIuanMKQEAgLTM1LDYgKzM1LDE0IEBAIGNsYXNzIExleGVy
IHsKICAgICAgICAgdGhpcy5fdGV4dCA9IHRleHQ7CiAgICAgICAgIHRoaXMuX2luZGV4ID0gMDsK
ICAgICAgICAgdGhpcy5fc3RhY2sgPSBbXTsKKworICAgICAgICB0aGlzLl9saW5lTnVtYmVycyA9
IFtdOworICAgICAgICBsZXQgbGluZU51bWJlciA9IDE7CisgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgdGhpcy5fdGV4dC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdGhpcy5fbGluZU51
bWJlcnMucHVzaChsaW5lTnVtYmVyKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl90ZXh0W2ldID09
ICdcbicpCisgICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyOworICAgICAgICB9CiAgICAgfQog
ICAgIAogICAgIGdldCBsaW5lTnVtYmVyKCkKQEAgLTUzLDggKzYxLDcgQEAgY2xhc3MgTGV4ZXIg
ewogICAgIAogICAgIGxpbmVOdW1iZXJGb3JJbmRleChpbmRleCkKICAgICB7Ci0gICAgICAgIGxl
dCBtYXRjaGVzID0gdGhpcy5fdGV4dC5zdWJzdHJpbmcoMCwgaW5kZXgpLm1hdGNoKC9cbi9nKTsK
LSAgICAgICAgcmV0dXJuIChtYXRjaGVzID8gbWF0Y2hlcy5sZW5ndGggOiAwKSArIHRoaXMuX2xp
bmVOdW1iZXJPZmZzZXQ7CisgICAgICAgIHJldHVybiB0aGlzLl9saW5lTnVtYmVyc1tpbmRleF0g
KyB0aGlzLl9saW5lTnVtYmVyT2Zmc2V0OwogICAgIH0KICAgICAKICAgICBnZXQgc3RhdGUoKSB7
IHJldHVybiB7aW5kZXg6IHRoaXMuX2luZGV4LCBzdGFjazogdGhpcy5fc3RhY2suY29uY2F0KCl9
OyB9CkBAIC0xNjYsMzUgKzE3Myw2IEBAIGNsYXNzIExleGVyIHsKICAgICAKICAgICBmYWlsKGVy
cm9yKQogICAgIHsKLSAgICAgICAgdGhyb3cgbmV3IFdTeW50YXhFcnJvcih0aGlzLm9yaWdpblN0
cmluZywgZXJyb3IpOwotICAgIH0KLSAgICAKLSAgICBiYWNrdHJhY2tpbmdTY29wZShjYWxsYmFj
aykKLSAgICB7Ci0gICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuc3RhdGU7Ci0gICAgICAgIHRyeSB7
Ci0gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTsKLSAgICAgICAgfSBjYXRjaCAoZSkgewot
ICAgICAgICAgICAgaWYgKGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpIHsKLSAgICAgICAgICAg
ICAgICB0aGlzLnN0YXRlID0gc3RhdGU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aHJvdyBlOwotICAgICAgICB9Ci0gICAgfQotICAg
IAotICAgIHRlc3RTY29wZShjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGxldCBzdGF0ZSA9IHRo
aXMuc3RhdGU7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgICAgIGlm
IChlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIHRocm93IGU7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAg
ICB0aGlzLnN0YXRlID0gc3RhdGU7Ci0gICAgICAgIH0KKyAgICAgICAgdGhyb3cgbmV3IFdMZXhp
Y2FsRXJyb3IodGhpcy5vcmlnaW5TdHJpbmcsIGVycm9yKTsKICAgICB9CiB9CmRpZmYgLS1naXQg
YS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhlclRva2VuLmpzIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvTGV4ZXJUb2tlbi5qcwppbmRleCA5ZTA2ZWU2OGY3MjM4MGVi
YmQ2YTYwNTAwMWY1YTNmMjYyODEyYmY1Li4xNDQwMzEyY2RkZDVmNjlhODI0YzQyNzkwZTdjZGNk
ZThjMjM3MDViIDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9MZXhl
clRva2VuLmpzCisrKyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0xleGVyVG9rZW4u
anMKQEAgLTcwLDcgKzcwLDcgQEAgY2xhc3MgTGV4ZXJUb2tlbiB7CiAgICAgCiAgICAgZ2V0IG9y
aWdpblN0cmluZygpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5vcmlnaW4gKyAiOiIgKyAo
dGhpcy5saW5lTnVtYmVyICsgMSk7CisgICAgICAgIHJldHVybiB0aGlzLm9yaWdpbiArICI6IiAr
IHRoaXMubGluZU51bWJlcjsKICAgICB9CiAgICAgCiAgICAgdG9TdHJpbmcoKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMgYi9Ub29scy9XZWJHUFVT
aGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwppbmRleCBlZTRjOTgwZjNhMTY3MmI2OGE3N2ViYjQ4
NTI1ZWRkMjQ5NDQzYTUzLi40ZmI4NDlkMGNkZjBkOWRhMDkwZjFjMzAxMzExMjhiNDEzNTFiOWYx
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcworKysg
Yi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwpAQCAtMjcsNyArMjcsNyBA
QAogZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVy
T2Zmc2V0LCB0ZXh0KQogewogICAgIGxldCBsZXhlciA9IG5ldyBMZXhlcihvcmlnaW4sIG9yaWdp
bktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpOwotICAgIAorCiAgICAgLy8gVGhlIGhhcmRl
c3QgcGFydCBvZiBkZWFsaW5nIHdpdGggQy1saWtlIGxhbmd1YWdlcyBpcyBwYXJzaW5nIHZhcmlh
YmxlIGRlY2xhcmF0aW9uIHN0YXRlbWVudHMuCiAgICAgLy8gTGV0J3MgY29uc2lkZXIgaWYgdGhp
cyBoYXBwZW5zIGluIFdTTC4gSGVyZSBhcmUgdGhlIHZhbGlkIHN0YXRlbWVudHMgaW4gV1NMIHRo
YXQgYmVpbmcgd2l0aCBhbgogICAgIC8vIGlkZW50aWZpZXIsIGlmIHdlIGFzc3VtZSB0aGF0IGFu
eSBleHByZXNzaW9uIGNhbiBiZSBhIHN0YW5kYWxvbmUgc3RhdGVtZW50LgpAQCAtNjEsMzIgKzYx
LDU5IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51
bWJlck9mZnNldCwgdGV4dCkKICAgICAvLyBwb2ludGVycyBtZWFucyB0aGF0IHdlIGNhbiBzdGls
bCBhbGxvdyBmdW5jdGlvbiBjYWxsIHN0YXRlbWVudHMgLSB1bmxpa2UgaW4gQywgdGhvc2UgY2Fu
bm90CiAgICAgLy8gaGF2ZSBhcmJpdHJhcnkgZXhwcmVzc2lvbnMgYXMgdGhlIGNhbGxlZS4gVGhl
IHJlbWFpbmluZyB0d28gcHJvYmxlbXMgYXJlIHNvbHZlZCBieQogICAgIC8vIGJhY2t0cmFja2lu
Zy4gSW4gYWxsIG90aGVyIHJlc3BlY3RzLCB0aGlzIGlzIGEgc2ltcGxlIHJlY3Vyc2l2ZSBkZXNj
ZW50IHBhcnNlci4KLSAgICAKKworICAgIGZ1bmN0aW9uIGZhaWwoZXJyb3IpCisgICAgeworICAg
ICAgICByZXR1cm4gbmV3IFdTeW50YXhFcnJvcihsZXhlci5vcmlnaW5TdHJpbmcsIGVycm9yKTsK
KyAgICB9CisKKyAgICBmdW5jdGlvbiBiYWNrdHJhY2tpbmdTY29wZShjYWxsYmFjaykKKyAgICB7
CisgICAgICAgIGxldCBzdGF0ZSA9IGxleGVyLnN0YXRlOworICAgICAgICBsZXQgbWF5YmVFcnJv
ciA9IGNhbGxiYWNrKCk7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKSB7CisgICAgICAgICAgICBsZXhlci5zdGF0ZSA9IHN0YXRlOworICAgICAgICAgICAg
cmV0dXJuIG51bGw7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CisgICAgfQorCisgICAgZnVuY3Rpb24gdGVzdFNjb3BlKGNhbGxiYWNrKQorICAgIHsKKyAg
ICAgICAgbGV0IHN0YXRlID0gbGV4ZXIuc3RhdGU7CisgICAgICAgIGxldCBtYXliZUVycm9yID0g
Y2FsbGJhY2soKTsKKyAgICAgICAgbGV4ZXIuc3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgcmV0dXJu
ICEobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcik7CisgICAgfQorCiAgICAgZnVu
Y3Rpb24gZ2VuZXJpY0NvbnN1bWUoY2FsbGJhY2ssIGV4cGxhbmF0aW9uKQogICAgIHsKICAgICAg
ICAgbGV0IHRva2VuID0gbGV4ZXIubmV4dCgpOwogICAgICAgICBpZiAoIXRva2VuKQotICAgICAg
ICAgICAgbGV4ZXIuZmFpbCgiVW5leHBlY3RlZCBlbmQgb2YgZmlsZSIpOworICAgICAgICAgICAg
cmV0dXJuIGZhaWwoIlVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiKTsKICAgICAgICAgaWYgKCFjYWxs
YmFjayh0b2tlbikpCi0gICAgICAgICAgICBsZXhlci5mYWlsKCJVbmV4cGVjdGVkIHRva2VuOiAi
ICsgdG9rZW4udGV4dCArICI7IGV4cGVjdGVkOiAiICsgZXhwbGFuYXRpb24pOworICAgICAgICAg
ICAgcmV0dXJuIGZhaWwoIlVuZXhwZWN0ZWQgdG9rZW46ICIgKyB0b2tlbi50ZXh0ICsgIjsgZXhw
ZWN0ZWQ6ICIgKyBleHBsYW5hdGlvbik7CiAgICAgICAgIHJldHVybiB0b2tlbjsKICAgICB9Ci0g
ICAgCisKICAgICBmdW5jdGlvbiBjb25zdW1lKC4uLnRleHRzKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGdlbmVyaWNDb25zdW1lKHRva2VuID0+IHRleHRzLmluY2x1ZGVzKHRva2VuLnRleHQpLCB0
ZXh0cyk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gY29uc3VtZUtpbmQoa2luZCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBnZW5lcmljQ29uc3VtZSh0b2tlbiA9PiB0b2tlbi5raW5kID09
IGtpbmQsIGtpbmQpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIGFzc2VydE5leHQoLi4u
dGV4dHMpCiAgICAgewotICAgICAgICBsZXhlci5wdXNoKGNvbnN1bWUoLi4udGV4dHMpKTsKKyAg
ICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKC4uLnRleHRzKTsKKyAgICAgICAgaWYgKG1h
eWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5
YmVFcnJvcjsKKyAgICAgICAgbGV4ZXIucHVzaChtYXliZUVycm9yKTsKICAgICB9Ci0gICAgCisK
ICAgICBmdW5jdGlvbiBnZW5lcmljVGVzdChjYWxsYmFjaykKICAgICB7CiAgICAgICAgIGxldCB0
b2tlbiA9IGxleGVyLnBlZWsoKTsKQEAgLTk0LDE3ICsxMjEsMTcgQEAgZnVuY3Rpb24gcGFyc2Uo
cHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAg
ICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9Ci0gICAg
CisKICAgICBmdW5jdGlvbiB0ZXN0KC4uLnRleHRzKQogICAgIHsKICAgICAgICAgcmV0dXJuIGdl
bmVyaWNUZXN0KHRva2VuID0+IHRleHRzLmluY2x1ZGVzKHRva2VuLnRleHQpKTsKICAgICB9Ci0g
ICAgCisKICAgICBmdW5jdGlvbiB0ZXN0S2luZChraW5kKQogICAgIHsKICAgICAgICAgcmV0dXJu
IGdlbmVyaWNUZXN0KHRva2VuID0+IHRva2VuLmtpbmQgPT0ga2luZCk7CiAgICAgfQotICAgIAor
CiAgICAgZnVuY3Rpb24gdHJ5Q29uc3VtZSguLi50ZXh0cykKICAgICB7CiAgICAgICAgIGxldCBy
ZXN1bHQgPSB0ZXN0KC4uLnRleHRzKTsKQEAgLTExMiw3ICsxMzksNyBAQCBmdW5jdGlvbiBwYXJz
ZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgICAgICAgICBsZXhlci5uZXh0KCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQot
ICAgIAorCiAgICAgZnVuY3Rpb24gdHJ5Q29uc3VtZUtpbmQoa2luZCkKICAgICB7CiAgICAgICAg
IGxldCByZXN1bHQgPSB0ZXN0S2luZChraW5kKTsKQEAgLTEyMCwxNiArMTQ3LDE5IEBAIGZ1bmN0
aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwg
dGV4dCkKICAgICAgICAgICAgIGxleGVyLm5leHQoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBjb25zdW1lRW5kT2ZUeXBlQXJncygpCiAgICAg
ewogICAgICAgICBsZXQgcmlnaHRTaGlmdCA9IHRyeUNvbnN1bWUoIj4+Iik7CiAgICAgICAgIGlm
IChyaWdodFNoaWZ0KQogICAgICAgICAgICAgbGV4ZXIucHVzaChuZXcgTGV4ZXJUb2tlbihsZXhl
ciwgcmlnaHRTaGlmdCwgcmlnaHRTaGlmdC5pbmRleCwgcmlnaHRTaGlmdC5raW5kLCAiPiIpKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29uc3VtZSgiPiIpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiPiIpOworICAgICAgICAgICAg
aWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlv
biBwYXJzZVRlcm0oKQogICAgIHsKICAgICAgICAgbGV0IHRva2VuOwpAQCAtMTQwLDEzICsxNzAs
MTMgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVt
YmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lS2luZCgiaW50
TGl0ZXJhbCIpKSB7CiAgICAgICAgICAgICBsZXQgaW50VmVyc2lvbiA9ICgrdG9rZW4udGV4dCkg
fCAwOwogICAgICAgICAgICAgaWYgKCIiICsgaW50VmVyc2lvbiAhPT0gdG9rZW4udGV4dCkKLSAg
ICAgICAgICAgICAgICBsZXhlci5mYWlsKCJJbnRlZ2VyIGxpdGVyYWwgaXMgbm90IGFuIGludGVn
ZXI6ICIgKyB0b2tlbi50ZXh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgiSW50ZWdl
ciBsaXRlcmFsIGlzIG5vdCBhbiBpbnRlZ2VyOiAiICsgdG9rZW4udGV4dCk7CiAgICAgICAgICAg
ICByZXR1cm4gbmV3IEludExpdGVyYWwodG9rZW4sIGludFZlcnNpb24pOwogICAgICAgICB9CiAg
ICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWVLaW5kKCJ1aW50TGl0ZXJhbCIpKSB7CiAgICAg
ICAgICAgICBsZXQgdWludFZlcnNpb24gPSB0b2tlbi50ZXh0LnN1YnN0cigwLCB0b2tlbi50ZXh0
Lmxlbmd0aCAtIDEpID4+PiAwOwogICAgICAgICAgICAgaWYgKHVpbnRWZXJzaW9uICsgInUiICE9
PSB0b2tlbi50ZXh0KQotICAgICAgICAgICAgICAgIGxleGVyLmZhaWwoIkludGVnZXIgbGl0ZXJh
bCBpcyBub3QgMzItYml0IHVuc2lnbmVkIGludGVnZXI6ICIgKyB0b2tlbi50ZXh0KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFpbCgiSW50ZWdlciBsaXRlcmFsIGlzIG5vdCAzMi1iaXQgdW5z
aWduZWQgaW50ZWdlcjogIiArIHRva2VuLnRleHQpOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBV
aW50TGl0ZXJhbCh0b2tlbiwgdWludFZlcnNpb24pOwogICAgICAgICB9CiAgICAgICAgIGlmICgo
dG9rZW4gPSB0cnlDb25zdW1lS2luZCgiaW50SGV4TGl0ZXJhbCIpKQpAQCAtMTYyLDcgKzE5Miw3
IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJl
ck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBpbnRWZXJz
aW9uID0gaW50VmVyc2lvbiA+Pj4gMDsKICAgICAgICAgICAgIGlmIChpbnRWZXJzaW9uLnRvU3Ry
aW5nKDE2KSAhPT0gaGV4U3RyaW5nKQotICAgICAgICAgICAgICAgIGxleGVyLmZhaWwoIkhleCBp
bnRlZ2VyIGxpdGVyYWwgaXMgbm90IGFuIGludGVnZXI6ICIgKyB0b2tlbi50ZXh0KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFpbCgiSGV4IGludGVnZXIgbGl0ZXJhbCBpcyBub3QgYW4gaW50
ZWdlcjogIiArIHRva2VuLnRleHQpOwogICAgICAgICAgICAgaWYgKHRva2VuLmtpbmQgPT0gImlu
dEhleExpdGVyYWwiKQogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW50TGl0ZXJhbCh0b2tl
biwgaW50VmVyc2lvbik7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnRMaXRlcmFsKHRva2Vu
LCBpbnRWZXJzaW9uID4+PiAwKTsKQEAgLTE3OCwzMCArMjA4LDQ4IEBAIGZ1bmN0aW9uIHBhcnNl
KHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAg
ICAgICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSgidHJ1ZSIsICJmYWxzZSIpKQogICAgICAgICAg
ICAgcmV0dXJuIG5ldyBCb29sTGl0ZXJhbCh0b2tlbiwgdG9rZW4udGV4dCA9PSAidHJ1ZSIpOwog
ICAgICAgICAvLyBGSVhNRTogTmVlZCBzdXBwb3J0IGZvciBvdGhlciBsaXRlcmFscyB0b28uCi0g
ICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIo
Iik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCByZXN1bHQgPSBwYXJzZUV4
cHJlc3Npb24oKTsKLSAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBpZiAocmVzdWx0IGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUNv
bnN0ZXhwcigpCiAgICAgewogICAgICAgICBsZXQgdG9rZW47Ci0gICAgICAgIGlmICh0b2tlbiA9
IHRyeUNvbnN1bWUoIi0iKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4cHJlc3Npb24o
dG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0LCBbcGFyc2VUZXJtKCldKTsKKyAgICAgICAg
aWYgKHRva2VuID0gdHJ5Q29uc3VtZSgiLSIpKSB7CisgICAgICAgICAgICBsZXQgdGVybSA9IHBh
cnNlVGVybSgpOworICAgICAgICAgICAgaWYgKHRlcm0gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRlcm07CisgICAgICAgICAgICByZXR1cm4gbmV3IENh
bGxFeHByZXNzaW9uKHRva2VuLCAib3BlcmF0b3IiICsgdG9rZW4udGV4dCwgW3Rlcm1dKTsKKyAg
ICAgICAgfQogICAgICAgICBsZXQgbGVmdCA9IHBhcnNlVGVybSgpOwotICAgICAgICBpZiAodG9r
ZW4gPSB0cnlDb25zdW1lKCIuIikpCi0gICAgICAgICAgICBsZWZ0ID0gbmV3IERvdEV4cHJlc3Np
b24odG9rZW4sIGxlZnQsIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dCk7CisgICAgICAg
IGlmIChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGxl
ZnQ7CisgICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIi4iKSkgeworICAgICAgICAgICAg
bGV0IG1heWJlRXJyb3IgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpCisgICAgICAgICAgICBp
ZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbWF5YmVFcnJvcjsKKyAgICAgICAgICAgIGxlZnQgPSBuZXcgRG90RXhwcmVzc2lvbih0
b2tlbiwgbGVmdCwgbWF5YmVFcnJvci50ZXh0KTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4g
bGVmdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVR5cGVBcmd1bWVudHMoKQog
ICAgIHsKICAgICAgICAgaWYgKCF0ZXN0KCI8IikpCiAgICAgICAgICAgICByZXR1cm4gW107CiAK
ICAgICAgICAgbGV0IHJlc3VsdCA9IFtdOwotICAgICAgICBjb25zdW1lKCI8Iik7CisgICAgICAg
IGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiPCIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwog
ICAgICAgICB3aGlsZSAoIXRlc3QoIj4iKSkgewogICAgICAgICAgICAgLy8gSXQncyBwb3NzaWJs
ZSBmb3IgYSBjb25zdGV4cHIgb3IgdHlwZSBjYW4gc3ludGFjdGljYWxseSBvdmVybGFwIGluIHRo
ZSBzaW5nbGUKICAgICAgICAgICAgIC8vIGlkZW50aWZpZXIgY2FzZS4gTGV0J3MgY29uc2lkZXIg
dGhlIHBvc3NpYmlsaXRpZXM6CkBAIC0yMTQsMzEgKzI2Miw0NSBAQCBmdW5jdGlvbiBwYXJzZShw
cm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAg
ICAgICAgICAvLyBJbiB0aGUgZnV0dXJlIHdlJ2xsIGFsbG93IGNvbnN0ZXhwcnMgdG8gZG8gbW9y
ZSB0aGluZ3MsIGFuZCB0aGVuIHdlJ2xsIHN0aWxsIGhhdmUKICAgICAgICAgICAgIC8vIHRoZSBw
cm9ibGVtIHRoYXQgc29tZXRoaW5nIG9mIHRoZSBmb3JtIFRbMV1bMl1bM10uLi4gY2FuIGVpdGhl
ciBiZSBhIHR5cGUgb3IgYQogICAgICAgICAgICAgLy8gY29uc3RleHByLCBhbmQgd2UgY2FuIGZp
Z3VyZSBvdXQgaW4gdGhlIGNoZWNrZXIgd2hpY2ggaXQgaXMuCi0gICAgICAgICAgICBsZXQgdHlw
ZVJlZiA9IGxleGVyLmJhY2t0cmFja2luZ1Njb3BlKCgpID0+IHsKKyAgICAgICAgICAgIGxldCB0
eXBlUmVmID0gYmFja3RyYWNraW5nU2NvcGUoKCkgPT4gewogICAgICAgICAgICAgICAgIGxldCBy
ZXN1bHQgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOwotICAgICAgICAgICAgICAgIGFzc2Vy
dE5leHQoIiwiLCAiPiIsICI+PiIpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBhc3NlcnROZXh0KCIsIiwgIj4iLCAiPj4i
KTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBUeXBlUmVmKHJlc3VsdCwgcmVzdWx0LnRleHQpOwogICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICBpZiAodHlwZVJlZikKICAgICAgICAgICAgICAgICByZXN1bHQucHVz
aCh0eXBlUmVmKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGxldCBjb25z
dGV4cHIgPSBsZXhlci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7CisgICAgICAgICAgICAgICAg
bGV0IGNvbnN0ZXhwciA9IGJhY2t0cmFja2luZ1Njb3BlKCgpID0+IHsKICAgICAgICAgICAgICAg
ICAgICAgbGV0IHJlc3VsdCA9IHBhcnNlQ29uc3RleHByKCk7Ci0gICAgICAgICAgICAgICAgICAg
IGFzc2VydE5leHQoIiwiLCAiPiIsICI+PiIpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVz
dWx0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBhc3NlcnRO
ZXh0KCIsIiwgIj4iLCAiPj4iKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bWF5YmVFcnJvcjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAg
ICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBpZiAoY29uc3RleHByKQogICAgICAgICAgICAg
ICAgICAgICByZXN1bHQucHVzaChjb25zdGV4cHIpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2gocGFyc2VUeXBlKCkpOworICAgICAgICAgICAg
ICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBsZXQgdHlwZSA9IHBhcnNlVHlwZSgpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlOworICAgICAgICAgICAgICAgICAgICBy
ZXN1bHQucHVzaCh0eXBlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAoIXRyeUNvbnN1bWUoIiwiKSkKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQotICAgICAgICBjb25zdW1lRW5kT2ZUeXBlQXJncygpOworICAgICAgICBtYXliZUVy
cm9yID0gY29uc3VtZUVuZE9mVHlwZUFyZ3MoKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5z
dGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVR5
cGUoKQogICAgIHsKICAgICAgICAgbGV0IHRva2VuOwpAQCAtMjQ2LDY4ICszMDgsOTYgQEAgZnVu
Y3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0
LCB0ZXh0KQogICAgICAgICBsZXQgYWRkcmVzc1NwYWNlQ29uc3VtZWQgPSBmYWxzZTsKICAgICAg
ICAgaWYgKHRva2VuID0gdHJ5Q29uc3VtZSguLi5hZGRyZXNzU3BhY2VzKSkKICAgICAgICAgICAg
IGFkZHJlc3NTcGFjZSA9IHRva2VuLnRleHQ7Ci0gICAgICAgIAorCiAgICAgICAgIGxldCBuYW1l
ID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgaWYgKG5hbWUgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmFtZTsKICAgICAgICAgbGV0IHR5
cGVBcmd1bWVudHMgPSBwYXJzZVR5cGVBcmd1bWVudHMoKTsKKyAgICAgICAgaWYgKHR5cGVBcmd1
bWVudHMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdHlwZUFy
Z3VtZW50czsKICAgICAgICAgbGV0IHR5cGUgPSBuZXcgVHlwZVJlZihuYW1lLCBuYW1lLnRleHQs
IHR5cGVBcmd1bWVudHMpOwotICAgICAgICAKKwogICAgICAgICBmdW5jdGlvbiBnZXRBZGRyZXNz
U3BhY2UoKQogICAgICAgICB7CiAgICAgICAgICAgICBhZGRyZXNzU3BhY2VDb25zdW1lZCA9IHRy
dWU7CiAgICAgICAgICAgICBpZiAoYWRkcmVzc1NwYWNlKQogICAgICAgICAgICAgICAgIHJldHVy
biBhZGRyZXNzU3BhY2U7Ci0gICAgICAgICAgICByZXR1cm4gY29uc3VtZSguLi5hZGRyZXNzU3Bh
Y2VzKS50ZXh0OworICAgICAgICAgICAgbGV0IGNvbnN1bWVkQWRkcmVzc1NwYWNlID0gY29uc3Vt
ZSguLi5hZGRyZXNzU3BhY2VzKTsKKyAgICAgICAgICAgIGlmIChjb25zdW1lZEFkZHJlc3NTcGFj
ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gY29uc3Vt
ZWRBZGRyZXNzU3BhY2U7CisgICAgICAgICAgICByZXR1cm4gY29uc3VtZWRBZGRyZXNzU3BhY2Uu
dGV4dDsKICAgICAgICAgfQotICAgICAgICAKKwogICAgICAgICBjb25zdCB0eXBlQ29uc3RydWN0
b3JTdGFjayA9IFsgXTsKIAogICAgICAgICBmb3IgKGxldCB0b2tlbjsgdG9rZW4gPSB0cnlDb25z
dW1lKCIqIiwgIlsiKTspIHsKICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICIqIikgewog
ICAgICAgICAgICAgICAgIC8vIExpa2V3aXNlLCB0aGUgYWRkcmVzcyBzcGFjZSBtdXN0IGJlIHBh
cnNlZCBiZWZvcmUgcGFyc2luZyBjb250aW51ZXMuCiAgICAgICAgICAgICAgICAgY29uc3QgYWRk
cmVzc1NwYWNlID0gZ2V0QWRkcmVzc1NwYWNlKCk7CisgICAgICAgICAgICAgICAgaWYgKGFkZHJl
c3NTcGFjZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGFkZHJlc3NTcGFjZTsKICAgICAgICAgICAgICAgICB0eXBlQ29uc3RydWN0b3JTdGFjay51
bnNoaWZ0KHR5cGUgPT4gbmV3IFB0clR5cGUodG9rZW4sIGFkZHJlc3NTcGFjZSwgdHlwZSkpOwog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAodHJ5Q29uc3VtZSgiXSIpKSB7CiAgICAgICAgICAgICAgICAgY29uc3QgYWRkcmVzc1NwYWNl
ID0gZ2V0QWRkcmVzc1NwYWNlKCk7CisgICAgICAgICAgICAgICAgaWYgKGFkZHJlc3NTcGFjZSBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFkZHJl
c3NTcGFjZTsKICAgICAgICAgICAgICAgICB0eXBlQ29uc3RydWN0b3JTdGFjay51bnNoaWZ0KHR5
cGUgPT4gbmV3IEFycmF5UmVmVHlwZSh0b2tlbiwgYWRkcmVzc1NwYWNlLCB0eXBlKSk7CiAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGNvbnN0
IGxlbmd0aEV4cHIgPSBwYXJzZUNvbnN0ZXhwcigpOworICAgICAgICAgICAgaWYgKGxlbmd0aEV4
cHIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGxlbmd0
aEV4cHI7CiAgICAgICAgICAgICB0eXBlQ29uc3RydWN0b3JTdGFjay51bnNoaWZ0KHR5cGUgPT4g
bmV3IEFycmF5VHlwZSh0b2tlbiwgdHlwZSwgbGVuZ3RoRXhwcikpOwotICAgICAgICAgICAgY29u
c3VtZSgiXSIpOworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCJdIik7Cisg
ICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgfQogCiAgICAgICAgIGZvciAo
bGV0IGNvbnN0cnVjdG9yIG9mIHR5cGVDb25zdHJ1Y3RvclN0YWNrKQogICAgICAgICAgICAgdHlw
ZSA9IGNvbnN0cnVjdG9yKHR5cGUpOwogCiAgICAgICAgIGlmIChhZGRyZXNzU3BhY2UgJiYgIWFk
ZHJlc3NTcGFjZUNvbnN1bWVkKQotICAgICAgICAgICAgbGV4ZXIuZmFpbCgiQWRkcmVzcyBzcGFj
ZSBzcGVjaWZpZWQgZm9yIHR5cGUgdGhhdCBkb2VzIG5vdCBuZWVkIGFkZHJlc3Mgc3BhY2UiKTsK
KyAgICAgICAgICAgIHJldHVybiBmYWlsKCJBZGRyZXNzIHNwYWNlIHNwZWNpZmllZCBmb3IgdHlw
ZSB0aGF0IGRvZXMgbm90IG5lZWQgYWRkcmVzcyBzcGFjZSIpOwogCiAgICAgICAgIHJldHVybiB0
eXBlOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlVHlwZURlZigpCiAgICAgewog
ICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgidHlwZWRlZiIpOwotICAgICAgICBsZXQgbmFt
ZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dDsKLSAgICAgICAgY29uc3VtZSgiPSIp
OworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lS2luZCgi
aWRlbnRpZmllciIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICBsZXQgbmFtZSA9
IG1heWJlRXJyb3IudGV4dDsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIj0iKTsKKyAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKLSAg
ICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhF
cnJvcikKKyAgICAgICAgICAgIHJldHVybiB0eXBlOworICAgICAgICBtYXliZUVycm9yID0gY29u
c3VtZSgiOyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gbmV3IFR5
cGVEZWYob3JpZ2luLCBuYW1lLCB0eXBlKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBn
ZW5lcmljUGFyc2VMZWZ0KHRleHRzLCBuZXh0UGFyc2VyLCBjb25zdHJ1Y3RvcikKICAgICB7CiAg
ICAgICAgIGxldCBsZWZ0ID0gbmV4dFBhcnNlcigpOworICAgICAgICBpZiAobGVmdCBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBsZWZ0OwogICAgICAgICBsZXQg
dG9rZW47CiAgICAgICAgIHdoaWxlICh0b2tlbiA9IHRyeUNvbnN1bWUoLi4udGV4dHMpKQogICAg
ICAgICAgICAgbGVmdCA9IGNvbnN0cnVjdG9yKHRva2VuLCBsZWZ0LCBuZXh0UGFyc2VyKCkpOwog
ICAgICAgICByZXR1cm4gbGVmdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUxl
ZnRPcGVyYXRvckNhbGwodGV4dHMsIG5leHRQYXJzZXIpCiAgICAgewogICAgICAgICByZXR1cm4g
Z2VuZXJpY1BhcnNlTGVmdCgKQEAgLTMxNSwyNCArNDA1LDMyIEBAIGZ1bmN0aW9uIHBhcnNlKHBy
b2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAg
ICAgICAgICh0b2tlbiwgbGVmdCwgcmlnaHQpID0+CiAgICAgICAgICAgICAgICAgbmV3IENhbGxF
eHByZXNzaW9uKHRva2VuLCAib3BlcmF0b3IiICsgdG9rZW4udGV4dCwgW2xlZnQsIHJpZ2h0XSkp
OwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlQ2FsbEV4cHJlc3Npb24oKQogICAg
IHsKICAgICAgICAgbGV0IHBhcnNlQXJndW1lbnRzID0gZnVuY3Rpb24ob3JpZ2luLCBjYWxsTmFt
ZSkgewogICAgICAgICAgICAgbGV0IGFyZ3VtZW50TGlzdCA9IFtdOwogICAgICAgICAgICAgd2hp
bGUgKCF0ZXN0KCIpIikpIHsKICAgICAgICAgICAgICAgICBsZXQgYXJndW1lbnQgPSBwYXJzZVBv
c3NpYmxlQXNzaWdubWVudCgpOworICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudCBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3VtZW50Owog
ICAgICAgICAgICAgICAgIGFyZ3VtZW50TGlzdC5wdXNoKGFyZ3VtZW50KTsKICAgICAgICAgICAg
ICAgICBpZiAoIXRyeUNvbnN1bWUoIiwiKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgICAgICBsZXQg
bWF5YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgICAgIGlmIChtYXliZUVycm9yIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9y
OwogICAgICAgICAgICAgcmV0dXJuIG5ldyBDYWxsRXhwcmVzc2lvbihvcmlnaW4sIGNhbGxOYW1l
LCBhcmd1bWVudExpc3QpOwogICAgICAgICB9CiAKLSAgICAgICAgbGV0IG5hbWUgPSBsZXhlci5i
YWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7CisgICAgICAgIGxldCBuYW1lID0gYmFja3RyYWNraW5n
U2NvcGUoKCkgPT4gewogICAgICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRp
ZmllciIpOwotICAgICAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICAgICAgaWYgKG5hbWUg
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7Cisg
ICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAgIGlm
IChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJl
dHVybiBtYXliZUVycm9yOwogICAgICAgICAgICAgcmV0dXJuIG5hbWU7CiAgICAgICAgIH0pOwog
CkBAIC0zNDEsNDAgKzQzOSw1MiBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9y
aWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbGV0IHJldHVyblR5cGUgPSBwYXJz
ZVR5cGUoKTsKLSAgICAgICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAgIGlmIChyZXR1
cm5UeXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBy
ZXR1cm5UeXBlOworICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7Cisg
ICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgIGxldCByZXN1bHQgPSBw
YXJzZUFyZ3VtZW50cyhyZXR1cm5UeXBlLm9yaWdpbiwgIm9wZXJhdG9yIGNhc3QiKTsKICAgICAg
ICAgICAgIHJlc3VsdC5zZXRDYXN0RGF0YShyZXR1cm5UeXBlKTsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBpc0NhbGxF
eHByZXNzaW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBsZXhlci50ZXN0U2NvcGUoKCkgPT4g
ewotICAgICAgICAgICAgICAgIGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7Ci0gICAgICAgICAg
ICAgICAgY29uc3VtZSgiKCIpOwotICAgICAgICAgICAgfSkgfHwgbGV4ZXIudGVzdFNjb3BlKCgp
ID0+IHsKLSAgICAgICAgICAgICAgICBwYXJzZVR5cGUoKTsKLSAgICAgICAgICAgICAgICBjb25z
dW1lKCIoIik7CisgICAgICAgIHJldHVybiB0ZXN0U2NvcGUoKCkgPT4geworICAgICAgICAgICAg
ICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAg
ICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CisgICAgICAgICAgICAgICAgbWF5YmVFcnJv
ciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CisgICAgICAgICAgICB9KSB8fCB0ZXN0U2NvcGUoKCkgPT4geworICAgICAgICAgICAgICAgIGxl
dCB0eXBlID0gcGFyc2VUeXBlKCk7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlOworICAgICAg
ICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiKCIpOworICAgICAgICAgICAgICAg
IGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgIH0pOwogICAgIH0KLSAgICAKKwog
ICAgIGZ1bmN0aW9uIGVtaXRJbmNyZW1lbnQodG9rZW4sIG9sZCwgZXh0cmFBcmcpCiAgICAgewog
ICAgICAgICBsZXQgYXJncyA9IFtvbGRdOwogICAgICAgICBpZiAoZXh0cmFBcmcpCiAgICAgICAg
ICAgICBhcmdzLnB1c2goZXh0cmFBcmcpOwotICAgICAgICAKKwogICAgICAgICBsZXQgbmFtZSA9
ICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0OwogICAgICAgICBpZiAoLz0kLy50ZXN0KG5hbWUpKQog
ICAgICAgICAgICAgbmFtZSA9IFJlZ0V4cC5sZWZ0Q29udGV4dDsKLSAgICAgICAgCisKICAgICAg
ICAgaWYgKG5hbWUgPT0gIm9wZXJhdG9yIikKICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
SW52YWxpZCBuYW1lOiAiICsgbmFtZSk7Ci0gICAgICAgIAorCiAgICAgICAgIHJldHVybiBuZXcg
Q2FsbEV4cHJlc3Npb24odG9rZW4sIG5hbWUsIGFyZ3MpOwogICAgIH0KLSAgICAKKwogICAgIGZ1
bmN0aW9uIGZpbmlzaFBhcnNpbmdQb3N0SW5jcmVtZW50KHRva2VuLCBsZWZ0KQogICAgIHsKICAg
ICAgICAgbGV0IHJlYWRNb2RpZnlXcml0ZSA9IG5ldyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9u
KHRva2VuLCBsZWZ0KTsKQEAgLTM4Miw3ICs0OTIsNyBAQCBmdW5jdGlvbiBwYXJzZShwcm9ncmFt
LCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAgICAgICAgIHJl
YWRNb2RpZnlXcml0ZS5yZXN1bHRFeHAgPSByZWFkTW9kaWZ5V3JpdGUub2xkVmFsdWVSZWYoKTsK
ICAgICAgICAgcmV0dXJuIHJlYWRNb2RpZnlXcml0ZTsKICAgICB9Ci0gICAgCisKICAgICBmdW5j
dGlvbiBwYXJzZVN1ZmZpeE9wZXJhdG9yKGxlZnQsIGFjY2VwdGFibGVPcGVyYXRvcnMpCiAgICAg
ewogICAgICAgICBsZXQgdG9rZW47CkBAIC0zOTUsMTEgKzUwNSwxOCBAQCBmdW5jdGlvbiBwYXJz
ZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZzZXQsIHRleHQpCiAg
ICAgICAgICAgICBjYXNlICItPiI6CiAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnRleHQgPT0g
Ii0+IikKICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IG5ldyBEZXJlZmVyZW5jZUV4cHJlc3Np
b24odG9rZW4sIGxlZnQpOwotICAgICAgICAgICAgICAgIGxlZnQgPSBuZXcgRG90RXhwcmVzc2lv
bih0b2tlbiwgbGVmdCwgY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKS50ZXh0KTsKKyAgICAgICAg
ICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAg
ICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAgICAgICAgIGxlZnQg
PSBuZXcgRG90RXhwcmVzc2lvbih0b2tlbiwgbGVmdCwgbWF5YmVFcnJvci50ZXh0KTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgIlsiOiB7CiAgICAgICAgICAgICAg
ICAgbGV0IGluZGV4ID0gcGFyc2VFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgY29uc3Vt
ZSgiXSIpOworICAgICAgICAgICAgICAgIGlmIChpbmRleCBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICAgICAgICAgIGxl
dCBtYXliZUVycm9yID0gY29uc3VtZSgiXSIpOworICAgICAgICAgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
bWF5YmVFcnJvcjsKICAgICAgICAgICAgICAgICBsZWZ0ID0gbmV3IEluZGV4RXhwcmVzc2lvbih0
b2tlbiwgbGVmdCwgaW5kZXgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpAQCAtNDA5LDcgKzUyNiw3IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3Jp
Z2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgfQogICAgICAgICByZXR1
cm4gbGVmdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlU3VmZml4
KCkKICAgICB7CiAgICAgICAgIGxldCBhY2NlcHRhYmxlT3BlcmF0b3JzID0gWyIrKyIsICItLSIs
ICIuIiwgIi0+IiwgIlsiXTsKQEAgLTQxNywxMyArNTM0LDE4IEBAIGZ1bmN0aW9uIHBhcnNlKHBy
b2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAg
ICAgbGV0IGxlZnQ7CiAgICAgICAgIGlmIChpc0NhbGxFeHByZXNzaW9uKCkpIHsKICAgICAgICAg
ICAgIGxlZnQgPSBwYXJzZUNhbGxFeHByZXNzaW9uKCk7CisgICAgICAgICAgICBpZiAobGVmdCBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVmdDsKICAg
ICAgICAgICAgIGFjY2VwdGFibGVPcGVyYXRvcnMgPSBsaW1pdGVkT3BlcmF0b3JzOwotICAgICAg
ICB9IGVsc2UKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxlZnQgPSBwYXJzZVRlcm0o
KTsKLSAgICAgICAgCisgICAgICAgICAgICBpZiAobGVmdCBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgICAgICByZXR1cm4gbGVmdDsKKyAgICAgICAgfQorCiAgICAgICAgIHJl
dHVybiBwYXJzZVN1ZmZpeE9wZXJhdG9yKGxlZnQsIGFjY2VwdGFibGVPcGVyYXRvcnMpOwogICAg
IH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIGZpbmlzaFBhcnNpbmdQcmVJbmNyZW1lbnQodG9rZW4s
IGxlZnQsIGV4dHJhQXJnKQogICAgIHsKICAgICAgICAgbGV0IHJlYWRNb2RpZnlXcml0ZSA9IG5l
dyBSZWFkTW9kaWZ5V3JpdGVFeHByZXNzaW9uKHRva2VuLCBsZWZ0KTsKQEAgLTQzMSw1NCArNTUz
LDcyIEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51
bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgcmVhZE1vZGlmeVdyaXRlLnJlc3VsdEV4cCA9IHJl
YWRNb2RpZnlXcml0ZS5uZXdWYWx1ZVJlZigpOwogICAgICAgICByZXR1cm4gcmVhZE1vZGlmeVdy
aXRlOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUHJlSW5jcmVtZW50KCkKICAg
ICB7CiAgICAgICAgIGxldCB0b2tlbiA9IGNvbnN1bWUoIisrIiwgIi0tIik7CisgICAgICAgIGlm
ICh0b2tlbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiB0b2tl
bjsKICAgICAgICAgbGV0IGxlZnQgPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgIGlm
IChsZWZ0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGxlZnQ7
CiAgICAgICAgIHJldHVybiBmaW5pc2hQYXJzaW5nUHJlSW5jcmVtZW50KHRva2VuLCBsZWZ0KTsK
ICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlUHJlZml4KCkKICAgICB7
CiAgICAgICAgIGxldCB0b2tlbjsKICAgICAgICAgaWYgKHRlc3QoIisrIiwgIi0tIikpCiAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VQcmVJbmNyZW1lbnQoKTsKLSAgICAgICAgaWYgKHRva2VuID0g
dHJ5Q29uc3VtZSgiKyIsICItIiwgIn4iKSkKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4
cHJlc3Npb24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0LCBbcGFyc2VQb3NzaWJsZVBy
ZWZpeCgpXSk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIioiKSkKLSAgICAgICAg
ICAgIHJldHVybiBuZXcgRGVyZWZlcmVuY2VFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3NpYmxl
UHJlZml4KCkpOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCImIikpCi0gICAgICAg
ICAgICByZXR1cm4gbmV3IE1ha2VQdHJFeHByZXNzaW9uKHRva2VuLCBwYXJzZVBvc3NpYmxlUHJl
Zml4KCkpOwotICAgICAgICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCJAIikpCi0gICAgICAgICAg
ICByZXR1cm4gbmV3IE1ha2VBcnJheVJlZkV4cHJlc3Npb24odG9rZW4sIHBhcnNlUG9zc2libGVQ
cmVmaXgoKSk7Ci0gICAgICAgIGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIiEiKSkgeworICAgICAg
ICBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIrIiwgIi0iLCAifiIpKSB7CisgICAgICAgICAgICBs
ZXQgcG9zc2libGVQcmVmaXggPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgICAgICBp
ZiAocG9zc2libGVQcmVmaXggaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIFdTeW50YXhFcnJvcjsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsbEV4cHJl
c3Npb24odG9rZW4sICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0LCBbcG9zc2libGVQcmVmaXhdKTsK
KyAgICAgICAgfSBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIqIikpIHsKKyAgICAgICAgICAgIGxl
dCBwb3NzaWJsZVByZWZpeCA9IHBhcnNlUG9zc2libGVQcmVmaXgoKTsKKyAgICAgICAgICAgIGlm
IChwb3NzaWJsZVByZWZpeCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gV1N5bnRheEVycm9yOworICAgICAgICAgICAgcmV0dXJuIG5ldyBEZXJlZmVyZW5j
ZUV4cHJlc3Npb24odG9rZW4sIHBvc3NpYmxlUHJlZml4KTsKKyAgICAgICAgfSBpZiAodG9rZW4g
PSB0cnlDb25zdW1lKCImIikpIHsKKyAgICAgICAgICAgIGxldCBwb3NzaWJsZVByZWZpeCA9IHBh
cnNlUG9zc2libGVQcmVmaXgoKTsKKyAgICAgICAgICAgIGlmIChwb3NzaWJsZVByZWZpeCBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gV1N5bnRheEVycm9y
OworICAgICAgICAgICAgcmV0dXJuIG5ldyBNYWtlUHRyRXhwcmVzc2lvbih0b2tlbiwgcG9zc2li
bGVQcmVmaXgpOworICAgICAgICB9IGlmICh0b2tlbiA9IHRyeUNvbnN1bWUoIkAiKSkgeworICAg
ICAgICAgICAgbGV0IHBvc3NpYmxlUHJlZml4ID0gcGFyc2VQb3NzaWJsZVByZWZpeCgpOworICAg
ICAgICAgICAgaWYgKHBvc3NpYmxlUHJlZml4IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAg
ICAgICAgICAgICAgIHJldHVybiBXU3ludGF4RXJyb3I7CisgICAgICAgICAgICByZXR1cm4gbmV3
IE1ha2VBcnJheVJlZkV4cHJlc3Npb24odG9rZW4sIHBvc3NpYmxlUHJlZml4KTsKKyAgICAgICAg
fSBpZiAodG9rZW4gPSB0cnlDb25zdW1lKCIhIikpIHsKICAgICAgICAgICAgIGxldCByZW1haW5k
ZXIgPSBwYXJzZVBvc3NpYmxlUHJlZml4KCk7CisgICAgICAgICAgICBpZiAocmVtYWluZGVyIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiByZW1haW5kZXI7
CiAgICAgICAgICAgICByZXR1cm4gbmV3IExvZ2ljYWxOb3QodG9rZW4sIG5ldyBDYWxsRXhwcmVz
c2lvbihyZW1haW5kZXIub3JpZ2luLCAiYm9vbCIsIFtyZW1haW5kZXJdKSk7CiAgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIHBhcnNlUG9zc2libGVTdWZmaXgoKTsKICAgICB9Ci0gICAgCisKICAg
ICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlUHJvZHVjdCgpCiAgICAgewogICAgICAgICByZXR1cm4g
cGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsiKiIsICIvIiwgIiUiXSwgcGFyc2VQb3NzaWJsZVByZWZp
eCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZVN1bSgpCiAgICAg
ewogICAgICAgICByZXR1cm4gcGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsiKyIsICItIl0sIHBhcnNl
UG9zc2libGVQcm9kdWN0KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBvc3Np
YmxlU2hpZnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHBhcnNlTGVmdE9wZXJhdG9yQ2FsbChb
Ijw8IiwgIj4+Il0sIHBhcnNlUG9zc2libGVTdW0pOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0
aW9uIHBhcnNlUG9zc2libGVSZWxhdGlvbmFsSW5lcXVhbGl0eSgpCiAgICAgewogICAgICAgICBy
ZXR1cm4gcGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsiPCIsICI+IiwgIjw9IiwgIj49Il0sIHBhcnNl
UG9zc2libGVTaGlmdCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJs
ZVJlbGF0aW9uYWxFcXVhbGl0eSgpCiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJpY1BhcnNl
TGVmdCgKQEAgLTQ5MCwxMDAgKzYzMCwxMjkgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3Jp
Z2luLCBvcmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5j
dGlvbiBwYXJzZVBvc3NpYmxlQml0d2lzZUFuZCgpCiAgICAgewogICAgICAgICByZXR1cm4gcGFy
c2VMZWZ0T3BlcmF0b3JDYWxsKFsiJiJdLCBwYXJzZVBvc3NpYmxlUmVsYXRpb25hbEVxdWFsaXR5
KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVBvc3NpYmxlQml0d2lzZVhvcigp
CiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VMZWZ0T3BlcmF0b3JDYWxsKFsiXiJdLCBwYXJz
ZVBvc3NpYmxlQml0d2lzZUFuZCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQ
b3NzaWJsZUJpdHdpc2VPcigpCiAgICAgewogICAgICAgICByZXR1cm4gcGFyc2VMZWZ0T3BlcmF0
b3JDYWxsKFsifCJdLCBwYXJzZVBvc3NpYmxlQml0d2lzZVhvcik7CiAgICAgfQotICAgIAorCiAg
ICAgZnVuY3Rpb24gcGFyc2VMZWZ0TG9naWNhbEV4cHJlc3Npb24odGV4dHMsIG5leHRQYXJzZXIp
CiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJpY1BhcnNlTGVmdCgKICAgICAgICAgICAgIHRl
eHRzLCBuZXh0UGFyc2VyLAogICAgICAgICAgICAgKHRva2VuLCBsZWZ0LCByaWdodCkgPT4gbmV3
IExvZ2ljYWxFeHByZXNzaW9uKHRva2VuLCB0b2tlbi50ZXh0LCBuZXcgQ2FsbEV4cHJlc3Npb24o
bGVmdC5vcmlnaW4sICJib29sIiwgW2xlZnRdKSwgbmV3IENhbGxFeHByZXNzaW9uKHJpZ2h0Lm9y
aWdpbiwgImJvb2wiLCBbcmlnaHRdKSkpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBh
cnNlUG9zc2libGVMb2dpY2FsQW5kKCkKICAgICB7CiAgICAgICAgIHJldHVybiBwYXJzZUxlZnRM
b2dpY2FsRXhwcmVzc2lvbihbIiYmIl0sIHBhcnNlUG9zc2libGVCaXR3aXNlT3IpOwogICAgIH0K
LSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUG9zc2libGVMb2dpY2FsT3IoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHBhcnNlTGVmdExvZ2ljYWxFeHByZXNzaW9uKFsifHwiXSwgcGFyc2VQb3Nz
aWJsZUxvZ2ljYWxBbmQpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlUG9zc2li
bGVUZXJuYXJ5Q29uZGl0aW9uYWwoKQogICAgIHsKICAgICAgICAgbGV0IHByZWRpY2F0ZSA9IHBh
cnNlUG9zc2libGVMb2dpY2FsT3IoKTsKKyAgICAgICAgaWYgKHByZWRpY2F0ZSBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBwcmVkaWNhdGU7CiAgICAgICAgIGxl
dCBvcGVyYXRvciA9IHRyeUNvbnN1bWUoIj8iKTsKICAgICAgICAgaWYgKCFvcGVyYXRvcikKICAg
ICAgICAgICAgIHJldHVybiBwcmVkaWNhdGU7CiAgICAgICAgIGxldCBib2R5RXhwcmVzc2lvbiA9
IHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCk7Ci0gICAgICAgIGNvbnN1bWUoIjoiKTsKKyAgICAg
ICAgaWYgKGJvZHlFeHByZXNzaW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIGJvZHlFeHByZXNzaW9uOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1
bWUoIjoiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3Ip
CisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IGVsc2VFeHByZXNz
aW9uID0gcGFyc2VQb3NzaWJsZUFzc2lnbm1lbnQoKTsKKyAgICAgICAgaWYgKGVsc2VFeHByZXNz
aW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGVsc2VFeHBy
ZXNzaW9uOwogICAgICAgICByZXR1cm4gbmV3IFRlcm5hcnlFeHByZXNzaW9uKG9wZXJhdG9yLCBw
cmVkaWNhdGUsIGJvZHlFeHByZXNzaW9uLCBlbHNlRXhwcmVzc2lvbik7CiAgICAgfQotICAgIAor
CiAgICAgZnVuY3Rpb24gcGFyc2VQb3NzaWJsZUFzc2lnbm1lbnQobW9kZSkKICAgICB7CiAgICAg
ICAgIGxldCBsaHMgPSBwYXJzZVBvc3NpYmxlVGVybmFyeUNvbmRpdGlvbmFsKCk7CisgICAgICAg
IGlmIChsaHMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbGhz
OwogICAgICAgICBsZXQgb3BlcmF0b3IgPSB0cnlDb25zdW1lKCI9IiwgIis9IiwgIi09IiwgIio9
IiwgIi89IiwgIiU9IiwgIl49IiwgInw9IiwgIiY9Iik7CiAgICAgICAgIGlmICghb3BlcmF0b3Ip
IHsKICAgICAgICAgICAgIGlmIChtb2RlID09ICJyZXF1aXJlZCIpCi0gICAgICAgICAgICAgICAg
bGV4ZXIuZmFpbCgiRXhwZWN0ZWQgYXNzaWdubWVudDogIiArIGxleGVyLl90ZXh0LnN1YnN0cmlu
ZyhsZXhlci5faW5kZXgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFpbCgiRXhwZWN0ZWQg
YXNzaWdubWVudDogIiArIGxleGVyLl90ZXh0LnN1YnN0cmluZyhsZXhlci5faW5kZXgpKTsKICAg
ICAgICAgICAgIHJldHVybiBsaHM7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG9wZXJhdG9yLnRl
eHQgPT0gIj0iKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBBc3NpZ25tZW50KG9wZXJhdG9yLCBs
aHMsIHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCkpOwotICAgICAgICByZXR1cm4gZmluaXNoUGFy
c2luZ1ByZUluY3JlbWVudChvcGVyYXRvciwgbGhzLCBwYXJzZVBvc3NpYmxlQXNzaWdubWVudCgp
KTsKKyAgICAgICAgaWYgKG9wZXJhdG9yLnRleHQgPT0gIj0iKSB7CisgICAgICAgICAgICBsZXQg
aW5uZXJBc3NpZ25tZW50ID0gcGFyc2VQb3NzaWJsZUFzc2lnbm1lbnQoKTsKKyAgICAgICAgICAg
IGlmIChpbm5lckFzc2lnbm1lbnQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGlubmVyQXNzaWdubWVudDsKKyAgICAgICAgICAgIHJldHVybiBuZXcgQXNz
aWdubWVudChvcGVyYXRvciwgbGhzLCBpbm5lckFzc2lnbm1lbnQpOworICAgICAgICB9CisgICAg
ICAgIGxldCBpbm5lckFzc2lnbm1lbnQgPSBwYXJzZVBvc3NpYmxlQXNzaWdubWVudCgpOworICAg
ICAgICBpZiAoaW5uZXJBc3NpZ25tZW50IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgcmV0dXJuIGlubmVyQXNzaWdubWVudDsKKyAgICAgICAgcmV0dXJuIGZpbmlzaFBhcnNp
bmdQcmVJbmNyZW1lbnQob3BlcmF0b3IsIGxocywgaW5uZXJBc3NpZ25tZW50KTsKICAgICB9Ci0g
ICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUFzc2lnbm1lbnQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHBhcnNlUG9zc2libGVBc3NpZ25tZW50KCJyZXF1aXJlZCIpOwogICAgIH0KLSAgICAKKwog
ICAgIGZ1bmN0aW9uIHBhcnNlUG9zdEluY3JlbWVudCgpCiAgICAgewotICAgICAgICBsZXQgbGVm
dCA9IHBhcnNlU3VmZml4T3BlcmF0b3IocGFyc2VUZXJtKCksICIuIiwgIi0+IiwgIlsiKTsKKyAg
ICAgICAgbGV0IHRlcm0gPSBwYXJzZVRlcm0oKTsKKyAgICAgICAgaWYgKHRlcm0gaW5zdGFuY2Vv
ZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdGVybTsKKyAgICAgICAgbGV0IGxl
ZnQgPSBwYXJzZVN1ZmZpeE9wZXJhdG9yKHRlcm0sICIuIiwgIi0+IiwgIlsiKTsKKyAgICAgICAg
aWYgKGxlZnQgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbGVm
dDsKICAgICAgICAgbGV0IHRva2VuID0gY29uc3VtZSgiKysiLCAiLS0iKTsKKyAgICAgICAgaWYg
KHRva2VuIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRva2Vu
OwogICAgICAgICByZXR1cm4gZmluaXNoUGFyc2luZ1Bvc3RJbmNyZW1lbnQodG9rZW4sIGxlZnQp
OwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlRWZmZWN0ZnVsRXhwcmVzc2lvbigp
CiAgICAgewogICAgICAgICBpZiAoaXNDYWxsRXhwcmVzc2lvbigpKQogICAgICAgICAgICAgcmV0
dXJuIHBhcnNlQ2FsbEV4cHJlc3Npb24oKTsKLSAgICAgICAgbGV0IHByZUluY3JlbWVudCA9IGxl
eGVyLmJhY2t0cmFja2luZ1Njb3BlKHBhcnNlUHJlSW5jcmVtZW50KTsKKyAgICAgICAgbGV0IHBy
ZUluY3JlbWVudCA9IGJhY2t0cmFja2luZ1Njb3BlKHBhcnNlUHJlSW5jcmVtZW50KTsKICAgICAg
ICAgaWYgKHByZUluY3JlbWVudCkKICAgICAgICAgICAgIHJldHVybiBwcmVJbmNyZW1lbnQ7Ci0g
ICAgICAgIGxldCBwb3N0SW5jcmVtZW50ID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUocGFyc2VQ
b3N0SW5jcmVtZW50KTsKKyAgICAgICAgbGV0IHBvc3RJbmNyZW1lbnQgPSBiYWNrdHJhY2tpbmdT
Y29wZShwYXJzZVBvc3RJbmNyZW1lbnQpOwogICAgICAgICBpZiAocG9zdEluY3JlbWVudCkKICAg
ICAgICAgICAgIHJldHVybiBwb3N0SW5jcmVtZW50OwogICAgICAgICByZXR1cm4gcGFyc2VBc3Np
Z25tZW50KCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gZ2VuZXJpY1BhcnNlQ29tbWFF
eHByZXNzaW9uKGZpbmFsRXhwcmVzc2lvblBhcnNlcikKICAgICB7CiAgICAgICAgIGxldCBsaXN0
ID0gW107CiAgICAgICAgIGxldCBvcmlnaW4gPSBsZXhlci5wZWVrKCk7CiAgICAgICAgIGlmICgh
b3JpZ2luKQotICAgICAgICAgICAgbGV4ZXIuZmFpbCgiVW5leHBlY3RlZCBlbmQgb2YgZmlsZSIp
OworICAgICAgICAgICAgcmV0dXJuIGZhaWwoIlVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiKTsKICAg
ICAgICAgZm9yICg7OykgewotICAgICAgICAgICAgbGV0IGVmZmVjdGZ1bEV4cHJlc3Npb24gPSBs
ZXhlci5iYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgcGFyc2VFZmZl
Y3RmdWxFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgY29uc3VtZSgiLCIpOworICAgICAg
ICAgICAgbGV0IGVmZmVjdGZ1bEV4cHJlc3Npb24gPSBiYWNrdHJhY2tpbmdTY29wZSgoKSA9PiB7
CisgICAgICAgICAgICAgICAgbGV0IGVmZmVjdGZ1bEV4cHJlc3Npb24gPSBwYXJzZUVmZmVjdGZ1
bEV4cHJlc3Npb24oKTsKKyAgICAgICAgICAgICAgICBpZiAoZWZmZWN0ZnVsRXhwcmVzc2lvbiBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVmZmVj
dGZ1bEV4cHJlc3Npb247CisgICAgICAgICAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1l
KCIsIik7CisgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICAg
ICAgICAgIHJldHVybiBlZmZlY3RmdWxFeHByZXNzaW9uOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICBpZiAoIWVmZmVjdGZ1bEV4cHJlc3Npb24pIHsKICAgICAgICAgICAgICAgICBsZXQg
ZmluYWwgPSBmaW5hbEV4cHJlc3Npb25QYXJzZXIoKTsKQEAgLTU5OCw4OSArNzY3LDE0MSBAQCBm
dW5jdGlvbiBwYXJzZShwcm9ncmFtLCBvcmlnaW4sIG9yaWdpbktpbmQsIGxpbmVOdW1iZXJPZmZz
ZXQsIHRleHQpCiAgICAgICAgICAgICByZXR1cm4gbGlzdFswXTsKICAgICAgICAgcmV0dXJuIG5l
dyBDb21tYUV4cHJlc3Npb24ob3JpZ2luLCBsaXN0KTsKICAgICB9Ci0gICAgCisKICAgICBmdW5j
dGlvbiBwYXJzZUNvbW1hRXhwcmVzc2lvbigpCiAgICAgewogICAgICAgICByZXR1cm4gZ2VuZXJp
Y1BhcnNlQ29tbWFFeHByZXNzaW9uKHBhcnNlUG9zc2libGVBc3NpZ25tZW50KTsKICAgICB9Ci0g
ICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUV4cHJlc3Npb24oKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHBhcnNlQ29tbWFFeHByZXNzaW9uKCk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24g
cGFyc2VFZmZlY3RmdWxTdGF0ZW1lbnQoKQogICAgIHsKICAgICAgICAgbGV0IHJlc3VsdCA9IGdl
bmVyaWNQYXJzZUNvbW1hRXhwcmVzc2lvbihwYXJzZUVmZmVjdGZ1bEV4cHJlc3Npb24pOwotICAg
ICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBsZXQgbWF5YmVFcnJv
ciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVJldHVybigpCiAgICAg
ewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgicmV0dXJuIik7CisgICAgICAgIGlmIChv
cmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2lu
OwogICAgICAgICBpZiAodHJ5Q29uc3VtZSgiOyIpKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBS
ZXR1cm4ob3JpZ2luLCBudWxsKTsKICAgICAgICAgbGV0IGV4cHJlc3Npb24gPSBwYXJzZUV4cHJl
c3Npb24oKTsKLSAgICAgICAgY29uc3VtZSgiOyIpOworICAgICAgICBpZiAoZXhwcmVzc2lvbiBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBleHByZXNzaW9uOwor
ICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBSZXR1cm4ob3JpZ2luLCBleHByZXNzaW9uKTsKICAg
ICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUJyZWFrKCkKICAgICB7CiAgICAgICAgIGxl
dCBvcmlnaW4gPSBjb25zdW1lKCJicmVhayIpOwotICAgICAgICBjb25zdW1lKCI7Iik7CisgICAg
ICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1
cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAg
ICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBCcmVhayhvcmlnaW4pOwogICAg
IH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlQ29udGludWUoKQogICAgIHsKICAgICAgICAg
bGV0IG9yaWdpbiA9IGNvbnN1bWUoImNvbnRpbnVlIik7Ci0gICAgICAgIGNvbnN1bWUoIjsiKTsK
KyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBvcmlnaW47CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOwor
ICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAg
ICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gbmV3IENvbnRpbnVlKG9yaWdp
bik7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VJZlN0YXRlbWVudCgpCiAgICAgewogICAg
ICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgiaWYiKTsKLSAgICAgICAgY29uc3VtZSgiKCIpOwor
ICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
cmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7Cisg
ICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCBjb25kaXRpb25hbCA9IHBhcnNlRXhw
cmVzc2lvbigpOwotICAgICAgICBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChjb25kaXRpb25h
bCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBjb25kaXRpb25h
bDsKKyAgICAgICAgbWF5YmVFcnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKICAgICAgICAgbGV0IGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICBpZiAo
Ym9keSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5Owog
ICAgICAgICBsZXQgZWxzZUJvZHk7Ci0gICAgICAgIGlmICh0cnlDb25zdW1lKCJlbHNlIikpCisg
ICAgICAgIGlmICh0cnlDb25zdW1lKCJlbHNlIikpIHsKICAgICAgICAgICAgIGVsc2VCb2R5ID0g
cGFyc2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChlbHNlQm9keSBpbnN0YW5jZW9mIFdT
eW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZWxzZUJvZHk7CisgICAgICAgIH0K
ICAgICAgICAgcmV0dXJuIG5ldyBJZlN0YXRlbWVudChvcmlnaW4sIG5ldyBDYWxsRXhwcmVzc2lv
bihjb25kaXRpb25hbC5vcmlnaW4sICJib29sIiwgW2NvbmRpdGlvbmFsXSksIGJvZHksIGVsc2VC
b2R5KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZVdoaWxlKCkKICAgICB7CiAgICAgICAg
IGxldCBvcmlnaW4gPSBjb25zdW1lKCJ3aGlsZSIpOwotICAgICAgICBjb25zdW1lKCIoIik7Cisg
ICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gb3JpZ2luOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAg
ICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgbGV0IGNvbmRpdGlvbmFsID0gcGFyc2VFeHBy
ZXNzaW9uKCk7Ci0gICAgICAgIGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKGNvbmRpdGlvbmFs
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbmFs
OworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgiKSIpOworICAgICAgICBpZiAobWF5YmVF
cnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVy
cm9yOwogICAgICAgICBsZXQgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAgIGlmIChi
b2R5IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGJvZHk7CiAg
ICAgICAgIHJldHVybiBuZXcgV2hpbGVMb29wKG9yaWdpbiwgbmV3IENhbGxFeHByZXNzaW9uKGNv
bmRpdGlvbmFsLm9yaWdpbiwgImJvb2wiLCBbY29uZGl0aW9uYWxdKSwgYm9keSk7CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gcGFyc2VGb3IoKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNv
bnN1bWUoImZvciIpOwotICAgICAgICBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChvcmlnaW4g
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gb3JpZ2luOworICAg
ICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIigiKTsKKyAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKICAgICAgICAgbGV0IGluaXRpYWxpemF0aW9uOwogICAgICAgICBpZiAodHJ5Q29uc3VtZSgi
OyIpKQogICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gPSB1bmRlZmluZWQ7CiAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24gPSBsZXhlci5iYWNrdHJhY2tpbmdTY29w
ZShwYXJzZVZhcmlhYmxlRGVjbHMpOwotICAgICAgICAgICAgaWYgKCFpbml0aWFsaXphdGlvbikK
KyAgICAgICAgICAgIGluaXRpYWxpemF0aW9uID0gYmFja3RyYWNraW5nU2NvcGUocGFyc2VWYXJp
YWJsZURlY2xzKTsKKyAgICAgICAgICAgIGlmICghaW5pdGlhbGl6YXRpb24pIHsKICAgICAgICAg
ICAgICAgICBpbml0aWFsaXphdGlvbiA9IHBhcnNlRWZmZWN0ZnVsU3RhdGVtZW50KCk7CisgICAg
ICAgICAgICAgICAgaWYgKGluaXRpYWxpemF0aW9uIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5pdGlhbGl6YXRpb247CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KICAgICAgICAgbGV0IGNvbmRpdGlvbiA9IHRyeUNvbnN1bWUoIjsiKTsKICAg
ICAgICAgaWYgKGNvbmRpdGlvbikKICAgICAgICAgICAgIGNvbmRpdGlvbiA9IHVuZGVmaW5lZDsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjb25kaXRpb24gPSBwYXJzZUV4cHJlc3Npb24o
KTsKLSAgICAgICAgICAgIGNvbnN1bWUoIjsiKTsKKyAgICAgICAgICAgIGlmIChjb25kaXRpb24g
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlv
bjsKKyAgICAgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCI7Iik7CisgICAgICAgICAgICBp
ZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgICAgIGNvbmRpdGlvbiA9IG5ldyBDYWxsRXhwcmVz
c2lvbihjb25kaXRpb24ub3JpZ2luLCAiYm9vbCIsIFtjb25kaXRpb25dKTsKICAgICAgICAgfQog
ICAgICAgICBsZXQgaW5jcmVtZW50OwpAQCAtNjg4LDU5ICs5MDksMTExIEBAIGZ1bmN0aW9uIHBh
cnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkK
ICAgICAgICAgICAgIGluY3JlbWVudCA9IHVuZGVmaW5lZDsKICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICBpbmNyZW1lbnQgPSBwYXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIGNvbnN1
bWUoIikiKTsKKyAgICAgICAgICAgIGlmIChpbmNyZW1lbnQgaW5zdGFuY2VvZiBXU3ludGF4RXJy
b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGluY3JlbWVudDsKKyAgICAgICAgICAgIG1heWJl
RXJyb3IgPSBjb25zdW1lKCIpIik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAg
ICAgICAgfQogICAgICAgICBsZXQgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7CisgICAgICAgIGlm
IChib2R5IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGJvZHk7
CiAgICAgICAgIHJldHVybiBuZXcgRm9yTG9vcChvcmlnaW4sIGluaXRpYWxpemF0aW9uLCBjb25k
aXRpb24sIGluY3JlbWVudCwgYm9keSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VEbygp
CiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgiZG8iKTsKKyAgICAgICAgaWYg
KG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBvcmln
aW47CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKLSAgICAgICAgY29uc3Vt
ZSgid2hpbGUiKTsKLSAgICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAoYm9keSBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBib2R5OworICAgICAgICBs
ZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIndoaWxlIik7CisgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CisgICAgICAgIG1heWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVy
cm9yIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJy
b3I7CiAgICAgICAgIGxldCBjb25kaXRpb25hbCA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAg
ICBjb25zdW1lKCIpIik7CisgICAgICAgIGlmIChjb25kaXRpb25hbCBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBjb25kaXRpb25hbDsKKyAgICAgICAgbWF5YmVF
cnJvciA9IGNvbnN1bWUoIikiKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0
dXJuIG5ldyBEb1doaWxlTG9vcChvcmlnaW4sIGJvZHksIG5ldyBDYWxsRXhwcmVzc2lvbihjb25k
aXRpb25hbC5vcmlnaW4sICJib29sIiwgW2NvbmRpdGlvbmFsXSkpOwogICAgIH0KLSAgICAKKwog
ICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVEZWNscygpCiAgICAgewogICAgICAgICBsZXQgdHlw
ZSA9IHBhcnNlVHlwZSgpOworICAgICAgICBpZiAodHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiB0eXBlOwogICAgICAgICBsZXQgbGlzdCA9IFtdOwogICAg
ICAgICBkbyB7CiAgICAgICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVy
Iik7CisgICAgICAgICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gbmFtZTsKICAgICAgICAgICAgIGxldCBpbml0aWFsaXplciA9IHRy
eUNvbnN1bWUoIj0iKSA/IHBhcnNlRXhwcmVzc2lvbigpIDogbnVsbDsKKyAgICAgICAgICAgIGlm
IChpbml0aWFsaXplciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gaW5pdGlhbGl6ZXI7CiAgICAgICAgICAgICBsaXN0LnB1c2gobmV3IFZhcmlhYmxlRGVj
bChuYW1lLCBuYW1lLnRleHQsIHR5cGUsIGluaXRpYWxpemVyKSk7Ci0gICAgICAgIH0gd2hpbGUg
KGNvbnN1bWUoIiwiLCAiOyIpLnRleHQgPT0gIiwiKTsKKyAgICAgICAgICAgIGxldCBtYXliZUVy
cm9yID0gY29uc3VtZSgiLCIsICI7Iik7CisgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0
YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
KyAgICAgICAgICAgIGlmIChtYXliZUVycm9yLnRleHQgIT0gIiwiKQorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9IHdoaWxlICh0cnVlKTsKICAgICAgICAgcmV0dXJuIG5ldyBDb21t
YUV4cHJlc3Npb24odHlwZS5vcmlnaW4sIGxpc3QpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0
aW9uIHBhcnNlU3dpdGNoQ2FzZSgpCiAgICAgewogICAgICAgICBsZXQgdG9rZW4gPSBjb25zdW1l
KCJkZWZhdWx0IiwgImNhc2UiKTsKKyAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICBsZXQgdmFsdWU7Ci0g
ICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJjYXNlIikKKyAgICAgICAgaWYgKHRva2VuLnRleHQg
PT0gImNhc2UiKSB7CiAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlQ29uc3RleHByKCk7Ci0gICAg
ICAgIGNvbnN1bWUoIjoiKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKyAgICAg
ICAgbGV0IG1heWJlRXJyb3IgPSBjb25zdW1lKCI6Iik7CisgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VCbG9ja0JvZHkoIn0iLCAiZGVmYXVsdCIsICJjYXNl
Iik7CisgICAgICAgIGlmIChib2R5IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAg
ICAgcmV0dXJuIGJvZHk7CiAgICAgICAgIHJldHVybiBuZXcgU3dpdGNoQ2FzZSh0b2tlbiwgdmFs
dWUsIGJvZHkpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlU3dpdGNoU3RhdGVt
ZW50KCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJzd2l0Y2giKTsKLSAg
ICAgICAgY29uc3VtZSgiKCIpOworICAgICAgICBpZiAob3JpZ2luIGluc3RhbmNlb2YgV1N5bnRh
eEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAgICAgICAgbGV0IG1heWJlRXJy
b3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNlb2YgV1N5
bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAgIGxldCB2
YWx1ZSA9IHBhcnNlRXhwcmVzc2lvbigpOwotICAgICAgICBjb25zdW1lKCIpIik7Ci0gICAgICAg
IGNvbnN1bWUoInsiKTsKKyAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICBtYXliZUVycm9yID0gY29uc3Vt
ZSgiKSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOworICAgICAgICBtYXliZUVycm9yID0gY29u
c3VtZSgieyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgcmVzdWx0ID0g
bmV3IFN3aXRjaFN0YXRlbWVudChvcmlnaW4sIHZhbHVlKTsKLSAgICAgICAgd2hpbGUgKCF0cnlD
b25zdW1lKCJ9IikpCi0gICAgICAgICAgICByZXN1bHQuYWRkKHBhcnNlU3dpdGNoQ2FzZSgpKTsK
KyAgICAgICAgd2hpbGUgKCF0cnlDb25zdW1lKCJ9IikpIHsKKyAgICAgICAgICAgIGxldCBzd2l0
Y2hDYXNlID0gcGFyc2VTd2l0Y2hDYXNlKCk7CisgICAgICAgICAgICBpZiAoc3dpdGNoQ2FzZSBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gc3dpdGNoQ2Fz
ZTsKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoc3dpdGNoQ2FzZSk7CisgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVN0YXRl
bWVudCgpCiAgICAgewogICAgICAgICBsZXQgdG9rZW4gPSBsZXhlci5wZWVrKCk7CkBAIC03NjYs
NzcgKzEwMzksMTA5IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2lu
ZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAgICAgICAgICAgIHJldHVybiBwYXJzZVN3aXRj
aFN0YXRlbWVudCgpOwogICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAidHJhcCIpIHsKICAgICAg
ICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJ0cmFwIik7CisgICAgICAgICAgICBpZiAob3Jp
Z2luIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBvcmln
aW47CiAgICAgICAgICAgICBjb25zdW1lKCI7Iik7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFRy
YXBTdGF0ZW1lbnQob3JpZ2luKTsKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4udGV4dCA9
PSAieyIpCiAgICAgICAgICAgICByZXR1cm4gcGFyc2VCbG9jaygpOwotICAgICAgICBsZXQgdmFy
aWFibGVEZWNsID0gbGV4ZXIuYmFja3RyYWNraW5nU2NvcGUocGFyc2VWYXJpYWJsZURlY2xzKTsK
KyAgICAgICAgbGV0IHZhcmlhYmxlRGVjbCA9IGJhY2t0cmFja2luZ1Njb3BlKHBhcnNlVmFyaWFi
bGVEZWNscyk7CiAgICAgICAgIGlmICh2YXJpYWJsZURlY2wpCiAgICAgICAgICAgICByZXR1cm4g
dmFyaWFibGVEZWNsOwogICAgICAgICByZXR1cm4gcGFyc2VFZmZlY3RmdWxTdGF0ZW1lbnQoKTsK
ICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUJsb2NrQm9keSguLi50ZXJtaW5hdG9y
cykKICAgICB7CiAgICAgICAgIGxldCBibG9jayA9IG5ldyBCbG9jayhvcmlnaW4pOwogICAgICAg
ICB3aGlsZSAoIXRlc3QoLi4udGVybWluYXRvcnMpKSB7CiAgICAgICAgICAgICBsZXQgc3RhdGVt
ZW50ID0gcGFyc2VTdGF0ZW1lbnQoKTsKKyAgICAgICAgICAgIGlmIChzdGF0ZW1lbnQgaW5zdGFu
Y2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRlbWVudDsKICAg
ICAgICAgICAgIGlmIChzdGF0ZW1lbnQpCiAgICAgICAgICAgICAgICAgYmxvY2suYWRkKHN0YXRl
bWVudCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgIH0KLSAgICAKKwog
ICAgIGZ1bmN0aW9uIHBhcnNlQmxvY2soKQogICAgIHsKICAgICAgICAgbGV0IG9yaWdpbiA9IGNv
bnN1bWUoInsiKTsKKyAgICAgICAgaWYgKG9yaWdpbiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBvcmlnaW47CiAgICAgICAgIGxldCBibG9jayA9IHBhcnNlQmxv
Y2tCb2R5KCJ9Iik7Ci0gICAgICAgIGNvbnN1bWUoIn0iKTsKKyAgICAgICAgaWYgKGJsb2NrIGlu
c3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIGJsb2NrOworICAgICAg
ICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIn0iKTsKKyAgICAgICAgaWYgKG1heWJlRXJyb3Ig
aW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsK
ICAgICAgICAgcmV0dXJuIGJsb2NrOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNl
UGFyYW1ldGVyKCkKICAgICB7CiAgICAgICAgIGxldCB0eXBlID0gcGFyc2VUeXBlKCk7CisgICAg
ICAgIGlmICh0eXBlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJu
IHR5cGU7CiAgICAgICAgIGxldCBuYW1lID0gdHJ5Q29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsK
ICAgICAgICAgcmV0dXJuIG5ldyBGdW5jUGFyYW1ldGVyKHR5cGUub3JpZ2luLCBuYW1lID8gbmFt
ZS50ZXh0IDogbnVsbCwgdHlwZSk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24gcGFyc2VQ
YXJhbWV0ZXJzKCkKICAgICB7Ci0gICAgICAgIGNvbnN1bWUoIigiKTsKKyAgICAgICAgbGV0IG1h
eWJlRXJyb3IgPSBjb25zdW1lKCIoIik7CisgICAgICAgIGlmIChtYXliZUVycm9yIGluc3RhbmNl
b2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAgICAgICAg
IGxldCBwYXJhbWV0ZXJzID0gW107CiAgICAgICAgIHdoaWxlICghdGVzdCgiKSIpKSB7Ci0gICAg
ICAgICAgICBwYXJhbWV0ZXJzLnB1c2gocGFyc2VQYXJhbWV0ZXIoKSk7CisgICAgICAgICAgICBs
ZXQgcGFyYW1ldGVyID0gcGFyc2VQYXJhbWV0ZXIoKTsKKyAgICAgICAgICAgIGlmIChwYXJhbWV0
ZXIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHBhcmFt
ZXRlcjsKKyAgICAgICAgICAgIHBhcmFtZXRlcnMucHVzaChwYXJhbWV0ZXIpOwogICAgICAgICAg
ICAgaWYgKCF0cnlDb25zdW1lKCIsIikpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgY29uc3VtZSgiKSIpOworICAgICAgICBtYXliZUVycm9yID0gY29uc3VtZSgi
KSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAg
ICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gcGFyYW1ldGVyczsK
ICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZUZ1bmNOYW1lKCkKICAgICB7CiAgICAg
ICAgIGlmICh0cnlDb25zdW1lKCJvcGVyYXRvciIpKSB7CiAgICAgICAgICAgICBsZXQgdG9rZW4g
PSBjb25zdW1lKCIrIiwgIi0iLCAiKiIsICIvIiwgIiUiLCAiXiIsICImIiwgInwiLCAiPCIsICI+
IiwgIjw9IiwgIj49IiwgIj09IiwgIisrIiwgIi0tIiwgIi4iLCAifiIsICI8PCIsICI+PiIsICJb
Iik7CisgICAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRva2VuOwogICAgICAgICAgICAgaWYgKHRva2VuLnRleHQgPT0g
IiYiKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIlsiKSkgewotICAgICAgICAg
ICAgICAgICAgICBjb25zdW1lKCJdIik7CisgICAgICAgICAgICAgICAgICAgIGxldCBtYXliZUVy
cm9yID0gY29uc3VtZSgiXSIpOworICAgICAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBt
YXliZUVycm9yOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm9wZXJhdG9yJltdIjsKICAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHRyeUNvbnN1bWUoIi4iKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICJvcGVyYXRvciYuIiArIGNvbnN1bWVLaW5kKCJpZGVu
dGlmaWVyIikudGV4dDsKKyAgICAgICAgICAgICAgICBpZiAodHJ5Q29uc3VtZSgiLiIpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZUtpbmQoImlkZW50aWZp
ZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3lu
dGF4RXJyb3IpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJvcjsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuICJvcGVyYXRvciYuIiArIG1heWJlRXJyb3IudGV4dDsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuICJvcGVyYXRvciYiOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHRva2VuLnRleHQgPT0gIi4iKSB7Ci0gICAg
ICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICJvcGVyYXRvci4iICsgY29uc3VtZUtpbmQoImlkZW50
aWZpZXIiKS50ZXh0OworICAgICAgICAgICAgICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZUtp
bmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CisgICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICJvcGVyYXRvci4iICsgbWF5YmVFcnJvci50
ZXh0OwogICAgICAgICAgICAgICAgIGlmICh0cnlDb25zdW1lKCI9IikpCiAgICAgICAgICAgICAg
ICAgICAgIHJlc3VsdCArPSAiPSI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0b2tlbi50ZXh0ID09ICJbIikgewotICAgICAg
ICAgICAgICAgIGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICBsZXQgbWF5YmVFcnJvciA9
IGNvbnN1bWUoIl0iKTsKKyAgICAgICAgICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7CiAg
ICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9ICJvcGVyYXRvcltdIjsKICAgICAgICAgICAgICAg
ICBpZiAodHJ5Q29uc3VtZSgiPSIpKQogICAgICAgICAgICAgICAgICAgICByZXN1bHQgKz0gIj0i
OwpAQCAtODQ0LDcgKzExNDksMTAgQEAgZnVuY3Rpb24gcGFyc2UocHJvZ3JhbSwgb3JpZ2luLCBv
cmlnaW5LaW5kLCBsaW5lTnVtYmVyT2Zmc2V0LCB0ZXh0KQogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcmV0dXJuICJvcGVyYXRvciIgKyB0b2tlbi50ZXh0OwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRleHQ7CisgICAgICAgIGxldCBtYXli
ZUVycm9yID0gY29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgaWYgKG1heWJlRXJy
b3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVFcnJv
cjsKKyAgICAgICAgcmV0dXJuIG1heWJlRXJyb3IudGV4dDsKICAgICB9CiAKICAgICBmdW5jdGlv
biBwYXJzZUZ1bmNEZWNsKCkKQEAgLTg1OCwxMjcgKzExNjYsMjExIEBAIGZ1bmN0aW9uIHBhcnNl
KHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2luZCwgbGluZU51bWJlck9mZnNldCwgdGV4dCkKICAg
ICAgICAgaWYgKG9wZXJhdG9yVG9rZW4pIHsKICAgICAgICAgICAgIG9yaWdpbiA9IG9wZXJhdG9y
VG9rZW47CiAgICAgICAgICAgICByZXR1cm5UeXBlID0gcGFyc2VUeXBlKCk7CisgICAgICAgICAg
ICBpZiAocmV0dXJuVHlwZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcmV0dXJuVHlwZTsKICAgICAgICAgICAgIG5hbWUgPSAib3BlcmF0b3IgY2FzdCI7
CiAgICAgICAgICAgICBpc0Nhc3QgPSB0cnVlOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgc2hhZGVyVHlwZSA9IHRyeUNvbnN1bWUoInZlcnRleCIsICJmcmFnbWVudCIpOwogICAgICAg
ICAgICAgcmV0dXJuVHlwZSA9IHBhcnNlVHlwZSgpOworICAgICAgICAgICAgaWYgKHJldHVyblR5
cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJldHVy
blR5cGU7CiAgICAgICAgICAgICBpZiAoc2hhZGVyVHlwZSkgewogICAgICAgICAgICAgICAgIG9y
aWdpbiA9IHNoYWRlclR5cGU7CiAgICAgICAgICAgICAgICAgc2hhZGVyVHlwZSA9IHNoYWRlclR5
cGUudGV4dDsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIG9yaWdpbiA9IHJl
dHVyblR5cGUub3JpZ2luOwogICAgICAgICAgICAgbmFtZSA9IHBhcnNlRnVuY05hbWUoKTsKKyAg
ICAgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
ICAgIHJldHVybiBuYW1lOwogICAgICAgICAgICAgaXNDYXN0ID0gZmFsc2U7CiAgICAgICAgIH0K
ICAgICAgICAgbGV0IHBhcmFtZXRlcnMgPSBwYXJzZVBhcmFtZXRlcnMoKTsKKyAgICAgICAgaWYg
KHBhcmFtZXRlcnMgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4g
cGFyYW1ldGVyczsKICAgICAgICAgcmV0dXJuIG5ldyBGdW5jKG9yaWdpbiwgbmFtZSwgcmV0dXJu
VHlwZSwgcGFyYW1ldGVycywgaXNDYXN0LCBzaGFkZXJUeXBlKTsKICAgICB9Ci0gICAgCisKICAg
ICBmdW5jdGlvbiBwYXJzZUZ1bmNEZWYoKQogICAgIHsKICAgICAgICAgbGV0IGZ1bmMgPSBwYXJz
ZUZ1bmNEZWNsKCk7CisgICAgICAgIGlmIChmdW5jIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQor
ICAgICAgICAgICAgcmV0dXJuIGZ1bmM7CiAgICAgICAgIGxldCBib2R5ID0gcGFyc2VCbG9jaygp
OworICAgICAgICBpZiAoYm9keSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAg
IHJldHVybiBib2R5OwogICAgICAgICByZXR1cm4gbmV3IEZ1bmNEZWYoZnVuYy5vcmlnaW4sIGZ1
bmMubmFtZSwgZnVuYy5yZXR1cm5UeXBlLCBmdW5jLnBhcmFtZXRlcnMsIGJvZHksIGZ1bmMuaXND
YXN0LCBmdW5jLnNoYWRlclR5cGUpOwogICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNl
RmllbGQoKQogICAgIHsKICAgICAgICAgbGV0IHR5cGUgPSBwYXJzZVR5cGUoKTsKKyAgICAgICAg
aWYgKHR5cGUgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gdHlw
ZTsKICAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOwotICAgICAg
ICBjb25zdW1lKCI7Iik7CisgICAgICAgIGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgIGxldCBtYXliZUVycm9yID0gY29u
c3VtZSgiOyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4gbmV3IEZp
ZWxkKG5hbWUsIG5hbWUudGV4dCwgdHlwZSk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24g
cGFyc2VTdHJ1Y3RUeXBlKCkKICAgICB7CiAgICAgICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJz
dHJ1Y3QiKTsKLSAgICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpLnRl
eHQ7Ci0gICAgICAgIGxldCByZXN1bHQgPSBuZXcgU3RydWN0VHlwZShvcmlnaW4sIG5hbWUpOwot
ICAgICAgICBjb25zdW1lKCJ7Iik7Ci0gICAgICAgIHdoaWxlICghdHJ5Q29uc3VtZSgifSIpKQot
ICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZUZpZWxkKCkpOworICAgICAgICBpZiAob3JpZ2lu
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG9yaWdpbjsKKyAg
ICAgICAgbGV0IG5hbWUgPSBjb25zdW1lS2luZCgiaWRlbnRpZmllciIpOworICAgICAgICBpZiAo
bmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBuYW1lOwor
ICAgICAgICBsZXQgcmVzdWx0ID0gbmV3IFN0cnVjdFR5cGUob3JpZ2luLCBuYW1lLnRleHQpOwor
ICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoInsiKTsKKyAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbWF5YmVF
cnJvcjsKKyAgICAgICAgd2hpbGUgKCF0cnlDb25zdW1lKCJ9IikpIHsKKyAgICAgICAgICAgIGxl
dCBmaWVsZCA9IHBhcnNlRmllbGQoKTsKKyAgICAgICAgICAgIGlmIChmaWVsZCBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmllbGQ7CisgICAgICAgICAg
ICByZXN1bHQuYWRkKGZpZWxkKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gcmVzdWx0Owog
ICAgIH0KLSAgICAKKwogICAgIGZ1bmN0aW9uIHBhcnNlTmF0aXZlRnVuYygpCiAgICAgewogICAg
ICAgICBsZXQgZnVuYyA9IHBhcnNlRnVuY0RlY2woKTsKLSAgICAgICAgY29uc3VtZSgiOyIpOwor
ICAgICAgICBpZiAoZnVuYyBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJl
dHVybiBmdW5jOworICAgICAgICBsZXQgbWF5YmVFcnJvciA9IGNvbnN1bWUoIjsiKTsKKyAgICAg
ICAgaWYgKG1heWJlRXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICBy
ZXR1cm4gbWF5YmVFcnJvcjsKICAgICAgICAgcmV0dXJuIG5ldyBOYXRpdmVGdW5jKGZ1bmMub3Jp
Z2luLCBmdW5jLm5hbWUsIGZ1bmMucmV0dXJuVHlwZSwgZnVuYy5wYXJhbWV0ZXJzLCBmdW5jLmlz
Q2FzdCwgZnVuYy5zaGFkZXJUeXBlKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJz
ZU5hdGl2ZSgpCiAgICAgewogICAgICAgICBsZXQgb3JpZ2luID0gY29uc3VtZSgibmF0aXZlIik7
CisgICAgICAgIGlmIChvcmlnaW4gaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAg
ICByZXR1cm4gb3JpZ2luOwogICAgICAgICBpZiAodHJ5Q29uc3VtZSgidHlwZWRlZiIpKSB7CiAg
ICAgICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAg
ICAgICBpZiAobmFtZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbmFtZTsKICAgICAgICAgICAgIGxldCBhcmdzID0gcGFyc2VUeXBlQXJndW1lbnRzKCk7
Ci0gICAgICAgICAgICBjb25zdW1lKCI7Iik7CisgICAgICAgICAgICBpZiAoYXJncyBpbnN0YW5j
ZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJnczsKKyAgICAgICAg
ICAgIGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiOyIpOworICAgICAgICAgICAgaWYgKG1heWJl
RXJyb3IgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIG1h
eWJlRXJyb3I7CiAgICAgICAgICAgICByZXR1cm4gTmF0aXZlVHlwZS5jcmVhdGUob3JpZ2luLCBu
YW1lLnRleHQsIGFyZ3MpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBwYXJzZU5hdGl2ZUZ1
bmMoKTsKICAgICB9Ci0gICAgCisKICAgICBmdW5jdGlvbiBwYXJzZVJlc3RyaWN0ZWRGdW5jRGVm
KCkKICAgICB7Ci0gICAgICAgIGNvbnN1bWUoInJlc3RyaWN0ZWQiKTsKKyAgICAgICAgbGV0IG1h
eWJlRXJyb3IgPSBjb25zdW1lKCJyZXN0cmljdGVkIik7CisgICAgICAgIGlmIChtYXliZUVycm9y
IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG1heWJlRXJyb3I7
CiAgICAgICAgIGxldCByZXN1bHQ7Ci0gICAgICAgIGlmICh0cnlDb25zdW1lKCJuYXRpdmUiKSkK
KyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIm5hdGl2ZSIpKSB7CiAgICAgICAgICAgICByZXN1bHQg
PSBwYXJzZU5hdGl2ZUZ1bmMoKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKHJlc3Vs
dCBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VGdW5jRGVmKCk7
CisgICAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAgICAgICAgcmVzdWx0LmlzUmVz
dHJpY3RlZCA9IHRydWU7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCiAg
ICAgZnVuY3Rpb24gcGFyc2VFbnVtTWVtYmVyKCkKICAgICB7CiAgICAgICAgIGxldCBuYW1lID0g
Y29uc3VtZUtpbmQoImlkZW50aWZpZXIiKTsKKyAgICAgICAgaWYgKG5hbWUgaW5zdGFuY2VvZiBX
U3ludGF4RXJyb3IpCisgICAgICAgICAgICByZXR1cm4gbmFtZTsKICAgICAgICAgbGV0IHZhbHVl
ID0gbnVsbDsKLSAgICAgICAgaWYgKHRyeUNvbnN1bWUoIj0iKSkKKyAgICAgICAgaWYgKHRyeUNv
bnN1bWUoIj0iKSkgewogICAgICAgICAgICAgdmFsdWUgPSBwYXJzZUNvbnN0ZXhwcigpOworICAg
ICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAg
ICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gbmV3IEVudW1NZW1i
ZXIobmFtZSwgbmFtZS50ZXh0LCB2YWx1ZSk7CiAgICAgfQotICAgIAorCiAgICAgZnVuY3Rpb24g
cGFyc2VFbnVtVHlwZSgpCiAgICAgewotICAgICAgICBjb25zdW1lKCJlbnVtIik7CisgICAgICAg
IGxldCBtYXliZUVycm9yID0gY29uc3VtZSgiZW51bSIpOworICAgICAgICBpZiAobWF5YmVFcnJv
ciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9y
OwogICAgICAgICBsZXQgbmFtZSA9IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIik7CisgICAgICAg
IGlmIChuYW1lIGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgcmV0dXJuIG5h
bWU7CiAgICAgICAgIGxldCBiYXNlVHlwZTsKLSAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjoiKSkK
KyAgICAgICAgaWYgKHRyeUNvbnN1bWUoIjoiKSkgewogICAgICAgICAgICAgYmFzZVR5cGUgPSBw
YXJzZVR5cGUoKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKGJhc2VUeXBlIGluc3Rh
bmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHJldHVybiBiYXNlVHlwZTsKKyAg
ICAgICAgfSBlbHNlCiAgICAgICAgICAgICBiYXNlVHlwZSA9IG5ldyBUeXBlUmVmKG5hbWUsICJp
bnQiKTsKLSAgICAgICAgY29uc3VtZSgieyIpOworICAgICAgICBtYXliZUVycm9yID0gY29uc3Vt
ZSgieyIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikK
KyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICBsZXQgcmVzdWx0ID0gbmV3
IEVudW1UeXBlKG5hbWUsIG5hbWUudGV4dCwgYmFzZVR5cGUpOwogICAgICAgICB3aGlsZSAoIXRl
c3QoIn0iKSkgewotICAgICAgICAgICAgcmVzdWx0LmFkZChwYXJzZUVudW1NZW1iZXIoKSk7Cisg
ICAgICAgICAgICBsZXQgZW51bU1lbWJlciA9IHBhcnNlRW51bU1lbWJlcigpOworICAgICAgICAg
ICAgaWYgKGVudW1NZW1iZXIgaW5zdGFuY2VvZiBXU3ludGF4RXJyb3IpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGVudW1NZW1iZXI7CisgICAgICAgICAgICByZXN1bHQuYWRkKGVudW1NZW1iZXIp
OwogICAgICAgICAgICAgaWYgKCF0cnlDb25zdW1lKCIsIikpCiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KLSAgICAgICAgY29uc3VtZSgifSIpOworICAgICAgICBtYXliZUVycm9y
ID0gY29uc3VtZSgifSIpOworICAgICAgICBpZiAobWF5YmVFcnJvciBpbnN0YW5jZW9mIFdTeW50
YXhFcnJvcikKKyAgICAgICAgICAgIHJldHVybiBtYXliZUVycm9yOwogICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgIH0KLSAgICAKKwogICAgIGZvciAoOzspIHsKICAgICAgICAgbGV0IHRva2Vu
ID0gbGV4ZXIucGVlaygpOwogICAgICAgICBpZiAoIXRva2VuKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBpZiAodG9rZW4udGV4dCA9PSAiOyIpCiAgICAgICAgICAgICBsZXhlci5uZXh0
KCk7Ci0gICAgICAgIGVsc2UgaWYgKHRva2VuLnRleHQgPT0gInR5cGVkZWYiKQotICAgICAgICAg
ICAgcHJvZ3JhbS5hZGQocGFyc2VUeXBlRGVmKCkpOwotICAgICAgICBlbHNlIGlmIChvcmlnaW5L
aW5kID09ICJuYXRpdmUiICYmIHRva2VuLnRleHQgPT0gIm5hdGl2ZSIpCi0gICAgICAgICAgICBw
cm9ncmFtLmFkZChwYXJzZU5hdGl2ZSgpKTsKLSAgICAgICAgZWxzZSBpZiAob3JpZ2luS2luZCA9
PSAibmF0aXZlIiAmJiB0b2tlbi50ZXh0ID09ICJyZXN0cmljdGVkIikKLSAgICAgICAgICAgIHBy
b2dyYW0uYWRkKHBhcnNlUmVzdHJpY3RlZEZ1bmNEZWYoKSk7Ci0gICAgICAgIGVsc2UgaWYgKHRv
a2VuLnRleHQgPT0gInN0cnVjdCIpCi0gICAgICAgICAgICBwcm9ncmFtLmFkZChwYXJzZVN0cnVj
dFR5cGUoKSk7Ci0gICAgICAgIGVsc2UgaWYgKHRva2VuLnRleHQgPT0gImVudW0iKQotICAgICAg
ICAgICAgcHJvZ3JhbS5hZGQocGFyc2VFbnVtVHlwZSgpKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcHJvZ3JhbS5hZGQocGFyc2VGdW5jRGVmKCkpOworICAgICAgICBlbHNlIGlmICh0b2tl
bi50ZXh0ID09ICJ0eXBlZGVmIikgeworICAgICAgICAgICAgbGV0IHR5cGVEZWYgPSBwYXJzZVR5
cGVEZWYoKTsKKyAgICAgICAgICAgIGlmICh0eXBlRGVmIGluc3RhbmNlb2YgV1N5bnRheEVycm9y
KQorICAgICAgICAgICAgICAgIHRocm93IHR5cGVEZWY7CisgICAgICAgICAgICBwcm9ncmFtLmFk
ZCh0eXBlRGVmKTsKKyAgICAgICAgfSBlbHNlIGlmIChvcmlnaW5LaW5kID09ICJuYXRpdmUiICYm
IHRva2VuLnRleHQgPT0gIm5hdGl2ZSIpIHsKKyAgICAgICAgICAgIGxldCBuYXRpdmUgPSBwYXJz
ZU5hdGl2ZSgpOworICAgICAgICAgICAgaWYgKG5hdGl2ZSBpbnN0YW5jZW9mIFdTeW50YXhFcnJv
cikKKyAgICAgICAgICAgICAgICB0aHJvdyBuYXRpdmU7CisgICAgICAgICAgICBwcm9ncmFtLmFk
ZChuYXRpdmUpOworICAgICAgICB9IGVsc2UgaWYgKG9yaWdpbktpbmQgPT0gIm5hdGl2ZSIgJiYg
dG9rZW4udGV4dCA9PSAicmVzdHJpY3RlZCIpIHsKKyAgICAgICAgICAgIGxldCByZXN0cmljdGVk
RnVuY0RlZiA9IHBhcnNlUmVzdHJpY3RlZEZ1bmNEZWYoKTsKKyAgICAgICAgICAgIGlmIChyZXN0
cmljdGVkRnVuY0RlZiBpbnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICB0
aHJvdyByZXN0cmljdGVkRnVuY0RlZjsKKyAgICAgICAgICAgIHByb2dyYW0uYWRkKHJlc3RyaWN0
ZWRGdW5jRGVmKTsKKyAgICAgICAgfSBlbHNlIGlmICh0b2tlbi50ZXh0ID09ICJzdHJ1Y3QiKSB7
CisgICAgICAgICAgICBsZXQgc3RydWN0ID0gcGFyc2VTdHJ1Y3RUeXBlKCk7CisgICAgICAgICAg
ICBpZiAoc3RydWN0IGluc3RhbmNlb2YgV1N5bnRheEVycm9yKQorICAgICAgICAgICAgICAgIHRo
cm93IHN0cnVjdDsKKyAgICAgICAgICAgIHByb2dyYW0uYWRkKHN0cnVjdCk7CisgICAgICAgIH0g
ZWxzZSBpZiAodG9rZW4udGV4dCA9PSAiZW51bSIpIHsKKyAgICAgICAgICAgIGxldCBlbnVtVHlw
ZSA9IHBhcnNlRW51bVR5cGUoKTsKKyAgICAgICAgICAgIGlmIChlbnVtVHlwZSBpbnN0YW5jZW9m
IFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICB0aHJvdyBlbnVtVHlwZTsKKyAgICAgICAg
ICAgIHByb2dyYW0uYWRkKGVudW1UeXBlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGxldCBmdW5jRGVmID0gcGFyc2VGdW5jRGVmKCk7CisgICAgICAgICAgICBpZiAoZnVuY0RlZiBp
bnN0YW5jZW9mIFdTeW50YXhFcnJvcikKKyAgICAgICAgICAgICAgICB0aHJvdyBmdW5jRGVmOwor
ICAgICAgICAgICAgcHJvZ3JhbS5hZGQoZnVuY0RlZik7CisgICAgICAgIH0KICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1NQSVJWLmh0bWwgYi9U
b29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9TUElSVi5odG1sCmluZGV4IDFiMjZjZjJiMmU2
NTE1MjdhMTUyZWU4ZDkyZmYyNWJlZGE2MWQzMzkuLjgwNGNkOWFiZGE2ZDVjM2JlYzAzYmUyNTgy
YWEzZjIzZjAwN2ExODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJ
L1NQSVJWLmh0bWwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU1BJUlYuaHRt
bApAQCAtMTUxLDYgKzE1MSw3IEBAIHRkIHsKICAgICA8c2NyaXB0IHNyYz0iVmFyaWFibGVSZWYu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWZWN0b3JUeXBlLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlzaXRpbmdTZXQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJXTGV4aWNhbEVycm9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iV1N5bnRh
eEVycm9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iV1RyYXBFcnJvci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IldUeXBlRXJyb3IuanMiPjwvc2NyaXB0PgpkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzIGIv
VG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvU3RhbmRhcmRMaWJyYXJ5LmpzCmluZGV4IGZi
MTc1ZTI2YTI3YTQ2NTQ4ZWM5YzJhNTYzZDM4MDMyZmYxZTQ5YzQuLmNmMzA5M2JiZThjZjM3YjI5
M2QzOGE3OWU2ZTc2OTExNmM0NDkzMzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1N0YW5kYXJkTGlicmFyeS5qcworKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9TdGFuZGFyZExpYnJhcnkuanMKQEAgLTc3Myw4ICs3NzMsNyBAQCBsZXQgc3RhbmRh
cmRMaWJyYXJ5ID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLyoKKwogICAgICAgICBm
b3IgKGxldCB0eXBlIG9mIFtgYm9vbGAsIGB1Y2hhcmAsIGB1c2hvcnRgLCBgdWludGAsIGBjaGFy
YCwgYHNob3J0YCwgYGludGAsIGBoYWxmYCwgYGZsb2F0YF0pIHsKICAgICAgICAgICAgIGZvciAo
bGV0IHNpemUgb2YgWzIsIDMsIDRdKSB7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgbWF4VmFs
dWUgb2YgWzIsIDMsIDRdKSB7CkBAIC0xODg5LDcgKzE4ODgsNyBAQCBsZXQgc3RhbmRhcmRMaWJy
YXJ5ID0gKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHBy
aW50KCk7Ci0gICAgICAgIAorICAgICAgICAvKgogICAgICAgICBmb3IgKGxldCB0eXBlIG9mIFtg
dWludGAsIGBpbnRgXSkgewogICAgICAgICAgICAgZm9yIChsZXQgZnVuY3Rpb25OYW1lIG9mIFtg
QWRkYCwgYEFuZGAsIGBFeGNoYW5nZWAsIGBNYXhgLCBgTWluYCwgYE9yYCwgYFhvcmBdKSB7CiAg
ICAgICAgICAgICAgICAgcHJpbnQoYG5hdGl2ZSB2b2lkIEludGVybG9ja2VkJHtmdW5jdGlvbk5h
bWV9KHRocmVhZCBhdG9taWNfJHt0eXBlfSosICR7dHlwZX0sIHRocmVhZCAke3R5cGV9Kik7YCk7
CkBAIC0xODk4LDcgKzE4OTcsNiBAQCBsZXQgc3RhbmRhcmRMaWJyYXJ5ID0gKGZ1bmN0aW9uKCkg
ewogICAgICAgICB9CiAgICAgICAgIHByaW50KCk7CiAgICAgICAgICovCi0KICAgICAgICAgZm9y
IChsZXQgdHlwZSBvZiBbYHVjaGFyYCwgYHVzaG9ydGAsIGB1aW50YCwgYGNoYXJgLCBgc2hvcnRg
LCBgaW50YCwgYGhhbGZgLCBgZmxvYXRgXSkgewogICAgICAgICAgICAgZm9yIChsZXQgbGVuZ3Ro
IG9mIFtgYCwgYDJgLCBgM2AsIGA0YF0pIHsKICAgICAgICAgICAgICAgICBwcmludChgbmF0aXZl
ICR7dHlwZX0ke2xlbmd0aH0gU2FtcGxlKFRleHR1cmUxRDwke3R5cGV9JHtsZW5ndGh9Piwgc2Ft
cGxlciwgZmxvYXQgbG9jYXRpb24pO2ApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvVGVzdC5odG1sIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVz
dC5odG1sCmluZGV4IGZiMTAxNWYxOTM4MWNmNmVhYzczMTdiNDg1ZWYwMGMzZWMxY2I5NmUuLmY1
ZWEzZDkwMTk4ZGNkYjg3MTMxZjkyYzI1MGM3NDMzMDRiNjZhYzAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9UZXN0Lmh0bWwKQEAgLTE0NSw2ICsxNDUsNyBAQAogPHNjcmlwdCBzcmM9
IlZhcmlhYmxlUmVmLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJWZWN0b3JUeXBlLmpzIj48
L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJWaXNpdGluZ1NldC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iV0xleGljYWxFcnJvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iV1N5bnRheEVy
cm9yLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJXVHJhcEVycm9yLmpzIj48L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSJXVHlwZUVycm9yLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9UZXN0LmpzCmluZGV4IDkwZDVlNWNjZDUwY2ZmNGE5NDJiOTE3NjZiMjcyODY5ZjA5
NDRjNjcuLjU1NmNiMmZiOGJiNTEwODc5MGM1YjRkYThmYTY3ZTRjNTRjYWM2NjYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuanMKKysrIGIvVG9vbHMvV2Vi
R1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5qcwpAQCAtMzI5LDIzICszMjksNiBAQCB0ZXN0cyA9
IG5ldyBQcm94eSh7fSwgewogICAgIH0KIH0pOwogCi10ZXN0cy5jb21tZW50UGFyc2luZyA9IGZ1
bmN0aW9uKCkgewotICAgIGxldCBwcm9ncmFtID0gZG9QcmVwKGAKLSAgICAgICAgLyogdGhpcyBj
b21tZW50Ci0gICAgICAgIHJ1bnMgb3ZlciBtdWx0aXBsZSBsaW5lcyAqLwotICAgICAgICBib29s
IGZvbygpIHsgcmV0dXJuIHRydWU7IH0KLSAgICBgKTsKLSAgICBjaGVja0Jvb2wocHJvZ3JhbSwg
Y2FsbEZ1bmN0aW9uKHByb2dyYW0sICJmb28iLCBbXSksIHRydWUpOwotCi0gICAgY2hlY2tGYWls
KAotICAgICAgICAoKSA9PiBkb1ByZXAoYAotICAgICAgICAvKiB0aGlzIGNvbW1lbnQKLSAgICAg
ICAgcnVucyBvdmVyIG11bHRpcGxlIGxpbmVzCi0gICAgICAgIGJvb2wgZm9vKCkgeyByZXR1cm4g
dHJ1ZTsgfQotICAgICAgICBgKSwKLSAgICAgICAgKGUpID0+IGUgaW5zdGFuY2VvZiBXU3ludGF4
RXJyb3IpOwotfQotCiB0ZXN0cy50ZXJuYXJ5RXhwcmVzc2lvbiA9IGZ1bmN0aW9uKCkgewogICAg
IGxldCBwcm9ncmFtID0gZG9QcmVwKGAKICAgICAgICAgaW50IGZvbyhpbnQgeCkKQEAgLTc2MjYs
NiArNzYwOSwyMyBAQCB0ZXN0cy50ZXh0dXJlR2F0aGVyID0gZnVuY3Rpb24oKSB7CiAgICAgLy8g
RklYTUU6IEdhdGhlciBvdGhlciBjb21wb25lbnRzCiB9CiAKK3Rlc3RzLmNvbW1lbnRQYXJzaW5n
ID0gZnVuY3Rpb24oKSB7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAorICAgICAgICAvKiB0
aGlzIGNvbW1lbnQKKyAgICAgICAgcnVucyBvdmVyIG11bHRpcGxlIGxpbmVzICovCisgICAgICAg
IGJvb2wgZm9vKCkgeyByZXR1cm4gdHJ1ZTsgfQorICAgIGApOworICAgIGNoZWNrQm9vbChwcm9n
cmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgImZvbyIsIFtdKSwgdHJ1ZSk7CisKKyAgICBjaGVj
a0ZhaWwoCisgICAgICAgICgpID0+IGRvUHJlcChgCisgICAgICAgIC8qIHRoaXMgY29tbWVudAor
ICAgICAgICBydW5zIG92ZXIgbXVsdGlwbGUgbGluZXMKKyAgICAgICAgYm9vbCBmb28oKSB7IHJl
dHVybiB0cnVlOyB9CisgICAgICAgIGApLAorICAgICAgICAoZSkgPT4gZSBpbnN0YW5jZW9mIFdM
ZXhpY2FsRXJyb3IpOworfQorCiBva1RvVGVzdCA9IHRydWU7CiAKIGxldCB0ZXN0RmlsdGVyID0g
Ly4qLzsgLy8gcnVuIGV2ZXJ5dGhpbmcgYnkgZGVmYXVsdApAQCAtNzY4Myw0ICs3NjgzLDMgQEAg
aWYgKCF0aGlzLndpbmRvdykgewogICAgIGZvciAobGV0IF8gb2YgZG9UZXN0KHRlc3RGaWx0ZXIp
KSB7IH0KIH0KIAotCmRpZmYgLS1naXQgYS9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9X
TGV4aWNhbEVycm9yLmpzIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV0xleGljYWxF
cnJvci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5jOTg1ODkzZDI5ZjZiZWNkYzU5MzljYjFhMmU1MzY2ZTQ4YWUx
NWY5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvV0xl
eGljYWxFcnJvci5qcwpAQCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisidXNlIHN0cmljdCI7CisKK2NsYXNzIFdMZXhpY2FsRXJyb3Ig
ZXh0ZW5kcyBFcnJvciB7CisgICAgY29uc3RydWN0b3Iob3JpZ2luU3RyaW5nLCBtZXNzYWdlKQor
ICAgIHsKKyAgICAgICAgc3VwZXIoIkxleGljYWwgZXJyb3IgYXQgIiArIG9yaWdpblN0cmluZyAr
ICI6ICIgKyBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5vcmlnaW5TdHJpbmcgPSBvcmlnaW5TdHJp
bmc7CisgICAgICAgIHRoaXMuc3ludGF4RXJyb3JNZXNzYWdlID0gbWVzc2FnZTsKKyAgICB9Cit9
CisKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dTeW50YXhFcnJv
ci5qcyBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dTeW50YXhFcnJvci5qcwppbmRl
eCA2MjVkOGM5Y2FkNDUyYzM1OTMxY2ZhNTI0YTYzZDFlNjNkNzFkNWJhLi43ODFiMGVlOWE3YWU5
YWYyZDhmYjU0ZGNiNDI5ZTgwYjA3ZWRlNzI5IDEwMDY0NAotLS0gYS9Ub29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9XU3ludGF4RXJyb3IuanMKKysrIGIvVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvV1N5bnRheEVycm9yLmpzCkBAIC0yNCwxMCArMjQsMTAgQEAKICAqLwogInVzZSBz
dHJpY3QiOwogCi1jbGFzcyBXU3ludGF4RXJyb3IgZXh0ZW5kcyBFcnJvciB7CitjbGFzcyBXU3lu
dGF4RXJyb3IgewogICAgIGNvbnN0cnVjdG9yKG9yaWdpblN0cmluZywgbWVzc2FnZSkKICAgICB7
Ci0gICAgICAgIHN1cGVyKCJTeW50YXggZXJyb3IgYXQgIiArIG9yaWdpblN0cmluZyArICI6ICIg
KyBtZXNzYWdlKTsKKyAgICAgICAgdGhpcy5wYXlsb2FkID0gIlN5bnRheCBlcnJvciBhdCAiICsg
b3JpZ2luU3RyaW5nICsgIjogIiArIG1lc3NhZ2U7CiAgICAgICAgIHRoaXMub3JpZ2luU3RyaW5n
ID0gb3JpZ2luU3RyaW5nOwogICAgICAgICB0aGlzLnN5bnRheEVycm9yTWVzc2FnZSA9IG1lc3Nh
Z2U7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvaW5k
ZXguaHRtbCBiL1Rvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL2luZGV4Lmh0bWwKaW5kZXgg
ZTZlMTNkZmU4ZGZhNWM1MzMyYWQ5ZWYwNDllY2VhMzU5YjdlM2E0Mi4uZGZjOTBjNGMyMzk0Mzk1
NDU4ODY1YzRhOGQ2NTQ4Njg3MGMyNjIzNCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvaW5kZXguaHRtbAorKysgYi9Ub29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VS
SS9pbmRleC5odG1sCkBAIC0xNDUsNiArMTQ1LDcgQEAKIDxzY3JpcHQgc3JjPSJWYXJpYWJsZVJl
Zi5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iVmVjdG9yVHlwZS5qcyI+PC9zY3JpcHQ+CiA8
c2NyaXB0IHNyYz0iVmlzaXRpbmdTZXQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9IldMZXhp
Y2FsRXJyb3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IldTeW50YXhFcnJvci5qcyI+PC9z
Y3JpcHQ+CiA8c2NyaXB0IHNyYz0iV1RyYXBFcnJvci5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNy
Yz0iV1R5cGVFcnJvci5qcyI+PC9zY3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>