[Zope] (no subject)

eric.n.dunn@bankofamerica.com eric.n.dunn@bankofamerica.com
Mon, 24 Jun 2002 08:29:08 -0400


--Boundary_(ID_kUK8IjAiI7NeofNe+avnKw)
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: 7BIT
Content-disposition: inline



I tried
Logwatch 0.9.2 on Debian/Zope 2.5

Changed lines:
481,540,546
for my Z2.log file location "/local/zope/var/Z2.log"

Received the following error after running:
python ./logwatch.py -m curses -l /local/zope/var/Z2.log -u 60 -n 500

  File "./logwatch.py", line 146
    self.results[self.item[tupleindex]] += 1
                                         ^
SyntaxError: invalid syntax

***************************
(See attached file: logwatch.py)

Eric Dunn

--Boundary_(ID_kUK8IjAiI7NeofNe+avnKw)
Content-type: application/octet-stream; name=logwatch.py
Content-transfer-encoding: base64
Content-disposition: attachment; filename=logwatch.py

IyEgL3Vzci9iaW4vZW52IHB5dGhvbgoKCiIiIgogICAgdmVyc2lvbiAwLjkKICAgIENyZWF0ZWQg
YnkgSG93YXJkIEhhbnNlbiAKICAgICAgICAgICAgICAgaG93YXJkaEBoYWxmbWFnaWMuY29tCiAg
ICAgICAgICAgICAgIGh0dHA6Ly9ob3dhcmQuZWRpdHRoaXNwYWdlLmNvbSkKICAgIEZlYnJ1YXJ5
IDksIDIwMDIKICAgIAogICAgQ29weXJpZ2h0IChjKSAyMDAyLCBIb3dhcmQgSGFuc2VuLCBBbGwg
cmlnaHRzIHJlc2VydmVkLgoKICAgIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogICAgbWV0
OgoKICAgIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0IG5vdGljZSwKICAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuIFJlZGlzdHJpYnV0aW9ucyBpbgogICAgYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZgog
ICAgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlcgogICAgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4gTmVpdGhlciB0aGUgbmFtZSBvZiBIb3dhcmQKICAgIEhhbnNlbiBub3IgdGhlIG5h
bWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvcgogICAgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yCiAgICB3cml0dGVuIHBlcm1pc3Npb24uIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTCiAgICBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgCiAgICBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkK
ICAgIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwKICAgIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCiAgICBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQK
ICAgIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKICAgIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQogICAgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAogICAg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCiAgICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoKIiIiCgoKCmltcG9ydCB0aW1lLCBvcywgc3Ry
aW5nLCB0cmFjZWJhY2sKCmNsYXNzIExvZ3dhdGNoOgogICAgIiIiCiAgICB0dXBsZSBpbmRleDoK
ICAgICIiIgogICAgSVAgPSAwCiAgICBVU0VSTkFNRSA9IDEKICAgIFRJTUVTVEFNUCA9IDIKICAg
IFJFUVVFU1RfVFlQRSA9IDMKICAgIFJFUVVFU1RfUEFUSCA9IDQKICAgIFJFUVVFU1RfUFJPVE9D
T0wgPSA1CiAgICBSRVNVTFQgPSA2CiAgICBTSVpFID0gNwogICAgUkVGRVJSRVIgPSA4CiAgICBB
R0VOVCA9IDkKICAgIEhPU1QgPSAxMAogICAgCiAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAg
ICAgc2VsZi5nb29kbGluZXMgPSAwCiAgICAgICAgc2VsZi5mdHBsaW5lcyA9IDAKICAgICAgICBz
ZWxmLmNvcnJ1cHRsaW5lcyA9IDAKICAgICAgICAKICAgIGRlZiBnZXRjaHVuayhzZWxmLCB0ZXh0
LCBzdGFydCwgZGVsaW1pdGVyKToKICAgICAgICAiIiIKICAgICAgICAgICAgU3RhcnQgYXQgaW5k
ZXggc3RhcnQgaW4gc3RyaW5nIHRleHQgYW5kIHNlYXJjaCBmb3IgZGVsaW1pdGVyLgogICAgICAg
ICAgICBSZXR1cm4gYWxsIGNoYXJhY3RlcnMgYmV0d2VlbiBzdGFydCBhbmQgdGhlIGRlbGltaXRl
ciwgYWxvbmcgd2l0aAogICAgICAgICAgICB0aGUgZW5kaW5nIHBvc2l0aW9uLCBhcyBhIHR1cGxl
LgogICAgICAgICIiIgogICAgICAgIHNlbGYuY2h1bmsgPSAnJwogICAgICAgIHNlbGYuaW5kZXgg
PSBzdHJpbmcuZmluZCh0ZXh0LCBkZWxpbWl0ZXIsIHN0YXJ0KQogICAgICAgIHNlbGYuY2h1bmsg
PSB0ZXh0W3N0YXJ0OnNlbGYuaW5kZXhdCiAgICAgICAgaWYgc2VsZi5pbmRleCA9PSAtMToKICAg
ICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcigiQ291bG4ndCBmaW5kIGRlbGltaXRlciAnJXMnIGlu
IHN0cmluZyAnJXMnIiAlIChkZWxpbWl0ZXIsIHRleHQpKQogICAgICAgIHJldHVybiAoc2VsZi5j
aHVuaywgc2VsZi5pbmRleCkKCiAgICBkZWYgcGFyc2VsaW5lKHNlbGYsIGxvZ2xpbmUpOgogICAg
ICAgICIiIgogICAgICAgICAgICBQYXJzZSBvbmUgbGluZSBvZiBhIHpvcGUgbG9nLCByZXR1cm5p
bmcgYSAxMC1pdGVtIHR1cGxlLgogICAgICAgICIiIgogICAgICAgIChzZWxmLmlwLCBzZWxmLm5l
eHRzdGFydCkgPSBzZWxmLmdldGNodW5rKGxvZ2xpbmUsIDAsICIgIikKICAgICAgICAoc2VsZi51
c2VybmFtZSwgc2VsZi5uZXh0c3RhcnQpID0gc2VsZi5nZXRjaHVuayhsb2dsaW5lLCBzZWxmLm5l
eHRzdGFydCArIDMsICIgIikKICAgICAgICAoc2VsZi50aW1lc3RhbXAsIHNlbGYubmV4dHN0YXJ0
KSA9IHNlbGYuZ2V0Y2h1bmsobG9nbGluZSwgc2VsZi5uZXh0c3RhcnQgKyAyLCAiXSIpCiAgICAg
ICAgKHNlbGYucmVxdWVzdCwgc2VsZi5uZXh0c3RhcnQpID0gc2VsZi5nZXRjaHVuayhsb2dsaW5l
LCBzZWxmLm5leHRzdGFydCArIDMsICciJykKICAgICAgICAjIHRoaXMgY2h1bmsgaXMgbm90IHNp
bXBsZSwgc2luY2UgSSd2ZSBmb3VuZCB1cmxzIHdpdGggc3BhY2VzIGluIHRoZW0uCiAgICAgICAg
IyB1c2VkIHRvIGJlOgogICAgICAgICMocmVxdWVzdF90eXBlLCByZXF1ZXN0X3BhdGgsIHJlcXVl
c3RfcHJvdG9jb2wpID0gc3RyaW5nLnNwbGl0KHJlcXVlc3QpCiAgICAgICAgc2VsZi5yZXF1ZXN0
X3R1cGxlID0gc3RyaW5nLnNwbGl0KHNlbGYucmVxdWVzdCkKICAgICAgICBzZWxmLnJlcXVlc3Rf
dHlwZSA9IHNlbGYucmVxdWVzdF90dXBsZVswXQogICAgICAgIHNlbGYucmVxdWVzdF9wcm90b2Nv
bCA9IHNlbGYucmVxdWVzdF90dXBsZVstMV0KICAgICAgICBzZWxmLnJlcXVlc3RfcGF0aCA9IHN0
cmluZy5qb2luKHNlbGYucmVxdWVzdF90dXBsZVsxOi0xXSwgJyAnKQogICAgICAgIChzZWxmLmhv
c3QsIHNlbGYucGF0aCkgPSBzZWxmLnNwbGl0aG9zdGFuZHBhdGgoc2VsZi5yZXF1ZXN0X3BhdGgp
CiAgICAgICAgKHNlbGYucmVzdWx0LCBzZWxmLm5leHRzdGFydCkgPSBzZWxmLmdldGNodW5rKGxv
Z2xpbmUsIHNlbGYubmV4dHN0YXJ0ICsgMiwgJyAnKQogICAgICAgIChzZWxmLnNpemUsIHNlbGYu
bmV4dHN0YXJ0KSA9IHNlbGYuZ2V0Y2h1bmsobG9nbGluZSwgc2VsZi5uZXh0c3RhcnQgKyAxLCAn
ICcpCiAgICAgICAgKHNlbGYucmVmZXJyZXIsIHNlbGYubmV4dHN0YXJ0KSA9IHNlbGYuZ2V0Y2h1
bmsobG9nbGluZSwgc2VsZi5uZXh0c3RhcnQgKyAyLCAnIicpCiAgICAgICAgKHNlbGYuYWdlbnQs
IHNlbGYubmV4dHN0YXJ0KSA9IHNlbGYuZ2V0Y2h1bmsobG9nbGluZSwgc2VsZi5uZXh0c3RhcnQg
KyAzLCAnIicpCiAgICAgICAgcmV0dXJuIChzZWxmLmlwLAogICAgICAgICAgICAgICAgc2VsZi51
c2VybmFtZSwKICAgICAgICAgICAgICAgIHNlbGYudGltZXN0YW1wLAogICAgICAgICAgICAgICAg
c2VsZi5yZXF1ZXN0X3R5cGUsCiAgICAgICAgICAgICAgICBzZWxmLnBhdGgsCiAgICAgICAgICAg
ICAgICBzZWxmLnJlcXVlc3RfcHJvdG9jb2wsCiAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCwK
ICAgICAgICAgICAgICAgIHNlbGYuc2l6ZSwKICAgICAgICAgICAgICAgIHNlbGYucmVmZXJyZXIs
CiAgICAgICAgICAgICAgICBzZWxmLmFnZW50LCAKICAgICAgICAgICAgICAgIHNlbGYuaG9zdCkK
CgogICAgZGVmIHNwbGl0aG9zdGFuZHBhdGgoc2VsZiwgcmVxdWVzdF9wYXRoKToKICAgICAgICAi
IiIKICAgICAgICAgICAgSW4gc2l0ZXMgdXNpbmcgWm9wZSdzIFZpcnR1YWwgSG9zdCBNb25zdGVy
IGJlaGluZCBBcGFjaGUncyBVUkwKICAgICAgICAgICAgcmV3cml0aW5nIHRoaXMgc3BsaXRzIG91
dCB0aGUgaG9zdCBuYW1lIGZyb20gdGhlIHJhdGhlcgogICAgICAgICAgICBjb252b2x1dGVkIHJh
dyBwYXRoCiAgICAgICAgCiAgICAgICAgICAgIHJlcXVlc3RfcGF0aCBsb29rcyBsaWtlOgogICAg
ICAgICAgICAvVmlydHVhbEhvc3RCYXNlL2h0dHAvem9wZS5taWdodHlkcmVhbXMuY29tOjgwL3Vw
dGltZSAKCiAgICAgICAgICAgIFRoZSByZXN1bHQgZm9yIHRoaXMgc2hvdWxkIGJlOgogICAgICAg
ICAgICAoJ3pvcGUubWlnaHR5ZHJlYW1zLmNvbScsICcvdXB0aW1lJykKICAgICAgICAgICAgCiAg
ICAgICAgICAgIFRoaXMgbWF5IG5lZWQgbW9kaWZpY2F0aW9uIGZvciBzaXRlcyB1c2luZyBkaWZm
ZXJlbnQgdG9vbHMuICAKICAgICAgICAiIiIKICAgICAgICBzZWxmLnByZWZpeCA9ICcvVmlydHVh
bEhvc3RCYXNlL2h0dHAvJwogICAgICAgIGlmIHJlcXVlc3RfcGF0aFs6bGVuKHNlbGYucHJlZml4
KV0gPT0gc2VsZi5wcmVmaXg6CiAgICAgICAgICAgIHJlcXVlc3RfcGF0aCA9IHJlcXVlc3RfcGF0
aFtsZW4oc2VsZi5wcmVmaXgpOl0KICAgICAgICAgICAgc2VsZi5jb2xvbnBvcyA9IHN0cmluZy5m
aW5kKHJlcXVlc3RfcGF0aCwgIjoiKQogICAgICAgICAgICBzZWxmLnNsYXNocG9zID0gc3RyaW5n
LmZpbmQocmVxdWVzdF9wYXRoLCAiLyIpCiAgICAgICAgICAgIHNlbGYuaG9zdCA9IHN0cmluZy5s
b3dlcihyZXF1ZXN0X3BhdGhbOnNlbGYuY29sb25wb3NdKQogICAgICAgICAgICBzZWxmLnBhdGgg
PSByZXF1ZXN0X3BhdGhbc2VsZi5zbGFzaHBvczpdCiAgICAgICAgZWxzZToKICAgICAgICAgICAg
c2VsZi5ob3N0ID0gIioiCiAgICAgICAgICAgIHNlbGYucGF0aCA9IHJlcXVlc3RfcGF0aAoKICAg
ICAgICByZXR1cm4gKHNlbGYuaG9zdCwgc2VsZi5wYXRoKQoKICAgIGRlZiBzdW1tYXJpemUoc2Vs
ZiwgdHVwbGVpbmRleCwgc291cmNlbGlzdCk6CiAgICAgICAgIiIiCiAgICAgICAgICAgIFRha2Vz
IGFuIGluZGV4IGluZGljYXRpbmcgd2hpY2ggdHVwbGUgaXRlbSB0byBzdW1tYXJpemUgYW5kIGEK
ICAgICAgICAgICAgc291cmNlIGxpc3Qgb2YgdHVwbGVzLiBSZXR1cm5zIGEgZGljdGlvbmFyeSB3
aXRoIGtleXMKICAgICAgICAgICAgcmVwcmVzZW50aW5nIHRoZSBkYXRhIGl0ZW1zIGluIHRoZSBs
aXN0LCBhbmQgdmFsdWVzIHJlcHJlc2VudGluZwogICAgICAgICAgICB0aGUgbnVtYmVyIG9mIG9j
Y3VyYW5jZXMgb2YgZWFjaCBpdGVtLgogICAgICAgICIiIgogICAgICAgIHNlbGYucmVzdWx0cyA9
IHt9CiAgICAgICAgZm9yIHNlbGYuaXRlbSBpbiBzb3VyY2VsaXN0OgogICAgICAgICAgICBpZiBz
ZWxmLnJlc3VsdHMuaGFzX2tleShzZWxmLml0ZW1bdHVwbGVpbmRleF0pOgogICAgICAgICAgICAg
ICAgc2VsZi5yZXN1bHRzW3NlbGYuaXRlbVt0dXBsZWluZGV4XV0gKz0gMQogICAgICAgICAgICBl
bHNlOgogICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRzW3NlbGYuaXRlbVt0dXBsZWluZGV4XV0g
PSAxCiAgICAgICAgcmV0dXJuIHNlbGYucmVzdWx0cwogICAgCiAgICBkZWYgc29ydGRpY3RieXZh
bHVlKHNlbGYsIGRpY3QpOgogICAgICAgICIiIgogICAgICAgICAgICBUYWtlcyBhIGRpY3Rpb25h
cnkgb2JqZWN0IGFuZCByZXR1cm5zIGEgbGlzdCBvZiB0dXBsZXMuICBJbmRleCAwCiAgICAgICAg
ICAgIGlzIHRoZSBkaWN0aW9uYXJ5IGtleSwgaW5kZXggMSBpcyB0aGUgdmFsdWUgYXNzb2NpYXRl
ZC4gIExpc3QgaXMKICAgICAgICAgICAgc29ydGVkIGluIGRlc2NlbmRpbmcgb3JkZXIgYnkgdGhl
IHZhbHVlLgogICAgICAgICIiIgogICAgICAgIHNlbGYuaXRlbXMgPSBkaWN0Lml0ZW1zKCkKICAg
ICAgICBzZWxmLml0ZW1zLnNvcnQobGFtYmRhIGxlZnQsIHJpZ2h0OiBjbXAocmlnaHRbMV0sIGxl
ZnRbMV0pKQogICAgICAgIHJldHVybiBzZWxmLml0ZW1zCgogICAgZGVmIGhhbmRsZWxvZyhzZWxm
LCB0YWlsY291bnQsIGxvZ2ZpbGUpOgogICAgICAgICIiIgogICAgICAgICAgICBHZXRzIGxhc3Qg
dGFpbGNvdW50IGxpbmVzIGluIHRoZSBsb2cgZmlsZS4gUGFyc2VzIHRob3NlIGxpbmVzCiAgICAg
ICAgICAgIGludG8gdHVwbGVzIGFuZCByZXR1cm5zIGEgbGlzdCBvZiB0aG9zZSB0dXBsZXMuCiAg
ICAgICAgIiIiCiAgICAgICAgc2VsZi50YWlsY29tbWFuZCA9ICJ0YWlsIC0lZCAlcyIgJSAodGFp
bGNvdW50LCBsb2dmaWxlKQogICAgICAgIGxvZyA9IG9zLnBvcGVuKHNlbGYudGFpbGNvbW1hbmQp
LnJlYWRsaW5lcygpCgogICAgICAgIHNlbGYucGFyc2VkbG9nID0gW10KICAgICAgICBmb3IgZW50
cnkgaW4gbG9nOgogICAgICAgICAgICBpZiBzdHJpbmcuZmluZChlbnRyeSwgIj09IikgPT0gLTE6
CiAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZWRsb2cu
YXBwZW5kKHNlbGYucGFyc2VsaW5lKGVudHJ5KSkKICAgICAgICAgICAgICAgICAgICBzZWxmLmdv
b2RsaW5lcyArPSAxCiAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAg
c2VsZi5jb3JydXB0bGluZXMgKz0gMQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
c2VsZi5mdHBsaW5lcyArPSAxCiAgICAgICAgICAgICAgICAKICAgICAgICByZXR1cm4gc2VsZi5w
YXJzZWRsb2cKCmRlZiBtYWluKHNjciwgbG9ncGF0aCwgZW50cnljb3VudCwgZnJlcXVlbmN5KToK
ICAgICIiIgogICAgICAgIFRoZSBtYWluIGxvb3AgZm9yIGN1cnNlcyBtb2RlLiAgVXBkYXRlcyBz
Y3JlZW4gb25jZSBhIHNlY29uZC4KICAgICIiIgogICAgcGFpbnRzY3JlZW4oc2NyLCBsb2dwYXRo
LCBlbnRyeWNvdW50KQogICAgbmV4dHRpbWUgPSB0aW1lLnRpbWUoKSArIGZyZXF1ZW5jeQojICAg
IGxhc3R1cGRhdGUgPSB0aW1lLnN0cmZ0aW1lKCclWS0lbS0lZCAlSDolTTolUycpCiAgICBsYXN0
dXBkYXRlID0gdGltZS5zdHJmdGltZSgnJUg6JU06JVMnKQogICAgCiAgICBjID0gc2NyLmdldGNo
KCkKICAgIHdoaWxlIGMgPT0gLTE6CiAgICAgICAgKHNpemVfeSwgc2l6ZV94KSA9IHNjci5nZXRt
YXh5eCgpICAgICAKICAgICAgICBzdGF0dXNtZXNzYWdlKHNjciwgIkxhc3QgdXBkYXRlOiAlcy4g
TmV4dCBpbiAlZCBzZWMuIEhpdCAncScgdG8gcXVpdCBvciBzcGFjZSB0byB1cGRhdGUgbm93LiIg
JSAobGFzdHVwZGF0ZSwgaW50KG5leHR0aW1lLXRpbWUudGltZSgpKSkpCiAgICAgICAgYyA9IHNj
ci5nZXRjaCgpCiAgICAgICAgaWYgYyA9PSBvcmQoJ3EnKTogCiAgICAgICAgICAgIHNjci5tb3Zl
KHNpemVfeS0xLDApCiAgICAgICAgICAgIHNjci5jbHJ0b2VvbCgpCiAgICAgICAgICAgIHNjci5y
ZWZyZXNoKCkKICAgICAgICAgICAgYnJlYWsgICMgRXhpdCB0aGUgd2hpbGUoKQogICAgICAgIGVs
aWYgYyA9PSBvcmQoJ3UnKSBvciBjID09IG9yZCgnICcpOiAKICAgICAgICAgICAgcGFpbnRzY3Jl
ZW4oc2NyLCBsb2dwYXRoLCBlbnRyeWNvdW50KQogICAgICAgICAgICBuZXh0dGltZSA9IHRpbWUu
Y2xvY2soKSArIGZyZXF1ZW5jeQogICAgICAgICAgICBjID0gLTEKICAgICAgICBlbHNlOgogICAg
ICAgICAgICBjID0gLTEKICAgICAgICAgICAgCiAgICAgICAgaWYgdGltZS50aW1lKCkgPj0gbmV4
dHRpbWU6CiAgICAgICAgICAgIHBhaW50c2NyZWVuKHNjciwgbG9ncGF0aCwgZW50cnljb3VudCkK
ICAgICAgICAgICAgbmV4dHRpbWUgPSB0aW1lLnRpbWUoKSArIGZyZXF1ZW5jeQogICAgICAgIHRp
bWUuc2xlZXAoMSkKICAgICAgICAgICAgCgpkZWYgc3RhdHVzbWVzc2FnZShzY3IsIG1lc3NhZ2Up
OgogICAgIiIiCiAgICAgICAgQWRkcyBhIHN0YXR1c2JhciBtZXNzYWdlIGF0IHRoZSBib3R0b20g
b2YgdGhlIHNjcmVlbiwgYXMgCiAgICAgICAgZGVmaW5lZCBieSBzY3IuCiAgICAiIiIKICAgIChz
aXplX3ksIHNpemVfeCkgPSBzY3IuZ2V0bWF4eXgoKSAgICAgCiAgICBzY3IubW92ZShzaXplX3kt
MSwwKQogICAgc2NyLmNscnRvZW9sKCkKICAgIHNjci5hZGRuc3RyKHNpemVfeS0xLCAwLCBtZXNz
YWdlWzpzaXplX3hdLCBzaXplX3gtMSkKCmRlZiBjcHV1c2FnZSgpOgogICAgIiIiCiAgICAgICAg
Q2FsY3VsYXRlcyBjdXJyZW50IGNwdSB1c2FnZSBmcm9tIHZtc3RhdC4KICAgICAgICBEb24ndCBr
bm93IGlmIHRoaXMgd29ya3MgY29ycmVjdGx5LgogICAgIiIiCiAgICByZXR1cm4gdHVwbGUob3Mu
cG9wZW4oJ3Ztc3RhdCcpLnJlYWRsaW5lcygpWy0xXS5zcGxpdCgpWzEzOl0pCgpkZWYgc3RhdHNz
cGFuKHBhcnNlZGxvZyk6CiAgICAiIiIKICAgICAgICBUYWtlcyB0aGUgcGFyc2VkIGxvZyBsaXN0
IGFzIGFuIGFyZ3VtZW50LgogICAgICAgIFJldHVybnMgYSB0dXBsZSB3aXRoIHRoZSBzZWNvbmRz
IG9mIHRoZSBzdGFydCBhbmQgZW5kIHRpbWVzLgogICAgIiIiCiAgICB0aW1laW5kZXggPSBMb2d3
YXRjaCgpLlRJTUVTVEFNUAogICAgZmlyc3RzZWMgPSB6b3BldGltZXBhcnNlKHBhcnNlZGxvZ1sw
XVt0aW1laW5kZXhdKQogICAgbGFzdHNlYyA9IHpvcGV0aW1lcGFyc2UocGFyc2VkbG9nWy0xXVt0
aW1laW5kZXhdKQogICAgcmV0dXJuIChmaXJzdHNlYywgbGFzdHNlYykKICAgIApkZWYgem9wZXRp
bWVwYXJzZSh6dGltZSk6CiAgICAiIiIgCiAgICAgICAgenRpbWUgbG9va3MgbGlrZTogJzA4L0Zl
Yi8yMDAyOjE2OjM3OjUzIC0wNzAwJwogICAgICAgIFJldHVybnMgVW5peCB0aW1lIChzZWNvbmRz
IG9mIHRoZSBlcG9jaCkKICAgIAogICAgICAgIFRoZXJlJ3MgZ290IHRvIGJlIGEgYmV0dGVyIHdh
eSB0byBkbyB0aGlzLCBidXQgSSBjYW4ndCBmb3IgdGhlCiAgICAgICAgbGlmZSBvZiBtZSBmaWd1
cmUgaXQgb3V0IHJpZ2h0IG5vdy4gIEFuZCB0aGlzIHdvcmtzLCBzbyBmYXIgYXMKICAgICAgICBJ
IGNhbiB0ZWxsLiAgU28gc3VlIG1lLiAgT3IgYmV0dGVyLCB3cml0ZSBhIGJldHRlciByb3V0aW5l
IGFuZAogICAgICAgIHNlbmQgaXQgdG8gbWUhICAKICAgICIiIgogICAgCiAgICBkYXRldGltZSwg
Tm9uZSA9IHp0aW1lLnNwbGl0KCkgICAgICAgICAgICAgICAgICAjIHN0cmlwIHRpbWUgem9uZQog
ICAgZGF0ZSwgaG91ciwgbWluLCBzZWMgPSBkYXRldGltZS5zcGxpdCgiOiIpICAgICAgIyBzcGxp
dCBvdXQgdGltZQogICAgZGF5LCBtb24sIHllYXIgPSBkYXRlLnNwbGl0KCIvIikgICAgICAgICAg
ICAgICAgIyBzcGxpdCBvdXQgZGF0ZQogICAgbW9udGhoYXNoID0gewogICAgICAgICdKYW4nOiAx
LAogICAgICAgICdGZWInOiAyLAogICAgICAgICdNYXInOiAzLAogICAgICAgICdBcHInOiA0LAog
ICAgICAgICdNYXknOiA1LAogICAgICAgICdKdW4nOiA2LAogICAgICAgICdKdWwnOiA3LAogICAg
ICAgICdBdWcnOiA4LAogICAgICAgICdTZXAnOiA5LAogICAgICAgICdPY3QnOiAxMCwKICAgICAg
ICAnTm92JzogMTEsCiAgICAgICAgJ0RlYyc6IDEyCiAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEkgYXNzdW1lIHRoYXQgYWxsIFpvcGUgbG9ncyB1
c2UgVVMgZm9ybWF0CiAgICBtb250aCA9IG1vbnRoaGFzaFttb25dICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIGNhbGN1bGF0ZSBtb250aCBudW1iZXIgCiAgICAKICAgIGZtdCA9ICIlWS0lbS0l
ZDolSDolTTolUyIgICAgICAgICAgICAgICAgICAgICAgICMgZm9ybWF0IHRoYXQgdGltZS5zdHJw
dGltZSB1bmRlcnN0YW5kcwogICAgbWFzayA9ICIlcy0lcy0lczolczolczolcyIgICAgICAgICAg
ICAgICAgICAgICAgIyBzdHJpbmcgc3ViIGZvcm1hdCB0byBidWlsZCBmbXQgZm9ybWF0CiAgICB0
ID0gKHllYXIsIG1vbnRoLCBkYXksIGhvdXIsIG1pbiwgc2VjKQogICAgc3RyID0gbWFzayAlIHQK
ICAgIHRpbWV0ID0gdGltZS5zdHJwdGltZShzdHIsIGZtdCkKICAgIHJldHVybiB0aW1lLm1rdGlt
ZSh0aW1ldCkKCmRlZiBpbnRlcnZhbDJzdHIoc2Vjcyk6CiAgICAiIiIKICAgICAgICBQcmludHMg
b3V0IHRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRpbWUgaW50ZXJ2YWwgcHJvdmlkZWQuCiAg
ICAgICAgVGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0b28uICBGZWVs
IGZyZWUgdG8gcHJvdmlkZQogICAgICAgIGEgcGF0Y2ghCiAgICAgICAgCiAgICAgICAgMTMyMDky
LjAgc2Vjb25kcyByZXR1cm5zIDFkIDEyaCA0MW0KICAgICAgICAoMTk3MCwgMSwgMiwgIDEyLCA0
MSwgMzIsIDQsICAyLCAgIDApCiAgICAgICAgIHkgICAgIG0gIGQgICBociAgbWluIHNlYyBkb3cg
ZG95ICB0egogICAgICAgIDM2MDAuMCBzZWNvbmRzIHJldHVybnMgMWggMG0gMHMKICAgICAgICAo
MTk3MCwgMSwgMSwgIDEsICAwLCAgMCwgIDMsICAxLCAgIDApCiAgICAgICAgIHkgICAgIG0gIGQg
ICBociAgbWluIHNlYyBkb3cgZG95ICB0egogICAgICAgICAwICAgICAxICAyICAgMyAgIDQgICA1
ICAgNiAgIDcgICAgOAogICAgIiIiCiAgICB0aW1ldCA9IHRpbWUuZ210aW1lKHNlY3MpCiAgICB5
ZWFycyA9IHRpbWV0WzBdIC0gMTk3MAogICAgZGF5cyA9IHRpbWV0WzddIC0gMSAKICAgIGhvdXJz
ID0gdGltZXRbM10KICAgIG1pbiA9IHRpbWV0WzRdCiAgICBzZWMgPSB0aW1ldFs1XQogICAgCiMg
ICAgcHJpbnQgInllYXJzOiAlZCIgJSB5ZWFycwojICAgIHByaW50ICJkYXlzOiAlZCIgJSBkYXlz
CiMgICAgcHJpbnQgImhvdXJzOiAlZCIgJSBob3VycwojICAgIHByaW50ICJtaW46ICVkIiAlIG1p
bgojICAgIHByaW50ICJzZWM6ICVkIiAlIHNlYwogICAgCiAgICBpZiB5ZWFycyA+IDA6CiAgICAg
ICAgZm10ID0gIiVkeSAlZGQiCiAgICAgICAgcmV0dXJuIGZtdCAlICh5ZWFycywgZGF5cykKICAg
IGlmIGRheXMgPiAwOgogICAgICAgIGZtdCA9ICIlZGQgJWRoICVkbSIKICAgICAgICByZXR1cm4g
Zm10ICUgKGRheXMsIGhvdXJzLCBtaW4pCiAgICBpZiBob3VycyA+IDA6CiAgICAgICAgZm10ID0g
IiVkaCAlZG0gJWRzIgogICAgICAgIHJldHVybiBmbXQgJSAoaG91cnMsIG1pbiwgc2VjKQogICAg
aWYgaG91cnMgPT0gMCBhbmQgZGF5cyA9PSAwOgogICAgICAgIGZtdCA9ICIlZG0gJWRzIgogICAg
ICAgIHJldHVybiBmbXQgJSAobWluLCBzZWMpCgoKZGVmIGRpc3BsYXlyZXN1bHRzKHNjciwgb2Zm
c2V0LCBkYXRhZGljdCwgZGVzY3JpcHRpb24sIG1heGNvdW50LCBtYXhsYWJlbHdpZHRoPTcwLCBJ
TkRFTlQ9NCk6CiAgICAiIiIKICAgICAgICBQYWludHMgcmVzdWx0cyBmcm9tIG9uZSBzZWN0aW9u
IHRvIHRoZSBzY3JlZW4uCiAgICAiIiIKICAgICMgQ2hlY2sgc2NyZWVuIHNpemUgYW5kIG1vZGlm
eSBsYWJlbCB3aWR0aCBhcHByb3ByaWF0ZWx5CiAgICAoc2l6ZV95LCBzaXplX3gpID0gc2NyLmdl
dG1heHl4KCkKICAgIHZhbHVld2lkdGggPSA1CiAgICBpZiBzaXplX3ggPCBtYXhsYWJlbHdpZHRo
ICsgSU5ERU5UICsgdmFsdWV3aWR0aDoKICAgICAgICBsYWJlbHdpZHRoID0gc2l6ZV94IC0gSU5E
RU5UIC0gdmFsdWV3aWR0aCAtMQogICAgZWxzZToKICAgICAgICBsYWJlbHdpZHRoID0gbWF4bGFi
ZWx3aWR0aAogICAgZm9ybWF0c3RyaW5nID0gJyUlLSVkcyUlJWRkJyAlIChsYWJlbHdpZHRoLCB2
YWx1ZXdpZHRoKSAgIyBtb2RlbCBpcyBzb21ldGhpbmcgbGlrZTogJyUtNzBzICU1ZCcKICAgIG9m
ZnNldCArPSAxCiAgICBsID0gTG9nd2F0Y2goKS5zb3J0ZGljdGJ5dmFsdWUoZGF0YWRpY3QpWzpt
YXhjb3VudF0KICAgIGlmIG9mZnNldCsxIDwgc2l6ZV95LTE6CiAgICAgICAgc2NyLmFkZHN0cihv
ZmZzZXQsIDAsICJUb3AgJWQgJXM6IiAlIChsZW4obCksIGRlc2NyaXB0aW9uKSkgIyBwcmludCBz
ZWN0aW9uIGhlYWQKICAgIGZvciB0IGluIGw6ICAgICAgICAgICAgICMgcHJpbnQgc2VjdGlvbiBk
YXRhCiAgICAgICAgb2Zmc2V0ICs9IDEKICAgICAgICBpZiBvZmZzZXQrMSA8IHNpemVfeS0xOgog
ICAgICAgICAgICBzY3IuYWRkc3RyKG9mZnNldCwgSU5ERU5ULCBmb3JtYXRzdHJpbmcgJSAodFsw
XVs6bGFiZWx3aWR0aF0sIHRbMV0pKQogICAgcmV0dXJuIG9mZnNldAoKCmRlZiBwYWludHNjcmVl
bihzY3IsIGxvZ3BhdGgsIGVudHJ5Y291bnQpOgogICAgIiIiCiAgICAgICAgUGFpbnRzIHRoZSBl
bnRpcmUgc2NyZWVuIGZvciBjdXJzZXMgbW9kZS4gIAogICAgIiIiCiAgICBmb3JtYXRzdHJpbmcg
PSAnJS03MHMgJTVkJwogICAgSU5ERU5UID0gNAogICAgcmVmZXJyZXJjb3VudCA9IDUKICAgIHVz
ZXJjb3VudCA9IDUKICAgIGFnZW50Y291bnQgPSA1CiAgICByZXF1ZXN0Y291bnQgPSAxMAogICAg
cmVzdWx0Y291bnQgPSA1CiAgICBob3N0Y291bnQgPSAxMAogICAgCiAgICB3YXRjaGVyID0gTG9n
d2F0Y2goKQogICAgcGFyc2VkbG9nID0gd2F0Y2hlci5oYW5kbGVsb2coZW50cnljb3VudCwgbG9n
cGF0aCkKICAgIHJlZmVycmVycyA9IHdhdGNoZXIuc3VtbWFyaXplKHdhdGNoZXIuUkVGRVJSRVIs
IHBhcnNlZGxvZykKICAgIHVzZXJzID0gd2F0Y2hlci5zdW1tYXJpemUod2F0Y2hlci5VU0VSTkFN
RSwgcGFyc2VkbG9nKQogICAgYWdlbnRzID0gd2F0Y2hlci5zdW1tYXJpemUod2F0Y2hlci5BR0VO
VCwgcGFyc2VkbG9nKQogICAgcmVxdWVzdHBhdGhzID0gd2F0Y2hlci5zdW1tYXJpemUod2F0Y2hl
ci5SRVFVRVNUX1BBVEgsIHBhcnNlZGxvZykKICAgIHJlc3VsdHMgPSB3YXRjaGVyLnN1bW1hcml6
ZSh3YXRjaGVyLlJFU1VMVCwgcGFyc2VkbG9nKQogICAgaG9zdHMgPSB3YXRjaGVyLnN1bW1hcml6
ZSh3YXRjaGVyLkhPU1QsIHBhcnNlZGxvZykKCiAgICBvZmZzZXQgPSAwCiAgICAKICAgIHNjci5j
bGVhcigpCiAgICBzY3IuYWRkc3RyKG9mZnNldCwgMCwgIkFuYWx5emluZyBsYXN0ICVkIGVudHJp
ZXMgZnJvbSAlcyIgJSAoZW50cnljb3VudCwgbG9ncGF0aCkpCgogICAgb2Zmc2V0ICs9IDEKICAg
IChmaXJzdHNlYywgbGFzdHNlYykgPSBzdGF0c3NwYW4ocGFyc2VkbG9nKQogICAgaW50ZXJ2YWwg
PSBsYXN0c2VjIC0gZmlyc3RzZWMKICAgIHNjci5hZGRzdHIob2Zmc2V0LCAwLCAiTGFzdCBlbnRy
eTogJXMsIFRpbWUgaW50ZXJ2YWw6ICVzLCAlZCBoaXRzL2hyIiAlICh0aW1lLnN0cmZ0aW1lKCIl
YiAlZCAlSDolTSIsIHRpbWUubG9jYWx0aW1lKGxhc3RzZWMpKSwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW50ZXJ2YWwyc3RyKGludGVydmFsKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KGVudHJ5
Y291bnQvaW50ZXJ2YWwgKiAzNjAwKSkpCiAgICAKICAgIG9mZnNldCA9IGRpc3BsYXlyZXN1bHRz
KHNjciwgb2Zmc2V0LCBob3N0cywgIkhvc3RzIiwgaG9zdGNvdW50KQogICAgb2Zmc2V0ID0gZGlz
cGxheXJlc3VsdHMoc2NyLCBvZmZzZXQsIHJlZmVycmVycywgIlJlZmVycmVycyIsIHJlZmVycmVy
Y291bnQpCiAgICBvZmZzZXQgPSBkaXNwbGF5cmVzdWx0cyhzY3IsIG9mZnNldCwgdXNlcnMsICJV
c2VycyIsIHVzZXJjb3VudCkKICAgIG9mZnNldCA9IGRpc3BsYXlyZXN1bHRzKHNjciwgb2Zmc2V0
LCBhZ2VudHMsICJBZ2VudHMiLCBhZ2VudGNvdW50KQogICAgb2Zmc2V0ID0gZGlzcGxheXJlc3Vs
dHMoc2NyLCBvZmZzZXQsIHJlcXVlc3RwYXRocywgIlJlcXVlc3QgUGF0aHMiLCByZXF1ZXN0Y291
bnQpCiAgICBvZmZzZXQgPSBkaXNwbGF5cmVzdWx0cyhzY3IsIG9mZnNldCwgcmVzdWx0cywgIkhU
VFAgcmVzdWx0IGNvZGVzIiwgcmVzdWx0Y291bnQpCiAgICAKICAgCgpkZWYgcHJpbnRyZXN1bHRz
KGRhdGFkaWN0LCBkZXNjcmlwdGlvbiwgbWF4Y291bnQsIGZvcm1hdHN0cmluZz0iJS03MHMgJTVk
IiwgSU5ERU5UPTQpOgogICAgIiIiCiAgICAgICAgUHJpbnRzIG91dCB0aGUgcmVzdWx0cyBmb3Ig
YSBnaXZlbiBzZWN0aW9uLgogICAgIiIiCiAgICBsID0gTG9nd2F0Y2goKS5zb3J0ZGljdGJ5dmFs
dWUoZGF0YWRpY3QpWzptYXhjb3VudF0KICAgIHByaW50ICJUb3AgJWQgJXM6IiAlIChsZW4obCks
IGRlc2NyaXB0aW9uKQogICAgZm9yIHQgaW4gbDoKICAgICAgICBwcmludCAiICIqSU5ERU5UICsg
Zm9ybWF0c3RyaW5nICUgdAoKZGVmIHByaW50cmVwb3J0KGxvZ3BhdGgsIGVudHJ5Y291bnQpOgog
ICAgIiIiCiAgICAgICAgUHJpbnRzIGFsbCByZXN1bHRzIGZvciBhIGxvZy4gIAogICAgIiIiCiAg
ICBJTkRFTlQgPSA0CiAgICByZWZlcnJlcmNvdW50ID0gNQogICAgdXNlcmNvdW50ID0gNQogICAg
YWdlbnRjb3VudCA9IDUKICAgIHJlcXVlc3Rjb3VudCA9IDEwCiAgICByZXN1bHRjb3VudCA9IDUK
ICAgIGhvc3Rjb3VudCA9IDEwCiAgICAKICAgIHdhdGNoZXIgPSBMb2d3YXRjaCgpCiAgICBwYXJz
ZWRsb2cgPSB3YXRjaGVyLmhhbmRsZWxvZyhlbnRyeWNvdW50LCBsb2dwYXRoKQogICAgcmVmZXJy
ZXJzID0gd2F0Y2hlci5zdW1tYXJpemUod2F0Y2hlci5SRUZFUlJFUiwgcGFyc2VkbG9nKQogICAg
dXNlcnMgPSB3YXRjaGVyLnN1bW1hcml6ZSh3YXRjaGVyLlVTRVJOQU1FLCBwYXJzZWRsb2cpCiAg
ICBhZ2VudHMgPSB3YXRjaGVyLnN1bW1hcml6ZSh3YXRjaGVyLkFHRU5ULCBwYXJzZWRsb2cpCiAg
ICByZXF1ZXN0cGF0aHMgPSB3YXRjaGVyLnN1bW1hcml6ZSh3YXRjaGVyLlJFUVVFU1RfUEFUSCwg
cGFyc2VkbG9nKQogICAgcmVzdWx0cyA9IHdhdGNoZXIuc3VtbWFyaXplKHdhdGNoZXIuUkVTVUxU
LCBwYXJzZWRsb2cpCiAgICBob3N0cyA9IHdhdGNoZXIuc3VtbWFyaXplKHdhdGNoZXIuSE9TVCwg
cGFyc2VkbG9nKQoKICAgIHByaW50ICJBbmFseXppbmcgbGFzdCAlZCBlbnRyaWVzIGZyb20gJXMu
IFVwZGF0ZWQ6ICVzIiAlIChlbnRyeWNvdW50LCBsb2dwYXRoLCB0aW1lLmN0aW1lKCkpCiAgICBw
cmludCAiRmlyc3QgZW50cnk6ICVzLCBMYXN0IGVudHJ5OiAlcyIgJSAocGFyc2VkbG9nWzBdWzJd
LCBwYXJzZWRsb2dbLTFdWzJdKQoKICAgIHByaW50cmVzdWx0cyhob3N0cywgIkhvc3RzIiwgaG9z
dGNvdW50KQogICAgcHJpbnRyZXN1bHRzKHJlZmVycmVycywgIlJlZmVycmVycyIsIHJlZmVycmVy
Y291bnQpCiAgICBwcmludHJlc3VsdHModXNlcnMsICJVc2VycyIsIHVzZXJjb3VudCkKICAgIHBy
aW50cmVzdWx0cyhhZ2VudHMsICJBZ2VudHMiLCBhZ2VudGNvdW50KQogICAgcHJpbnRyZXN1bHRz
KHJlcXVlc3RwYXRocywgIlJlcXVlc3QgUGF0aHMiLCByZXF1ZXN0Y291bnQpCiAgICBwcmludHJl
c3VsdHMocmVzdWx0cywgIkhUVFAgcmVzdWx0IGNvZGVzIiwgcmVzdWx0Y291bnQpCgpkZWYgZXNj
YXBlWE1MdmFsdWUodmFsdWUpOgogICAgIiIiCiAgICAgICAgUmV0dXJucyB0aGUgZXNjYXBlZCB2
YWx1ZSBmb3IgYW4gWE1MIHRleHRub2RlIChubyBpbnRlcm5hbCBYTUwpCiAgICAgICAgQXNzdW1w
dGlvbnM6CiAgICAgICAgICAgIEVzY2FwZSBhbXBlcnNhbmQsIGxlc3MtdGhhbiwgYW5kIGdyZWF0
ZXItdGhhbi4KICAgICIiIgogICAgbmV3dmFsID0gc3RyaW5nLnJlcGxhY2UodmFsdWUsICImIiwg
IiZhbXA7IikKICAgIG5ld3ZhbCA9IHN0cmluZy5yZXBsYWNlKG5ld3ZhbCwgIjwiLCAiJmx0OyIp
CiAgICBuZXd2YWwgPSBzdHJpbmcucmVwbGFjZShuZXd2YWwsICI+IiwgIiZndDsiKQogICAgcmV0
dXJuIG5ld3ZhbAogICAgCmRlZiBlc2NhcGVYTUxhdHRyaWJ1dGUoYXR0cmlidXRlLCBkb3VibGVx
dW90ZWQ9MSk6CiAgICAiIiIKICAgICAgICBSZXR1cm5zIHRoZSBlc2NhcGVkIHZhbHVlIGZvciBh
biBYTUwgYXR0cmlidXRlLgogICAgICAgIEFzc3VtcHRpb25zOgogICAgICAgICAgKHBlcjogaHR0
cDovL3d3dy5hcmx1dC51dGV4YXMuZWR1L2dhc2gyL2RvYy94bWwvaW50cm90b3htbC5odG1sKQog
ICAgICAgICAgSW50ZXJuYWwgcXVvdGVzIG11c3QgYmUgZXNjYXBlZCwgaW50ZXJuYWwgYW1wZXJz
YW5kcyBtdXN0IGJlIGVzY2FwZWQuCiAgICAgICAgICBEb3VibGUtcXVvdGUgZGVsaW1pdGVkLiAg
ZG91YmxlcXVvdGVkPTAgYXNzdW1lcyBzaW5nbGUtcXVvdGUgKGFwb3N0cm9waGUpIGRlbGltaXRl
ZC4KICAgICIiIgogICAgbmV3YXR0ID0gc3RyaW5nLnJlcGxhY2UoYXR0cmlidXRlLCAiJiIsICIm
YW1wOyIpCiAgICBpZiBkb3VibGVxdW90ZWQ6CiAgICAgICAgbmV3YXR0ID0gc3RyaW5nLnJlcGxh
Y2UobmV3YXR0LCAnIicsICImcXVvdDsiKQogICAgZWxzZToKICAgICAgICBuZXdhdHQgPSBzdHJp
bmcucmVwbGFjZShuZXdhdHQsICInIiwgIiZhcG9zOyIpCiAgICByZXR1cm4gbmV3YXR0CgpkZWYg
cHJpbnR4bWxzZWN0aW9uKGRhdGFkaWN0LCBkZXNjcmlwdGlvbiwgbWF4Y291bnQpOgogICAgIiIi
CiAgICAgICAgUHJpbnRzIHJlcG9ydCBzZWN0aW9uIGFzIHhtbC4KICAgICAgICAKICAgICAgICBT
ZWN0aW9uIGZvcm1hdDoKICAgICAgICA8c2VjdGlvbiBuYW1lPSJob3N0cyIgcmVzdWx0c3JldHVy
bmVkPSIzIiBtYXhyZXN1bHRzcmV0dXJuZWQ9IjEwIj4KICAgICAgICAgIDxkYXRhPgogICAgICAg
ICAgICA8aXRlbSBjYXRlZ29yeT0nem9wZS5taWdodHlkcmVhbXMuY29tJyB2YWx1ZT0nMTU4Jy8+
CiAgICAgICAgICA8L2RhdGE+CiAgICAgICAgPC9zZWN0aW9uPgogICAgIiIiCiAgICAKICAgIGZv
cm1hdHN0cmluZyA9ICIgICAgICAgIDxpdGVtIGNhdGVnb3J5PSclKGNhdGVnb3J5KXMnIHZhbHVl
PSclKHZhbHVlKWQnLz4iCgogICAgbCA9IExvZ3dhdGNoKCkuc29ydGRpY3RieXZhbHVlKGRhdGFk
aWN0KVs6bWF4Y291bnRdCiAgICBwcmludCAnICAgIDxzZWN0aW9uIG5hbWU9IiVzIiByZXN1bHRz
cmV0dXJuZWQ9IiVkIiBtYXhyZXN1bHRzcmV0dXJuZWQ9IiVkIj4nICUgKGRlc2NyaXB0aW9uLCBs
ZW4obCksIG1heGNvdW50KQogICAgcHJpbnQgJyAgICAgIDxkYXRhPicKICAgIGZvciB0IGluIGw6
IAogICAgICAgIGRhdGEgPSB7J2NhdGVnb3J5JzogZXNjYXBlWE1MYXR0cmlidXRlKHRbMF0sIDAp
LCAndmFsdWUnOiB0WzFdfQogICAgICAgIHByaW50IGZvcm1hdHN0cmluZyAlIGRhdGEKICAgIHBy
aW50ICcgICAgICA8L2RhdGE+JwogICAgcHJpbnQgJyAgICA8L3NlY3Rpb24+JwoKZGVmIHByaW50
eG1scmVwb3J0KGxvZ3BhdGgsIGVudHJ5Y291bnQpOgogICAgIiIiCiAgICAgICAgUHJpbnRzIGVu
dGlyZSByZXBvcnQgYXMgeG1sLiAgCgogICAgICAgIFhNTCBsb29rcyBzb21ldGhpbmcgbGlrZSB0
aGlzOgogICAgICAgIDxyZXBvcnQ+CiAgICAgICAgICA8cnVudGltZT5GcmkgRmViICA4IDEwOjM5
OjExIDIwMDI8L3J1bnRpbWU+CiAgICAgICAgICA8bG9nZmlsZT4vbG9jYWwvem9wZS92YXIvWjIu
bG9nPC9sb2dmaWxlPgogICAgICAgICAgPGVudHJ5Y291bnQ+MjAwPC9lbnRyeWNvdW50PgogICAg
ICAgICAgPGZpcnN0ZW50cnl0aW1lPjwvZmlyc3RlbnRyeXRpbWU+CiAgICAgICAgICA8bGFzdGVu
dHJ5dGltZT48L2xhc3RlbnRyeXRpbWU+CiAgICAgICAgICA8Z29vZGxpbmVzPjE5MDwvZ29vZGxp
bmVzPgogICAgICAgICAgPGNvcnJ1cHRsaW5lcz4xPC9jb3JydXB0bGluZXM+CiAgICAgICAgICA8
ZnRwbGluZXM+OTwvZnRwbGluZXM+CiAgICAgICAgICA8c2VjdGlvbnM+CiAgICAgICAgICAgIDxz
ZWN0aW9uPi4uLiBhcyBkZWZpbmVkIGFib3ZlIC4uLjwvc2VjdGlvbj4KICAgICAgICAgIDwvc2Vj
dGlvbnM+CiAgICAgICAgPC9yZXBvcnQ+CiAgICAiIiIKCiAgICByZWZlcnJlcmNvdW50ID0gNQog
ICAgdXNlcmNvdW50ID0gNQogICAgYWdlbnRjb3VudCA9IDUKICAgIHJlcXVlc3Rjb3VudCA9IDEw
CiAgICByZXN1bHRjb3VudCA9IDUKICAgIGhvc3Rjb3VudCA9IDEwCiAgICAKICAgIHdhdGNoZXIg
PSBMb2d3YXRjaCgpCiAgICBwYXJzZWRsb2cgPSB3YXRjaGVyLmhhbmRsZWxvZyhlbnRyeWNvdW50
LCBsb2dwYXRoKQogICAgcmVmZXJyZXJzID0gd2F0Y2hlci5zdW1tYXJpemUod2F0Y2hlci5SRUZF
UlJFUiwgcGFyc2VkbG9nKQogICAgdXNlcnMgPSB3YXRjaGVyLnN1bW1hcml6ZSh3YXRjaGVyLlVT
RVJOQU1FLCBwYXJzZWRsb2cpCiAgICBhZ2VudHMgPSB3YXRjaGVyLnN1bW1hcml6ZSh3YXRjaGVy
LkFHRU5ULCBwYXJzZWRsb2cpCiAgICByZXF1ZXN0cGF0aHMgPSB3YXRjaGVyLnN1bW1hcml6ZSh3
YXRjaGVyLlJFUVVFU1RfUEFUSCwgcGFyc2VkbG9nKQogICAgcmVzdWx0cyA9IHdhdGNoZXIuc3Vt
bWFyaXplKHdhdGNoZXIuUkVTVUxULCBwYXJzZWRsb2cpCiAgICBob3N0cyA9IHdhdGNoZXIuc3Vt
bWFyaXplKHdhdGNoZXIuSE9TVCwgcGFyc2VkbG9nKQogICAgZ29vZGxpbmVzID0gd2F0Y2hlci5n
b29kbGluZXMKICAgIGNvcnJ1cHRsaW5lcyA9IHdhdGNoZXIuY29ycnVwdGxpbmVzCiAgICBmdHBs
aW5lcyA9IHdhdGNoZXIuZnRwbGluZXMKCiAgICBwcmludCAiPHJlcG9ydD4iCiAgICBwcmludCAi
ICA8cnVudGltZT4lczwvcnVudGltZT4iICUgdGltZS5jdGltZSgpCiAgICBwcmludCAiICA8bG9n
ZmlsZT4lczwvbG9nZmlsZT4iICUgbG9ncGF0aAogICAgcHJpbnQgIiAgPGVudHJ5Y291bnQ+JWQ8
L2VudHJ5Y291bnQ+IiAlIGVudHJ5Y291bnQKICAgIHByaW50ICIgIDxmaXJzdGVudHJ5dGltZT4l
czwvZmlyc3RlbnRyeXRpbWU+IiAlIHBhcnNlZGxvZ1swXVt3YXRjaGVyLlRJTUVTVEFNUF0KICAg
IHByaW50ICIgIDxsYXN0ZW50cnl0aW1lPiVzPC9sYXN0ZW50cnl0aW1lPiIgJSBwYXJzZWRsb2db
LTFdW3dhdGNoZXIuVElNRVNUQU1QXQogICAgcHJpbnQgIiAgPGdvb2RsaW5lcz4lZDwvZ29vZGxp
bmVzPiIgJSBnb29kbGluZXMKICAgIHByaW50ICIgIDxjb3JydXB0bGluZXM+JWQ8L2NvcnJ1cHRs
aW5lcz4iICUgY29ycnVwdGxpbmVzCiAgICBwcmludCAiICA8ZnRwbGluZXM+JWQ8L2Z0cGxpbmVz
PiIgJSBmdHBsaW5lcwogICAgcHJpbnQgIiAgPHNlY3Rpb25zPiIgICAgCgogICAgcHJpbnR4bWxz
ZWN0aW9uKGhvc3RzLCAiSG9zdHMiLCBob3N0Y291bnQpCiAgICBwcmludHhtbHNlY3Rpb24ocmVm
ZXJyZXJzLCAiUmVmZXJyZXJzIiwgcmVmZXJyZXJjb3VudCkKICAgIHByaW50eG1sc2VjdGlvbih1
c2VycywgIlVzZXJzIiwgdXNlcmNvdW50KQogICAgcHJpbnR4bWxzZWN0aW9uKGFnZW50cywgIkFn
ZW50cyIsIGFnZW50Y291bnQpCiAgICBwcmludHhtbHNlY3Rpb24ocmVxdWVzdHBhdGhzLCAiUmVx
dWVzdCBQYXRocyIsIHJlcXVlc3Rjb3VudCkKICAgIHByaW50eG1sc2VjdGlvbihyZXN1bHRzLCAi
SFRUUCByZXN1bHQgY29kZXMiLCByZXN1bHRjb3VudCkKCiAgICBwcmludCAiICA8L3NlY3Rpb25z
PiIgICAgCiAgICBwcmludCAiPC9yZXBvcnQ+IgoKCgpkZWYgdXNhZ2UoKToKICAgIHByaW50ICJV
c2FnZTogbG9nd2F0Y2gucHkgLWwgcGF0aCAtbiBudW1iZXJvZmVudHJpZXMgLW0gKGN1cnNlcyB8
IHRleHQgfCB4bWwpIC11IHVwZGF0ZSBmcmVxdWVuY3kiCiAgICBwcmludCAiIgogICAgcHJpbnQg
IkV4YW1wbGU6ICIKICAgIHByaW50ICIgICBsb2d3YXRjaC5weSAtbCAvbG9jYWwvem9wZS92YXIv
WjIubG9nIC1tIGN1cnNlcyAtbiAyMDAgLXUgMTIwIgogICAgcHJpbnQgIiIKICAgIHByaW50ICJU
aGlzIHdvdWxkIHJ1biBpbiBmdWxsLXNjcmVlbiBjdXJzZXMgbW9kZSBieSBwdWxsaW5nIHRoZSBs
YXN0IDIwMCBlbnRyaWVzIGZyb20gdGhlIgogICAgcHJpbnQgImxvZyBhbmQgdXBkYXRlIHRoZSBk
aXNwbGF5IGV2ZXJ5IDEyMCBzZWNvbmRzLiIKICAgIHByaW50ICIiCiAgICBwcmludCAiVGhpcyB3
b3VsZCBkbyB0aGUgc2FtZSB0aGluZzoiCiAgICBwcmludCAiICAgbG9nd2F0Y2gucHkgLS1sb2dm
aWxlIC9sb2NhbC96b3BlL3Zhci9aMi5sb2cgXCAiCiAgICBwcmludCAiICAgICAgICAgICAgICAg
LS1udW1iZXJvZmVudHJpZXMgMjAwIFwgIgogICAgcHJpbnQgIiAgICAgICAgICAgICAgIC0tbW9k
ZSBjdXJzZXMgXCAiCiAgICBwcmludCAiICAgICAgICAgICAgICAgLS11cGRhdGVmcmVxdWVuY3kg
MTIwICIKICAgIHByaW50ICIiCiAgICBwcmludCAiQ2hvb3NpbmcgdGV4dCBtb2RlIGNhdXNlcyB0
aGUgcHJvZ3JhbSB0byByZWFkIHRoZSBsb2csIHBlcmZvcm0gdGhlIGFuYWx5c2lzLCBwcmludCBp
dCB0byIKICAgIHByaW50ICJ0aGUgc2NyZWVuIGFuZCBleGl0IGltbWVkaWF0ZWx5LiIKICAgIHBy
aW50ICIiCiAgICBwcmludCAiTG9nd2F0Y2ggY3JlYXRlZCBieSBIb3dhcmQgSGFuc2VuIChob3dh
cmRoQGhhbGZtYWdpYy5jb20pLCBmZWVsIGZyZWUgdG8gbW9kaWZ5IGFuZCB1c2UgYXMiCiAgICBw
cmludCAieW91IHdpbGwuIgogICAgCgppZiBfX25hbWVfXz09J19fbWFpbl9fJzoKICAgIGltcG9y
dCBzeXMsIGdldG9wdCwgcHByaW50CiAgICB0cnk6CiAgICAgICAgb3B0cywgYXJncyA9IGdldG9w
dC5nZXRvcHQoc3lzLmFyZ3ZbMTpdLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZGhsOm46bTp1OiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZGVi
dWciLCAiaGVscCIsICJsb2dmaWxlIiwgIm51bWJlcm9mZW50cmllcyIsICJtb2RlIiwgInVwZGF0
ZWZyZXF1ZW5jeSJdKQogICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvcjoKICAgICAgICAjIHBy
aW50IGhlbHAgaW5mbyBhbmQgZXhpdAogICAgICAgIHVzYWdlKCkKICAgICAgICBzeXMuZXhpdCgy
KQogICAgICAgIAogICAgaWYgbGVuKG9wdHMpID09IDA6CiAgICAgICAgdXNhZ2UoKQogICAgICAg
IHN5cy5leGl0KCkKCiAgICAKICAgIGZvciBvLCBhIGluIG9wdHM6CiAgICAgICAgaWYgbyBpbiAo
Ii1kIiwgImRlYnVnIik6CiAgICAgICAgICAgIHByaW50ICJvcHRzLCBhcmdzOiIKICAgICAgICAg
ICAgcHJpbnQgb3B0cywgYXJncwogICAgICAgICAgICBwcmludCAic3lzLmFyZ3Y6IgogICAgICAg
ICAgICBwcmludCBzeXMuYXJndgoKICAgICAgICBpZiBvIGluICgiLWgiLCAiaGVscCIpOgogICAg
ICAgICAgICB1c2FnZSgpCiAgICAgICAgICAgIHN5cy5leGl0KCkKCiAgICAgICAgaWYgbyBpbiAo
Ii1sIiwgImxvZ3BhdGgiKToKICAgICAgICAgICAgbG9ncGF0aCA9IGEKICAgICAgICAgICAgaWYg
bm90IG9zLnBhdGguZXhpc3RzKGxvZ3BhdGgpOgogICAgICAgICAgICAgICAgcHJpbnQgIkVycm9y
OiBsb2cgZmlsZSBwYXRoICclcycgZG9lcyBub3QgZXhpc3QhIiAlIGxvZ3BhdGgKICAgICAgICAg
ICAgICAgIHN5cy5leGl0KDIpCgogICAgICAgIGlmIG8gaW4gKCItbiIsICJudW1iZXJvZmVudHJp
ZXMiKToKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgZW50cnljb3VudCA9IGludChh
KQogICAgICAgICAgICAgICAgaWYgZW50cnljb3VudCA8IDE6IHJhaXNlIElucHV0RXJyb3IKICAg
ICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgcHJpbnQgIkVycm9yOiBudW1iZXIgb2Yg
ZW50cmllcyB2YWx1ZSAnJXMnIGlzIGludmFsaWQhICBOZWVkcyB0byBiZSBhIHBvc2l0aXZlIGlu
dGVnZXIuIiAlIGEKICAgICAgICAgICAgICAgIHN5cy5leGl0KDIpCgogICAgICAgIGlmIG8gaW4g
KCItbSIsICJtb2RlIik6CiAgICAgICAgICAgIG1vZGUgPSBzdHJpbmcubG93ZXIoYSkKCiAgICAg
ICAgaWYgbyBpbiAoIi11IiwgInVwZGF0ZWZyZXF1ZW5jeSIpOgogICAgICAgICAgICB0cnk6CiAg
ICAgICAgICAgICAgICBmcmVxdWVuY3kgPSBpbnQoYSkKICAgICAgICAgICAgICAgIGlmIGZyZXF1
ZW5jeSA8IDE6IHJhaXNlIElucHV0RXJyb3IKICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAg
ICAgICAgcHJpbnQgIkVycm9yOiB1cGRhdGUgZnJlcXVlbmN5IHZhbHVlICclcycgaXMgaW52YWxp
ZCEgIE5lZWRzIHRvIGJlIGEgcG9zaXRpdmUgaW50ZWdlci4iICUgYQogICAgICAgICAgICAgICAg
c3lzLmV4aXQoMikKICAgIAogICAgCiAgICAKICAgIGlmIG1vZGVbMF0gPT0gImMiOiAgIyBjdXJz
ZXMKICAgICAgICB0cnk6CiAgICAgICAgICAgIGltcG9ydCBjdXJzZXMKICAgICAgICAgICAgIyBJ
bml0aWFsaXplIGN1cnNlcwogICAgICAgICAgICBzY3I9Y3Vyc2VzLmluaXRzY3IoKQogICAgICAg
ICAgICAjIFR1cm4gb2ZmIGVjaG9pbmcgb2Yga2V5cywgYW5kIGVudGVyIGNicmVhayBtb2RlLAog
ICAgICAgICAgICAjIHdoZXJlIG5vIGJ1ZmZlcmluZyBpcyBwZXJmb3JtZWQgb24ga2V5Ym9hcmQg
aW5wdXQKICAgICAgICAgICAgY3Vyc2VzLm5vZWNobygpCiAgICAgICAgICAgIGN1cnNlcy5jYnJl
YWsoKQoKICAgICAgICAgICAgIyBJbiBrZXlwYWQgbW9kZSwgZXNjYXBlIHNlcXVlbmNlcyBmb3Ig
c3BlY2lhbCBrZXlzCiAgICAgICAgICAgICMgKGxpa2UgdGhlIGN1cnNvciBrZXlzKSB3aWxsIGJl
IGludGVycHJldGVkIGFuZAogICAgICAgICAgICAjIGEgc3BlY2lhbCB2YWx1ZSBsaWtlIGN1cnNl
cy5LRVlfTEVGVCB3aWxsIGJlIHJldHVybmVkCiAgICAgICAgICAgIHNjci5rZXlwYWQoMSkKICAg
ICAgICAgICAgc2NyLm5vZGVsYXkoMSkgICMgbWFrZXMgZ2V0Y2goKSBub24tYmxvY2tpbmcKCiAg
ICAgICAgICAgIG1haW4oc2NyLCBsb2dwYXRoLCBlbnRyeWNvdW50LCBmcmVxdWVuY3kpICAgICAg
ICAgICAgICMgRW50ZXIgdGhlIG1haW4gbG9vcAoKICAgICAgICAgICAgIyBTZXQgZXZlcnl0aGlu
ZyBiYWNrIHRvIG5vcm1hbAogICAgICAgICAgICBzY3Iua2V5cGFkKDApCiAgICAgICAgICAgIGN1
cnNlcy5lY2hvKCkKICAgICAgICAgICAgY3Vyc2VzLm5vY2JyZWFrKCkKICAgICAgICAgICAgY3Vy
c2VzLmVuZHdpbigpICAgICMgVGVybWluYXRlIGN1cnNlcwogICAgICAgIGV4Y2VwdDoKICAgICAg
ICAgICAgIyBJbiBldmVudCBvZiBlcnJvciwgcmVzdG9yZSB0ZXJtaW5hbCB0byBzYW5lIHN0YXRl
LgogICAgICAgICAgICBzY3Iua2V5cGFkKDApCiAgICAgICAgICAgIGN1cnNlcy5lY2hvKCkKICAg
ICAgICAgICAgY3Vyc2VzLm5vY2JyZWFrKCkKICAgICAgICAgICAgY3Vyc2VzLmVuZHdpbigpCiAg
ICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKSAgICAgICAgICAgICMgUHJpbnQgdGhlIGV4
Y2VwdGlvbgoKICAgIGVsaWYgbW9kZVswXSA9PSAidCI6ICAgICAgICAjIHRleHQKICAgICAgICB0
cnk6CiAgICAgICAgICAgIHByaW50cmVwb3J0KGxvZ3BhdGgsIGVudHJ5Y291bnQpCiAgICAgICAg
ZXhjZXB0OgogICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkgICAgICAgICAgICAjIFBy
aW50IHRoZSBleGNlcHRpb24KCiAgICBlbGlmIG1vZGVbMF0gPT0gIngiOiAgICAgICAgIyB4bWwK
ICAgICAgICB0cnk6CiAgICAgICAgICAgIHByaW50eG1scmVwb3J0KGxvZ3BhdGgsIGVudHJ5Y291
bnQpCiAgICAgICAgZXhjZXB0OgogICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkgICAg
ICAgICAgICAjIFByaW50IHRoZSBleGNlcHRpb24KCiAgICBlbHNlOiAgICAgICAgICAgICAgICAg
ICAgICAgIyB1bmtub3duIG1vZGUKICAgICAgICBwcmludCAiRXJyb3I6IFVua25vd24gbW9kZSAn
JXMnIiAlIG1vZGUKICAgICAgICBwcmludCAiIFZhbGlkIG1vZGVzIGFyZTogY3Vyc2VzLCB0ZXh0
LCBvciB4bWwiCiAgICAgICAgc3lzLmV4aXQoMikKCg==

--Boundary_(ID_kUK8IjAiI7NeofNe+avnKw)--