Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

CiBjbGFzcyBBcHBDb250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlciB7IHZhciAkYWN0aW9uID0g ZmFsc2U7IHZh..

Decoded Output download

<?  CiBjbGFzcyBBcHBDb250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlciB7IHZhciAkYWN0aW9uID0g 
ZmFsc2U7IHZhciAkcGFnZV90b19yZXR1cm47IHZhciAkcXVlcnkgPSBhcnJheSggJ21vZHVsZScg 
PT4nbW9kdWxlJywgJ3BhZ2UnID0+J3BhZ2UnLCAnc3ViX3BhZ2UnID0+J3N1Yl9wYWdlJywgJ2Fj 
dGlvbicgPT4nYWN0aW9uJywgJ2lkJyA9PidpZCcsICdzaG93X21zZycgPT4nc2hvd19tc2cnICk7 
IHZhciAkYWN0aW9ucyA9IGFycmF5KCAnaW5zZXJ0Jz0+J2luc2VydCcsICd1cGRhdGUnPT4ndXBk 
YXRlJywgJ2RlbGV0ZSc9PidkZWxldGUnLCAnc3RhdHVzJz0+J3N0YXR1cycsICdkZXRhaWwnPT4n 
ZGV0YWlsJyApOyB2YXIgJGlkX2tleSA9ICdpZCc7IHZhciAkc2VsZl9wYWdlOyB2YXIgJGJhc2Vf 
aHJlZjsgdmFyICRtb2R1bGU7IHZhciAkcGFnZTsgdmFyICRzdWJfcGFnZTsgdmFyICRwYXJhbXMg 
PSBhcnJheSgnbW9kdWxlJywgJ3BhZ2UnLCAnc3ViX3BhZ2UnKTsgdmFyICRtb3JlX3BhcmFtcyA9 
IGFycmF5KCAnYnByJywgJ3NvcnQnLCAnb3JkZXInLCAnbGV0dGVyJywgJ2ZpbHRlcicsICdwb3B1 
cCcsICdmcmFtZScsICdmaWVsZF9uYW1lJywgJ2ZpZWxkX2lkJywgJ3JlZmVyZXInLCAnYnAnLCAn 
YnB0JywgJ25vX2F0dGFjaCcsICdjbG9zZScsICd2YXJzJyApOyB2YXIgJG1vcmVfcGFyYW1zX2Fq 
YXggPSBhcnJheSgpOyB2YXIgJGN1c3RvbV9yZXR1cm5fcGFyYW1zID0gYXJyYXkoKTsgdmFyICRj 
dXN0b21fcGFnZV90b19yZXR1cm47IHZhciAkZGVsYXlfdGltZSA9ICcxMDAwJzsgdmFyICRsYW5n 
ID0gQVBQX0xBTkc7IHZhciAkbW9kdWxlX2RpciA9IEFQUF9NT0RVTEVfRElSOyB2YXIgJGV4dHJh 
X21vZHVsZV9kaXIgPSBBUFBfRVhUUkFfTU9EVUxFX0RJUjsgdmFyICRhY2NvdW50X21vZHVsZV9k 
aXIgPSBBUFBfQUNDT1VOVF9NT0RVTEVfRElSOyB2YXIgJGV4dHJhX21vZHVsZXMgPSBhcnJheSgp 
OyB2YXIgJHdvcmtpbmdfZGlyOyB2YXIgJGZ1bGxfcGFnZTsgdmFyICRmdWxsX3BhZ2VfcGFyYW1z 
OyB2YXIgJGFyZ19zZXBhcmF0b3IgPSAnJmFtcDsnOyB2YXIgJG1zZyA9IGFycmF5KCk7IHZhciAk 
ZW5jb2Rpbmc7IGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgeyBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7 
ICRyZWcgPSAmUmVnaXN0cnk6Omluc3RhbmNlKCk7ICRjb25mID0gJiRyZWctPmdldEVudHJ5KCdj 
b25mJyk7ICR0aGlzLT5lbmNvZGluZyA9ICRjb25mWydsYW5nJ11bJ21ldGFfY2hhcnNldCddOyAk 
dGhpcy0+YmFzZV9ocmVmID0gJGNvbmZbJ2NsaWVudF9wYXRoJ107ICR0aGlzLT5zZWxmX3BhZ2Ug 
PSAkX1NFUlZFUlsnUEhQX1NFTEYnXTsgJHRoaXMtPmFjdGlvbiA9ICR0aGlzLT5nZXRSZXF1ZXN0 
VmFyKCdhY3Rpb24nKTsgJHRoaXMtPm1vZHVsZSA9ICR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1 
bGUnKTsgJHRoaXMtPnBhZ2UgPSAkdGhpcy0+Z2V0UmVxdWVzdFZhcigncGFnZScpOyAkdGhpcy0+ 
c3ViX3BhZ2UgPSAkdGhpcy0+Z2V0UmVxdWVzdFZhcignc3ViX3BhZ2UnKTsgJHRoaXMtPndvcmtp 
bmdfZGlyID0gJHRoaXMtPm1vZHVsZV9kaXIgLiAkdGhpcy0+bW9kdWxlIC4gJy8nOyAkdGhpcy0+ 
c2V0Q29tbW9uTGluaygpOyB9IGZ1bmN0aW9uIGFkZE1zZygkZmlsZV9uYW1lLCAkbW9kdWxlID0g 
ZmFsc2UpIHsgaWYoJG1vZHVsZSkgeyAkZmlsZV9uYW1lID0gQXBwTXNnOjpnZXRNb2R1bGVNc2dG 
aWxlKCRtb2R1bGUsICRmaWxlX25hbWUpOyB9IGVsc2UgeyAkZmlsZV9uYW1lID0gQXBwTXNnOjpn 
ZXRDb21tb25Nc2dGaWxlKCRmaWxlX25hbWUpOyB9ICR0aGlzLT5tc2cgPSBhcnJheV9tZXJnZSgk 
dGhpcy0+bXNnLCBBcHBNc2c6OnBhcnNlTXNncygkZmlsZV9uYW1lKSk7IH0gZnVuY3Rpb24gZ2V0 
UmVxdWVzdFZhcigkdmFyKSB7IHJldHVybiAoaXNzZXQoJF9HRVRbJHRoaXMtPnF1ZXJ5WyR2YXJd 
XSkpID8gdXJsZW5jb2RlKHVybGRlY29kZSgkX0dFVFskdGhpcy0+cXVlcnlbJHZhcl1dKSkgOiBO 
VUxMOyB9IGZ1bmN0aW9uIGdldFJlcXVlc3RLZXkoJGtleSkgeyByZXR1cm4gQCR0aGlzLT5xdWVy 
eVska2V5XTsgfSBmdW5jdGlvbiBzZXRSZXF1ZXN0VmFyKCR2YXIsICR2YWx1ZSkgeyAkX0dFVFsk 
dGhpcy0+cXVlcnlbJHZhcl1dID0gJHZhbHVlOyB9IGZ1bmN0aW9uIGdldEN1cnJlbnRMaW5rKCkg 
eyAkcXVlcnkgPSBodHRwX2J1aWxkX3F1ZXJ5KCRfR0VUKTsgcmV0dXJuICgkcXVlcnkpID8gJF9T 
RVJWRVJbJ1BIUF9TRUxGJ10gLiAnPycgLiAkcXVlcnkgOiAkX1NFUlZFUlsnUEhQX1NFTEYnXTsg 
fSBmdW5jdGlvbiBnZXRDb21tb25MaW5rKCkgeyByZXR1cm4gJHRoaXMtPmZ1bGxfcGFnZTsgfSBm 
dW5jdGlvbiBzZXRDb21tb25MaW5rKCkgeyAkdGhpcy0+ZnVsbF9wYWdlID0gJHRoaXMtPmdldEZ1 
bGxQYWdlVXJsKCk7ICR0aGlzLT5mdWxsX3BhZ2VfcGFyYW1zID0gJHRoaXMtPmdldEZ1bGxQYWdl 
UGFyYW1zKCk7IH0gZnVuY3Rpb24gZ2V0QWN0aW9uKCkgeyByZXR1cm4gJHRoaXMtPmFjdGlvbjsg 
fSBmdW5jdGlvbiBzZXRDdXN0b21BY3Rpb24oJGFjdGlvbiwgJHZhbHVlKSB7ICR0aGlzLT5hY3Rp 
b25zWyRhY3Rpb25dID0gJHZhbHVlOyB9IGZ1bmN0aW9uIGdldEFjdGlvblZhbHVlKCRhY3Rpb25f 
a2V5KSB7IHJldHVybiBAJHRoaXMtPmFjdGlvbnNbJGFjdGlvbl9rZXldOyB9IGZ1bmN0aW9uIGdl 
dEZ1bGxQYWdlVXJsKCkgeyByZXR1cm4gJF9TRVJWRVJbJ1BIUF9TRUxGJ10gLiAnPycgLiBodHRw 
X2J1aWxkX3F1ZXJ5KGFycmF5X21lcmdlKCR0aGlzLT5nZXRQYXJhbXMoKSwgJHRoaXMtPmdldE1v 
cmVQYXJhbXMoKSkpOyB9IGZ1bmN0aW9uIGdldEZ1bGxQYWdlUGFyYW1zKCkgeyByZXR1cm4gYXJy 
YXlfbWVyZ2UoJHRoaXMtPmdldFBhcmFtcygpLCAkdGhpcy0+Z2V0TW9yZVBhcmFtcygpKTsgfSBm 
dW5jdGlvbiAmX2dldFBhcmFtcygkcGFyYW1zKSB7ICRwYXJhbXNfID0gYXJyYXkoKTsgZm9yZWFj 
aCgkcGFyYW1zIGFzICR2KSB7IGlmKGlzc2V0KCRfR0VUWyR2XSkpIHsgJHBhcmFtc19bJHZdID0g 
JF9HRVRbJHZdOyB9IH0gcmV0dXJuICRwYXJhbXNfOyB9IGZ1bmN0aW9uICZnZXRQYXJhbXMoKSB7 
IHJldHVybiAkdGhpcy0+X2dldFBhcmFtcygkdGhpcy0+cGFyYW1zKTsgfSBmdW5jdGlvbiBnZXRN 
b3JlUGFyYW1zKCkgeyByZXR1cm4gJHRoaXMtPl9nZXRQYXJhbXMoJHRoaXMtPm1vcmVfcGFyYW1z 
KTsgfSBmdW5jdGlvbiBzZXRNb3JlUGFyYW1zKCR2YWwsICRyZWJ1aWx0X3BhcmFtcyA9IHRydWUp 
IHsgJHZhbCA9IChpc19hcnJheSgkdmFsKSkgPyAkdmFsIDogYXJyYXkoJHZhbCk7IGZvcmVhY2go 
JHZhbCBhcyAkdikgeyAkdGhpcy0+bW9yZV9wYXJhbXNbXSA9ICR2OyB9IGlmKCRyZWJ1aWx0X3Bh 
cmFtcykgeyAkdGhpcy0+c2V0Q29tbW9uTGluaygpOyB9IH0gZnVuY3Rpb24gcmVtb3ZlTW9yZVBh 
cmFtcygkdmFsLCAkcmVidWlsdF9wYXJhbXMgPSB0cnVlKSB7ICR2YWwgPSAoaXNfYXJyYXkoJHZh 
bCkpID8gJHZhbCA6IGFycmF5KCR2YWwpOyBmb3JlYWNoKCR2YWwgYXMgJHYpIHsgJGtleSA9IGFy 
cmF5X3NlYXJjaCgkdiwgJHRoaXMtPm1vcmVfcGFyYW1zKTsgaWYoJGtleSkgeyB1bnNldCgkdGhp 
cy0+bW9yZV9wYXJhbXNbJGtleV0pOyB9IH0gaWYoJHJlYnVpbHRfcGFyYW1zKSB7ICR0aGlzLT5z 
ZXRDb21tb25MaW5rKCk7IH0gfSBmdW5jdGlvbiBzZXRNb3JlUGFyYW1zQWpheCgkdmFsKSB7ICR2 
YWwgPSAoaXNfYXJyYXkoJHZhbCkpID8gJHZhbCA6IGFycmF5KCR2YWwpOyBmb3JlYWNoKCR2YWwg 
YXMgJHYpIHsgJHRoaXMtPm1vcmVfcGFyYW1zX2FqYXhbXSA9ICR2OyB9IH0gZnVuY3Rpb24gZ2V0 
TW9yZVBhcmFtKCRwYXJhbSkgeyAkcmV0ID0gZmFsc2U7IGlmKGlzX2FycmF5KCRwYXJhbSkpIHsg 
JHJldCA9ICghZW1wdHkoJF9HRVRbJHBhcmFtWzBdXVskcGFyYW1bMV1dKSkgPyAkX0dFVFskcGFy 
YW1bMF1dWyRwYXJhbVsxXV0gOiBmYWxzZTsgfSBlbHNlIHsgJHJldCA9ICghZW1wdHkoJF9HRVRb 
JHBhcmFtXSkpID8gJF9HRVRbJHBhcmFtXSA6IGZhbHNlOyB9IGlmKCRyZXQpIHsgJHJldCA9IChp 
c19hcnJheSgkcmV0KSkgPyBhcnJheV9tYXAoJ3VybGVuY29kZScsICRyZXQpIDogdXJsZW5jb2Rl 
KCRyZXQpOyB9IHJldHVybiAkcmV0OyB9IGZ1bmN0aW9uIHNldEN1c3RvbVBhZ2VUb1JldHVybigk 
cGFnZSwgJHVuc2VyaWFsaXplID0gdHJ1ZSkgeyBAJGxpbmsgPSBXZWJVdGlsOjp1bnNlcmlhbGl6 
ZV91cmwoJHBhZ2UpOyAkdGhpcy0+Y3VzdG9tX3BhZ2VfdG9fcmV0dXJuID0gKCRsaW5rID09PSBm 
YWxzZSkgPyAkcGFnZSA6ICRsaW5rOyB9IGZ1bmN0aW9uIHNldERlbGF5VGltZSgkbXVsdGlwbGll 
cikgeyAkdGhpcy0+ZGVsYXlfdGltZSA9ICR0aGlzLT5kZWxheV90aW1lKiRtdWx0aXBsaWVyOyB9 
IGZ1bmN0aW9uIGdldFJlZmVyZXJMaW5rKCRyZWZlcmVyLCAkY2xpZW50X2xpbmsgPSBhcnJheSgp 
KSB7ICRsaW5rID0gJyc7IGlmKHN0cnBvcygkcmVmZXJlciwgJ2NsaWVudCcpICE9PSBmYWxzZSkg 
eyAkbGluayA9ICR0aGlzLT5nZXRDbGllbnRMaW5rKCRjbGllbnRfbGluayk7IH0gZWxzZWlmKHN0 
cnBvcygkcmVmZXJlciwgJ2Vtb2RlJykgIT09IGZhbHNlKSB7ICRsaW5rID0gJHRoaXMtPmdldENs 
aWVudExpbmsoJGNsaWVudF9saW5rKTsgfSBlbHNlaWYoJHJlZmVyZXIpIHsgJGxpbmsgPSBXZWJV 
dGlsOjp1bnNlcmlhbGl6ZV91cmwoJHJlZmVyZXIpOyB9IHJldHVybiAkbGluazsgfSBmdW5jdGlv 
biBnbygkbXNnID0gJ3N1Y2Nlc3MnLCAkc2FtZV9wYWdlID0gZmFsc2UsICRhZnRlcl9tc2cgPSBm 
YWxzZSwgJGFjdGlvbiA9IGZhbHNlKSB7ICRlbnRyeV9pZCA9ICR0aGlzLT5nZXRSZXF1ZXN0VmFy 
KCdpZCcpOyAkYWN0aW9uID0gKCEkYWN0aW9uKSA/ICR0aGlzLT5hY3Rpb24gOiAkYWN0aW9uOyAk 
ZXh0cmFfZGF0YSA9IGZhbHNlOyBpZiAoJGFjdGlvbiA9PSAnYnVsaycpIHsgaWYgKGluX2FycmF5 
KCR0aGlzLT5ycC0+dmFyc1snYnVsa19hY3Rpb24nXSwgYXJyYXkoJ2RlbGV0ZScsICd0cmFzaCcp 
KSkgeyAkYWN0aW9uID0gJHRoaXMtPnJwLT52YXJzWydidWxrX2FjdGlvbiddOyAkZW50cnlfaWQg 
PSAkdGhpcy0+cnAtPnZhcnNbJ2lkJ107IH0gZWxzZSB7ICRhY3Rpb24gPSAnYnVsa191cGRhdGUn 
OyAkZXh0cmFfZGF0YSA9IGFycmF5KCAnYnVsa19hY3Rpb24nID0+ICR0aGlzLT5ycC0+dmFyc1sn 
YnVsa19hY3Rpb24nXSwgJ2lkcycgPT4gJHRoaXMtPnJwLT52YXJzWydpZCddICk7IGlmICghZW1w 
dHkoJHRoaXMtPnJwLT52YXJzWyd2YWx1ZSddWyRleHRyYV9kYXRhWydidWxrX2FjdGlvbiddIC4g 
J19hY3Rpb24nXSkpIHsgJGV4dHJhX2RhdGFbJ2J1bGtfc3ViX2FjdGlvbiddID0gJHRoaXMtPnJw 
LT52YXJzWyd2YWx1ZSddWyRleHRyYV9kYXRhWydidWxrX2FjdGlvbiddIC4gJ19hY3Rpb24nXTsg 
fSB9IH0gaWYgKCRhY3Rpb24gIT0gJ3NraXAnKSB7IFVzZXJBY3Rpdml0eUxvZzo6YWRkQWN0aW9u 
KCR0aGlzLT5tb2R1bGUsICR0aGlzLT5wYWdlLCAkYWN0aW9uLCAkZW50cnlfaWQsICRleHRyYV9k 
YXRhKTsgfSAkcGFnZSA9ICR0aGlzLT5nZXRHb0xpbmsoJG1zZywgJHNhbWVfcGFnZSwgJGFmdGVy 
X21zZyk7IGlmKCRzYW1lX3BhZ2UpIHsgaGVhZGVyKCJsb2NhdGlvbjogJHBhZ2UiKTsgZXhpdCgp 
OyB9IGlmKCRtc2cgPT09ICdzdWNjZXNzJykgeyBpZihpbl9hcnJheSgkdGhpcy0+Z2V0UmVxdWVz 
dFZhcignYWN0aW9uJyksIGFycmF5KCdpbnNlcnQnLCAnY2xvbmUnKSkpIHsgJG1zZyA9ICdhZGRl 
ZCc7IH0gZWxzZWlmKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdhY3Rpb24nKSA9PSAndXBkYXRlJykg 
eyAkbXNnID0gJ3VwZGF0ZWQnOyB9IGVsc2VpZihpbl9hcnJheSgkdGhpcy0+Z2V0UmVxdWVzdFZh 
cignYWN0aW9uJyksIGFycmF5KCdkZWxldGUnLCAndHJhc2gnKSkpIHsgJG1zZyA9ICdkZWxldGVk 
JzsgfSBlbHNlaWYoJHRoaXMtPmdldFJlcXVlc3RWYXIoJ2FjdGlvbicpID09ICdidWxrJykgeyAk 
bXNnID0gJ2RhdGFfdXBkYXRlZCc7IH0gZWxzZSB7ICRtc2cgPSAnc3VjY2Vzcyc7IH0gfSBlbHNl 
aWYoJG1zZyA9PT0gJ2NzcmYnKSB7ICRtc2cgPSAnY3NyZi1lcnJvcic7IH0gJF9TRVNTSU9OWydz 
dWNjZXNzX21zZ18nXSA9ICRtc2c7IGhlYWRlcigibG9jYXRpb246ICRwYWdlIik7IGV4aXQoKTsg 
fSBmdW5jdGlvbiBnZXRHb0xpbmsoJG1zZyA9ICdzdWNjZXNzJywgJHNhbWVfcGFnZSA9IGZhbHNl 
LCAkYWZ0ZXJfbXNnID0gZmFsc2UpIHsgaW5pX3NldCgnYXJnX3NlcGFyYXRvci5vdXRwdXQnLCAn 
JicpOyAkdGhpcy0+YXJnX3NlcGFyYXRvciA9ICcmJzsgJHRoaXMtPmZ1bGxfcGFnZSA9IHNlbGY6 
Ol9yZXBsYWNlQXJnU2VwYXJhdG9yKCR0aGlzLT5mdWxsX3BhZ2UpOyBpZigkc2FtZV9wYWdlKSB7 
ICRwYXJhbXMgPSBhcnJheSgkdGhpcy0+Z2V0UmVxdWVzdEtleSgnc2hvd19tc2cnKSA9PiAkbXNn 
KTsgJHBhZ2UgPSAkdGhpcy0+ZnVsbF9wYWdlIC4gJHRoaXMtPmFyZ19zZXBhcmF0b3IgLiBodHRw 
X2J1aWxkX3F1ZXJ5KCRwYXJhbXMpOyByZXR1cm4gJHBhZ2U7IH0gJHBhcmFtcyA9IGFycmF5KCk7 
IGlmKCRhZnRlcl9tc2cpIHsgJHBhcmFtcyA9IGFycmF5KCR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdz 
aG93X21zZycpID0+ICRhZnRlcl9tc2cpOyAkdGhpcy0+ZnVsbF9wYWdlID0gJHRoaXMtPmZ1bGxf 
cGFnZSAuICR0aGlzLT5hcmdfc2VwYXJhdG9yIC4gaHR0cF9idWlsZF9xdWVyeSgkcGFyYW1zKTsg 
fSAkcGFnZV90b19yZXR1cm4gPSAkdGhpcy0+ZnVsbF9wYWdlOyBpZigkdGhpcy0+Y3VzdG9tX3Bh 
Z2VfdG9fcmV0dXJuKSB7ICRwYWdlX3RvX3JldHVybiA9IHNlbGY6Ol9yZXBsYWNlQXJnU2VwYXJh 
dG9yKCR0aGlzLT5jdXN0b21fcGFnZV90b19yZXR1cm4pOyB9IHJldHVybiAkcGFnZV90b19yZXR1 
cm47IH0gZnVuY3Rpb24gZ29VcmwoJHVybCkgeyAkdXJsID0gJHRoaXMtPl9yZXBsYWNlQXJnU2Vw 
YXJhdG9yKCR1cmwpOyBoZWFkZXIoIkxvY2F0aW9uOiAiIC4gJHVybCk7IGV4aXQoKTsgfSBmdW5j 
dGlvbiBnb1BhZ2UoJG1vZHVsZSA9IGZhbHNlLCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBm 
YWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9yZSA9IGFycmF5KCkpIHsgJGxpbmsgPSAkdGhpcy0+ 
Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7ICRsaW5r 
ID0gJHRoaXMtPl9yZXBsYWNlQXJnU2VwYXJhdG9yKCRsaW5rKTsgaGVhZGVyKCJsb2NhdGlvbjog 
JGxpbmsiKTsgZXhpdCgpOyB9IGZ1bmN0aW9uIGdldEdvUGFnZUxpbmsoJG1vZHVsZSA9IGZhbHNl 
LCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBmYWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9y 
ZSA9IGFycmF5KCkpIHsgJGxpbmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1 
Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7IHJldHVybiAkdGhpcy0+X3JlcGxhY2VBcmdTZXBhcmF0 
b3IoJGxpbmspOyB9IGZ1bmN0aW9uIHNldFdvcmtpbmdEaXIoJGRpcnMgPSBhcnJheSgpKSB7ICRh 
cltdID0gKGlzc2V0KCRkaXJzWydzdWJfcGFnZSddKSkgPyAkZGlyc1snc3ViX3BhZ2UnXSA6ICR0 
aGlzLT5zdWJfcGFnZTsgJGFyW10gPSAoaXNzZXQoJGRpcnNbJ3BhZ2UnXSkpID8gJGRpcnNbJ3Bh 
Z2UnXSA6ICR0aGlzLT5wYWdlOyAkYXJbXSA9IChpc3NldCgkZGlyc1snbW9kdWxlJ10pKSA/ICRk 
aXJzWydtb2R1bGUnXSA6ICR0aGlzLT5tb2R1bGU7IGlmKCFmaWxlX2V4aXN0cygkdGhpcy0+bW9k 
dWxlX2RpciAuICdjb25maWdfcGF0aC5waHAnKSkgeyByZXR1cm47IH0gcmVxdWlyZV9vbmNlICR0 
aGlzLT5tb2R1bGVfZGlyIC4gJ2NvbmZpZ19wYXRoLnBocCc7IGZvcmVhY2goJGFyIGFzICRrID0+ 
ICR2KSB7IGlmKGlzc2V0KCRjb25mX21vZHVsZVskdl0pKXsgaWYoc3RycG9zKCRjb25mX21vZHVs 
ZVskdl0sICd7JykgIT09IGZhbHNlKSB7ICRyID0gWyAne2V4dHJhX2Rpcn0nID0+ICR0aGlzLT5l 
eHRyYV9tb2R1bGVfZGlyLCAne2FjY291bnRfZGlyfScgPT4gJHRoaXMtPmFjY291bnRfbW9kdWxl 
X2RpciBdOyAkdGhpcy0+d29ya2luZ19kaXIgPSBzdHJ0cigkY29uZl9tb2R1bGVbJHZdLCAkcik7 
IH0gZWxzZSB7ICR0aGlzLT53b3JraW5nX2RpciA9ICR0aGlzLT5tb2R1bGVfZGlyIC4gJGNvbmZf 
bW9kdWxlWyR2XTsgfSBicmVhazsgfSB9IH0gZnVuY3Rpb24gZ2V0TGluaygkbW9kdWxlID0gZmFs 
c2UsICRwYWdlID0gZmFsc2UsICRzdWJfcGFnZSA9IGZhbHNlLCAkYWN0aW9uID0gZmFsc2UsICRt 
b3JlID0gYXJyYXkoKSkgeyBpZigkbW9kdWxlID09ICdhbGwnKSB7IHJldHVybiAkdGhpcy0+X2dl 
dExpbmsoJHRoaXMtPmdldFJlcXVlc3RWYXIoJ21vZHVsZScpLCAkdGhpcy0+Z2V0UmVxdWVzdFZh 
cigncGFnZScpLCAkdGhpcy0+Z2V0UmVxdWVzdFZhcignc3ViX3BhZ2UnKSwgJHRoaXMtPmdldFJl 
cXVlc3RWYXIoJ2FjdGlvbicpLCAkbW9yZSApOyB9IGVsc2VpZigkbW9kdWxlID09ICdtYWluJykg 
eyByZXR1cm4gJHRoaXMtPl9nZXRMaW5rKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1bGUnKSwg 
JHRoaXMtPmdldFJlcXVlc3RWYXIoJ3BhZ2UnKSwgJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3N1Yl9w 
YWdlJykgKTsgfSBlbHNlaWYoJG1vZHVsZSA9PSAnZnVsbCcpIHsgJG1vcmUgPSAkdGhpcy0+Z2V0 
RnVsbFBhZ2VQYXJhbXMoKSArICRtb3JlOyB1bnNldCgkbW9yZVsnbW9kdWxlJ10sICRtb3JlWydw 
YWdlJ10sICRtb3JlWydzdWJfcGFnZSddLCAkbW9yZVsnYWN0aW9uJ10pOyByZXR1cm4gJHRoaXMt 
Pl9nZXRMaW5rKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1bGUnKSwgJHRoaXMtPmdldFJlcXVl 
c3RWYXIoJ3BhZ2UnKSwgJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3N1Yl9wYWdlJyksICR0aGlzLT5n 
ZXRSZXF1ZXN0VmFyKCdhY3Rpb24nKSwgJG1vcmUgKTsgfSBlbHNlIHsgJG1vZHVsZSA9ICgkbW9k 
dWxlID09ICd0aGlzJykgPyAkdGhpcy0+Z2V0UmVxdWVzdFZhcignbW9kdWxlJykgOiAkbW9kdWxl 
OyAkcGFnZSA9ICgkcGFnZSA9PSAndGhpcycpID8gJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3BhZ2Un 
KSA6ICRwYWdlOyAkc3ViX3BhZ2UgPSAoJHN1Yl9wYWdlID09ICd0aGlzJykgPyAkdGhpcy0+Z2V0 
UmVxdWVzdFZhcignc3ViX3BhZ2UnKSA6ICRzdWJfcGFnZTsgJGFjdGlvbiA9ICgkYWN0aW9uID09 
ICd0aGlzJykgPyAkdGhpcy0+Z2V0UmVxdWVzdFZhcignYWN0aW9uJykgOiAkYWN0aW9uOyByZXR1 
cm4gJHRoaXMtPl9nZXRMaW5rKCRtb2R1bGUsICRwYWdlLCAkc3ViX3BhZ2UsICRhY3Rpb24sICRt 
b3JlKTsgfSB9IGZ1bmN0aW9uIF9nZXRBY3Rpb25MaW5rKCRhY3Rpb25fdmFsdWUsICRyZWNvcmRf 
aWQgPSBmYWxzZSwgJG1vcmVfcGFyYW1zID0gYXJyYXkoKSkgeyAkYXJnID0gJHRoaXMtPmFyZ19z 
ZXBhcmF0b3I7ICRjb21tb25fbGluayA9ICR0aGlzLT5nZXRDb21tb25MaW5rKCk7ICRhY3Rpb25f 
a2V5ID0gJHRoaXMtPmdldFJlcXVlc3RLZXkoJ2FjdGlvbicpOyAkaWRfcGFyYW0gPSAoJHJlY29y 
ZF9pZCkgPyBzcHJpbnRmKCIlcyVzPSVkIiwgJGFyZywgJHRoaXMtPmlkX2tleSwgJHJlY29yZF9p 
ZCkgOiAnJzsgJGFjdGlvbl92YWwgPSAkdGhpcy0+Z2V0QWN0aW9uVmFsdWUoJGFjdGlvbl92YWx1 
ZSk7ICRhY3Rpb25fdmFsdWUgPSAoJGFjdGlvbl92YWwpID8gJGFjdGlvbl92YWwgOiAkYWN0aW9u 
X3ZhbHVlOyAkbW9yZV9wYXJhbXMgPSAoJG1vcmVfcGFyYW1zKSA/ICRhcmcgLiBodHRwX2J1aWxk 
X3F1ZXJ5KCRtb3JlX3BhcmFtcykgOiAnJzsgJHN0ciA9ICclcyVzJXM9JXMlcyVzJzsgJHN0ciA9 
IHNwcmludGYoJHN0ciwgJGNvbW1vbl9saW5rLCAkYXJnLCAkYWN0aW9uX2tleSwgJGFjdGlvbl92 
YWx1ZSwgJGlkX3BhcmFtLCAkbW9yZV9wYXJhbXMpOyByZXR1cm4gJHN0cjsgfSBmdW5jdGlvbiBn 
ZXRBY3Rpb25MaW5rKCRhY3Rpb25fdmFsLCAkcmVjb3JkX2lkID0gZmFsc2UsICRtb3JlX3BhcmFt 
cyA9IGFycmF5KCkpIHsgcmV0dXJuICR0aGlzLT5fZ2V0QWN0aW9uTGluaygkYWN0aW9uX3ZhbCwg 
JHJlY29yZF9pZCwgJG1vcmVfcGFyYW1zKTsgfSBwcml2YXRlIGZ1bmN0aW9uIF9nZXRMaW5rKCRt 
b2R1bGUgPSBmYWxzZSwgJHBhZ2UgPSBmYWxzZSwgJHN1Yl9wYWdlID0gZmFsc2UsICRhY3Rpb24g 
PSBmYWxzZSwgJG1vcmUgPSBhcnJheSgpKSB7IGlmKCRtb2R1bGUpIHsgJGxpbmtbMV0gPSBzcHJp 
bnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdtb2R1bGUnKSwgJG1vZHVsZSk7IH0g 
aWYoJHBhZ2UpIHsgJGxpbmtbMl0gPSBzcHJpbnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0 
S2V5KCdwYWdlJyksICRwYWdlKTsgfSBpZigkc3ViX3BhZ2UpIHsgJGxpbmtbM10gPSBzcHJpbnRm 
KCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdzdWJfcGFnZScpLCAkc3ViX3BhZ2UpOyB9 
IGlmKCRhY3Rpb24pIHsgJGxpbmtbNF0gPSBzcHJpbnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1 
ZXN0S2V5KCdhY3Rpb24nKSwgJGFjdGlvbik7IH0gJGxpbmsgPSAoZW1wdHkoJGxpbmspKSA/ICR0 
aGlzLT5zZWxmX3BhZ2UgOiAkdGhpcy0+c2VsZl9wYWdlIC4gJz8nIC4gaW1wbG9kZSgkdGhpcy0+ 
YXJnX3NlcGFyYXRvciwgJGxpbmspOyAkbGluayAuPSAoJG1vcmUpID8gJHRoaXMtPmFyZ19zZXBh 
cmF0b3IgLiBodHRwX2J1aWxkX3F1ZXJ5KCRtb3JlKSA6ICcnOyByZXR1cm4gJGxpbms7IH0gZnVu 
Y3Rpb24gZ2V0U2hvcnRMaW5rKCRtb2R1bGUgPSBmYWxzZSwgJHBhZ2UgPSBmYWxzZSwgJHN1Yl9w 
YWdlID0gZmFsc2UsICRhY3Rpb24gPSBmYWxzZSwgJG1vcmUgPSBhcnJheSgpKSB7ICR0aGlzLT5z 
ZWxmX3BhZ2UgPSAnJzsgJGxpbmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1 
Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7ICRsaW5rID0gc3RyX3JlcGxhY2UoJz8nLCAnJywgJGxp 
bmspOyByZXR1cm4gJGxpbms7IH0gZnVuY3Rpb24gZ2V0RnVsbExpbmsoJG1vZHVsZSA9IGZhbHNl 
LCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBmYWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9y 
ZSA9IGFycmF5KCkpIHsgJHNlbGZfcGFnZSA9ICR0aGlzLT5zZWxmX3BhZ2U7ICR0aGlzLT5zZWxm 
X3BhZ2UgPSBBUFBfQURNSU5fUEFUSCAuICdpbmRleC5waHAnOyAkbGluayA9ICR0aGlzLT5nZXRM 
aW5rKCRtb2R1bGUsICRwYWdlLCAkc3ViX3BhZ2UsICRhY3Rpb24sICRtb3JlKTsgJHRoaXMtPnNl 
bGZfcGFnZSA9ICRzZWxmX3BhZ2U7IHJldHVybiAkbGluazsgfSBmdW5jdGlvbiBnZXRBamF4TGlu 
aygkbW9kdWxlID0gZmFsc2UsICRwYWdlID0gZmFsc2UsICRzdWJfcGFnZSA9IGZhbHNlLCAkYWN0 
aW9uID0gZmFsc2UsICRtb3JlID0gYXJyYXkoKSkgeyAkbW9yZSA9IFJlcXVlc3REYXRhVXRpbDo6 
YWRkc2xhc2hlcygkbW9yZSk7IGlmKGVtcHR5KCRtb3JlKSAmJiBpc3NldCgkX0dFVFsnaWQnXSkp 
IHsgJG1vcmUgPSBhcnJheSgnaWQnID0+IChpbnQpICRfR0VUWydpZCddKTsgfSBmb3JlYWNoKCR0 
aGlzLT5tb3JlX3BhcmFtc19hamF4IGFzICR2KXsgaWYoaXNzZXQoJF9HRVRbJHZdKSkgeyAkbW9y 
ZVskdl0gPSBhZGRzbGFzaGVzKCRfR0VUWyR2XSk7IH0gfSAkbW9yZVsnYWpheCddID0gMTsgJGxp 
bmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1Yl9wYWdlLCAkYWN0aW9uLCAk 
bW9yZSk7ICRsaW5rID0gJHRoaXMtPl9yZXBsYWNlQXJnU2VwYXJhdG9yKCRsaW5rKTsgcmV0dXJu 
ICRsaW5rOyB9IHN0YXRpYyBmdW5jdGlvbiBnZXRSZWZMaW5rKCRtb2R1bGUgPSBmYWxzZSwgJHBh 
Z2UgPSBmYWxzZSwgJHN1Yl9wYWdlID0gZmFsc2UsICRhY3Rpb24gPSBmYWxzZSwgJG1vcmUgPSBh 
cnJheSgpLCAkcmVwbGFjZV9hcmcgPSB0cnVlKSB7ICRwID0gQVBQX0FETUlOX1BBVEggLiAnaW5k 
ZXgucGhwJzsgaWYoJG1vZHVsZSkgeyAkYyA9IG5ldyBBcHBDb250cm9sbGVyKCk7ICRtb3JlWydy 
J10gPSAxOyAkbGluayA9ICRjLT5nZXRTaG9ydExpbmsoJG1vZHVsZSwgJHBhZ2UsICRzdWJfcGFn 
ZSwgJGFjdGlvbiwgJG1vcmUpOyBpZigkcmVwbGFjZV9hcmcpIHsgJGxpbmsgPSAkYy0+X3JlcGxh 
Y2VBcmdTZXBhcmF0b3IoJGxpbmspOyB9ICRwID0gJHAgLiAnPycgLiAkbGluazsgfSByZXR1cm4g 
JHA7IH0gZnVuY3Rpb24gZ2V0Q2xpZW50TGluaygkY2xpZW50X2xpbmssICRzZXJpYWxpemUgPSBm 
YWxzZSkgeyAkY2MgPSAmJHRoaXMtPmdldENsaWVudENvbnRyb2xsZXIoKTsgQCRsaW5rID0gJGNj 
LT5nZXRSZWRpcmVjdExpbmsoJGNsaWVudF9saW5rWzBdLCAkY2xpZW50X2xpbmtbMV0sICRjbGll 
bnRfbGlua1syXSwgJGNsaWVudF9saW5rWzNdLCAkY2xpZW50X2xpbmtbNF0pOyBpZigkc2VyaWFs 
aXplKSB7ICRsaW5rID0gV2ViVXRpbDo6c2VyaWFsaXplX3VybCgkbGluayk7IH0gcmV0dXJuICRs 
aW5rOyB9IGZ1bmN0aW9uIGdldFB1YmxpY0xpbmsoJHZpZXcsICRkYXRhLCAkbW9yZSA9IFtdKSB7 
IHN0YXRpYyAkY2M7IGlmKCRjYyA9PT0gbnVsbCkgeyAkc2V0dGluZ3MgPSBTZXR0aW5nTW9kZWw6 
OmdldFF1aWNrKDIpOyAkY2MgPSAkdGhpcy0+Z2V0Q2xpZW50Q29udHJvbGxlcigkc2V0dGluZ3Mp 
OyAkY2MtPnNldE1vZFJld3JpdGUoJHNldHRpbmdzWydtb2RfcmV3cml0ZSddKTsgfSAkZW50cnlf 
aWQgPSAkZGF0YVsnaWQnXTsgaWYoJHZpZXcgIT0gJ2ZpbGUnKSB7ICRlbnRyeV9pZCA9ICRjYy0+ 
Z2V0RW50cnlMaW5rUGFyYW1zKCRkYXRhWydpZCddLCAkZGF0YVsndGl0bGUnXSk7IH0gJGxpbmsg 
PSAkY2MtPmdldExpbmsoJHZpZXcsIGZhbHNlLCAkZW50cnlfaWQsIGZhbHNlLCAkbW9yZSwgdHJ1 
ZSk7IHJldHVybiAkbGluazsgfSBzdGF0aWMgZnVuY3Rpb24gZ2V0QWpheExpbmtUb0ZpbGUoJHR5 
cGUsICRtb3JlID0gYXJyYXkoKSkgeyAkcmVnID0gJlJlZ2lzdHJ5OjppbnN0YW5jZSgpOyAkY29u 
ZiA9ICYkcmVnLT5nZXRFbnRyeSgnY29uZicpOyAkY2xpZW50X3BhdGggPSBBUFBfQ0xJRU5UX1BB 
VEg7IGlmKCRjb25mWydzc2xfYWRtaW4nXSkgeyAkY2xpZW50X3BhdGggPSBzdHJfcmVwbGFjZSgn 
aHR0cDovLycsICdodHRwczovLycsIEFQUF9DTElFTlRfUEFUSCk7IH0gJG1vcmUgPSBSZXF1ZXN0 
RGF0YVV0aWw6OmFkZHNsYXNoZXMoJG1vcmUpOyAkbGluayA9ICRjbGllbnRfcGF0aCAuICdlbmRw 
b2ludC5waHAnOyAkbGluayAuPSAoJHR5cGUpID8gJz90eXBlPScgLiAkdHlwZSA6ICcnOyAkbGlu 
ayAuPSAoJG1vcmUpID8gJyYnIC4gaHR0cF9idWlsZF9xdWVyeSgkbW9yZSkgOiAnJzsgJGxpbmsg 
PSBBcHBDb250cm9sbGVyOjpfcmVwbGFjZUFyZ1NlcGFyYXRvcigkbGluayk7IHJldHVybiAkbGlu 
azsgfSBzdGF0aWMgZnVuY3Rpb24gaXNBamF4Q2FsbCgpIHsgcmV0dXJuICghZW1wdHkoJF9HRVRb 
J2FqYXgnXSkpOyB9IHN0YXRpYyBmdW5jdGlvbiBfcmVwbGFjZUFyZ1NlcGFyYXRvcigkc3RyKSB7 
IHJldHVybiBzdHJfcmVwbGFjZSgnJmFtcDsnLCAnJicsICRzdHIpOyB9IHN0YXRpYyBmdW5jdGlv 
biAmZ2V0Q2xpZW50Q29udHJvbGxlcigkc2V0dGluZ3MgPSBbXSkgeyAkY29udHJvbGxlciA9IG5l 
dyBLQkNsaWVudENvbnRyb2xsZXIoKTsgJGNvbnRyb2xsZXItPmtiX3BhdGggPSBBUFBfQ0xJRU5U 
X1BBVEg7ICRjb250cm9sbGVyLT5saW5rX3BhdGggPSBBUFBfQ0xJRU5UX1BBVEg7IGlmKCRzZXR0 
aW5ncykgeyAkY29udHJvbGxlci0+c2V0RGlyVmFycygkc2V0dGluZ3MpOyB9IHJldHVybiAkY29u 
dHJvbGxlcjsgfSBmdW5jdGlvbiBnb1ZpZXcoJiRvYmosICYkbWFuYWdlciwgJGNsYXNzLCAkdmFs 
dWVzID0gYXJyYXkoKSkgeyAkdmlldyA9IG5ldyAkY2xhc3M7ICR2aWV3LT5leGVjdXRlKCRvYmos 
ICRtYW5hZ2VyLCAkdmFsdWVzKTsgfSBmdW5jdGlvbiBnZXRWaWV3KCYkb2JqLCAmJG1hbmFnZXIs 
ICRjbGFzcywgJHZhbHVlcyA9IGFycmF5KCkpIHsgJHZpZXcgPSBuZXcgJGNsYXNzOyByZXR1cm4g 
JHZpZXctPmV4ZWN1dGUoJG9iaiwgJG1hbmFnZXIsICR2YWx1ZXMpOyB9IGZ1bmN0aW9uIGlzQ2xh 
c3MoJGNsYXNzX25hbWUsICRwYXRoID0gZmFsc2UpIHsgJGNsYXNzX25hbWUgPSAkY2xhc3NfbmFt 
ZSAuICcucGhwJzsgaWYoJHBhdGgpIHsgJHBbXSA9ICR0aGlzLT5tb2R1bGVfZGlyIC4gJHBhdGgg 
LiAnL2luYy8nOyAkcFtdID0gJHRoaXMtPmV4dHJhX21vZHVsZV9kaXIgLiAkcGF0aCAuICcvaW5j 
Lyc7IGZvcmVhY2goJHAgYXMgJHYpIHsgaWYoZmlsZV9leGlzdHMoJHYgLiAkY2xhc3NfbmFtZSkp 
IHsgcmV0dXJuIHRydWU7IH0gfSB9IGVsc2UgeyBpZihmaWxlX2V4aXN0cygkdGhpcy0+d29ya2lu 
Z19kaXIgLiAnaW5jLycgLiAkY2xhc3NfbmFtZSkpIHsgcmV0dXJuIHRydWU7IH0gfSByZXR1cm4g 
ZmFsc2U7IH0gfSAK ?>

Did this file decode correctly?

Original Code

CiBjbGFzcyBBcHBDb250cm9sbGVyIGV4dGVuZHMgQ29udHJvbGxlciB7IHZhciAkYWN0aW9uID0g
ZmFsc2U7IHZhciAkcGFnZV90b19yZXR1cm47IHZhciAkcXVlcnkgPSBhcnJheSggJ21vZHVsZScg
PT4nbW9kdWxlJywgJ3BhZ2UnID0+J3BhZ2UnLCAnc3ViX3BhZ2UnID0+J3N1Yl9wYWdlJywgJ2Fj
dGlvbicgPT4nYWN0aW9uJywgJ2lkJyA9PidpZCcsICdzaG93X21zZycgPT4nc2hvd19tc2cnICk7
IHZhciAkYWN0aW9ucyA9IGFycmF5KCAnaW5zZXJ0Jz0+J2luc2VydCcsICd1cGRhdGUnPT4ndXBk
YXRlJywgJ2RlbGV0ZSc9PidkZWxldGUnLCAnc3RhdHVzJz0+J3N0YXR1cycsICdkZXRhaWwnPT4n
ZGV0YWlsJyApOyB2YXIgJGlkX2tleSA9ICdpZCc7IHZhciAkc2VsZl9wYWdlOyB2YXIgJGJhc2Vf
aHJlZjsgdmFyICRtb2R1bGU7IHZhciAkcGFnZTsgdmFyICRzdWJfcGFnZTsgdmFyICRwYXJhbXMg
PSBhcnJheSgnbW9kdWxlJywgJ3BhZ2UnLCAnc3ViX3BhZ2UnKTsgdmFyICRtb3JlX3BhcmFtcyA9
IGFycmF5KCAnYnByJywgJ3NvcnQnLCAnb3JkZXInLCAnbGV0dGVyJywgJ2ZpbHRlcicsICdwb3B1
cCcsICdmcmFtZScsICdmaWVsZF9uYW1lJywgJ2ZpZWxkX2lkJywgJ3JlZmVyZXInLCAnYnAnLCAn
YnB0JywgJ25vX2F0dGFjaCcsICdjbG9zZScsICd2YXJzJyApOyB2YXIgJG1vcmVfcGFyYW1zX2Fq
YXggPSBhcnJheSgpOyB2YXIgJGN1c3RvbV9yZXR1cm5fcGFyYW1zID0gYXJyYXkoKTsgdmFyICRj
dXN0b21fcGFnZV90b19yZXR1cm47IHZhciAkZGVsYXlfdGltZSA9ICcxMDAwJzsgdmFyICRsYW5n
ID0gQVBQX0xBTkc7IHZhciAkbW9kdWxlX2RpciA9IEFQUF9NT0RVTEVfRElSOyB2YXIgJGV4dHJh
X21vZHVsZV9kaXIgPSBBUFBfRVhUUkFfTU9EVUxFX0RJUjsgdmFyICRhY2NvdW50X21vZHVsZV9k
aXIgPSBBUFBfQUNDT1VOVF9NT0RVTEVfRElSOyB2YXIgJGV4dHJhX21vZHVsZXMgPSBhcnJheSgp
OyB2YXIgJHdvcmtpbmdfZGlyOyB2YXIgJGZ1bGxfcGFnZTsgdmFyICRmdWxsX3BhZ2VfcGFyYW1z
OyB2YXIgJGFyZ19zZXBhcmF0b3IgPSAnJmFtcDsnOyB2YXIgJG1zZyA9IGFycmF5KCk7IHZhciAk
ZW5jb2Rpbmc7IGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgeyBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7
ICRyZWcgPSAmUmVnaXN0cnk6Omluc3RhbmNlKCk7ICRjb25mID0gJiRyZWctPmdldEVudHJ5KCdj
b25mJyk7ICR0aGlzLT5lbmNvZGluZyA9ICRjb25mWydsYW5nJ11bJ21ldGFfY2hhcnNldCddOyAk
dGhpcy0+YmFzZV9ocmVmID0gJGNvbmZbJ2NsaWVudF9wYXRoJ107ICR0aGlzLT5zZWxmX3BhZ2Ug
PSAkX1NFUlZFUlsnUEhQX1NFTEYnXTsgJHRoaXMtPmFjdGlvbiA9ICR0aGlzLT5nZXRSZXF1ZXN0
VmFyKCdhY3Rpb24nKTsgJHRoaXMtPm1vZHVsZSA9ICR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1
bGUnKTsgJHRoaXMtPnBhZ2UgPSAkdGhpcy0+Z2V0UmVxdWVzdFZhcigncGFnZScpOyAkdGhpcy0+
c3ViX3BhZ2UgPSAkdGhpcy0+Z2V0UmVxdWVzdFZhcignc3ViX3BhZ2UnKTsgJHRoaXMtPndvcmtp
bmdfZGlyID0gJHRoaXMtPm1vZHVsZV9kaXIgLiAkdGhpcy0+bW9kdWxlIC4gJy8nOyAkdGhpcy0+
c2V0Q29tbW9uTGluaygpOyB9IGZ1bmN0aW9uIGFkZE1zZygkZmlsZV9uYW1lLCAkbW9kdWxlID0g
ZmFsc2UpIHsgaWYoJG1vZHVsZSkgeyAkZmlsZV9uYW1lID0gQXBwTXNnOjpnZXRNb2R1bGVNc2dG
aWxlKCRtb2R1bGUsICRmaWxlX25hbWUpOyB9IGVsc2UgeyAkZmlsZV9uYW1lID0gQXBwTXNnOjpn
ZXRDb21tb25Nc2dGaWxlKCRmaWxlX25hbWUpOyB9ICR0aGlzLT5tc2cgPSBhcnJheV9tZXJnZSgk
dGhpcy0+bXNnLCBBcHBNc2c6OnBhcnNlTXNncygkZmlsZV9uYW1lKSk7IH0gZnVuY3Rpb24gZ2V0
UmVxdWVzdFZhcigkdmFyKSB7IHJldHVybiAoaXNzZXQoJF9HRVRbJHRoaXMtPnF1ZXJ5WyR2YXJd
XSkpID8gdXJsZW5jb2RlKHVybGRlY29kZSgkX0dFVFskdGhpcy0+cXVlcnlbJHZhcl1dKSkgOiBO
VUxMOyB9IGZ1bmN0aW9uIGdldFJlcXVlc3RLZXkoJGtleSkgeyByZXR1cm4gQCR0aGlzLT5xdWVy
eVska2V5XTsgfSBmdW5jdGlvbiBzZXRSZXF1ZXN0VmFyKCR2YXIsICR2YWx1ZSkgeyAkX0dFVFsk
dGhpcy0+cXVlcnlbJHZhcl1dID0gJHZhbHVlOyB9IGZ1bmN0aW9uIGdldEN1cnJlbnRMaW5rKCkg
eyAkcXVlcnkgPSBodHRwX2J1aWxkX3F1ZXJ5KCRfR0VUKTsgcmV0dXJuICgkcXVlcnkpID8gJF9T
RVJWRVJbJ1BIUF9TRUxGJ10gLiAnPycgLiAkcXVlcnkgOiAkX1NFUlZFUlsnUEhQX1NFTEYnXTsg
fSBmdW5jdGlvbiBnZXRDb21tb25MaW5rKCkgeyByZXR1cm4gJHRoaXMtPmZ1bGxfcGFnZTsgfSBm
dW5jdGlvbiBzZXRDb21tb25MaW5rKCkgeyAkdGhpcy0+ZnVsbF9wYWdlID0gJHRoaXMtPmdldEZ1
bGxQYWdlVXJsKCk7ICR0aGlzLT5mdWxsX3BhZ2VfcGFyYW1zID0gJHRoaXMtPmdldEZ1bGxQYWdl
UGFyYW1zKCk7IH0gZnVuY3Rpb24gZ2V0QWN0aW9uKCkgeyByZXR1cm4gJHRoaXMtPmFjdGlvbjsg
fSBmdW5jdGlvbiBzZXRDdXN0b21BY3Rpb24oJGFjdGlvbiwgJHZhbHVlKSB7ICR0aGlzLT5hY3Rp
b25zWyRhY3Rpb25dID0gJHZhbHVlOyB9IGZ1bmN0aW9uIGdldEFjdGlvblZhbHVlKCRhY3Rpb25f
a2V5KSB7IHJldHVybiBAJHRoaXMtPmFjdGlvbnNbJGFjdGlvbl9rZXldOyB9IGZ1bmN0aW9uIGdl
dEZ1bGxQYWdlVXJsKCkgeyByZXR1cm4gJF9TRVJWRVJbJ1BIUF9TRUxGJ10gLiAnPycgLiBodHRw
X2J1aWxkX3F1ZXJ5KGFycmF5X21lcmdlKCR0aGlzLT5nZXRQYXJhbXMoKSwgJHRoaXMtPmdldE1v
cmVQYXJhbXMoKSkpOyB9IGZ1bmN0aW9uIGdldEZ1bGxQYWdlUGFyYW1zKCkgeyByZXR1cm4gYXJy
YXlfbWVyZ2UoJHRoaXMtPmdldFBhcmFtcygpLCAkdGhpcy0+Z2V0TW9yZVBhcmFtcygpKTsgfSBm
dW5jdGlvbiAmX2dldFBhcmFtcygkcGFyYW1zKSB7ICRwYXJhbXNfID0gYXJyYXkoKTsgZm9yZWFj
aCgkcGFyYW1zIGFzICR2KSB7IGlmKGlzc2V0KCRfR0VUWyR2XSkpIHsgJHBhcmFtc19bJHZdID0g
JF9HRVRbJHZdOyB9IH0gcmV0dXJuICRwYXJhbXNfOyB9IGZ1bmN0aW9uICZnZXRQYXJhbXMoKSB7
IHJldHVybiAkdGhpcy0+X2dldFBhcmFtcygkdGhpcy0+cGFyYW1zKTsgfSBmdW5jdGlvbiBnZXRN
b3JlUGFyYW1zKCkgeyByZXR1cm4gJHRoaXMtPl9nZXRQYXJhbXMoJHRoaXMtPm1vcmVfcGFyYW1z
KTsgfSBmdW5jdGlvbiBzZXRNb3JlUGFyYW1zKCR2YWwsICRyZWJ1aWx0X3BhcmFtcyA9IHRydWUp
IHsgJHZhbCA9IChpc19hcnJheSgkdmFsKSkgPyAkdmFsIDogYXJyYXkoJHZhbCk7IGZvcmVhY2go
JHZhbCBhcyAkdikgeyAkdGhpcy0+bW9yZV9wYXJhbXNbXSA9ICR2OyB9IGlmKCRyZWJ1aWx0X3Bh
cmFtcykgeyAkdGhpcy0+c2V0Q29tbW9uTGluaygpOyB9IH0gZnVuY3Rpb24gcmVtb3ZlTW9yZVBh
cmFtcygkdmFsLCAkcmVidWlsdF9wYXJhbXMgPSB0cnVlKSB7ICR2YWwgPSAoaXNfYXJyYXkoJHZh
bCkpID8gJHZhbCA6IGFycmF5KCR2YWwpOyBmb3JlYWNoKCR2YWwgYXMgJHYpIHsgJGtleSA9IGFy
cmF5X3NlYXJjaCgkdiwgJHRoaXMtPm1vcmVfcGFyYW1zKTsgaWYoJGtleSkgeyB1bnNldCgkdGhp
cy0+bW9yZV9wYXJhbXNbJGtleV0pOyB9IH0gaWYoJHJlYnVpbHRfcGFyYW1zKSB7ICR0aGlzLT5z
ZXRDb21tb25MaW5rKCk7IH0gfSBmdW5jdGlvbiBzZXRNb3JlUGFyYW1zQWpheCgkdmFsKSB7ICR2
YWwgPSAoaXNfYXJyYXkoJHZhbCkpID8gJHZhbCA6IGFycmF5KCR2YWwpOyBmb3JlYWNoKCR2YWwg
YXMgJHYpIHsgJHRoaXMtPm1vcmVfcGFyYW1zX2FqYXhbXSA9ICR2OyB9IH0gZnVuY3Rpb24gZ2V0
TW9yZVBhcmFtKCRwYXJhbSkgeyAkcmV0ID0gZmFsc2U7IGlmKGlzX2FycmF5KCRwYXJhbSkpIHsg
JHJldCA9ICghZW1wdHkoJF9HRVRbJHBhcmFtWzBdXVskcGFyYW1bMV1dKSkgPyAkX0dFVFskcGFy
YW1bMF1dWyRwYXJhbVsxXV0gOiBmYWxzZTsgfSBlbHNlIHsgJHJldCA9ICghZW1wdHkoJF9HRVRb
JHBhcmFtXSkpID8gJF9HRVRbJHBhcmFtXSA6IGZhbHNlOyB9IGlmKCRyZXQpIHsgJHJldCA9IChp
c19hcnJheSgkcmV0KSkgPyBhcnJheV9tYXAoJ3VybGVuY29kZScsICRyZXQpIDogdXJsZW5jb2Rl
KCRyZXQpOyB9IHJldHVybiAkcmV0OyB9IGZ1bmN0aW9uIHNldEN1c3RvbVBhZ2VUb1JldHVybigk
cGFnZSwgJHVuc2VyaWFsaXplID0gdHJ1ZSkgeyBAJGxpbmsgPSBXZWJVdGlsOjp1bnNlcmlhbGl6
ZV91cmwoJHBhZ2UpOyAkdGhpcy0+Y3VzdG9tX3BhZ2VfdG9fcmV0dXJuID0gKCRsaW5rID09PSBm
YWxzZSkgPyAkcGFnZSA6ICRsaW5rOyB9IGZ1bmN0aW9uIHNldERlbGF5VGltZSgkbXVsdGlwbGll
cikgeyAkdGhpcy0+ZGVsYXlfdGltZSA9ICR0aGlzLT5kZWxheV90aW1lKiRtdWx0aXBsaWVyOyB9
IGZ1bmN0aW9uIGdldFJlZmVyZXJMaW5rKCRyZWZlcmVyLCAkY2xpZW50X2xpbmsgPSBhcnJheSgp
KSB7ICRsaW5rID0gJyc7IGlmKHN0cnBvcygkcmVmZXJlciwgJ2NsaWVudCcpICE9PSBmYWxzZSkg
eyAkbGluayA9ICR0aGlzLT5nZXRDbGllbnRMaW5rKCRjbGllbnRfbGluayk7IH0gZWxzZWlmKHN0
cnBvcygkcmVmZXJlciwgJ2Vtb2RlJykgIT09IGZhbHNlKSB7ICRsaW5rID0gJHRoaXMtPmdldENs
aWVudExpbmsoJGNsaWVudF9saW5rKTsgfSBlbHNlaWYoJHJlZmVyZXIpIHsgJGxpbmsgPSBXZWJV
dGlsOjp1bnNlcmlhbGl6ZV91cmwoJHJlZmVyZXIpOyB9IHJldHVybiAkbGluazsgfSBmdW5jdGlv
biBnbygkbXNnID0gJ3N1Y2Nlc3MnLCAkc2FtZV9wYWdlID0gZmFsc2UsICRhZnRlcl9tc2cgPSBm
YWxzZSwgJGFjdGlvbiA9IGZhbHNlKSB7ICRlbnRyeV9pZCA9ICR0aGlzLT5nZXRSZXF1ZXN0VmFy
KCdpZCcpOyAkYWN0aW9uID0gKCEkYWN0aW9uKSA/ICR0aGlzLT5hY3Rpb24gOiAkYWN0aW9uOyAk
ZXh0cmFfZGF0YSA9IGZhbHNlOyBpZiAoJGFjdGlvbiA9PSAnYnVsaycpIHsgaWYgKGluX2FycmF5
KCR0aGlzLT5ycC0+dmFyc1snYnVsa19hY3Rpb24nXSwgYXJyYXkoJ2RlbGV0ZScsICd0cmFzaCcp
KSkgeyAkYWN0aW9uID0gJHRoaXMtPnJwLT52YXJzWydidWxrX2FjdGlvbiddOyAkZW50cnlfaWQg
PSAkdGhpcy0+cnAtPnZhcnNbJ2lkJ107IH0gZWxzZSB7ICRhY3Rpb24gPSAnYnVsa191cGRhdGUn
OyAkZXh0cmFfZGF0YSA9IGFycmF5KCAnYnVsa19hY3Rpb24nID0+ICR0aGlzLT5ycC0+dmFyc1sn
YnVsa19hY3Rpb24nXSwgJ2lkcycgPT4gJHRoaXMtPnJwLT52YXJzWydpZCddICk7IGlmICghZW1w
dHkoJHRoaXMtPnJwLT52YXJzWyd2YWx1ZSddWyRleHRyYV9kYXRhWydidWxrX2FjdGlvbiddIC4g
J19hY3Rpb24nXSkpIHsgJGV4dHJhX2RhdGFbJ2J1bGtfc3ViX2FjdGlvbiddID0gJHRoaXMtPnJw
LT52YXJzWyd2YWx1ZSddWyRleHRyYV9kYXRhWydidWxrX2FjdGlvbiddIC4gJ19hY3Rpb24nXTsg
fSB9IH0gaWYgKCRhY3Rpb24gIT0gJ3NraXAnKSB7IFVzZXJBY3Rpdml0eUxvZzo6YWRkQWN0aW9u
KCR0aGlzLT5tb2R1bGUsICR0aGlzLT5wYWdlLCAkYWN0aW9uLCAkZW50cnlfaWQsICRleHRyYV9k
YXRhKTsgfSAkcGFnZSA9ICR0aGlzLT5nZXRHb0xpbmsoJG1zZywgJHNhbWVfcGFnZSwgJGFmdGVy
X21zZyk7IGlmKCRzYW1lX3BhZ2UpIHsgaGVhZGVyKCJsb2NhdGlvbjogJHBhZ2UiKTsgZXhpdCgp
OyB9IGlmKCRtc2cgPT09ICdzdWNjZXNzJykgeyBpZihpbl9hcnJheSgkdGhpcy0+Z2V0UmVxdWVz
dFZhcignYWN0aW9uJyksIGFycmF5KCdpbnNlcnQnLCAnY2xvbmUnKSkpIHsgJG1zZyA9ICdhZGRl
ZCc7IH0gZWxzZWlmKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdhY3Rpb24nKSA9PSAndXBkYXRlJykg
eyAkbXNnID0gJ3VwZGF0ZWQnOyB9IGVsc2VpZihpbl9hcnJheSgkdGhpcy0+Z2V0UmVxdWVzdFZh
cignYWN0aW9uJyksIGFycmF5KCdkZWxldGUnLCAndHJhc2gnKSkpIHsgJG1zZyA9ICdkZWxldGVk
JzsgfSBlbHNlaWYoJHRoaXMtPmdldFJlcXVlc3RWYXIoJ2FjdGlvbicpID09ICdidWxrJykgeyAk
bXNnID0gJ2RhdGFfdXBkYXRlZCc7IH0gZWxzZSB7ICRtc2cgPSAnc3VjY2Vzcyc7IH0gfSBlbHNl
aWYoJG1zZyA9PT0gJ2NzcmYnKSB7ICRtc2cgPSAnY3NyZi1lcnJvcic7IH0gJF9TRVNTSU9OWydz
dWNjZXNzX21zZ18nXSA9ICRtc2c7IGhlYWRlcigibG9jYXRpb246ICRwYWdlIik7IGV4aXQoKTsg
fSBmdW5jdGlvbiBnZXRHb0xpbmsoJG1zZyA9ICdzdWNjZXNzJywgJHNhbWVfcGFnZSA9IGZhbHNl
LCAkYWZ0ZXJfbXNnID0gZmFsc2UpIHsgaW5pX3NldCgnYXJnX3NlcGFyYXRvci5vdXRwdXQnLCAn
JicpOyAkdGhpcy0+YXJnX3NlcGFyYXRvciA9ICcmJzsgJHRoaXMtPmZ1bGxfcGFnZSA9IHNlbGY6
Ol9yZXBsYWNlQXJnU2VwYXJhdG9yKCR0aGlzLT5mdWxsX3BhZ2UpOyBpZigkc2FtZV9wYWdlKSB7
ICRwYXJhbXMgPSBhcnJheSgkdGhpcy0+Z2V0UmVxdWVzdEtleSgnc2hvd19tc2cnKSA9PiAkbXNn
KTsgJHBhZ2UgPSAkdGhpcy0+ZnVsbF9wYWdlIC4gJHRoaXMtPmFyZ19zZXBhcmF0b3IgLiBodHRw
X2J1aWxkX3F1ZXJ5KCRwYXJhbXMpOyByZXR1cm4gJHBhZ2U7IH0gJHBhcmFtcyA9IGFycmF5KCk7
IGlmKCRhZnRlcl9tc2cpIHsgJHBhcmFtcyA9IGFycmF5KCR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdz
aG93X21zZycpID0+ICRhZnRlcl9tc2cpOyAkdGhpcy0+ZnVsbF9wYWdlID0gJHRoaXMtPmZ1bGxf
cGFnZSAuICR0aGlzLT5hcmdfc2VwYXJhdG9yIC4gaHR0cF9idWlsZF9xdWVyeSgkcGFyYW1zKTsg
fSAkcGFnZV90b19yZXR1cm4gPSAkdGhpcy0+ZnVsbF9wYWdlOyBpZigkdGhpcy0+Y3VzdG9tX3Bh
Z2VfdG9fcmV0dXJuKSB7ICRwYWdlX3RvX3JldHVybiA9IHNlbGY6Ol9yZXBsYWNlQXJnU2VwYXJh
dG9yKCR0aGlzLT5jdXN0b21fcGFnZV90b19yZXR1cm4pOyB9IHJldHVybiAkcGFnZV90b19yZXR1
cm47IH0gZnVuY3Rpb24gZ29VcmwoJHVybCkgeyAkdXJsID0gJHRoaXMtPl9yZXBsYWNlQXJnU2Vw
YXJhdG9yKCR1cmwpOyBoZWFkZXIoIkxvY2F0aW9uOiAiIC4gJHVybCk7IGV4aXQoKTsgfSBmdW5j
dGlvbiBnb1BhZ2UoJG1vZHVsZSA9IGZhbHNlLCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBm
YWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9yZSA9IGFycmF5KCkpIHsgJGxpbmsgPSAkdGhpcy0+
Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7ICRsaW5r
ID0gJHRoaXMtPl9yZXBsYWNlQXJnU2VwYXJhdG9yKCRsaW5rKTsgaGVhZGVyKCJsb2NhdGlvbjog
JGxpbmsiKTsgZXhpdCgpOyB9IGZ1bmN0aW9uIGdldEdvUGFnZUxpbmsoJG1vZHVsZSA9IGZhbHNl
LCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBmYWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9y
ZSA9IGFycmF5KCkpIHsgJGxpbmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1
Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7IHJldHVybiAkdGhpcy0+X3JlcGxhY2VBcmdTZXBhcmF0
b3IoJGxpbmspOyB9IGZ1bmN0aW9uIHNldFdvcmtpbmdEaXIoJGRpcnMgPSBhcnJheSgpKSB7ICRh
cltdID0gKGlzc2V0KCRkaXJzWydzdWJfcGFnZSddKSkgPyAkZGlyc1snc3ViX3BhZ2UnXSA6ICR0
aGlzLT5zdWJfcGFnZTsgJGFyW10gPSAoaXNzZXQoJGRpcnNbJ3BhZ2UnXSkpID8gJGRpcnNbJ3Bh
Z2UnXSA6ICR0aGlzLT5wYWdlOyAkYXJbXSA9IChpc3NldCgkZGlyc1snbW9kdWxlJ10pKSA/ICRk
aXJzWydtb2R1bGUnXSA6ICR0aGlzLT5tb2R1bGU7IGlmKCFmaWxlX2V4aXN0cygkdGhpcy0+bW9k
dWxlX2RpciAuICdjb25maWdfcGF0aC5waHAnKSkgeyByZXR1cm47IH0gcmVxdWlyZV9vbmNlICR0
aGlzLT5tb2R1bGVfZGlyIC4gJ2NvbmZpZ19wYXRoLnBocCc7IGZvcmVhY2goJGFyIGFzICRrID0+
ICR2KSB7IGlmKGlzc2V0KCRjb25mX21vZHVsZVskdl0pKXsgaWYoc3RycG9zKCRjb25mX21vZHVs
ZVskdl0sICd7JykgIT09IGZhbHNlKSB7ICRyID0gWyAne2V4dHJhX2Rpcn0nID0+ICR0aGlzLT5l
eHRyYV9tb2R1bGVfZGlyLCAne2FjY291bnRfZGlyfScgPT4gJHRoaXMtPmFjY291bnRfbW9kdWxl
X2RpciBdOyAkdGhpcy0+d29ya2luZ19kaXIgPSBzdHJ0cigkY29uZl9tb2R1bGVbJHZdLCAkcik7
IH0gZWxzZSB7ICR0aGlzLT53b3JraW5nX2RpciA9ICR0aGlzLT5tb2R1bGVfZGlyIC4gJGNvbmZf
bW9kdWxlWyR2XTsgfSBicmVhazsgfSB9IH0gZnVuY3Rpb24gZ2V0TGluaygkbW9kdWxlID0gZmFs
c2UsICRwYWdlID0gZmFsc2UsICRzdWJfcGFnZSA9IGZhbHNlLCAkYWN0aW9uID0gZmFsc2UsICRt
b3JlID0gYXJyYXkoKSkgeyBpZigkbW9kdWxlID09ICdhbGwnKSB7IHJldHVybiAkdGhpcy0+X2dl
dExpbmsoJHRoaXMtPmdldFJlcXVlc3RWYXIoJ21vZHVsZScpLCAkdGhpcy0+Z2V0UmVxdWVzdFZh
cigncGFnZScpLCAkdGhpcy0+Z2V0UmVxdWVzdFZhcignc3ViX3BhZ2UnKSwgJHRoaXMtPmdldFJl
cXVlc3RWYXIoJ2FjdGlvbicpLCAkbW9yZSApOyB9IGVsc2VpZigkbW9kdWxlID09ICdtYWluJykg
eyByZXR1cm4gJHRoaXMtPl9nZXRMaW5rKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1bGUnKSwg
JHRoaXMtPmdldFJlcXVlc3RWYXIoJ3BhZ2UnKSwgJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3N1Yl9w
YWdlJykgKTsgfSBlbHNlaWYoJG1vZHVsZSA9PSAnZnVsbCcpIHsgJG1vcmUgPSAkdGhpcy0+Z2V0
RnVsbFBhZ2VQYXJhbXMoKSArICRtb3JlOyB1bnNldCgkbW9yZVsnbW9kdWxlJ10sICRtb3JlWydw
YWdlJ10sICRtb3JlWydzdWJfcGFnZSddLCAkbW9yZVsnYWN0aW9uJ10pOyByZXR1cm4gJHRoaXMt
Pl9nZXRMaW5rKCR0aGlzLT5nZXRSZXF1ZXN0VmFyKCdtb2R1bGUnKSwgJHRoaXMtPmdldFJlcXVl
c3RWYXIoJ3BhZ2UnKSwgJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3N1Yl9wYWdlJyksICR0aGlzLT5n
ZXRSZXF1ZXN0VmFyKCdhY3Rpb24nKSwgJG1vcmUgKTsgfSBlbHNlIHsgJG1vZHVsZSA9ICgkbW9k
dWxlID09ICd0aGlzJykgPyAkdGhpcy0+Z2V0UmVxdWVzdFZhcignbW9kdWxlJykgOiAkbW9kdWxl
OyAkcGFnZSA9ICgkcGFnZSA9PSAndGhpcycpID8gJHRoaXMtPmdldFJlcXVlc3RWYXIoJ3BhZ2Un
KSA6ICRwYWdlOyAkc3ViX3BhZ2UgPSAoJHN1Yl9wYWdlID09ICd0aGlzJykgPyAkdGhpcy0+Z2V0
UmVxdWVzdFZhcignc3ViX3BhZ2UnKSA6ICRzdWJfcGFnZTsgJGFjdGlvbiA9ICgkYWN0aW9uID09
ICd0aGlzJykgPyAkdGhpcy0+Z2V0UmVxdWVzdFZhcignYWN0aW9uJykgOiAkYWN0aW9uOyByZXR1
cm4gJHRoaXMtPl9nZXRMaW5rKCRtb2R1bGUsICRwYWdlLCAkc3ViX3BhZ2UsICRhY3Rpb24sICRt
b3JlKTsgfSB9IGZ1bmN0aW9uIF9nZXRBY3Rpb25MaW5rKCRhY3Rpb25fdmFsdWUsICRyZWNvcmRf
aWQgPSBmYWxzZSwgJG1vcmVfcGFyYW1zID0gYXJyYXkoKSkgeyAkYXJnID0gJHRoaXMtPmFyZ19z
ZXBhcmF0b3I7ICRjb21tb25fbGluayA9ICR0aGlzLT5nZXRDb21tb25MaW5rKCk7ICRhY3Rpb25f
a2V5ID0gJHRoaXMtPmdldFJlcXVlc3RLZXkoJ2FjdGlvbicpOyAkaWRfcGFyYW0gPSAoJHJlY29y
ZF9pZCkgPyBzcHJpbnRmKCIlcyVzPSVkIiwgJGFyZywgJHRoaXMtPmlkX2tleSwgJHJlY29yZF9p
ZCkgOiAnJzsgJGFjdGlvbl92YWwgPSAkdGhpcy0+Z2V0QWN0aW9uVmFsdWUoJGFjdGlvbl92YWx1
ZSk7ICRhY3Rpb25fdmFsdWUgPSAoJGFjdGlvbl92YWwpID8gJGFjdGlvbl92YWwgOiAkYWN0aW9u
X3ZhbHVlOyAkbW9yZV9wYXJhbXMgPSAoJG1vcmVfcGFyYW1zKSA/ICRhcmcgLiBodHRwX2J1aWxk
X3F1ZXJ5KCRtb3JlX3BhcmFtcykgOiAnJzsgJHN0ciA9ICclcyVzJXM9JXMlcyVzJzsgJHN0ciA9
IHNwcmludGYoJHN0ciwgJGNvbW1vbl9saW5rLCAkYXJnLCAkYWN0aW9uX2tleSwgJGFjdGlvbl92
YWx1ZSwgJGlkX3BhcmFtLCAkbW9yZV9wYXJhbXMpOyByZXR1cm4gJHN0cjsgfSBmdW5jdGlvbiBn
ZXRBY3Rpb25MaW5rKCRhY3Rpb25fdmFsLCAkcmVjb3JkX2lkID0gZmFsc2UsICRtb3JlX3BhcmFt
cyA9IGFycmF5KCkpIHsgcmV0dXJuICR0aGlzLT5fZ2V0QWN0aW9uTGluaygkYWN0aW9uX3ZhbCwg
JHJlY29yZF9pZCwgJG1vcmVfcGFyYW1zKTsgfSBwcml2YXRlIGZ1bmN0aW9uIF9nZXRMaW5rKCRt
b2R1bGUgPSBmYWxzZSwgJHBhZ2UgPSBmYWxzZSwgJHN1Yl9wYWdlID0gZmFsc2UsICRhY3Rpb24g
PSBmYWxzZSwgJG1vcmUgPSBhcnJheSgpKSB7IGlmKCRtb2R1bGUpIHsgJGxpbmtbMV0gPSBzcHJp
bnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdtb2R1bGUnKSwgJG1vZHVsZSk7IH0g
aWYoJHBhZ2UpIHsgJGxpbmtbMl0gPSBzcHJpbnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0
S2V5KCdwYWdlJyksICRwYWdlKTsgfSBpZigkc3ViX3BhZ2UpIHsgJGxpbmtbM10gPSBzcHJpbnRm
KCclcz0lcycsICR0aGlzLT5nZXRSZXF1ZXN0S2V5KCdzdWJfcGFnZScpLCAkc3ViX3BhZ2UpOyB9
IGlmKCRhY3Rpb24pIHsgJGxpbmtbNF0gPSBzcHJpbnRmKCclcz0lcycsICR0aGlzLT5nZXRSZXF1
ZXN0S2V5KCdhY3Rpb24nKSwgJGFjdGlvbik7IH0gJGxpbmsgPSAoZW1wdHkoJGxpbmspKSA/ICR0
aGlzLT5zZWxmX3BhZ2UgOiAkdGhpcy0+c2VsZl9wYWdlIC4gJz8nIC4gaW1wbG9kZSgkdGhpcy0+
YXJnX3NlcGFyYXRvciwgJGxpbmspOyAkbGluayAuPSAoJG1vcmUpID8gJHRoaXMtPmFyZ19zZXBh
cmF0b3IgLiBodHRwX2J1aWxkX3F1ZXJ5KCRtb3JlKSA6ICcnOyByZXR1cm4gJGxpbms7IH0gZnVu
Y3Rpb24gZ2V0U2hvcnRMaW5rKCRtb2R1bGUgPSBmYWxzZSwgJHBhZ2UgPSBmYWxzZSwgJHN1Yl9w
YWdlID0gZmFsc2UsICRhY3Rpb24gPSBmYWxzZSwgJG1vcmUgPSBhcnJheSgpKSB7ICR0aGlzLT5z
ZWxmX3BhZ2UgPSAnJzsgJGxpbmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1
Yl9wYWdlLCAkYWN0aW9uLCAkbW9yZSk7ICRsaW5rID0gc3RyX3JlcGxhY2UoJz8nLCAnJywgJGxp
bmspOyByZXR1cm4gJGxpbms7IH0gZnVuY3Rpb24gZ2V0RnVsbExpbmsoJG1vZHVsZSA9IGZhbHNl
LCAkcGFnZSA9IGZhbHNlLCAkc3ViX3BhZ2UgPSBmYWxzZSwgJGFjdGlvbiA9IGZhbHNlLCAkbW9y
ZSA9IGFycmF5KCkpIHsgJHNlbGZfcGFnZSA9ICR0aGlzLT5zZWxmX3BhZ2U7ICR0aGlzLT5zZWxm
X3BhZ2UgPSBBUFBfQURNSU5fUEFUSCAuICdpbmRleC5waHAnOyAkbGluayA9ICR0aGlzLT5nZXRM
aW5rKCRtb2R1bGUsICRwYWdlLCAkc3ViX3BhZ2UsICRhY3Rpb24sICRtb3JlKTsgJHRoaXMtPnNl
bGZfcGFnZSA9ICRzZWxmX3BhZ2U7IHJldHVybiAkbGluazsgfSBmdW5jdGlvbiBnZXRBamF4TGlu
aygkbW9kdWxlID0gZmFsc2UsICRwYWdlID0gZmFsc2UsICRzdWJfcGFnZSA9IGZhbHNlLCAkYWN0
aW9uID0gZmFsc2UsICRtb3JlID0gYXJyYXkoKSkgeyAkbW9yZSA9IFJlcXVlc3REYXRhVXRpbDo6
YWRkc2xhc2hlcygkbW9yZSk7IGlmKGVtcHR5KCRtb3JlKSAmJiBpc3NldCgkX0dFVFsnaWQnXSkp
IHsgJG1vcmUgPSBhcnJheSgnaWQnID0+IChpbnQpICRfR0VUWydpZCddKTsgfSBmb3JlYWNoKCR0
aGlzLT5tb3JlX3BhcmFtc19hamF4IGFzICR2KXsgaWYoaXNzZXQoJF9HRVRbJHZdKSkgeyAkbW9y
ZVskdl0gPSBhZGRzbGFzaGVzKCRfR0VUWyR2XSk7IH0gfSAkbW9yZVsnYWpheCddID0gMTsgJGxp
bmsgPSAkdGhpcy0+Z2V0TGluaygkbW9kdWxlLCAkcGFnZSwgJHN1Yl9wYWdlLCAkYWN0aW9uLCAk
bW9yZSk7ICRsaW5rID0gJHRoaXMtPl9yZXBsYWNlQXJnU2VwYXJhdG9yKCRsaW5rKTsgcmV0dXJu
ICRsaW5rOyB9IHN0YXRpYyBmdW5jdGlvbiBnZXRSZWZMaW5rKCRtb2R1bGUgPSBmYWxzZSwgJHBh
Z2UgPSBmYWxzZSwgJHN1Yl9wYWdlID0gZmFsc2UsICRhY3Rpb24gPSBmYWxzZSwgJG1vcmUgPSBh
cnJheSgpLCAkcmVwbGFjZV9hcmcgPSB0cnVlKSB7ICRwID0gQVBQX0FETUlOX1BBVEggLiAnaW5k
ZXgucGhwJzsgaWYoJG1vZHVsZSkgeyAkYyA9IG5ldyBBcHBDb250cm9sbGVyKCk7ICRtb3JlWydy
J10gPSAxOyAkbGluayA9ICRjLT5nZXRTaG9ydExpbmsoJG1vZHVsZSwgJHBhZ2UsICRzdWJfcGFn
ZSwgJGFjdGlvbiwgJG1vcmUpOyBpZigkcmVwbGFjZV9hcmcpIHsgJGxpbmsgPSAkYy0+X3JlcGxh
Y2VBcmdTZXBhcmF0b3IoJGxpbmspOyB9ICRwID0gJHAgLiAnPycgLiAkbGluazsgfSByZXR1cm4g
JHA7IH0gZnVuY3Rpb24gZ2V0Q2xpZW50TGluaygkY2xpZW50X2xpbmssICRzZXJpYWxpemUgPSBm
YWxzZSkgeyAkY2MgPSAmJHRoaXMtPmdldENsaWVudENvbnRyb2xsZXIoKTsgQCRsaW5rID0gJGNj
LT5nZXRSZWRpcmVjdExpbmsoJGNsaWVudF9saW5rWzBdLCAkY2xpZW50X2xpbmtbMV0sICRjbGll
bnRfbGlua1syXSwgJGNsaWVudF9saW5rWzNdLCAkY2xpZW50X2xpbmtbNF0pOyBpZigkc2VyaWFs
aXplKSB7ICRsaW5rID0gV2ViVXRpbDo6c2VyaWFsaXplX3VybCgkbGluayk7IH0gcmV0dXJuICRs
aW5rOyB9IGZ1bmN0aW9uIGdldFB1YmxpY0xpbmsoJHZpZXcsICRkYXRhLCAkbW9yZSA9IFtdKSB7
IHN0YXRpYyAkY2M7IGlmKCRjYyA9PT0gbnVsbCkgeyAkc2V0dGluZ3MgPSBTZXR0aW5nTW9kZWw6
OmdldFF1aWNrKDIpOyAkY2MgPSAkdGhpcy0+Z2V0Q2xpZW50Q29udHJvbGxlcigkc2V0dGluZ3Mp
OyAkY2MtPnNldE1vZFJld3JpdGUoJHNldHRpbmdzWydtb2RfcmV3cml0ZSddKTsgfSAkZW50cnlf
aWQgPSAkZGF0YVsnaWQnXTsgaWYoJHZpZXcgIT0gJ2ZpbGUnKSB7ICRlbnRyeV9pZCA9ICRjYy0+
Z2V0RW50cnlMaW5rUGFyYW1zKCRkYXRhWydpZCddLCAkZGF0YVsndGl0bGUnXSk7IH0gJGxpbmsg
PSAkY2MtPmdldExpbmsoJHZpZXcsIGZhbHNlLCAkZW50cnlfaWQsIGZhbHNlLCAkbW9yZSwgdHJ1
ZSk7IHJldHVybiAkbGluazsgfSBzdGF0aWMgZnVuY3Rpb24gZ2V0QWpheExpbmtUb0ZpbGUoJHR5
cGUsICRtb3JlID0gYXJyYXkoKSkgeyAkcmVnID0gJlJlZ2lzdHJ5OjppbnN0YW5jZSgpOyAkY29u
ZiA9ICYkcmVnLT5nZXRFbnRyeSgnY29uZicpOyAkY2xpZW50X3BhdGggPSBBUFBfQ0xJRU5UX1BB
VEg7IGlmKCRjb25mWydzc2xfYWRtaW4nXSkgeyAkY2xpZW50X3BhdGggPSBzdHJfcmVwbGFjZSgn
aHR0cDovLycsICdodHRwczovLycsIEFQUF9DTElFTlRfUEFUSCk7IH0gJG1vcmUgPSBSZXF1ZXN0
RGF0YVV0aWw6OmFkZHNsYXNoZXMoJG1vcmUpOyAkbGluayA9ICRjbGllbnRfcGF0aCAuICdlbmRw
b2ludC5waHAnOyAkbGluayAuPSAoJHR5cGUpID8gJz90eXBlPScgLiAkdHlwZSA6ICcnOyAkbGlu
ayAuPSAoJG1vcmUpID8gJyYnIC4gaHR0cF9idWlsZF9xdWVyeSgkbW9yZSkgOiAnJzsgJGxpbmsg
PSBBcHBDb250cm9sbGVyOjpfcmVwbGFjZUFyZ1NlcGFyYXRvcigkbGluayk7IHJldHVybiAkbGlu
azsgfSBzdGF0aWMgZnVuY3Rpb24gaXNBamF4Q2FsbCgpIHsgcmV0dXJuICghZW1wdHkoJF9HRVRb
J2FqYXgnXSkpOyB9IHN0YXRpYyBmdW5jdGlvbiBfcmVwbGFjZUFyZ1NlcGFyYXRvcigkc3RyKSB7
IHJldHVybiBzdHJfcmVwbGFjZSgnJmFtcDsnLCAnJicsICRzdHIpOyB9IHN0YXRpYyBmdW5jdGlv
biAmZ2V0Q2xpZW50Q29udHJvbGxlcigkc2V0dGluZ3MgPSBbXSkgeyAkY29udHJvbGxlciA9IG5l
dyBLQkNsaWVudENvbnRyb2xsZXIoKTsgJGNvbnRyb2xsZXItPmtiX3BhdGggPSBBUFBfQ0xJRU5U
X1BBVEg7ICRjb250cm9sbGVyLT5saW5rX3BhdGggPSBBUFBfQ0xJRU5UX1BBVEg7IGlmKCRzZXR0
aW5ncykgeyAkY29udHJvbGxlci0+c2V0RGlyVmFycygkc2V0dGluZ3MpOyB9IHJldHVybiAkY29u
dHJvbGxlcjsgfSBmdW5jdGlvbiBnb1ZpZXcoJiRvYmosICYkbWFuYWdlciwgJGNsYXNzLCAkdmFs
dWVzID0gYXJyYXkoKSkgeyAkdmlldyA9IG5ldyAkY2xhc3M7ICR2aWV3LT5leGVjdXRlKCRvYmos
ICRtYW5hZ2VyLCAkdmFsdWVzKTsgfSBmdW5jdGlvbiBnZXRWaWV3KCYkb2JqLCAmJG1hbmFnZXIs
ICRjbGFzcywgJHZhbHVlcyA9IGFycmF5KCkpIHsgJHZpZXcgPSBuZXcgJGNsYXNzOyByZXR1cm4g
JHZpZXctPmV4ZWN1dGUoJG9iaiwgJG1hbmFnZXIsICR2YWx1ZXMpOyB9IGZ1bmN0aW9uIGlzQ2xh
c3MoJGNsYXNzX25hbWUsICRwYXRoID0gZmFsc2UpIHsgJGNsYXNzX25hbWUgPSAkY2xhc3NfbmFt
ZSAuICcucGhwJzsgaWYoJHBhdGgpIHsgJHBbXSA9ICR0aGlzLT5tb2R1bGVfZGlyIC4gJHBhdGgg
LiAnL2luYy8nOyAkcFtdID0gJHRoaXMtPmV4dHJhX21vZHVsZV9kaXIgLiAkcGF0aCAuICcvaW5j
Lyc7IGZvcmVhY2goJHAgYXMgJHYpIHsgaWYoZmlsZV9leGlzdHMoJHYgLiAkY2xhc3NfbmFtZSkp
IHsgcmV0dXJuIHRydWU7IH0gfSB9IGVsc2UgeyBpZihmaWxlX2V4aXN0cygkdGhpcy0+d29ya2lu
Z19kaXIgLiAnaW5jLycgLiAkY2xhc3NfbmFtZSkpIHsgcmV0dXJuIHRydWU7IH0gfSByZXR1cm4g
ZmFsc2U7IH0gfSAK

Function Calls

None

Variables

None

Stats

MD5 58fdc53139aee36ef05b8a4fbfdb589e
Eval Count 0
Decode Time 106 ms