mberr · data · 2.7c767379.chunk.js_65
{
"2.7c767379.chunk.js_65": "base64:LnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09bihlKT9lLnNwbGl0KCIiKTpPYmplY3QoZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NjcpLGk9cigyODUpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgzKSxpPXIoOTcyKSxvPXIoOTczKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcyx1PW4odCksYz1pKHUubGVuZ3RoKSxmPW8oYSxjKTtpZihlJiZyIT1yKXtmb3IoO2M+ZjspaWYoKHM9dVtmKytdKSE9cylyZXR1cm4hMH1lbHNlIGZvcig7Yz5mO2YrKylpZigoZXx8ZiBpbiB1KSYmdVtmXT09PXIpcmV0dXJuIGV8fGZ8fDA7cmV0dXJuIWUmJi0xfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9pKG4oZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1heCxvPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybihlPW4oZSkpPDA/aShlK3QsMCk6byhlLHQpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTg5KSxpPXIoOTc1KSxvPXIoMjg1KSxhPXIoNDY4KSgiSUVfUFJPVE8iKSxzPWZ1bmN0aW9uKCl7fSx1PWZ1bmN0aW9uKCl7dmFyIGUsdD1yKDQ1OSkoImlmcmFtZSIpLG49by5sZW5ndGg7Zm9yKHQuc3R5bGUuZGlzcGxheT0ibm9uZSIscig5NzcpLmFwcGVuZENoaWxkKHQpLHQuc3JjPSJqYXZhc2NyaXB0OiIsKGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksZS53cml0ZSgiPHNjcmlwdD5kb2N1bWVudC5GPU9iamVjdDxcL3NjcmlwdD4iKSxlLmNsb3NlKCksdT1lLkY7bi0tOylkZWxldGUgdS5wcm90b3R5cGVbb1tuXV07cmV0dXJuIHUoKX07ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIG51bGwhPT1lPyhzLnByb3RvdHlwZT1uKGUpLHI9bmV3IHMscy5wcm90b3R5cGU9bnVsbCxyW2FdPWUpOnI9dSgpLHZvaWQgMD09PXQ/cjppKHIsdCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyNzgpLGk9cigxODkpLG89cig5NzYpO2UuZXhwb3J0cz1yKDExNik/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oZSx0KXtpKGUpO2Zvcih2YXIgcixhPW8odCkscz1hLmxlbmd0aCx1PTA7cz51OyluLmYoZSxyPWFbdSsrXSx0W3JdKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ2NyksaT1yKDI4NSk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLmRvY3VtZW50O2UuZXhwb3J0cz1uJiZuLmRvY3VtZW50RWxlbWVudH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE2KSxpPXIoMTkxKSxvPXIoNDY5KSxhPXIoOTc5KSxzPTEuLnRvRml4ZWQsdT1NYXRoLmZsb29yLGM9WzAsMCwwLDAsMCwwXSxmPSJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hIixsPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49dDsrK3I8Njspbis9ZSpjW3JdLGNbcl09biUxZTcsbj11KG4vMWU3KX0saD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9NixyPTA7LS10Pj0wOylyKz1jW3RdLGNbdF09dShyL2UpLHI9ciVlKjFlN30scD1mdW5jdGlvbigpe2Zvcih2YXIgZT02LHQ9IiI7LS1lPj0wOylpZigiIiE9PXR8fDA9PT1lfHwwIT09Y1tlXSl7dmFyIHI9U3RyaW5nKGNbZV0pO3Q9IiI9PT10P3I6dCthLmNhbGwoIjAiLDctci5sZW5ndGgpK3J9cmV0dXJuIHR9LGQ9ZnVuY3Rpb24gZSh0LHIsbil7cmV0dXJuIDA9PT1yP246ciUyPT09MT9lKHQsci0xLG4qdCk6ZSh0KnQsci8yLG4pfTtuKG4uUCtuLkYqKCEhcyYmKCIwLjAwMCIhPT04ZS01LnRvRml4ZWQoMyl8fCIxIiE9PS45LnRvRml4ZWQoMCl8fCIxLjI1IiE9PTEuMjU1LnRvRml4ZWQoMil8fCIxMDAwMDAwMDAwMDAwMDAwMTI4IiE9PSgweGRlMGI2YjNhNzY0MDA4MCkudG9GaXhlZCgwKSl8fCFyKDg0KShmdW5jdGlvbigpe3MuY2FsbCh7fSl9KSksIk51bWJlciIse3RvRml4ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQscixuLHMsdT1vKHRoaXMsZiksYz1pKGUpLHk9IiIsZz0iMCI7aWYoYzwwfHxjPjIwKXRocm93IFJhbmdlRXJyb3IoZik7aWYodSE9dSlyZXR1cm4iTmFOIjtpZih1PD0tMWUyMXx8dT49MWUyMSlyZXR1cm4gU3RyaW5nKHUpO2lmKHU8MCYmKHk9Ii0iLHU9LXUpLHU+MWUtMjEpaWYocj0odD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPWU7cj49NDA5NjspdCs9MTIsci89NDA5Njtmb3IoO3I+PTI7KXQrPTEsci89MjtyZXR1cm4gdH0odSpkKDIsNjksMSkpLTY5KTwwP3UqZCgyLC10LDEpOnUvZCgyLHQsMSkscio9NDUwMzU5OTYyNzM3MDQ5NiwodD01Mi10KT4wKXtmb3IobCgwLHIpLG49YztuPj03OylsKDFlNywwKSxuLT03O2ZvcihsKGQoMTAsbiwxKSwwKSxuPXQtMTtuPj0yMzspaCgxPDwyMyksbi09MjM7aCgxPDxuKSxsKDEsMSksaCgyKSxnPXAoKX1lbHNlIGwoMCxyKSxsKDE8PC10LDApLGc9cCgpK2EuY2FsbCgiMCIsYyk7cmV0dXJuIGc9Yz4wP3krKChzPWcubGVuZ3RoKTw9Yz8iMC4iK2EuY2FsbCgiMCIsYy1zKStnOmcuc2xpY2UoMCxzLWMpKyIuIitnLnNsaWNlKHMtYykpOnkrZ319KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE5MSksaT1yKDI4NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhpKHRoaXMpKSxyPSIiLG89bihlKTtpZihvPDB8fG89PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZSIpO2Zvcig7bz4wOyhvPj4+PTEpJiYodCs9dCkpMSZvJiYocis9dCk7cmV0dXJuIHJ9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTYpLGk9cig4NCksbz1yKDQ2OSksYT0xLi50b1ByZWNpc2lvbjtuKG4uUCtuLkYqKGkoZnVuY3Rpb24oKXtyZXR1cm4iMSIhPT1hLmNhbGwoMSx2b2lkIDApfSl8fCFpKGZ1bmN0aW9uKCl7YS5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9QcmVjaXNpb246ZnVuY3Rpb24oZSl7dmFyIHQ9byh0aGlzLCJOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiB2b2lkIDA9PT1lP2EuY2FsbCh0KTphLmNhbGwodCxlKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDczKS5pc0Zpbml0ZTtuKG4uUywiTnVtYmVyIix7aXNGaW5pdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiZpKGUpfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNik7bihuLlMsIk51bWJlciIse2lzSW50ZWdlcjpyKDQ3MCl9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtpc05hTjpmdW5jdGlvbihlKXtyZXR1cm4gZSE9ZX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9cig0NzApLG89TWF0aC5hYnM7bihuLlMsIk51bWJlciIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkmJm8oZSk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUFYX1NBRkVfSU5URUdFUjo5MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDk4OSk7bihuLlMrbi5GKihOdW1iZXIucGFyc2VGbG9hdCE9aSksIk51bWJlciIse3BhcnNlRmxvYXQ6aX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3MykucGFyc2VGbG9hdCxpPXIoMjg2KS50cmltO2UuZXhwb3J0cz0xL24ocigyODcpKyItMCIpIT09LTEvMD9mdW5jdGlvbihlKXt2YXIgdD1pKFN0cmluZyhlKSwzKSxyPW4odCk7cmV0dXJuIDA9PT1yJiYiLSI9PXQuY2hhckF0KDApPy0wOnJ9Om59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoOTkxKTtuKG4uUytuLkYqKE51bWJlci5wYXJzZUludCE9aSksIk51bWJlciIse3BhcnNlSW50Oml9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLnBhcnNlSW50LGk9cigyODYpLnRyaW0sbz1yKDI4NyksYT0vXlstK10/MFt4WF0vO2UuZXhwb3J0cz04IT09bihvKyIwOCIpfHwyMiE9PW4obysiMHgxNiIpP2Z1bmN0aW9uKGUsdCl7dmFyIHI9aShTdHJpbmcoZSksMyk7cmV0dXJuIG4ocix0Pj4+MHx8KGEudGVzdChyKT8xNjoxMCkpfTpufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9T2JqZWN0LnByb3RvdHlwZSxvPWkuaGFzT3duUHJvcGVydHksYT1pLnRvU3RyaW5nLHM9bj9uLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9by5jYWxsKGUscykscj1lW3NdO3RyeXtlW3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh1KXt9dmFyIGk9YS5jYWxsKGUpO3JldHVybiBuJiYodD9lW3NdPXI6ZGVsZXRlIGVbc10pLGl9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTk1KTtmdW5jdGlvbiBpKCl7fWZ1bmN0aW9uIG8oKXt9by5yZXNldFdhcm5pbmdDYWNoZT1pLGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIsaSxvLGEpe2lmKGEhPT1uKXt2YXIgcz1uZXcgRXJyb3IoIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTt0aHJvdyBzLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLHN9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgcj17YXJyYXk6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6byxyZXNldFdhcm5pbmdDYWNoZTppfTtyZXR1cm4gci5Qcm9wVHlwZXM9cixyfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDcyKSxpPXIoNDc0KSxvPXIoMTAyNSksYT1yKDEwMjgpLHM9cigxMDQyKSx1PXIoOSksYz1yKDQ3OCksZj1yKDQ3OSksbD0xLGg9IltvYmplY3QgQXJndW1lbnRzXSIscD0iW29iamVjdCBBcnJheV0iLGQ9IltvYmplY3QgT2JqZWN0XSIseT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixnLHYsbSl7dmFyIGI9dShlKSxfPXUodCksUz1iP3A6cyhlKSxFPV8/cDpzKHQpLHc9KFM9Uz09aD9kOlMpPT1kLFQ9KEU9RT09aD9kOkUpPT1kLEE9Uz09RTtpZihBJiZjKGUpKXtpZighYyh0KSlyZXR1cm4hMTtiPSEwLHc9ITF9aWYoQSYmIXcpcmV0dXJuIG18fChtPW5ldyBuKSxifHxmKGUpP2koZSx0LHIsZyx2LG0pOm8oZSx0LFMscixnLHYsbSk7aWYoIShyJmwpKXt2YXIgQz13JiZ5LmNhbGwoZSwiX193cmFwcGVkX18iKSx4PVQmJnkuY2FsbCh0LCJfX3dyYXBwZWRfXyIpO2lmKEN8fHgpe3ZhciBJPUM/ZS52YWx1ZSgpOmUsaz14P3QudmFsdWUoKTp0O3JldHVybiBtfHwobT1uZXcgbiksdihJLGsscixnLG0pfX1yZXR1cm4hIUEmJihtfHwobT1uZXcgbiksYShlLHQscixnLHYsbSkpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKSxpPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj1uKHQsZSk7cmV0dXJuIShyPDApJiYocj09dC5sZW5ndGgtMT90LnBvcCgpOmkuY2FsbCh0LHIsMSksLS10aGlzLnNpemUsITApfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxyPW4odCxlKTtyZXR1cm4gcjwwP3ZvaWQgMDp0W3JdWzFdfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5fX2RhdGFfXyxlKT4tMX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Myk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxpPW4ocixlKTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW2UsdF0pKTpyW2ldWzFdPXQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgbix0aGlzLnNpemU9MH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj10LmRlbGV0ZShlKTtyZXR1cm4gdGhpcy5zaXplPXQuc2l6ZSxyfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkyKSxpPXIoMjkwKSxvPXIoMjkxKSxhPTIwMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKHIgaW5zdGFuY2VvZiBuKXt2YXIgcz1yLl9fZGF0YV9fO2lmKCFpfHxzLmxlbmd0aDxhLTEpcmV0dXJuIHMucHVzaChbZSx0XSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBvKHMpfXJldHVybiByLnNldChlLHQpLHRoaXMuc2l6ZT1yLnNpemUsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDMpLGk9cigxMDA4KSxvPXIoMzUpLGE9cig0NzMpLHM9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sdT1GdW5jdGlvbi5wcm90b3R5cGUsYz1PYmplY3QucHJvdG90eXBlLGY9dS50b1N0cmluZyxsPWMuaGFzT3duUHJvcGVydHksaD1SZWdFeHAoIl4iK2YuY2FsbChsKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuISghbyhlKXx8aShlKSkmJihuKGUpP2g6cykudGVzdChhKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMDkpLGk9ZnVuY3Rpb24oKXt2YXIgZT0vW14uXSskLy5leGVjKG4mJm4ua2V5cyYmbi5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIGU/IlN5bWJvbChzcmMpXzEuIitlOiIifSgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4hIWkmJmkgaW4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY0KVsiX19jb3JlLWpzX3NoYXJlZF9fIl07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDEyKSxpPXIoMTkyKSxvPXIoMjkwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBuLG1hcDpuZXcob3x8aSksc3RyaW5nOm5ldyBufX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMTMpLGk9cigxMDE0KSxvPXIoMTAxNSksYT1yKDEwMTYpLHM9cigxMDE3KTtmdW5jdGlvbiB1KGUpe3ZhciB0PS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PHI7KXt2YXIgbj1lW3RdO3RoaXMuc2V0KG5bMF0sblsxXSl9fXUucHJvdG90eXBlLmNsZWFyPW4sdS5wcm90b3R5cGUuZGVsZXRlPWksdS5wcm90b3R5cGUuZ2V0PW8sdS5wcm90b3R5cGUuaGFzPWEsdS5wcm90b3R5cGUuc2V0PXMsZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uP24obnVsbCk6e30sdGhpcy5zaXplPTB9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmhhcyhlKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZV07cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKG4pe3ZhciByPXRbZV07cmV0dXJuIHI9PT1pP3ZvaWQgMDpyfXJldHVybiBvLmNhbGwodCxlKT90W2VdOnZvaWQgMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiBuP3ZvaWQgMCE9PXRbZV06aS5jYWxsKHQsZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTQpLGk9Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXMoZSk/MDoxLHJbZV09biYmdm9pZCAwPT09dD9pOnQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4odGhpcyxlKS5kZWxldGUoZSk7cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiJzdHJpbmciPT10fHwibnVtYmVyIj09dHx8InN5bWJvbCI9PXR8fCJib29sZWFuIj09dD8iX19wcm90b19fIiE9PWU6bnVsbD09PWV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTUpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbih0aGlzLGUpLmdldChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMsZSkuaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uKHRoaXMsZSksaT1yLnNpemU7cmV0dXJuIHIuc2V0KGUsdCksdGhpcy5zaXplKz1yLnNpemU9PWk/MDoxLHRoaXN9fSxmdW5jdGlvbihlLHQpe3ZhciByPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KGUsciksdGhpc319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE1MSksaT1yKDEwMjYpLG89cigyODkpLGE9cig0NzQpLHM9cigxMDI3KSx1PXIoMjk0KSxjPTEsZj0yLGw9IltvYmplY3QgQm9vbGVhbl0iLGg9IltvYmplY3QgRGF0ZV0iLHA9IltvYmplY3QgRXJyb3JdIixkPSJbb2JqZWN0IE1hcF0iLHk9IltvYmplY3QgTnVtYmVyXSIsZz0iW29iamVjdCBSZWdFeHBdIix2PSJbb2JqZWN0IFNldF0iLG09IltvYmplY3QgU3RyaW5nXSIsYj0iW29iamVjdCBTeW1ib2xdIixfPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsUz0iW29iamVjdCBEYXRhVmlld10iLEU9bj9uLnByb3RvdHlwZTp2b2lkIDAsdz1FP0UudmFsdWVPZjp2b2lkIDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4sRSxULEEpe3N3aXRjaChyKXtjYXNlIFM6aWYoZS5ieXRlTGVuZ3RoIT10LmJ5dGVMZW5ndGh8fGUuYnl0ZU9mZnNldCE9dC5ieXRlT2Zmc2V0KXJldHVybiExO2U9ZS5idWZmZXIsdD10LmJ1ZmZlcjtjYXNlIF86cmV0dXJuIShlLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8IVQobmV3IGkoZSksbmV3IGkodCkpKTtjYXNlIGw6Y2FzZSBoOmNhc2UgeTpyZXR1cm4gbygrZSwrdCk7Y2FzZSBwOnJldHVybiBlLm5hbWU9PXQubmFtZSYmZS5tZXNzYWdlPT10Lm1lc3NhZ2U7Y2FzZSBnOmNhc2UgbTpyZXR1cm4gZT09dCsiIjtjYXNlIGQ6dmFyIEM9cztjYXNlIHY6dmFyIHg9biZjO2lmKEN8fChDPXUpLGUuc2l6ZSE9dC5zaXplJiYheClyZXR1cm4hMTt2YXIgST1BLmdldChlKTtpZihJKXJldHVybiBJPT10O258PWYsQS5zZXQoZSx0KTt2YXIgaz1hKEMoZSksQyh0KSxuLEUsVCxBKTtyZXR1cm4gQS5kZWxldGUoZSksaztjYXNlIGI6aWYodylyZXR1cm4gdy5jYWxsKGUpPT13LmNhbGwodCl9cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2NCkuVWludDhBcnJheTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9LTEscj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSxuKXtyWysrdF09W24sZV19KSxyfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAyOSksaT0xLG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsYSxzLHUpe3ZhciBjPXImaSxmPW4oZSksbD1mLmxlbmd0aDtpZihsIT1uKHQpLmxlbmd0aCYmIWMpcmV0dXJuITE7Zm9yKHZhciBoPWw7aC0tOyl7dmFyIHA9ZltoXTtpZighKGM/cCBpbiB0Om8uY2FsbCh0LHApKSlyZXR1cm4hMX12YXIgZD11LmdldChlKTtpZihkJiZ1LmdldCh0KSlyZXR1cm4gZD09dDt2YXIgeT0hMDt1LnNldChlLHQpLHUuc2V0KHQsZSk7Zm9yKHZhciBnPWM7KytoPGw7KXt2YXIgdj1lW3A9ZltoXV0sbT10W3BdO2lmKGEpdmFyIGI9Yz9hKG0sdixwLHQsZSx1KTphKHYsbSxwLGUsdCx1KTtpZighKHZvaWQgMD09PWI/dj09PW18fHModixtLHIsYSx1KTpiKSl7eT0hMTticmVha31nfHwoZz0iY29uc3RydWN0b3IiPT1wKX1pZih5JiYhZyl7dmFyIF89ZS5jb25zdHJ1Y3RvcixTPXQuY29uc3RydWN0b3I7XyE9UyYmImNvbnN0cnVjdG9yImluIGUmJiJjb25zdHJ1Y3RvciJpbiB0JiYhKCJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgXyYmImZ1bmN0aW9uIj09dHlwZW9mIFMmJlMgaW5zdGFuY2VvZiBTKSYmKHk9ITEpfXJldHVybiB1LmRlbGV0ZShlKSx1LmRlbGV0ZSh0KSx5fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAzMCksaT1yKDEwMzEpLG89cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbihlLG8saSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzYpLGk9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPXQoZSk7cmV0dXJuIGkoZSk/bzpuKG8scihlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzcpLGk9cigxMDMyKSxvPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLHM9YT9mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTooZT1PYmplY3QoZSksbihhKGUpLGZ1bmN0aW9uKHQpe3JldHVybiBvLmNhbGwoZSx0KX0pKX06aTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMzQpLGk9cigyOTUpLG89cig5KSxhPXIoNDc4KSxzPXIoMjk2KSx1PXIoNDc5KSxjPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9byhlKSxmPSFyJiZpKGUpLGw9IXImJiFmJiZhKGUpLGg9IXImJiFmJiYhbCYmdShlKSxwPXJ8fGZ8fGx8fGgsZD1wP24oZS5sZW5ndGgsU3RyaW5nKTpbXSx5PWQubGVuZ3RoO2Zvcih2YXIgZyBpbiBlKSF0JiYhYy5jYWxsKGUsZyl8fHAmJigibGVuZ3RoIj09Z3x8bCYmKCJvZmZzZXQiPT1nfHwicGFyZW50Ij09Zyl8fGgmJigiYnVmZmVyIj09Z3x8ImJ5dGVMZW5ndGgiPT1nfHwiYnl0ZU9mZnNldCI9PWcpfHxzKGcseSkpfHxkLnB1c2goZyk7cmV0dXJuIGR9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPUFycmF5KGUpOysrcjxlOyluW3JdPXQocik7cmV0dXJuIG59fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IEFyZ3VtZW50c10iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShlKSYmbihlKT09b319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDI5Nyksbz1yKDc0KSxhPXt9O2FbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPWFbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPWFbIltvYmplY3QgSW50OEFycmF5XSJdPWFbIltvYmplY3QgSW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IEludDMyQXJyYXldIl09YVsiW29iamVjdCBVaW50OEFycmF5XSJdPWFbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09YVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLGFbIltvYmplY3QgQXJndW1lbnRzXSJdPWFbIltvYmplY3QgQXJyYXldIl09YVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1hWyJbb2JqZWN0IEJvb2xlYW5dIl09YVsiW29iamVjdCBEYXRhVmlld10iXT1hWyJbb2JqZWN0IERhdGVdIl09YVsiW29iamVjdCBFcnJvcl0iXT1hWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPWFbIltvYmplY3QgTWFwXSJdPWFbIltvYmplY3QgTnVtYmVyXSJdPWFbIltvYmplY3QgT2JqZWN0XSJdPWFbIltvYmplY3QgUmVnRXhwXSJdPWFbIltvYmplY3QgU2V0XSJdPWFbIltvYmplY3QgU3RyaW5nXSJdPWFbIltvYmplY3QgV2Vha01hcF0iXT0hMSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSkmJmkoZS5sZW5ndGgpJiYhIWFbbihlKV19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoNDcxKSxpPXQmJiF0Lm5vZGVUeXBlJiZ0LG89aSYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiYhZS5ub2RlVHlwZSYmZSxhPW8mJm8uZXhwb3J0cz09PWkmJm4ucHJvY2VzcyxzPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW8mJm8ucmVxdWlyZSYmby5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIGV8fGEmJmEuYmluZGluZyYmYS5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKTtlLmV4cG9ydHM9c30pLmNhbGwodGhpcyxyKDIxNSkoZSkpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDQwKSxpPXIoMTA0MSksbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighbihlKSlyZXR1cm4gaShlKTt2YXIgdD1bXTtmb3IodmFyIHIgaW4gT2JqZWN0KGUpKW8uY2FsbChlLHIpJiYiY29uc3RydWN0b3IiIT1yJiZ0LnB1c2gocik7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuY29uc3RydWN0b3I7cmV0dXJuIGU9PT0oImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQucHJvdG90eXBlfHxyKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4MCkoT2JqZWN0LmtleXMsT2JqZWN0KTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0MyksaT1yKDI5MCksbz1yKDEwNDQpLGE9cig0ODEpLHM9cigxMDQ1KSx1PXIoODUpLGM9cig0NzMpLGY9YyhuKSxsPWMoaSksaD1jKG8pLHA9YyhhKSxkPWMocykseT11OyhuJiYiW29iamVjdCBEYXRhVmlld10iIT15KG5ldyBuKG5ldyBBcnJheUJ1ZmZlcigxKSkpfHxpJiYiW29iamVjdCBNYXBdIiE9eShuZXcgaSl8fG8mJiJbb2JqZWN0IFByb21pc2VdIiE9eShvLnJlc29sdmUoKSl8fGEmJiJbb2JqZWN0IFNldF0iIT15KG5ldyBhKXx8cyYmIltvYmplY3QgV2Vha01hcF0iIT15KG5ldyBzKSkmJih5PWZ1bmN0aW9uKGUpe3ZhciB0PXUoZSkscj0iW29iamVjdCBPYmplY3RdIj09dD9lLmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/YyhyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIGY6cmV0dXJuIltvYmplY3QgRGF0YVZpZXddIjtjYXNlIGw6cmV0dXJuIltvYmplY3QgTWFwXSI7Y2FzZSBoOnJldHVybiJbb2JqZWN0IFByb21pc2VdIjtjYXNlIHA6cmV0dXJuIltvYmplY3QgU2V0XSI7Y2FzZSBkOnJldHVybiJbb2JqZWN0IFdlYWtNYXBdIn1yZXR1cm4gdH0pLGUuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJEYXRhVmlldyIpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJQcm9taXNlIik7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMikocig2NCksIldlYWtNYXAiKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUxKSxpPXIoMjk1KSxvPXIoOSksYT1uP24uaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl8fGkoZSl8fCEhKGEmJmUmJmVbYV0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cigxMDY2KSxzPXIoMjk4KSx1PXIoMTA2NyksYz1yKDExOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgZj0tMTt0PW4odC5sZW5ndGg/dDpbY10scyhpKSk7dmFyIGw9byhlLGZ1bmN0aW9uKGUscixpKXtyZXR1cm57Y3JpdGVyaWE6bih0LGZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfSksaW5kZXg6KytmLHZhbHVlOmV9fSk7cmV0dXJuIGEobCxmdW5jdGlvbihlLHQpe3JldHVybiB1KGUsdCxyKX0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0OSksaT1yKDEwNTApLG89cig0ODQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1pKGUpO3JldHVybiAxPT10Lmxlbmd0aCYmdFswXVsyXT9vKHRbMF1bMF0sdFswXVsxXSk6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT1lfHxuKHIsZSx0KX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzIpLGk9cigyODgpLG89MSxhPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciB1PXIubGVuZ3RoLGM9dSxmPSFzO2lmKG51bGw9PWUpcmV0dXJuIWM7Zm9yKGU9T2JqZWN0KGUpO3UtLTspe3ZhciBsPXJbdV07aWYoZiYmbFsyXT9sWzFdIT09ZVtsWzBdXTohKGxbMF1pbiBlKSlyZXR1cm4hMX1mb3IoOysrdTxjOyl7dmFyIGg9KGw9clt1XSlbMF0scD1lW2hdLGQ9bFsxXTtpZihmJiZsWzJdKXtpZih2b2lkIDA9PT1wJiYhKGggaW4gZSkpcmV0dXJuITF9ZWxzZXt2YXIgeT1uZXcgbjtpZihzKXZhciBnPXMocCxkLGgsZSx0LHkpO2lmKCEodm9pZCAwPT09Zz9pKGQscCxvfGEscyx5KTpnKSlyZXR1cm4hMX19cmV0dXJuITB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0ODMpLGk9cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9aShlKSxyPXQubGVuZ3RoO3ItLTspe3ZhciBvPXRbcl0sYT1lW29dO3Rbcl09W28sYSxuKGEpXX1yZXR1cm4gdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4OCksaT1yKDEyMiksbz1yKDEwNTcpLGE9cigyOTkpLHM9cig0ODMpLHU9cig0ODQpLGM9cigxOTcpLGY9MSxsPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSkmJnModCk/dShjKGUpLHQpOmZ1bmN0aW9uKHIpe3ZhciBhPWkocixlKTtyZXR1cm4gdm9pZCAwPT09YSYmYT09PXQ/byhyLGUpOm4odCxhLGZ8bCl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1MyksaT0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxvPS9cXChcXCk/L2csYT1uKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiA0Nj09PWUuY2hhckNvZGVBdCgwKSYmdC5wdXNoKCIiKSxlLnJlcGxhY2UoaSxmdW5jdGlvbihlLHIsbixpKXt0LnB1c2gobj9pLnJlcGxhY2UobywiJDEiKTpyfHxlKX0pLHR9KTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1NCksaT01MDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4oZSxmdW5jdGlvbihlKXtyZXR1cm4gci5zaXplPT09aSYmci5jbGVhcigpLGV9KSxyPXQuY2FjaGU7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOTEpLGk9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIG8oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZXx8bnVsbCE9dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihpKTt2YXIgcj1mdW5jdGlvbiByKCl7dmFyIG49YXJndW1lbnRzLGk9dD90LmFwcGx5KHRoaXMsbik6blswXSxvPXIuY2FjaGU7aWYoby5oYXMoaSkpcmV0dXJuIG8uZ2V0KGkpO3ZhciBhPWUuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1vLnNldChpLGEpfHxvLGF9O3JldHVybiByLmNhY2hlPW5ldyhvLkNhY2hlfHxuKSxyfW8uQ2FjaGU9bixlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOm4oZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9cigxNTIpLG89cig5KSxhPXIoMTE4KSxzPTEvMCx1PW4/bi5wcm90b3R5cGU6dm9pZCAwLGM9dT91LnRvU3RyaW5nOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobyh0KSlyZXR1cm4gaSh0LGUpKyIiO2lmKGEodCkpcmV0dXJuIGM/Yy5jYWxsKHQpOiIiO3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1zPyItMCI6cn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNTgpLGk9cigxMDU5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZSYmaShlLHQsbil9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lJiZ0IGluIE9iamVjdChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4NiksaT1yKDI5NSksbz1yKDkpLGE9cigyOTYpLHM9cigyOTcpLHU9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBjPS0xLGY9KHQ9bih0LGUpKS5sZW5ndGgsbD0hMTsrK2M8Zjspe3ZhciBoPXUodFtjXSk7aWYoIShsPW51bGwhPWUmJnIoZSxoKSkpYnJlYWs7ZT1lW2hdfXJldHVybiBsfHwrK2MhPWY/bDohIShmPW51bGw9PWU/MDplLmxlbmd0aCkmJnMoZikmJmEoaCxmKSYmKG8oZSl8fGkoZSkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2MSksaT1yKDEwNjIpLG89cigyOTkpLGE9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbyhlKT9uKGEoZSkpOmkoZSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDg1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHQsZSl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2NCkoKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtmb3IodmFyIGk9LTEsbz1PYmplY3QodCksYT1uKHQpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIHU9YVtlP3M6KytpXTtpZighMT09PXIob1t1XSx1LG8pKWJyZWFrfXJldHVybiB0fX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7aWYobnVsbD09cilyZXR1cm4gcjtpZighbihyKSlyZXR1cm4gZShyLGkpO2Zvcih2YXIgbz1yLmxlbmd0aCxhPXQ/bzotMSxzPU9iamVjdChyKTsodD9hLS06KythPG8pJiYhMSE9PWkoc1thXSxhLHMpOyk7cmV0dXJuIHJ9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmxlbmd0aDtmb3IoZS5zb3J0KHQpO3ItLTspZVtyXT1lW3JdLnZhbHVlO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9LTEsbz1lLmNyaXRlcmlhLGE9dC5jcml0ZXJpYSxzPW8ubGVuZ3RoLHU9ci5sZW5ndGg7KytpPHM7KXt2YXIgYz1uKG9baV0sYVtpXSk7aWYoYylyZXR1cm4gaT49dT9jOmMqKCJkZXNjIj09cltpXT8tMToxKX1yZXR1cm4gZS5pbmRleC10LmluZGV4fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihlIT09dCl7dmFyIHI9dm9pZCAwIT09ZSxpPW51bGw9PT1lLG89ZT09PWUsYT1uKGUpLHM9dm9pZCAwIT09dCx1PW51bGw9PT10LGM9dD09PXQsZj1uKHQpO2lmKCF1JiYhZiYmIWEmJmU+dHx8YSYmcyYmYyYmIXUmJiFmfHxpJiZzJiZjfHwhciYmY3x8IW8pcmV0dXJuIDE7aWYoIWkmJiFhJiYhZiYmZTx0fHxmJiZyJiZvJiYhaSYmIWF8fHUmJnImJm98fCFzJiZvfHwhYylyZXR1cm4tMX1yZXR1cm4gMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzApLGk9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdD1pKHZvaWQgMD09PXQ/ZS5sZW5ndGgtMTp0LDApLGZ1bmN0aW9uKCl7Zm9yKHZhciBvPWFyZ3VtZW50cyxhPS0xLHM9aShvLmxlbmd0aC10LDApLHU9QXJyYXkocyk7KythPHM7KXVbYV09b1t0K2FdO2E9LTE7Zm9yKHZhciBjPUFycmF5KHQrMSk7KythPHQ7KWNbYV09b1thXTtyZXR1cm4gY1t0XT1yKHUpLG4oZSx0aGlzLGMpfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZS5jYWxsKHQpO2Nhc2UgMTpyZXR1cm4gZS5jYWxsKHQsclswXSk7Y2FzZSAyOnJldHVybiBlLmNhbGwodCxyWzBdLHJbMV0pO2Nhc2UgMzpyZXR1cm4gZS5jYWxsKHQsclswXSxyWzFdLHJbMl0pfXJldHVybiBlLmFwcGx5KHQscil9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDcyKSxpPXIoMTA3NCkobik7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzMpLGk9cig0OTApLG89cigxMTkpLGE9aT9mdW5jdGlvbihlLHQpe3JldHVybiBpKGUsInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6bih0KSx3cml0YWJsZTohMH0pfTpvO2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19fSxmdW5jdGlvbihlLHQpe3ZhciByPTgwMCxuPTE2LGk9RGF0ZS5ub3c7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PTAsbz0wO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWkoKSxzPW4tKGEtbyk7aWYobz1hLHM+MCl7aWYoKyt0Pj1yKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSB0PTA7cmV0dXJuIGUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT50fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oYShlKT9uOm8pKGUsaSh0LDMpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluPXQuZ2V0VGlja1ZhbHVlcz10LmdldE5pY2VUaWNrVmFsdWVzPXZvaWQgMDt2YXIgbj1hKHIoNDkyKSksaT1yKDQ5Myksbz1hKHIoMTA3OSkpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLHI9bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gdShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxuPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgYSxzPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oYT1zLm5leHQoKSkuZG9uZSkmJihyLnB1c2goYS52YWx1ZSksIXR8fHIubGVuZ3RoIT09dCk7bj0hMCk7fWNhdGNoKHUpe2k9ITAsbz11fWZpbmFsbHl7dHJ5e258fG51bGw9PXMucmV0dXJufHxzLnJldHVybigpfWZpbmFsbHl7aWYoaSl0aHJvdyBvfX1yZXR1cm4gcn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gYyhlKXt2YXIgdD11KGUsMikscj10WzBdLG49dFsxXSxpPXIsbz1uO3JldHVybiByPm4mJihpPW4sbz1yKSxbaSxvXX1mdW5jdGlvbiBmKGUsdCxyKXtpZihlLmx0ZSgwKSlyZXR1cm4gbmV3IG4uZGVmYXVsdCgwKTt2YXIgaT1vLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlLnRvTnVtYmVyKCkpLGE9bmV3IG4uZGVmYXVsdCgxMCkucG93KGkpLHM9ZS5kaXYoYSksdT0xIT09aT8uMDU6LjEsYz1uZXcgbi5kZWZhdWx0KE1hdGguY2VpbChzLmRpdih1KS50b051bWJlcigpKSkuYWRkKHIpLm11bCh1KS5tdWwoYSk7cmV0dXJuIHQ/YzpuZXcgbi5kZWZhdWx0KE1hdGguY2VpbChjKSl9ZnVuY3Rpb24gbChlLHQscil7dmFyIGE9MSxzPW5ldyBuLmRlZmF1bHQoZSk7aWYoIXMuaXNpbnQoKSYmcil7dmFyIHU9TWF0aC5hYnMoZSk7dTwxPyhhPW5ldyBuLmRlZmF1bHQoMTApLnBvdyhvLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlKS0xKSxzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihzLmRpdihhKS50b051bWJlcigpKSkubXVsKGEpKTp1PjEmJihzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpfWVsc2UgMD09PWU/cz1uZXcgbi5kZWZhdWx0KE1hdGguZmxvb3IoKHQtMSkvMikpOnJ8fChzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpO3ZhciBjPU1hdGguZmxvb3IoKHQtMSkvMik7cmV0dXJuKDAsaS5jb21wb3NlKSgoMCxpLm1hcCkoZnVuY3Rpb24oZSl7cmV0dXJuIHMuYWRkKG5ldyBuLmRlZmF1bHQoZS1jKS5tdWwoYSkpLnRvTnVtYmVyKCl9KSxpLnJhbmdlKSgwLHQpfXZhciBoPSgwLGkubWVtb2l6ZSkoZnVuY3Rpb24oZSl7dmFyIHQ9dShlLDIpLHI9dFswXSxhPXRbMV0saD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NixwPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sZD1NYXRoLm1heChoLDIpLHk9dShjKFtyLGFdKSwyKSxnPXlbMF0sdj15WzFdO2lmKGc9PT0tMS8wfHx2PT09MS8wKXt2YXIgbT12PT09MS8wP1tnXS5jb25jYXQocygoMCxpLnJhbmdlKSgwLGgtMSkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIDEvMH0pKSk6cygoMCxpLnJhbg=="
}
Changelog:
{
"2020.03.29 15:15": "base64:LnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09bihlKT9lLnNwbGl0KCIiKTpPYmplY3QoZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NjcpLGk9cigyODUpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgzKSxpPXIoOTcyKSxvPXIoOTczKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcyx1PW4odCksYz1pKHUubGVuZ3RoKSxmPW8oYSxjKTtpZihlJiZyIT1yKXtmb3IoO2M+ZjspaWYoKHM9dVtmKytdKSE9cylyZXR1cm4hMH1lbHNlIGZvcig7Yz5mO2YrKylpZigoZXx8ZiBpbiB1KSYmdVtmXT09PXIpcmV0dXJuIGV8fGZ8fDA7cmV0dXJuIWUmJi0xfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9pKG4oZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1heCxvPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybihlPW4oZSkpPDA/aShlK3QsMCk6byhlLHQpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTg5KSxpPXIoOTc1KSxvPXIoMjg1KSxhPXIoNDY4KSgiSUVfUFJPVE8iKSxzPWZ1bmN0aW9uKCl7fSx1PWZ1bmN0aW9uKCl7dmFyIGUsdD1yKDQ1OSkoImlmcmFtZSIpLG49by5sZW5ndGg7Zm9yKHQuc3R5bGUuZGlzcGxheT0ibm9uZSIscig5NzcpLmFwcGVuZENoaWxkKHQpLHQuc3JjPSJqYXZhc2NyaXB0OiIsKGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksZS53cml0ZSgiPHNjcmlwdD5kb2N1bWVudC5GPU9iamVjdDxcL3NjcmlwdD4iKSxlLmNsb3NlKCksdT1lLkY7bi0tOylkZWxldGUgdS5wcm90b3R5cGVbb1tuXV07cmV0dXJuIHUoKX07ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIG51bGwhPT1lPyhzLnByb3RvdHlwZT1uKGUpLHI9bmV3IHMscy5wcm90b3R5cGU9bnVsbCxyW2FdPWUpOnI9dSgpLHZvaWQgMD09PXQ/cjppKHIsdCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyNzgpLGk9cigxODkpLG89cig5NzYpO2UuZXhwb3J0cz1yKDExNik/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oZSx0KXtpKGUpO2Zvcih2YXIgcixhPW8odCkscz1hLmxlbmd0aCx1PTA7cz51OyluLmYoZSxyPWFbdSsrXSx0W3JdKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ2NyksaT1yKDI4NSk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLmRvY3VtZW50O2UuZXhwb3J0cz1uJiZuLmRvY3VtZW50RWxlbWVudH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE2KSxpPXIoMTkxKSxvPXIoNDY5KSxhPXIoOTc5KSxzPTEuLnRvRml4ZWQsdT1NYXRoLmZsb29yLGM9WzAsMCwwLDAsMCwwXSxmPSJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hIixsPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49dDsrK3I8Njspbis9ZSpjW3JdLGNbcl09biUxZTcsbj11KG4vMWU3KX0saD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9NixyPTA7LS10Pj0wOylyKz1jW3RdLGNbdF09dShyL2UpLHI9ciVlKjFlN30scD1mdW5jdGlvbigpe2Zvcih2YXIgZT02LHQ9IiI7LS1lPj0wOylpZigiIiE9PXR8fDA9PT1lfHwwIT09Y1tlXSl7dmFyIHI9U3RyaW5nKGNbZV0pO3Q9IiI9PT10P3I6dCthLmNhbGwoIjAiLDctci5sZW5ndGgpK3J9cmV0dXJuIHR9LGQ9ZnVuY3Rpb24gZSh0LHIsbil7cmV0dXJuIDA9PT1yP246ciUyPT09MT9lKHQsci0xLG4qdCk6ZSh0KnQsci8yLG4pfTtuKG4uUCtuLkYqKCEhcyYmKCIwLjAwMCIhPT04ZS01LnRvRml4ZWQoMyl8fCIxIiE9PS45LnRvRml4ZWQoMCl8fCIxLjI1IiE9PTEuMjU1LnRvRml4ZWQoMil8fCIxMDAwMDAwMDAwMDAwMDAwMTI4IiE9PSgweGRlMGI2YjNhNzY0MDA4MCkudG9GaXhlZCgwKSl8fCFyKDg0KShmdW5jdGlvbigpe3MuY2FsbCh7fSl9KSksIk51bWJlciIse3RvRml4ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQscixuLHMsdT1vKHRoaXMsZiksYz1pKGUpLHk9IiIsZz0iMCI7aWYoYzwwfHxjPjIwKXRocm93IFJhbmdlRXJyb3IoZik7aWYodSE9dSlyZXR1cm4iTmFOIjtpZih1PD0tMWUyMXx8dT49MWUyMSlyZXR1cm4gU3RyaW5nKHUpO2lmKHU8MCYmKHk9Ii0iLHU9LXUpLHU+MWUtMjEpaWYocj0odD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPWU7cj49NDA5NjspdCs9MTIsci89NDA5Njtmb3IoO3I+PTI7KXQrPTEsci89MjtyZXR1cm4gdH0odSpkKDIsNjksMSkpLTY5KTwwP3UqZCgyLC10LDEpOnUvZCgyLHQsMSkscio9NDUwMzU5OTYyNzM3MDQ5NiwodD01Mi10KT4wKXtmb3IobCgwLHIpLG49YztuPj03OylsKDFlNywwKSxuLT03O2ZvcihsKGQoMTAsbiwxKSwwKSxuPXQtMTtuPj0yMzspaCgxPDwyMyksbi09MjM7aCgxPDxuKSxsKDEsMSksaCgyKSxnPXAoKX1lbHNlIGwoMCxyKSxsKDE8PC10LDApLGc9cCgpK2EuY2FsbCgiMCIsYyk7cmV0dXJuIGc9Yz4wP3krKChzPWcubGVuZ3RoKTw9Yz8iMC4iK2EuY2FsbCgiMCIsYy1zKStnOmcuc2xpY2UoMCxzLWMpKyIuIitnLnNsaWNlKHMtYykpOnkrZ319KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE5MSksaT1yKDI4NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhpKHRoaXMpKSxyPSIiLG89bihlKTtpZihvPDB8fG89PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZSIpO2Zvcig7bz4wOyhvPj4+PTEpJiYodCs9dCkpMSZvJiYocis9dCk7cmV0dXJuIHJ9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTYpLGk9cig4NCksbz1yKDQ2OSksYT0xLi50b1ByZWNpc2lvbjtuKG4uUCtuLkYqKGkoZnVuY3Rpb24oKXtyZXR1cm4iMSIhPT1hLmNhbGwoMSx2b2lkIDApfSl8fCFpKGZ1bmN0aW9uKCl7YS5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9QcmVjaXNpb246ZnVuY3Rpb24oZSl7dmFyIHQ9byh0aGlzLCJOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiB2b2lkIDA9PT1lP2EuY2FsbCh0KTphLmNhbGwodCxlKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDczKS5pc0Zpbml0ZTtuKG4uUywiTnVtYmVyIix7aXNGaW5pdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiZpKGUpfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNik7bihuLlMsIk51bWJlciIse2lzSW50ZWdlcjpyKDQ3MCl9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtpc05hTjpmdW5jdGlvbihlKXtyZXR1cm4gZSE9ZX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9cig0NzApLG89TWF0aC5hYnM7bihuLlMsIk51bWJlciIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkmJm8oZSk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUFYX1NBRkVfSU5URUdFUjo5MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDk4OSk7bihuLlMrbi5GKihOdW1iZXIucGFyc2VGbG9hdCE9aSksIk51bWJlciIse3BhcnNlRmxvYXQ6aX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3MykucGFyc2VGbG9hdCxpPXIoMjg2KS50cmltO2UuZXhwb3J0cz0xL24ocigyODcpKyItMCIpIT09LTEvMD9mdW5jdGlvbihlKXt2YXIgdD1pKFN0cmluZyhlKSwzKSxyPW4odCk7cmV0dXJuIDA9PT1yJiYiLSI9PXQuY2hhckF0KDApPy0wOnJ9Om59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoOTkxKTtuKG4uUytuLkYqKE51bWJlci5wYXJzZUludCE9aSksIk51bWJlciIse3BhcnNlSW50Oml9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLnBhcnNlSW50LGk9cigyODYpLnRyaW0sbz1yKDI4NyksYT0vXlstK10/MFt4WF0vO2UuZXhwb3J0cz04IT09bihvKyIwOCIpfHwyMiE9PW4obysiMHgxNiIpP2Z1bmN0aW9uKGUsdCl7dmFyIHI9aShTdHJpbmcoZSksMyk7cmV0dXJuIG4ocix0Pj4+MHx8KGEudGVzdChyKT8xNjoxMCkpfTpufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9T2JqZWN0LnByb3RvdHlwZSxvPWkuaGFzT3duUHJvcGVydHksYT1pLnRvU3RyaW5nLHM9bj9uLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9by5jYWxsKGUscykscj1lW3NdO3RyeXtlW3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh1KXt9dmFyIGk9YS5jYWxsKGUpO3JldHVybiBuJiYodD9lW3NdPXI6ZGVsZXRlIGVbc10pLGl9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTk1KTtmdW5jdGlvbiBpKCl7fWZ1bmN0aW9uIG8oKXt9by5yZXNldFdhcm5pbmdDYWNoZT1pLGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIsaSxvLGEpe2lmKGEhPT1uKXt2YXIgcz1uZXcgRXJyb3IoIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTt0aHJvdyBzLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLHN9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgcj17YXJyYXk6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6byxyZXNldFdhcm5pbmdDYWNoZTppfTtyZXR1cm4gci5Qcm9wVHlwZXM9cixyfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDcyKSxpPXIoNDc0KSxvPXIoMTAyNSksYT1yKDEwMjgpLHM9cigxMDQyKSx1PXIoOSksYz1yKDQ3OCksZj1yKDQ3OSksbD0xLGg9IltvYmplY3QgQXJndW1lbnRzXSIscD0iW29iamVjdCBBcnJheV0iLGQ9IltvYmplY3QgT2JqZWN0XSIseT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixnLHYsbSl7dmFyIGI9dShlKSxfPXUodCksUz1iP3A6cyhlKSxFPV8/cDpzKHQpLHc9KFM9Uz09aD9kOlMpPT1kLFQ9KEU9RT09aD9kOkUpPT1kLEE9Uz09RTtpZihBJiZjKGUpKXtpZighYyh0KSlyZXR1cm4hMTtiPSEwLHc9ITF9aWYoQSYmIXcpcmV0dXJuIG18fChtPW5ldyBuKSxifHxmKGUpP2koZSx0LHIsZyx2LG0pOm8oZSx0LFMscixnLHYsbSk7aWYoIShyJmwpKXt2YXIgQz13JiZ5LmNhbGwoZSwiX193cmFwcGVkX18iKSx4PVQmJnkuY2FsbCh0LCJfX3dyYXBwZWRfXyIpO2lmKEN8fHgpe3ZhciBJPUM/ZS52YWx1ZSgpOmUsaz14P3QudmFsdWUoKTp0O3JldHVybiBtfHwobT1uZXcgbiksdihJLGsscixnLG0pfX1yZXR1cm4hIUEmJihtfHwobT1uZXcgbiksYShlLHQscixnLHYsbSkpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKSxpPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj1uKHQsZSk7cmV0dXJuIShyPDApJiYocj09dC5sZW5ndGgtMT90LnBvcCgpOmkuY2FsbCh0LHIsMSksLS10aGlzLnNpemUsITApfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxyPW4odCxlKTtyZXR1cm4gcjwwP3ZvaWQgMDp0W3JdWzFdfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5fX2RhdGFfXyxlKT4tMX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Myk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxpPW4ocixlKTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW2UsdF0pKTpyW2ldWzFdPXQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgbix0aGlzLnNpemU9MH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj10LmRlbGV0ZShlKTtyZXR1cm4gdGhpcy5zaXplPXQuc2l6ZSxyfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkyKSxpPXIoMjkwKSxvPXIoMjkxKSxhPTIwMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKHIgaW5zdGFuY2VvZiBuKXt2YXIgcz1yLl9fZGF0YV9fO2lmKCFpfHxzLmxlbmd0aDxhLTEpcmV0dXJuIHMucHVzaChbZSx0XSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBvKHMpfXJldHVybiByLnNldChlLHQpLHRoaXMuc2l6ZT1yLnNpemUsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDMpLGk9cigxMDA4KSxvPXIoMzUpLGE9cig0NzMpLHM9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sdT1GdW5jdGlvbi5wcm90b3R5cGUsYz1PYmplY3QucHJvdG90eXBlLGY9dS50b1N0cmluZyxsPWMuaGFzT3duUHJvcGVydHksaD1SZWdFeHAoIl4iK2YuY2FsbChsKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuISghbyhlKXx8aShlKSkmJihuKGUpP2g6cykudGVzdChhKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMDkpLGk9ZnVuY3Rpb24oKXt2YXIgZT0vW14uXSskLy5leGVjKG4mJm4ua2V5cyYmbi5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIGU/IlN5bWJvbChzcmMpXzEuIitlOiIifSgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4hIWkmJmkgaW4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY0KVsiX19jb3JlLWpzX3NoYXJlZF9fIl07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDEyKSxpPXIoMTkyKSxvPXIoMjkwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBuLG1hcDpuZXcob3x8aSksc3RyaW5nOm5ldyBufX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMTMpLGk9cigxMDE0KSxvPXIoMTAxNSksYT1yKDEwMTYpLHM9cigxMDE3KTtmdW5jdGlvbiB1KGUpe3ZhciB0PS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PHI7KXt2YXIgbj1lW3RdO3RoaXMuc2V0KG5bMF0sblsxXSl9fXUucHJvdG90eXBlLmNsZWFyPW4sdS5wcm90b3R5cGUuZGVsZXRlPWksdS5wcm90b3R5cGUuZ2V0PW8sdS5wcm90b3R5cGUuaGFzPWEsdS5wcm90b3R5cGUuc2V0PXMsZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uP24obnVsbCk6e30sdGhpcy5zaXplPTB9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmhhcyhlKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZV07cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKG4pe3ZhciByPXRbZV07cmV0dXJuIHI9PT1pP3ZvaWQgMDpyfXJldHVybiBvLmNhbGwodCxlKT90W2VdOnZvaWQgMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiBuP3ZvaWQgMCE9PXRbZV06aS5jYWxsKHQsZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTQpLGk9Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXMoZSk/MDoxLHJbZV09biYmdm9pZCAwPT09dD9pOnQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4odGhpcyxlKS5kZWxldGUoZSk7cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiJzdHJpbmciPT10fHwibnVtYmVyIj09dHx8InN5bWJvbCI9PXR8fCJib29sZWFuIj09dD8iX19wcm90b19fIiE9PWU6bnVsbD09PWV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTUpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbih0aGlzLGUpLmdldChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMsZSkuaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uKHRoaXMsZSksaT1yLnNpemU7cmV0dXJuIHIuc2V0KGUsdCksdGhpcy5zaXplKz1yLnNpemU9PWk/MDoxLHRoaXN9fSxmdW5jdGlvbihlLHQpe3ZhciByPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KGUsciksdGhpc319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE1MSksaT1yKDEwMjYpLG89cigyODkpLGE9cig0NzQpLHM9cigxMDI3KSx1PXIoMjk0KSxjPTEsZj0yLGw9IltvYmplY3QgQm9vbGVhbl0iLGg9IltvYmplY3QgRGF0ZV0iLHA9IltvYmplY3QgRXJyb3JdIixkPSJbb2JqZWN0IE1hcF0iLHk9IltvYmplY3QgTnVtYmVyXSIsZz0iW29iamVjdCBSZWdFeHBdIix2PSJbb2JqZWN0IFNldF0iLG09IltvYmplY3QgU3RyaW5nXSIsYj0iW29iamVjdCBTeW1ib2xdIixfPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsUz0iW29iamVjdCBEYXRhVmlld10iLEU9bj9uLnByb3RvdHlwZTp2b2lkIDAsdz1FP0UudmFsdWVPZjp2b2lkIDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4sRSxULEEpe3N3aXRjaChyKXtjYXNlIFM6aWYoZS5ieXRlTGVuZ3RoIT10LmJ5dGVMZW5ndGh8fGUuYnl0ZU9mZnNldCE9dC5ieXRlT2Zmc2V0KXJldHVybiExO2U9ZS5idWZmZXIsdD10LmJ1ZmZlcjtjYXNlIF86cmV0dXJuIShlLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8IVQobmV3IGkoZSksbmV3IGkodCkpKTtjYXNlIGw6Y2FzZSBoOmNhc2UgeTpyZXR1cm4gbygrZSwrdCk7Y2FzZSBwOnJldHVybiBlLm5hbWU9PXQubmFtZSYmZS5tZXNzYWdlPT10Lm1lc3NhZ2U7Y2FzZSBnOmNhc2UgbTpyZXR1cm4gZT09dCsiIjtjYXNlIGQ6dmFyIEM9cztjYXNlIHY6dmFyIHg9biZjO2lmKEN8fChDPXUpLGUuc2l6ZSE9dC5zaXplJiYheClyZXR1cm4hMTt2YXIgST1BLmdldChlKTtpZihJKXJldHVybiBJPT10O258PWYsQS5zZXQoZSx0KTt2YXIgaz1hKEMoZSksQyh0KSxuLEUsVCxBKTtyZXR1cm4gQS5kZWxldGUoZSksaztjYXNlIGI6aWYodylyZXR1cm4gdy5jYWxsKGUpPT13LmNhbGwodCl9cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2NCkuVWludDhBcnJheTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9LTEscj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSxuKXtyWysrdF09W24sZV19KSxyfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAyOSksaT0xLG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsYSxzLHUpe3ZhciBjPXImaSxmPW4oZSksbD1mLmxlbmd0aDtpZihsIT1uKHQpLmxlbmd0aCYmIWMpcmV0dXJuITE7Zm9yKHZhciBoPWw7aC0tOyl7dmFyIHA9ZltoXTtpZighKGM/cCBpbiB0Om8uY2FsbCh0LHApKSlyZXR1cm4hMX12YXIgZD11LmdldChlKTtpZihkJiZ1LmdldCh0KSlyZXR1cm4gZD09dDt2YXIgeT0hMDt1LnNldChlLHQpLHUuc2V0KHQsZSk7Zm9yKHZhciBnPWM7KytoPGw7KXt2YXIgdj1lW3A9ZltoXV0sbT10W3BdO2lmKGEpdmFyIGI9Yz9hKG0sdixwLHQsZSx1KTphKHYsbSxwLGUsdCx1KTtpZighKHZvaWQgMD09PWI/dj09PW18fHModixtLHIsYSx1KTpiKSl7eT0hMTticmVha31nfHwoZz0iY29uc3RydWN0b3IiPT1wKX1pZih5JiYhZyl7dmFyIF89ZS5jb25zdHJ1Y3RvcixTPXQuY29uc3RydWN0b3I7XyE9UyYmImNvbnN0cnVjdG9yImluIGUmJiJjb25zdHJ1Y3RvciJpbiB0JiYhKCJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgXyYmImZ1bmN0aW9uIj09dHlwZW9mIFMmJlMgaW5zdGFuY2VvZiBTKSYmKHk9ITEpfXJldHVybiB1LmRlbGV0ZShlKSx1LmRlbGV0ZSh0KSx5fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAzMCksaT1yKDEwMzEpLG89cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbihlLG8saSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzYpLGk9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPXQoZSk7cmV0dXJuIGkoZSk/bzpuKG8scihlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzcpLGk9cigxMDMyKSxvPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLHM9YT9mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTooZT1PYmplY3QoZSksbihhKGUpLGZ1bmN0aW9uKHQpe3JldHVybiBvLmNhbGwoZSx0KX0pKX06aTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMzQpLGk9cigyOTUpLG89cig5KSxhPXIoNDc4KSxzPXIoMjk2KSx1PXIoNDc5KSxjPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9byhlKSxmPSFyJiZpKGUpLGw9IXImJiFmJiZhKGUpLGg9IXImJiFmJiYhbCYmdShlKSxwPXJ8fGZ8fGx8fGgsZD1wP24oZS5sZW5ndGgsU3RyaW5nKTpbXSx5PWQubGVuZ3RoO2Zvcih2YXIgZyBpbiBlKSF0JiYhYy5jYWxsKGUsZyl8fHAmJigibGVuZ3RoIj09Z3x8bCYmKCJvZmZzZXQiPT1nfHwicGFyZW50Ij09Zyl8fGgmJigiYnVmZmVyIj09Z3x8ImJ5dGVMZW5ndGgiPT1nfHwiYnl0ZU9mZnNldCI9PWcpfHxzKGcseSkpfHxkLnB1c2goZyk7cmV0dXJuIGR9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPUFycmF5KGUpOysrcjxlOyluW3JdPXQocik7cmV0dXJuIG59fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IEFyZ3VtZW50c10iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShlKSYmbihlKT09b319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDI5Nyksbz1yKDc0KSxhPXt9O2FbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPWFbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPWFbIltvYmplY3QgSW50OEFycmF5XSJdPWFbIltvYmplY3QgSW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IEludDMyQXJyYXldIl09YVsiW29iamVjdCBVaW50OEFycmF5XSJdPWFbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09YVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLGFbIltvYmplY3QgQXJndW1lbnRzXSJdPWFbIltvYmplY3QgQXJyYXldIl09YVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1hWyJbb2JqZWN0IEJvb2xlYW5dIl09YVsiW29iamVjdCBEYXRhVmlld10iXT1hWyJbb2JqZWN0IERhdGVdIl09YVsiW29iamVjdCBFcnJvcl0iXT1hWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPWFbIltvYmplY3QgTWFwXSJdPWFbIltvYmplY3QgTnVtYmVyXSJdPWFbIltvYmplY3QgT2JqZWN0XSJdPWFbIltvYmplY3QgUmVnRXhwXSJdPWFbIltvYmplY3QgU2V0XSJdPWFbIltvYmplY3QgU3RyaW5nXSJdPWFbIltvYmplY3QgV2Vha01hcF0iXT0hMSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSkmJmkoZS5sZW5ndGgpJiYhIWFbbihlKV19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoNDcxKSxpPXQmJiF0Lm5vZGVUeXBlJiZ0LG89aSYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiYhZS5ub2RlVHlwZSYmZSxhPW8mJm8uZXhwb3J0cz09PWkmJm4ucHJvY2VzcyxzPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW8mJm8ucmVxdWlyZSYmby5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIGV8fGEmJmEuYmluZGluZyYmYS5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKTtlLmV4cG9ydHM9c30pLmNhbGwodGhpcyxyKDIxNSkoZSkpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDQwKSxpPXIoMTA0MSksbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighbihlKSlyZXR1cm4gaShlKTt2YXIgdD1bXTtmb3IodmFyIHIgaW4gT2JqZWN0KGUpKW8uY2FsbChlLHIpJiYiY29uc3RydWN0b3IiIT1yJiZ0LnB1c2gocik7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuY29uc3RydWN0b3I7cmV0dXJuIGU9PT0oImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQucHJvdG90eXBlfHxyKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4MCkoT2JqZWN0LmtleXMsT2JqZWN0KTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0MyksaT1yKDI5MCksbz1yKDEwNDQpLGE9cig0ODEpLHM9cigxMDQ1KSx1PXIoODUpLGM9cig0NzMpLGY9YyhuKSxsPWMoaSksaD1jKG8pLHA9YyhhKSxkPWMocykseT11OyhuJiYiW29iamVjdCBEYXRhVmlld10iIT15KG5ldyBuKG5ldyBBcnJheUJ1ZmZlcigxKSkpfHxpJiYiW29iamVjdCBNYXBdIiE9eShuZXcgaSl8fG8mJiJbb2JqZWN0IFByb21pc2VdIiE9eShvLnJlc29sdmUoKSl8fGEmJiJbb2JqZWN0IFNldF0iIT15KG5ldyBhKXx8cyYmIltvYmplY3QgV2Vha01hcF0iIT15KG5ldyBzKSkmJih5PWZ1bmN0aW9uKGUpe3ZhciB0PXUoZSkscj0iW29iamVjdCBPYmplY3RdIj09dD9lLmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/YyhyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIGY6cmV0dXJuIltvYmplY3QgRGF0YVZpZXddIjtjYXNlIGw6cmV0dXJuIltvYmplY3QgTWFwXSI7Y2FzZSBoOnJldHVybiJbb2JqZWN0IFByb21pc2VdIjtjYXNlIHA6cmV0dXJuIltvYmplY3QgU2V0XSI7Y2FzZSBkOnJldHVybiJbb2JqZWN0IFdlYWtNYXBdIn1yZXR1cm4gdH0pLGUuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJEYXRhVmlldyIpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJQcm9taXNlIik7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMikocig2NCksIldlYWtNYXAiKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUxKSxpPXIoMjk1KSxvPXIoOSksYT1uP24uaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl8fGkoZSl8fCEhKGEmJmUmJmVbYV0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cigxMDY2KSxzPXIoMjk4KSx1PXIoMTA2NyksYz1yKDExOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgZj0tMTt0PW4odC5sZW5ndGg/dDpbY10scyhpKSk7dmFyIGw9byhlLGZ1bmN0aW9uKGUscixpKXtyZXR1cm57Y3JpdGVyaWE6bih0LGZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfSksaW5kZXg6KytmLHZhbHVlOmV9fSk7cmV0dXJuIGEobCxmdW5jdGlvbihlLHQpe3JldHVybiB1KGUsdCxyKX0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0OSksaT1yKDEwNTApLG89cig0ODQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1pKGUpO3JldHVybiAxPT10Lmxlbmd0aCYmdFswXVsyXT9vKHRbMF1bMF0sdFswXVsxXSk6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT1lfHxuKHIsZSx0KX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzIpLGk9cigyODgpLG89MSxhPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciB1PXIubGVuZ3RoLGM9dSxmPSFzO2lmKG51bGw9PWUpcmV0dXJuIWM7Zm9yKGU9T2JqZWN0KGUpO3UtLTspe3ZhciBsPXJbdV07aWYoZiYmbFsyXT9sWzFdIT09ZVtsWzBdXTohKGxbMF1pbiBlKSlyZXR1cm4hMX1mb3IoOysrdTxjOyl7dmFyIGg9KGw9clt1XSlbMF0scD1lW2hdLGQ9bFsxXTtpZihmJiZsWzJdKXtpZih2b2lkIDA9PT1wJiYhKGggaW4gZSkpcmV0dXJuITF9ZWxzZXt2YXIgeT1uZXcgbjtpZihzKXZhciBnPXMocCxkLGgsZSx0LHkpO2lmKCEodm9pZCAwPT09Zz9pKGQscCxvfGEscyx5KTpnKSlyZXR1cm4hMX19cmV0dXJuITB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0ODMpLGk9cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9aShlKSxyPXQubGVuZ3RoO3ItLTspe3ZhciBvPXRbcl0sYT1lW29dO3Rbcl09W28sYSxuKGEpXX1yZXR1cm4gdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4OCksaT1yKDEyMiksbz1yKDEwNTcpLGE9cigyOTkpLHM9cig0ODMpLHU9cig0ODQpLGM9cigxOTcpLGY9MSxsPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSkmJnModCk/dShjKGUpLHQpOmZ1bmN0aW9uKHIpe3ZhciBhPWkocixlKTtyZXR1cm4gdm9pZCAwPT09YSYmYT09PXQ/byhyLGUpOm4odCxhLGZ8bCl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1MyksaT0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxvPS9cXChcXCk/L2csYT1uKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiA0Nj09PWUuY2hhckNvZGVBdCgwKSYmdC5wdXNoKCIiKSxlLnJlcGxhY2UoaSxmdW5jdGlvbihlLHIsbixpKXt0LnB1c2gobj9pLnJlcGxhY2UobywiJDEiKTpyfHxlKX0pLHR9KTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1NCksaT01MDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4oZSxmdW5jdGlvbihlKXtyZXR1cm4gci5zaXplPT09aSYmci5jbGVhcigpLGV9KSxyPXQuY2FjaGU7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOTEpLGk9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIG8oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZXx8bnVsbCE9dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihpKTt2YXIgcj1mdW5jdGlvbiByKCl7dmFyIG49YXJndW1lbnRzLGk9dD90LmFwcGx5KHRoaXMsbik6blswXSxvPXIuY2FjaGU7aWYoby5oYXMoaSkpcmV0dXJuIG8uZ2V0KGkpO3ZhciBhPWUuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1vLnNldChpLGEpfHxvLGF9O3JldHVybiByLmNhY2hlPW5ldyhvLkNhY2hlfHxuKSxyfW8uQ2FjaGU9bixlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOm4oZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9cigxNTIpLG89cig5KSxhPXIoMTE4KSxzPTEvMCx1PW4/bi5wcm90b3R5cGU6dm9pZCAwLGM9dT91LnRvU3RyaW5nOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobyh0KSlyZXR1cm4gaSh0LGUpKyIiO2lmKGEodCkpcmV0dXJuIGM/Yy5jYWxsKHQpOiIiO3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1zPyItMCI6cn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNTgpLGk9cigxMDU5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZSYmaShlLHQsbil9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lJiZ0IGluIE9iamVjdChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4NiksaT1yKDI5NSksbz1yKDkpLGE9cigyOTYpLHM9cigyOTcpLHU9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBjPS0xLGY9KHQ9bih0LGUpKS5sZW5ndGgsbD0hMTsrK2M8Zjspe3ZhciBoPXUodFtjXSk7aWYoIShsPW51bGwhPWUmJnIoZSxoKSkpYnJlYWs7ZT1lW2hdfXJldHVybiBsfHwrK2MhPWY/bDohIShmPW51bGw9PWU/MDplLmxlbmd0aCkmJnMoZikmJmEoaCxmKSYmKG8oZSl8fGkoZSkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2MSksaT1yKDEwNjIpLG89cigyOTkpLGE9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbyhlKT9uKGEoZSkpOmkoZSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDg1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHQsZSl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2NCkoKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtmb3IodmFyIGk9LTEsbz1PYmplY3QodCksYT1uKHQpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIHU9YVtlP3M6KytpXTtpZighMT09PXIob1t1XSx1LG8pKWJyZWFrfXJldHVybiB0fX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7aWYobnVsbD09cilyZXR1cm4gcjtpZighbihyKSlyZXR1cm4gZShyLGkpO2Zvcih2YXIgbz1yLmxlbmd0aCxhPXQ/bzotMSxzPU9iamVjdChyKTsodD9hLS06KythPG8pJiYhMSE9PWkoc1thXSxhLHMpOyk7cmV0dXJuIHJ9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmxlbmd0aDtmb3IoZS5zb3J0KHQpO3ItLTspZVtyXT1lW3JdLnZhbHVlO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9LTEsbz1lLmNyaXRlcmlhLGE9dC5jcml0ZXJpYSxzPW8ubGVuZ3RoLHU9ci5sZW5ndGg7KytpPHM7KXt2YXIgYz1uKG9baV0sYVtpXSk7aWYoYylyZXR1cm4gaT49dT9jOmMqKCJkZXNjIj09cltpXT8tMToxKX1yZXR1cm4gZS5pbmRleC10LmluZGV4fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihlIT09dCl7dmFyIHI9dm9pZCAwIT09ZSxpPW51bGw9PT1lLG89ZT09PWUsYT1uKGUpLHM9dm9pZCAwIT09dCx1PW51bGw9PT10LGM9dD09PXQsZj1uKHQpO2lmKCF1JiYhZiYmIWEmJmU+dHx8YSYmcyYmYyYmIXUmJiFmfHxpJiZzJiZjfHwhciYmY3x8IW8pcmV0dXJuIDE7aWYoIWkmJiFhJiYhZiYmZTx0fHxmJiZyJiZvJiYhaSYmIWF8fHUmJnImJm98fCFzJiZvfHwhYylyZXR1cm4tMX1yZXR1cm4gMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzApLGk9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdD1pKHZvaWQgMD09PXQ/ZS5sZW5ndGgtMTp0LDApLGZ1bmN0aW9uKCl7Zm9yKHZhciBvPWFyZ3VtZW50cyxhPS0xLHM9aShvLmxlbmd0aC10LDApLHU9QXJyYXkocyk7KythPHM7KXVbYV09b1t0K2FdO2E9LTE7Zm9yKHZhciBjPUFycmF5KHQrMSk7KythPHQ7KWNbYV09b1thXTtyZXR1cm4gY1t0XT1yKHUpLG4oZSx0aGlzLGMpfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZS5jYWxsKHQpO2Nhc2UgMTpyZXR1cm4gZS5jYWxsKHQsclswXSk7Y2FzZSAyOnJldHVybiBlLmNhbGwodCxyWzBdLHJbMV0pO2Nhc2UgMzpyZXR1cm4gZS5jYWxsKHQsclswXSxyWzFdLHJbMl0pfXJldHVybiBlLmFwcGx5KHQscil9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDcyKSxpPXIoMTA3NCkobik7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzMpLGk9cig0OTApLG89cigxMTkpLGE9aT9mdW5jdGlvbihlLHQpe3JldHVybiBpKGUsInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6bih0KSx3cml0YWJsZTohMH0pfTpvO2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19fSxmdW5jdGlvbihlLHQpe3ZhciByPTgwMCxuPTE2LGk9RGF0ZS5ub3c7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PTAsbz0wO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWkoKSxzPW4tKGEtbyk7aWYobz1hLHM+MCl7aWYoKyt0Pj1yKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSB0PTA7cmV0dXJuIGUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT50fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oYShlKT9uOm8pKGUsaSh0LDMpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluPXQuZ2V0VGlja1ZhbHVlcz10LmdldE5pY2VUaWNrVmFsdWVzPXZvaWQgMDt2YXIgbj1hKHIoNDkyKSksaT1yKDQ5Myksbz1hKHIoMTA3OSkpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLHI9bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gdShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxuPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgYSxzPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oYT1zLm5leHQoKSkuZG9uZSkmJihyLnB1c2goYS52YWx1ZSksIXR8fHIubGVuZ3RoIT09dCk7bj0hMCk7fWNhdGNoKHUpe2k9ITAsbz11fWZpbmFsbHl7dHJ5e258fG51bGw9PXMucmV0dXJufHxzLnJldHVybigpfWZpbmFsbHl7aWYoaSl0aHJvdyBvfX1yZXR1cm4gcn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gYyhlKXt2YXIgdD11KGUsMikscj10WzBdLG49dFsxXSxpPXIsbz1uO3JldHVybiByPm4mJihpPW4sbz1yKSxbaSxvXX1mdW5jdGlvbiBmKGUsdCxyKXtpZihlLmx0ZSgwKSlyZXR1cm4gbmV3IG4uZGVmYXVsdCgwKTt2YXIgaT1vLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlLnRvTnVtYmVyKCkpLGE9bmV3IG4uZGVmYXVsdCgxMCkucG93KGkpLHM9ZS5kaXYoYSksdT0xIT09aT8uMDU6LjEsYz1uZXcgbi5kZWZhdWx0KE1hdGguY2VpbChzLmRpdih1KS50b051bWJlcigpKSkuYWRkKHIpLm11bCh1KS5tdWwoYSk7cmV0dXJuIHQ/YzpuZXcgbi5kZWZhdWx0KE1hdGguY2VpbChjKSl9ZnVuY3Rpb24gbChlLHQscil7dmFyIGE9MSxzPW5ldyBuLmRlZmF1bHQoZSk7aWYoIXMuaXNpbnQoKSYmcil7dmFyIHU9TWF0aC5hYnMoZSk7dTwxPyhhPW5ldyBuLmRlZmF1bHQoMTApLnBvdyhvLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlKS0xKSxzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihzLmRpdihhKS50b051bWJlcigpKSkubXVsKGEpKTp1PjEmJihzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpfWVsc2UgMD09PWU/cz1uZXcgbi5kZWZhdWx0KE1hdGguZmxvb3IoKHQtMSkvMikpOnJ8fChzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpO3ZhciBjPU1hdGguZmxvb3IoKHQtMSkvMik7cmV0dXJuKDAsaS5jb21wb3NlKSgoMCxpLm1hcCkoZnVuY3Rpb24oZSl7cmV0dXJuIHMuYWRkKG5ldyBuLmRlZmF1bHQoZS1jKS5tdWwoYSkpLnRvTnVtYmVyKCl9KSxpLnJhbmdlKSgwLHQpfXZhciBoPSgwLGkubWVtb2l6ZSkoZnVuY3Rpb24oZSl7dmFyIHQ9dShlLDIpLHI9dFswXSxhPXRbMV0saD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NixwPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sZD1NYXRoLm1heChoLDIpLHk9dShjKFtyLGFdKSwyKSxnPXlbMF0sdj15WzFdO2lmKGc9PT0tMS8wfHx2PT09MS8wKXt2YXIgbT12PT09MS8wP1tnXS5jb25jYXQocygoMCxpLnJhbmdlKSgwLGgtMSkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIDEvMH0pKSk6cygoMCxpLnJhbg==",
"2020.03.29 15:12": "base64:LnByb3BlcnR5SXNFbnVtZXJhYmxlKDApP09iamVjdDpmdW5jdGlvbihlKXtyZXR1cm4iU3RyaW5nIj09bihlKT9lLnNwbGl0KCIiKTpPYmplY3QoZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NjcpLGk9cigyODUpLmNvbmNhdCgibGVuZ3RoIiwicHJvdG90eXBlIik7dC5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMjgzKSxpPXIoOTcyKSxvPXIoOTczKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixhKXt2YXIgcyx1PW4odCksYz1pKHUubGVuZ3RoKSxmPW8oYSxjKTtpZihlJiZyIT1yKXtmb3IoO2M+ZjspaWYoKHM9dVtmKytdKSE9cylyZXR1cm4hMH1lbHNlIGZvcig7Yz5mO2YrKylpZigoZXx8ZiBpbiB1KSYmdVtmXT09PXIpcmV0dXJuIGV8fGZ8fDA7cmV0dXJuIWUmJi0xfX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1pbjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGU+MD9pKG4oZSksOTAwNzE5OTI1NDc0MDk5MSk6MH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5MSksaT1NYXRoLm1heCxvPU1hdGgubWluO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybihlPW4oZSkpPDA/aShlK3QsMCk6byhlLHQpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTg5KSxpPXIoOTc1KSxvPXIoMjg1KSxhPXIoNDY4KSgiSUVfUFJPVE8iKSxzPWZ1bmN0aW9uKCl7fSx1PWZ1bmN0aW9uKCl7dmFyIGUsdD1yKDQ1OSkoImlmcmFtZSIpLG49by5sZW5ndGg7Zm9yKHQuc3R5bGUuZGlzcGxheT0ibm9uZSIscig5NzcpLmFwcGVuZENoaWxkKHQpLHQuc3JjPSJqYXZhc2NyaXB0OiIsKGU9dC5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksZS53cml0ZSgiPHNjcmlwdD5kb2N1bWVudC5GPU9iamVjdDxcL3NjcmlwdD4iKSxlLmNsb3NlKCksdT1lLkY7bi0tOylkZWxldGUgdS5wcm90b3R5cGVbb1tuXV07cmV0dXJuIHUoKX07ZS5leHBvcnRzPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKGUsdCl7dmFyIHI7cmV0dXJuIG51bGwhPT1lPyhzLnByb3RvdHlwZT1uKGUpLHI9bmV3IHMscy5wcm90b3R5cGU9bnVsbCxyW2FdPWUpOnI9dSgpLHZvaWQgMD09PXQ/cjppKHIsdCl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyNzgpLGk9cigxODkpLG89cig5NzYpO2UuZXhwb3J0cz1yKDExNik/T2JqZWN0LmRlZmluZVByb3BlcnRpZXM6ZnVuY3Rpb24oZSx0KXtpKGUpO2Zvcih2YXIgcixhPW8odCkscz1hLmxlbmd0aCx1PTA7cz51OyluLmYoZSxyPWFbdSsrXSx0W3JdKTtyZXR1cm4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ2NyksaT1yKDI4NSk7ZS5leHBvcnRzPU9iamVjdC5rZXlzfHxmdW5jdGlvbihlKXtyZXR1cm4gbihlLGkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLmRvY3VtZW50O2UuZXhwb3J0cz1uJiZuLmRvY3VtZW50RWxlbWVudH0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE2KSxpPXIoMTkxKSxvPXIoNDY5KSxhPXIoOTc5KSxzPTEuLnRvRml4ZWQsdT1NYXRoLmZsb29yLGM9WzAsMCwwLDAsMCwwXSxmPSJOdW1iZXIudG9GaXhlZDogaW5jb3JyZWN0IGludm9jYXRpb24hIixsPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByPS0xLG49dDsrK3I8Njspbis9ZSpjW3JdLGNbcl09biUxZTcsbj11KG4vMWU3KX0saD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9NixyPTA7LS10Pj0wOylyKz1jW3RdLGNbdF09dShyL2UpLHI9ciVlKjFlN30scD1mdW5jdGlvbigpe2Zvcih2YXIgZT02LHQ9IiI7LS1lPj0wOylpZigiIiE9PXR8fDA9PT1lfHwwIT09Y1tlXSl7dmFyIHI9U3RyaW5nKGNbZV0pO3Q9IiI9PT10P3I6dCthLmNhbGwoIjAiLDctci5sZW5ndGgpK3J9cmV0dXJuIHR9LGQ9ZnVuY3Rpb24gZSh0LHIsbil7cmV0dXJuIDA9PT1yP246ciUyPT09MT9lKHQsci0xLG4qdCk6ZSh0KnQsci8yLG4pfTtuKG4uUCtuLkYqKCEhcyYmKCIwLjAwMCIhPT04ZS01LnRvRml4ZWQoMyl8fCIxIiE9PS45LnRvRml4ZWQoMCl8fCIxLjI1IiE9PTEuMjU1LnRvRml4ZWQoMil8fCIxMDAwMDAwMDAwMDAwMDAwMTI4IiE9PSgweGRlMGI2YjNhNzY0MDA4MCkudG9GaXhlZCgwKSl8fCFyKDg0KShmdW5jdGlvbigpe3MuY2FsbCh7fSl9KSksIk51bWJlciIse3RvRml4ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQscixuLHMsdT1vKHRoaXMsZiksYz1pKGUpLHk9IiIsZz0iMCI7aWYoYzwwfHxjPjIwKXRocm93IFJhbmdlRXJyb3IoZik7aWYodSE9dSlyZXR1cm4iTmFOIjtpZih1PD0tMWUyMXx8dT49MWUyMSlyZXR1cm4gU3RyaW5nKHUpO2lmKHU8MCYmKHk9Ii0iLHU9LXUpLHU+MWUtMjEpaWYocj0odD1mdW5jdGlvbihlKXtmb3IodmFyIHQ9MCxyPWU7cj49NDA5NjspdCs9MTIsci89NDA5Njtmb3IoO3I+PTI7KXQrPTEsci89MjtyZXR1cm4gdH0odSpkKDIsNjksMSkpLTY5KTwwP3UqZCgyLC10LDEpOnUvZCgyLHQsMSkscio9NDUwMzU5OTYyNzM3MDQ5NiwodD01Mi10KT4wKXtmb3IobCgwLHIpLG49YztuPj03OylsKDFlNywwKSxuLT03O2ZvcihsKGQoMTAsbiwxKSwwKSxuPXQtMTtuPj0yMzspaCgxPDwyMyksbi09MjM7aCgxPDxuKSxsKDEsMSksaCgyKSxnPXAoKX1lbHNlIGwoMCxyKSxsKDE8PC10LDApLGc9cCgpK2EuY2FsbCgiMCIsYyk7cmV0dXJuIGc9Yz4wP3krKChzPWcubGVuZ3RoKTw9Yz8iMC4iK2EuY2FsbCgiMCIsYy1zKStnOmcuc2xpY2UoMCxzLWMpKyIuIitnLnNsaWNlKHMtYykpOnkrZ319KX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1yKDE5MSksaT1yKDI4NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PVN0cmluZyhpKHRoaXMpKSxyPSIiLG89bihlKTtpZihvPDB8fG89PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZSIpO2Zvcig7bz4wOyhvPj4+PTEpJiYodCs9dCkpMSZvJiYocis9dCk7cmV0dXJuIHJ9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoMTYpLGk9cig4NCksbz1yKDQ2OSksYT0xLi50b1ByZWNpc2lvbjtuKG4uUCtuLkYqKGkoZnVuY3Rpb24oKXtyZXR1cm4iMSIhPT1hLmNhbGwoMSx2b2lkIDApfSl8fCFpKGZ1bmN0aW9uKCl7YS5jYWxsKHt9KX0pKSwiTnVtYmVyIix7dG9QcmVjaXNpb246ZnVuY3Rpb24oZSl7dmFyIHQ9byh0aGlzLCJOdW1iZXIjdG9QcmVjaXNpb246IGluY29ycmVjdCBpbnZvY2F0aW9uISIpO3JldHVybiB2b2lkIDA9PT1lP2EuY2FsbCh0KTphLmNhbGwodCxlKX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtFUFNJTE9OOk1hdGgucG93KDIsLTUyKX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDczKS5pc0Zpbml0ZTtuKG4uUywiTnVtYmVyIix7aXNGaW5pdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIm51bWJlciI9PXR5cGVvZiBlJiZpKGUpfX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNik7bihuLlMsIk51bWJlciIse2lzSW50ZWdlcjpyKDQ3MCl9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpO24obi5TLCJOdW1iZXIiLHtpc05hTjpmdW5jdGlvbihlKXtyZXR1cm4gZSE9ZX19KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTYpLGk9cig0NzApLG89TWF0aC5hYnM7bihuLlMsIk51bWJlciIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSkmJm8oZSk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUFYX1NBRkVfSU5URUdFUjo5MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KTtuKG4uUywiTnVtYmVyIix7TUlOX1NBRkVfSU5URUdFUjotOTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNiksaT1yKDk4OSk7bihuLlMrbi5GKihOdW1iZXIucGFyc2VGbG9hdCE9aSksIk51bWJlciIse3BhcnNlRmxvYXQ6aX0pfSxmdW5jdGlvbihlLHQscil7dmFyIG49cig3MykucGFyc2VGbG9hdCxpPXIoMjg2KS50cmltO2UuZXhwb3J0cz0xL24ocigyODcpKyItMCIpIT09LTEvMD9mdW5jdGlvbihlKXt2YXIgdD1pKFN0cmluZyhlKSwzKSxyPW4odCk7cmV0dXJuIDA9PT1yJiYiLSI9PXQuY2hhckF0KDApPy0wOnJ9Om59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE2KSxpPXIoOTkxKTtuKG4uUytuLkYqKE51bWJlci5wYXJzZUludCE9aSksIk51bWJlciIse3BhcnNlSW50Oml9KX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNzMpLnBhcnNlSW50LGk9cigyODYpLnRyaW0sbz1yKDI4NyksYT0vXlstK10/MFt4WF0vO2UuZXhwb3J0cz04IT09bihvKyIwOCIpfHwyMiE9PW4obysiMHgxNiIpP2Z1bmN0aW9uKGUsdCl7dmFyIHI9aShTdHJpbmcoZSksMyk7cmV0dXJuIG4ocix0Pj4+MHx8KGEudGVzdChyKT8xNjoxMCkpfTpufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9T2JqZWN0LnByb3RvdHlwZSxvPWkuaGFzT3duUHJvcGVydHksYT1pLnRvU3RyaW5nLHM9bj9uLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9by5jYWxsKGUscykscj1lW3NdO3RyeXtlW3NdPXZvaWQgMDt2YXIgbj0hMH1jYXRjaCh1KXt9dmFyIGk9YS5jYWxsKGUpO3JldHVybiBuJiYodD9lW3NdPXI6ZGVsZXRlIGVbc10pLGl9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByLmNhbGwoZSl9fSxmdW5jdGlvbihlLHQscil7InVzZSBzdHJpY3QiO3ZhciBuPXIoOTk1KTtmdW5jdGlvbiBpKCl7fWZ1bmN0aW9uIG8oKXt9by5yZXNldFdhcm5pbmdDYWNoZT1pLGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0LHIsaSxvLGEpe2lmKGEhPT1uKXt2YXIgcz1uZXcgRXJyb3IoIkNhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuIFVzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTt0aHJvdyBzLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLHN9fWZ1bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgcj17YXJyYXk6ZSxib29sOmUsZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6dCxlbGVtZW50OmUsZWxlbWVudFR5cGU6ZSxpbnN0YW5jZU9mOnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0LGV4YWN0OnQsY2hlY2tQcm9wVHlwZXM6byxyZXNldFdhcm5pbmdDYWNoZTppfTtyZXR1cm4gci5Qcm9wVHlwZXM9cixyfX0sZnVuY3Rpb24oZSx0LHIpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDcyKSxpPXIoNDc0KSxvPXIoMTAyNSksYT1yKDEwMjgpLHM9cigxMDQyKSx1PXIoOSksYz1yKDQ3OCksZj1yKDQ3OSksbD0xLGg9IltvYmplY3QgQXJndW1lbnRzXSIscD0iW29iamVjdCBBcnJheV0iLGQ9IltvYmplY3QgT2JqZWN0XSIseT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscixnLHYsbSl7dmFyIGI9dShlKSxfPXUodCksUz1iP3A6cyhlKSxFPV8/cDpzKHQpLHc9KFM9Uz09aD9kOlMpPT1kLFQ9KEU9RT09aD9kOkUpPT1kLEE9Uz09RTtpZihBJiZjKGUpKXtpZighYyh0KSlyZXR1cm4hMTtiPSEwLHc9ITF9aWYoQSYmIXcpcmV0dXJuIG18fChtPW5ldyBuKSxifHxmKGUpP2koZSx0LHIsZyx2LG0pOm8oZSx0LFMscixnLHYsbSk7aWYoIShyJmwpKXt2YXIgQz13JiZ5LmNhbGwoZSwiX193cmFwcGVkX18iKSx4PVQmJnkuY2FsbCh0LCJfX3dyYXBwZWRfXyIpO2lmKEN8fHgpe3ZhciBJPUM/ZS52YWx1ZSgpOmUsaz14P3QudmFsdWUoKTp0O3JldHVybiBtfHwobT1uZXcgbiksdihJLGsscixnLG0pfX1yZXR1cm4hIUEmJihtfHwobT1uZXcgbiksYShlLHQscixnLHYsbSkpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLl9fZGF0YV9fPVtdLHRoaXMuc2l6ZT0wfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKSxpPUFycmF5LnByb3RvdHlwZS5zcGxpY2U7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj1uKHQsZSk7cmV0dXJuIShyPDApJiYocj09dC5sZW5ndGgtMT90LnBvcCgpOmkuY2FsbCh0LHIsMSksLS10aGlzLnNpemUsITApfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fX2RhdGFfXyxyPW4odCxlKTtyZXR1cm4gcjwwP3ZvaWQgMDp0W3JdWzFdfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkzKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG4odGhpcy5fX2RhdGFfXyxlKT4tMX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Myk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9dGhpcy5fX2RhdGFfXyxpPW4ocixlKTtyZXR1cm4gaTwwPygrK3RoaXMuc2l6ZSxyLnB1c2goW2UsdF0pKTpyW2ldWzFdPXQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5Mik7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uZXcgbix0aGlzLnNpemU9MH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX19kYXRhX18scj10LmRlbGV0ZShlKTtyZXR1cm4gdGhpcy5zaXplPXQuc2l6ZSxyfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGUpfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTkyKSxpPXIoMjkwKSxvPXIoMjkxKSxhPTIwMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj10aGlzLl9fZGF0YV9fO2lmKHIgaW5zdGFuY2VvZiBuKXt2YXIgcz1yLl9fZGF0YV9fO2lmKCFpfHxzLmxlbmd0aDxhLTEpcmV0dXJuIHMucHVzaChbZSx0XSksdGhpcy5zaXplPSsrci5zaXplLHRoaXM7cj10aGlzLl9fZGF0YV9fPW5ldyBvKHMpfXJldHVybiByLnNldChlLHQpLHRoaXMuc2l6ZT1yLnNpemUsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDMpLGk9cigxMDA4KSxvPXIoMzUpLGE9cig0NzMpLHM9L15cW29iamVjdCAuKz9Db25zdHJ1Y3RvclxdJC8sdT1GdW5jdGlvbi5wcm90b3R5cGUsYz1PYmplY3QucHJvdG90eXBlLGY9dS50b1N0cmluZyxsPWMuaGFzT3duUHJvcGVydHksaD1SZWdFeHAoIl4iK2YuY2FsbChsKS5yZXBsYWNlKC9bXFxeJC4qKz8oKVtcXXt9fF0vZywiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuISghbyhlKXx8aShlKSkmJihuKGUpP2g6cykudGVzdChhKGUpKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMDkpLGk9ZnVuY3Rpb24oKXt2YXIgZT0vW14uXSskLy5leGVjKG4mJm4ua2V5cyYmbi5rZXlzLklFX1BST1RPfHwiIik7cmV0dXJuIGU/IlN5bWJvbChzcmMpXzEuIitlOiIifSgpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4hIWkmJmkgaW4gZX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDY0KVsiX19jb3JlLWpzX3NoYXJlZF9fIl07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGw9PWU/dm9pZCAwOmVbdF19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDEyKSxpPXIoMTkyKSxvPXIoMjkwKTtlLmV4cG9ydHM9ZnVuY3Rpb24oKXt0aGlzLnNpemU9MCx0aGlzLl9fZGF0YV9fPXtoYXNoOm5ldyBuLG1hcDpuZXcob3x8aSksc3RyaW5nOm5ldyBufX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMTMpLGk9cigxMDE0KSxvPXIoMTAxNSksYT1yKDEwMTYpLHM9cigxMDE3KTtmdW5jdGlvbiB1KGUpe3ZhciB0PS0xLHI9bnVsbD09ZT8wOmUubGVuZ3RoO2Zvcih0aGlzLmNsZWFyKCk7Kyt0PHI7KXt2YXIgbj1lW3RdO3RoaXMuc2V0KG5bMF0sblsxXSl9fXUucHJvdG90eXBlLmNsZWFyPW4sdS5wcm90b3R5cGUuZGVsZXRlPWksdS5wcm90b3R5cGUuZ2V0PW8sdS5wcm90b3R5cGUuaGFzPWEsdS5wcm90b3R5cGUuc2V0PXMsZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCk7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7dGhpcy5fX2RhdGFfXz1uP24obnVsbCk6e30sdGhpcy5zaXplPTB9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmhhcyhlKSYmZGVsZXRlIHRoaXMuX19kYXRhX19bZV07cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyIsbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO2lmKG4pe3ZhciByPXRbZV07cmV0dXJuIHI9PT1pP3ZvaWQgMDpyfXJldHVybiBvLmNhbGwodCxlKT90W2VdOnZvaWQgMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NCksaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzLl9fZGF0YV9fO3JldHVybiBuP3ZvaWQgMCE9PXRbZV06aS5jYWxsKHQsZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTQpLGk9Il9fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18iO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3ZhciByPXRoaXMuX19kYXRhX187cmV0dXJuIHRoaXMuc2l6ZSs9dGhpcy5oYXMoZSk/MDoxLHJbZV09biYmdm9pZCAwPT09dD9pOnQsdGhpc319LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4odGhpcyxlKS5kZWxldGUoZSk7cmV0dXJuIHRoaXMuc2l6ZS09dD8xOjAsdH19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiJzdHJpbmciPT10fHwibnVtYmVyIj09dHx8InN5bWJvbCI9PXR8fCJib29sZWFuIj09dD8iX19wcm90b19fIiE9PWU6bnVsbD09PWV9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxOTUpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbih0aGlzLGUpLmdldChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE5NSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBuKHRoaXMsZSkuaGFzKGUpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTk1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1uKHRoaXMsZSksaT1yLnNpemU7cmV0dXJuIHIuc2V0KGUsdCksdGhpcy5zaXplKz1yLnNpemU9PWk/MDoxLHRoaXN9fSxmdW5jdGlvbihlLHQpe3ZhciByPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIjtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uc2V0KGUsciksdGhpc319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDE1MSksaT1yKDEwMjYpLG89cigyODkpLGE9cig0NzQpLHM9cigxMDI3KSx1PXIoMjk0KSxjPTEsZj0yLGw9IltvYmplY3QgQm9vbGVhbl0iLGg9IltvYmplY3QgRGF0ZV0iLHA9IltvYmplY3QgRXJyb3JdIixkPSJbb2JqZWN0IE1hcF0iLHk9IltvYmplY3QgTnVtYmVyXSIsZz0iW29iamVjdCBSZWdFeHBdIix2PSJbb2JqZWN0IFNldF0iLG09IltvYmplY3QgU3RyaW5nXSIsYj0iW29iamVjdCBTeW1ib2xdIixfPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsUz0iW29iamVjdCBEYXRhVmlld10iLEU9bj9uLnByb3RvdHlwZTp2b2lkIDAsdz1FP0UudmFsdWVPZjp2b2lkIDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLG4sRSxULEEpe3N3aXRjaChyKXtjYXNlIFM6aWYoZS5ieXRlTGVuZ3RoIT10LmJ5dGVMZW5ndGh8fGUuYnl0ZU9mZnNldCE9dC5ieXRlT2Zmc2V0KXJldHVybiExO2U9ZS5idWZmZXIsdD10LmJ1ZmZlcjtjYXNlIF86cmV0dXJuIShlLmJ5dGVMZW5ndGghPXQuYnl0ZUxlbmd0aHx8IVQobmV3IGkoZSksbmV3IGkodCkpKTtjYXNlIGw6Y2FzZSBoOmNhc2UgeTpyZXR1cm4gbygrZSwrdCk7Y2FzZSBwOnJldHVybiBlLm5hbWU9PXQubmFtZSYmZS5tZXNzYWdlPT10Lm1lc3NhZ2U7Y2FzZSBnOmNhc2UgbTpyZXR1cm4gZT09dCsiIjtjYXNlIGQ6dmFyIEM9cztjYXNlIHY6dmFyIHg9biZjO2lmKEN8fChDPXUpLGUuc2l6ZSE9dC5zaXplJiYheClyZXR1cm4hMTt2YXIgST1BLmdldChlKTtpZihJKXJldHVybiBJPT10O258PWYsQS5zZXQoZSx0KTt2YXIgaz1hKEMoZSksQyh0KSxuLEUsVCxBKTtyZXR1cm4gQS5kZWxldGUoZSksaztjYXNlIGI6aWYodylyZXR1cm4gdy5jYWxsKGUpPT13LmNhbGwodCl9cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig2NCkuVWludDhBcnJheTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9LTEscj1BcnJheShlLnNpemUpO3JldHVybiBlLmZvckVhY2goZnVuY3Rpb24oZSxuKXtyWysrdF09W24sZV19KSxyfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAyOSksaT0xLG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIsYSxzLHUpe3ZhciBjPXImaSxmPW4oZSksbD1mLmxlbmd0aDtpZihsIT1uKHQpLmxlbmd0aCYmIWMpcmV0dXJuITE7Zm9yKHZhciBoPWw7aC0tOyl7dmFyIHA9ZltoXTtpZighKGM/cCBpbiB0Om8uY2FsbCh0LHApKSlyZXR1cm4hMX12YXIgZD11LmdldChlKTtpZihkJiZ1LmdldCh0KSlyZXR1cm4gZD09dDt2YXIgeT0hMDt1LnNldChlLHQpLHUuc2V0KHQsZSk7Zm9yKHZhciBnPWM7KytoPGw7KXt2YXIgdj1lW3A9ZltoXV0sbT10W3BdO2lmKGEpdmFyIGI9Yz9hKG0sdixwLHQsZSx1KTphKHYsbSxwLGUsdCx1KTtpZighKHZvaWQgMD09PWI/dj09PW18fHModixtLHIsYSx1KTpiKSl7eT0hMTticmVha31nfHwoZz0iY29uc3RydWN0b3IiPT1wKX1pZih5JiYhZyl7dmFyIF89ZS5jb25zdHJ1Y3RvcixTPXQuY29uc3RydWN0b3I7XyE9UyYmImNvbnN0cnVjdG9yImluIGUmJiJjb25zdHJ1Y3RvciJpbiB0JiYhKCJmdW5jdGlvbiI9PXR5cGVvZiBfJiZfIGluc3RhbmNlb2YgXyYmImZ1bmN0aW9uIj09dHlwZW9mIFMmJlMgaW5zdGFuY2VvZiBTKSYmKHk9ITEpfXJldHVybiB1LmRlbGV0ZShlKSx1LmRlbGV0ZSh0KSx5fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTAzMCksaT1yKDEwMzEpLG89cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbihlLG8saSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzYpLGk9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LHIpe3ZhciBvPXQoZSk7cmV0dXJuIGkoZSk/bzpuKG8scihlKSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzcpLGk9cigxMDMyKSxvPU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUsYT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLHM9YT9mdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09ZT9bXTooZT1PYmplY3QoZSksbihhKGUpLGZ1bmN0aW9uKHQpe3JldHVybiBvLmNhbGwoZSx0KX0pKX06aTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oKXtyZXR1cm5bXX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMzQpLGk9cigyOTUpLG89cig5KSxhPXIoNDc4KSxzPXIoMjk2KSx1PXIoNDc5KSxjPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7dmFyIHI9byhlKSxmPSFyJiZpKGUpLGw9IXImJiFmJiZhKGUpLGg9IXImJiFmJiYhbCYmdShlKSxwPXJ8fGZ8fGx8fGgsZD1wP24oZS5sZW5ndGgsU3RyaW5nKTpbXSx5PWQubGVuZ3RoO2Zvcih2YXIgZyBpbiBlKSF0JiYhYy5jYWxsKGUsZyl8fHAmJigibGVuZ3RoIj09Z3x8bCYmKCJvZmZzZXQiPT1nfHwicGFyZW50Ij09Zyl8fGgmJigiYnVmZmVyIj09Z3x8ImJ5dGVMZW5ndGgiPT1nfHwiYnl0ZU9mZnNldCI9PWcpfHxzKGcseSkpfHxkLnB1c2goZyk7cmV0dXJuIGR9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Zvcih2YXIgcj0tMSxuPUFycmF5KGUpOysrcjxlOyluW3JdPXQocik7cmV0dXJuIG59fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDc0KSxvPSJbb2JqZWN0IEFyZ3VtZW50c10iO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gaShlKSYmbihlKT09b319LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKCl7cmV0dXJuITF9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig4NSksaT1yKDI5Nyksbz1yKDc0KSxhPXt9O2FbIltvYmplY3QgRmxvYXQzMkFycmF5XSJdPWFbIltvYmplY3QgRmxvYXQ2NEFycmF5XSJdPWFbIltvYmplY3QgSW50OEFycmF5XSJdPWFbIltvYmplY3QgSW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IEludDMyQXJyYXldIl09YVsiW29iamVjdCBVaW50OEFycmF5XSJdPWFbIltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIl09YVsiW29iamVjdCBVaW50MTZBcnJheV0iXT1hWyJbb2JqZWN0IFVpbnQzMkFycmF5XSJdPSEwLGFbIltvYmplY3QgQXJndW1lbnRzXSJdPWFbIltvYmplY3QgQXJyYXldIl09YVsiW29iamVjdCBBcnJheUJ1ZmZlcl0iXT1hWyJbb2JqZWN0IEJvb2xlYW5dIl09YVsiW29iamVjdCBEYXRhVmlld10iXT1hWyJbb2JqZWN0IERhdGVdIl09YVsiW29iamVjdCBFcnJvcl0iXT1hWyJbb2JqZWN0IEZ1bmN0aW9uXSJdPWFbIltvYmplY3QgTWFwXSJdPWFbIltvYmplY3QgTnVtYmVyXSJdPWFbIltvYmplY3QgT2JqZWN0XSJdPWFbIltvYmplY3QgUmVnRXhwXSJdPWFbIltvYmplY3QgU2V0XSJdPWFbIltvYmplY3QgU3RyaW5nXSJdPWFbIltvYmplY3QgV2Vha01hcF0iXT0hMSxlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSkmJmkoZS5sZW5ndGgpJiYhIWFbbihlKV19fSxmdW5jdGlvbihlLHQscil7KGZ1bmN0aW9uKGUpe3ZhciBuPXIoNDcxKSxpPXQmJiF0Lm5vZGVUeXBlJiZ0LG89aSYmIm9iamVjdCI9PXR5cGVvZiBlJiZlJiYhZS5ub2RlVHlwZSYmZSxhPW8mJm8uZXhwb3J0cz09PWkmJm4ucHJvY2VzcyxzPWZ1bmN0aW9uKCl7dHJ5e3ZhciBlPW8mJm8ucmVxdWlyZSYmby5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIGV8fGEmJmEuYmluZGluZyYmYS5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2godCl7fX0oKTtlLmV4cG9ydHM9c30pLmNhbGwodGhpcyxyKDIxNSkoZSkpfSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDQwKSxpPXIoMTA0MSksbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1mdW5jdGlvbihlKXtpZighbihlKSlyZXR1cm4gaShlKTt2YXIgdD1bXTtmb3IodmFyIHIgaW4gT2JqZWN0KGUpKW8uY2FsbChlLHIpJiYiY29uc3RydWN0b3IiIT1yJiZ0LnB1c2gocik7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQpe3ZhciByPU9iamVjdC5wcm90b3R5cGU7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUuY29uc3RydWN0b3I7cmV0dXJuIGU9PT0oImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQucHJvdG90eXBlfHxyKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4MCkoT2JqZWN0LmtleXMsT2JqZWN0KTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0MyksaT1yKDI5MCksbz1yKDEwNDQpLGE9cig0ODEpLHM9cigxMDQ1KSx1PXIoODUpLGM9cig0NzMpLGY9YyhuKSxsPWMoaSksaD1jKG8pLHA9YyhhKSxkPWMocykseT11OyhuJiYiW29iamVjdCBEYXRhVmlld10iIT15KG5ldyBuKG5ldyBBcnJheUJ1ZmZlcigxKSkpfHxpJiYiW29iamVjdCBNYXBdIiE9eShuZXcgaSl8fG8mJiJbb2JqZWN0IFByb21pc2VdIiE9eShvLnJlc29sdmUoKSl8fGEmJiJbb2JqZWN0IFNldF0iIT15KG5ldyBhKXx8cyYmIltvYmplY3QgV2Vha01hcF0iIT15KG5ldyBzKSkmJih5PWZ1bmN0aW9uKGUpe3ZhciB0PXUoZSkscj0iW29iamVjdCBPYmplY3RdIj09dD9lLmNvbnN0cnVjdG9yOnZvaWQgMCxuPXI/YyhyKToiIjtpZihuKXN3aXRjaChuKXtjYXNlIGY6cmV0dXJuIltvYmplY3QgRGF0YVZpZXddIjtjYXNlIGw6cmV0dXJuIltvYmplY3QgTWFwXSI7Y2FzZSBoOnJldHVybiJbb2JqZWN0IFByb21pc2VdIjtjYXNlIHA6cmV0dXJuIltvYmplY3QgU2V0XSI7Y2FzZSBkOnJldHVybiJbb2JqZWN0IFdlYWtNYXBdIn1yZXR1cm4gdH0pLGUuZXhwb3J0cz15fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJEYXRhVmlldyIpO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDIpKHIoNjQpLCJQcm9taXNlIik7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwMikocig2NCksIldlYWtNYXAiKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUxKSxpPXIoMjk1KSxvPXIoOSksYT1uP24uaXNDb25jYXRTcHJlYWRhYmxlOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIG8oZSl8fGkoZSl8fCEhKGEmJmUmJmVbYV0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cigxMDY2KSxzPXIoMjk4KSx1PXIoMTA2NyksYz1yKDExOSk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXt2YXIgZj0tMTt0PW4odC5sZW5ndGg/dDpbY10scyhpKSk7dmFyIGw9byhlLGZ1bmN0aW9uKGUscixpKXtyZXR1cm57Y3JpdGVyaWE6bih0LGZ1bmN0aW9uKHQpe3JldHVybiB0KGUpfSksaW5kZXg6KytmLHZhbHVlOmV9fSk7cmV0dXJuIGEobCxmdW5jdGlvbihlLHQpe3JldHVybiB1KGUsdCxyKX0pfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA0OSksaT1yKDEwNTApLG89cig0ODQpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgdD1pKGUpO3JldHVybiAxPT10Lmxlbmd0aCYmdFswXVsyXT9vKHRbMF1bMF0sdFswXVsxXSk6ZnVuY3Rpb24ocil7cmV0dXJuIHI9PT1lfHxuKHIsZSx0KX19fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0NzIpLGk9cigyODgpLG89MSxhPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyLHMpe3ZhciB1PXIubGVuZ3RoLGM9dSxmPSFzO2lmKG51bGw9PWUpcmV0dXJuIWM7Zm9yKGU9T2JqZWN0KGUpO3UtLTspe3ZhciBsPXJbdV07aWYoZiYmbFsyXT9sWzFdIT09ZVtsWzBdXTohKGxbMF1pbiBlKSlyZXR1cm4hMX1mb3IoOysrdTxjOyl7dmFyIGg9KGw9clt1XSlbMF0scD1lW2hdLGQ9bFsxXTtpZihmJiZsWzJdKXtpZih2b2lkIDA9PT1wJiYhKGggaW4gZSkpcmV0dXJuITF9ZWxzZXt2YXIgeT1uZXcgbjtpZihzKXZhciBnPXMocCxkLGgsZSx0LHkpO2lmKCEodm9pZCAwPT09Zz9pKGQscCxvfGEscyx5KTpnKSlyZXR1cm4hMX19cmV0dXJuITB9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cig0ODMpLGk9cigxOTYpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9aShlKSxyPXQubGVuZ3RoO3ItLTspe3ZhciBvPXRbcl0sYT1lW29dO3Rbcl09W28sYSxuKGEpXX1yZXR1cm4gdH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDI4OCksaT1yKDEyMiksbz1yKDEwNTcpLGE9cigyOTkpLHM9cig0ODMpLHU9cig0ODQpLGM9cigxOTcpLGY9MSxsPTI7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoZSkmJnModCk/dShjKGUpLHQpOmZ1bmN0aW9uKHIpe3ZhciBhPWkocixlKTtyZXR1cm4gdm9pZCAwPT09YSYmYT09PXQ/byhyLGUpOm4odCxhLGZ8bCl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1MyksaT0vW14uW1xdXSt8XFsoPzooLT9cZCsoPzpcLlxkKyk/KXwoWyInXSkoKD86KD8hXDIpW15cXF18XFwuKSo/KVwyKVxdfCg/PSg/OlwufFxbXF0pKD86XC58XFtcXXwkKSkvZyxvPS9cXChcXCk/L2csYT1uKGZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiA0Nj09PWUuY2hhckNvZGVBdCgwKSYmdC5wdXNoKCIiKSxlLnJlcGxhY2UoaSxmdW5jdGlvbihlLHIsbixpKXt0LnB1c2gobj9pLnJlcGxhY2UobywiJDEiKTpyfHxlKX0pLHR9KTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1NCksaT01MDA7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PW4oZSxmdW5jdGlvbihlKXtyZXR1cm4gci5zaXplPT09aSYmci5jbGVhcigpLGV9KSxyPXQuY2FjaGU7cmV0dXJuIHR9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigyOTEpLGk9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIG8oZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZXx8bnVsbCE9dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IFR5cGVFcnJvcihpKTt2YXIgcj1mdW5jdGlvbiByKCl7dmFyIG49YXJndW1lbnRzLGk9dD90LmFwcGx5KHRoaXMsbik6blswXSxvPXIuY2FjaGU7aWYoby5oYXMoaSkpcmV0dXJuIG8uZ2V0KGkpO3ZhciBhPWUuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1vLnNldChpLGEpfHxvLGF9O3JldHVybiByLmNhY2hlPW5ldyhvLkNhY2hlfHxuKSxyfW8uQ2FjaGU9bixlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA1Nik7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lPyIiOm4oZSl9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxNTEpLGk9cigxNTIpLG89cig5KSxhPXIoMTE4KSxzPTEvMCx1PW4/bi5wcm90b3R5cGU6dm9pZCAwLGM9dT91LnRvU3RyaW5nOnZvaWQgMDtlLmV4cG9ydHM9ZnVuY3Rpb24gZSh0KXtpZigic3RyaW5nIj09dHlwZW9mIHQpcmV0dXJuIHQ7aWYobyh0KSlyZXR1cm4gaSh0LGUpKyIiO2lmKGEodCkpcmV0dXJuIGM/Yy5jYWxsKHQpOiIiO3ZhciByPXQrIiI7cmV0dXJuIjAiPT1yJiYxL3Q9PS1zPyItMCI6cn19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNTgpLGk9cigxMDU5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbCE9ZSYmaShlLHQsbil9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe3JldHVybiBudWxsIT1lJiZ0IGluIE9iamVjdChlKX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDQ4NiksaT1yKDI5NSksbz1yKDkpLGE9cigyOTYpLHM9cigyOTcpLHU9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQscil7Zm9yKHZhciBjPS0xLGY9KHQ9bih0LGUpKS5sZW5ndGgsbD0hMTsrK2M8Zjspe3ZhciBoPXUodFtjXSk7aWYoIShsPW51bGwhPWUmJnIoZSxoKSkpYnJlYWs7ZT1lW2hdfXJldHVybiBsfHwrK2MhPWY/bDohIShmPW51bGw9PWU/MDplLmxlbmd0aCkmJnMoZikmJmEoaCxmKSYmKG8oZSl8fGkoZSkpfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2MSksaT1yKDEwNjIpLG89cigyOTkpLGE9cigxOTcpO2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gbyhlKT9uKGEoZSkpOmkoZSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQ/dm9pZCAwOnRbZV19fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoNDg1KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBuKHQsZSl9fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2NCkoKTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQscixuKXtmb3IodmFyIGk9LTEsbz1PYmplY3QodCksYT1uKHQpLHM9YS5sZW5ndGg7cy0tOyl7dmFyIHU9YVtlP3M6KytpXTtpZighMT09PXIob1t1XSx1LG8pKWJyZWFrfXJldHVybiB0fX19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDExNyk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKHIsaSl7aWYobnVsbD09cilyZXR1cm4gcjtpZighbihyKSlyZXR1cm4gZShyLGkpO2Zvcih2YXIgbz1yLmxlbmd0aCxhPXQ/bzotMSxzPU9iamVjdChyKTsodD9hLS06KythPG8pJiYhMSE9PWkoc1thXSxhLHMpOyk7cmV0dXJuIHJ9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXt2YXIgcj1lLmxlbmd0aDtmb3IoZS5zb3J0KHQpO3ItLTspZVtyXT1lW3JdLnZhbHVlO3JldHVybiBlfX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTA2OCk7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtmb3IodmFyIGk9LTEsbz1lLmNyaXRlcmlhLGE9dC5jcml0ZXJpYSxzPW8ubGVuZ3RoLHU9ci5sZW5ndGg7KytpPHM7KXt2YXIgYz1uKG9baV0sYVtpXSk7aWYoYylyZXR1cm4gaT49dT9jOmMqKCJkZXNjIj09cltpXT8tMToxKX1yZXR1cm4gZS5pbmRleC10LmluZGV4fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTE4KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtpZihlIT09dCl7dmFyIHI9dm9pZCAwIT09ZSxpPW51bGw9PT1lLG89ZT09PWUsYT1uKGUpLHM9dm9pZCAwIT09dCx1PW51bGw9PT10LGM9dD09PXQsZj1uKHQpO2lmKCF1JiYhZiYmIWEmJmU+dHx8YSYmcyYmYyYmIXUmJiFmfHxpJiZzJiZjfHwhciYmY3x8IW8pcmV0dXJuIDE7aWYoIWkmJiFhJiYhZiYmZTx0fHxmJiZyJiZvJiYhaSYmIWF8fHUmJnImJm98fCFzJiZvfHwhYylyZXR1cm4tMX1yZXR1cm4gMH19LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzApLGk9TWF0aC5tYXg7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtyZXR1cm4gdD1pKHZvaWQgMD09PXQ/ZS5sZW5ndGgtMTp0LDApLGZ1bmN0aW9uKCl7Zm9yKHZhciBvPWFyZ3VtZW50cyxhPS0xLHM9aShvLmxlbmd0aC10LDApLHU9QXJyYXkocyk7KythPHM7KXVbYV09b1t0K2FdO2E9LTE7Zm9yKHZhciBjPUFycmF5KHQrMSk7KythPHQ7KWNbYV09b1thXTtyZXR1cm4gY1t0XT1yKHUpLG4oZSx0aGlzLGMpfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCxyKXtzd2l0Y2goci5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gZS5jYWxsKHQpO2Nhc2UgMTpyZXR1cm4gZS5jYWxsKHQsclswXSk7Y2FzZSAyOnJldHVybiBlLmNhbGwodCxyWzBdLHJbMV0pO2Nhc2UgMzpyZXR1cm4gZS5jYWxsKHQsclswXSxyWzFdLHJbMl0pfXJldHVybiBlLmFwcGx5KHQscil9fSxmdW5jdGlvbihlLHQscil7dmFyIG49cigxMDcyKSxpPXIoMTA3NCkobik7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxyKXt2YXIgbj1yKDEwNzMpLGk9cig0OTApLG89cigxMTkpLGE9aT9mdW5jdGlvbihlLHQpe3JldHVybiBpKGUsInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6bih0KSx3cml0YWJsZTohMH0pfTpvO2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19fSxmdW5jdGlvbihlLHQpe3ZhciByPTgwMCxuPTE2LGk9RGF0ZS5ub3c7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3ZhciB0PTAsbz0wO3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWkoKSxzPW4tKGEtbyk7aWYobz1hLHM+MCl7aWYoKyt0Pj1yKXJldHVybiBhcmd1bWVudHNbMF19ZWxzZSB0PTA7cmV0dXJuIGUuYXBwbHkodm9pZCAwLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT50fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZTx0fX0sZnVuY3Rpb24oZSx0LHIpe3ZhciBuPXIoMTUyKSxpPXIoNzUpLG89cig0ODcpLGE9cig5KTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm4oYShlKT9uOm8pKGUsaSh0LDMpKX19LGZ1bmN0aW9uKGUsdCxyKXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQuZ2V0VGlja1ZhbHVlc0ZpeGVkRG9tYWluPXQuZ2V0VGlja1ZhbHVlcz10LmdldE5pY2VUaWNrVmFsdWVzPXZvaWQgMDt2YXIgbj1hKHIoNDkyKSksaT1yKDQ5Myksbz1hKHIoMTA3OSkpO2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIHMoZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLHI9bmV3IEFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKylyW3RdPWVbdF07cmV0dXJuIHJ9fShlKXx8ZnVuY3Rpb24oZSl7aWYoU3ltYm9sLml0ZXJhdG9yIGluIE9iamVjdChlKXx8IltvYmplY3QgQXJndW1lbnRzXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSkpcmV0dXJuIEFycmF5LmZyb20oZSl9KGUpfHxmdW5jdGlvbigpe3Rocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gdShlLHQpe3JldHVybiBmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBlfShlKXx8ZnVuY3Rpb24oZSx0KXt2YXIgcj1bXSxuPSEwLGk9ITEsbz12b2lkIDA7dHJ5e2Zvcih2YXIgYSxzPWVbU3ltYm9sLml0ZXJhdG9yXSgpOyEobj0oYT1zLm5leHQoKSkuZG9uZSkmJihyLnB1c2goYS52YWx1ZSksIXR8fHIubGVuZ3RoIT09dCk7bj0hMCk7fWNhdGNoKHUpe2k9ITAsbz11fWZpbmFsbHl7dHJ5e258fG51bGw9PXMucmV0dXJufHxzLnJldHVybigpfWZpbmFsbHl7aWYoaSl0aHJvdyBvfX1yZXR1cm4gcn0oZSx0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gZGVzdHJ1Y3R1cmUgbm9uLWl0ZXJhYmxlIGluc3RhbmNlIil9KCl9ZnVuY3Rpb24gYyhlKXt2YXIgdD11KGUsMikscj10WzBdLG49dFsxXSxpPXIsbz1uO3JldHVybiByPm4mJihpPW4sbz1yKSxbaSxvXX1mdW5jdGlvbiBmKGUsdCxyKXtpZihlLmx0ZSgwKSlyZXR1cm4gbmV3IG4uZGVmYXVsdCgwKTt2YXIgaT1vLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlLnRvTnVtYmVyKCkpLGE9bmV3IG4uZGVmYXVsdCgxMCkucG93KGkpLHM9ZS5kaXYoYSksdT0xIT09aT8uMDU6LjEsYz1uZXcgbi5kZWZhdWx0KE1hdGguY2VpbChzLmRpdih1KS50b051bWJlcigpKSkuYWRkKHIpLm11bCh1KS5tdWwoYSk7cmV0dXJuIHQ/YzpuZXcgbi5kZWZhdWx0KE1hdGguY2VpbChjKSl9ZnVuY3Rpb24gbChlLHQscil7dmFyIGE9MSxzPW5ldyBuLmRlZmF1bHQoZSk7aWYoIXMuaXNpbnQoKSYmcil7dmFyIHU9TWF0aC5hYnMoZSk7dTwxPyhhPW5ldyBuLmRlZmF1bHQoMTApLnBvdyhvLmRlZmF1bHQuZ2V0RGlnaXRDb3VudChlKS0xKSxzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihzLmRpdihhKS50b051bWJlcigpKSkubXVsKGEpKTp1PjEmJihzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpfWVsc2UgMD09PWU/cz1uZXcgbi5kZWZhdWx0KE1hdGguZmxvb3IoKHQtMSkvMikpOnJ8fChzPW5ldyBuLmRlZmF1bHQoTWF0aC5mbG9vcihlKSkpO3ZhciBjPU1hdGguZmxvb3IoKHQtMSkvMik7cmV0dXJuKDAsaS5jb21wb3NlKSgoMCxpLm1hcCkoZnVuY3Rpb24oZSl7cmV0dXJuIHMuYWRkKG5ldyBuLmRlZmF1bHQoZS1jKS5tdWwoYSkpLnRvTnVtYmVyKCl9KSxpLnJhbmdlKSgwLHQpfXZhciBoPSgwLGkubWVtb2l6ZSkoZnVuY3Rpb24oZSl7dmFyIHQ9dShlLDIpLHI9dFswXSxhPXRbMV0saD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NixwPSEoYXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0pfHxhcmd1bWVudHNbMl0sZD1NYXRoLm1heChoLDIpLHk9dShjKFtyLGFdKSwyKSxnPXlbMF0sdj15WzFdO2lmKGc9PT0tMS8wfHx2PT09MS8wKXt2YXIgbT12PT09MS8wP1tnXS5jb25jYXQocygoMCxpLnJhbmdlKSgwLGgtMSkubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIDEvMH0pKSk6cygoMCxpLnJhbg=="
}