Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#351 2020-01-24 17:54:23

etc
Developer
Registered: 2010-11-11
Posts: 3,789
Website

Re: etc_query: all things Textpattern

Karsten wrote #321328:

It would also be really cool to be able to use reg. expressions in conditional tags.

Actually, you can also abuse match="pattern" attribute of <txp:if_custom_field /> tag:

<txp:if_custom_field name="body" value="\d" match="pattern" />

Offline

#352 2020-08-09 07:12:40

colak
Admin
From: Cyprus
Registered: 2004-11-20
Posts: 8,189
Website

Re: etc_query: all things Textpattern

Hi Oleg, It appears that EvalElse is here to haunt us. When I posted that thread I was not certain if it was the etc_query plugin, but it appears that it might need a slight update.


Yiannis
——————————
neme.org | hblack.net | LABS | State Machines | NeMe @ github | Covid-19; a resource
I do my best editing after I click on the submit button.

Offline

#353 2020-08-09 07:45:05

etc
Developer
Registered: 2010-11-11
Posts: 3,789
Website

Re: etc_query: all things Textpattern

Hi Yiannis, it’s txp that needs to be updated, we can not patch every plugin. And the patch would be a little more complex in etc_query case. I hope 4.8.3 will be released very shortly, sorry for the trouble.

Offline

#354 2020-08-09 08:11:20

colak
Admin
From: Cyprus
Registered: 2004-11-20
Posts: 8,189
Website

Re: etc_query: all things Textpattern

Hi Oleg, no worries, I reverted the plugin to the latest version I had stored 1.3.3.


Yiannis
——————————
neme.org | hblack.net | LABS | State Machines | NeMe @ github | Covid-19; a resource
I do my best editing after I click on the submit button.

Offline

#355 2020-08-09 08:19:11

etc
Developer
Registered: 2010-11-11
Posts: 3,789
Website

Re: etc_query: all things Textpattern

Here is a version that should work in 4.8.2:

# Name: etc_query v1.3.5 
# Type: Public plugin
# Query data with XPath
# Author: Oleg Loukianov
# URL: http://www.iut-fbleau.fr/projet/etc/
# Recommended load order: 5

# .....................................................................
# This is a plugin for Textpattern CMS - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# .....................................................................

YToxMTp7czo0OiJuYW1lIjtzOjk6ImV0Y19xdWVyeSI7czo2OiJhdXRob3IiO3M6MTQ6Ik9s
ZWcgTG91a2lhbm92IjtzOjEwOiJhdXRob3JfdXJpIjtzOjM2OiJodHRwOi8vd3d3Lml1dC1m
YmxlYXUuZnIvcHJvamV0L2V0Yy8iO3M6NzoidmVyc2lvbiI7czo1OiIxLjMuNSI7czoxMToi
ZGVzY3JpcHRpb24iO3M6MjE6IlF1ZXJ5IGRhdGEgd2l0aCBYUGF0aCI7czo0OiJjb2RlIjtz
OjM4NjIyOiIvLyBUWFAgNC43IHRhZyByZWdpc3RyYXRpb24NCmlmIChjbGFzc19leGlzdHMo
J1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0cnknKSkgew0KCVR4cDo6Z2V0KCdcVGV4dHBhdHRl
cm5cVGFnXFJlZ2lzdHJ5JyktPnJlZ2lzdGVyKCdldGNfcXVlcnknKTsNCglpZihtZXRob2Rf
ZXhpc3RzKCdcVGV4dHBhdHRlcm5cVGFnXFJlZ2lzdHJ5JywgJ3JlZ2lzdGVyQXR0cicpKQ0K
CQlUeHA6OmdldCgnXFRleHRwYXR0ZXJuXFRhZ1xSZWdpc3RyeScpLT5yZWdpc3RlckF0dHIo
J2V0Y19yZXBsYWNlJywgJ2V0Yy1xdWVyeSwgZXRjLXJlcGxhY2UnKS0+cmVnaXN0ZXJBdHRy
KGZhbHNlLCAnZXRjLWJyZWFrJyk7DQp9DQoNCmZ1bmN0aW9uIGV0Y19yZXBsYWNlKCRhdHRz
LCAkdGhpbmcgPSAnJykNCnsNCgkkYXR0cyA9IGxBdHRzKGFycmF5KA0KCQknZXRjLXF1ZXJ5
JyA9PiAnLicsDQoJCSdldGMtcmVwbGFjZScgPT4gJycsDQoJCSdldGMtYnJlYWsnID0+ICcn
LA0KCSksICRhdHRzLCBmYWxzZSk7DQoNCgkkb3V0ID0gdHJpbSgkdGhpbmcpICE9PSAnJyA/
IGV0Y19xdWVyeShhcnJheSgnZGF0YScgPT4gJHRoaW5nLCAncXVlcnknID0+ICRhdHRzWydl
dGMtcXVlcnknXSwgJ3JlcGxhY2UnID0+ICRhdHRzWydldGMtcmVwbGFjZSddLCAnYnJlYWsn
ID0+ICRhdHRzWydldGMtYnJlYWsnXSwgJ21hcmt1cCcgPT4gJ2h0bWwnLCAnZ2xvYmFscycg
PT4gJycsICdzcGVjaWFscycgPT4gJycsICdwYXJzZScgPT4gJycpKSA6ICR0aGluZzsNCgly
ZXR1cm4gJG91dDsNCn0NCg0KZnVuY3Rpb24gZXRjX3F1ZXJ5KCRhdHRzLCAkdGhpbmc9Jycp
IHsNCgkkcGhwID0gcGhwKG51bGwsICdlY2hvIDE7JykgPT09ICcxJzsNCg0KCWdsb2JhbCAk
ZXRjX3F1ZXJ5LCAkZXRjX3F1ZXJ5X2NvbnRleHQsICRldGNfcXVlcnlfZ2xvYmFscywgJGV0
Y19xdWVyeV9zYW5pdGl6ZSwgJGV0Y19xdWVyeV9zcGVjaWFsczsNCgkkc2FmZV9jb250ZXh0
ID0gaXNzZXQoJGV0Y19xdWVyeV9jb250ZXh0KSA/ICRldGNfcXVlcnlfY29udGV4dCA6IG51
bGw7DQoJJHNhZmVfZ2xvYmFscyA9IGlzc2V0KCRldGNfcXVlcnlfZ2xvYmFscykgPyAkZXRj
X3F1ZXJ5X2dsb2JhbHMgOiBudWxsOw0KCSRzYWZlX3Nhbml0aXplID0gaXNzZXQoJGV0Y19x
dWVyeV9zYW5pdGl6ZSkgPyAkZXRjX3F1ZXJ5X3Nhbml0aXplIDogbnVsbDsNCgkkc2FmZV9z
cGVjaWFscyA9IGlzc2V0KCRldGNfcXVlcnlfc3BlY2lhbHMpID8gJGV0Y19xdWVyeV9zcGVj
aWFscyA6IG51bGw7DQoJc3RhdGljICRzYWZlX2RlZmF1bHRzID0gYXJyYXkoDQoJCSd1cmwn
ID0+ICcnLA0KCQknY29udGV4dCcgPT4gbnVsbCwNCgkJJ2dsb2JhbHMnID0+ICd2YXJpYWJs
ZSxwcmV0ZXh0LHRoaXNhcnRpY2xlLHRoaXNpbWFnZSx0aGlzZmlsZSx0aGlzbGluaycsDQoJ
CSdzYW5pdGl6ZScgPT4gJycsDQoJCSdmdW5jdGlvbnMnID0+ICcnDQoJKSwNCgkkYXR0c19k
ZWZhdWx0cyA9IGFycmF5KA0KCQknbmFtZScgPT4gbnVsbCwNCgkJJ3NhdmUnID0+IG51bGws
DQoJCSdkYXRhJyA9PiBudWxsLA0KCQkndXJsJyA9PiAnJywNCgkJJ2NvbnRleHQnID0+IG51
bGwsDQoJCSdtYXJrdXAnID0+ICcnLA0KCQknZW5jb2RpbmcnID0+ICdVVEYtOCcsDQovLwkJ
J3N0YXJ0JyA9PiAnJywNCgkJJ3F1ZXJ5JyA9PiBudWxsLA0KCQknZm9ybScgPT4gJycsDQoJ
CSdwb3B1bGF0ZScgPT4gJycsDQovLwkJJ3Rob3JvdWdoJyA9PiAnJywNCgkJJ3JlcGxhY2Un
ID0+ICcnLA0KCQknc2VwYXJhdG9yJyA9PiAnOycsDQoJCSdhcmdzZXAnID0+ICd8JywNCgkJ
J2dsb2JhbHMnID0+ICd2YXJpYWJsZSxwcmV0ZXh0LHRoaXNhcnRpY2xlLHRoaXNpbWFnZSx0
aGlzZmlsZSx0aGlzbGluaycsDQoJCSdzcGVjaWFscycgPT4gJ2RhdGEscXVlcnknLA0KCQkn
c2FuaXRpemUnID0+ICcnLA0KCQkncGFyc2UnID0+ICdhdXRvJywNCgkJJ2Z1bmN0aW9ucycg
PT4gJycsDQoJCSdsaW1pdCcgPT4gbnVsbCwNCgkJJ29mZnNldCcgPT4gJzAnLA0KCQknbGFi
ZWwnID0+ICcnLA0KCQknbGFiZWx0YWcnID0+ICcnLA0KCQknd3JhcHRhZycgPT4gJycsDQoJ
CSdicmVhaycgPT4gJycsDQoJCSdjbGFzcycgPT4gJycsDQoJCSdodG1sX2lkJyA9PiAnJywN
CgkJJ2RlYnVnJyA9PiAnJw0KCSk7DQoNCglleHRyYWN0KGxBdHRzKCRhdHRzX2RlZmF1bHRz
LCAkcGhwID8gJGF0dHMgOiAkc2FmZV9kZWZhdWx0cyArICRhdHRzKSk7DQoNCglpZigkZGVi
dWcpIHsNCgkJJGRlYnVnID0gZG9fbGlzdCgkZGVidWcpOw0KCQkkc3RhcnR0aW1lID0gbWlj
cm90aW1lKFRSVUUpOw0KCX0NCg0KCS8vIEdyYWIgdGhlIGZvcm0gb3IgZW1iZWRkZWQgJHRo
aW5nDQoJJG9sZFRoaW5nID0gJHRoaW5nOw0KCWlmKCRmb3JtICYmICRmb3JtID0gZmV0Y2hf
Zm9ybSgkZm9ybSkpICR0aGluZyA9ICRjb250ZW50ID0gJGZvcm07DQoJZWxzZSAkY29udGVu
dCA9IGlzc2V0KCR0aGluZykgPyAoc3RyaW5nKUV2YWxFbHNlKCR0aGluZywgMSkgOiAnJzsN
Cg0KCSRub2RhdGEgPSAhJHVybCAmJiAoJGRhdGEgPT09IG51bGwpOw0KCUBsaXN0KCRlbmNv
ZGluZywgJGVuY19mcm9tKSA9IGV4cGxvZGUoJzonLCAkZW5jb2RpbmcpOw0KDQoJJGV0Y19x
dWVyeV9jb250ZXh0ID0gYXJyYXkoJ2FyZ3NlcCc9PiRhcmdzZXAsICdlbmNvZGluZyc9PiRl
bmNvZGluZywgJ2Z1bmN0aW9ucyc9PicnLCAnc3RyaXAnPT5hcnJheSgnX0NPT0tJRScsICdf
R0VUJywgJ19QT1NUJywgJ19SRVFVRVNUJyksICdwaHAnPT4kcGhwKTsNCg0KCSRldGNfcXVl
cnlfZ2xvYmFscyA9ICRnbG9iYWxzID8gZG9fbGlzdCgkZ2xvYmFscykgOiBmYWxzZTsNCgkk
c3BlY2lhbGNoYXJzID0gaXNfY2FsbGFibGUoJ3R4cHNwZWNpYWxjaGFycycpID8gJ3R4cHNw
ZWNpYWxjaGFycycgOiAnaHRtbHNwZWNpYWxjaGFycyc7DQoJJGV0Y19xdWVyeV9zYW5pdGl6
ZSA9IGFycmF5X2ZpbGxfa2V5cygkZXRjX3F1ZXJ5X2NvbnRleHRbJ3N0cmlwJ10sICRzcGVj
aWFsY2hhcnMpOw0KCWlmKCRzYW5pdGl6ZSkgZm9yZWFjaChkb19saXN0KCRzYW5pdGl6ZSkg
YXMgJGl0ZW0pIHsNCgkJQGxpc3QoJGtleSwgJHZhbCkgPSBleHBsb2RlKCc6JywgJGl0ZW0s
IDIpOw0KCQlpZighaXNzZXQoJHZhbCkpICRldGNfcXVlcnlfc2FuaXRpemVbJGtleV0gPSAk
c3BlY2lhbGNoYXJzOw0KCQllbHNlaWYoISR2YWwgfHwgaXNfY2FsbGFibGUoJHZhbCkpICRl
dGNfcXVlcnlfc2FuaXRpemVbJGtleV0gPSAkdmFsOw0KCX0NCi8vCSRldGNfcXVlcnlfc2Fu
aXRpemUgPSAkc2FuaXRpemUgPyBhcnJheV9maWxsX2tleXMoZG9fbGlzdCgkc2FuaXRpemUp
LCB0cnVlKSA6IG51bGw7DQoNCglpZigkc3BlY2lhbHMpIGZvcmVhY2goZG9fbGlzdCgkc3Bl
Y2lhbHMpIGFzICRzcGVjaWFsKSBpZighZW1wdHkoJCRzcGVjaWFsKSkgew0KCQkkJHNwZWNp
YWwgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soRVRDX1BSRUdfU1BFQywgJ2V0Y19wYXJzZV92
YXJpYWJsZScsICQkc3BlY2lhbCk7DQoJfQ0KDQoJaWYoJGZ1bmN0aW9ucykgew0KCQkkZnVu
Y3Rpb25zID0gZG9fbGlzdCgkZnVuY3Rpb25zKTsNCgkJJGZ1bmMgPSBpbXBsb2RlKCd8Jywg
JGZ1bmN0aW9ucyk7DQoJCWlmKCRxdWVyeSkgJHF1ZXJ5ID0gcHJlZ19yZXBsYWNlKCcvXGIo
Jy4kZnVuYy4nKVxzKlwoLycsICJwaHA6ZnVuY3Rpb24oJyQxJywiLCAkcXVlcnkpOw0KCX0N
CgkkZXRjX3F1ZXJ5X2NvbnRleHRbJ2Z1bmN0aW9ucyddID0gJGZ1bmN0aW9ucyA/ICRmdW5j
IDogJyc7DQoNCglpZigkbWFya3VwICE9PSAnZGF0YScpICRsb2FkZWQgPSBmYWxzZTsNCgll
bHNlaWYoJGRhdGEgJiYgaXNzZXQoJGV0Y19xdWVyeVskZGF0YV0pKSB7DQoJCSRtYXJrdXAg
PSAkZXRjX3F1ZXJ5WyRkYXRhXS0+bWFya3VwOw0KCQlpZihpc3NldCgkZXRjX3F1ZXJ5WyRk
YXRhXS0+ZG9tKSkgJGRvbSA9ICYkZXRjX3F1ZXJ5WyRkYXRhXS0+ZG9tOw0KCQlpZihpc3Nl
dCgkZXRjX3F1ZXJ5WyRkYXRhXS0+ZGF0YSkpICRkYXRhID0gJiRldGNfcXVlcnlbJGRhdGFd
LT5kYXRhOw0KCQkkbG9hZGVkID0gdHJ1ZTsNCgl9IGVsc2UgJGRhdGEgPSAnJzsNCg0KCWlm
KCRkYXRhID09PSAnJyB8fCAkcXVlcnkgPT09ICcnKSByZXR1cm4gZXRjX2NsZWFudXAocGFy
c2UoJG9sZFRoaW5nLCBmYWxzZSksICRzYWZlX2NvbnRleHQsICRzYWZlX2dsb2JhbHMsICRz
YWZlX3Nhbml0aXplLCAkc2FmZV9zcGVjaWFscyk7DQoNCglpZihlbXB0eSgkbWFya3VwKSkg
aWYoJGRhdGEgPT09IG51bGwpICRtYXJrdXAgPSAkdXJsID8gJycgOiAoJHF1ZXJ5ICE9PSBu
dWxsICYmICRxdWVyeVswXSAhPT0gJyQnID8gJ3htbCcgOiAncmF3Jyk7DQoJCWVsc2UgJG1h
cmt1cCA9IChzdHJ0b2xvd2VyKHN1YnN0cigkZGF0YSwgMCwgNykpID09PSAnc2VsZWN0ICcg
PyAnZGInIDogKCRkYXRhWzBdID09PSAnWycgfHwgJGRhdGFbMF0gPT09ICd7JyAmJiAoJGRh
dGFbMV0gPT09ICciJyB8fCAkZGF0YVsxXSA9PT0gJyAnKSA/ICdqc29uJyA6ICgkdXJsIHx8
ICRyZXBsYWNlIHx8IHN0cnBvcygkZGF0YSwgJzwnKSAhPT0gZmFsc2UgPyAnaHRtbCcgOiAn
cmF3JykpKTsNCgllbHNlIHsNCgkJQGxpc3QoJG1hcmt1cCwgJHBmeCkgPSBleHBsb2RlKCc6
JywgJG1hcmt1cCwgMik7DQoJCWlmKHN1YnN0cigkbWFya3VwLCAtMSkgPT09ICcqJykgeyRj
ZGF0YSA9IHRydWU7ICRtYXJrdXAgPSBzdWJzdHIoJG1hcmt1cCwgMCwgLTEpO30NCgkJaWYo
JG1hcmt1cCA9PT0gJ2RiJyAmJiBzdHJ0b2xvd2VyKHN1YnN0cigkZGF0YSwgMCwgNykpICE9
PSAnc2VsZWN0ICcpIHsNCgkJCXN3aXRjaCgkcG9wdWxhdGUpIHsNCgkJCQljYXNlICdmaWxl
JyA6ICRmaWVsZHMgPSAnKic7ICRmaWx0ZXIgPSBzYWZlX3BmeCgkcG9wdWxhdGUpLiIgV0hF
UkUgc3RhdHVzID49IDQgQU5EICRkYXRhIjsgYnJlYWs7DQoJCQkJY2FzZSAnaW1hZ2UnIDog
Y2FzZSAnbGluaycgOiAkZmllbGRzID0gJyonOyAkZmlsdGVyID0gc2FmZV9wZngoJHBvcHVs
YXRlKS4nIFdIRVJFICcuJGRhdGE7IGJyZWFrOw0KCQkJCWRlZmF1bHQgOiAkZmllbGRzID0g
JyosIHVuaXhfdGltZXN0YW1wKFBvc3RlZCkgYXMgdVBvc3RlZCwgdW5peF90aW1lc3RhbXAo
RXhwaXJlcykgYXMgdUV4cGlyZXMsIHVuaXhfdGltZXN0YW1wKExhc3RNb2QpIGFzIHVMYXN0
TW9kJzsNCgkJCQlpZiAoaXNfY2FsbGFibGUoJ25vdycpKSB7JG5vd19wb3N0ZWQgPSBub3co
J3Bvc3RlZCcpOyAkbm93X2V4cGlyZXMgPSBub3coJ2V4cGlyZXMnKTt9IGVsc2UgeyRub3df
cG9zdGVkID0gJG5vd19leHBpcmVzID0gJ05PVygpJzt9DQoJCQkJJGZpbHRlciA9IHNhZmVf
cGZ4KCd0ZXh0cGF0dGVybicpLiIgV0hFUkUgU3RhdHVzID49IDQgQU5EIFBvc3RlZCA8PSAk
bm93X3Bvc3RlZCBBTkQgKEV4cGlyZXMgSVMgTlVMTCBPUiBFeHBpcmVzID49ICRub3dfZXhw
aXJlcykgQU5EICRkYXRhIjsNCgkJCQkvL2lmKGVtcHR5KCRwZngpKSAkcGZ4ID0gJ2FydGlj
bGUnOw0KCQkJfQ0KCQkJJGRhdGEgPSAiU0VMRUNUICRmaWVsZHMgRlJPTSAkZmlsdGVyIjsN
CgkJfQ0KCX0NCg0KCWlmKCEkcGhwICYmICRtYXJrdXAgPT09ICdkYicpIHJldHVybiBldGNf
Y2xlYW51cChwYXJzZSgkb2xkVGhpbmcsIGZhbHNlKSwgJHNhZmVfY29udGV4dCwgJHNhZmVf
Z2xvYmFscywgJHNhZmVfc2FuaXRpemUsICRzYWZlX3NwZWNpYWxzKTsNCg0KCWlmKCFlbXB0
eSgkcG9wdWxhdGUpKSB7DQoJCWdsb2JhbCAkeyd0aGlzJy4kcG9wdWxhdGV9Ow0KCQkkdGhp
c3BvcHVsYXRlID0gaXNzZXQoJHsndGhpcycuJHBvcHVsYXRlfSkgPyAkeyd0aGlzJy4kcG9w
dWxhdGV9IDogbnVsbDsNCgkJJGZvcm1hdF9pbmZvID0gJHBvcHVsYXRlLigkcG9wdWxhdGUg
PT09ICdmaWxlJyA/ICdfZG93bmxvYWQnIDogJycpLidfZm9ybWF0X2luZm8nOw0KCQlpZigk
cG9wdWxhdGUgPT09ICdhcnRpY2xlJykgJGNvbHVtbl9tYXAgPSBhcnRpY2xlX2NvbHVtbl9t
YXAoKTsNCgl9DQoNCglpZigkY29udGVudCAhPT0gJycpIHsNCgkJaWYoJHBhcnNlID09PSAn
YXV0bycpICRwYXJzZSA9IChzdHJwb3MoJGNvbnRlbnQsICc8dHhwOicpICE9PSBmYWxzZSA/
ICdhZnRlcicgOiAnJyk7DQoJCWVsc2VpZigkcGFyc2UgPT09ICdiZWZvcmUnIHx8ICRwYXJz
ZSA9PT0gJ2JvdGgnKSAkY29udGVudCA9IHBhcnNlKCRjb250ZW50KTsNCgkJaWYoc3RycG9z
KCRjb250ZW50LCAnPHhzbDonKSAhPT0gZmFsc2UpIHskeGNvbnRlbnQgPSAkY29udGVudDsg
JGNvbnRlbnQgPSAnJzt9DQoJfQ0KCSRwYXJzZSA9ICgkcGFyc2UgPT09ICdhZnRlcicgfHwg
JHBhcnNlID09PSAnYm90aCcpOw0KDQoJJGZsYXQgPSAoJG1hcmt1cCAhPT0gJ2h0bWwnICYm
ICRtYXJrdXAgIT09ICd4bWwnICYmICEkcmVwbGFjZSAmJiAhaXNzZXQoJHhjb250ZW50KSk7
Ly9hcnJheSBtb2RlDQoJJHF1ZXJ5X2FycmF5ID0gbnVsbDsvL2FycmF5KCk7DQoJaWYoJGZs
YXQpIGlmKCRxdWVyeSAhPT0gbnVsbCkgDQoJew0KCQlpZigkcXVlcnlbMF0gPT09ICckJykg
ew0KCQkJaWYoJG5vZGF0YSkgJGRhdGEgPSAkY29udGVudDsNCgkJCSRjb250ZW50ID0gJ3sn
LiRxdWVyeS4nfSc7DQoJCQkkcXVlcnkgPSAnLic7ICRxdWVyeV9hcnJheSA9IGFycmF5KCk7
DQoJCX0gZWxzZSB7DQoJCQkkcXVlcnlfYXJyYXkgPSBldGNfcGFyc2VfeHBhdGgoJHF1ZXJ5
Lic/JywgJGZsYXQpOw0KCQkJaWYoaXNzZXQoJHF1ZXJ5X2FycmF5WydhcnJheSddKSkgJHF1
ZXJ5X2FycmF5ID0gJHF1ZXJ5X2FycmF5WydhcnJheSddOw0KCQl9DQoJfQ0KCWVsc2VpZigk
bWFya3VwID09PSAnZGInKQ0KCQlpZigkY29udGVudCA9PT0gJycpIHskcXVlcnkgPSAnKi8q
JzsgJHF1ZXJ5X2FycmF5ID0gYXJyYXkoJyonLCAnKicpO30NCg0KCWlmKCRldGNfcXVlcnlf
Z2xvYmFscyAmJiBzdHJwb3MoJGNvbnRlbnQuJHJlcGxhY2UsICd7PycpID09PSBmYWxzZSAm
JiBzdHJwb3MoJGNvbnRlbnQuJHJlcGxhY2UsICd7IScpID09PSBmYWxzZSkgJGV0Y19xdWVy
eV9nbG9iYWxzID0gZmFsc2U7DQoJaWYoJGNvbnRlbnQgIT09ICcnKSAkY29udGVudHMgPSBl
dGNfcGFyc2Vfc3RyaW5nKCRjb250ZW50LCAkZmxhdCk7DQoJZWxzZWlmKCR0aGluZykgJGNv
bnRlbnRzID0gYXJyYXkoJ3RleHQnID0+ICcnKTsNCgllbHNlICRjb250ZW50cyA9IGFycmF5
KCk7DQoNCglpZigkcmVwbGFjZSkgaWYoc3RycG9zKCRyZXBsYWNlLCAnPHhzbDonKSAhPT0g
ZmFsc2UpIHskeHJlcGxhY2UgPSAkcmVwbGFjZTsgJHJlcGxhY2UgPSAnJzt9DQoJZWxzZSB7
DQoJCSRyZXBsYWNlX2FycmF5ID0gYXJyYXkoKTsNCgkJZm9yZWFjaChkb19saXN0KCRyZXBs
YWNlLCAkc2VwYXJhdG9yKSBhcyAkcGF0KSBpZigkcGF0ICE9PSAnJykgew0KCQkJJHJlcGxh
Y2VfYXJyYXlbXSA9IGV0Y19wYXJzZV94cGF0aCgkcGF0LCAkZmxhdCk7DQoJCX0NCgkJaWYo
JGRlYnVnICYmIGluX2FycmF5KCdyJywgJGRlYnVnKSkge2VjaG8gJ1JFUExBQ0UnOyBkbXAo
JHJlcGxhY2VfYXJyYXkpO30NCgl9DQoNCglpZighJGxvYWRlZCkgew0KCQlpZigkdXJsKSBp
ZigkbWFya3VwID09PSAnZGInKQ0KCQkJew0KCQkJCWdsb2JhbCAkREI7DQoJCQkJJG15c3Fs
aSA9IGlzX29iamVjdCgkREItPmxpbmspOw0KCQkJCSRyZXN1bHQgPSAkbXlzcWxpID8gbXlz
cWxpX3NlbGVjdF9kYigkREItPmxpbmssICR1cmwpIDogbXlzcWxfc2VsZWN0X2RiKCR1cmwp
Ow0KCQkJCSRkYXRhID0gJHJlc3VsdCA/IGdldFJvd3MoJGRhdGEpIDogbnVsbDsNCgkJCQlp
ZigkbXlzcWxpKSBteXNxbGlfc2VsZWN0X2RiKCREQi0+bGluaywgJERCLT5kYik7IGVsc2Ug
bXlzcWxfc2VsZWN0X2RiKCREQi0+ZGIpOw0KCQkJfSBlbHNlaWYoJG1hcmt1cCA9PT0gJ2xk
YXAnKSB7DQoJCQkJJGxkYXBjb25uID0gbGRhcF9jb25uZWN0KCR1cmwpOw0KLy8JCQkJbGRh
cF9zZXRfb3B0aW9uKCRsZGFwY29ubiwgTERBUF9PUFRfUFJPVE9DT0xfVkVSU0lPTiwgMyk7
DQoJCQkJaWYoJGxkYXBjb25uKQ0KCQkJCXsNCgkJCQkJQGxpc3QoJGxkYXByZG4sICRsZGFw
ZmlsdGVyLCAkbGRhcG9ubHkpID0gZG9fbGlzdCgkZGF0YSwgJzsnKTsNCgkJCQkJaWYoIWlz
c2V0KCRsZGFwZmlsdGVyKSkgJGxkYXBmaWx0ZXIgPSAnb2JqZWN0Q2xhc3M9Kic7DQoJCQkJ
CSRsZGFwb25seSA9ICghZW1wdHkoJGxkYXBvbmx5KSA/IGRvX2xpc3QoJGxkYXBvbmx5KSA6
IGFycmF5KCkpOw0KCQkJCQkkZGF0YSA9IGxkYXBfc2VhcmNoKCRsZGFwY29ubiwgJGxkYXBy
ZG4sICRsZGFwZmlsdGVyLCAkbGRhcG9ubHkpOw0KCQkJCQkkZGF0YSA9IGxkYXBfZ2V0X2Vu
dHJpZXMoJGxkYXBjb25uLCAkZGF0YSk7DQoJCQkJCWxkYXBfY2xvc2UoJGxkYXBjb25uKTsN
CgkJCQl9DQoJCQkJZWxzZSAkZGF0YSA9IG51bGw7DQoJCQl9IGVsc2Ugew0KCQkJCSRjb250
ZXh0ID0gJGNvbnRleHQgPyBzdHJlYW1fY29udGV4dF9jcmVhdGUoanNvbl9kZWNvZGUoJGNv
bnRleHQsIHRydWUpKSA6IG51bGw7DQoJCQkJJGRhdGEgPSBmaWxlX2dldF9jb250ZW50cygk
dXJsLCBmYWxzZSwgJGNvbnRleHQpOw0KCQkJCWlmKCFlbXB0eSgkaHR0cF9yZXNwb25zZV9o
ZWFkZXIpKSBmb3JlYWNoKCRodHRwX3Jlc3BvbnNlX2hlYWRlciBhcyAkaGVhZGVyKSBpZihw
cmVnX21hdGNoKCcvXkNvbnRlbnRcLVR5cGVcOiguKikvaScsICRoZWFkZXIsICRtYXRjaGVz
KSkgew0KCQkJCQlsaXN0KCRtaW1lLCAkb3B0KSA9IGV4cGxvZGUoJzsnLCAkbWF0Y2hlc1sx
XSk7DQoJCQkJCWxpc3QoJHR5cGUsICRzdWJ0eXBlKSA9IGV4cGxvZGUoJy8nLCBzdHJ0b2xv
d2VyKHRyaW0oJG1pbWUpKSk7DQoJCQkJCWlmKCEkbWFya3VwICYmIGluX2FycmF5KCRzdWJ0
eXBlLCBhcnJheSgnanNvbicsICdodG1sJywgJ3htbCcpKSkgJG1hcmt1cCA9ICRzdWJ0eXBl
Ow0KCQkJCQlpZihwcmVnX21hdGNoKCcvXGJjaGFyc2V0PShbXHdcLSNdKykvaScsICRvcHQs
ICRtYXRjaGVzKSkgJGVuYyA9IHN0cnRvdXBwZXIoJG1hdGNoZXNbMV0pOw0KCQkJCQlicmVh
azsNCgkJCQl9DQoJCQkJaWYoJGVuY29kaW5nICYmICRkYXRhKSB7DQoJCQkJCSRlbmNvZGlu
ZyA9IHN0cnRvdXBwZXIoJGVuY29kaW5nKTsNCgkJCQkJaWYoaXNzZXQoJGVuY19mcm9tKSAm
JiAkZW5jX2Zyb20gIT09ICcqJykgJGVuYyA9IHN0cnRvdXBwZXIoJGVuY19mcm9tKTsNCgkJ
CQkJZWxzZWlmKCFpc3NldCgkZW5jKSAmJiBwcmVnX21hdGNoKCcvPG1ldGFcYltePl0rXGJj
aGFyc2V0PSI/KFtcd1wtI10rKSI/W14+XSo+L2knLCAkZGF0YSwgJG1hdGNoZXMpKSAkZW5j
ID0gc3RydG91cHBlcigkbWF0Y2hlc1sxXSk7DQoJCQkJCWlmKGlzX2NhbGxhYmxlKCdtYl9k
ZXRlY3RfZW5jb2RpbmcnKSkgew0KCQkJCQkJaWYoIWlzc2V0KCRlbmMpKSAkZW5jID0gc3Ry
dG91cHBlcihtYl9kZXRlY3RfZW5jb2RpbmcoJGRhdGEpKTsgLy9lbHNlIGRtcCgkZW5jKTsN
CgkJCQkJCSRtYl9lbmNvZGluZ3MgPSAkZW5jID8gYXJyYXlfbWFwKCdzdHJ0b3VwcGVyJywg
bWJfbGlzdF9lbmNvZGluZ3MoKSkgOiBhcnJheSgpOw0KCQkJCQkJJG1iX2VuY29kaW5ncyA9
IGluX2FycmF5KCRlbmNvZGluZywgJG1iX2VuY29kaW5ncykgJiYgaW5fYXJyYXkoJGVuYywg
JG1iX2VuY29kaW5ncyk7DQoJCQkJCX0NCgkJCQkJZWxzZSAkbWJfZW5jb2RpbmdzID0gZmFs
c2U7DQoJCQkJCWlmKCRlbmMgJiYgKCRlbmMgIT09ICRlbmNvZGluZyB8fCBpc3NldCgkZW5j
X2Zyb20pKSkNCgkJCQkJCWlmKCRtYl9lbmNvZGluZ3MpICRkYXRhID0gbWJfY29udmVydF9l
bmNvZGluZygkZGF0YSwgJGVuY29kaW5nLCAkZW5jKTsNCgkJCQkJCWVsc2VpZihpc19jYWxs
YWJsZSgnaWNvbnYnKSkgJGRhdGEgPSBpY29udigkZW5jLCAkZW5jb2RpbmcuJy8vSUdOT1JF
JywgJGRhdGEpOw0KCQkJCX0NCgkJCX0NCg0KCQlpZigkbWFya3VwID09PSAnanNvbicpIGlm
KHByZWdfbWF0Y2goJy9eXFsoXC0/XHcrKVwuXC4oXC0/XHcrKTo/KFtcK1wtXT8pKFxkKilc
XSQvJywgJGRhdGEsICRtYXRjaGVzKSkgc3dpdGNoKCRtYXRjaGVzWzNdKSB7DQoJCQkJY2Fz
ZSAnKycgOiBpZigkbWF0Y2hlc1sxXSA8PSAkbWF0Y2hlc1syXSkgJGRhdGEgPSByYW5nZSgk
bWF0Y2hlc1sxXSwgJG1hdGNoZXNbMl0sICRtYXRjaGVzWzRdID8gJG1hdGNoZXNbNF0gOiAx
KTsgZWxzZSAkZGF0YSA9IG51bGw7IGJyZWFrOw0KCQkJCWNhc2UgJy0nIDogaWYoJG1hdGNo
ZXNbMV0gPj0gJG1hdGNoZXNbMl0pICRkYXRhID0gcmFuZ2UoJG1hdGNoZXNbMV0sICRtYXRj
aGVzWzJdLCAkbWF0Y2hlc1s0XSA/ICRtYXRjaGVzWzRdIDogMSk7IGVsc2UgJGRhdGEgPSBu
dWxsOyBicmVhazsNCgkJCQlkZWZhdWx0IDogJGRhdGEgPSByYW5nZSgkbWF0Y2hlc1sxXSwg
JG1hdGNoZXNbMl0sICRtYXRjaGVzWzRdID8gJG1hdGNoZXNbNF0gOiAxKTsNCgkJCX0gZWxz
ZSAkZGF0YSA9IGpzb25fZGVjb2RlKCRkYXRhLCB0cnVlKTsgLy9hcnJheQ0KCQllbHNlaWYo
JG1hcmt1cCA9PT0gJ2FycmF5JykgJGRhdGEgPSB1bnNlcmlhbGl6ZSgkZGF0YSk7DQoJCWVs
c2VpZigkbWFya3VwID09PSAnbGlzdCcpIHsNCgkJCSRkYXRhID0gYXJyYXlfZmlsdGVyKGRv
X2xpc3QoJGRhdGEsIGlzc2V0KCRwZngpID8gJHBmeCA6ICcsJyksIGZ1bmN0aW9uKCRhKSB7
cmV0dXJuIChzdHJpbmcpJGEgIT09ICcnO30pOw0KCQkJaWYoaXNzZXQoJHBmeCkpIHVuc2V0
KCRwZngpOw0KCQl9IGVsc2VpZigkbWFya3VwID09PSAnZGInICYmICEkdXJsIC8qJiYgJGRh
dGEqLykgew0KCQkJJGRhdGEgPSBnZXRSb3dzKCRkYXRhKTsNCgkJfSBlbHNlaWYoISRtYXJr
dXApICRtYXJrdXAgPSAnaHRtbCc7DQoJfQ0KCWVsc2VpZighJGZsYXQgJiYgIWlzc2V0KCRk
b20pKSB7JGxvYWRlZCA9IGZhbHNlO30NCg0KCSRpc19odG1sID0gJG1hcmt1cCA9PT0gJ2h0
bWwnOw0KCSRpc194bWwgPSAkbWFya3VwID09PSAneG1sJzsNCgkkZmxhdCA9ICRmbGF0ICYm
ICEkaXNfaHRtbCAmJiAhJGlzX3htbDsNCg0KCWlmKCRkZWJ1Zykgew0KCQkkZW5kdGltZSA9
IG1pY3JvdGltZShUUlVFKTsNCgkJZG1wKCJQcmVsb2FkZWQgaW4gIiAuICgkZW5kdGltZSAt
ICRzdGFydHRpbWUpIC4gIiBzZWNvbmRzLlxuIik7DQoJCSRzdGFydHRpbWUgPSBtaWNyb3Rp
bWUoVFJVRSk7DQoJfQ0KDQoJaWYoISRub2RhdGEgJiYgZW1wdHkoJGRhdGEpKSAkcm9vdHMg
PSBudWxsOw0KCWVsc2VpZigkZmxhdCkgeyRyb290cyA9IGFycmF5KCRkYXRhID8gJGRhdGEg
OiAnJyk7ICR4cGF0aCA9IG51bGw7fQ0KCWVsc2Ugew0KCQlpZighJGxvYWRlZCkgew0KCQkJ
LyoqKiBsb2FkIHRoZSBkYXRhIGludG8gYSBuZXcgZG9tIG9iamVjdCAqKiovDQoJCQkkZG9t
ID0gbmV3IERPTURvY3VtZW50Ow0KCQkJJGRvbS0+cHJlc2VydmVXaGl0ZVNwYWNlID0gZmFs
c2U7DQoJCQkkZG9tLT5zdHJpY3RFcnJvckNoZWNraW5nID0gZmFsc2U7DQoJCQkkZG9tLT5l
bmNvZGluZyA9ICRlbmNvZGluZzsNCgkJCWlmKCEkZGVidWcpIGxpYnhtbF91c2VfaW50ZXJu
YWxfZXJyb3JzKHRydWUpOw0KDQoJCQlpZihpc3NldCgkY2RhdGEpICYmICRkYXRhKSAkZGF0
YSA9IHN0cl9pcmVwbGFjZShhcnJheSgnPCFbQ0RBVEFbJywgJ11dPicpLCAnPCEtLS0tPics
ICRkYXRhKTsNCgkJCWlmKGlzc2V0KCRwZngpICYmICRwZnggPT09ICcnKSAkZGF0YSA9IHN0
cl9yZXBsYWNlKCcgeG1sbnM9JywgJyBldGNucz0nLCAkZGF0YSk7DQoNCgkJCWlmKCRpc19o
dG1sKSB7DQovLwkJCQlpZigkdXJsKSAkZG9tLT5sb2FkSFRNTChwcmVnX3JlcGxhY2UoJy88
aGVhZC4qPi9Vc2knLCAnXFwwPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9JyAuICRlbmNvZGluZyAuICciPicsICRkYXRhKSk7
DQoJCQkJaWYoJHVybCkgJGRvbS0+bG9hZEhUTUwoJzxtZXRhIGh0dHAtZXF1aXY9ImNvbnRl
bnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PScgLiAkZW5jb2RpbmcgLiAn
Ij4nIC4gJGRhdGEpOw0KCQkJCWVsc2UgJGRvbS0+bG9hZEhUTUwoJzw/eG1sIGVuY29kaW5n
PSInLiRlbmNvZGluZy4nIj4nLiRkYXRhKTsNCgkJCX0NCgkJCWVsc2VpZigkaXNfeG1sKSB7
aWYoISRub2RhdGEpICRkb20tPmxvYWRYTUwoJGRhdGEsIExJQlhNTF9DT01QQUNUKTt9DQoJ
CQllbHNlaWYoJGRhdGEpIGlmKCFpc19hcnJheSgkZGF0YSkgJiYgIWlzX29iamVjdCgkZGF0
YSkpICRkb20tPmFwcGVuZENoaWxkKCRkb20tPmNyZWF0ZUVsZW1lbnQoJ3Jvb3QnLCAoc3Ry
aW5nKSRkYXRhKSk7IGVsc2Ugew0KCQkJCWZvcmVhY2ggKCRkYXRhIGFzICRrZXkgPT4gJHZh
bCkgJGRvbS0+YXBwZW5kQ2hpbGQoZXRjX2NyZWF0ZV9lbGVtZW50KCRrZXksICR2YWwsICRk
b20pKTsNCgkJCQkkaXNfeG1sID0gdHJ1ZTsNCgkJCX0NCgkJfQ0KDQoJCWlmKChpc3NldCgk
eGNvbnRlbnQpIHx8IGlzc2V0KCR4cmVwbGFjZSkpICYmIGNsYXNzX2V4aXN0cygnWFNMVFBy
b2Nlc3NvcicpKSB7DQoJCQkkeHNsdCA9IG5ldyBET01Eb2N1bWVudDsNCgkJCSRwcm9jID0g
bmV3IFhTTFRQcm9jZXNzb3I7DQoJCQlpZigkZnVuY3Rpb25zKSAkcHJvYy0+cmVnaXN0ZXJQ
SFBGdW5jdGlvbnMoJGZ1bmN0aW9ucyk7DQoJCQlpZihpc3NldCgkeHJlcGxhY2UpKSB7DQoJ
CQkJJHhzbHQtPmxvYWRYTUwoJHhyZXBsYWNlKTsNCgkJCQkkcHJvYy0+aW1wb3J0U3R5bGVT
aGVldCgkeHNsdCk7DQoJCQkJJGRvbSA9ICRwcm9jLT50cmFuc2Zvcm1Ub0RvYygkZG9tKTsN
CgkJCX0NCgkJCWlmKGlzc2V0KCR4Y29udGVudCkpIHsNCgkJCQkkeHNsdC0+bG9hZFhNTCgk
eGNvbnRlbnQpOw0KCQkJCSRwcm9jLT5pbXBvcnRTdHlsZVNoZWV0KCR4c2x0KTsNCgkJCQly
ZXR1cm4gZXRjX2NsZWFudXAoJHByb2MtPnRyYW5zZm9ybVRvWE1MKCRkb20pLCAkc2FmZV9j
b250ZXh0LCAkc2FmZV9nbG9iYWxzLCAkc2FmZV9zYW5pdGl6ZSwgJHNhZmVfc3BlY2lhbHMp
Ow0KCQkJfQ0KCQl9DQoNCgkJJHhwYXRoID0gbmV3IERPTVhwYXRoKCRkb20pOw0KCQlpZigk
ZnVuY3Rpb25zKSB7DQoJCQkkeHBhdGgtPnJlZ2lzdGVyTmFtZXNwYWNlKCdwaHAnLCAnaHR0
cDovL3BocC5uZXQveHBhdGgnKTsNCgkJCSR4cGF0aC0+cmVnaXN0ZXJQSFBGdW5jdGlvbnMo
JGZ1bmN0aW9ucyk7DQoJCX0NCgkJaWYoIWVtcHR5KCRwZngpKSB7DQoJCQkkeHBhdGgtPnJl
Z2lzdGVyTmFtZXNwYWNlKCRwZngsICRkb20tPmxvb2t1cE5hbWVzcGFjZVVyaSgkZG9tLT5u
YW1lc3BhY2VVUkkpKTsNCgkJfQ0KDQoJCWlmKGVtcHR5KCRzdGFydCkpICRzdGFydCA9ICgk
aXNfaHRtbCA/ICcvaHRtbC9ib2R5JyA6ICcvJyk7DQoJCSRyb290cyA9ICR4cGF0aC0+cXVl
cnkoJHN0YXJ0KTsNCg0KCQlpZigkZGVidWcpIHtpZihpbl9hcnJheSgnaCcsICRkZWJ1Zykp
IHtlY2hvICRtYXJrdXA7IGRtcCgkaXNfeG1sPyAkZG9tLT5zYXZlWE1MKCkgOiAkZG9tLT5z
YXZlSFRNTCgpKTt9fQ0KCQllbHNlIGxpYnhtbF9jbGVhcl9lcnJvcnMoKTsNCgl9Ly9kb20N
Cg0KCWlmKGVtcHR5KCRjb250ZW50cykpIHsvLyR0aGluZyA9PT0gbnVsbA0KCQkkcGF0aCA9
ICRmbGF0IHx8ICRxdWVyeSAhPT0gbnVsbCB8fCAkaXNfeG1sID8gJy4nIDogJ25vZGUoKSc7
DQoJCSRjb250ZW50ID0gJHBhdGggIT09ICcuJzsNCgkJJGNvbnRlbnRzID0gYXJyYXkoYXJy
YXkoJ3R5cGUnID0+ICd4cGF0aCcsICd0ZXh0JyA9PiAnJywgJ3ZhbHVlJyA9PiBhcnJheSgn
cGF0aCcgPT4gJHBhdGgsICdtb2RlJyA9PiAkZmxhdCA/ICc/JyA6ICcuJywgJ3ZhbHVlJyA9
PiBhcnJheSgpLCAnYXJyYXknID0+IGFycmF5KCkpKSk7DQoJfSBlbHNlICRjb250ZW50ID0g
dHJ1ZTsNCglpZigkcXVlcnkgPT09IG51bGwpICRxdWVyeSA9ICgkaXNfeG1sICYmICEkbm9k
YXRhID8gJ25vZGUoKScgOiAnLicpOw0KCSRvdXQgPSBhcnJheSgpOw0KCSRldGNfcXVlcnlf
Y29udGV4dFsneHBhdGgnXSA9ICYkeHBhdGg7DQoJJGV0Y19xdWVyeV9jb250ZXh0Wyd4bWwn
XSA9ICRpc194bWw7DQoNCglpZigkZGVidWcpIHsNCgkJJGVuZHRpbWUgPSBtaWNyb3RpbWUo
VFJVRSk7DQoJCWRtcCgiTG9hZGVkIGluICIgLiAoJGVuZHRpbWUgLSAkc3RhcnR0aW1lKSAu
ICIgc2Vjb25kcy4gJGZsYXRcbiIpOw0KCQlpZihpbl9hcnJheSgnZCcsICRkZWJ1ZykpIHtl
Y2hvICdEQVRBICcsICRtYXJrdXA7IGRtcCgkZGF0YSk7fQ0KCQlpZihpbl9hcnJheSgncScs
ICRkZWJ1ZykpIHtlY2hvICdRVUVSWSc7IGRtcCgkcXVlcnkpOyBkbXAoJHF1ZXJ5X2FycmF5
KTt9DQoJCWlmKGluX2FycmF5KCdjJywgJGRlYnVnKSkge2VjaG8gJ0NPTlRFTlRTJzsgZG1w
KCRjb250ZW50cyk7fQ0KCQkkc3RhcnR0aW1lID0gbWljcm90aW1lKFRSVUUpOw0KCX0NCg0K
CWlmKCFlbXB0eSgkcm9vdHMpKSB7DQoJCWZvcmVhY2goJHJvb3RzIGFzICRyb290KSAvKmlm
KCEkdGhvcm91Z2ggfHwgJHhwYXRoLT5xdWVyeSgkcm9vdC0+Z2V0Tm9kZVBhdGgoKSktPmxl
bmd0aCkqLyB7DQoJCQkvLyBVZ2x5IGhhY2sgdG8gZGV0ZWN0IGlmIHRoZSBub2RlIGlzIHJl
bW92ZWQNCgkJCSRlbGVtZW50cyA9ICRpbnRlcm5hbHMgPSBhcnJheSgpOw0KDQoJCQlpZigh
JGZsYXQpIHsNCgkJCQkkbm9kZXMgPSAkeHBhdGgtPmV2YWx1YXRlKCRxdWVyeSwgJHJvb3Qp
Ow0KCQkJCWlmICghKCRub2RlcyBpbnN0YW5jZW9mIERPTU5vZGVMaXN0KSkgew0KCQkJCQkk
aW50ZXJuYWxzWyd7P30nXSA9ICRub2RlczsNCgkJCQkJaWYoJG5vZGVzKSB7DQoJCQkJCQkk
bmV3b3V0ID0gISRjb250ZW50ID8gJG5vZGVzIDogKGlzc2V0KCRjb250ZW50c1sndGV4dCdd
KSA/ICRjb250ZW50c1sndGV4dCddIDogZXRjX2V2YWx1YXRlX3N0cmluZygkY29udGVudHMs
ICRyb290LCAkaW50ZXJuYWxzLCAkZmxhdCkpOw0KCQkJCQkJJG91dFtdID0gJHBhcnNlID8g
cGFyc2UoJG5ld291dCkgOiAkbmV3b3V0Ow0KCQkJCQl9DQoJCQkJCWNvbnRpbnVlOw0KCQkJ
CX0NCgkJCQlmb3JlYWNoKCRub2RlcyBhcyAkZWxlbWVudCkgJGVsZW1lbnRzW10gPSAkZWxl
bWVudDsNCgkJCX0vLyBvciAkcm9vdCA9ICRkYXRhDQoJCQllbHNlaWYoJHF1ZXJ5ID09PSAn
KicgfHwgJHF1ZXJ5X2FycmF5ID09PSBudWxsKSAkZWxlbWVudHMgPSBpc19hcnJheSgkcm9v
dCkgPyAkcm9vdCA6IChhcnJheSkgJHJvb3Q7DQoJCQllbHNlaWYoZW1wdHkoJHF1ZXJ5X2Fy
cmF5KSkgJGVsZW1lbnRzID0gYXJyYXkoJHJvb3QpOy8vcXVlcnkgPSAiLiIgb3IgIi8iDQoJ
CQllbHNlIHsNCgkJCQkkcXVlcnlfYXJyYXkgPSBhcnJheShhcnJheSgndHlwZScgPT4gJ3hw
YXRoJywgJ3RleHQnID0+ICcnLCAndmFsdWUnID0+IGFycmF5KCdwYXRoJyA9PiAnLicsICdt
b2RlJyA9PiAnPycsICdhcnJheScgPT4gJHF1ZXJ5X2FycmF5LCAndmFsdWUnID0+IGFycmF5
KCkpKSk7DQoJCQkJJGVsZW1lbnRzID0gZXRjX2V2YWx1YXRlX3N0cmluZygkcXVlcnlfYXJy
YXksICRyb290LCAkaW50ZXJuYWxzLCAyKTsNCgkJCX0NCg0KCQkJJG51bXMgPSAkbnVtX3Jv
d3MgPSBjb3VudCgkZWxlbWVudHMpOw0KCQkJJG9mZm51bSA9ICgkb2Zmc2V0IDwgMCA/ICRu
dW1zICsgJG9mZnNldCA6ICRvZmZzZXQpOw0KCQkJaWYoJG9mZnNldCB8fCAkbGltaXQpIHsN
CgkJCQkkZWxlbWVudHMgPSBhcnJheV9zbGljZSgkZWxlbWVudHMsICRvZmZzZXQsICRsaW1p
dCwgdHJ1ZSk7DQoJCQkJJG51bV9yb3dzID0gY291bnQoJGVsZW1lbnRzKTsNCgkJCX0NCg0K
CQkJaWYoaXNzZXQoJGV0Y19xdWVyeV9zcGVjaWFsc1sneyNyb3dzfSddKSkgJGludGVybmFs
c1sneyNyb3dzfSddID0gJG51bV9yb3dzOw0KCQkJaWYoaXNzZXQoJGV0Y19xdWVyeV9zcGVj
aWFsc1sneyN0b3RhbH0nXSkpICRpbnRlcm5hbHNbJ3sjdG90YWx9J10gPSAkbnVtczsNCgkJ
CSRudW0gPSAwOw0KDQoJCQlpZighZW1wdHkoJGVsZW1lbnRzKSkgZm9yZWFjaCgkZWxlbWVu
dHMgYXMgJHJvdyA9PiAmJGVsZW1lbnQpIHsNCgkJCQlpZighZW1wdHkoJGZvcm1hdF9pbmZv
KSkgew0KCQkJCQlnbG9iYWwgJHsndGhpcycuJHBvcHVsYXRlfTsvL2RhbW4gZG9BcnRpY2xl
cygpIQ0KCQkJCQlpZigkZmxhdCkgew0KCQkJCQkJaWYoJHBvcHVsYXRlID09PSAnYXJ0aWNs
ZScpIGZvcmVhY2ggKCRjb2x1bW5fbWFwIGFzICRrZXkgPT4gJGNvbHVtbikNCgkJCQkJCQkk
dGhpc2FydGljbGVbJGtleV0gPSBpc3NldCgkZWxlbWVudFskY29sdW1uXSkgPyAkZWxlbWVu
dFskY29sdW1uXSA6ICcnOy8vYXJ0aWNsZV9mb3JtYXRfaW5mbygkZWxlbWVudCk7DQoJCQkJ
CQllbHNlICR7J3RoaXMnLiRwb3B1bGF0ZX0gPSAkZm9ybWF0X2luZm8oJGVsZW1lbnQpOw0K
CQkJCQl9IGVsc2VpZigkcG9wdWxhdGUgPT09ICdhcnRpY2xlJykgew0KCQkJCQkJZm9yZWFj
aCAoJGNvbHVtbl9tYXAgYXMgJGtleSA9PiAkY29sdW1uKSB7DQoJCQkJCQkJJG5vZGVzID0g
JHhwYXRoLT5xdWVyeSgkaXNfeG1sID8gJGNvbHVtbiA6IHN0cnRvbG93ZXIoJGNvbHVtbiks
ICRlbGVtZW50KTsNCgkJCQkJCQkkdGhpc2FydGljbGVbJGtleV0gPSAkbm9kZXMtPmxlbmd0
aCA/ICRub2Rlcy0+aXRlbSgwKS0+bm9kZVZhbHVlIDogJyc7DQoJCQkJCQl9DQoJCQkJCX0N
CgkJCQkJJHsndGhpcycuJHBvcHVsYXRlfVsnaXNfZmlyc3QnXSA9ICgkbnVtID09IDApOw0K
CQkJCQkkeyd0aGlzJy4kcG9wdWxhdGV9Wydpc19sYXN0J10gPSAoJG51bSsxID09ICRudW1f
cm93cyk7DQoJCQkJfQ0KDQoJCQkJaWYoaXNzZXQoJGV0Y19xdWVyeV9zcGVjaWFsc1sneyNy
b3d9J10pKSAkaW50ZXJuYWxzWyd7I3Jvd30nXSA9ICRudW0rMTsNCgkJCQlpZihpc3NldCgk
ZXRjX3F1ZXJ5X3NwZWNpYWxzWyd7I2luZH0nXSkpICRpbnRlcm5hbHNbJ3sjaW5kfSddID0g
JG51bSskb2ZmbnVtOw0KCQkJCWlmKGlzc2V0KCRldGNfcXVlcnlfc3BlY2lhbHNbJ3s/fSdd
KSkgJGludGVybmFsc1snez99J10gPSAoJGZsYXQgPyAkZWxlbWVudCA6ICRlbGVtZW50LT5u
b2RlVmFsdWUpOw0KCQkJCWlmKGlzc2V0KCRldGNfcXVlcnlfc3BlY2lhbHNbJ3sjfSddKSkg
JGludGVybmFsc1sneyN9J10gPSAoJGZsYXQgPyAkcm93IDogJGVsZW1lbnQtPm5vZGVOYW1l
KTsNCg0KCQkJCS8vIFJlcGxhY2UvcmVtb3ZlIHZhbHVlcw0KCQkJCWlmKCRyZXBsYWNlKSBm
b3JlYWNoKCRyZXBsYWNlX2FycmF5IGFzICR2YWwpIHsNCgkJCQkJJG5vZGVzID0gKCR2YWxb
J3BhdGgnXSA9PT0gJy4nID8gYXJyYXkoJGVsZW1lbnQpIDogJHhwYXRoLT5xdWVyeSgkaW50
ZXJuYWxzID8gc3RydHIoJHZhbFsncGF0aCddLCAkaW50ZXJuYWxzKSA6ICR2YWxbJ3BhdGgn
XSwgJGVsZW1lbnQpKTsNCgkJCQkJJGluZCA9IGlzc2V0KCRldGNfcXVlcnlfc3BlY2lhbHNb
J3sjI30nXSkgPyAxIDogMDsNCgkJCQkJaWYoJG5vZGVzKSBmb3JlYWNoKCRub2RlcyBhcyAk
bm9kZSkgLyppZighJHRob3JvdWdoIHx8ICR4cGF0aC0+cXVlcnkoJG5vZGUtPmdldE5vZGVQ
YXRoKCkpLT5sZW5ndGgpKi8gdHJ5DQoJCQkJCXsNCgkJCQkJCWlmKCRpbmQpICRpbnRlcm5h
bHNbJ3sjI30nXSA9ICRpbmQrKzsNCgkJCQkJCWV0Y19wcm9jZXNzX25vZGUoJHZhbFsndmFs
dWUnXSwgJG5vZGUsICRpbnRlcm5hbHMsIGZhbHNlLCB0cnVlKTsNCgkJCQkJfSBjYXRjaChE
T01FeGNlcHRpb24gJGUpIHtpZigkZGVidWcpIGVjaG8gJGUtPmdldE1lc3NhZ2UoKTt9DQoJ
CQkJfQ0KDQoJCQkJLy8gQ29uc3RydWN0IHRoZSByZXBsYWNlbWVudCBhcnJheXMNCgkJCQlp
Zihpc3NldCgkZXRjX3F1ZXJ5X3NwZWNpYWxzWyd7IyN9J10pKSAkaW50ZXJuYWxzWyd7IyN9
J10gPSAkbnVtKzE7DQoNCgkJCQkkbmV3b3V0ID0gISRjb250ZW50ICYmICEkc2FuaXRpemUN
CgkJCQkJPyAoJGZsYXQgPyAkZWxlbWVudCA6ICgkaXNfaHRtbCA/ICRkb20tPnNhdmVIVE1M
KCRlbGVtZW50KSA6ICRkb20tPnNhdmVYTUwoJGVsZW1lbnQpKSkNCgkJCQkJOiAoaXNzZXQo
JGNvbnRlbnRzWyd0ZXh0J10pID8gJGNvbnRlbnRzWyd0ZXh0J10gOiBldGNfZXZhbHVhdGVf
c3RyaW5nKCRjb250ZW50cywgJGVsZW1lbnQsICRpbnRlcm5hbHMsICRmbGF0KSk7DQoNCgkJ
CQkkb3V0W10gPSAkcGFyc2UgPyBwYXJzZSgkbmV3b3V0KSA6ICRuZXdvdXQ7DQoJCQkJJG51
bSsrOw0KCQkJfQ0KCQkJdW5zZXQoJGVsZW1lbnQsICRlbGVtZW50cyk7DQoJCX0NCgl9DQoN
CglpZighZW1wdHkoJHBvcHVsYXRlKSkgJHsndGhpcycuJHBvcHVsYXRlfSA9ICR0aGlzcG9w
dWxhdGU7DQoJaWYoJHNhdmUpIHsNCgkJaWYoISRmbGF0KSAkZXRjX3F1ZXJ5WyRzYXZlXS0+
ZG9tID0gJiRkb207IGVsc2UgJGV0Y19xdWVyeVskc2F2ZV0tPmRhdGEgPSAmJGRhdGE7DQoJ
CSRldGNfcXVlcnlbJHNhdmVdLT5tYXJrdXAgPSAoJGlzX3htbCA/ICd4bWwnIDogJG1hcmt1
cCk7DQoJfQ0KCWlmICgkb3V0KSBpZighJHNhdmUgfHwgJG5hbWUgIT09IG51bGwpIHsNCgkJ
Ly8gTWFrZSB1cCB0aGUgZmluYWwgb3V0cHV0DQoJCSRmaW5hbG91dCA9ICgkbGFiZWwgPyBk
b0xhYmVsKCRsYWJlbCwgJGxhYmVsdGFnKSA6ICcnKS4oJHdyYXB0YWcgfHwgJGJyZWFrID8g
ZG9XcmFwKCRvdXQsICR3cmFwdGFnLCAkYnJlYWssICRjbGFzcywgJycsICcnLCAnJywgJGh0
bWxfaWQpIDogaW1wbG9kZSgkb3V0KSk7DQoJfSBlbHNlICRmaW5hbG91dCA9ICcnOw0KCWVs
c2UgJGZpbmFsb3V0ID0gcGFyc2UoJG9sZFRoaW5nLCBmYWxzZSk7Ly9ub3RoaW5nIGZvdW5k
DQoNCglldGNfY2xlYW51cChudWxsLCAkc2FmZV9jb250ZXh0LCAkc2FmZV9nbG9iYWxzLCAk
c2FmZV9zYW5pdGl6ZSwgJHNhZmVfc3BlY2lhbHMpOw0KCSRlbmR0aW1lID0gbWljcm90aW1l
KFRSVUUpOw0KCWlmKCRkZWJ1ZykgZG1wKCJQcm9jZXNzZWQgaW4gIiAuICgkZW5kdGltZSAt
ICRzdGFydHRpbWUpIC4gIiBzZWNvbmRzLlxuIik7DQoJaWYoJGRlYnVnICYmIGluX2FycmF5
KCdvJywgJGRlYnVnKSkgZG1wKCRmaW5hbG91dCk7DQoJaWYoJG5hbWUpIHtnbG9iYWwgJHZh
cmlhYmxlOyAkdmFyaWFibGVbJG5hbWVdID0gJiRmaW5hbG91dDt9DQoJcmV0dXJuICRuYW1l
ID8gJycgOiAkZmluYWxvdXQ7DQp9DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKiBQ
QVJTRSAqKioqKioqKioqKioqKioqKioqKioqKioqLw0KDQpmdW5jdGlvbiBldGNfcGFyc2Vf
c3RyaW5nKCRjb250ZW50LCAmJGZsYXQpIHsNCglpZihzdHJwb3MoJGNvbnRlbnQsICd7Jykg
PT09IGZhbHNlKSByZXR1cm4gYXJyYXkoJ3RleHQnID0+ICRjb250ZW50KTsNCglnbG9iYWwg
JGV0Y19xdWVyeV9zcGVjaWFscywgJGV0Y19xdWVyeV9jb250ZXh0Ow0KLy8JJHByZWdfc3Ry
aW5nID0gJy8oXHsoPyFbXHMiXSkoPzpbXnt9XXwoPzEpKStcfSkvVSc7DQoNCgkkY29udGVu
dHMgPSBhcnJheSgpOw0KCSRjb250ZW50c19hcnJheSA9IHByZWdfc3BsaXQoJy8oXHsoPz5b
Xnt9XXwoPzEpKStcfSkvVScsICRjb250ZW50LCBudWxsLCBQUkVHX1NQTElUX0RFTElNX0NB
UFRVUkUpOw0KCSRudW0gPSBjb3VudCgkY29udGVudHNfYXJyYXkpOy8vMm4rMQ0KCSR0ZXh0
ID0gJGNvbnRlbnRzX2FycmF5WzBdOw0KCWZvcigkaSA9IDE7ICRpIDwgJG51bTsgJGkrPTIp
IHsNCgkJJHN0cmluZyA9IHN1YnN0cigkY29udGVudHNfYXJyYXlbJGldLCAxLCAtMSk7DQoJ
CWlmKHN0cnBvcygneyAiJywgJHN0cmluZ1swXSkgIT09IGZhbHNlKSB7DQoJCQkkbCA9IDA7
IHdoaWxlKCRzdHJpbmdbJGxdID09PSAneycpICRsKys7DQoJCQkkY3N0cmluZyA9IGV0Y19w
YXJzZV9zdHJpbmcoJGwgPyBzdWJzdHIoJHN0cmluZywgJGwsIC0kbCkgOiAkc3RyaW5nLCAk
ZmxhdCk7DQoJCQkkbCA9IG1heCgxLCAkbCk7DQoJCQlpZihpc3NldCgkY3N0cmluZ1sndGV4
dCddKSkgJHRleHQgLj0gc3RyX3JlcGVhdCgneycsICRsKS4kY3N0cmluZ1sndGV4dCddLnN0
cl9yZXBlYXQoJ30nLCAkbCk7DQoJCQllbHNlIHskY29udGVudHNbXSA9IGFycmF5KCd0eXBl
JyA9PiAnc3RyaW5nJywgJ3RleHQnID0+ICR0ZXh0LCAndmFsdWUnID0+ICRjc3RyaW5nLCAn
bGV2ZWwnID0+ICRsKTsgJHRleHQgPSAnJzt9DQoJCX0NCgkJZWxzZWlmKCRzdHJpbmdbMF0g
PT09ICc/JyAmJiBzdHJsZW4oJHN0cmluZykgPiAxKSAkdGV4dCAuPSBldGNfcGFyc2VfdmFy
aWFibGUoYXJyYXkoJGNvbnRlbnRzX2FycmF5WyRpXSkpOw0KCQllbHNlIHsNCgkJCXN3aXRj
aCgkc3RyaW5nWzBdKSB7DQoJCQkJY2FzZSAnJCcgOiAkdmFsdWUgPSBldGNfcGFyc2VfZnVu
Y3Rpb24oc3Vic3RyKCRzdHJpbmcsIDEpLCAkZmxhdCk7DQoJCQkJaWYoJHZhbHVlICYmICR2
YWx1ZVswXVsnZnVuYyddID09PSAnQCcpIHsNCgkJCQkJJGNvbnRlbnRzW10gPSBhcnJheSgn
dHlwZScgPT4gJ2RlZmluZScsICd0ZXh0JyA9PiAnJywgJ3ZhbHVlJyA9PiAkdmFsdWVbMF1b
J2FyZ3MnXVswXVswXVsndmFsdWUnXSk7DQoJCQkJCSR2YWx1ZSA9IGFycmF5X3NsaWNlKCR2
YWx1ZSwgMSk7DQoJCQkJfQ0KCQkJCSRjb250ZW50c1tdID0gYXJyYXkoJ3R5cGUnID0+ICdm
dW5jJywgJ3RleHQnID0+ICR0ZXh0LCAndmFsdWUnID0+ICR2YWx1ZSk7ICR0ZXh0ID0gJyc7
IGJyZWFrOw0KCQkJCWNhc2UgJyMnIDogY2FzZSAnPycgOiAkY29udGVudHNbXSA9ICRldGNf
cXVlcnlfc3BlY2lhbHNbJGNvbnRlbnRzX2FycmF5WyRpXV0gPSBhcnJheSgndHlwZScgPT4g
J2ludGVybmFsJywgJ3RleHQnID0+ICR0ZXh0LCAndmFsdWUnID0+ICRzdHJpbmcpOyAkdGV4
dCA9ICcnOyBicmVhazsNCgkJCQljYXNlICclJyA6ICR0ZXh0IC49IHN1YnN0cigkc3RyaW5n
LCAxKTsgYnJlYWs7DQoJCQkJY2FzZSAnIScgOiAkcGFydHMgPSBleHBsb2RlKCd8JywgJHN0
cmluZywgMyk7DQoJCQkJaWYoY291bnQoJHBhcnRzKSA+IDIpIHskc3RyaW5nID0gJHBhcnRz
WzBdLid8Jy4kcGFydHNbMV07ICRmdW5jID0gZXRjX3BhcnNlX2Z1bmN0aW9uKCRwYXJ0c1sy
XSwgJGZsYXQpO30NCgkJCQllbHNlICRmdW5jID0gbnVsbDsNCgkJCQkkY29udGVudHNbXSA9
ICRmdW5jID8gYXJyYXkoJ3R5cGUnID0+ICdmdW5jJywgJ3RleHQnID0+ICR0ZXh0LCAndmFs
dWUnID0+ICRmdW5jLCAndmFyJyA9PiBhcnJheSgneycuJHN0cmluZy4nfScpKSA6IGFycmF5
KCd0eXBlJyA9PiAndmFyJywgJ3RleHQnID0+ICR0ZXh0LCAndmFsdWUnID0+IGFycmF5KCRj
b250ZW50c19hcnJheVskaV0pKSA7ICR0ZXh0ID0gJyc7IGJyZWFrOw0KCQkJCWRlZmF1bHQg
OiAkY29udGVudHNbXSA9IGFycmF5KCd0eXBlJyA9PiAneHBhdGgnLCAndGV4dCcgPT4gJHRl
eHQsICd2YWx1ZScgPT4gZXRjX3BhcnNlX3hwYXRoKCRzdHJpbmcsICRmbGF0KSk7ICR0ZXh0
ID0gJyc7DQoJCQl9DQoJCX0NCgkJJHRleHQgLj0gJGNvbnRlbnRzX2FycmF5WyRpKzFdOw0K
CX0NCglpZigkdGV4dCA+ICcnKSAkY29udGVudHNbXSA9IGFycmF5KCd0eXBlJyA9PiAndGV4
dCcsICd0ZXh0JyA9PiAkdGV4dCk7DQoJaWYoY291bnQoJGNvbnRlbnRzKSA9PT0gMSAmJiAk
Y29udGVudHNbMF1bJ3R5cGUnXSA9PT0gJ3RleHQnKSAkY29udGVudHMgPSBhcnJheSgndGV4
dCcgPT4gJGNvbnRlbnRzWzBdWyd0ZXh0J10pOw0KCXJldHVybiAkY29udGVudHM7DQp9DQoN
CmZ1bmN0aW9uIGV0Y19wYXJzZV92YXJpYWJsZSgkdmFsKSB7DQoJZ2xvYmFsICRldGNfcXVl
cnlfY29udGV4dCwgJGV0Y19xdWVyeV9nbG9iYWxzLCAkZXRjX3F1ZXJ5X3Nhbml0aXplLCAk
ZXRjX3F1ZXJ5X3NwZWNpYWxzOw0KCSRwYXQgPSAkdmFsWzBdOw0KCWlmKGlzc2V0KCRldGNf
cXVlcnlfc3BlY2lhbHNbJHBhdF0pKSByZXR1cm4gJGV0Y19xdWVyeV9zcGVjaWFsc1skcGF0
XTsNCglAbGlzdCgkdmFycywgJGRlZiwgJGZvcm1hdCkgPSBleHBsb2RlKCd8Jywgc3Vic3Ry
KCRwYXQsIDIsIC0xKSwgMyk7DQoJaWYoJHZhcnMgPT09ICcnIHx8ICFlbXB0eSgkZXRjX3F1
ZXJ5X2dsb2JhbHMpKSBmb3JlYWNoKGV4cGxvZGUoJywnLCAkdmFycykgYXMgJHZhcikNCgkJ
aWYoJHZhciAhPT0gJycpIHtmb3JlYWNoKCRldGNfcXVlcnlfZ2xvYmFscyBhcyAkZ2xvYmFs
KSBpZihpc3NldCgkR0xPQkFMU1skZ2xvYmFsXVskdmFyXSkgJiYgJEdMT0JBTFNbJGdsb2Jh
bF1bJHZhcl0gIT09ICcnKQ0KCQkJeyR2YWx1ZSA9ICRHTE9CQUxTWyRnbG9iYWxdWyR2YXJd
OyBicmVhayAyO319DQoJCWVsc2UgeyR2YWx1ZSA9IChpc3NldCgkZGVmKSA/ICRkZWYgOiAn
Jyk7ICRnbG9iYWwgPSBudWxsO30NCglpZighaXNzZXQoJHZhbHVlKSkgJHZhbHVlID0gKGlz
c2V0KCRkZWYpID8gJGRlZiA6ICcnKTsNCgllbHNlIHsNCgkJaWYoTUFHSUNfUVVPVEVTX0dQ
QyAmJiAkZ2xvYmFsICYmIGluX2FycmF5KCRnbG9iYWwsICRldGNfcXVlcnlfY29udGV4dFsn
c3RyaXAnXSkpICR2YWx1ZSA9IGRvU3RyaXAoJHZhbHVlKTsNCgkJaWYoIWVtcHR5KCRmb3Jt
YXQpKSB7DQoJCQkkZmxhdCA9IHRydWU7IC8vJGludGVybmFscyA9IG51bGw7DQoJCQlpZiAo
JGZvcm1hdFswXSA9PT0gJyMnKSB7DQoJCQkJJGZvcm1hdCA9IGx0cmltKCRmb3JtYXQsICcj
LicpOyAkdmFsdWUgPSBpc3NldCgkdmFyKSA/ICR2YXIgOiAkdmFsdWU7DQoJCQl9DQoJCQkk
Zm9ybWF0ID0gYXJyYXkoYXJyYXkoJ3R5cGUnID0+ICdmdW5jJywgJ3RleHQnID0+ICcnLCAn
dmFsdWUnID0+IGV0Y19wYXJzZV9mdW5jdGlvbigkZm9ybWF0LCAkZmxhdCkpKTsNCgkJCSR2
YWx1ZSA9IGV0Y19ldmFsdWF0ZV9zdHJpbmcoJGZvcm1hdCwgJHZhbHVlLCBudWxsKTsNCgkJ
fQ0KCQllbHNlaWYoIWVtcHR5KCRldGNfcXVlcnlfc2FuaXRpemVbJGdsb2JhbF0pKSAkdmFs
dWUgPSAkZXRjX3F1ZXJ5X3Nhbml0aXplWyRnbG9iYWxdKCR2YWx1ZSk7DQoJCWVsc2VpZigh
aXNzZXQoJGV0Y19xdWVyeV9zYW5pdGl6ZVskZ2xvYmFsXSkgJiYgIWVtcHR5KCRldGNfcXVl
cnlfc2FuaXRpemVbJyonXSkpICR2YWx1ZSA9ICRldGNfcXVlcnlfc2FuaXRpemVbJyonXSgk
dmFsdWUpOw0KCX0NCglpZigkcGF0WzFdID09PSAnPycpICRldGNfcXVlcnlfc3BlY2lhbHNb
JHBhdF0gPSAkdmFsdWU7DQoJcmV0dXJuICR2YWx1ZTsNCn0NCg0KZnVuY3Rpb24gZXRjX3Bh
cnNlX2Z1bmN0aW9uKCRmb3JtYXQsICYkZmxhdCkgew0KCWdsb2JhbCAkZXRjX3F1ZXJ5X2Nv
bnRleHQ7DQoNCgkkcGlwZSA9ICRldGNfcXVlcnlfY29udGV4dFsnYXJnc2VwJ107DQoJJHJl
cyA9ICRyZXAgPSBhcnJheSgpOw0KCWlmKHN0cnBvcygkZm9ybWF0LCAneycpICE9PSBmYWxz
ZSkgew0KCQkkZm9ybWF0ID0gcHJlZ19zcGxpdCgnLyhceyg/Pltee31dfCg/MSkpKlx9KS9V
JywgJGZvcm1hdCwgbnVsbCwgUFJFR19TUExJVF9ERUxJTV9DQVBUVVJFKTsvLzJuKzENCgkJ
JGNvdW50ID0gY291bnQoJGZvcm1hdCk7DQoJCWZvcigkaT0xOyAkaTwkY291bnQ7ICRpKz0y
KSB7JHJlcFsneycuJGkuJ30nXSA9ICRmb3JtYXRbJGldOyAkZm9ybWF0WyRpXSA9ICd7Jy4k
aS4nfSc7IH0NCgkJJGZvcm1hdCA9IGltcGxvZGUoJGZvcm1hdCk7DQoJfQ0KLy8nLyhbXlwo
XClcLl0qKD86XChbXlwoXCldKlwpKT8pKD86XC58JCkvVScNCglpZigkZm9ybWF0WzBdID09
PSAnLicpICRmb3JtYXQgPSAnficuJGZvcm1hdDsNCgkkZm9ybWF0ID0gcHJlZ19zcGxpdCgn
LyhbXlwoXClcLl0qKShcKCg/PlteXChcKV18KD8yKSkqXCkpPyg/OlwufCQpLycsICRmb3Jt
YXQsIG51bGwsIFBSRUdfU1BMSVRfREVMSU1fQ0FQVFVSRSB8IFBSRUdfU1BMSVRfTk9fRU1Q
VFkpOw0KDQoJZm9yZWFjaCgkZm9ybWF0IGFzICRpID0+ICRmb3JtKSB7DQoJCWlmKCRmb3Jt
WzBdICE9PSAnKCcpIHsvL2Z1bmMNCgkJCWlmKGlzc2V0KCRmdW5jKSkgJHJlc1tdID0gYXJy
YXkoJ2Z1bmMnPT4kZnVuYywgJ3JlZic9PiRyZWYsICdhcmdzJz0+JGFyZ3MpOw0KCQkJJGZ1
bmMgPSBsdHJpbSgkZm9ybSk7DQoJCQkkcmVmID0gJGZ1bmNbMF0gPT09ICdAJzsNCgkJCWlm
KCRyZWYpICRmdW5jID0gc3Vic3RyKCRmdW5jLCAxKTsNCgkJCSRhcmdzID0gYXJyYXkoYXJy
YXkoJ3RleHQnID0+ICckJykpOw0KCQkJaWYoJGZ1bmMgIT09ICcnKSBzd2l0Y2goJGZ1bmNb
MF0pIHsNCgkJCQljYXNlICcrJyA6IGNhc2UgJyonIDogY2FzZSAnLScgOiBjYXNlICcvJyA6
IGNhc2UgJyUnIDogY2FzZSAnXicgOg0KCQkJCWlmKHN0cmxlbigkZnVuYykgPiAxKSAkYXJn
c1tdID0gYXJyYXkoJ3RleHQnID0+IGZsb2F0dmFsKHN1YnN0cigkZnVuYywgMSkpKTsgJGZ1
bmMgPSAkZnVuY1swXTsgYnJlYWs7DQoJCQkJY2FzZSAnficgOiBpZihzdHJsZW4oJGZ1bmMp
ID4gMSkgJGFyZ3NbXSA9IGFycmF5KCd0ZXh0JyA9PiBzdWJzdHIoJGZ1bmMsIDEpKTsgJGZ1
bmMgPSAkZnVuY1swXTsgYnJlYWs7DQoJCQkJY2FzZSAnPScgOiBjYXNlICc+JyA6IGNhc2Ug
JzwnIDogY2FzZSAnPycgOiBpZihzdHJsZW4oJGZ1bmMpID4gMSkgJGFyZ3NbXSA9IGFycmF5
KCd0ZXh0JyA9PiBsdHJpbShzdWJzdHIoJGZ1bmMsIDEpKSk7ICRmdW5jID0gJGZ1bmNbMF07
IGJyZWFrOw0KCQkJCWNhc2UgJyQnIDogaWYoJGkpIHskYXJnc1tdID0gYXJyYXkoJ3RleHQn
ID0+ICRmdW5jID09PSAnJCcgPyAnJyA6ICRmdW5jKTsgJGZ1bmMgPSAnJCc7fQ0KCQkJCWVs
c2UgeyRhcmdzID0gYXJyYXkoYXJyYXkoJ3RleHQnID0+ICcnKSwgYXJyYXkoJ3RleHQnID0+
ICRmdW5jKSk7ICRmdW5jID0gJ34nO30NCgkJCQlicmVhazsNCgkJCQlkZWZhdWx0IDogJGZ1
bmMgPSB0cmltKCRmdW5jKTsNCgkJCQlpZighJGV0Y19xdWVyeV9jb250ZXh0WydwaHAnXSAm
JiAhaW5fYXJyYXkoJGZ1bmMsIGFycmF5KCdkYXRlJywgJ3RleHRpbGUnKSkpICRmdW5jID0g
Jyc7DQoJCQkJaWYoJGZ1bmMgPT09ICd0ZXh0aWxlJykgew0KCQkJCQkkZnVuYyA9ICdUZXh0
aWxlLT5UZXh0aWxlVGhpcyc7DQoJCQkJfQ0KCQkJCWlmIChzdHJwb3MoJGZ1bmMsICc6Oicp
KSAkZnVuYyA9IGV4cGxvZGUoJzo6JywgJGZ1bmMpOw0KCQkJCWVsc2VpZihzdHJwb3MoJGZ1
bmMsICctPicpKSB7DQoJCQkJCSRmdW5jID0gZXhwbG9kZSgnLT4nLCAkZnVuYyk7DQoJCQkJ
CWlmKHN0cnRvbG93ZXIoJGZ1bmNbMF0pID09PSAndGV4dGlsZScpIGluY2x1ZGVfb25jZSh0
eHBhdGguJy9saWIvY2xhc3NUZXh0aWxlLnBocCcpOw0KCQkJCQlpZiAoY2xhc3NfZXhpc3Rz
KCRmdW5jWzBdKSkgJGZ1bmNbMF0gPSBuZXcgJGZ1bmNbMF07DQoJCQkJfQ0KCQkJCWlmKCFp
c19jYWxsYWJsZSgkZnVuYykpIHVuc2V0KCRmdW5jLCAkcmVmKTsNCgkJCX0gZWxzZSB1bnNl
dCgkZnVuYywgJHJlZik7DQoJCX0gZWxzZSB7Ly9hcmdzDQoJCQkkYXJnc19saXN0ID0gc3Vi
c3RyKCRmb3JtLCAxLCAtMSk7DQoJCQlpZighaXNzZXQoJGZ1bmMpKSB7DQoJCQkJaWYoISRp
KSB7DQoJCQkJCSRmdW5jID0gJ0AnOyAkcmVmID0gZmFsc2U7DQoJCQkJCSRhcmdzID0gYXJy
YXkoYXJyYXkoYXJyYXkoJ3R5cGUnID0+ICd4cGF0aCcsICd0ZXh0JyA9PiAnJywgJ3ZhbHVl
JyA9PiBldGNfcGFyc2VfeHBhdGgoJGFyZ3NfbGlzdCwgJGZsYXQpKSkpOw0KCQkJCX0NCgkJ
CQljb250aW51ZTsNCgkJCX0NCgkJCWlmKCRmdW5jICE9PSAnPycgJiYgY291bnQoJGFyZ3Mp
IDwgMikgJGFyZ3MgPSBhcnJheSgpOw0KCQkJaWYoJGFyZ3NfbGlzdCAhPT0gJycpIGZvcmVh
Y2goZXhwbG9kZSgkcGlwZSwgJGFyZ3NfbGlzdCkgYXMgJGFyZykgJGFyZ3NbXSA9ICRyZXAg
PyBldGNfcGFyc2Vfc3RyaW5nKHN0cnRyKCRhcmcsICRyZXApLCAkZmxhdCkgOiBhcnJheSgn
dGV4dCcgPT4gJGFyZyk7DQoJCQlpZigkZnVuYyA9PT0gJz8nKSAkYXJncyA9IGFycmF5X3Ns
aWNlKCRhcmdzLCAtMyk7DQoJCX0NCgl9DQoJaWYoaXNzZXQoJGZ1bmMpKSAkcmVzW10gPSBh
cnJheSgnZnVuYyc9PiRmdW5jLCAncmVmJz0+JHJlZiwgJ2FyZ3MnPT4kYXJncyk7DQoJcmV0
dXJuICRyZXM7DQp9DQoNCmZ1bmN0aW9uIGV0Y19wYXJzZV94cGF0aCgkcGF0dGVybiwgJiRm
bGF0KSB7DQoJZ2xvYmFsICRldGNfcXVlcnlfY29udGV4dCwgJGV0Y19xdWVyeV9nbG9iYWxz
Ow0KDQoJJGZ1bmMgPSAkZXRjX3F1ZXJ5X2NvbnRleHRbJ2Z1bmN0aW9ucyddOw0KDQoJQGxp
c3QoJHBhdGgsICR2YWwpID0gZXhwbG9kZSgnQEAnLCAkcGF0dGVybiwgMik7DQoNCglpZihp
c3NldCgkdmFsKSkgew0KCQkkcGFpcnMgPSBwcmVnX3NwbGl0KCcvKCg/PlteXFtcXSgpe31d
fFtcW1woXHtdKD8xKSpbXF1cKVx9XSkrKUAvVScsICR2YWwsIG51bGwsIFBSRUdfU1BMSVRf
Tk9fRU1QVFkgfCBQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOw0KCQkkZmxhdCA9IGZhbHNl
Ow0KCQkkdmFsID0gYXJyYXkoKTsNCgkJZm9yZWFjaCgkcGFpcnMgYXMgJHBhaXIpIHsNCgkJ
CUBsaXN0KCRuYW1lLCAkYXZhbCkgPSBleHBsb2RlKCc9JywgJHBhaXIsIDIpOw0KCQkJaWYo
JG5hbWUgPiAnJykgJHZhbFskbmFtZV0gPSAkYXZhbDsNCgkJfQ0KCX0gZWxzZSB7DQoJCUBs
aXN0KCRwYXRoLCAkdmFsKSA9IHByZWdfc3BsaXQoJy9eKCg/PlteXFtcXSgpe31dfFtcW1wo
XHtdKD8xKSpbXF1cKVx9XSkrKT0oLiopJC9zRFUnLCAkcGF0dGVybiwgMiwgUFJFR19TUExJ
VF9ERUxJTV9DQVBUVVJFIHwgUFJFR19TUExJVF9OT19FTVBUWSk7DQoJCWlmKCFpc3NldCgk
dmFsKSAmJiBzdHJsZW4oJHBhdGgpIDwgc3RybGVuKCRwYXR0ZXJuKSkgJHZhbCA9ICcnOw0K
CX0NCg0KCWlmKCRwYXRoICE9PSAnJyAmJiBzdHJwb3MoJzo/IyteJH4mLycsIHN1YnN0cigk
cGF0aCwgLTEpKSAhPT0gZmFsc2UpIHsNCgkJJG1vZGUgPSBzdWJzdHIoJHBhdGgsIC0xKTsg
JHBhdGggPSBzdWJzdHIoJHBhdGgsIDAsIC0xKTsNCgl9IGVsc2UgJG1vZGUgPSAnLic7DQoJ
aWYoJG1vZGUgIT09ICc/JykgJGZsYXQgPSBmYWxzZTsNCglpZigkcGF0aCA9PT0gJycpICRw
YXRoID0gJy4nOw0KCWVsc2VpZigkZXRjX3F1ZXJ5X2dsb2JhbHMpICRwYXRoID0gcHJlZ19y
ZXBsYWNlX2NhbGxiYWNrKEVUQ19QUkVHX1NQRUMsICdldGNfcGFyc2VfdmFyaWFibGUnLCAk
cGF0aCk7DQoJaWYoaXNzZXQoJHZhbCkgJiYgIWlzX2FycmF5KCR2YWwpKSAkdmFsID0gYXJy
YXkoJG1vZGUgPT4gJHZhbCk7DQoNCgkkYXR0cl9hcnJheSA9IGFycmF5KCk7DQoNCglpZigh
ZW1wdHkoJHZhbCkpIGZvcmVhY2goJHZhbCBhcyAkYXR0cj0+JHZhbHVlKSBpZigkYXR0ciAh
PT0gJyYnKSB7DQoJCSRyZXBbJ2F0dHInXSA9ICRldGNfcXVlcnlfZ2xvYmFscyA/IHByZWdf
cmVwbGFjZV9jYWxsYmFjayhFVENfUFJFR19TUEVDLCAnZXRjX3BhcnNlX3ZhcmlhYmxlJywg
JGF0dHIpIDogJGF0dHI7DQoJCSRyZXBbJ3ZhbHVlJ10gPSAkdmFsdWUgPT09IG51bGwgPyBu
dWxsIDogZXRjX3BhcnNlX3N0cmluZygkdmFsdWUsICRmbGF0KTsNCgkJJGF0dHJfYXJyYXlb
XSA9ICRyZXA7DQovLwkJdW5zZXQoJHJlcCk7DQoJfSBlbHNlaWYoJHZhbHVlICE9PSBudWxs
KSB7JGxhc3RbJ2F0dHInXSA9ICcmJzsgJGxhc3RbJ3ZhbHVlJ10gPSBldGNfcGFyc2Vfc3Ry
aW5nKCR2YWx1ZSwgJGZsYXQpO30NCglpZihpc3NldCgkbGFzdCkpICRhdHRyX2FycmF5W10g
PSAkbGFzdDsNCgl1bnNldCgkcGF0dGVybik7DQoJJHBhdHRlcm5bJ3BhdGgnXSA9ICRmdW5j
ID8gcHJlZ19yZXBsYWNlKCcvXGIoJy4kZnVuYy4nKVxzKlwoLycsICJwaHA6ZnVuY3Rpb24o
JyQxJywiLCAkcGF0aCkgOiAkcGF0aDsNCgkkcGF0dGVyblsnbW9kZSddID0gJG1vZGU7DQoJ
JHBhdHRlcm5bJ3ZhbHVlJ10gPSAkYXR0cl9hcnJheTsNCg0KCWlmKCRmbGF0ICYmICRwYXRo
ICE9PSAnLycpIGlmKHN0cnBvcygkcGF0aCwgJy8vJykgIT09IGZhbHNlKSAkZmxhdCA9IGZh
bHNlOyBlbHNlIHsNCgkJJG1hdGNoZXMgPSBleHBsb2RlKCcvJywgJHBhdGgpOw0KCQlmb3Jl
YWNoKCRtYXRjaGVzIGFzICRtYXRjaCkgaWYoJG1hdGNoICE9PSAnKicgJiYgJG1hdGNoICE9
PSAnLicgJiYgcHJlZ19tYXRjaCgnL1tcKFwpXFtcXVwuOkBdLycsICRtYXRjaCkpIHsNCgkJ
CSRmbGF0ID0gZmFsc2U7IGJyZWFrOw0KCQl9DQoJCWlmKCRmbGF0KSAkcGF0dGVyblsnYXJy
YXknXSA9IGFycmF5X2RpZmYoJG1hdGNoZXMsIGFycmF5KCcuJykpOw0KCX0NCglyZXR1cm4g
JHBhdHRlcm47DQp9DQoNCi8qKioqKioqKioqKioqKioqKioqKioqKioqKiBFVkFMVUFURSAq
KioqKioqKioqKioqKioqKioqKioqKioqLw0KDQpmdW5jdGlvbiBldGNfZXZhbHVhdGVfc3Ry
aW5nKCYkY29udGVudHMsICYkZWxlbWVudCwgJGludGVybmFscywgJGZsYXQ9dHJ1ZSkgew0K
CWlmKGlzc2V0KCRjb250ZW50c1sndGV4dCddKSkgcmV0dXJuICRjb250ZW50c1sndGV4dCdd
Ow0KCWdsb2JhbCAkZXRjX3F1ZXJ5X2NvbnRleHQsICRldGNfcXVlcnlfc2FuaXRpemUsICRl
dGNfcXVlcnlfc3BlY2lhbHM7DQoNCgkkd3JhcCA9ICRmbGF0ID09PSAyOw0KCSRyZXMgPSAk
d3JhcCA/IGFycmF5KCkgOiAnJzsNCgkkZGVmaW5lcyA9IGFycmF5KCk7DQoJaWYoISRmbGF0
KSB7DQoJCSRpc194bWwgPSAkZXRjX3F1ZXJ5X2NvbnRleHRbJ3htbCddOw0KCQkkZG9tID0g
JGVsZW1lbnQtPm93bmVyRG9jdW1lbnQ7DQoJfQ0KDQoJZm9yZWFjaCgkY29udGVudHMgYXMg
JGNvbnRlbnQpIHsNCgkJaWYoISR3cmFwKSAkcmVzIC49ICRjb250ZW50Wyd0ZXh0J107DQoJ
CXN3aXRjaCgkY29udGVudFsndHlwZSddKSB7DQoJCQljYXNlICd0ZXh0JyA6IGJyZWFrOw0K
DQoJCQljYXNlICdpbnRlcm5hbCcgOiAkcmVzIC49IChpc3NldCgkaW50ZXJuYWxzWyd7Jy4k
Y29udGVudFsndmFsdWUnXS4nfSddKSA/ICRpbnRlcm5hbHNbJ3snLiRjb250ZW50Wyd2YWx1
ZSddLid9J10gOiAkY29udGVudFsndmFsdWUnXSk7IGJyZWFrOw0KDQoJCQljYXNlICd2YXIn
IDogJHJlcyAuPSBldGNfcGFyc2VfdmFyaWFibGUoJGNvbnRlbnRbJ3ZhbHVlJ10pOyBicmVh
azsNCg0KCQkJY2FzZSAnc3RyaW5nJyA6ICRsID0gIWVtcHR5KCRjb250ZW50WydsZXZlbCdd
KSA/ICRjb250ZW50WydsZXZlbCddIDogMDsNCgkJCSRyZXMgLj0gc3RyX3JlcGVhdCgneycs
ICRsKS5ldGNfZXZhbHVhdGVfc3RyaW5nKCRjb250ZW50Wyd2YWx1ZSddLCAkZWxlbWVudCwg
JGludGVybmFscywgJGZsYXQpLnN0cl9yZXBlYXQoJ30nLCAkbCk7IGJyZWFrOw0KDQoJCQlj
YXNlICdmdW5jJyA6IGlmKCFlbXB0eSgkdW5kZWZpbmVkKSkge3Vuc2V0KCR1bmRlZmluZWQp
OyBicmVhazt9DQoJCQkkdmFsID0gaXNzZXQoJGNvbnRlbnRbJ3ZhciddKSA/IGV0Y19wYXJz
ZV92YXJpYWJsZSgkY29udGVudFsndmFyJ10pIDogKGlzc2V0KCRkZWZpbmUpID8gJGRlZmlu
ZSA6ICgkZmxhdCA/ICRlbGVtZW50IDogJGVsZW1lbnQtPm5vZGVWYWx1ZSkpOw0KCQkJdW5z
ZXQoJGRlZmluZSk7DQoJCQlpZihlbXB0eSgkY29udGVudFsndmFsdWUnXSkpIHskcmVzIC49
ICR2YWw7IGJyZWFrO30NCgkJCWZvcmVhY2goJGNvbnRlbnRbJ3ZhbHVlJ10gYXMgJGZvcm0p
IHsNCgkJCQkkZnVuYyA9ICRmb3JtWydmdW5jJ107DQoJCQkJJHJlZiA9ICRmb3JtWydyZWYn
XTsNCgkJCQkkYXJncyA9IGFycmF5KCk7DQoJCQkJaWYoJGhhc19hcmdzID0gY291bnQoJGZv
cm1bJ2FyZ3MnXSkpIHsNCgkJCQkJZm9yZWFjaCgkZm9ybVsnYXJncyddIGFzICRrZXkgPT4g
JGFyZykgew0KCQkJCQkJaWYoISRrZXkgfHwgJGZ1bmMgIT09ICc/JyB8fCAka2V5ID09PSAo
JGFyZ3NbMF0gPyAxIDogMikpDQoJCQkJCQkJJGFyZyA9IGlzc2V0KCRhcmdbJ3RleHQnXSkg
PyAkYXJnWyd0ZXh0J10gOiBldGNfZXZhbHVhdGVfc3RyaW5nKCRhcmcsICRlbGVtZW50LCAk
aW50ZXJuYWxzLCAkZmxhdCk7DQoJCQkJCQllbHNlICRhcmcgPSAnJzsNCgkJCQkJCWlmKCRh
cmcgPT09ICckJykgJGFyZ3NbXSA9JiAkdmFsOw0KCQkJCQkJZWxzZWlmKCRhcmcgJiYgJGFy
Z1swXSA9PT0gJyQnICYmIGlzc2V0KCRkZWZpbmVzWyRhcmddKSkgJGFyZ3NbXSA9JiAkZGVm
aW5lc1skYXJnXTsNCgkJCQkJCWVsc2UgJGFyZ3NbXSA9ICRhcmc7DQoJCQkJCX0NCgkJCQl9
DQoJCQkJc3dpdGNoKCRmdW5jKSB7DQoJCQkJCWNhc2UgJyQnIDogaWYoJGFyZ3NbMV0gIT09
ICcnKSAkZGVmaW5lc1skYXJnc1sxXV0gPSAkdmFsOyBlbHNlICR2YWwgPSAnJzsgYnJlYWs7
IC8vJGFyZ3NbMF09JyQnDQoJCQkJCWNhc2UgJ34nIDogJHZhbCA9IGlzX2FycmF5KCRhcmdz
WzBdKSA/IGltcGxvZGUoJGhhc19hcmdzID4gMSA/ICRhcmdzWzFdIDogJycsICRhcmdzWzBd
KSA6IGltcGxvZGUoJGFyZ3MpOyBicmVhazsNCgkJCQkJY2FzZSAnKycgOiAkdmFsID0gYXJy
YXlfc3VtKCRhcmdzKTsgYnJlYWs7DQoJCQkJCWNhc2UgJyonIDogJHZhbCA9IGFycmF5X3By
b2R1Y3QoJGFyZ3MpOyBicmVhazsNCgkJCQkJY2FzZSAnLScgOiAkdmFsID0gMiokYXJnc1sw
XSAtIGFycmF5X3N1bSgkYXJncyk7IGJyZWFrOw0KCQkJCQljYXNlICcvJyA6ICR2YWwgPSAk
YXJnc1swXSA/ICRhcmdzWzBdKiRhcmdzWzBdIC8gYXJyYXlfcHJvZHVjdCgkYXJncykgOiAw
OyBicmVhazsNCgkJCQkJY2FzZSAnJScgOiAkdmFsID0gJGFyZ3NbMF0gJSAkYXJnc1sxXTsg
YnJlYWs7DQoJCQkJCWNhc2UgJ14nIDogJHZhbCA9IHBvdygkYXJnc1swXSwgJGFyZ3NbMV0p
OyBicmVhazsNCgkJCQkJY2FzZSAnPycgOiBzd2l0Y2goJGhhc19hcmdzKSB7DQoJCQkJCQlj
YXNlIDAgOiBicmVhazsNCgkJCQkJCWNhc2UgMSA6ICR2YWwgPSAoJGFyZ3NbMF0gPyAnMScg
OiAnMCcpOyBicmVhazsNCgkJCQkJCWRlZmF1bHQgOiAkdmFsID0gIWVtcHR5KCRhcmdzWzBd
KSA/ICRhcmdzWzFdIDogKGlzc2V0KCRhcmdzWzJdKSA/ICRhcmdzWzJdIDogJycpOw0KCQkJ
CQl9IGJyZWFrOw0KCQkJCQljYXNlICc9JyA6IHN3aXRjaCgkaGFzX2FyZ3MpIHsNCgkJCQkJ
CWNhc2UgMCA6IGNhc2UgMSA6IGJyZWFrOw0KCQkJCQkJY2FzZSAyIDogJHZhbCA9ICgkYXJn
c1swXSA9PSAkYXJnc1sxXSA/ICcxJyA6ICcwJyk7IGJyZWFrOw0KCQkJCQkJZGVmYXVsdCA6
ICR2YWwgPSBjb3VudChhcnJheV91bmlxdWUoJGFyZ3MpKTw9MSA/ICcxJyA6ICcwJzsNCgkJ
CQkJfSBicmVhazsNCgkJCQkJY2FzZSAnPCcgOiBjYXNlICc+JyA6IGlmKCRoYXNfYXJncyA+
IDEpIHsNCgkJCQkJCSR2YWwgPSAoJGZ1bmMgPT09ICc8JyA/ICgkYXJnc1swXSA8ICRhcmdz
WzFdID8gJzEnIDogJzAnKSA6ICgkYXJnc1swXSA+ICRhcmdzWzFdID8gJzEnIDogJzAnKSk7
DQoJCQkJCX0gYnJlYWs7DQoJCQkJCWNhc2UgJ2RhdGUnIDogaWYoJGhhc19hcmdzKSAkdmFs
ID0gZGF0ZSgkYXJnc1swXSwgc3RydG90aW1lKGlzc2V0KCRhcmdzWzFdKSA/ICRhcmdzWzFd
IDogJHZhbCkpOyBicmVhazsNCi8vCQkJCQljYXNlICdlc2NhcGUnIDogJHZhbCA9IGRvU2xh
c2goJHZhbCk7IGJyZWFrOw0KCQkJCQlkZWZhdWx0IDogJG5ld3ZhbCA9IGNhbGxfdXNlcl9m
dW5jX2FycmF5KCRmdW5jLCAkYXJncyk7DQoJCQkJCWlmKCEkcmVmKSAkdmFsID0gJG5ld3Zh
bDsNCgkJCQl9DQoJCQl9DQoJCQkkcmVzIC49ICR2YWw7IGJyZWFrOw0KDQoJCQlkZWZhdWx0
IDogaWYoISRmbGF0KSB7DQoJCQkJJHZhbHVlID0gJyc7DQoJCQkJJGluZCA9IGlzc2V0KCRl
dGNfcXVlcnlfc3BlY2lhbHNbJ3sjI30nXSkgPyAxIDogMDsNCgkJCQkkbm9kZXMgPSAkZXRj
X3F1ZXJ5X2NvbnRleHRbJ3hwYXRoJ10tPmV2YWx1YXRlKCRpbnRlcm5hbHMgPyBzdHJ0cigk
Y29udGVudFsndmFsdWUnXVsncGF0aCddLCAkaW50ZXJuYWxzKSA6ICRjb250ZW50Wyd2YWx1
ZSddWydwYXRoJ10sICRlbGVtZW50KTsNCgkJCQlpZiAoISgkbm9kZXMgaW5zdGFuY2VvZiBE
T01Ob2RlTGlzdCkpICR2YWx1ZSA9ICRub2RlczsNCgkJCQllbHNlIGZvcmVhY2goJG5vZGVz
IGFzICRub2RlKQ0KCQkJCXsNCgkJCQkJaWYoJGluZCkgJGludGVybmFsc1sneyMjfSddID0g
JGluZCsrOw0KCQkJCQkkb3V0ID0gZW1wdHkoJGNvbnRlbnRbJ3ZhbHVlJ11bJ3ZhbHVlJ10p
ID8gZmFsc2UgOiBldGNfcHJvY2Vzc19ub2RlKCRjb250ZW50Wyd2YWx1ZSddWyd2YWx1ZSdd
LCAkbm9kZSwgJGludGVybmFscywgZmFsc2UpOw0KCQkJCQkkdmFsdWUgLj0gJG91dCA/ICRv
dXQgOiAoJGNvbnRlbnRbJ3ZhbHVlJ11bJ21vZGUnXSA9PT0gJz8nID8gJG5vZGUtPm5vZGVW
YWx1ZSA6ICgkY29udGVudFsndmFsdWUnXVsnbW9kZSddID09PSAnIycgPyAkbm9kZS0+bm9k
ZU5hbWUgOiAoISRpc194bWwgPyAkZG9tLT5zYXZlSFRNTCgkbm9kZSkgOiAkZG9tLT5zYXZl
WE1MKCRub2RlKSkpKTsNCgkJCQl9DQoJCQkJaWYoJGNvbnRlbnRbJ3R5cGUnXSAhPT0gJ2Rl
ZmluZScpICRyZXMgLj0gJHZhbHVlOyBlbHNlICRkZWZpbmUgPSAkdmFsdWU7DQoJCQl9IGVs
c2Ugey8vZmxhdA0KCQkJCSR2YWx1ZSA9ICRlbGVtZW50OyAkY2h1bms9Jyc7DQoJCQkJaWYo
IWVtcHR5KCRjb250ZW50Wyd2YWx1ZSddWydhcnJheSddKSkgZm9yZWFjaCgkY29udGVudFsn
dmFsdWUnXVsnYXJyYXknXSBhcyAka2V5ID0+ICRjaHVuaykNCgkJCQl7DQoJCQkJCWlmKCRj
aHVuayAhPT0gJyonKQ0KCQkJCQkJaWYoaXNzZXQoJHZhbHVlWyRjaHVua10pKSAkdmFsdWUg
PSAkdmFsdWVbJGNodW5rXTsNCgkJCQkJCWVsc2Uge3Vuc2V0KCR2YWx1ZSk7IGJyZWFrO30N
CgkJCQkJZWxzZSB7DQoJCQkJCQkkcXVlcnkgPSBhcnJheShhcnJheSgndHlwZScgPT4gJ3hw
YXRoJywgJ3RleHQnID0+ICcnLCAndmFsdWUnID0+IGFycmF5KCdwYXRoJyA9PiAnLicsICdt
b2RlJyA9PiAnPycsICdhcnJheScgPT4gYXJyYXlfc2xpY2UoJGNvbnRlbnRbJ3ZhbHVlJ11b
J2FycmF5J10sICRrZXkgKyAxKSwgJ3ZhbHVlJyA9PiAkY29udGVudFsndmFsdWUnXVsndmFs
dWUnXSkpKTsNCgkJCQkJCSRpbmQgPSBpc3NldCgkZXRjX3F1ZXJ5X3NwZWNpYWxzWyd7IyN9
J10pID8gMSA6IDA7DQoJCQkJCQlmb3JlYWNoKCR2YWx1ZSBhcyAkayA9PiAkdmFsKSB7DQoJ
CQkJCQkJaWYoaXNzZXQoJGV0Y19xdWVyeV9zcGVjaWFsc1sneyN9J10pKSAkaW50ZXJuYWxz
Wyd7I30nXSA9ICRrOw0KCQkJCQkJCWlmKCRpbmQpICRpbnRlcm5hbHNbJ3sjI30nXSA9ICRp
bmQrKzsNCgkJCQkJCQkkbmV3cmVzID0gZXRjX2V2YWx1YXRlX3N0cmluZygkcXVlcnksICR2
YWwsICRpbnRlcm5hbHMsICRmbGF0KTsNCgkJCQkJCQlpZigkd3JhcCkgZm9yZWFjaCgkbmV3
cmVzIGFzICRyb3cpICRyZXNbXSA9ICRyb3c7DQoJCQkJCQkJZWxzZSAkcmVzIC49ICRuZXdy
ZXM7DQoJCQkJCQl9DQoJCQkJCQl1bnNldCgkdmFsdWUpOyBicmVhazsNCgkJCQkJfQ0KCQkJ
CX0NCgkJCQlpZihpc3NldCgkdmFsdWUpKSB7DQoJCQkJCWlmKCFlbXB0eSgkY29udGVudFsn
dmFsdWUnXVsndmFsdWUnXSkpIGV0Y19wcm9jZXNzX25vZGUoJGNvbnRlbnRbJ3ZhbHVlJ11b
J3ZhbHVlJ10sICR2YWx1ZSwgJGludGVybmFscyk7DQoJCQkJCWVsc2VpZighJHdyYXApDQoJ
CQkJCQlpZihpc3NldCgkZXRjX3F1ZXJ5X3Nhbml0aXplWyRjaHVuay4nPyddKSkge2lmKCRl
dGNfcXVlcnlfc2FuaXRpemVbJGNodW5rLic/J10pICR2YWx1ZSA9ICRldGNfcXVlcnlfc2Fu
aXRpemVbJGNodW5rLic/J10oJHZhbHVlKTt9DQoJCQkJCQllbHNlaWYoIWVtcHR5KCRldGNf
cXVlcnlfc2FuaXRpemVbJz8nXSkpICR2YWx1ZSA9ICRldGNfcXVlcnlfc2FuaXRpemVbJz8n
XSgkdmFsdWUpOw0KCQkJCQlpZigkY29udGVudFsndHlwZSddICE9PSAnZGVmaW5lJykgaWYo
JHdyYXApICRyZXNbXSA9ICR2YWx1ZTsgZWxzZSAkcmVzIC49ICR2YWx1ZTsNCgkJCQkJZWxz
ZSAkZGVmaW5lID0gJHZhbHVlOw0KCQkJCX0gZWxzZWlmKCRjb250ZW50Wyd0eXBlJ10gPT09
ICdkZWZpbmUnKSAkdW5kZWZpbmVkID0gdHJ1ZTsNCgkJCX0NCgkJfQ0KCX0NCglyZXR1cm4g
JHJlczsNCn0NCg0KZnVuY3Rpb24gZXRjX3Byb2Nlc3Nfbm9kZSgmJGF0dHIsICYkbm9kZSwg
JGludGVybmFscz1udWxsLCAkZmxhdD10cnVlLCAkcmVtb3ZlPWZhbHNlKSB7DQoJaWYoJGZs
YXQpIHsNCgkJaWYoZW1wdHkoJGF0dHIpICYmICRyZW1vdmUpICRub2RlID0gbnVsbDsNCgkJ
ZWxzZSBmb3JlYWNoKCRhdHRyIGFzICR2YWwpIGlmKCR2YWxbJ2F0dHInXSA9PT0gJy4nIHx8
ICR2YWxbJ2F0dHInXSA9PT0gJz8nKSB7DQoJCQlpZihpc3NldCgkaW50ZXJuYWxzWyd7P30n
XSkpICRpbnRlcm5hbHNbJ3s/fSddID0gJG5vZGU7DQoJCQkkbm9kZSA9IGV0Y19ldmFsdWF0
ZV9zdHJpbmcoJHZhbFsndmFsdWUnXSwgJG5vZGUsICRpbnRlcm5hbHMsICRmbGF0KTsNCgkJ
fQ0KCQlyZXR1cm47DQoJfQ0KDQoJZ2xvYmFsICRldGNfcXVlcnlfY29udGV4dDsNCg0KLy8J
JHNlbGZfcGF0aCA9IGFycmF5KCcuJywgJz8nLCAnIycsICcrJywgJ14nLCAnJCcsICd+Jywg
JyYnLCAnLycpOw0KCSRpc19hdHRyID0gKCRub2RlLT5ub2RlVHlwZSA9PT0gWE1MX0FUVFJJ
QlVURV9OT0RFKTsNCglpZihlbXB0eSgkYXR0cikgJiYgJHJlbW92ZSkgew0KCQlpZigkaXNf
YXR0cikgJG5vZGUtPm93bmVyRWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlTm9kZSgkbm9kZSk7
DQoJCWVsc2UgJG5vZGUtPnBhcmVudE5vZGUtPnJlbW92ZUNoaWxkKCRub2RlKTsNCgl9DQoJ
ZWxzZSBmb3JlYWNoKCRhdHRyIGFzICR2YWwpIHsNCi8vCQl1bnNldCgkbmFtZSk7DQoJCSRz
ZWxmID0gc3RycG9zKCcuPyMrXiR+Ji8nLCAkdmFsWydhdHRyJ10pICE9PSBmYWxzZTsvL2lu
X2FycmF5KCR2YWxbJ2F0dHInXSwgJHNlbGZfcGF0aCk7DQoJCWlmKCFpc3NldCgkdmFsWyd2
YWx1ZSddKSkge2lmKCEkc2VsZiAmJiAhJGlzX2F0dHIpICRub2RlLT5yZW1vdmVBdHRyaWJ1
dGUoJHZhbFsnYXR0ciddKTt9DQoJCWVsc2Ugew0KCQkJaWYoaXNzZXQoJGludGVybmFsc1sn
ez99J10pKSAkaW50ZXJuYWxzWyd7P30nXSA9ICRzZWxmIHx8ICRpc19hdHRyID8gJG5vZGUt
Pm5vZGVWYWx1ZSA6ICRub2RlLT5nZXRBdHRyaWJ1dGUoJHZhbFsnYXR0ciddKTsNCgkJCWlm
KGlzc2V0KCRpbnRlcm5hbHNbJ3sjfSddKSkgJGludGVybmFsc1sneyN9J10gPSAkc2VsZiB8
fCAkaXNfYXR0ciA/ICRub2RlLT5ub2RlTmFtZSA6ICR2YWxbJ2F0dHInXTsNCgkJCSR2YWx1
ZSA9IGlzc2V0KCR2YWxbJ3ZhbHVlJ11bJ3RleHQnXSkgPyAkdmFsWyd2YWx1ZSddWyd0ZXh0
J10gOiBldGNfZXZhbHVhdGVfc3RyaW5nKCR2YWxbJ3ZhbHVlJ10sICRub2RlLCAkaW50ZXJu
YWxzLCAkZmxhdCk7DQoJCQlzd2l0Y2goJHZhbFsnYXR0ciddKSB7DQoJCQkJY2FzZSAnJicg
OiBpZighJHJlbW92ZSkgcmV0dXJuICR2YWx1ZTsNCgkJCQljYXNlICcuJyA6IGNhc2UgJysn
IDogY2FzZSAnXicgOiBjYXNlICckJyA6IGlmKCEkaXNfYXR0cikgew0KCQkJCQlpZihzdHJw
b3MoJHZhbHVlLCAnPCcpID09PSBmYWxzZSkNCgkJCQkJCWlmKCR2YWxbJ2F0dHInXSAhPT0g
Jy4nKSAkZiA9ICRub2RlLT5vd25lckRvY3VtZW50LT5jcmVhdGVUZXh0Tm9kZSgkdmFsdWUp
Ow0KCQkJCQkJZWxzZSB7JG5vZGUtPm5vZGVWYWx1ZSA9ICR2YWx1ZTsgYnJlYWs7fQ0KCQkJ
CQllbHNlIHsNCgkJCQkJCSRlbmNvZGluZyA9ICRldGNfcXVlcnlfY29udGV4dFsnZW5jb2Rp
bmcnXTsNCgkJCQkJCSRpc194bWwgPSAkZXRjX3F1ZXJ5X2NvbnRleHRbJ3htbCddOw0KCQkJ
CQkJaWYoISRpc194bWwpICR2YWx1ZSA9IHByZWdfcmVwbGFjZSgnLzwoKD86YXJlYXxiYXNl
fGJyfGNvbHxjb21tYW5kfGVtYmVkfGhyfGltZ3xpbnB1dHxrZXlnZW58bGlua3xtZXRhfHBh
cmFtfHNvdXJjZXx0cmFja3x3YnIpXGJbXj5dKikoPzwhXC8pPi9pVScsICc8JDEgLz4nLCAk
dmFsdWUpOw0KCQkJCQkJaWYoISRpc194bWwgJiYgc3RycG9zKCR2YWx1ZSwgJyYnKSAhPT0g
ZmFsc2UpIHsNCgkJCQkJCQlpZighaXNzZXQoJGV0Y19xdWVyeV9jb250ZXh0WydkZWNvZGUn
XSkpICRldGNfcXVlcnlfY29udGV4dFsnZGVjb2RlJ10gPSBhcnJheV9mbGlwKGFycmF5X2Rp
ZmYoZ2V0X2h0bWxfdHJhbnNsYXRpb25fdGFibGUoSFRNTF9FTlRJVElFUywgRU5UX0NPTVBB
VCwgJGVuY29kaW5nKSwgZ2V0X2h0bWxfdHJhbnNsYXRpb25fdGFibGUoSFRNTF9TUEVDSUFM
Q0hBUlMsIEVOVF9DT01QQVQsICRlbmNvZGluZykpKTsNCgkJCQkJCQkkdmFsdWUgPSBzdHJ0
cigkdmFsdWUsICRldGNfcXVlcnlfY29udGV4dFsnZGVjb2RlJ10pOw0KCQkJCQkJfQ0KCQkJ
CQkJJGYgPSAkbm9kZS0+b3duZXJEb2N1bWVudC0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
Ow0KCQkJCQkJJGYtPmFwcGVuZFhNTCgkdmFsdWUpOw0KCQkJCQl9DQoJCQkJCWlmKCR2YWxb
J2F0dHInXSA9PT0gJy4nKSAkbm9kZS0+bm9kZVZhbHVlID0gbnVsbDsNCgkJCQkJaWYoJHZh
bFsnYXR0ciddID09PSAnJicpICRub2RlLT5wYXJlbnROb2RlLT5yZXBsYWNlQ2hpbGQoJGYs
ICRub2RlKTsNCgkJCQkJZWxzZWlmKCR2YWxbJ2F0dHInXSA9PT0gJ14nKSAkbm9kZS0+cGFy
ZW50Tm9kZS0+aW5zZXJ0QmVmb3JlKCRmLCAkbm9kZSk7DQoJCQkJCWVsc2VpZigkdmFsWydh
dHRyJ10gPT09ICckJykNCgkJCQkJCWlmKCRub2RlLT5uZXh0U2libGluZykgJG5vZGUtPnBh
cmVudE5vZGUtPmluc2VydEJlZm9yZSgkZiwgJG5vZGUtPm5leHRTaWJsaW5nKTsNCgkJCQkJ
CWVsc2UgJG5vZGUtPnBhcmVudE5vZGUtPmFwcGVuZENoaWxkKCRmKTsNCgkJCQkJZWxzZSAk
bm9kZS0+YXBwZW5kQ2hpbGQoJGYpOyBicmVhazsNCgkJCQl9DQoNCgkJCQljYXNlICc/JyA6
ICR2YWx1ZSA9IGh0bWxzcGVjaWFsY2hhcnMoJHZhbHVlLCBFTlRfQ09NUEFULCAkZXRjX3F1
ZXJ5X2NvbnRleHRbJ2VuY29kaW5nJ10sIGZhbHNlKTsNCgkJCQkkbm9kZS0+bm9kZVZhbHVl
ID0gJHZhbFsnYXR0ciddID09PSAnKycgfHwgJHZhbFsnYXR0ciddID09PSAnJCcgPyAkbm9k
ZS0+bm9kZVZhbHVlLiR2YWx1ZSA6ICgkdmFsWydhdHRyJ10gPT09ICdeJyA/ICR2YWx1ZS4k
bm9kZS0+bm9kZVZhbHVlIDogJHZhbHVlKTsNCgkJCQlicmVhazsNCg0KCQkJCWNhc2UgJ34n
IDogY2FzZSAnLycgOg0KCQkJCSRub2RlcyA9ICRldGNfcXVlcnlfY29udGV4dFsneHBhdGgn
XS0+ZXZhbHVhdGUoJHZhbHVlLCAkbm9kZSk7DQoJCQkJaWYgKCRub2RlcyBpbnN0YW5jZW9m
IERPTU5vZGVMaXN0KSBmb3JlYWNoKCRub2RlcyBhcyAkZWxlbWVudCkNCgkJCQkJaWYoISRp
c19hdHRyKSB7DQoJCQkJCQlpZigkdmFsWydhdHRyJ10gPT09ICd+JykgJGVsZW1lbnQtPnBh
cmVudE5vZGUtPmluc2VydEJlZm9yZSgkbm9kZSwgJGVsZW1lbnQpOw0KCQkJCQkJZWxzZSAk
ZWxlbWVudC0+YXBwZW5kQ2hpbGQoJG5vZGUpOw0KCQkJCQl9IGVsc2UgJGVsZW1lbnQtPnNl
dEF0dHJpYnV0ZU5vZGUoJG5vZGUpOw0KCQkJCWJyZWFrOw0KDQoJCQkJY2FzZSAnIycgOiBp
ZigkaXNfYXR0ciAmJiAkdmFsdWUgIT0gJG5vZGUtPm5hbWUpIHsNCgkJCQkJJG5vZGUtPm93
bmVyRWxlbWVudC0+c2V0QXR0cmlidXRlKCR2YWx1ZSwgJG5vZGUtPnZhbHVlKTsNCgkJCQkJ
JG5vZGUtPm93bmVyRWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlTm9kZSgkbm9kZSk7DQoJCQkJ
fSBicmVhazsNCg0KCQkJCWRlZmF1bHQgOiBpZighJGlzX2F0dHIpICRub2RlLT5zZXRBdHRy
aWJ1dGUoJHZhbFsnYXR0ciddLCAkdmFsdWUpOw0KCQkJfQ0KCQl9DQoJfQ0KfQ0KDQovKioq
KioqKioqKioqKioqIE1JU0MgKioqKioqKioqKioqKioqKioqKioqKi8NCg0KZnVuY3Rpb24g
ZXRjX2NyZWF0ZV9lbGVtZW50KCRuYW1lLCAmJHZhbHVlLCAmJGRvYykgew0KCWlmKGVtcHR5
KCRuYW1lKSB8fCBpc19udW1lcmljKCRuYW1lKSkgeyRhdHRyID0gJG5hbWU7ICRuYW1lID0g
J3Jvdyc7fQ0KCWVsc2UgdW5zZXQoJGF0dHIpOw0KCWlmKCFpc19hcnJheSgkdmFsdWUpICYm
ICFpc19vYmplY3QoJHZhbHVlKSkgew0KCQkkdmFsdWUgPSAoc3RyaW5nKSR2YWx1ZTsNCgkJ
aWYoc3RycG9zKCR2YWx1ZSwgJyYnKSAhPT0gZmFsc2UpICR2YWx1ZSA9IHByZWdfcmVwbGFj
ZSgnLyYoIz9cdytcYig/ITspfCg/IVsjXHddKSkvJywgJyZhbXA7JDEnLCAkdmFsdWUpOw0K
CQkkZWxlbWVudCA9ICRkb2MtPmNyZWF0ZUVsZW1lbnQoJG5hbWUsICR2YWx1ZSk7DQovKgkJ
JGVsZW1lbnQgPSAkZG9jLT5jcmVhdGVFbGVtZW50KCRuYW1lKTsNCgkJJGVsZW1lbnQtPmFw
cGVuZENoaWxkKCRkb2MtPmNyZWF0ZVRleHROb2RlKChzdHJpbmcpJHZhbHVlKSk7DQoqLwl9
DQoJZWxzZSB7DQoJCSRlbGVtZW50ID0gJGRvYy0+Y3JlYXRlRWxlbWVudCgkbmFtZSk7DQoJ
CWZvcmVhY2goJHZhbHVlIGFzICRrZXk9PiR2YWwpICRlbGVtZW50LT5hcHBlbmRDaGlsZChl
dGNfY3JlYXRlX2VsZW1lbnQoJGtleSwgJHZhbCwgJGRvYykpOw0KCX0NCglpZihpc3NldCgk
YXR0cikpICRlbGVtZW50LT5zZXRBdHRyaWJ1dGUoJ2luZGV4JywgJGF0dHIpOw0KCXJldHVy
biAkZWxlbWVudDsNCn0NCg0KZnVuY3Rpb24gZXRjX2NsZWFudXAoJG91dCA9IG51bGwsICRz
YWZlX2NvbnRleHQgPSBudWxsLCAkc2FmZV9nbG9iYWxzID0gbnVsbCwgJHNhZmVfc2FuaXRp
emUgPSBudWxsLCAkc2FmZV9zcGVjaWFscyA9IG51bGwpIHsNCglnbG9iYWwgJGV0Y19xdWVy
eV9jb250ZXh0LCAkZXRjX3F1ZXJ5X2dsb2JhbHMsICRldGNfcXVlcnlfc2FuaXRpemUsICRl
dGNfcXVlcnlfc3BlY2lhbHM7DQoJJGV0Y19xdWVyeV9jb250ZXh0ID0gJHNhZmVfY29udGV4
dDsNCgkkZXRjX3F1ZXJ5X2dsb2JhbHMgPSAkc2FmZV9nbG9iYWxzOw0KCSRldGNfcXVlcnlf
c2FuaXRpemUgPSAkc2FmZV9zYW5pdGl6ZTsNCgkkZXRjX3F1ZXJ5X3NwZWNpYWxzID0gJHNh
ZmVfc3BlY2lhbHM7DQoJcmV0dXJuKCRvdXQpOw0KfQ0KDQppZighZGVmaW5lZCgnRVRDX1BS
RUdfU1BFQycpKSBkZWZpbmUoJ0VUQ19QUkVHX1NQRUMnLCAnLyg/PCFceykoXHtbPyFdKD8+
W157fV18KD8xKSkrXH0pL1UnKTsiO3M6NDoidHlwZSI7czoxOiIwIjtzOjU6Im9yZGVyIjtz
OjE6IjUiO3M6NToiZmxhZ3MiO3M6MToiMCI7czo0OiJoZWxwIjtzOjE4NzUwOiI8aDQ+RGVz
Y3JpcHRpb248L2g0PgoKCTxwPlRoaXMgbXVsdGlwdXJwb3NlIHBsdWdpbiBhbGxvd3MgeW91
IHRvIHBpY2sgc29tZSBkYXRhLCB0cmFuc2Zvcm0gaXQgYW5kIGRpc3BsYXkgdGhlIHJlc3Vs
dCB0aGUgd2F5IHlvdSBsaWtlLiBJdCBjYW4gcXVlcnkgSFRNTC9YTUwvSlNPTiBkb2N1bWVu
dHMsIGRhdGFiYXNlcywgTERBUCBkaXJlY3RvcmllcyBvciBnbG9iYWwgdmFyaWFibGVzLCBh
bmQgY2FuIGJlIHVzZWZ1bCBmb3I8L3A+CgoJPHVsPgoJCTxsaT5pbXBvcnRpbmcgZGF0YSBm
cm9tIGV4dGVybmFsIHNpdGVzL2ZlZWRzPC9saT4KCQk8bGk+cXVlcnlpbmcgZGF0YWJhc2Vz
PC9saT4KCQk8bGk+cmV0cmlldmluZyB2YWx1ZXMgb2YgZ2xvYmFsIHZhcmlhYmxlczwvbGk+
CgkJPGxpPnBlcmZvcm1pbmcgYWxsIGtpbmQgb2YgY2FsY3VsYXRpb25zPC9saT4KCQk8bGk+
aXRlcmF0aW5nIG92ZXIgYXJyYXlzL3JhbmdlczwvbGk+CgkJPGxpPmNsZWFuaW5nIHBvb3Ig
YXJ0aWNsZSBtYXJrdXA8L2xpPgoJCTxsaT5jdXN0b21pemluZyB0aGUgb3V0cHV0IG9mIFRl
eHRwYXR0ZXJuIHRhZ3MgYW5kIG90aGVyIHBsdWdpbnM8L2xpPgoJCTxsaT5jcmVhdGluZyBu
YXZpZ2F0aW9uIGxpbmtzLCBwYWdpbmF0aW9uLCBhbmQgbXVjaCBtb3JlLjwvbGk+Cgk8L3Vs
PgoKCTxwPkl0IGlzIGluIG1hbnkgcG9pbnRzIGluc3BpcmVkIGJ5IDxhIGhyZWY9Imh0dHA6
Ly90ZXh0cGF0dGVybi5vcmcvcGx1Z2lucy8xMTM4L3NtZF94bWwiPnNtZF94bWw8L2E+IGFu
ZCA8YSBocmVmPSJodHRwOi8vdGV4dHBhdHRlcm4ub3JnL3BsdWdpbnMvOTc2L3NtZF9xdWVy
eSI+c21kX3F1ZXJ5PC9hPiwgYnV0IHVzZXMgWFBhdGggdG8gYWNjZXNzIHRoZSBkZXNpcmVk
IG5vZGVzLjwvcD4KCgk8cD5UaGUgc2Vuc2libGUgZmVhdHVyZXMgKFBIUCBmdW5jdGlvbnMs
IGRiIHF1ZXJ5LCBleHRlcm5hbCBkYXRhIGltcG9ydCkgYXJlIGF2YWlsYWJsZSBvbmx5IHRv
IHNpdGUgYWRtaW5pc3RyYXRvcnMuPC9wPgoKCTxoND5SZXF1aXJlbWVudHM8L2g0PgoKCTx1
bD4KCQk8bGk+PHNwYW4gY2xhc3M9ImNhcHMiPlBIUDwvc3Bhbj4gNS4zLjEwIHdpdGggPHNw
YW4gY2xhc3M9ImNhcHMiPkRPTTwvc3Bhbj4gZXh0ZW5zaW9uIChlbmFibGVkIGJ5IGRlZmF1
bHQpPC9saT4KCQk8bGk+QmFzaWMga25vd2xlZGdlIG9mIDxhIGhyZWY9Imh0dHA6Ly93d3cu
dzNzY2hvb2xzLmNvbS94cGF0aC8iPlhQYXRoPC9hPjwvbGk+Cgk8L3VsPgoKCTxoND5TeW50
YXg8L2g0PgoKCTxwPlRoZSB3b3JrZmxvdyBpczogaW1wb3J0IHNvbWUgPHN0cm9uZz5kYXRh
PC9zdHJvbmc+LCA8c3Ryb25nPnF1ZXJ5PC9zdHJvbmc+IGl0IGZvciBzb21lIG5vZGVzIHdp
dGggWFBhdGgsIGRvIHNvbWUgPHN0cm9uZz5yZXBsYWNlPC9zdHJvbmc+bWVudHMgYW5kIGRp
c3BsYXkgdGhlIHJlc3VsdC4gRm9yIGV4YW1wbGUsPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhw
OmV0Y19xdWVyeSBkYXRhPSYjMzk7Jmx0O3R4cDpib2R5IC8mZ3Q7JiMzOTsgcmVwbGFjZT0m
cXVvdDsvL0BzdHlsZSZxdW90OyAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+aW4gYW4gYXJ0
aWNsZSBmb3JtIHdpbGwgZGlzcGxheSB0aGUgYm9keSBvZiB0aGUgYXJ0aWNsZSB3aXRoIGFs
bCBzdHlsZSBhdHRyaWJ1dGVzIHJlbW92ZWQuPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOmV0
Y19xdWVyeSB1cmw9JnF1b3Q7aHR0cDovL3RleHRwYXR0ZXJuLmNvbSZxdW90OyBxdWVyeT0m
cXVvdDsvL2RpdltAaWQ9JiMzOTthY2NvbGFkZXNCbG9jayYjMzk7XS8vaW1nJnF1b3Q7IHJl
cGxhY2U9JnF1b3Q7QHdpZHRoPTEyOCZxdW90OyZndDsKICB7Ln0gOiB7QGFsdD99CiZsdDt0
eHA6ZWxzZSAvJmd0OwogICZsdDtwJmd0O05vYm9keSBoZXJlLiZsdDsvcCZndDsKJmx0Oy90
eHA6ZXRjX3F1ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+d2lsbCBkaXNwbGF5IGFsbCA8
Y29kZT5pbWc8L2NvZGU+IGVsZW1lbnRzIChzY2FsZWQgdG8gPGNvZGU+d2lkdGg9MTI4PC9j
b2RlPikgd2l0aCB0aGVpciA8Y29kZT5hbHQ8L2NvZGU+IHRleHQgZm91bmQgaW4gdGhlIDxj
b2RlPmRpdiNhY2NvbGFkZUJsb2NrPC9jb2RlPiBvbiA8YSBocmVmPSJodHRwOi8vdGV4dHBh
dHRlcm4uY29tIj50ZXh0cGF0dGVybi5jb208L2E+LjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4
cDpldGNfcXVlcnkgZGF0YT0mcXVvdDtTRUxFQ1QgKiBGUk9NIHR4cF91c2VycyBXSEVSRSAx
JnF1b3Q7IHdyYXB0YWc9JnF1b3Q7dWwmcXVvdDsgYnJlYWs9JnF1b3Q7bGkmcXVvdDsmZ3Q7
CiAgeyRzdHJ0b3VwcGVyKHtSZWFsTmFtZT99KX0KJmx0Oy90eHA6ZXRjX3F1ZXJ5Jmd0Owo8
L2NvZGU+PC9wcmU+CgoJPHA+d2lsbCBkaXNwbGF5IGFuIHVwcGVyY2FzZSBsaXN0IG9mIGFs
bCB1c2VycyBvZiB5b3VyIHNpdGUuPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOmV0Y19xdWVy
eSBnbG9iYWxzPSZxdW90O19HRVQmcXVvdDsgZnVuY3Rpb25zPSZxdW90O3NxcnQmcXVvdDsg
cXVlcnk9JnF1b3Q7c3FydCh7P251bXwwfGludHZhbH0pJnF1b3Q7IC8mZ3Q7CjwvY29kZT48
L3ByZT4KCgk8cD53aWxsIG1lcmVseSBjYWxjdWxhdGUgdGhlIHNxdWFyZSByb290IG9mIDxz
cGFuIGNsYXNzPSJjYXBzIj5IVE1MPC9zcGFuPiA8c3BhbiBjbGFzcz0iY2FwcyI+R0VUPC9z
cGFuPiA8Y29kZT5udW08L2NvZGU+IGZpZWxkLCBzYW5pdGl6ZWQgYXMgaW50ZWdlci48L3A+
CgoJPGg0PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PHN0cm9uZz5kYXRhPC9zdHJv
bmc+OiBUaGUgZGF0YSB0byBwYXJzZS4gQ2FuIGJlIHNvbWUgPHNwYW4gY2xhc3M9ImNhcHMi
PkhUTUw8L3NwYW4+L1hNTCBjb2RlLCBhcnJheSwgZGF0YWJhc2UgcXVlcnkgb3IgTERBUCBz
dHJpbmcuIERlZmF1bHRzIHRvIDxjb2RlPm51bGw8L2NvZGU+LjwvbGk+CgkJPGxpPjxzdHJv
bmc+dXJsPC9zdHJvbmc+OiBUaGUgYWRkcmVzcyBvZiB0aGUgd2ViIHBhZ2UgdG8gcmV0cmll
dmUgdGhlIGRhdGEgZnJvbS4gSWYgbm90IGVtcHR5LCBzdXBlcnNlZGVzIHRoZSA8c3Ryb25n
PmRhdGE8L3N0cm9uZz4gYXR0cmlidXRlLiBUaGlzIG1heSBiZSBhIDxzcGFuIGNsYXNzPSJj
YXBzIj5MQVJHRTwvc3Bhbj4gPHNwYW4gY2xhc3M9ImNhcHMiPlNFQ1VSSVRZPC9zcGFuPiA8
c3BhbiBjbGFzcz0iY2FwcyI+SE9MRTwvc3Bhbj4sIHVzZSBpdCBvbmx5IHdpdGggdGhlIHNp
dGVzIHlvdSB0cnVzdC4gSW4gPGNvZGU+ZGI8L2NvZGU+IG1vZGUsIDxzdHJvbmc+dXJsPC9z
dHJvbmc+IGlzIHRoZSBuYW1lIG9mIGEgbG9jYWwgZGF0YWJhc2UuIERlZmF1bHQgaXMgZW1w
dHkgKHR4cCBvd24gZGF0YWJhc2UpLjwvbGk+CgkJPGxpPjxzdHJvbmc+Y29udGV4dDwvc3Ry
b25nPjogPGNvZGU+b3B0aW9uczwvY29kZT4gKGh0bWwgaGVhZGVycyBhbmQgc28gb24pIHRv
IHBhc3MgdG8gcGhwIDxhIGhyZWY9Imh0dHA6Ly9mcjIucGhwLm5ldC9tYW51YWwvZW4vZnVu
Y3Rpb24uc3RyZWFtLWNvbnRleHQtY3JlYXRlLnBocCI+c3RyZWFtLWNvbnRleHQtY3JlYXRl
PC9hPiBmdW5jdGlvbiB3aGVuIHJldHJpZXZpbmcgZGF0YSBmcm9tIDxzdHJvbmc+dXJsPC9z
dHJvbmc+LiBEZWZhdWx0cyB0byA8c3Ryb25nPm51bGw8L3N0cm9uZz4uPC9saT4KCQk8bGk+
PHN0cm9uZz5tYXJrdXA8L3N0cm9uZz46IDxjb2RlPmh0bWw8L2NvZGU+LCA8Y29kZT54bWw8
L2NvZGU+LCA8Y29kZT5kYjwvY29kZT4sIDxjb2RlPmpzb248L2NvZGU+LCA8Y29kZT5hcnJh
eTwvY29kZT4sIDxjb2RlPmxpc3Q8L2NvZGU+LCA8Y29kZT5sZGFwPC9jb2RlPiwgPGNvZGU+
ZGF0YTwvY29kZT4gb3IgPGNvZGU+cmF3PC9jb2RlPi4gSWYgZm9sbG93ZWQgYnkgPGNvZGU+
OnBmeDwvY29kZT4sIHRoZSBkZWZhdWx0LW5hbWVzcGFjZSBub2RlcyBjYW4gYmUgYWNjZXNz
ZWQgd2l0aCA8Y29kZT5wZng6bm9kZW5hbWU8L2NvZGU+LiBEZWZhdWx0cyB0byBlbXB0eSAo
Z3Vlc3MgZnJvbSA8c3Ryb25nPmRhdGE8L3N0cm9uZz4pLjwvbGk+CgkJPGxpPjxzdHJvbmc+
cXVlcnk8L3N0cm9uZz46IFhQYXRoIGV4cHJlc3Npb24sIGUuZy4gdGhlIHBhdGggb2YgdGhl
IHJlZmVyZW5jZSBub2Rlcy4gRGVmYXVsdHMgdG8gPGNvZGU+LjwvY29kZT4gKHRoZSA8c3Ry
b25nPmRhdGE8L3N0cm9uZz4gaXRzZWxmLCB3cmFwcGVkIGluIHNvbWUgcm9vdCkuPC9saT4K
CQk8bGk+PHN0cm9uZz5lbmNvZGluZzwvc3Ryb25nPjogdGhlIGRlc2lyZWQgb3V0cHV0IGNo
YXJzZXQsIG11c3QgYmUgZWl0aGVyIDxjb2RlPmNoYXJzZXRfdG88L2NvZGU+IG9yIDxjb2Rl
PmNoYXJzZXRfdG86Y2hhcnNldF9mcm9tPC9jb2RlPi4gSWYgPGNvZGU+Y2hhcnNldF9mcm9t
PC9jb2RlPiBpcyBnaXZlbiwgdGhlIGRhdGEgd2lsbCBiZSByZS1lbmNvZGVkIGV2ZW4gaWYg
aXQgaXMgaWRlbnRpY2FsIHRvIDxjb2RlPmNoYXJzZXRfdG88L2NvZGU+LiBEZWZhdWx0IGlz
IDxjb2RlPlVURi04PC9jb2RlPi48L2xpPgoJCTxsaT48c3Ryb25nPmZvcm08L3N0cm9uZz46
IHRoZSA8c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBGb3JtIHdpdGggd2hpY2ggdG8g
cGFyc2UgZWFjaCBub2RlLiBZb3UgbWF5IHVzZSB0aGUgcGx1Z2luIGFzIGEgY29udGFpbmVy
IGluc3RlYWQgaWYgeW91IHByZWZlci4gRGVmYXVsdCBpcyBlbXB0eS48L2xpPgoJCTxsaT48
c3Ryb25nPnBvcHVsYXRlPC9zdHJvbmc+OiBhIDxzcGFuIGNsYXNzPSJjYXBzIj5UWFA8L3Nw
YW4+IGVudGl0eSAoYXJ0aWNsZSwgaW1hZ2UsIGZpbGUgb3IgbGluaykgZmllbGRzIHRoYXQg
d2lsbCBiZSBwb3B1bGF0ZWQgYnkgdGhlIGRhdGEuIERlZmF1bHQgaXMgZW1wdHkuPC9saT4K
CQk8bGk+PHN0cm9uZz5yZXBsYWNlPC9zdHJvbmc+OiAqc2VwYXJhdG9yKi1zZXBhcmF0ZWQg
bGlzdCAoZW1wdHkgYnkgZGVmYXVsdCkgb2YgdG9rZW5zIGxpa2UgPGNvZGU+eHBhdGg9dmFs
dWU8L2NvZGU+LCBzZWUgYmVsb3cuPC9saT4KCQk8bGk+PHN0cm9uZz5kZWxpbTwvc3Ryb25n
Pjogc3ltYm9scyB0byBiZSB1c2VkIGluc3RlYWQgb2YgPGNvZGU+PTwvY29kZT4gaW4gPHN0
cm9uZz5yZXBsYWNlPC9zdHJvbmc+IGNvdXBsZXMuIFRoZSBkZWZhdWx0IDxjb2RlPj08L2Nv
ZGU+IHNob3VsZCBzdWZmaWNlIGluIG1vc3QgY2FzZXMuPC9saT4KCQk8bGk+PHN0cm9uZz5z
ZXBhcmF0b3I8L3N0cm9uZz46IHN5bWJvbHMgdG8gc2VwYXJhdGUgdGhlIDxzdHJvbmc+cmVw
bGFjZTwvc3Ryb25nPiB0b2tlbnMuIERlZmF1bHRzIHRvIDxjb2RlPjs8L2NvZGU+IChzZW1p
LWNvbG9uKS48L2xpPgoJCTxsaT48c3Ryb25nPmFyZ3NlcDwvc3Ryb25nPjogc3ltYm9scyB0
byBzZXBhcmF0ZSB0aGUgYXJndW1lbnRzIG9mIGZ1bmN0aW9uIHBhdHRlcm5zLCBzZWUgYmVs
b3cuIERlZmF1bHRzIHRvIDxjb2RlPnw8L2NvZGU+IChwaXBlKS48L2xpPgoJCTxsaT48c3Ry
b25nPmdsb2JhbHM8L3N0cm9uZz4gOiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBnbG9iYWwg
dmFyaWFibGVzIHRvIGJlIHVzZWQgd2l0aCB0aGUgc3BlY2lhbCByZXBsYWNlbWVudCBwYXR0
ZXJucywgc2VlIGJlbG93LjwvbGk+CgkJPGxpPjxzdHJvbmc+c2FuaXRpemU8L3N0cm9uZz4g
OiBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiA8c3Ryb25nPmdsb2JhbHM8L3N0cm9uZz4gdGhh
dCBzaG91bGQgYmUgc2FuaXRpemVkIHdpdGggPGNvZGU+aHRtbHNwZWNpYWxjaGFyczwvY29k
ZT4uIERlZmF1bHQgaXMgPGNvZGU+X0NPT0tJRSxfR0VULF9QT1NULF9SRVFVRVNUPC9jb2Rl
Pi4gWW91IGNhbiB1c2UgY3VzdG9tIHNhbml0aXplcnMgYXMgd2VsbDogPGNvZGU+c2FuaXRp
emU9Il9HRVQ6aW50dmFsIjwvY29kZT4uPC9saT4KCQk8bGk+PHN0cm9uZz5zcGVjaWFsczwv
c3Ryb25nPiA6IGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGF0dHJpYnV0ZXMgKGxpa2UgPGNv
ZGU+ZGF0YTwvY29kZT4sIDxjb2RlPnF1ZXJ5PC9jb2RlPiwgPGNvZGU+cmVwbGFjZTwvY29k
ZT4gb3IgPGNvZGU+Y29udGVudDwvY29kZT4pIHRvIHByb2NlZWQgd2l0aCB0aGUgc3BlY2lh
bCByZXBsYWNlbWVudCBwYXR0ZXJucy4gRGVmYXVsdCBpcyA8Y29kZT51cmwsZGF0YSxxdWVy
eTwvY29kZT4uPC9saT4KCQk8bGk+PHN0cm9uZz5mdW5jdGlvbnM8L3N0cm9uZz4gOiBjb21t
YS1zZXBhcmF0ZWQgbGlzdCBvZiBwaHAgZnVuY3Rpb25zIHRvIGJlIHVzZWQgaW4geHBhdGgg
ZXhwcmVzc2lvbnMuIFJlcXVpcmVzIHN1ZmZpY2llbnQgdXNlciBwcml2aWxlZ2VzLjwvbGk+
CgkJPGxpPjxzdHJvbmc+cGFyc2U8L3N0cm9uZz46IHdoZXRoZXIgPHNwYW4gY2xhc3M9ImNh
cHMiPlRYUDwvc3Bhbj4gcGFyc2VyIHNob3VsZCBwYXJzZSB0aGUgY29udGVudCA8Y29kZT5i
ZWZvcmU8L2NvZGU+IG9yIDxjb2RlPmFmdGVyPC9jb2RlPiB0aGUgcmVwbGFjZW1lbnRzLCBv
ciA8Y29kZT5ib3RoPC9jb2RlPiwgb3Igbm90IGF0IGFsbC4gSWYgeW91IGRvbiYjODIxNzt0
IGV4cGVjdCA8Y29kZT4mbHQ7dHhwOjwvY29kZT4gdGFncyBpbnNpZGUgdGhlIGNvbnRhaW5l
ciwgeW91IGNhbiBzZXQgPGNvZGU+cGFyc2U9IiI8L2NvZGU+LCB0aGlzIHdpbGwgc3BlZWQg
dXAgdGhlIHByb2Nlc3Npbmcgb2YgbGFyZ2UgZGF0YS4gRGVmYXVsdCBpcyA8Y29kZT5hdXRv
PC9jb2RlPjogZW1wdHkgaWYgbm8gPGNvZGU+Jmx0O3R4cDo8L2NvZGU+IHRhZ3MgYXJlIGRl
dGVjdGVkLCA8Y29kZT5hZnRlcjwvY29kZT4gb3RoZXJ3aXNlLjwvbGk+CgkJPGxpPjxzdHJv
bmc+bmFtZTwvc3Ryb25nPiA6IGlmIHNldCwgdGhlIG91dHB1dCB3aWxsIGJlIGFzc2lnbmVk
IHRvIHRoZSBjb3JyZXNwb25kaW5nIDxjb2RlPiZsdDt0eHA6dmFyaWFibGUgLyZndDs8L2Nv
ZGU+LjwvbGk+CgkJPGxpPjxzdHJvbmc+c2F2ZTwvc3Ryb25nPiA6IGlmIHNldCwgdGhlIGRh
dGEgd2lsbCBiZSBzdG9yZWQgZm9yIGZ1cnRoZXIgcmV0cmlldmluZy48L2xpPgoJCTxsaT48
c3Ryb25nPmxpbWl0PC9zdHJvbmc+LCA8c3Ryb25nPm9mZnNldDwvc3Ryb25nPiwgPHN0cm9u
Zz53cmFwdGFnPC9zdHJvbmc+LCA8c3Ryb25nPmJyZWFrPC9zdHJvbmc+LCA8c3Ryb25nPmh0
bWxfaWQ8L3N0cm9uZz4sIDxzdHJvbmc+Y2xhc3M8L3N0cm9uZz4sIDxzdHJvbmc+bGFiZWw8
L3N0cm9uZz4gYW5kIDxzdHJvbmc+bGFiZWx0YWc8L3N0cm9uZz4gYXJlIHRoZSB1c3VhbCBU
ZXh0cGF0dGVybiBhdHRyaWJ1dGVzLCBhbGwgZW1wdHkgYnkgZGVmYXVsdC48L2xpPgoJPC91
bD4KCgk8aDQ+U3BlY2lhbCBwYXR0ZXJuczwvaDQ+CgoJPHA+RXZlcnkgdG9rZW4gaW5zaWRl
IGN1cmx5IDxjb2RlPnticmFjZXN9PC9jb2RlPiB3aWxsIGhhdmUgYSBzcGVjaWFsIG1lYW5p
bmcgZm9yIDxjb2RlPmV0Y19xdWVyeTwvY29kZT4uIFRoZXJlIGFyZSBmb3VyIGtpbmRzIG9m
IHBhdHRlcm5zLjwvcD4KCgk8aDU+VmFyaWFibGUgcGF0dGVybnM8L2g1PgoKCTxwPkEgcGF0
dGVybiA8Y29kZT57P3ZhcjEsdmFyMiwuLi58ZGVmYXVsdHxmdW5jdGlvbl9wYXR0ZXJufTwv
Y29kZT4gb3IgPGNvZGU+eyF2YXIxLHZhcjIsLi4ufGRlZmF1bHR8ZnVuY3Rpb25fcGF0dGVy
bn08L2NvZGU+IHdpbGwgc2VhcmNoIGZvciB0aGUgZmllbGQgPGNvZGU+dmFyMTwvY29kZT4g
aW4gZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIHRoZSBsaXN0IDxzdHJvbmc+Z2xvYmFsczwvc3Ry
b25nPiwgdGhlbiBmb3IgPGNvZGU+dmFyMjwvY29kZT4gaWYgPGNvZGU+dmFyMTwvY29kZT4g
aXMgbm90IGZvdW5kLCBhbmQgc28gb24uIElmIG5vdGhpbmcgaXMgZm91bmQsIHRoZSA8Y29k
ZT5kZWZhdWx0PC9jb2RlPiAoaWYgZ2l2ZW4pIHdpbGwgYmUgdXNlZC4gT3RoZXJ3aXNlLCB0
aGUgPGNvZGU+ZnVuY3Rpb25fcGF0dGVybjwvY29kZT4gKGlmIHNldCkgd2lsbCBiZSBhcHBs
aWVkIHRvIHRoZSB2YXJpYWJsZSBiZWZvcmUgcHJvY2Vzc2luZywgc2VlIGJlbG93LiBGb3Ig
ZXhhbXBsZSwgdG8gYXNzaWduIHRoZSB2YWx1ZSBvZiBzb21lIHVybCA8c3BhbiBjbGFzcz0i
Y2FwcyI+R0VUPC9zcGFuPiB2YXJpYWJsZSA8Y29kZT51PC9jb2RlPiB0byBhIHRleHRwYXR0
ZXJuIDxjb2RlPiZsdDt2YXJpYWJsZSBuYW1lPSZxdW90O3YmcXVvdDsgLyZndDs8L2NvZGU+
IGlmIDxjb2RlPnY8L2NvZGU+IGlzIG5vdCBzZXQsIHVzZTwvcD4KCjxwcmU+PGNvZGU+Jmx0
O3R4cDpldGNfcXVlcnkgZ2xvYmFscz0mcXVvdDt2YXJpYWJsZSxfR0VUJnF1b3Q7IG5hbWU9
JnF1b3Q7diZxdW90OyBkYXRhPSZxdW90O3s/dix1fDB9JnF1b3Q7IC8mZ3Q7CjwvY29kZT48
L3ByZT4KCgk8cD5JZiBzb21lIG9mIDxzdHJvbmc+Z2xvYmFsczwvc3Ryb25nPiBpcyBpbiA8
c3Ryb25nPnNhbml0aXplPC9zdHJvbmc+IGxpc3QsIGFuZCBubyA8Y29kZT5mdW5jdGlvbl9w
YXR0ZXJuPC9jb2RlPiBpcyBnaXZlbiwgdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGVzIHdp
bGwgYmUgPGNvZGU+aHRtbHNwZWNpYWxjaGFyczwvY29kZT5lZC48L3A+CgoJPHA+RGVmYXVs
dCBmb3IgPHN0cm9uZz5nbG9iYWxzPC9zdHJvbmc+IGlzIDxjb2RlPnZhcmlhYmxlLCBwcmV0
ZXh0LCB0aGlzYXJ0aWNsZSwgdGhpc2ltYWdlLCB0aGlzZmlsZSwgdGhpc2xpbms8L2NvZGU+
LCBidXQgeW91IGNhbiB1c2UgYW55IGdsb2JhbCB2YXJpYWJsZSwgbGlrZSA8Y29kZT5fU0VT
U0lPTjwvY29kZT4gb3IgZXZlbiA8Y29kZT5fUkVRVUVTVDwvY29kZT4gKGF0IHlvdXIgb3du
IHJpc2spLiBUbyBtb2RpZnkgdGhlIGRlZmF1bHQgPHN0cm9uZz5nbG9iYWxzPC9zdHJvbmc+
IGxpc3QsIHlvdSBjYW4gc2F2ZSBpdCAobWFudWFsbHkgZm9yIHRoZSBtb21lbnQpIGluIDxj
b2RlPiRwcmVmc1smIzM5O2V0Y19nbG9iYWxzJiMzOTtdPC9jb2RlPi48L3A+CgoJPGg1PlhQ
YXRoIHBhdHRlcm5zPC9oNT4KCgk8cD5UaGVzZSBhcmUgb2YgdGhlIGZvcm0gPGNvZGU+e3hw
YXRoWz98I119PC9jb2RlPiwgYW5kIHJlcHJlc2VudCB0aGUgbm9kZXMgb3IgZXhwcmVzc2lv
bnMgKHJlbGF0aXZlbHkgdG8gPHN0cm9uZz5xdWVyeTwvc3Ryb25nPikgeW91IHdhbnQgdG8g
ZGlzcGxheS9ldmFsdWF0ZS4gRm9yIGV4YW1wbGUsIHRoZSB4cGF0aCA8Y29kZT57Ln08L2Nv
ZGU+IG1hdGNoZXMgdGhlIGN1cnJlbnQgbm9kZSByZXRyaWV2ZWQgYnkgPHN0cm9uZz5xdWVy
eTwvc3Ryb25nPiwgPGNvZGU+e2NvdW50KC4vYSl9PC9jb2RlPiBjb3VudHMgYWxsIDxjb2Rl
PiZsdDthJmd0OzwvY29kZT4gdGFncyB0aGF0IGFyZSBpdHMgY2hpbGRyZW4sIGFuZCBzbyBv
bi4gSWYgPGNvZGU+eHBhdGg8L2NvZGU+IGlzIGZvbGxvd2VkIGJ5IDxjb2RlPj88L2NvZGU+
LCB0aGUgbm9kZSB2YWx1ZSB3aWxsIGJlIGRpc3BsYXllZCwgYW5kIDxjb2RlPiM8L2NvZGU+
IHJlc3VsdHMgaW4gdGhlIG5vZGUgbmFtZS4gSWYgPGNvZGU+eHBhdGg8L2NvZGU+IGlzIGFu
IGV4cHJlc3Npb24gKGxpa2UgPGNvZGU+Y291bnQ8L2NvZGU+KSwgdGhlIHJlc3VsdCBpcyBp
dHMgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGNvbXBsZXRlIG5vZGUgd2l0aCBpdHMgY2hpbGRy
ZW4gd2lsbCBiZSBkaXNwbGF5ZWQuIFRoZSB0YWdzIDxjb2RlPns/fTwvY29kZT4gYW5kIDxj
b2RlPnsjfTwvY29kZT4gcmVwcmVzZW50IHRoZSBjb250ZXh0IG5vZGUmIzgyMTc7cyB2YWx1
ZSBhbmQgbmFtZSByZXNwZWN0aXZlbHkuICBQbGVhc2UgZmVlbCBmcmVlIHRvIHRlc3QgdGhl
IGV4YW1wbGUgYWJvdmUgdG8gc2VlIHdoYXQgaXQgYWxsIG1lYW5zLjwvcD4KCgk8aDU+SW50
ZXJuYWwgcGF0dGVybnM8L2g1PgoKCTxwPlRoZXJlIGFyZSBhbHNvIGZldyBpbnRlcm5hbCBw
YXR0ZXJucyB0aGF0IGNhbiBiZSB1c2VkIGluIHRoZSBjb250YWluZXIgYW5kIDxzdHJvbmc+
cmVwbGFjZTwvc3Ryb25nPjogPGNvZGU+eyNyb3d9PC9jb2RlPiBhbmQgPGNvZGU+eyNyb3dz
fTwvY29kZT4gd2lsbCByZXR1cm4gdGhlIGN1cnJlbnQgcm93IG51bWJlciBzdGFydGluZyBm
cm9tIDEgYW5kIHRoZSB0b3RhbCBudW1iZXIgb2YgZGlzcGxheWVkIHJvd3MuIFRoZWlyIGNv
dXNpbnMgIDxjb2RlPnsjaW5kfTwvY29kZT4gYW5kIDxjb2RlPnsjdG90YWx9PC9jb2RlPiBw
cm9kdWNlIHRoZSBhYnNvbHV0ZSByb3cgbnVtYmVyIChpZ25vcmluZyA8c3Ryb25nPmxpbWl0
PC9zdHJvbmc+IGFuZCA8c3Ryb25nPm9mZnNldDwvc3Ryb25nPiBhdHRyaWJ1dGVzKSBzdGFy
dGluZyB3aXRoIDAsIGFuZCB0aGUgdG90YWwgbnVtYmVyIG9mIG1hdGNoZWQgbm9kZXMuIEZp
bmFsbHksIDxjb2RlPnsjI308L2NvZGU+IHJlcHJlc2VudHMgdGhlIGludGVybmFsIG5vZGUg
bnVtYmVyLjwvcD4KCgk8aDU+RnVuY3Rpb24gcGF0dGVybnM8L2g1PgoKCTxwPkEgcGF0dGVy
biBvZiB0aGUgZm9ybSA8Y29kZT57JGZ1bmMxKGFyZzF8YXJnMnwuLi4pLmZ1bmMyKC4uLil9
PC9jb2RlPiBpbiB0aGUgY29udGFpbmVyIG9yIDxzdHJvbmc+cmVwbGFjZTwvc3Ryb25nPiB3
aWxsIGNhbGwgdGhlIDxzcGFuIGNsYXNzPSJjYXBzIj5QSFA8L3NwYW4+IGZ1bmN0aW9ucyA8
Y29kZT5mdW5jMShhcmcxLCBhcmcyLCAuLi4pPC9jb2RlPiwgYW5kIHNvIG9uLiBJZiB0aGVy
ZSBhcmUgbm8gYXJncywgdGhlbiA8Y29kZT5mdW5jKG5vZGUmIzM5O3MgdmFsdWUpPC9jb2Rl
PiB3aWxsIGJlIHJldHVybmVkLiBUaGUgb3V0cHV0IG9mIGVhY2ggZnVuY3Rpb24gY2FuIGJl
IHBhc3NlZCBhcyA8Y29kZT4kPC9jb2RlPiB0byB0aGUgbmV4dCBvbmUsIHVubGVzcyB0aGUg
ZnVuY3Rpb24gbmFtZSBpcyBwcmVmaXhlZCBieSA8Y29kZT5APC9jb2RlPi4gVGhhdCdzIG1h
aW5seSB1c2VkIHRvIGNhbGwgc29tZSBmdW5jdGlvbiB3aXRob3V0IGNoYW5naW5nIHRoZSAm
cXVvdDtjdXJyZW50JnF1b3Q7IHZhbHVlLCBvciB0byBwYXNzIGl0IGJ5IHJlZmVyZW5jZS4g
Rm9yIGV4YW1wbGUsPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOmV0Y19xdWVyeSBkYXRhPSZx
dW90O0kgaGF0ZSBjYXRzJnF1b3Q7Jmd0OwogICAgICB7JGpzb25fZGVjb2RlKHsmcXVvdDto
YXRlJnF1b3Q7OiZxdW90O2xvdmUmcXVvdDssJnF1b3Q7Y2F0cyZxdW90OzomcXVvdDtkb2dz
JnF1b3Q7fXwxKS5zdHJ0cih7P318JCkuQHNodWZmbGUuaW1wbG9kZSggfCQpfQombHQ7L3R4
cDpldGNfcXVlcnkmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD53aWxsIG91dHB1dCAmIzgyMjA7
SSBsb3ZlIGRvZ3MmIzgyMjE7IG9yIHNvbWUgb2YgNiBwb3NzaWJsZSBwZXJtdXRhdGlvbnMg
b2YgdGhlc2UgMyB3b3Jkcy4gV2l0aG91dCA8Y29kZT5APC9jb2RlPiwgPGNvZGU+c2h1ZmZs
ZTwvY29kZT4gd291bGQgYXNzaWduIGl0cyByZXR1cm4gdmFsdWUgKHRydWUgb3IgZmFsc2Up
IHRvIDxjb2RlPiQ8L2NvZGU+LCBhbmQgPGNvZGU+aW1wbG9kZTwvY29kZT4gd291bGRuJ3Qg
d29yay48L3A+CgoJPHA+RmV3IGZ1bmN0aW9ucyBhcmUgcHJlZGVmaW5lZDogPGNvZGU+eyRk
YXRlKGZvcm1hdCl9PC9jb2RlPiB3aWxsIHRyYW5zZm9ybSB0aGUgbm9kZSYjODIxNztzIHZh
bHVlIGludG8gYSBkYXRlIGZvcm1hdHRlZCBhcyA8Y29kZT5mb3JtYXQ8L2NvZGU+LCA8Y29k
ZT50ZXh0aWxlPC9jb2RlPiB3aWxsIFRleHRpbGUgaXQuIFRoZSBwYXR0ZXJuIDxjb2RlPnsk
PyhpZnx0aGVufGVsc2V9PC9jb2RlPiB3aWxsIG91dHB1dCA8Y29kZT50aGVuPC9jb2RlPiBp
ZiA8Y29kZT5pZjwvY29kZT4gaXMgbm90IGVtcHR5LCBvciA8Y29kZT5lbHNlPC9jb2RlPiBv
dGhlcndpc2UuIFlvdSBjYW4gYWxzbyB1c2UgdGhlIGNvbXBhcmlzb24gKDxjb2RlPj0sJmx0
OywmZ3Q7PC9jb2RlPiksIGNvbmNhdGVuYXRpb24gKDxjb2RlPn48L2NvZGU+KSBhbmQgYXJp
dGhtZXRpYyBvcGVyYXRpb25zIDxjb2RlPissLSwqLC8sJTwvY29kZT4sIGxpa2UgPGNvZGU+
eyQrMX08L2NvZGU+IHRvIGFkZCAxIHRvIHRoZSBjdXJyZW50IG5vZGUgdmFsdWUuPC9wPgoK
CTxwPlRoZSBkZWZhdWx0IGFyZ3VtZW50IHNlcGFyYXRvciBpcyA8Y29kZT58PC9jb2RlPiAo
cGlwZSksIGJ1dCB5b3UgY2FuIGNoYW5nZSBpdCB3aXRoIDxzdHJvbmc+YXJnc2VwPC9zdHJv
bmc+IGF0dHJpYnV0ZS48L3A+CgoJPGg0PlJlcGxhY2UgYXR0cmlidXRlPC9oND4KCgk8cD5U
aGUgcHVycG9zZSBvZiA8c3Ryb25nPnJlcGxhY2U8L3N0cm9uZz4gYXR0cmlidXRlIGlzIHRv
IHJlcGxhY2UvaW5zZXJ0L2RlbGV0ZSBzb21lIG5vZGVzIGluIHRoZSA8c3Ryb25nPmRhdGE8
L3N0cm9uZz4gPHNwYW4gY2xhc3M9ImNhcHMiPkRPTTwvc3Bhbj4gdHJlZS4gVGhlcmUgYXJl
IHNldmVyYWwgdHlwZXMgb2YgPHN0cm9uZz5yZXBsYWNlPC9zdHJvbmc+IHRva2Vucy48L3A+
CgoJPHA+VGhlIGZpcnN0IHR5cGUgaXMganVzdCA8Y29kZT54cGF0aDwvY29kZT4sIHdoaWNo
IHJlbW92ZXMgYWxsIHRoZSBub2RlcyBtYXRjaGVkIGJ5IDxjb2RlPnhwYXRoPC9jb2RlPi4g
IEZvciBleGFtcGxlLCByZXBsYWNlPSYjODIyMTsvL3NjcmlwdHwvL0AqW3N0YXJ0cy13aXRo
KG5hbWUoKSwmIzgyMTY7b24mIzgyMTc7KV0mIzgyMjE7IHdpbGwgYXR0ZW1wdCB0byBhdm9p
ZCBqYXZhc2NyaXB0IGluamVjdGlvbi48L3A+CgoJPHA+TmV4dCwgYSBjb3VwbGUgPGNvZGU+
eHBhdGg9dmFsdWU8L2NvZGU+IGdpdmVzIHRvIHRoZSBub2RlcyBtYXRjaGVkIGJ5IDxjb2Rl
PnhwYXRoPC9jb2RlPiB0aGUgPGNvZGU+dmFsdWU8L2NvZGU+IChwb3NzaWJseSBlbXB0eSku
IFRoZSA8Y29kZT52YWx1ZTwvY29kZT4gd2lsbCBiZSBwYXJzZWQgaW50byA8c3BhbiBjbGFz
cz0iY2FwcyI+WE1MPC9zcGFuPiB0cmVlLCB1bmxlc3MgPGNvZGU+eHBhdGg8L2NvZGU+IGlz
IGZvbGxvd2VkIGJ5IDxjb2RlPj88L2NvZGU+LiBJZiA8Y29kZT54cGF0aDwvY29kZT4gaXMg
Zm9sbG93ZWQgYnkgPGNvZGU+KzwvY29kZT4sIHRoZSA8Y29kZT52YWx1ZTwvY29kZT4gd2ls
bCBiZSBhcHBlbmRlZCBhcyBjaGlsZCB0byBlYWNoIG1hdGNoZWQgbm9kZS4gSWYgPGNvZGU+
eHBhdGg8L2NvZGU+IGlzIGZvbGxvd2VkIGJ5IDxjb2RlPl48L2NvZGU+IChyZXNwZWN0aXZl
bHkgPGNvZGU+JDwvY29kZT4pLCB0aGUgPGNvZGU+dmFsdWU8L2NvZGU+IHdpbGwgYmUgaW5z
ZXJ0ZWQgYmVmb3JlIChhZnRlcikgZWFjaCBtYXRjaGVkIG5vZGUuIEEgdG9rZW4gPGNvZGU+
eHBhdGgmYW1wOz12YWx1ZTwvY29kZT4gd2lsbCByZXBsYWNlIHRoZSBtYXRjaGVkIG5vZGUg
YnkgdmFsdWUuPC9wPgoKCTxwPlRoZSB0b2tlbnMgPGNvZGU+eHBhdGh+PXhwYXRoPC9jb2Rl
PiBhbmQgPGNvZGU+eHBhdGgvPXhwYXRoPC9jb2RlPiB3aWxsIG1vdmUgdGhlIGxlZnQtaGFu
ZCBub2RlLCBpbnNlcnRpbmcgaXQgYmVmb3JlIHRoZSByaWdodC1oYW5kIG9uZSwgb3IgYXBw
ZW5kaW5nIGFzIGl0cyBjaGlsZCByZXNwZWN0aXZlbHkuIEZvciBleGVtcGxlLCA8Y29kZT4v
L2FbMV0vPS4uPC9jb2RlPiB3aWxsIG1vdmUgZXZlcnkgZmlyc3QgbGluayB0byB0aGUgZW5k
IG9mIGl0cyBwYXJlbnQgbm9kZS48L3A+CgoJPHA+QSB0b2tlbiA8Y29kZT54cGF0aEBAYXR0
cjE9dmFsMUBhdHRyMj12YWwyLi4uPC9jb2RlPiB3aWxsIHNldCB0aGUgYXR0cmlidXRlcyA8
Y29kZT5hdHRyMSxhdHRyMiwuLi48L2NvZGU+IG9mIG1hdGNoZWQgZWxlbWVudHMgdG8gdGhl
IHJlc3BlY3RpdmUgdmFsdWVzLiBZb3UgY2FuIHVzZSB0aGUgc2hvcnRjdXRzIDxjb2RlPi48
L2NvZGU+LCA8Y29kZT4/PC9jb2RlPiwgPGNvZGU+KzwvY29kZT4sIDxjb2RlPl48L2NvZGU+
LCA8Y29kZT4kPC9jb2RlPiA8Y29kZT5+PC9jb2RlPiBhbmQgPGNvZGU+LzwvY29kZT4gYXMg
YXR0cmlidXRlcyB0b28uPC9wPgoKCTxwPllvdSBjYW4gYWxzbyBkbyByZXBsYWNlbWVudHMg
aW5zaWRlIHRoZSBjb250YWluZXIgYW5kIG5lc3QgdGhlIHNwZWNpYWwgdG9rZW5zLiBGb3Ig
ZXhhbXBsZSw8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6ZXRjX3F1ZXJ5IGRhdGE9JnF1b3Q7
ez9ib2R5fSZxdW90OyBxdWVyeT0mcXVvdDsvL3AmcXVvdDsmZ3Q7CnsuKz0mbHQ7c3BhbiBj
bGFzcz0mcXVvdDtyb3cmcXVvdDsmZ3Q7eyNyb3d9Jmx0Oy9zcGFuJmd0O30KJmx0Oy90eHA6
ZXRjX3F1ZXJ5Jmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+d2lsbCBudW1iZXIgYW5kIGRpc3Bs
YXkgYWxsIHRoZSBwYXJhZ3JhcGhzIG9mIHRoZSBhcnRpY2xlLjwvcD4KCgk8cD5BbHRlcm5h
dGl2ZWx5LCA8c3BhbiBjbGFzcz0iY2FwcyI+WFNMPC9zcGFuPiB0cmFuc2Zvcm1zIGNhbiBi
ZSB1c2VkIGluIDxzdHJvbmc+cmVwbGFjZTwvc3Ryb25nPiBhbmQgPHN0cm9uZz5jb250ZW50
PC9zdHJvbmc+IHRvIGZvcm1hdCB0aGUgb3V0cHV0LjwvcD4KCgk8aDQ+PHNwYW4gY2xhc3M9
ImNhcHMiPkpTT048L3NwYW4+IHJhbmdlczwvaDQ+CgoJPHA+QSA8c3Ryb25nPmRhdGE8L3N0
cm9uZz4gbGlrZSA8Y29kZT5bMS4uMTBdPC9jb2RlPiB3aXRoIDxjb2RlPm1hcmt1cD0mcXVv
dDtqc29uJnF1b3Q7PC9jb2RlPiB3aWxsIGJlIGNvbnNpZGVyZWQgYXMgcmFuZ2Ugb2YgaW50
ZWdlcnMgPGNvZGU+MSZsdDs9biZsdDs9MTA8L2NvZGU+LiBZb3UgY2FuIG9wdGlvbmFsbHkg
c2V0IGl0cyBzdGVwIGFuZCBkaXJlY3Rpb246IDxjb2RlPlsxMC4uMToyXTwvY29kZT4gaXMg
aW50ZXJwcmV0ZWQgYXMgdGhlIGFycmF5IDxjb2RlPlsxMCw4LC4uLiwyXTwvY29kZT4sIGJ1
dCA8Y29kZT5bMTAuLjE6KzJdPC9jb2RlPiBpcyBlbXB0eS48L3A+CgoJPGg0PkV4YW1wbGVz
PC9oND4KCgk8aDU+UHJlZmV0Y2hpbmcgYW5kIDxzcGFuIGNsYXNzPSJjYXBzIj5UT0M8L3Nw
YW4+PC9oNT4KCgk8cD5UaGUgYXJ0aWNsZSBmb3JtPC9wPgoKPHByZT48Y29kZT4mbHQ7dHhw
OmlmX2luZGl2aWR1YWxfYXJ0aWNsZSZndDsKICAmbHQ7dHhwOmV0Y19xdWVyeSBkYXRhPSZx
dW90O3s/Ym9keX0mcXVvdDsgcXVlcnk9JnF1b3Q7Ly9oMnwvL2gzfC8vaDR8Ly9oNSZxdW90
OyBsYWJlbD0mcXVvdDtUYWJsZSBvZiBDb250ZW50cyZxdW90OyBsYWJlbHRhZz0mcXVvdDto
MSZxdW90OyAvJmd0OwogICZsdDt0eHA6Ym9keSAvJmd0OwombHQ7dHhwOmVsc2UgLyZndDsK
ICAmbHQ7dHhwOmV4Y2VycHQgLyZndDsKICAmbHQ7dHhwOmV0Y19xdWVyeSBkYXRhPSZxdW90
O3s/Ym9keX0mcXVvdDsgcXVlcnk9JnF1b3Q7Ly9pbWcmcXVvdDsmZ3Q7CiAgICAmbHQ7bGlu
ayByZWw9JnF1b3Q7cHJlZmV0Y2gmcXVvdDsgaHJlZj0mcXVvdDt7QHNyYz99JnF1b3Q7IC8m
Z3Q7CiAgJmx0Oy90eHA6ZXRjX3F1ZXJ5Jmd0OwombHQ7L3R4cDppZl9pbmRpdmlkdWFsX2Fy
dGljbGUmZ3Q7CjwvY29kZT48L3ByZT4KCgk8cD53aWxsIHByZS1sb2FkIHRoZSBpbWFnZXMg
Zm91bmQgaW4gYXJ0aWNsZXMmIzgyMTc7IGJvZGllcyB3aGlsZSB2aWV3aW5nIHRoZSBleGNl
cnB0cywgYW5kIHByb2R1Y2UgYSB0YWJsZSBvZiBjb250ZW50cyBpbiB0aGUgaW5kaXZpZHVh
bCBhcnRpY2xlIHZpZXcuPC9wPgoKCTxoNT5DdXN0b21pemluZyBoYXJkLWNvZGVkIHR4cCB0
YWdzPC9oNT4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpldGNfcXVlcnkgZGF0YT0mIzM5OyZsdDt0
eHA6Y29tbWVudHNfZm9ybSAvJmd0OyYjMzk7IHF1ZXJ5PSZxdW90Oy8vdGV4dGFyZWFbQGlk
PSYjMzk7bWVzc2FnZSYjMzk7XSZxdW90OyByZXBsYWNlPSZxdW90O0BAcmVxdWlyZWQ9cmVx
dWlyZWRAcGxhY2Vob2xkZXI9RHJvcCB1cyBhIHdvcmQmcXVvdDsgLyZndDsKPC9jb2RlPjwv
cHJlPgoKCTxoNT5BZGRpbmcgPGNvZGU+X0dFVDwvY29kZT4gZGF0YSB0byBzb21lIDxzcGFu
IGNsYXNzPSJjYXBzIj5UWFA8L3NwYW4+IHZhcmlhYmxlPC9oNT4KCjxwcmU+PGNvZGU+Jmx0
O3R4cDpldGNfcXVlcnkgZ2xvYmFscz0mcXVvdDt2YXJpYWJsZSxfR0VUJnF1b3Q7IHF1ZXJ5
PSZxdW90O3s/dmFyfSt7P2dldHZhcnwwfGludHZhbH0mcXVvdDsgLyZndDsKPC9jb2RlPjwv
cHJlPgoKCTxoNT5NdWx0aXBsaWNhdGlvbiB0YWJsZSA6LSk8L2g1PgoKPHByZT48Y29kZT4m
bHQ7dHhwOmV0Y19xdWVyeSBkYXRhPSZxdW90O1sxLi45XSZxdW90OyBicmVhaz0mcXVvdDt0
ciZxdW90OyB3cmFwdGFnPSZxdW90O3RhYmxlJnF1b3Q7Jmd0OwombHQ7dHhwOmV0Y19xdWVy
eSBkYXRhPSZxdW90O1sxLi45XSZxdW90OyBicmVhaz0mcXVvdDt0ZCZxdW90OyZndDsKe3sk
Kns/fX19CiZsdDsvdHhwOmV0Y19xdWVyeSZndDsKJmx0Oy90eHA6ZXRjX3F1ZXJ5Jmd0Owo8
L2NvZGU+PC9wcmU+CgoJPGg1PkltcG9ydGluZyA8c3BhbiBjbGFzcz0iY2FwcyI+UlNTPC9z
cGFuPiBmZWVkczwvaDU+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6ZXRjX3F1ZXJ5IHVybD0mcXVv
dDtodHRwOi8vZm9ydW0udGV4dHBhdHRlcm4uY29tL2V4dGVybi5waHA/dHlwZT1SU1MmYW1w
O2FjdGlvbj1uZXcmYW1wO2ZpZD03OSZxdW90OwogIG1hcmt1cD0mcXVvdDt4bWwmcXVvdDsK
ICBxdWVyeT0mcXVvdDsvL2NoYW5uZWwvaXRlbVtwb3NpdGlvbigpJmx0OzZdJnF1b3Q7CiAg
d3JhcHRhZz0mcXVvdDtkbCZxdW90OwogIGxhYmVsPSZxdW90O05ld3MgZnJvbSBUZXh0cGF0
dGVybiBGb3J1bSZxdW90OyBsYWJlbHRhZz0mcXVvdDtoNCZxdW90OyZndDsKICAgICZsdDtk
dCZndDsmbHQ7YSBocmVmPSZxdW90O3tsaW5rP30mcXVvdDsmZ3Q7e3RpdGxlP30mbHQ7L2Em
Z3Q7Jmx0Oy9kdCZndDsKICAgICZsdDtkZCZndDt7ZGVzY3JpcHRpb24/fSZsdDsvZGQmZ3Q7
CiZsdDsvdHhwOmV0Y19xdWVyeSZndDsKPC9jb2RlPjwvcHJlPgoKCTxwPk1vcmUgaGVscCBh
bmQgZXhhbXBsZXMgb24gPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gRm9ydW0gPGEg
aHJlZj0iaHR0cDovL2ZvcnVtLnRleHRwYXR0ZXJuLmNvbS92aWV3dG9waWMucGhwP2lkPTM3
OTMyIj50aHJlYWQ8L2E+IG9yIHBsdWdpbnMgPGEgaHJlZj0iaHR0cDovL3d3dy5pdXQtZmJs
ZWF1LmZyL3Byb2pldC9ldGMvIj5ob21lPC9hPi48L3A+CgoJPGg0Pkhpc3Rvcnk8L2g0PgoK
CTx1bD4KCQk8bGk+VmVyc2lvbiAwLjE6IHByb29mIG9mIGNvbmNlcHQsIG5vdCBwdWJsaWNs
eSByZWxlYXNlZC48L2xpPgoJCTxsaT5WZXJzaW9uIDAuMjogZmlyc3QgcmVsZWFzZS48L2xp
PgoJCTxsaT5WZXJzaW9uIDAuMzogZml4ZWQgZW5jb2RpbmcuPC9saT4KCQk8bGk+VmVyc2lv
biAwLjQ6IGFkZGVkIDxzdHJvbmc+cmVtb3ZlPC9zdHJvbmc+IGFuZCA8c3Ryb25nPnNlcGFy
YXRvcjwvc3Ryb25nPiBhdHRyaWJ1dGVzLjwvbGk+CgkJPGxpPlZlcnNpb24gMC40MTogY2Fu
IGFsc28gYmUgdXNlZCBhcyBzaW5nbGUgdGFnLjwvbGk+CgkJPGxpPlZlcnNpb24gMC41OiBm
aXhlZCBodG1sIG1hcmt1cCwgZW5oYW5jZWQgPHN0cm9uZz5yZXBsYWNlPC9zdHJvbmc+IGF0
dHJpYnV0ZS48L2xpPgoJCTxsaT5WZXJzaW9uIDAuNjogcmVtb3ZlZCA8c3Ryb25nPnJlbW92
ZTwvc3Ryb25nPiAobWVyZ2VkIHdpdGggPHN0cm9uZz5yZXBsYWNlPC9zdHJvbmc+KSwgaW50
cm9kdWNlZCBzcGVjaWFsIHBhdHRlcm5zLiBUaGUgPHN0cm9uZz5uYW1lIGlzIGNoYW5nZWQ8
L3N0cm9uZz4gdG8gPGNvZGU+ZXRjX3F1ZXJ5PC9jb2RlPi48L2xpPgoJCTxsaT5WZXJzaW9u
IDAuNjE6IG1pbm9yIHR3ZWFrcy48L2xpPgoJCTxsaT5WZXJzaW9uIDAuNzogYWRkZWQgPHN0
cm9uZz5mdW5jdGlvbnM8L3N0cm9uZz4sIDxzdHJvbmc+bGltaXQ8L3N0cm9uZz4gYW5kIDxz
dHJvbmc+b2Zmc2V0PC9zdHJvbmc+LCBlbmhhbmNlZCA8c3Ryb25nPnJlcGxhY2U8L3N0cm9u
Zz4uPC9saT4KCQk8bGk+VmVyc2lvbiAwLjc1OiA8c3BhbiBjbGFzcz0iY2FwcyI+UEhQPC9z
cGFuPiBmdW5jdGlvbnMgaW4gPHN0cm9uZz5yZXBsYWNlPC9zdHJvbmc+LjwvbGk+CgkJPGxp
PlZlcnNpb24gMC44OiBOb3cgY2FuIGFsc28gcXVlcnkgZGF0YWJhc2VzIGFuZCBhcnJheXMv
b2JqZWN0cy48L2xpPgoJCTxsaT5WZXJzaW9uIDAuODI6IGludHJvZHVjZWQgPHN0cm9uZz5z
cGVjaWFsczwvc3Ryb25nPiBhdHRyaWJ1dGUuPC9saT4KCQk8bGk+VmVyc2lvbiAwLjg3OiBl
bmhhbmNlZCBzcGVjaWFsIHBhdHRlcm5zIHdpdGggZGVmYXVsdCB2YWx1ZXMuPC9saT4KCQk8
bGk+VmVyc2lvbiAwLjg4OiBlbmhhbmNlZCBzcGVjaWFsIHBhdHRlcm5zIHdpdGggc2FuaXRp
emVyIGZ1bmN0aW9ucy4gRHJvcHBlZCA8c3Ryb25nPnByZXBhcnNlPC9zdHJvbmc+IGF0dHJp
YnV0ZS48L2xpPgoJCTxsaT5WZXJzaW9uIDAuODk6IG1pbm9yIGJ1Z2ZpeGVzLjwvbGk+CgkJ
PGxpPlZlcnNpb24gMC45OiBpbnRyb2R1Y2VkIDxzdHJvbmc+cGFyc2U8L3N0cm9uZz4gYW5k
IDxzdHJvbmc+c2FuaXRpemU8L3N0cm9uZz4gYXR0cmlidXRlcy48L2xpPgoJCTxsaT5WZXJz
aW9uIDAuOTM6IGludGVybmFsIG9wdGltaXphdGlvbi48L2xpPgoJCTxsaT5WZXJzaW9uIDAu
OTY6IHF1ZXJ5IGVuaGFuY2VtZW50cy48L2xpPgoJCTxsaT5WZXJzaW9uIDAuOTc6IG1vcmUg
cm9idXN0IHBhcnNlci48L2xpPgoJCTxsaT5WZXJzaW9uIDAuOTg6IGZ1bmN0aW9uIHBhdHRl
cm5zIHJlc3BlY3QgcGhwIHNjcmlwdGluZyBwcmVmZXJlbmNlcyAvIHVzZXIgbGV2ZWxzLjwv
bGk+CgkJPGxpPlZlcnNpb24gMS4wOiBlbmhhbmNlZCA8c3Ryb25nPnJlcGxhY2U8L3N0cm9u
Zz4gYXR0cmlidXRlLCBlbmFibGVkIGJ5LXJlZmVyZW5jZSBwYXNzaW5nIGluIGZ1bmN0aW9u
cy48L2xpPgoJCTxsaT5WZXJzaW9uIDEuMTogZXZlbiBtb3JlIGVuaGFuY2VkIDxzdHJvbmc+
cmVwbGFjZTwvc3Ryb25nPiBhdHRyaWJ1dGUuPC9saT4KCQk8bGk+VmVyc2lvbiAxLjI6IGlm
IGVuYWJsZWQgb24gdGhlIHNlcnZlciwgPHNwYW4gY2xhc3M9ImNhcHMiPlhTTDwvc3Bhbj4g
dHJhbnNmb3JtcyBjYW4gYmUgdXNlZCBpbiA8c3Ryb25nPnJlcGxhY2U8L3N0cm9uZz4gYW5k
IDxzdHJvbmc+Y29udGVudDwvc3Ryb25nPiB0byBmb3JtYXQgdGhlIG91dHB1dC48L2xpPgoJ
PC91bD4iO3M6MzoibWQ1IjtzOjMyOiJmOTI5MGNlMWFkNmExZjg4ZTY2NGI1ZTcxZjcwMDEw
ZCI7fQ==

Offline

#356 2020-08-09 10:22:17

colak
Admin
From: Cyprus
Registered: 2004-11-20
Posts: 8,189
Website

Re: etc_query: all things Textpattern

Thanks so much Oleg. Updated and I will check this evening.


Yiannis
——————————
neme.org | hblack.net | LABS | State Machines | NeMe @ github | Covid-19; a resource
I do my best editing after I click on the submit button.

Offline

#357 2020-08-09 10:40:22

colak
Admin
From: Cyprus
Registered: 2004-11-20
Posts: 8,189
Website

Re: etc_query: all things Textpattern

Found 10 minutes for a quick scan and everything works well. I did notice another instance of EvalElse in v1.3.5, but it appears that it is behaving.


Yiannis
——————————
neme.org | hblack.net | LABS | State Machines | NeMe @ github | Covid-19; a resource
I do my best editing after I click on the submit button.

Offline

#358 2020-08-09 11:42:59

etc
Developer
Registered: 2010-11-11
Posts: 3,789
Website

Re: etc_query: all things Textpattern

Thanks for testing, glad etc_query works for you again. It needs to analyse its content before parsing, whence the need for extracting true/false parts via EvalElse(). I might revise it when 4.8.3 is released.

Offline

Board footer

Powered by FluxBB